diff --git data/files/key_value_struct.txt data/files/key_value_struct.txt new file mode 100644 index 0000000..43df264 --- /dev/null +++ data/files/key_value_struct.txt @@ -0,0 +1,5 @@ +key1value1 +key2value2 +key3value3 +key4value4 +key5value5 diff --git data/scripts/replace_tab_with_ctrlB data/scripts/replace_tab_with_ctrlB new file mode 100755 index 0000000..fc4c3df --- /dev/null +++ data/scripts/replace_tab_with_ctrlB @@ -0,0 +1,19 @@ +#! /bin/bash +# +# 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. + +# This script replaces all tabs to CTRL+B characters +sed "s@ @@" diff --git ql/src/test/queries/clientpositive/struct_equivalence_test.q ql/src/test/queries/clientpositive/struct_equivalence_test.q new file mode 100644 index 0000000..b86179a --- /dev/null +++ ql/src/test/queries/clientpositive/struct_equivalence_test.q @@ -0,0 +1,16 @@ +DROP TABLE table1; +DROP TABLE table2; + +CREATE TABLE table1 (info STRUCT); +CREATE TABLE table2 (info STRUCT); + +LOAD DATA LOCAL INPATH '../data/files/key_value_struct.txt' +OVERWRITE INTO TABLE table1; + +FROM (SELECT info.keyData, info.valueData FROM table1) S +INSERT OVERWRITE TABLE table2 +REDUCE * USING '../data/scripts/replace_tab_with_ctrlB' +AS (info STRUCT); + +DROP TABLE table1; +DROP TABLE table2; diff --git ql/src/test/results/clientpositive/struct_equivalence_test.q.out ql/src/test/results/clientpositive/struct_equivalence_test.q.out new file mode 100644 index 0000000..9f63a63 --- /dev/null +++ ql/src/test/results/clientpositive/struct_equivalence_test.q.out @@ -0,0 +1,52 @@ +PREHOOK: query: DROP TABLE table1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE table1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE table2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE table2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE table1 (info STRUCT) +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE TABLE table1 (info STRUCT) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@table1 +PREHOOK: query: CREATE TABLE table2 (info STRUCT) +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE TABLE table2 (info STRUCT) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@table2 +PREHOOK: query: LOAD DATA LOCAL INPATH '../data/files/key_value_struct.txt' +OVERWRITE INTO TABLE table1 +PREHOOK: type: LOAD +POSTHOOK: query: LOAD DATA LOCAL INPATH '../data/files/key_value_struct.txt' +OVERWRITE INTO TABLE table1 +POSTHOOK: type: LOAD +POSTHOOK: Output: default@table1 +PREHOOK: query: FROM (SELECT info.keyData, info.valueData FROM table1) S +INSERT OVERWRITE TABLE table2 +REDUCE * USING '../data/scripts/replace_tab_with_ctrlB' +AS (info STRUCT) +PREHOOK: type: QUERY +PREHOOK: Input: default@table1 +PREHOOK: Output: default@table2 +POSTHOOK: query: FROM (SELECT info.keyData, info.valueData FROM table1) S +INSERT OVERWRITE TABLE table2 +REDUCE * USING '../data/scripts/replace_tab_with_ctrlB' +AS (info STRUCT) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@table1 +POSTHOOK: Output: default@table2 +POSTHOOK: Lineage: table2.info SCRIPT [(table1)table1.FieldSchema(name:info, type:struct, comment:null), ] +PREHOOK: query: DROP TABLE table1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE table1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Output: default@table1 +POSTHOOK: Lineage: table2.info SCRIPT [(table1)table1.FieldSchema(name:info, type:struct, comment:null), ] +PREHOOK: query: DROP TABLE table2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE table2 +POSTHOOK: type: DROPTABLE +POSTHOOK: Output: default@table2 +POSTHOOK: Lineage: table2.info SCRIPT [(table1)table1.FieldSchema(name:info, type:struct, comment:null), ]