/* * Licensed 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 com.facebook.presto.tests.sqlserver; import com.google.common.collect.ImmutableList; import com.teradata.tempto.fulfillment.table.jdbc.RelationalDataSource; import com.teradata.tempto.fulfillment.table.jdbc.RelationalTableDefinition; import java.sql.Date; import java.sql.Timestamp; import java.util.Arrays; import java.util.List; import static com.facebook.presto.tests.sqlserver.TestConstants.CONNECTOR_NAME; public class SqlServerDataTypesTableDefinition { public static final RelationalTableDefinition SQLSERVER_ALL_TYPES; public static final RelationalTableDefinition SQLSERVER_INSERT; private SqlServerDataTypesTableDefinition() {} private static final String ALL_TYPES_TABLE_NAME = "all_types"; private static final String INSERT_TABLE_NAME = "insert_table"; private static final String ALL_TYPES_DDL = "CREATE TABLE %NAME% (bi bigint, si smallint, i int, ti tinyint, f float, r real," + "c char(4), vc varchar(6), te text, nc nchar(5), nvc nvarchar(7), nt text," + "d date, dt datetime, dt2 datetime2, sdt smalldatetime, pf30 float(30), pf22 float(22))"; private static final String INSERT_DDL = "CREATE TABLE %NAME% (bi bigint, si smallint, i int, f float," + "c char(4), vc varchar(6), " + "pf30 float(30), d date) "; static { RelationalDataSource dataSource = () -> { return ImmutableList.<List<Object>>of( ImmutableList.of(Long.MIN_VALUE, Short.MIN_VALUE, Integer.MIN_VALUE, Byte.MIN_VALUE, Double.MIN_VALUE, Float.valueOf("-3.40E+38"), "\0", "\0", "\0", "\0", "\0", "\0", Date.valueOf("0001-01-02"), Timestamp.valueOf("1753-01-01 00:00:00.000"), Timestamp.valueOf("0001-01-01 00:00:00.000"), Timestamp.valueOf("1900-01-01 00:00:00"), Double.MIN_VALUE, Float.valueOf("-3.40E+38")), ImmutableList.of(Long.MAX_VALUE, Short.MAX_VALUE, Integer.MAX_VALUE, Byte.MAX_VALUE, Double.MAX_VALUE, Float.MAX_VALUE, "abcd", "abcdef", "abcd", "abcde", "abcdefg", "abcd", Date.valueOf("9999-12-31"), Timestamp.valueOf("9999-12-31 23:59:59.997"), Timestamp.valueOf("9999-12-31 23:59:59.999"), Timestamp.valueOf("2079-06-05 23:59:59"), Double.valueOf("12345678912.3456756"), Float.valueOf("12345678.6557")), Arrays.asList(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null) ).iterator(); }; SQLSERVER_ALL_TYPES = RelationalTableDefinition.builder(ALL_TYPES_TABLE_NAME) .withDatabase(CONNECTOR_NAME) .setCreateTableDDLTemplate(ALL_TYPES_DDL) .setDataSource(dataSource) .build(); SQLSERVER_INSERT = RelationalTableDefinition.builder(INSERT_TABLE_NAME) .withDatabase(CONNECTOR_NAME) .setCreateTableDDLTemplate(INSERT_DDL) .setDataSource(() -> ImmutableList.<List<Object>>of().iterator() ) .build(); } }