blob: 9ad0a65cc4d96b5c1e7732d76dc887bcacadacbd [file] [log] [blame]
/*
* 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.beam.sdk.extensions.sql.zetasql;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import org.apache.beam.sdk.extensions.sql.impl.utils.CalciteUtils.DateType;
import org.apache.beam.sdk.extensions.sql.impl.utils.CalciteUtils.TimeType;
import org.apache.beam.sdk.extensions.sql.meta.provider.test.TestBoundedTable;
import org.apache.beam.sdk.schemas.Schema;
import org.apache.beam.sdk.schemas.Schema.FieldType;
import org.apache.beam.sdk.values.Row;
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.ImmutableList;
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.ImmutableMap;
/** TestInput. */
class TestInput {
public static final FieldType DATE = FieldType.logicalType(new DateType());
public static final FieldType TIME = FieldType.logicalType(new TimeType());
public static final TestBoundedTable BASIC_TABLE_ONE =
TestBoundedTable.of(
Schema.builder()
.addInt64Field("Key")
.addStringField("Value")
.addDateTimeField("ts")
.build())
.addRows(
14L,
"KeyValue234",
DateTimeUtils.parseTimestampWithUTCTimeZone("2018-07-01 21:26:06"),
15L,
"KeyValue235",
DateTimeUtils.parseTimestampWithUTCTimeZone("2018-07-01 21:26:07"));
public static final TestBoundedTable BASIC_TABLE_TWO =
TestBoundedTable.of(
Schema.builder()
.addInt64Field("RowKey")
.addStringField("Value")
.addDateTimeField("ts")
.build())
.addRows(
15L,
"BigTable235",
DateTimeUtils.parseTimestampWithUTCTimeZone("2018-07-01 21:26:07"),
16L,
"BigTable236",
DateTimeUtils.parseTimestampWithUTCTimeZone("2018-07-01 21:26:08"));
public static final TestBoundedTable BASIC_TABLE_THREE =
TestBoundedTable.of(Schema.builder().addInt64Field("ColId").addStringField("Value").build())
.addRows(15L, "Spanner235", 16L, "Spanner236", 17L, "Spanner237");
public static final TestBoundedTable AGGREGATE_TABLE_ONE =
TestBoundedTable.of(
Schema.builder()
.addInt64Field("Key")
.addInt64Field("Key2")
.addInt64Field("f_int_1")
.addStringField("f_str_1")
.addDoubleField("f_double_1")
.build())
.addRows(1L, 10L, 1L, "1", 1.0)
.addRows(1L, 11L, 2L, "2", 2.0)
.addRows(2L, 11L, 3L, "3", 3.0)
.addRows(2L, 11L, 4L, "4", 4.0)
.addRows(2L, 12L, 5L, "5", 5.0)
.addRows(3L, 13L, 6L, "6", 6.0)
.addRows(3L, 13L, 7L, "7", 7.0);
public static final TestBoundedTable AGGREGATE_TABLE_TWO =
TestBoundedTable.of(
Schema.builder()
.addInt64Field("Key")
.addInt64Field("Key2")
.addInt64Field("f_int_1")
.addStringField("f_str_1")
.build())
.addRows(1L, 10L, 1L, "1")
.addRows(2L, 11L, 3L, "3")
.addRows(2L, 11L, 4L, "4")
.addRows(2L, 12L, 5L, "5")
.addRows(2L, 13L, 6L, "6")
.addRows(3L, 13L, 7L, "7");
public static final TestBoundedTable TABLE_ALL_TYPES =
TestBoundedTable.of(
Schema.builder()
.addInt64Field("row_id")
.addBooleanField("bool_col")
.addInt64Field("int64_col")
.addDoubleField("double_col")
.addStringField("str_col")
.addByteArrayField("bytes_col")
.build())
.addRows(1L, true, -1L, 0.125d, "1", stringToBytes("1"))
.addRows(2L, false, -2L, Math.pow(0.1, 324.0), "2", stringToBytes("2"))
.addRows(3L, true, -3L, 0.375d, "3", stringToBytes("3"))
.addRows(4L, false, -4L, 0.5d, "4", stringToBytes("4"))
.addRows(5L, false, -5L, 0.5d, "5", stringToBytes("5"));
public static final TestBoundedTable TABLE_ALL_TYPES_2 =
TestBoundedTable.of(
Schema.builder()
.addInt64Field("row_id")
.addBooleanField("bool_col")
.addInt64Field("int64_col")
.addDoubleField("double_col")
.addStringField("str_col")
.addByteArrayField("bytes_col")
.build())
.addRows(6L, true, -6L, 0.125d, "6", stringToBytes("6"))
.addRows(7L, false, -7L, Math.pow(0.1, 324.0), "7", stringToBytes("7"))
.addRows(8L, true, -8L, 0.375d, "8", stringToBytes("8"))
.addRows(9L, false, -9L, 0.5d, "9", stringToBytes("9"))
.addRows(10L, false, -10L, 0.5d, "10", stringToBytes("10"));
public static final TestBoundedTable TIMESTAMP_TABLE_ONE =
TestBoundedTable.of(Schema.builder().addDateTimeField("ts").addInt64Field("value").build())
.addRows(
DateTimeUtils.parseTimestampWithUTCTimeZone("2018-07-01 21:26:06"),
3L,
DateTimeUtils.parseTimestampWithUTCTimeZone("2018-07-01 21:26:07"),
4L,
DateTimeUtils.parseTimestampWithUTCTimeZone("2018-07-01 21:26:08"),
6L,
DateTimeUtils.parseTimestampWithUTCTimeZone("2018-07-01 21:26:09"),
7L);
public static final TestBoundedTable TIMESTAMP_TABLE_TWO =
TestBoundedTable.of(Schema.builder().addDateTimeField("ts").addInt64Field("value").build())
.addRows(
DateTimeUtils.parseTimestampWithUTCTimeZone("2018-07-01 21:26:06"),
3L,
DateTimeUtils.parseTimestampWithUTCTimeZone("2018-07-01 21:26:07"),
4L,
DateTimeUtils.parseTimestampWithUTCTimeZone("2018-07-01 21:26:12"),
6L,
DateTimeUtils.parseTimestampWithUTCTimeZone("2018-07-01 21:26:13"),
7L);
public static final TestBoundedTable TIME_TABLE =
TestBoundedTable.of(
Schema.builder()
.addNullableField("f_date", DATE)
.addNullableField("f_time", TIME)
.addNullableField("f_timestamp", FieldType.DATETIME)
.addNullableField("f_timestamp_with_time_zone", FieldType.DATETIME)
.build())
.addRows(
DateTimeUtils.parseTimestampWithUTCTimeZone("2018-07-11 00:00:00"),
DateTimeUtils.parseTimestampWithUTCTimeZone("1970-01-01 12:33:59.348"),
DateTimeUtils.parseTimestampWithUTCTimeZone("2018-12-20 23:59:59.999"),
DateTimeUtils.parseTimestampWithTimeZone("2018-12-10 10:38:59-1000"));
public static final TestBoundedTable TABLE_ALL_NULL =
TestBoundedTable.of(
Schema.builder()
.addNullableField("primary_key", FieldType.INT64)
.addNullableField("bool_val", FieldType.BOOLEAN)
.addNullableField("double_val", FieldType.DOUBLE)
.addNullableField("int64_val", FieldType.INT64)
.addNullableField("str_val", FieldType.STRING)
.build())
.addRows(1L, null, null, null, null);
public static final Schema TABLE_WITH_STRUCT_ROW_SCHEMA =
Schema.builder().addInt32Field("struct_col_int").addStringField("struct_col_str").build();
public static final TestBoundedTable TABLE_WITH_STRUCT =
TestBoundedTable.of(
Schema.builder()
.addField("id", FieldType.INT64)
.addField("struct_col", FieldType.row(TABLE_WITH_STRUCT_ROW_SCHEMA))
.build())
.addRows(
1L,
Row.withSchema(TABLE_WITH_STRUCT_ROW_SCHEMA).addValues(16, "row_one").build(),
2L,
Row.withSchema(TABLE_WITH_STRUCT_ROW_SCHEMA).addValues(17, "row_two").build());
public static final TestBoundedTable TABLE_WITH_STRUCT_TIMESTAMP_STRING =
TestBoundedTable.of(
Schema.builder()
.addField("struct_col", FieldType.row(TABLE_WITH_STRUCT_ROW_SCHEMA))
.build())
.addRows(
Row.withSchema(TABLE_WITH_STRUCT_ROW_SCHEMA)
.addValues(3, "2019-01-15 13:21:03")
.build());
private static final Schema structSchema =
Schema.builder().addInt64Field("row_id").addStringField("data").build();
private static final Schema structTableSchema =
Schema.builder().addRowField("rowCol", structSchema).build();
public static final TestBoundedTable TABLE_WITH_STRUCT_TWO =
TestBoundedTable.of(structTableSchema)
.addRows(Row.withSchema(structSchema).addValues(1L, "data1").build())
.addRows(Row.withSchema(structSchema).addValues(2L, "data2").build())
.addRows(Row.withSchema(structSchema).addValues(3L, "data2").build())
.addRows(Row.withSchema(structSchema).addValues(3L, "data3").build());
public static final TestBoundedTable TABLE_WITH_ARRAY =
TestBoundedTable.of(Schema.builder().addArrayField("array_col", FieldType.STRING).build())
.addRows(Arrays.asList("1", "2", "3"), ImmutableList.of());
public static final TestBoundedTable TABLE_WITH_ARRAY_FOR_UNNEST =
TestBoundedTable.of(
Schema.builder()
.addInt64Field("int_col")
.addArrayField("int_array_col", FieldType.INT64)
.build())
.addRows(14L, Arrays.asList(14L, 18L))
.addRows(18L, Arrays.asList(22L, 24L));
public static final TestBoundedTable TABLE_FOR_CASE_WHEN =
TestBoundedTable.of(
Schema.builder().addInt64Field("f_int").addStringField("f_string").build())
.addRows(1L, "20181018");
public static final TestBoundedTable TABLE_EMPTY =
TestBoundedTable.of(Schema.builder().addInt64Field("ColId").addStringField("Value").build());
private static final Schema TABLE_WTH_MAP_SCHEMA =
Schema.builder()
.addMapField("map_field", FieldType.STRING, FieldType.STRING)
.addRowField("row_field", structSchema)
.build();
public static final TestBoundedTable TABLE_WITH_MAP =
TestBoundedTable.of(TABLE_WTH_MAP_SCHEMA)
.addRows(
ImmutableMap.of("MAP_KEY_1", "MAP_VALUE_1"),
Row.withSchema(structSchema).addValues(1L, "data1").build());
public static byte[] stringToBytes(String s) {
return s.getBytes(StandardCharsets.UTF_8);
}
}