| /******************************************************************************* |
| * Copyright (c) 2013, Salesforce.com, Inc. |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions are met: |
| * |
| * Redistributions of source code must retain the above copyright notice, |
| * this list of conditions and the following disclaimer. |
| * Redistributions in binary form must reproduce the above copyright notice, |
| * this list of conditions and the following disclaimer in the documentation |
| * and/or other materials provided with the distribution. |
| * Neither the name of Salesforce.com nor the names of its contributors may |
| * be used to endorse or promote products derived from this software without |
| * specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
| * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
| * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
| * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
| * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| ******************************************************************************/ |
| /********************************** |
| * |
| * Later modifications to test Trafodion instead of Phoenix were granted to ASF. |
| * |
| * 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 test.java.org.trafodion.phoenix.end2end; |
| |
| import static org.junit.Assert.*; |
| import org.junit.*; |
| import java.math.*; |
| import java.sql.*; |
| import java.sql.Date; |
| import java.util.*; |
| import java.io.*; |
| import java.lang.Thread.*; |
| |
| import com.google.common.collect.ImmutableMap; |
| |
| public abstract class BaseTest { |
| |
| // target is phoenix, TRAF, or SQ? |
| protected enum TargetType {PHOENIX, TRAF, SQ}; |
| protected static TargetType targetType = TargetType.TRAF; |
| protected static void setTgtPH() { targetType = TargetType.PHOENIX; } |
| protected static void setTgtTR() { targetType = TargetType.TRAF; } |
| protected static void setTgtSQ() { targetType = TargetType.SQ; } |
| |
| protected static boolean tgtPH() { return targetType == TargetType.PHOENIX; } |
| protected static boolean tgtTR() { return targetType == TargetType.TRAF; } |
| protected static boolean tgtSQ() { return targetType == TargetType.SQ; } |
| |
| // Do you want to print the test info while Junit runs? |
| private final boolean print_testinfo = false; |
| |
| private static String my_catalog = null; |
| private static String my_schema = null; |
| |
| protected static Connection conn = null; |
| /* List all of the object names being used in this entire class. |
| * The objects are dropped with errors ignored, so it is OK if the |
| * object does not exist for a particular test. |
| */ |
| protected static ArrayList<String> objDropList = null; |
| |
| // This is really a @BeforeClass, but the child needs to initialize |
| // objDropList before we can call this function, so the acutal |
| // @BeforeClass is defined in the child and then it calls this |
| // one after objDropList is defined. |
| protected static void doBaseTestSuiteSetup() throws Exception { |
| if (tgtSQ()) |
| createCatalogIfNotExist(); |
| createSchemaIfNotExist(); |
| |
| String name = Thread.currentThread().getStackTrace()[2].toString(); |
| name = name.substring(0, name.indexOf(".doTestSuiteSetup")); |
| System.out.println(name); |
| } |
| |
| @AfterClass |
| public static void doBaseTestSuiteCleanup() throws Exception { |
| dropSchemaIfExist(); |
| if (tgtSQ()) |
| dropCatalogIfExist(); |
| } |
| |
| @Before |
| public void doBaseTestSetup() throws Exception { |
| conn = getConnection(); |
| } |
| |
| @After |
| public void doBaseTestCleanup() throws Exception { |
| conn.close(); |
| dropTestObjects(); |
| } |
| |
| private static Connection baseConn = null; |
| |
| // For SQ only, create catalog if it does not exist |
| private static void createCatalogIfNotExist() throws Exception { |
| // Use our own conn. Who knows what the tests have been doing with |
| // auto commit of the conn that it has been using. |
| if (baseConn == null) |
| baseConn = getConnection(); |
| |
| try { |
| baseConn.createStatement().execute("create catalog " + my_catalog); |
| } catch (Exception e) { |
| // Do nothing, the catalog may already exist. |
| } |
| } |
| |
| // create schema if it does exist. |
| private static void createSchemaIfNotExist() throws Exception { |
| // Use our own conn. Who knows what the tests have been doing with |
| // auto commit of the conn that it has been using. |
| if (baseConn == null) |
| baseConn = getConnection(); |
| |
| try { |
| baseConn.createStatement().execute("create schema " + my_catalog + "." + my_schema); |
| } catch (Exception e) { |
| // Do nothing, the schema may already exist. |
| } |
| } |
| |
| // For SQ only, drop catalog if it exists |
| private static void dropCatalogIfExist() throws Exception { |
| // Use our own conn. Who knows what the tests have been doing with |
| // auto commit of the conn that it has been using. |
| if (baseConn == null) |
| baseConn = getConnection(); |
| |
| try { |
| baseConn.createStatement().execute("drop catalog " + my_catalog); |
| } catch (Exception e) { |
| // failure is OK. The 'cascade' option is not used here, so if |
| // the catalog has some other schemas other than the one that |
| // Phoenix tests use, this will certainly fail. |
| } |
| } |
| |
| private static void dropSchemaIfExist() throws Exception { |
| // Use our own conn. Who knows what the tests have been doing with |
| // auto commit of the conn that it has been using. |
| if (baseConn == null) |
| baseConn = getConnection(); |
| |
| try { |
| baseConn.createStatement().execute("drop schema " + my_catalog + "." + my_schema + " cascade"); |
| } catch (Exception e) { |
| // Do nothing, the schema may not exist. |
| } |
| } |
| |
| protected static void dropTestObjects() throws Exception { |
| |
| // Use our own conn. Who knows what the tests have been doing with |
| // auto commit of the conn that it has been using. |
| if (baseConn == null) |
| baseConn = getConnection(); |
| |
| if (objDropList == null) |
| return; |
| |
| for (String objname : objDropList) { |
| for (int i = 0; i < 3; i++) { |
| try { |
| // shouldn't make any difference, but some people |
| // insist dropping object should use executeUpdate() |
| // instead of execute() |
| baseConn.createStatement().executeUpdate("drop " + objname + " cascade"); |
| break; // no execption, break out here |
| } catch (Exception e) { |
| String msg = e.getMessage(); |
| if ((msg.contains("ERROR[1002]") && |
| msg.contains("does not exist")) || |
| (msg.contains("ERROR[1003]") && |
| msg.contains("does not exist")) || |
| (msg.contains("ERROR[1004]") && |
| msg.contains("does not exist"))) { |
| // ERROR[1002]: catalog does not exist in SQ, |
| // ERROR[1003]: schema does not exist in SQ, |
| // ERROR[1004]: schema does not exist in SQ, |
| // we are done these cases. |
| break; |
| } |
| else if (msg.contains("ERROR[1389]") && |
| msg.contains("does not exist")) { |
| // object does not exist in TRAF, we are done. |
| break; |
| } |
| else if (i < 2 && |
| msg.contains("ERROR[1183]") && |
| msg.contains("Error 73")) { |
| // error 73 should be reried up to 3 times. |
| Thread.sleep(2000); // 2 secs |
| System.out.println("see error 73, retrying..."); |
| } else { |
| // all rest are bad. |
| System.out.println(msg); |
| fail("Failed to drop object: " + objname); |
| } |
| } |
| } |
| } |
| } |
| |
| |
| protected static final String tenantId = "TRAF"; |
| |
| protected static final String CF_NAME = "a"; |
| // protected static final byte[] CF = Bytes.toBytes(CF_NAME); |
| |
| protected static final String CF2_NAME = "b"; |
| |
| protected final static String A_VALUE = "a"; |
| // protected final static byte[] A = Bytes.toBytes(A_VALUE); |
| protected final static String B_VALUE = "b"; |
| // protected final static byte[] B = Bytes.toBytes(B_VALUE); |
| protected final static String C_VALUE = "c"; |
| // protected final static byte[] C = Bytes.toBytes(C_VALUE); |
| protected final static String D_VALUE = "d"; |
| // protected final static byte[] D = Bytes.toBytes(D_VALUE); |
| protected final static String E_VALUE = "e"; |
| // protected final static byte[] E = Bytes.toBytes(E_VALUE); |
| |
| protected final static String ROW1 = "00A123122312312"; |
| protected final static String ROW2 = "00A223122312312"; |
| protected final static String ROW3 = "00A323122312312"; |
| protected final static String ROW4 = "00A423122312312"; |
| protected final static String ROW5 = "00B523122312312"; |
| protected final static String ROW6 = "00B623122312312"; |
| protected final static String ROW7 = "00B723122312312"; |
| protected final static String ROW8 = "00B823122312312"; |
| protected final static String ROW9 = "00C923122312312"; |
| |
| protected static final long MILLIS_IN_DAY = 1000 * 60 * 60 * 24; |
| |
| protected static final String ATABLE_NAME = "ATABLE"; |
| protected static final String SUM_DOUBLE_NAME = "SumDoubleTest"; |
| protected static final String ATABLE_SCHEMA_NAME = ""; |
| protected static final String BTABLE_NAME = "BTABLE"; |
| protected static final String STABLE_NAME = "STABLE"; |
| protected static final String STABLE_SCHEMA_NAME = ""; |
| protected static final String GROUPBYTEST_NAME = "GROUPBYTEST"; |
| protected static final String CUSTOM_ENTITY_DATA_FULL_NAME = "CUSTOM_ENTITY_DATA"; |
| protected static final String CUSTOM_ENTITY_DATA_NAME = "CUSTOM_ENTITY_DATA"; |
| protected static final String CUSTOM_ENTITY_DATA_SCHEMA_NAME = "CORE"; |
| protected static final String HBASE_NATIVE = "HBASE_NATIVE"; |
| protected static final String HBASE_DYNAMIC_COLUMNS = "HBASE_DYNAMIC_COLUMNS"; |
| protected static final String PRODUCT_METRICS_NAME = "PRODUCT_METRICS"; |
| protected static final String PTSDB_NAME = "PTSDB"; |
| protected static final String PTSDB2_NAME = "PTSDB2"; |
| protected static final String PTSDB3_NAME = "PTSDB3"; |
| protected static final String PTSDB_SCHEMA_NAME = ""; |
| protected static final String FUNKY_NAME = "FUNKY_NAMES"; |
| protected static final String MULTI_CF_NAME = "MULTI_CF"; |
| protected static final String MDTEST_NAME = "MDTEST"; |
| protected static final String KEYONLY_NAME = "KEYONLY"; |
| protected static final String TABLE_WITH_SALTING = "TABLE_WITH_SALTING"; |
| protected static final String INDEX_DATA_SCHEMA = "INDEX_TEST"; |
| protected static final String INDEX_DATA_TABLE = "INDEX_DATA_TABLE"; |
| |
| protected static final String NAME_SEPARATOR = "."; |
| |
| private static final Map<String,String> tableDDLMap_PH; |
| private static final Map<String,String> tableDDLMap_TR; |
| private static final Map<String,String> tableDDLMap_SQ; |
| static { |
| ImmutableMap.Builder<String,String> builder_PH = ImmutableMap.builder(); |
| ImmutableMap.Builder<String,String> builder_TR = ImmutableMap.builder(); |
| ImmutableMap.Builder<String,String> builder_SQ = ImmutableMap.builder(); |
| |
| builder_PH.put(ATABLE_NAME,"create table " + ATABLE_NAME + |
| " (organization_id char(15) not null, \n" + |
| " entity_id char(15) not null,\n" + |
| " a_string varchar(100),\n" + |
| " b_string varchar(100),\n" + |
| " a_integer integer,\n" + |
| " a_date date,\n" + |
| " a_time time,\n" + |
| " a_timestamp timestamp,\n" + |
| " x_decimal decimal(31,10),\n" + |
| " x_long bigint,\n" + |
| " x_integer integer,\n" + |
| " y_integer integer,\n" + |
| " a_byte tinyint,\n" + |
| " a_short smallint,\n" + |
| " a_float float,\n" + |
| " a_double double,\n" + |
| " a_unsigned_float unsigned_float,\n" + |
| " a_unsigned_double unsigned_double\n" + |
| " CONSTRAINT pk PRIMARY KEY (organization_id, entity_id)\n" + |
| ")"); |
| builder_TR.put(ATABLE_NAME,"create table " + ATABLE_NAME + |
| " (organization_id char(15) not null, \n" + |
| " entity_id char(15) not null,\n" + |
| " a_string varchar(100),\n" + |
| " b_string varchar(100),\n" + |
| " a_integer integer,\n" + |
| " a_date date,\n" + |
| " a_time time,\n" + |
| " a_timestamp timestamp,\n" + |
| /* TRAF */ " x_decimal decimal(18,10),\n" + |
| " x_long bigint,\n" + |
| " x_integer integer,\n" + |
| " y_integer integer,\n" + |
| " a_byte tinyint,\n" + |
| " a_short smallint,\n" + |
| " a_float float,\n" + |
| /* TRAF */ " a_double double precision,\n" + |
| /* TRAF */ " a_unsigned_float float,\n" + |
| /* TRAF */ " a_unsigned_double double precision\n" + |
| " , CONSTRAINT pk_atable PRIMARY KEY (organization_id, entity_id)\n" + |
| ")"); |
| builder_SQ.put(ATABLE_NAME,"create table " + ATABLE_NAME + |
| " (organization_id char(15) not null, \n" + |
| " entity_id char(15) not null,\n" + |
| " a_string varchar(100),\n" + |
| " b_string varchar(100),\n" + |
| " a_integer integer,\n" + |
| " a_date date,\n" + |
| " a_time time,\n" + |
| " a_timestamp timestamp,\n" + |
| /* TRAF */ " x_decimal decimal(18,10),\n" + |
| " x_long bigint,\n" + |
| " x_integer integer,\n" + |
| " y_integer integer,\n" + |
| " a_byte tinyint,\n" + |
| " a_short smallint,\n" + |
| " a_float float,\n" + |
| /* TRAF */ " a_double double precision,\n" + |
| /* TRAF */ " a_unsigned_float float,\n" + |
| /* TRAF */ " a_unsigned_double double precision\n" + |
| " , CONSTRAINT pk_atable PRIMARY KEY (organization_id, entity_id)\n" + |
| ")"); |
| builder_PH.put(BTABLE_NAME,"create table " + BTABLE_NAME + |
| " (a_string varchar not null, \n" + |
| " a_id char(3) not null,\n" + |
| " b_string varchar not null, \n" + |
| " a_integer integer not null, \n" + |
| " c_string varchar(2) null,\n" + |
| " b_integer integer,\n" + |
| " c_integer integer,\n" + |
| " d_string varchar(3),\n" + |
| " e_string char(10)\n" + |
| " CONSTRAINT my_pk PRIMARY KEY (a_string,a_id,b_string,a_integer,c_string))"); |
| builder_TR.put(BTABLE_NAME,"create table " + BTABLE_NAME + |
| /* TRAF */ " (a_string varchar(128) not null, \n" + |
| " a_id char(3) not null,\n" + |
| /* TRAF */ " b_string varchar(128) not null, \n" + |
| " a_integer integer not null, \n" + |
| /* TRAF */ " c_string varchar(2) not null,\n" + |
| " b_integer integer,\n" + |
| " c_integer integer,\n" + |
| " d_string varchar(3),\n" + |
| " e_string char(10)\n" + |
| /* TRAF */ " , CONSTRAINT pk_btable PRIMARY KEY (a_string,a_id,b_string,a_integer,c_string))"); |
| builder_SQ.put(BTABLE_NAME,"create table " + BTABLE_NAME + |
| /* TRAF */ " (a_string varchar(128) not null, \n" + |
| " a_id char(3) not null,\n" + |
| /* TRAF */ " b_string varchar(128) not null, \n" + |
| " a_integer integer not null, \n" + |
| /* TRAF */ " c_string varchar(2) not null,\n" + |
| " b_integer integer,\n" + |
| " c_integer integer,\n" + |
| " d_string varchar(3),\n" + |
| " e_string char(10)\n" + |
| /* TRAF */ " , CONSTRAINT pk_btable PRIMARY KEY (a_string,a_id,b_string,a_integer,c_string))"); |
| builder_PH.put(TABLE_WITH_SALTING,"create table " + TABLE_WITH_SALTING + |
| " (a_integer integer not null, \n" + |
| " a_string varchar not null, \n" + |
| " a_id char(3) not null,\n" + |
| " b_string varchar, \n" + |
| " b_integer integer \n" + |
| " CONSTRAINT pk PRIMARY KEY (a_integer, a_string, a_id))\n" + |
| " SALT_BUCKETS = 4"); |
| builder_TR.put(TABLE_WITH_SALTING,"create table " + TABLE_WITH_SALTING + |
| " (a_integer integer not null, \n" + |
| /* TRAF */ " a_string varchar(128) not null, \n" + |
| " a_id char(3) not null,\n" + |
| /* TRAF */ " b_string varchar(128), \n" + |
| " b_integer integer \n" + |
| /* TRAF */ " , CONSTRAINT pk_table_with_salting PRIMARY KEY (a_integer, a_string, a_id))\n" + |
| /* TRAF */ ""); |
| builder_SQ.put(TABLE_WITH_SALTING,"create table " + TABLE_WITH_SALTING + |
| " (a_integer integer not null, \n" + |
| /* TRAF */ " a_string varchar(128) not null, \n" + |
| " a_id char(3) not null,\n" + |
| /* TRAF */ " b_string varchar(128), \n" + |
| " b_integer integer \n" + |
| /* TRAF */ " , CONSTRAINT pk_table_with_salting PRIMARY KEY (a_integer, a_string, a_id))\n" + |
| // TRAF " SALT_BUCKETS = 4"); |
| /* TRAF */ ""); |
| builder_PH.put(PTSDB_NAME,"create table " + PTSDB_NAME + |
| " (inst varchar null,\n" + |
| " host varchar null,\n" + |
| " date date not null,\n" + |
| " val decimal(31,10)\n" + |
| " CONSTRAINT pk PRIMARY KEY (inst, host, date))"); |
| builder_TR.put(PTSDB_NAME,"create table " + PTSDB_NAME + |
| /* TRAF */ " (inst varchar(128) default null,\n" + |
| /* TRAF */ " host1 varchar(128) default null,\n" + |
| /* TRAF */ " date1 timestamp not null,\n" + |
| /* TRAF */ " val decimal(18,10)\n" + |
| // TRAF: change the primary keys to clustering key. Some of the columns allow null, which can't be used as primary keys in SQ. date1 alone is not unique enough to be a primary key. |
| /* TRAF */ " ) STORE BY (date1)"); |
| builder_SQ.put(PTSDB_NAME,"create table " + PTSDB_NAME + |
| /* TRAF */ " (inst varchar(128) default null,\n" + |
| /* TRAF */ " host1 varchar(128) default null,\n" + |
| /* TRAF */ " date1 timestamp not null,\n" + |
| /* TRAF */ " val decimal(18,10)\n" + |
| // TRAF: change the primary keys to clustering key. Some of the columns allow null, which can't be used as primary keys in SQ. date1 alone is not unique enough to be a primary key. |
| /* TRAF */ " ) STORE BY (date1)"); |
| builder_PH.put(PTSDB2_NAME,"create table " + PTSDB2_NAME + |
| " (inst varchar(10) not null,\n" + |
| " date date not null,\n" + |
| " val1 decimal,\n" + |
| " val2 decimal(31,10),\n" + |
| " val3 decimal\n" + |
| " CONSTRAINT pk PRIMARY KEY (inst, date))"); |
| builder_TR.put(PTSDB2_NAME,"create table " + PTSDB2_NAME + |
| " (inst varchar(10) not null,\n" + |
| /* TRAF */ " date1 timestamp not null,\n" + |
| " val1 decimal,\n" + |
| /* TRAF */ " val2 decimal(18,10),\n" + |
| " val3 decimal\n" + |
| /* TRAF */ " , CONSTRAINT pk PRIMARY KEY (inst, date1))"); |
| builder_SQ.put(PTSDB2_NAME,"create table " + PTSDB2_NAME + |
| " (inst varchar(10) not null,\n" + |
| /* TRAF */ " date1 timestamp not null,\n" + |
| " val1 decimal,\n" + |
| /* TRAF */ " val2 decimal(18,10),\n" + |
| " val3 decimal\n" + |
| /* TRAF */ " , CONSTRAINT pk PRIMARY KEY (inst, date1))"); |
| builder_PH.put(PTSDB3_NAME,"create table " + PTSDB3_NAME + |
| " (host varchar(10) not null,\n" + |
| " date date not null,\n" + |
| " val1 decimal,\n" + |
| " val2 decimal(31,10),\n" + |
| " val3 decimal\n" + |
| " CONSTRAINT pk PRIMARY KEY (host DESC, date DESC))"); |
| builder_TR.put(PTSDB3_NAME,"create table " + PTSDB3_NAME + |
| /* TRAF */ " (host1 varchar(10) not null,\n" + |
| /* TRAF */ " date1 timestamp not null,\n" + |
| " val1 decimal,\n" + |
| /* TRAF */ " val2 decimal(18,10),\n" + |
| " val3 decimal\n" + |
| /* TRAF */ " , CONSTRAINT pk PRIMARY KEY (host1 DESC, date1 DESC))"); |
| builder_SQ.put(PTSDB3_NAME,"create table " + PTSDB3_NAME + |
| /* TRAF */ " (host1 varchar(10) not null,\n" + |
| /* TRAF */ " date1 timestamp not null,\n" + |
| " val1 decimal,\n" + |
| /* TRAF */ " val2 decimal(18,10),\n" + |
| " val3 decimal\n" + |
| /* TRAF */ " , CONSTRAINT pk PRIMARY KEY (host1 DESC, date1 DESC))"); |
| builder_PH.put(FUNKY_NAME,"create table " + FUNKY_NAME + |
| " (\"foo!\" varchar not null primary key,\n" + |
| " \"1\".\"#@$\" varchar, \n" + |
| " \"1\".\"foo.bar-bas\" varchar, \n" + |
| " \"1\".\"Value\" integer,\n" + |
| " \"1\".\"VALUE\" integer,\n" + |
| " \"1\".\"value\" integer,\n" + |
| " \"1\".\"_blah^\" varchar)" |
| ); |
| builder_TR.put(FUNKY_NAME,"create table " + FUNKY_NAME + |
| /* TRAF */ " (\"foo!\" varchar(128) not null primary key,\n" + |
| /* TRAF */ " \"#@$\" varchar(128), \n" + |
| /* TRAF */ " \"foo.bar-bas\" varchar(128), \n" + |
| /* TRAF */ " \"Value\" integer,\n" + |
| /* TRAF */ " \"VALUE\" integer,\n" + |
| /* TRAF */ " \"value\" integer,\n" + |
| /* TRAF */ " \"_blah^\" varchar(128))" |
| ); |
| builder_SQ.put(FUNKY_NAME,"create table " + FUNKY_NAME + |
| /* TRAF */ " (\"foo!\" varchar(128) not null primary key,\n" + |
| /* TRAF */ " \"#@$\" varchar(128), \n" + |
| /* TRAF */ " \"foo.bar-bas\" varchar(128), \n" + |
| /* TRAF */ " \"Value\" integer,\n" + |
| /* TRAF */ " \"VALUE\" integer,\n" + |
| /* TRAF */ " \"value\" integer,\n" + |
| /* TRAF */ " \"_blah^\" varchar(128))" |
| ); |
| builder_PH.put(KEYONLY_NAME,"create table " + KEYONLY_NAME + |
| " (i1 integer not null, i2 integer not null\n" + |
| " CONSTRAINT pk PRIMARY KEY (i1,i2))"); |
| builder_TR.put(KEYONLY_NAME,"create table " + KEYONLY_NAME + |
| " (i1 integer not null, i2 integer not null\n" + |
| " , CONSTRAINT pk_keyonly PRIMARY KEY (i1,i2))"); |
| builder_SQ.put(KEYONLY_NAME,"create table " + KEYONLY_NAME + |
| " (i1 integer not null, i2 integer not null\n" + |
| " , CONSTRAINT pk_keyonly PRIMARY KEY (i1,i2))"); |
| builder_PH.put(MULTI_CF_NAME,"create table " + MULTI_CF_NAME + |
| " (id char(15) not null primary key,\n" + |
| " a.unique_user_count integer,\n" + |
| " b.unique_org_count integer,\n" + |
| " c.db_cpu_utilization decimal(31,10),\n" + |
| " d.transaction_count bigint,\n" + |
| " e.cpu_utilization decimal(31,10),\n" + |
| " f.response_time bigint,\n" + |
| " g.response_time bigint)"); |
| builder_TR.put(MULTI_CF_NAME,"create table " + MULTI_CF_NAME + |
| " (id char(15) not null primary key,\n" + |
| /* TRAF */ " unique_user_count integer,\n" + |
| /* TRAF */ " unique_org_count integer,\n" + |
| /* TRAF */ " db_cpu_utilization decimal(18,10),\n" + |
| /* TRAF */ " transaction_count bigint,\n" + |
| /* TRAF */ " cpu_utilization decimal(18,10),\n" + |
| /* TRAF */ " f_response_time bigint,\n" + |
| /* TRAF */ " g_response_time bigint)"); |
| builder_SQ.put(MULTI_CF_NAME,"create table " + MULTI_CF_NAME + |
| " (id char(15) not null primary key,\n" + |
| /* TRAF */ " unique_user_count integer,\n" + |
| /* TRAF */ " unique_org_count integer,\n" + |
| /* TRAF */ " db_cpu_utilization decimal(18,10),\n" + |
| /* TRAF */ " transaction_count bigint,\n" + |
| /* TRAF */ " cpu_utilization decimal(18,10),\n" + |
| /* TRAF */ " f_response_time bigint,\n" + |
| /* TRAF */ " g_response_time bigint)"); |
| builder_PH.put(GROUPBYTEST_NAME,"create table " + GROUPBYTEST_NAME + |
| " (id varchar not null primary key,\n" + |
| " uri varchar, appcpu integer)"); |
| builder_TR.put(GROUPBYTEST_NAME,"create table " + GROUPBYTEST_NAME + |
| /* TRAF */ " (id varchar(128) not null primary key,\n" + |
| /* TRAF */ " uri varchar(128), appcpu integer)"); |
| builder_SQ.put(GROUPBYTEST_NAME,"create table " + GROUPBYTEST_NAME + |
| /* TRAF */ " (id varchar(128) not null primary key,\n" + |
| /* TRAF */ " uri varchar(128), appcpu integer)"); |
| builder_PH.put(PRODUCT_METRICS_NAME,"create table " + PRODUCT_METRICS_NAME + |
| " (organization_id char(15) not null," + |
| " date date not null," + |
| " feature char(1) not null," + |
| " unique_users integer not null,\n" + |
| " db_utilization decimal(31,10),\n" + |
| " transactions bigint,\n" + |
| " cpu_utilization decimal(31,10),\n" + |
| " response_time bigint,\n" + |
| " io_time bigint,\n" + |
| " region varchar,\n" + |
| " unset_column decimal(31,10)\n" + |
| " CONSTRAINT pk PRIMARY KEY (organization_id, DATe, feature, UNIQUE_USERS))"); |
| builder_TR.put(PRODUCT_METRICS_NAME,"create table " + PRODUCT_METRICS_NAME + |
| " (organization_id char(15) not null," + |
| /* TRAF */ " date1 timestamp not null," + |
| " feature char(1) not null," + |
| " unique_users integer not null,\n" + |
| /* TRAF */ " db_utilization decimal(18,10),\n" + |
| " transactions bigint,\n" + |
| /* TRAF */ " cpu_utilization decimal(18,10),\n" + |
| " response_time bigint,\n" + |
| " io_time bigint,\n" + |
| /* TRAF */ " region varchar(128),\n" + |
| /* TRAF */ " unset_column decimal(18,10)\n" + |
| /* TRAF */ " , CONSTRAINT pk_product_matrics PRIMARY KEY (organization_id, DATe1, feature, UNIQUE_USERS))"); |
| builder_SQ.put(PRODUCT_METRICS_NAME,"create table " + PRODUCT_METRICS_NAME + |
| " (organization_id char(15) not null," + |
| /* TRAF */ " date1 timestamp not null," + |
| " feature char(1) not null," + |
| " unique_users integer not null,\n" + |
| /* TRAF */ " db_utilization decimal(18,10),\n" + |
| " transactions bigint,\n" + |
| /* TRAF */ " cpu_utilization decimal(18,10),\n" + |
| " response_time bigint,\n" + |
| " io_time bigint,\n" + |
| /* TRAF */ " region varchar(128),\n" + |
| /* TRAF */ " unset_column decimal(18,10)\n" + |
| /* TRAF */ " , CONSTRAINT pk_product_matrics PRIMARY KEY (organization_id, DATe1, feature, UNIQUE_USERS))"); |
| builder_PH.put(CUSTOM_ENTITY_DATA_FULL_NAME,"create table " + CUSTOM_ENTITY_DATA_FULL_NAME + |
| " (organization_id char(15) not null, \n" + |
| " key_prefix char(3) not null,\n" + |
| " custom_entity_data_id char(12) not null,\n" + |
| " created_by varchar,\n" + |
| " created_date date,\n" + |
| " currency_iso_code char(3),\n" + |
| " deleted char(1),\n" + |
| " division decimal(31,10),\n" + |
| " last_activity date,\n" + |
| " last_update date,\n" + |
| " last_update_by varchar,\n" + |
| " name varchar(240),\n" + |
| " owner varchar,\n" + |
| " record_type_id char(15),\n" + |
| " setup_owner varchar,\n" + |
| " system_modstamp date,\n" + |
| " b.val0 varchar,\n" + |
| " b.val1 varchar,\n" + |
| " b.val2 varchar,\n" + |
| " b.val3 varchar,\n" + |
| " b.val4 varchar,\n" + |
| " b.val5 varchar,\n" + |
| " b.val6 varchar,\n" + |
| " b.val7 varchar,\n" + |
| " b.val8 varchar,\n" + |
| " b.val9 varchar\n" + |
| " CONSTRAINT pk PRIMARY KEY (organization_id, key_prefix, custom_entity_data_id))"); |
| builder_TR.put(CUSTOM_ENTITY_DATA_FULL_NAME,"create table " + CUSTOM_ENTITY_DATA_FULL_NAME + |
| " (organization_id char(15) not null, \n" + |
| " key_prefix char(3) not null,\n" + |
| " custom_entity_data_id char(12) not null,\n" + |
| /* TRAF */ " created_by varchar(128),\n" + |
| " created_date date,\n" + |
| " currency_iso_code char(3),\n" + |
| " deleted char(1),\n" + |
| /* TRAF */ " division decimal(18,10),\n" + |
| " last_activity date,\n" + |
| " last_update date,\n" + |
| /* TRAF */ " last_update_by varchar(128),\n" + |
| " name varchar(240),\n" + |
| /* TRAF */ " owner varchar(128),\n" + |
| " record_type_id char(15),\n" + |
| /* TRAF */ " setup_owner varchar(128),\n" + |
| " system_modstamp date,\n" + |
| /* TRAF */ " val0 varchar(128),\n" + |
| /* TRAF */ " val1 varchar(128),\n" + |
| /* TRAF */ " val2 varchar(128),\n" + |
| /* TRAF */ " val3 varchar(128),\n" + |
| /* TRAF */ " val4 varchar(128),\n" + |
| /* TRAF */ " val5 varchar(128),\n" + |
| /* TRAF */ " val6 varchar(128),\n" + |
| /* TRAF */ " val7 varchar(128),\n" + |
| /* TRAF */ " val8 varchar(128),\n" + |
| /* TRAF */ " val9 varchar(128)\n" + |
| /* TRAF */ " , CONSTRAINT pk_custom_entity_data PRIMARY KEY (organization_id, key_prefix, custom_entity_data_id))"); |
| builder_SQ.put(CUSTOM_ENTITY_DATA_FULL_NAME,"create table " + CUSTOM_ENTITY_DATA_FULL_NAME + |
| " (organization_id char(15) not null, \n" + |
| " key_prefix char(3) not null,\n" + |
| " custom_entity_data_id char(12) not null,\n" + |
| /* TRAF */ " created_by varchar(128),\n" + |
| " created_date date,\n" + |
| " currency_iso_code char(3),\n" + |
| " deleted char(1),\n" + |
| /* TRAF */ " division decimal(18,10),\n" + |
| " last_activity date,\n" + |
| " last_update date,\n" + |
| /* TRAF */ " last_update_by varchar(128),\n" + |
| " name varchar(240),\n" + |
| /* TRAF */ " owner varchar(128),\n" + |
| " record_type_id char(15),\n" + |
| /* TRAF */ " setup_owner varchar(128),\n" + |
| " system_modstamp date,\n" + |
| /* TRAF */ " val0 varchar(128),\n" + |
| /* TRAF */ " val1 varchar(128),\n" + |
| /* TRAF */ " val2 varchar(128),\n" + |
| /* TRAF */ " val3 varchar(128),\n" + |
| /* TRAF */ " val4 varchar(128),\n" + |
| /* TRAF */ " val5 varchar(128),\n" + |
| /* TRAF */ " val6 varchar(128),\n" + |
| /* TRAF */ " val7 varchar(128),\n" + |
| /* TRAF */ " val8 varchar(128),\n" + |
| /* TRAF */ " val9 varchar(128)\n" + |
| /* TRAF */ " , CONSTRAINT pk_custom_entity_data PRIMARY KEY (organization_id, key_prefix, custom_entity_data_id))"); |
| builder_PH.put("IntKeyTest","create table IntKeyTest" + |
| " (i integer not null primary key)"); |
| builder_TR.put("IntKeyTest","create table IntKeyTest" + |
| " (i integer not null primary key)"); |
| builder_SQ.put("IntKeyTest","create table IntKeyTest" + |
| " (i integer not null primary key)"); |
| builder_PH.put("IntIntKeyTest","create table IntIntKeyTest" + |
| " (i integer not null primary key, j integer)"); |
| builder_TR.put("IntIntKeyTest","create table IntIntKeyTest" + |
| " (i integer not null primary key, j integer)"); |
| builder_SQ.put("IntIntKeyTest","create table IntIntKeyTest" + |
| " (i integer not null primary key, j integer)"); |
| builder_PH.put("LongInKeyTest","create table LongInKeyTest" + |
| " (l bigint not null primary key)"); |
| builder_TR.put("LongInKeyTest","create table LongInKeyTest" + |
| " (l bigint not null primary key)"); |
| builder_SQ.put("LongInKeyTest","create table LongInKeyTest" + |
| " (l bigint not null primary key)"); |
| builder_PH.put("PKIntValueTest", "create table PKIntValueTest" + |
| " (pk integer not null primary key)"); |
| builder_TR.put("PKIntValueTest", "create table PKIntValueTest" + |
| " (pk integer not null primary key)"); |
| builder_SQ.put("PKIntValueTest", "create table PKIntValueTest" + |
| " (pk integer not null primary key)"); |
| builder_PH.put("PKBigIntValueTest", "create table PKBigIntValueTest" + |
| " (pk bigint not null primary key)"); |
| builder_TR.put("PKBigIntValueTest", "create table PKBigIntValueTest" + |
| " (pk bigint not null primary key)"); |
| builder_SQ.put("PKBigIntValueTest", "create table PKBigIntValueTest" + |
| " (pk bigint not null primary key)"); |
| builder_PH.put("PKUnsignedIntValueTest", "create table PKUnsignedIntValueTest" + |
| " (pk unsigned_int not null primary key)"); |
| builder_TR.put("PKUnsignedIntValueTest", "create table PKUnsignedIntValueTest" + |
| " (pk unsigned_int not null primary key)"); |
| builder_SQ.put("PKUnsignedIntValueTest", "create table PKUnsignedIntValueTest" + |
| " (pk unsigned_int not null primary key)"); |
| builder_PH.put("PKUnsignedLongValueTest", "create table PKUnsignedLongValueTest" + |
| " (pk unsigned_long not null\n" + |
| " CONSTRAINT pk PRIMARY KEY (pk))"); |
| builder_TR.put("PKUnsignedLongValueTest", "create table PKUnsignedLongValueTest" + |
| " (pk unsigned_long not null\n" + |
| " CONSTRAINT pk PRIMARY KEY (pk))"); |
| builder_SQ.put("PKUnsignedLongValueTest", "create table PKUnsignedLongValueTest" + |
| " (pk unsigned_long not null\n" + |
| " CONSTRAINT pk PRIMARY KEY (pk))"); |
| builder_PH.put("KVIntValueTest", "create table KVIntValueTest" + |
| " (pk integer not null primary key,\n" + |
| " kv integer)\n"); |
| builder_TR.put("KVIntValueTest", "create table KVIntValueTest" + |
| " (pk integer not null primary key,\n" + |
| " kv integer)\n"); |
| builder_SQ.put("KVIntValueTest", "create table KVIntValueTest" + |
| " (pk integer not null primary key,\n" + |
| " kv integer)\n"); |
| builder_PH.put("KVBigIntValueTest", "create table KVBigIntValueTest" + |
| " (pk integer not null primary key,\n" + |
| " kv bigint)\n"); |
| builder_TR.put("KVBigIntValueTest", "create table KVBigIntValueTest" + |
| " (pk integer not null primary key,\n" + |
| " kv bigint)\n"); |
| builder_SQ.put("KVBigIntValueTest", "create table KVBigIntValueTest" + |
| " (pk integer not null primary key,\n" + |
| " kv bigint)\n"); |
| builder_PH.put(INDEX_DATA_TABLE, "create table " + INDEX_DATA_SCHEMA + NAME_SEPARATOR + INDEX_DATA_TABLE + "(" + |
| " varchar_pk VARCHAR NOT NULL, " + |
| " char_pk CHAR(5) NOT NULL, " + |
| " int_pk INTEGER NOT NULL, "+ |
| " long_pk BIGINT NOT NULL, " + |
| " decimal_pk DECIMAL(31, 10) NOT NULL, " + |
| " a.varchar_col1 VARCHAR, " + |
| " a.char_col1 CHAR(5), " + |
| " a.int_col1 INTEGER, " + |
| " a.long_col1 BIGINT, " + |
| " a.decimal_col1 DECIMAL(31, 10), " + |
| " b.varchar_col2 VARCHAR, " + |
| " b.char_col2 CHAR(5), " + |
| " b.int_col2 INTEGER, " + |
| " b.long_col2 BIGINT, " + |
| " b.decimal_col2 DECIMAL(31, 10) " + |
| " CONSTRAINT pk PRIMARY KEY (varchar_pk, char_pk, int_pk, long_pk DESC, decimal_pk)) " + |
| "IMMUTABLE_ROWS=true"); |
| builder_TR.put(INDEX_DATA_TABLE, "create table " + INDEX_DATA_TABLE + "(" + |
| /* TRAF */ " varchar_pk VARCHAR(128) NOT NULL, " + |
| " char_pk CHAR(5) NOT NULL, " + |
| " int_pk INTEGER NOT NULL, "+ |
| " long_pk BIGINT NOT NULL, " + |
| /* TRAF */ " decimal_pk DECIMAL(18, 10) NOT NULL, " + |
| /* TRAF */ " varchar_col1 VARCHAR(128), " + |
| /* TRAF */ " char_col1 CHAR(5), " + |
| /* TRAF */ " int_col1 INTEGER, " + |
| /* TRAF */ " long_col1 BIGINT, " + |
| /* TRAF */ " decimal_col1 DECIMAL(18, 10), " + |
| /* TRAF */ " varchar_col2 VARCHAR(128), " + |
| /* TRAF */ " char_col2 CHAR(5), " + |
| /* TRAF */ " int_col2 INTEGER, " + |
| /* TRAF */ " long_col2 BIGINT, " + |
| /* TRAF */ " decimal_col2 DECIMAL(18, 10) " + |
| /* TRAF */ " , CONSTRAINT pk PRIMARY KEY (varchar_pk, char_pk, int_pk, long_pk DESC, decimal_pk)) " + |
| /* TRAF */ ""); |
| builder_SQ.put(INDEX_DATA_TABLE, "create table " + INDEX_DATA_TABLE + "(" + |
| /* TRAF */ " varchar_pk VARCHAR(128) NOT NULL, " + |
| " char_pk CHAR(5) NOT NULL, " + |
| " int_pk INTEGER NOT NULL, "+ |
| " long_pk BIGINT NOT NULL, " + |
| /* TRAF */ " decimal_pk DECIMAL(18, 10) NOT NULL, " + |
| /* TRAF */ " varchar_col1 VARCHAR(128), " + |
| /* TRAF */ " char_col1 CHAR(5), " + |
| /* TRAF */ " int_col1 INTEGER, " + |
| /* TRAF */ " long_col1 BIGINT, " + |
| /* TRAF */ " decimal_col1 DECIMAL(18, 10), " + |
| /* TRAF */ " varchar_col2 VARCHAR(128), " + |
| /* TRAF */ " char_col2 CHAR(5), " + |
| /* TRAF */ " int_col2 INTEGER, " + |
| /* TRAF */ " long_col2 BIGINT, " + |
| /* TRAF */ " decimal_col2 DECIMAL(18, 10) " + |
| /* TRAF */ " , CONSTRAINT pk PRIMARY KEY (varchar_pk, char_pk, int_pk, long_pk DESC, decimal_pk)) " + |
| /* TRAF */ ""); |
| builder_PH.put("SumDoubleTest","create table SumDoubleTest" + |
| " (id varchar not null primary key, d DOUBLE, f FLOAT, ud UNSIGNED_DOUBLE, uf UNSIGNED_FLOAT, i integer, de decimal)"); |
| builder_TR.put("SumDoubleTest","create table SumDoubleTest" + |
| /* TRAF */ " (id varchar(128) not null primary key, d DOUBLE PRECISION, f FLOAT, ud DOUBLE PRECISION, uf FLOAT, i integer, de decimal)"); |
| builder_SQ.put("SumDoubleTest","create table SumDoubleTest" + |
| /* TRAF */ " (id varchar(128) not null primary key, d DOUBLE PRECISION, f FLOAT, ud DOUBLE PRECISION, uf FLOAT, i integer, de decimal)"); |
| |
| tableDDLMap_PH = builder_PH.build(); |
| tableDDLMap_TR = builder_TR.build(); |
| tableDDLMap_SQ = builder_SQ.build(); |
| } |
| |
| protected void printTestDescription() { |
| if (print_testinfo) { |
| System.out.println(Thread.currentThread().getStackTrace()[2]); |
| } |
| } |
| |
| private static String url = null; |
| |
| protected static String getUrl() { return url; } |
| |
| private static boolean driverRegistered = false; |
| |
| private static void doConnectionSetup(Connection conn) throws Exception { |
| assertNotNull(conn); |
| |
| if (tgtTR()) { |
| conn.createStatement().execute("select current_timestamp from dual"); |
| } |
| } |
| |
| protected static Connection getConnection() throws Exception { |
| Connection conn = null; |
| try { |
| String propFile = System.getProperty("trafjdbc.properties"); |
| assertNotNull(propFile); |
| FileInputStream fs = new FileInputStream(new File(propFile)); |
| Properties props = new Properties(); |
| props.load(fs); |
| |
| url = props.getProperty("url"); |
| my_catalog = props.getProperty("catalog"); |
| my_schema = props.getProperty("schema"); |
| String tgtType = props.getProperty("targettype"); |
| assertTrue(tgtType.equals("") || tgtType.equals("SQ") || tgtType.equals("TR")); |
| if (tgtType.equals("SQ")) |
| setTgtSQ(); |
| else if (tgtType.equals("TR")) |
| setTgtTR(); |
| |
| // Reigser our JDBC driver if this is the first call. |
| if (! driverRegistered) { |
| if (url.contains("t4jdbc")) |
| Class.forName("org.trafodion.jdbc.t4.T4Driver"); // T4 driver |
| else |
| Class.forName("org.apache.trafodion.jdbc.t2.T2Driver"); // T2 driver |
| driverRegistered = true; |
| } |
| |
| // System.out.println("connecting to " + url); |
| conn = DriverManager.getConnection(url, props); |
| } catch (Exception e) { |
| conn = null; |
| fail(e.getMessage()); |
| } |
| |
| doConnectionSetup(conn); |
| |
| return conn; |
| } |
| |
| protected void createTestTable(String tableName) { |
| assertNotNull(conn); |
| String ddl = null; |
| if (tgtPH()) ddl = tableDDLMap_PH.get(tableName); |
| else if (tgtTR()) ddl = tableDDLMap_TR.get(tableName); |
| else if (tgtSQ()) ddl = tableDDLMap_SQ.get(tableName); |
| assertNotNull(ddl); |
| StringBuilder buf = new StringBuilder(ddl); |
| ddl = buf.toString(); |
| |
| try { |
| conn.createStatement().execute(ddl); |
| } catch (Exception e) { |
| System.out.println(e.getMessage()); |
| fail("Failed to create table"); |
| } |
| } |
| |
| protected void initSumDoubleValues() throws Exception { |
| assertNotNull(conn); |
| createTestTable("SumDoubleTest"); |
| try { |
| // Insert all rows at ts |
| PreparedStatement stmt = null; |
| if (tgtPH()||tgtTR()) stmt = conn.prepareStatement( |
| "upsert into " + |
| "SumDoubleTest(" + |
| " id, " + |
| " d, " + |
| " f, " + |
| " ud, " + |
| " uf) " + |
| "VALUES (?, ?, ?, ?, ?)"); |
| else if (tgtSQ()) stmt = conn.prepareStatement( |
| "insert into " + |
| "SumDoubleTest(" + |
| " id, " + |
| " d, " + |
| " f, " + |
| " ud, " + |
| " uf) " + |
| "VALUES (?, ?, ?, ?, ?)"); |
| stmt.setString(1, "1"); |
| stmt.setDouble(2, 0.001); |
| stmt.setFloat(3, 0.01f); |
| stmt.setDouble(4, 0.001); |
| stmt.setFloat(5, 0.01f); |
| stmt.execute(); |
| |
| stmt.setString(1, "2"); |
| stmt.setDouble(2, 0.002); |
| stmt.setFloat(3, 0.02f); |
| stmt.setDouble(4, 0.002); |
| stmt.setFloat(5, 0.02f); |
| stmt.execute(); |
| |
| stmt.setString(1, "3"); |
| stmt.setDouble(2, 0.003); |
| stmt.setFloat(3, 0.03f); |
| stmt.setDouble(4, 0.003); |
| stmt.setFloat(5, 0.03f); |
| stmt.execute(); |
| |
| stmt.setString(1, "4"); |
| stmt.setDouble(2, 0.004); |
| stmt.setFloat(3, 0.04f); |
| stmt.setDouble(4, 0.004); |
| stmt.setFloat(5, 0.04f); |
| stmt.execute(); |
| |
| stmt.setString(1, "5"); |
| stmt.setDouble(2, 0.005); |
| stmt.setFloat(3, 0.05f); |
| stmt.setDouble(4, 0.005); |
| stmt.setFloat(5, 0.05f); |
| stmt.execute(); |
| } finally { |
| } |
| } |
| |
| protected void initATableValues() throws Exception { |
| initATableValues(null); |
| } |
| |
| protected void initATableValues(Date date) throws Exception { |
| assertNotNull(conn); |
| createTestTable(ATABLE_NAME); |
| try { |
| // Insert all rows at ts |
| PreparedStatement stmt = null; |
| if (tgtPH()||tgtTR()) stmt = conn.prepareStatement( |
| "upsert into " + |
| "ATABLE(" + |
| " ORGANIZATION_ID, " + |
| " ENTITY_ID, " + |
| " A_STRING, " + |
| " B_STRING, " + |
| " A_INTEGER, " + |
| " A_DATE, " + |
| " X_DECIMAL, " + |
| " X_LONG, " + |
| " X_INTEGER," + |
| " Y_INTEGER," + |
| " A_BYTE," + |
| " A_SHORT," + |
| " A_FLOAT," + |
| " A_DOUBLE," + |
| " A_UNSIGNED_FLOAT," + |
| " A_UNSIGNED_DOUBLE)" + |
| "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); |
| else if (tgtSQ()) stmt = conn.prepareStatement( |
| "insert into " + |
| "ATABLE(" + |
| " ORGANIZATION_ID, " + |
| " ENTITY_ID, " + |
| " A_STRING, " + |
| " B_STRING, " + |
| " A_INTEGER, " + |
| " A_DATE, " + |
| " X_DECIMAL, " + |
| " X_LONG, " + |
| " X_INTEGER," + |
| " Y_INTEGER," + |
| " A_BYTE," + |
| " A_SHORT," + |
| " A_FLOAT," + |
| " A_DOUBLE," + |
| " A_UNSIGNED_FLOAT," + |
| " A_UNSIGNED_DOUBLE)" + |
| "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); |
| |
| stmt.setString(1, tenantId); |
| stmt.setString(2, ROW1); |
| stmt.setString(3, A_VALUE); |
| stmt.setString(4, B_VALUE); |
| stmt.setInt(5, 1); |
| stmt.setDate(6, date); |
| stmt.setBigDecimal(7, null); |
| stmt.setNull(8, Types.BIGINT); |
| stmt.setNull(9, Types.INTEGER); |
| stmt.setNull(10, Types.INTEGER); |
| stmt.setByte(11, (byte)1); |
| stmt.setShort(12, (short) 128); |
| stmt.setFloat(13, 0.01f); |
| stmt.setDouble(14, 0.0001); |
| stmt.setFloat(15, 0.01f); |
| stmt.setDouble(16, 0.0001); |
| stmt.execute(); |
| |
| stmt.setString(1, tenantId); |
| stmt.setString(2, ROW2); |
| stmt.setString(3, A_VALUE); |
| stmt.setString(4, C_VALUE); |
| stmt.setInt(5, 2); |
| stmt.setDate(6, date == null ? null : new Date(date.getTime() + MILLIS_IN_DAY * 1)); |
| stmt.setBigDecimal(7, null); |
| stmt.setNull(8, Types.BIGINT); |
| stmt.setNull(9, Types.INTEGER); |
| stmt.setNull(10, Types.INTEGER); |
| stmt.setByte(11, (byte)2); |
| stmt.setShort(12, (short) 129); |
| stmt.setFloat(13, 0.02f); |
| stmt.setDouble(14, 0.0002); |
| stmt.setFloat(15, 0.02f); |
| stmt.setDouble(16, 0.0002); |
| stmt.execute(); |
| |
| stmt.setString(1, tenantId); |
| stmt.setString(2, ROW3); |
| stmt.setString(3, A_VALUE); |
| stmt.setString(4, E_VALUE); |
| stmt.setInt(5, 3); |
| stmt.setDate(6, date == null ? null : new Date(date.getTime() + MILLIS_IN_DAY * 2)); |
| stmt.setBigDecimal(7, null); |
| stmt.setNull(8, Types.BIGINT); |
| stmt.setNull(9, Types.INTEGER); |
| stmt.setNull(10, Types.INTEGER); |
| stmt.setByte(11, (byte)3); |
| stmt.setShort(12, (short) 130); |
| stmt.setFloat(13, 0.03f); |
| stmt.setDouble(14, 0.0003); |
| stmt.setFloat(15, 0.03f); |
| stmt.setDouble(16, 0.0003); |
| stmt.execute(); |
| |
| stmt.setString(1, tenantId); |
| stmt.setString(2, ROW4); |
| stmt.setString(3, A_VALUE); |
| stmt.setString(4, B_VALUE); |
| stmt.setInt(5, 4); |
| stmt.setDate(6, date == null ? null : date); |
| stmt.setBigDecimal(7, null); |
| stmt.setNull(8, Types.BIGINT); |
| stmt.setNull(9, Types.INTEGER); |
| stmt.setNull(10, Types.INTEGER); |
| stmt.setByte(11, (byte)4); |
| stmt.setShort(12, (short) 131); |
| stmt.setFloat(13, 0.04f); |
| stmt.setDouble(14, 0.0004); |
| stmt.setFloat(15, 0.04f); |
| stmt.setDouble(16, 0.0004); |
| stmt.execute(); |
| |
| stmt.setString(1, tenantId); |
| stmt.setString(2, ROW5); |
| stmt.setString(3, B_VALUE); |
| stmt.setString(4, C_VALUE); |
| stmt.setInt(5, 5); |
| stmt.setDate(6, date == null ? null : new Date(date.getTime() + MILLIS_IN_DAY * 1)); |
| stmt.setBigDecimal(7, null); |
| stmt.setNull(8, Types.BIGINT); |
| stmt.setNull(9, Types.INTEGER); |
| stmt.setNull(10, Types.INTEGER); |
| stmt.setByte(11, (byte)5); |
| stmt.setShort(12, (short) 132); |
| stmt.setFloat(13, 0.05f); |
| stmt.setDouble(14, 0.0005); |
| stmt.setFloat(15, 0.05f); |
| stmt.setDouble(16, 0.0005); |
| stmt.execute(); |
| |
| stmt.setString(1, tenantId); |
| stmt.setString(2, ROW6); |
| stmt.setString(3, B_VALUE); |
| stmt.setString(4, E_VALUE); |
| stmt.setInt(5, 6); |
| stmt.setDate(6, date == null ? null : new Date(date.getTime() + MILLIS_IN_DAY * 2)); |
| stmt.setBigDecimal(7, null); |
| stmt.setNull(8, Types.BIGINT); |
| stmt.setNull(9, Types.INTEGER); |
| stmt.setNull(10, Types.INTEGER); |
| stmt.setByte(11, (byte)6); |
| stmt.setShort(12, (short) 133); |
| stmt.setFloat(13, 0.06f); |
| stmt.setDouble(14, 0.0006); |
| stmt.setFloat(15, 0.06f); |
| stmt.setDouble(16, 0.0006); |
| stmt.execute(); |
| |
| stmt.setString(1, tenantId); |
| stmt.setString(2, ROW7); |
| stmt.setString(3, B_VALUE); |
| stmt.setString(4, B_VALUE); |
| stmt.setInt(5, 7); |
| stmt.setDate(6, date == null ? null : date); |
| stmt.setBigDecimal(7, BigDecimal.valueOf(0.1)); |
| stmt.setLong(8, 5L); |
| stmt.setInt(9, 5); |
| stmt.setNull(10, Types.INTEGER); |
| stmt.setByte(11, (byte)7); |
| stmt.setShort(12, (short) 134); |
| stmt.setFloat(13, 0.07f); |
| stmt.setDouble(14, 0.0007); |
| stmt.setFloat(15, 0.07f); |
| stmt.setDouble(16, 0.0007); |
| stmt.execute(); |
| |
| stmt.setString(1, tenantId); |
| stmt.setString(2, ROW8); |
| stmt.setString(3, B_VALUE); |
| stmt.setString(4, C_VALUE); |
| stmt.setInt(5, 8); |
| stmt.setDate(6, date == null ? null : new Date(date.getTime() + MILLIS_IN_DAY * 1)); |
| stmt.setBigDecimal(7, BigDecimal.valueOf(3.9)); |
| long l = Integer.MIN_VALUE - 1L; |
| assert(l < Integer.MIN_VALUE); |
| stmt.setLong(8, l); |
| stmt.setInt(9, 4); |
| stmt.setNull(10, Types.INTEGER); |
| stmt.setByte(11, (byte)8); |
| stmt.setShort(12, (short) 135); |
| stmt.setFloat(13, 0.08f); |
| stmt.setDouble(14, 0.0008); |
| stmt.setFloat(15, 0.08f); |
| stmt.setDouble(16, 0.0008); |
| stmt.execute(); |
| |
| stmt.setString(1, tenantId); |
| stmt.setString(2, ROW9); |
| stmt.setString(3, C_VALUE); |
| stmt.setString(4, E_VALUE); |
| stmt.setInt(5, 9); |
| stmt.setDate(6, date == null ? null : new Date(date.getTime() + MILLIS_IN_DAY * 2)); |
| stmt.setBigDecimal(7, BigDecimal.valueOf(3.3)); |
| l = Integer.MAX_VALUE + 1L; |
| assert(l > Integer.MAX_VALUE); |
| stmt.setLong(8, l); |
| stmt.setInt(9, 3); |
| stmt.setInt(10, 300); |
| stmt.setByte(11, (byte)9); |
| stmt.setShort(12, (short) 0); |
| stmt.setFloat(13, 0.09f); |
| stmt.setDouble(14, 0.0009); |
| stmt.setFloat(15, 0.09f); |
| stmt.setDouble(16, 0.0009); |
| stmt.execute(); |
| } finally { |
| } |
| } |
| |
| protected String getExplainPlan(ResultSet rs) throws SQLException { |
| String output = ""; |
| try { |
| while (rs.next()) { |
| output += rs.getString(1); |
| output += '\n'; |
| } |
| } finally { |
| } |
| // System.out.println(output); |
| return output; |
| } |
| } |
| |