/* * 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.cassandra; import com.datastax.driver.core.utils.Bytes; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.teradata.tempto.fulfillment.table.jdbc.RelationalDataSource; import com.teradata.tempto.internal.fulfillment.table.cassandra.CassandraTableDefinition; import java.math.BigDecimal; import java.math.BigInteger; import java.net.Inet4Address; import java.net.UnknownHostException; import java.sql.Timestamp; import java.util.Arrays; import java.util.List; import java.util.UUID; import static com.facebook.presto.tests.cassandra.TestConstants.CONNECTOR_NAME; import static com.facebook.presto.tests.cassandra.TestConstants.KEY_SPACE; public class DataTypesTableDefinition { public static final CassandraTableDefinition CASSANDRA_ALL_TYPES; private DataTypesTableDefinition() {} private static final String ALL_TYPES_TABLE_NAME = "all_types"; private static final String ALL_TYPES_DDL = "CREATE TABLE %NAME% (a ascii, b bigint, bl blob, bo boolean, d decimal, do double," + "f float, fr frozen<set<int>>, i inet, integer int, l list<int>, m map<text,int>," + "s set<int>, t text, ti timestamp, tu timeuuid, u uuid, v varchar, vari varint," + "PRIMARY KEY (a))"; static { RelationalDataSource dataSource = () -> { try { return ImmutableList.<List<Object>>of( ImmutableList.of("\0", Long.MIN_VALUE, Bytes.fromHexString("0x00"), false, BigDecimal.ZERO, Double.MIN_VALUE, Float.MIN_VALUE, ImmutableSet.of(0), Inet4Address.getByName("0.0.0.0"), Integer.MIN_VALUE, ImmutableList.of(0), ImmutableMap.of("a", 0, "\0", Integer.MIN_VALUE), ImmutableSet.of(0), "\0", new Timestamp(0), UUID.fromString("d2177dd0-eaa2-11de-a572-001b779c76e3"), UUID.fromString("01234567-0123-0123-0123-0123456789ab"), "\0", BigInteger.valueOf(Long.MIN_VALUE)), ImmutableList.of("the quick brown fox jumped over the lazy dog", Long.MAX_VALUE, Bytes.fromHexString("0x3031323334"), true, new BigDecimal(new Double("99999999999999999999999999999999999999")), Double.MAX_VALUE, Float.MAX_VALUE, ImmutableSet.of(4, 5, 6, 7), Inet4Address.getByName("255.255.255.255"), Integer.MAX_VALUE, ImmutableList.of(4, 5, 6), ImmutableMap.of("a", 1, "b", 2), ImmutableSet.of(4, 5, 6), "this is a text value", Timestamp.valueOf("9999-12-31 23:59:59"), UUID.fromString("d2177dd0-eaa2-11de-a572-001b779c76e3"), UUID.fromString("01234567-0123-0123-0123-0123456789ab"), "abc", BigInteger.valueOf(Long.MAX_VALUE)), Arrays.asList(new Object[] {"def", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null}) ).iterator(); } catch (UnknownHostException e) { return null; } }; CASSANDRA_ALL_TYPES = CassandraTableDefinition.cassandraBuilder(ALL_TYPES_TABLE_NAME) .withDatabase(CONNECTOR_NAME) .withSchema(KEY_SPACE) .setCreateTableDDLTemplate(ALL_TYPES_DDL) .setDataSource(dataSource) .build(); } }