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 2007/04/02 23:40:26 UTC
svn commit: r524933 - in
/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests:
master/forbitdata.out suites/derbylang.runall
tests/lang/ForBitDataTest.java tests/lang/_Suite.java
tests/lang/forbitdata.java
Author: fuzzylogic
Date: Mon Apr 2 14:40:25 2007
New Revision: 524933
URL: http://svn.apache.org/viewvc?view=rev&rev=524933
Log:
DERBY-2476: Convert lang/forbitdata.java to Junit
Committed for Ramandeep Kaur <ra...@gmail.com>
Added:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ForBitDataTest.java (with props)
Removed:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/forbitdata.out
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/forbitdata.java
Modified:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall?view=diff&rev=524933&r1=524932&r2=524933
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall Mon Apr 2 14:40:25 2007
@@ -29,7 +29,6 @@
lang/errorCode.sql
lang/errorStream.java
lang/fk_nonSPS.sql
-lang/forbitdata.java
lang/forupdate.sql
lang/grantRevokeDDL.sql
lang/grantRevokeDDL2.sql
Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ForBitDataTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ForBitDataTest.java?view=auto&rev=524933
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ForBitDataTest.java (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ForBitDataTest.java Mon Apr 2 14:40:25 2007
@@ -0,0 +1,1169 @@
+/*
+
+ Derby - Class org.apache.derbyTesting.functionTests.tests.lang.forbitdata
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.ResultSetMetaData;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.io.IOException;
+import java.sql.Types;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.extensions.TestSetup;
+import org.apache.derbyTesting.junit.BaseJDBCTestCase;
+import org.apache.derbyTesting.junit.TestConfiguration;
+import org.apache.derbyTesting.junit.CleanDatabaseTestSetup;
+
+
+public class ForBitDataTest extends BaseJDBCTestCase {
+
+ public Statement stmt = null;
+
+ private static String[] TABLES = {
+ "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)",
+ "CREATE TABLE FBDVAL.T001(ID INT NOT NULL PRIMARY KEY, C1 CHAR(10) FOR BIT DATA, C2 VARCHAR(10) FOR BIT DATA, C3 LONG VARCHAR FOR BIT DATA, C4 BLOB(10))",
+ "CREATE TABLE FBDVAL.X001(XID INT NOT NULL PRIMARY KEY, X1 CHAR(12) FOR BIT DATA, C2 VARCHAR(12) FOR BIT DATA, C3 LONG VARCHAR FOR BIT DATA, C4 BLOB(12))",
+ "CREATE TABLE FBDVAL.T002(ID INT NOT NULL PRIMARY KEY, C1 CHAR(10) FOR BIT DATA, C2 VARCHAR(10) FOR BIT DATA, C3 LONG VARCHAR FOR BIT DATA, C4 BLOB(10))",
+ "CREATE TABLE FBDVAL.TEL(C2 VARCHAR(32672) FOR BIT DATA, C3 LONG VARCHAR FOR BIT DATA, C4 BLOB(128k))"
+
+ };
+
+
+ /* testTypesExpectedValues is a table of expected values for the testTypes fixture */
+ public static String[] testTypesExpectedValues = {
+ "FBDOK,T001,C001,-2,CHAR () FOR BIT DATA,1,null,null,1,null,null,1,YES",
+ "FBDOK,T002,C002,-2,CHAR () FOR BIT DATA,1,null,null,1,null,null,1,YES",
+ "FBDOK,T003,C003,-2,CHAR () FOR BIT DATA,10,null,null,1,null,null,1,YES",
+ "FBDOK,T004,C004,-2,CHAR () FOR BIT DATA,254,null,null,1,null,null,1,YES",
+ "FBDOK,T005,C005,-3,VARCHAR () FOR BIT DATA,1,null,null,1,null,null,1,YES",
+ "FBDOK,T006,C006,-3,VARCHAR () FOR BIT DATA,100,null,null,1,null,null,1,YES",
+ "FBDOK,T007,C007,-3,VARCHAR () FOR BIT DATA,32672,null,null,1,null,null,1,YES",
+ "FBDOK,T008,C008,-4,LONG VARCHAR FOR BIT DATA,32700,null,null,1,null,null,1,YES"
+ };
+
+ /* testTypesExpectedValues2Embedded is a table of expected values for the testTypes fixture*/
+ public static String[] testTypesExpectedValuesEmbedded = {
+ "C001 CHAR () FOR BIT DATA precision 1",
+ "C002 CHAR () FOR BIT DATA precision 1",
+ "C003 CHAR () FOR BIT DATA precision 10",
+ "C004 CHAR () FOR BIT DATA precision 254",
+ "C005 VARCHAR () FOR BIT DATA precision 1",
+ "C006 VARCHAR () FOR BIT DATA precision 100",
+ "C007 VARCHAR () FOR BIT DATA precision 32672",
+ "C008 LONG VARCHAR FOR BIT DATA precision 32700",
+ };
+
+ /* testTypesExpectedValues2NetworkServer is a table of expected values for the testTypes fixture */
+ public static String[] testTypesExpectedValuesNetworkServer = {
+ "C001 CHAR FOR BIT DATA precision 1",
+ "C002 CHAR FOR BIT DATA precision 1",
+ "C003 CHAR FOR BIT DATA precision 10",
+ "C004 CHAR FOR BIT DATA precision 254",
+ "C005 VARCHAR FOR BIT DATA precision 1",
+ "C006 VARCHAR FOR BIT DATA precision 100",
+ "C007 VARCHAR FOR BIT DATA precision 32672",
+ "C008 LONG VARCHAR FOR BIT DATA precision 32700",
+ };
+
+ /* testTypesExpectedValues3 is a table of expected values for the testTypes fixture */
+ public static String[] testTypesExpectedValues3 = {
+ "LONG VARCHAR FOR BIT DATA(-4) precision 32700",
+ "VARCHAR () FOR BIT DATA(-3) precision 32672",
+ "CHAR () FOR BIT DATA(-2) precision 254",
+ };
+
+ /* testCompareExpectedValues is a table of expected values for the testCompare fixture */
+ public static String[][] testCompareExpectedValues = {
+ { "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) "
+ },
+ { "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) "
+ },
+ { "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) "
+ },
+ { "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) "
+ },
+ { "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) "
+ },
+ { "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) "
+ },
+ { "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) "
+ },
+ { "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) "
+ },
+ { "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) "
+ },
+ { "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) "
+ },
+ { "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) "
+ },
+ { "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) "
+ },
+ { "42818 types not comparable C1 ... C3"
+ },
+ { "42818 types not comparable C1 ... C3"
+ },
+ { "42818 types not comparable C1 ... C3"
+ },
+ { "42818 types not comparable C1 ... C3"
+ },
+ { "42818 types not comparable C1 ... C3"
+ },
+ { "42818 types not comparable C1 ... C3"
+ },
+ { "42818 types not comparable C1 ... C4"
+ },
+ { "42818 types not comparable C1 ... C4"
+ },
+ { "42818 types not comparable C1 ... C4"
+ },
+ { "42818 types not comparable C1 ... C4"
+ },
+ { "42818 types not comparable C1 ... C4"
+ },
+ { "42818 types not comparable C1 ... C4"
+ },
+ { "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) "
+ },
+ { "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) "
+ },
+ {"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) "
+ },
+ {"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) "
+ },
+ {"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) "
+ },
+ {"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) "
+ },
+ {"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) "
+ },
+ {"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) "
+ },
+ {"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) "
+ },
+ {"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) "
+ },
+ { "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) "
+ },
+ {"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) "
+ },
+ {"42818 types not comparable C2 ... C3"},
+ {"42818 types not comparable C2 ... C3"},
+ {"42818 types not comparable C2 ... C3"},
+ {"42818 types not comparable C2 ... C3"},
+ {"42818 types not comparable C2 ... C3"},
+ {"42818 types not comparable C2 ... C3"},
+ {"42818 types not comparable C2 ... C4"},
+ {"42818 types not comparable C2 ... C4"},
+ {"42818 types not comparable C2 ... C4"},
+ {"42818 types not comparable C2 ... C4"},
+ {"42818 types not comparable C2 ... C4"},
+ {"42818 types not comparable C2 ... C4"},
+ {"42818 types not comparable C3 ... C1"},
+ {"42818 types not comparable C3 ... C1"},
+ {"42818 types not comparable C3 ... C1"},
+ {"42818 types not comparable C3 ... C1"},
+ {"42818 types not comparable C3 ... C1"},
+ {"42818 types not comparable C3 ... C1"},
+ {"42818 types not comparable C3 ... C2"},
+ {"42818 types not comparable C3 ... C2"},
+ {"42818 types not comparable C3 ... C2"},
+ {"42818 types not comparable C3 ... C2"},
+ {"42818 types not comparable C3 ... C2"},
+ {"42818 types not comparable C3 ... C2"},
+ {"42818 types not comparable C3 ... C3"},
+ {"42818 types not comparable C3 ... C3"},
+ {"42818 types not comparable C3 ... C3"},
+ {"42818 types not comparable C3 ... C3"},
+ {"42818 types not comparable C3 ... C3"},
+ {"42818 types not comparable C3 ... C3"},
+ {"42818 types not comparable C3 ... C4"},
+ {"42818 types not comparable C3 ... C4"},
+ {"42818 types not comparable C3 ... C4"},
+ {"42818 types not comparable C3 ... C4"},
+ {"42818 types not comparable C3 ... C4"},
+ {"42818 types not comparable C3 ... C4"},
+ {"42818 types not comparable C4 ... C1"},
+ {"42818 types not comparable C4 ... C1"},
+ {"42818 types not comparable C4 ... C1"},
+ {"42818 types not comparable C4 ... C1"},
+ {"42818 types not comparable C4 ... C1"},
+ {"42818 types not comparable C4 ... C1"},
+ {"42818 types not comparable C4 ... C2"},
+ {"42818 types not comparable C4 ... C2"},
+ {"42818 types not comparable C4 ... C2"},
+ {"42818 types not comparable C4 ... C2"},
+ {"42818 types not comparable C4 ... C2"},
+ {"42818 types not comparable C4 ... C2"},
+ {"42818 types not comparable C4 ... C3"},
+ {"42818 types not comparable C4 ... C3"},
+ {"42818 types not comparable C4 ... C3"},
+ {"42818 types not comparable C4 ... C3"},
+ {"42818 types not comparable C4 ... C3"},
+ {"42818 types not comparable C4 ... C3"},
+ {"42818 types not comparable C4 ... C4"},
+ {"42818 types not comparable C4 ... C4"},
+ {"42818 types not comparable C4 ... C4"},
+ {"42818 types not comparable C4 ... C4"},
+ {"42818 types not comparable C4 ... C4"},
+ {"42818 types not comparable C4 ... C4"}
+ };
+
+ /* testEncodedLengthsExpectedValues is a table of expected values for the testEncodedLengths() fixture */
+ public static String[] testEncodedLengthsExpectedValues = {
+ "C1 OK DATA OK C2 OK DATA OK C3 OK DATA OK",
+ "C1 NULL C2 OK DATA OK C3 OK DATA OK",
+ "C1 NULL C2 NULL C3 OK DATA OK"
+ };
+
+
+
+ /* Public constructor required for running test as standalone JUnit. */
+ public ForBitDataTest(String name) {
+ super(name);
+ }
+
+
+ /* Set up fixture */
+ protected void setUp() throws SQLException {
+ stmt = createStatement();
+ }
+
+
+ /* Tear down the fixture */
+ protected void tearDown() throws Exception {
+ stmt.close();
+ super.tearDown();
+ }
+
+ /**
+ Negative for bit data tests.
+ FBD001,FBD007 negative syntax
+ FBD005 maximum char length
+ FBD009 maximum varchar length
+ */
+ public void testNegative() throws SQLException {
+ assertStatementError("42611", stmt, "CREATE TABLE FBDFAIL.T001 (C001 CHAR(255) FOR BIT DATA)");
+ assertStatementError("42611", stmt, "CREATE TABLE FBDFAIL.T001 (C001 CHAR(255) FOR BIT DATA)");
+ assertStatementError("42611", stmt, "CREATE TABLE FBDFAIL.T002 (C002 VARCHAR(32673) FOR BIT DATA)");
+ assertStatementError("42X01", stmt, "CREATE TABLE FBDFAIL.T003 (C003 VARCHAR FOR BIT DATA)");
+ assertStatementError("42X01", stmt, "CREATE TABLE FBDFAIL.T004 (C004 LONG VARCHAR(100) FOR BIT DATA)");
+ }
+
+ /**
+ FBD001,FBD007 - positive syntax
+ FBD004 - CHAR length defaults to one
+ FBD037 - create table
+ FBD006, FBD011, FBD014 - correct JDBC type
+ */
+ public void testTypes() throws SQLException {
+ Connection conn = getConnection();
+ ResultSet rs = conn.getMetaData().getColumns(null, "FBDOK", null, null);
+ String actualValue = null;
+
+ int i=0;
+ while (rs.next()) {
+ // skip 1 catalog
+ actualValue = rs.getString(2) + ",";
+ actualValue += rs.getString(3) + ",";
+ actualValue += rs.getString(4) + ",";
+ actualValue += rs.getString(5) + ",";
+ actualValue += rs.getString(6) + ",";
+ actualValue += rs.getString(7) + ",";
+ actualValue += rs.getString(9) + ",";
+ actualValue += rs.getString(10) + ",";
+ actualValue += rs.getString(11) + ",";
+ actualValue += rs.getString(13) + ",";
+ actualValue += rs.getString(16) + ",";
+ actualValue += rs.getString(17) + ",";
+ actualValue += rs.getString(18);
+ assertEquals(testTypesExpectedValues[i], actualValue);
+ i++;
+ }
+ rs.close();
+
+ for (i = 1; i <= 8; i++) {
+ PreparedStatement ps = prepareStatement("SELECT * FROM FBDOK.T00" + i);
+ ResultSetMetaData rsmd = ps.getMetaData();
+ actualValue = rsmd.getColumnName(1) + " " + rsmd.getColumnTypeName(1) + " precision " + rsmd.getPrecision(1);
+
+ if ( usingDerbyNetClient() )
+ assertEquals(testTypesExpectedValuesNetworkServer[i-1], actualValue);
+ else
+ assertEquals(testTypesExpectedValuesEmbedded[i-1], actualValue);
+ ps.close();
+ }
+
+ DatabaseMetaData dmd = conn.getMetaData();
+ rs = dmd.getTypeInfo();
+
+ int j=0;
+ while (rs.next()) {
+ String name = rs.getString(1);
+ int jdbcType = rs.getInt(2);
+ switch (jdbcType) {
+ case Types.BINARY:
+ case Types.VARBINARY:
+ case Types.LONGVARBINARY:
+ break;
+ default:
+ continue;
+ }
+ actualValue = name + "(" + jdbcType + ") " + "precision " + rs.getInt(3)+ "" ;
+ assertEquals(testTypesExpectedValues3[j], actualValue);
+ j++;
+ }
+ rs.close();
+
+ {
+ String sql = "VALUES X'2345d45a2e44'";
+ PreparedStatement psv = prepareStatement(sql);
+ ResultSetMetaData rsmd = psv.getMetaData();
+ actualValue = rsmd.getColumnName(1) + " " + rsmd.getColumnTypeName(1) + " precision " + rsmd.getPrecision(1);
+ if ( usingDerbyNetClient() )
+ assertEquals("1 CHAR FOR BIT DATA precision 6", actualValue);
+ else
+ assertEquals("1 CHAR () FOR BIT DATA precision 6", actualValue);
+ }
+
+ {
+ String sql = "VALUES X''";
+ PreparedStatement psv = prepareStatement(sql);
+ ResultSetMetaData rsmd = psv.getMetaData();
+ actualValue = rsmd.getColumnName(1) + " " + rsmd.getColumnTypeName(1) + " precision " + rsmd.getPrecision(1);
+ if ( usingDerbyNetClient() )
+ assertEquals("1 CHAR FOR BIT DATA precision 0", actualValue);
+ else
+ assertEquals("1 CHAR () FOR BIT DATA precision 0", actualValue);
+ }
+ }
+
+ /* testValues fixture */
+ public void testValues() throws SQLException {
+ PreparedStatement psI = prepareStatement("INSERT INTO FBDVAL.T001 VALUES(?, ?, ?, ?, ?)");
+ PreparedStatement psS = prepareStatement("SELECT C1, C2, C3, C4, ID FROM FBDVAL.T001 WHERE ID >= ? AND ID < ? ORDER BY ID");
+
+ insertData(psI, 0, null, 10, true);
+ showData(psS, 0, null, "ORG <NULL> CHR <NULL> VAR <NULL> LVC <NULL> BLOB <NULL> ");
+
+ byte[] empty = new byte[7];
+ insertData(psI, 10, empty, 10, true);
+ showData(psS, 10, empty, "ORG 00000000000000 (7) CHR 00000000000000202020 (10) VAR 00000000000000 (7) LVC 00000000000000 (7) BLOB 00000000000000 (7) ");
+
+ byte[] empty2 = new byte[15];
+ insertData(psI, 20, empty2, 10, true);
+ showData(psS, 20, empty2, "ORG 000000000000000000000000000000 (15) CHR <NULL> VAR <NULL> LVC 000000000000000000000000000000 (15) BLOB <NULL> ");
+
+ byte[] four = new byte[4];
+ four[0] = (byte) 0x04;
+ four[1] = (byte) 0x23;
+ four[2] = (byte) 0xA2;
+ four[3] = (byte) 0xFD;
+ insertData(psI, 30, four, 10, true);
+ showData(psS, 30, four, "ORG 0423a2fd (4) CHR 0423a2fd202020202020 (10) VAR 0423a2fd (4) LVC 0423a2fd (4) BLOB 0423a2fd (4) ");
+
+ byte[] ten = new byte[10];
+ ten[0] = (byte) 0x0B;
+ ten[1] = (byte) 0x27;
+ ten[2] = (byte) 0xA2;
+ ten[3] = (byte) 0xFD;
+ ten[4] = (byte) 0x01;
+ ten[5] = (byte) 0x6D;
+ ten[6] = (byte) 0xE2;
+ ten[7] = (byte) 0x35;
+ ten[8] = (byte) 0x66;
+ ten[9] = (byte) 0x90;
+ insertData(psI, 40, ten, 10, true);
+ showData(psS, 40, ten, "ORG 0b27a2fd016de2356690 (10) CHR 0b27a2fd016de2356690 (10) VAR 0b27a2fd016de2356690 (10) LVC 0b27a2fd016de2356690 (10) BLOB 0b27a2fd016de2356690 (10) ");
+
+ byte[] l15 = new byte[15];
+ l15[0] = (byte) 0xEB;
+ l15[1] = (byte) 0xCA;
+ l15[2] = (byte) 0xFE;
+ l15[3] = (byte) 0xBA;
+ l15[4] = (byte) 0xBE;
+ l15[5] = (byte) 0xFE;
+ l15[6] = (byte) 0xED;
+ l15[7] = (byte) 0xFA;
+ l15[8] = (byte) 0xCE;
+ l15[9] = (byte) 0x24;
+ l15[10] = (byte) 0x78;
+ l15[11] = (byte) 0x43;
+ l15[12] = (byte) 0x92;
+ l15[13] = (byte) 0x31;
+ l15[14] = (byte) 0x6D;
+ insertData(psI, 50, l15, 10, true);
+ showData(psS, 50, l15, "ORG ebcafebabefeedface24784392316d (15) CHR <NULL> VAR <NULL> LVC ebcafebabefeedface24784392316d (15) BLOB <NULL> ");
+
+ byte[] space4 = new byte[4];
+ space4[0] = (byte) 0x20;
+ space4[1] = (byte) 0x20;
+ space4[2] = (byte) 0x20;
+ space4[3] = (byte) 0x20;
+ insertData(psI, 60, space4, 10, true);
+ showData(psS, 60, space4, "ORG 20202020 (4) CHR 20202020202020202020 (10) VAR 20202020 (4) LVC 20202020 (4) BLOB 20202020 (4) ");
+
+ byte[] space6 = new byte[6];
+ space6[0] = (byte) 0xca;
+ space6[1] = (byte) 0xfe;
+ space6[2] = (byte) 0x20;
+ space6[3] = (byte) 0x20;
+ space6[4] = (byte) 0x20;
+ space6[5] = (byte) 0x20;
+ insertData(psI, 70, space6, 10, true);
+ showData(psS, 70, space6, "ORG cafe20202020 (6) CHR cafe2020202020202020 (10) VAR cafe20202020 (6) LVC cafe20202020 (6) BLOB cafe20202020 (6) ");
+
+ byte[] space12 = new byte[12];
+ space12[0] = (byte) 0xca;
+ space12[1] = (byte) 0xfe;
+ space12[2] = (byte) 0x20;
+ space12[3] = (byte) 0x20;
+ space12[4] = (byte) 0x20;
+ space12[5] = (byte) 0x20;
+ space12[6] = (byte) 0xca;
+ space12[7] = (byte) 0xfe;
+ space12[8] = (byte) 0x20;
+ space12[9] = (byte) 0x20;
+ space12[10] = (byte) 0x20;
+ space12[11] = (byte) 0x20;
+ insertData(psI, 210, space12, 10, true);
+ showData(psS, 210, space12, "ORG cafe20202020cafe20202020 (12) CHR <NULL> VAR <NULL> LVC cafe20202020cafe20202020 (12) BLOB <NULL> ");
+
+
+ String sql = "INSERT INTO FBDVAL.T001 VALUES(80, X'2020202020', X'2020202020', X'2020202020', null)";
+ stmt.executeUpdate(sql);
+ showData(psS, 80, space4, "ORG 20202020 (4) CHR 20202020202020202020 (10) VAR 2020202020 (5) LVC 2020202020 (5) BLOB <NULL> ");
+
+ sql = "INSERT INTO FBDVAL.T001 VALUES(90, X'CAFE20202020CAFE20202020', null, null, null)";
+ stmt.executeUpdate(sql);
+ showData(psS, 90, space12, "ORG cafe20202020cafe20202020 (12) CHR cafe20202020cafe2020 (10) VAR <NULL> LVC <NULL> BLOB <NULL> ");
+
+ sql = "INSERT INTO FBDVAL.T001 VALUES(100, null, X'CAFE20202020CAFE20202020', null, null)";
+ stmt.executeUpdate(sql);
+ showData(psS, 100, space12, "ORG cafe20202020cafe20202020 (12) CHR <NULL> VAR cafe20202020cafe2020 (10) LVC <NULL> BLOB <NULL> ");
+
+ sql = "INSERT INTO FBDVAL.T001 VALUES(110, null, null, X'CAFE20202020CAFE20202020', null)";
+ stmt.executeUpdate(sql);
+ showData(psS, 110, space12, "ORG cafe20202020cafe20202020 (12) CHR <NULL> VAR <NULL> LVC cafe20202020cafe20202020 (12) BLOB <NULL> ");
+
+ sql = "INSERT INTO FBDVAL.T001 VALUES(120, X'CAFE20202020CAFE20202020DD', null, null, null)";
+ try {
+ stmt.executeUpdate(sql);
+ } catch (SQLException sqle) {
+ assertSQLState("22001", sqle);
+ }
+
+ sql = "INSERT INTO FBDVAL.T001 VALUES(130, null, X'CAFE20202020CAFE20202020DD', null, null)";
+ try {
+ stmt.executeUpdate(sql);
+ } catch (SQLException sqle) {
+ assertSQLState("22001", sqle);
+ }
+
+ sql = "INSERT INTO FBDVAL.T001 VALUES(140, null, null, X'CAFE20202020CAFE20202020DD', null)";
+ stmt.executeUpdate(sql);
+ showData(psS, 140, space12, "ORG cafe20202020cafe20202020 (12) CHR <NULL> VAR <NULL> LVC cafe20202020cafe20202020dd (13) BLOB <NULL> ");
+
+ sql = "INSERT INTO FBDVAL.X001 VALUES(200, X'CAFE20202020CAFE20202020', null, null, null)";
+ stmt.executeUpdate(sql);
+
+ sql = "INSERT INTO FBDVAL.T001 SELECT * FROM FBDVAL.X001";
+ stmt.executeUpdate(sql);
+ showData(psS, 200, space12, "ORG cafe20202020cafe20202020 (12) CHR cafe20202020cafe2020 (10) VAR <NULL> LVC <NULL> BLOB <NULL> ");
+ }
+
+
+ /* testCompare fixture */
+ public void testCompare() throws SQLException {
+ stmt.execute("delete from FBDVAL.T001");
+ PreparedStatement psI = prepareStatement("INSERT INTO FBDVAL.T001 VALUES(?, ?, ?, ?, ?)");
+ PreparedStatement psI2 = prepareStatement("INSERT INTO FBDVAL.T002 VALUES(?, ?, ?, ?, ?)");
+
+ insertData(psI, 0, null, 10, false);
+ insertData(psI2, 0, null, 10, false);
+
+ byte[] four = new byte[4];
+ four[0] = (byte) 0x04;
+ four[1] = (byte) 0x23;
+ four[2] = (byte) 0xA2;
+ four[3] = (byte) 0xFD;
+
+ insertData(psI, 30, four, 10, false);
+ insertData(psI2, 30, four, 10, false);
+ four[2] = (byte) 0xA1;
+ insertData(psI, 40, four, 10, false);
+ insertData(psI2, 40, four, 10, false);
+ four[2] = (byte) 0xA2;
+ four[3] = (byte) 0xFF;
+ insertData(psI, 50, four, 10, false);
+ insertData(psI2, 50, four, 10, false);
+
+ byte[] four_plus_space = new byte[5];
+ four_plus_space[0] = (byte) 0x04;
+ four_plus_space[1] = (byte) 0x23;
+ four_plus_space[2] = (byte) 0xA2;
+ four_plus_space[3] = (byte) 0xFD;
+ four_plus_space[4] = (byte) 0x20;
+ insertData(psI, 60, four_plus_space, 10, false);
+ insertData(psI2, 60, four_plus_space, 10, false);
+
+ byte[] ten = new byte[10];
+ ten[0] = (byte) 0x0B;
+ ten[1] = (byte) 0x27;
+ ten[2] = (byte) 0xA2;
+ ten[3] = (byte) 0xFD;
+ ten[4] = (byte) 0x01;
+ ten[5] = (byte) 0x6D;
+ ten[6] = (byte) 0xE2;
+ ten[7] = (byte) 0x35;
+ ten[8] = (byte) 0x66;
+ ten[9] = (byte) 0x90;
+
+ insertData(psI, 70, ten, 10, false);
+ insertData(psI2, 70, ten, 10, false);
+
+ String[] COLS = {"C1", "C2", "C3", "C4"};
+ String[] OPS = {"=", "<>", "<", "<=", ">", ">="};
+
+ int i=0;
+ for (int t = 0; t < COLS.length; t++) {
+ for (int o = 0; o < COLS.length; o++) {
+ for (int a = 0; a < OPS.length; a++) {
+ String sql = "SELECT T.ID, T." + COLS[t] + ", O.ID, O." + COLS[o] + " FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T." + COLS[t] + " " + OPS[a] + " O." + COLS[o] + " ORDER BY 1,3";
+
+ try {
+ PreparedStatement psS = prepareStatement(sql);
+ showCompareData(psS, testCompareExpectedValues [i]);
+ } catch (SQLException sqle) {
+ assertSQLState("42818", sqle);
+ }
+ i++;
+ }
+ }
+ }
+ }
+
+ /**
+ The length of a binary type is encoded when stored, this
+ test makes sure all the code paths are tested.
+ The encoded length is hidden from the JDBC client.
+ */
+ public void testEncodedLengths() throws SQLException, IOException {
+ PreparedStatement psi = prepareStatement("INSERT INTO FBDVAL.TEL VALUES(?, ?, ?)");
+ PreparedStatement pss = prepareStatement("SELECT * FROM FBDVAL.TEL");
+ PreparedStatement psd = prepareStatement("DELETE FROM FBDVAL.TEL");
+
+ //insertEL(psi, pss, psd, 0);
+ insertEL(psi, pss, psd, 10, testEncodedLengthsExpectedValues[0]);
+ insertEL(psi, pss, psd, 30, testEncodedLengthsExpectedValues[0]);
+ insertEL(psi, pss, psd, 31, testEncodedLengthsExpectedValues[0]);
+ insertEL(psi, pss, psd, 32, testEncodedLengthsExpectedValues[0]); // switch to 2 byte length
+ insertEL(psi, pss, psd, 1345, testEncodedLengthsExpectedValues[0]);
+ insertEL(psi, pss, psd, 23456, testEncodedLengthsExpectedValues[0]);
+ insertEL(psi, pss, psd, 32672, testEncodedLengthsExpectedValues[0]);
+ insertEL(psi, pss, psd, 32700, testEncodedLengthsExpectedValues[1]);
+ insertEL(psi, pss, psd, (32*1024) - 1, testEncodedLengthsExpectedValues[2]);
+ insertEL(psi, pss, psd, (32*1024), testEncodedLengthsExpectedValues[2]);
+ insertEL(psi, pss, psd, (32*1024) + 1, testEncodedLengthsExpectedValues[2]);
+ insertEL(psi, pss, psd, (64*1024) - 1, testEncodedLengthsExpectedValues[2]);
+ insertEL(psi, pss, psd, (64*1024), testEncodedLengthsExpectedValues[2]); // switch to 4 byte length
+ insertEL(psi, pss, psd, (64*1024) + 1, testEncodedLengthsExpectedValues[2]);
+ insertEL(psi, pss, psd, (110*1024) + 3242, testEncodedLengthsExpectedValues[2]);
+
+ psi.close();
+ pss.close();
+ psd.close();
+ }
+
+ /**
+ * Create a suite of tests.
+ **/
+ public static Test suite() {
+ TestSuite suite = new TestSuite("ForBitTestData");
+ suite.addTest(baseSuite("ForBitTestData:embedded"));
+ suite.addTest(TestConfiguration.clientServerDecorator(baseSuite("ForBitTestData:client")));
+ return suite;
+ }
+
+ protected static Test baseSuite(String name) {
+ TestSuite suite = new TestSuite(name);
+ suite.addTestSuite(ForBitDataTest.class);
+
+ return new CleanDatabaseTestSetup(suite)
+ {
+ protected void decorateSQL(Statement s) throws SQLException
+ {
+ for (int i = 0; i < TABLES.length; i++) {
+ s.execute(TABLES[i]);
+ }
+ s.close();
+ }
+ };
+ }
+
+ /***********************************************************************************************
+ * All the methods below this line are used by fixtures
+ **********************************************************************************************/
+ private void insertEL(PreparedStatement psi, PreparedStatement pss, PreparedStatement psd, int length, String expectedValue) throws SQLException, IOException
+ {
+ byte[] data = new byte[length];
+
+ // random simple value check
+ int off = (int) (System.currentTimeMillis() % ((long) length));
+ data[off] = 0x23;
+
+ psi.setBytes(1, (length <= 32672) ? data : null);
+ psi.setBytes(2, (length <= 32700) ? data : null);
+ psi.setBinaryStream(3, new java.io.ByteArrayInputStream(data), length); // BLOB column
+
+ psi.executeUpdate();
+ selectData(pss,data,off,length, expectedValue);
+ psd.executeUpdate();
+
+ // Set values using stream and then verify that select is successful
+ psi.setBinaryStream(1, (length <= 32672) ? new java.io.ByteArrayInputStream(data) : null, length);
+ psi.setBinaryStream(2, (length <= 32700) ? new java.io.ByteArrayInputStream(data) : null, length);
+ psi.setBinaryStream(3, new java.io.ByteArrayInputStream(data), length); // BLOB column
+ psi.executeUpdate();
+
+ selectData(pss,data,off,length, expectedValue);
+ psd.executeUpdate();
+ }
+
+ private void selectData(PreparedStatement pss,byte[] data,int off,int length, String expectedValue)
+ throws SQLException,IOException
+ {
+ String actualValue = null;
+ ResultSet rs = pss.executeQuery();
+ while (rs.next())
+ {
+ byte[] v = rs.getBytes(1);
+
+ if (v != null) {
+ actualValue = "C1 " + ((v.length == length) ? "OK" : ("FAIL <" + v.length + ">"));
+ actualValue += " DATA " + ((v[off] == 0x23) ? "OK" : ("FAIL " + off));
+
+ }
+ else {
+ actualValue = "C1 NULL";
+ }
+ v = rs.getBytes(2);
+ if (v != null) {
+ actualValue += " C2 " + ((v.length == length) ? "OK" : ("FAIL <" + v.length + ">"));
+ actualValue += " DATA " + ((v[off] == 0x23) ? "OK" : ("FAIL " + off));
+
+ }
+ else {
+ actualValue += " C2 NULL";
+ }
+ InputStream c3 = rs.getBinaryStream(3);
+ String returnValue = checkEncodedLengthValue(" C3", c3, length, off);
+ actualValue += returnValue;
+ assertEquals(expectedValue, actualValue);
+ }
+ rs.close();
+
+ rs = pss.executeQuery();
+ while (rs.next())
+ {
+ actualValue = checkEncodedLengthValue("C1", rs.getBinaryStream(1), length, off) +
+ checkEncodedLengthValue(" C2", rs.getBinaryStream(2), length, off) +
+ checkEncodedLengthValue(" C3", rs.getBinaryStream(3), length, off);
+ assertEquals(expectedValue, actualValue);
+ }
+ rs.close();
+
+ }
+ private String checkEncodedLengthValue(String col, InputStream is, int length, int off) throws IOException {
+ String returnStr = null;
+ if (is == null) {
+ returnStr = col + " NULL";
+ return returnStr;
+ }
+ byte[] buf = new byte[3213];
+ boolean dataOK = false;
+ int sl = 0;
+ for (;;) {
+ int r = is.read(buf);
+ if (r < 0)
+ break;
+
+ if ((off >= sl) && (off < (sl + r))) {
+ if (buf[off - sl] == 0x23)
+ dataOK = true;
+ }
+ sl += r;
+ }
+ returnStr = col + " " + ((sl == length) ? "OK" : ("FAIL <" + sl + ">"));
+ returnStr += " DATA " + (dataOK ? "OK" : ("FAIL " + off));
+
+ return returnStr;
+ }
+
+
+ private void showCompareData(PreparedStatement psS, String[] expectedValues) throws SQLException {
+ ResultSet rs = psS.executeQuery();
+ int i=0;
+ while (rs.next()) {
+ String actualValue = rs.getInt(1) + " " + showData(rs.getBytes(2)) + " " + rs.getInt(3) + " " + showData(rs.getBytes(4));
+ assertEquals(expectedValues[i],actualValue);
+ i++;
+ }
+ rs.close();
+ psS.close();
+ }
+
+ private void insertData(PreparedStatement psI, int id, byte[] original, int maxLen, boolean streamAsWell) throws SQLException
+ {
+
+ int ol = original == null ? 0: original.length;
+
+ if (original == null || original.length <= maxLen) {
+ // simple case.
+ psI.setInt(1, id);
+ psI.setBytes(2, original);
+ psI.setBytes(3, original);
+ psI.setBytes(4, original);
+ psI.setBytes(5, original);
+ psI.executeUpdate();
+
+ if (streamAsWell) {
+ psI.setInt(1, id+1);
+ psI.setBinaryStream(2, original == null ? null : new ByteArrayInputStream(original), ol);
+ psI.setBinaryStream(3, original == null ? null : new ByteArrayInputStream(original), ol);
+ psI.setBinaryStream(4, original == null ? null : new ByteArrayInputStream(original), ol);
+ psI.setBinaryStream(5, original == null ? null : new ByteArrayInputStream(original), ol);
+ psI.executeUpdate();
+ }
+ return;
+ }
+
+ // Insert potentially out of range value one at a time into the table
+ try {
+ psI.setInt(1, id);
+ psI.setBytes(2, original);
+ psI.setBytes(3, null);
+ psI.setBytes(4, null);
+ psI.setBytes(5, null);
+ psI.executeUpdate();
+ } catch (SQLException sqle) {
+ assertSQLState("22001", sqle);
+ }
+ if (streamAsWell) {
+ try {
+ psI.setInt(1, id+1);
+ psI.setBinaryStream(2, original == null ? null : new ByteArrayInputStream(original), ol);
+ psI.executeUpdate();
+ } catch (SQLException sqle) {
+ assertSQLState("22001", sqle);
+ }
+
+ }
+
+ try {
+ psI.setInt(1, id+2);
+ psI.setBytes(2, null);
+ psI.setBytes(3, original);
+ psI.setBytes(4, null);
+ psI.setBytes(5, null);
+ psI.executeUpdate();
+ } catch (SQLException sqle) {
+ assertSQLState("22001", sqle);
+ }
+ if (streamAsWell) {
+ try {
+ psI.setInt(1, id+3);
+ psI.setBinaryStream(3, original == null ? null : new ByteArrayInputStream(original), ol);
+ psI.executeUpdate();
+ } catch (SQLException sqle) {
+ assertSQLState("22001", sqle);
+ }
+ }
+
+
+ try {
+ psI.setInt(1, id+4);
+ psI.setBytes(2, null);
+ psI.setBytes(3, null);
+ psI.setBytes(4, original);
+ psI.setBytes(5, null);
+ psI.executeUpdate();
+ } catch (SQLException sqle) {
+ assertSQLState("22001", sqle);
+ }
+ if (streamAsWell) {
+ try {
+ psI.setInt(1, id+5);
+ psI.setBinaryStream(4, original == null ? null : new ByteArrayInputStream(original), ol);
+ psI.executeUpdate();
+ } catch (SQLException sqle) {
+ assertSQLState("22001", sqle);
+ }
+ }
+
+ try {
+ psI.setInt(1, id+6);
+ psI.setBytes(2, null);
+ psI.setBytes(3, null);
+ psI.setBytes(4, null);
+ psI.setBytes(5, original);
+ psI.executeUpdate();
+ } catch (SQLException sqle) {
+ assertSQLState("22001", sqle);
+ }
+ if (streamAsWell) {
+ try {
+ psI.setInt(1, id+7);
+ psI.setBinaryStream(5, original == null ? null : new ByteArrayInputStream(original), ol);
+ psI.executeUpdate();
+ } catch (SQLException sqle) {
+ assertSQLState("22001", sqle);
+ }
+ }
+ }
+
+ private void showData(PreparedStatement psS, int id, byte[] original, String expectedValue) throws SQLException {
+ psS.setInt(1, id);
+ psS.setInt(2, id + 10);
+ ResultSet rs = psS.executeQuery();
+ while (rs.next()) {
+ String actualValue = "ORG " + showData(original) + "";
+ actualValue += "CHR " + showData(rs.getBytes(1)) + "";
+ actualValue += "VAR " + showData(rs.getBytes(2)) + "";
+ actualValue += "LVC " + showData(rs.getBytes(3)) + "";
+ actualValue += "BLOB " + showData(rs.getBytes(4));
+ assertEquals(expectedValue, actualValue);
+ }
+ rs.close();
+
+ }
+
+ private String showData(byte[] data) {
+ if (data == null)
+ return "<NULL> ";
+
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < data.length; i++) {
+ String s = Integer.toHexString(data[i] & 0xff);
+ if (s.length() == 1)
+ sb.append('0');
+ sb.append(s);
+ }
+
+ sb.append(' ');
+ sb.append('(');
+ sb.append(data.length);
+ sb.append(')');
+ sb.append(' ');
+
+ return sb.toString();
+ }
+
+}
Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ForBitDataTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java?view=diff&rev=524933&r1=524932&r2=524933
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java Mon Apr 2 14:40:25 2007
@@ -89,6 +89,7 @@
suite.addTest(HoldCursorTest.suite());
suite.addTest(ShutdownDatabaseTest.suite());
suite.addTest(SystemCatalogTest.suite());
+ suite.addTest(ForBitDataTest.suite());
suite.addTest(DistinctTest.suite());
suite.addTest(GroupByTest.suite());