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>> 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
+<testname>_app.properties</a></li>
+ <li style="margin-left: 40px;"><a href="#ov4">4.4
+<testname>_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> jdk131
+- Sun
+HotSpot jdk1.3.1</small><br>
+ <small> jdk141 - Sun HotSpot jdk1.4.1</small><br>
+ <small> jdk142 - Sun HotSpot jdk1.4.2</small><br>
+ <small> jdk15 - Sun HotSpot jdk1.5</small><br>
+ <small> ibm131 - IBM Classic jdk1.3.1</small><br>
+ <small> ibm141 - IBM Classic jdk1.4.1</small><br>
+ <small> ibm142 - IBM Classic jdk1.4.2</small><br>
+ <small> 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> 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> test files and classes</small><li><small>derby.jar<br>
+ </small></li>
+ <small> main derby package classes</small><li><small>derbytools.jar<br>
+ </small></li>
+ <small> derby tools classes for tools like ij
+and dblook</small><li><small>derbynet.jar<br>
+ </small></li>
+ <small> derby network server classes</small><li><small>db2jcc.jar
+and db2jcc_license_c.jar <br>
+ </small></li>
+ <small> 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>
+ <small>java
+-D<testproperty>
+org.apache.derbyTesting.functionTests.harness.RunTest
+<testdir>/<testname></small><br>
+ <small>where <br>
+ </small>
+ <ul>
+ <li><small> <testproperty> are test specific
+properties, such as
+'framework' for the RunTest class. </small></li>
+ <li><small> <testdir> is one of the
+directories under
+functionTests/tests where the actual test is located</small></li>
+ <li><small> <testname> is the actual name of
+the test</small></li>
+ </ul>
+ <small>examples:<br>
+to run the test supersimple against the embedded driver:<br>
+ </small> <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>
+ 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>
+ <small>java
+-D<testproperty>
+org.apache.derbyTesting.functionTests.harness.RunSuite
+<testsuite></small><br>
+ <small>where <br>
+ </small>
+ <ul>
+ <li><small> <testproperty> are test specific
+properties, such as
+'verbose' for the RunSuite class. </small></li>
+ <li><small> <testsuite> is one of the suites
+under
+org/apache/derbyTesting/suites</small></li>
+ </ul>
+ <small>for example for running the suite derbylang:<br>
+ </small><small> 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.
+</p>
+<p>
+Initially the suites provided are:
+</p>
+<ul>
+ <li>derbylang: <br>
+ </li>
+ <ul>
+ <li>basic functionality of
+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 <testsuite>_fail.txt file will be empty, and the
+<testsuite>_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>
+ 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>> cd
+/local/derby/java/testing<br>
+> ant.ksh<br>
+Searching for build.xml ...<br>
+Buildfile: /local/derby/java/testing/build.xml<br>
+ <br>
+compile:<br>
+ [javac] Compiling 30 source files to
+/local/derby/classes<br>
+...<br>
+ [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:> ant derbytestingjar<br>
+Searching for build.xml ...<br>
+Buildfile: C:\derby\build.xml<br>
+ <br>
+initjars:<br>
+ [mkdir] Created dir: C:\derby\jars\<br>
+ [mkdir] Created dir: C:\derby\jars\lists<br>
+ [echo] Revision number set to exported<br>
+ [echo] .<br>
+ <br>
+derbytestingjar:<br>
+ [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
+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:>
+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: 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> </small><small>c:>
+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>
+< 10<br>
+10a10<br>
+> 1<br>
+Test Failed.<br>
+*** End: 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 <testsuite>.sum file. When all tests
+have completed summary files are created <testsuite>_pass.txt,
+_fail.txt, and _diff.txt files are created as well as a
+<testsuite>_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:> $ 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 <testsuite>_report.txt shows the statistics of
+the passed vs. failed tests, the summary <testsuite>_*.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> .java tests that run in a separate jvm.</li>
+ <li> .sql tests that run using ij</li>
+ <li> .sql2 related to .sql</li>
+ <li> .multi 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> .unit 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
+<testname>_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>
+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><testname>_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><testname>_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;">
+</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: 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 <suitename>.properties file and/or a
+<suitename>.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 <suite>.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> jdk131
+- Sun
+HotSpot jdk1.3.1 - class: jdk13</small><br>
+ <small> jdk141 - Sun HotSpot jdk1.4.1 - class
+jdk14</small><br>
+ <small> jdk142 - Sun HotSpot jdk1.4.2 - class
+jdk14</small><br>
+ <small> jdk15 - Sun HotSpot jdk1.5 - class jdk15</small><br>
+ <small> ibm131 - IBM Classic jdk1.3.1 -
+class ibm13</small><br>
+ <small> ibm141 - IBM Classic jdk1.4.1 - class
+ibm14</small><br>
+ <small> ibm142 - IBM Classic jdk1.4.1 - class
+ibm14</small><br>
+ <small> 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<jvm><br>
+ See above
+section <a href="#skipping">4.10</a><br>
+framework<br>
+ specifies which framework to run with. For example:<br>
+ java -Dframework=DerbyNet
+org.apache.derbyTesting.functionTests.RunTest <br>
+lang/supersimple.sql<br>
+verbose<br>
+ Shows more detailed output. For example:<br>
+ java -Dverbose=true
+org.apache.derbyTesting.functionTests.RunTest lang/arithmetic.sql<br>
+keepfiles<br>
+ Indicates to not clean up any of the files if the test
+passed.<br>
+ java -Dkeepfiles=true
+org.apache.derbyTesting.functionTests.RunTest lang/arithmetic.sql<br>
+TestSpecialFlags<br>
+ sets additional properties.<br>
+ 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 bootcp,
+which is 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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 © 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>