From d6f0507d305ef7b34750b1950e1934d8b28e8926 Mon Sep 17 00:00:00 2001 From: cyan-zheng Date: Thu, 25 Jun 2026 16:40:45 +0800 Subject: [PATCH 1/4] HIVE-29059: SHOW CREATE TABLE ignores all strings after tab character for views --- .../create/show/ShowCreateTableOperation.java | 2 +- .../show_create_table_tab_view.q | 46 ++++ .../llap/show_create_table_tab_view.q.out | 223 ++++++++++++++++++ 3 files changed, 270 insertions(+), 1 deletion(-) create mode 100644 ql/src/test/queries/clientpositive/show_create_table_tab_view.q create mode 100644 ql/src/test/results/clientpositive/llap/show_create_table_tab_view.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/create/show/ShowCreateTableOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/create/show/ShowCreateTableOperation.java index 7b8cc1f2ba49..6dec91cb174f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/create/show/ShowCreateTableOperation.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/create/show/ShowCreateTableOperation.java @@ -54,7 +54,7 @@ public int execute() throws HiveException { DDLPlanUtils ddlObj = new DDLPlanUtils(); String command; if (table.isView()) { - command = ddlObj.getCreateViewCommand(table, desc.isRelative()); + command = ddlObj.getCreateViewCommand(table, desc.isRelative()).replace("\t", "\\t"); } else { List commands = new ArrayList<>(); commands.add(ddlObj.getCreateTableCommand(table, desc.isRelative())); diff --git a/ql/src/test/queries/clientpositive/show_create_table_tab_view.q b/ql/src/test/queries/clientpositive/show_create_table_tab_view.q new file mode 100644 index 000000000000..fb149f52a29f --- /dev/null +++ b/ql/src/test/queries/clientpositive/show_create_table_tab_view.q @@ -0,0 +1,46 @@ +-- Test SHOW CREATE TABLE when view is expanded text contains a tab (HIVE-29059). +-- IDE may replace tabs with spaces during edit. +-- This test qfile requires actual tabs instead of soft tabs/spaces to function properly + +DROP VIEW IF EXISTS hive_29059_v; +DROP VIEW IF EXISTS hive_29059_v2; +DROP VIEW IF EXISTS hive_29059_v3; +DROP VIEW IF EXISTS hive_29059_v4; +DROP VIEW IF EXISTS hive_29059_v5; +DROP TABLE IF EXISTS hive_29059_src; +CREATE TABLE hive_29059_src (val1 string COMMENT 'val 1', + val2 string COMMENT 'val + 2', + val3 string); +INSERT INTO hive_29059_src VALUES ('a1', 'b1', 'c1'); + +-- Create view from source table with tab in the WHERE clause +CREATE VIEW hive_29059_v AS SELECT * FROM hive_29059_src + WHERE val1 = 'a1' + AND val2 = 'b1'; +SHOW CREATE TABLE hive_29059_v; + +-- Make sure show create table for non-view tables don't break +SHOW CREATE TABLE hive_29059_src; + +-- Create view with TAB in string literal +CREATE VIEW hive_29059_v2 AS SELECT 'before + after' AS col1; +SHOW CREATE TABLE hive_29059_v2; + +CREATE VIEW hive_29059_v3 AS SELECT ' a b c ' AS col1; +SHOW CREATE TABLE hive_29059_v3; + +CREATE VIEW hive_29059_v4 AS SELECT 'a\\tb\tc' AS col1; +SHOW CREATE TABLE hive_29059_v4; + +CREATE VIEW hive_29059_v5 AS SELECT val1 FROM hive_29059_src WHERE val1 LIKE 'a% '; +SHOW CREATE TABLE hive_29059_v5; + + +DROP VIEW IF EXISTS hive_29059_v; +DROP VIEW IF EXISTS hive_29059_v2; +DROP VIEW IF EXISTS hive_29059_v3; +DROP VIEW IF EXISTS hive_29059_v4; +DROP VIEW IF EXISTS hive_29059_v5; +DROP TABLE IF EXISTS hive_29059_src; diff --git a/ql/src/test/results/clientpositive/llap/show_create_table_tab_view.q.out b/ql/src/test/results/clientpositive/llap/show_create_table_tab_view.q.out new file mode 100644 index 000000000000..5e089ad9306d --- /dev/null +++ b/ql/src/test/results/clientpositive/llap/show_create_table_tab_view.q.out @@ -0,0 +1,223 @@ +PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v +PREHOOK: type: DROPVIEW +POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v +POSTHOOK: type: DROPVIEW +PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v2 +PREHOOK: type: DROPVIEW +POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v2 +POSTHOOK: type: DROPVIEW +PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v3 +PREHOOK: type: DROPVIEW +POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v3 +POSTHOOK: type: DROPVIEW +PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v4 +PREHOOK: type: DROPVIEW +POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v4 +POSTHOOK: type: DROPVIEW +PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v5 +PREHOOK: type: DROPVIEW +POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v5 +POSTHOOK: type: DROPVIEW +PREHOOK: query: DROP TABLE IF EXISTS hive_29059_src +PREHOOK: type: DROPTABLE +PREHOOK: Output: database:default +POSTHOOK: query: DROP TABLE IF EXISTS hive_29059_src +POSTHOOK: type: DROPTABLE +POSTHOOK: Output: database:default +PREHOOK: query: CREATE TABLE hive_29059_src (val1 string COMMENT 'val 1', + val2 string COMMENT 'val + 2', + val3 string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@hive_29059_src +POSTHOOK: query: CREATE TABLE hive_29059_src (val1 string COMMENT 'val 1', + val2 string COMMENT 'val + 2', + val3 string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@hive_29059_src +PREHOOK: query: INSERT INTO hive_29059_src VALUES ('a1', 'b1', 'c1') +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: default@hive_29059_src +POSTHOOK: query: INSERT INTO hive_29059_src VALUES ('a1', 'b1', 'c1') +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: default@hive_29059_src +POSTHOOK: Lineage: hive_29059_src.val1 SCRIPT [] +POSTHOOK: Lineage: hive_29059_src.val2 SCRIPT [] +POSTHOOK: Lineage: hive_29059_src.val3 SCRIPT [] +PREHOOK: query: CREATE VIEW hive_29059_v AS SELECT * FROM hive_29059_src + WHERE val1 = 'a1' + AND val2 = 'b1' +PREHOOK: type: CREATEVIEW +PREHOOK: Input: default@hive_29059_src +PREHOOK: Output: database:default +PREHOOK: Output: default@hive_29059_v +POSTHOOK: query: CREATE VIEW hive_29059_v AS SELECT * FROM hive_29059_src + WHERE val1 = 'a1' + AND val2 = 'b1' +POSTHOOK: type: CREATEVIEW +POSTHOOK: Input: default@hive_29059_src +POSTHOOK: Output: database:default +POSTHOOK: Output: default@hive_29059_v +POSTHOOK: Lineage: hive_29059_v.val1 SIMPLE [] +POSTHOOK: Lineage: hive_29059_v.val2 SIMPLE [] +POSTHOOK: Lineage: hive_29059_v.val3 SIMPLE [(hive_29059_src)hive_29059_src.FieldSchema(name:val3, type:string, comment:null), ] +PREHOOK: query: SHOW CREATE TABLE hive_29059_v +PREHOOK: type: SHOW_CREATETABLE +PREHOOK: Input: default@hive_29059_v +POSTHOOK: query: SHOW CREATE TABLE hive_29059_v +POSTHOOK: type: SHOW_CREATETABLE +POSTHOOK: Input: default@hive_29059_v +CREATE VIEW `hive_29059_v` AS SELECT `hive_29059_src`.`val1`, `hive_29059_src`.`val2`, `hive_29059_src`.`val3` FROM `default`.`hive_29059_src` +\tWHERE `hive_29059_src`.`val1`\t= 'a1' +\tAND `hive_29059_src`.`val2`\t= 'b1' +PREHOOK: query: SHOW CREATE TABLE hive_29059_src +PREHOOK: type: SHOW_CREATETABLE +PREHOOK: Input: default@hive_29059_src +POSTHOOK: query: SHOW CREATE TABLE hive_29059_src +POSTHOOK: type: SHOW_CREATETABLE +POSTHOOK: Input: default@hive_29059_src +CREATE TABLE `hive_29059_src`( + `val1` string COMMENT 'val\t1', + `val2` string COMMENT 'val\n 2', + `val3` string) +ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' +STORED AS INPUTFORMAT + 'org.apache.hadoop.mapred.TextInputFormat' +OUTPUTFORMAT + 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' +LOCATION +#### A masked pattern was here #### +TBLPROPERTIES ( + 'bucketing_version'='2', +#### A masked pattern was here #### +PREHOOK: query: CREATE VIEW hive_29059_v2 AS SELECT 'before + after' AS col1 +PREHOOK: type: CREATEVIEW +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: database:default +PREHOOK: Output: default@hive_29059_v2 +POSTHOOK: query: CREATE VIEW hive_29059_v2 AS SELECT 'before + after' AS col1 +POSTHOOK: type: CREATEVIEW +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: database:default +POSTHOOK: Output: default@hive_29059_v2 +POSTHOOK: Lineage: hive_29059_v2.col1 SIMPLE [] +PREHOOK: query: SHOW CREATE TABLE hive_29059_v2 +PREHOOK: type: SHOW_CREATETABLE +PREHOOK: Input: default@hive_29059_v2 +POSTHOOK: query: SHOW CREATE TABLE hive_29059_v2 +POSTHOOK: type: SHOW_CREATETABLE +POSTHOOK: Input: default@hive_29059_v2 +CREATE VIEW `hive_29059_v2` AS SELECT 'before +\tafter' AS `col1` +PREHOOK: query: CREATE VIEW hive_29059_v3 AS SELECT ' a b c ' AS col1 +PREHOOK: type: CREATEVIEW +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: database:default +PREHOOK: Output: default@hive_29059_v3 +POSTHOOK: query: CREATE VIEW hive_29059_v3 AS SELECT ' a b c ' AS col1 +POSTHOOK: type: CREATEVIEW +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: database:default +POSTHOOK: Output: default@hive_29059_v3 +POSTHOOK: Lineage: hive_29059_v3.col1 SIMPLE [] +PREHOOK: query: SHOW CREATE TABLE hive_29059_v3 +PREHOOK: type: SHOW_CREATETABLE +PREHOOK: Input: default@hive_29059_v3 +POSTHOOK: query: SHOW CREATE TABLE hive_29059_v3 +POSTHOOK: type: SHOW_CREATETABLE +POSTHOOK: Input: default@hive_29059_v3 +CREATE VIEW `hive_29059_v3` AS SELECT '\ta\t\tb \tc\t\t' AS `col1` +PREHOOK: query: CREATE VIEW hive_29059_v4 AS SELECT 'a\\tb\tc' AS col1 +PREHOOK: type: CREATEVIEW +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: database:default +PREHOOK: Output: default@hive_29059_v4 +POSTHOOK: query: CREATE VIEW hive_29059_v4 AS SELECT 'a\\tb\tc' AS col1 +POSTHOOK: type: CREATEVIEW +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: database:default +POSTHOOK: Output: default@hive_29059_v4 +POSTHOOK: Lineage: hive_29059_v4.col1 SIMPLE [] +PREHOOK: query: SHOW CREATE TABLE hive_29059_v4 +PREHOOK: type: SHOW_CREATETABLE +PREHOOK: Input: default@hive_29059_v4 +POSTHOOK: query: SHOW CREATE TABLE hive_29059_v4 +POSTHOOK: type: SHOW_CREATETABLE +POSTHOOK: Input: default@hive_29059_v4 +CREATE VIEW `hive_29059_v4` AS SELECT 'a\\tb\tc' AS `col1` +PREHOOK: query: CREATE VIEW hive_29059_v5 AS SELECT val1 FROM hive_29059_src WHERE val1 LIKE 'a% ' +PREHOOK: type: CREATEVIEW +PREHOOK: Input: default@hive_29059_src +PREHOOK: Output: database:default +PREHOOK: Output: default@hive_29059_v5 +POSTHOOK: query: CREATE VIEW hive_29059_v5 AS SELECT val1 FROM hive_29059_src WHERE val1 LIKE 'a% ' +POSTHOOK: type: CREATEVIEW +POSTHOOK: Input: default@hive_29059_src +POSTHOOK: Output: database:default +POSTHOOK: Output: default@hive_29059_v5 +POSTHOOK: Lineage: hive_29059_v5.val1 SIMPLE [(hive_29059_src)hive_29059_src.FieldSchema(name:val1, type:string, comment:val 1), ] +PREHOOK: query: SHOW CREATE TABLE hive_29059_v5 +PREHOOK: type: SHOW_CREATETABLE +PREHOOK: Input: default@hive_29059_v5 +POSTHOOK: query: SHOW CREATE TABLE hive_29059_v5 +POSTHOOK: type: SHOW_CREATETABLE +POSTHOOK: Input: default@hive_29059_v5 +CREATE VIEW `hive_29059_v5` AS SELECT `hive_29059_src`.`val1` FROM `default`.`hive_29059_src` WHERE `hive_29059_src`.`val1` LIKE 'a%\t' +PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v +PREHOOK: type: DROPVIEW +PREHOOK: Input: default@hive_29059_v +PREHOOK: Output: default@hive_29059_v +POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v +POSTHOOK: type: DROPVIEW +POSTHOOK: Input: default@hive_29059_v +POSTHOOK: Output: default@hive_29059_v +PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v2 +PREHOOK: type: DROPVIEW +PREHOOK: Input: default@hive_29059_v2 +PREHOOK: Output: default@hive_29059_v2 +POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v2 +POSTHOOK: type: DROPVIEW +POSTHOOK: Input: default@hive_29059_v2 +POSTHOOK: Output: default@hive_29059_v2 +PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v3 +PREHOOK: type: DROPVIEW +PREHOOK: Input: default@hive_29059_v3 +PREHOOK: Output: default@hive_29059_v3 +POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v3 +POSTHOOK: type: DROPVIEW +POSTHOOK: Input: default@hive_29059_v3 +POSTHOOK: Output: default@hive_29059_v3 +PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v4 +PREHOOK: type: DROPVIEW +PREHOOK: Input: default@hive_29059_v4 +PREHOOK: Output: default@hive_29059_v4 +POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v4 +POSTHOOK: type: DROPVIEW +POSTHOOK: Input: default@hive_29059_v4 +POSTHOOK: Output: default@hive_29059_v4 +PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v5 +PREHOOK: type: DROPVIEW +PREHOOK: Input: default@hive_29059_v5 +PREHOOK: Output: default@hive_29059_v5 +POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v5 +POSTHOOK: type: DROPVIEW +POSTHOOK: Input: default@hive_29059_v5 +POSTHOOK: Output: default@hive_29059_v5 +PREHOOK: query: DROP TABLE IF EXISTS hive_29059_src +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@hive_29059_src +PREHOOK: Output: database:default +PREHOOK: Output: default@hive_29059_src +POSTHOOK: query: DROP TABLE IF EXISTS hive_29059_src +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@hive_29059_src +POSTHOOK: Output: database:default +POSTHOOK: Output: default@hive_29059_src From 061c16425bb4fe37991639bd5360bcbe78b3c70f Mon Sep 17 00:00:00 2001 From: cyan-zheng Date: Mon, 29 Jun 2026 11:33:44 +1000 Subject: [PATCH 2/4] HIVE-29059: address review feedbacks on show_create_table_tab_view.q testcases --- .../resources/testconfiguration.properties | 1 + .../show_create_table_tab_view.q | 44 +--- .../llap/show_create_table_tab_view.q.out | 226 ++++++------------ 3 files changed, 89 insertions(+), 182 deletions(-) diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index b4441518a64a..d94f5d99d1b3 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -177,6 +177,7 @@ minillap.query.files=\ script_pipe.q,\ scriptfile1.q,\ select_transform_hint.q,\ + show_create_table_tab_view.q,\ skip_header_footer_aggr.q,\ skip_header_footer_proj.q,\ str_to_map.q,\ diff --git a/ql/src/test/queries/clientpositive/show_create_table_tab_view.q b/ql/src/test/queries/clientpositive/show_create_table_tab_view.q index fb149f52a29f..5605c05c9476 100644 --- a/ql/src/test/queries/clientpositive/show_create_table_tab_view.q +++ b/ql/src/test/queries/clientpositive/show_create_table_tab_view.q @@ -1,46 +1,28 @@ --- Test SHOW CREATE TABLE when view is expanded text contains a tab (HIVE-29059). --- IDE may replace tabs with spaces during edit. --- This test qfile requires actual tabs instead of soft tabs/spaces to function properly - -DROP VIEW IF EXISTS hive_29059_v; -DROP VIEW IF EXISTS hive_29059_v2; -DROP VIEW IF EXISTS hive_29059_v3; -DROP VIEW IF EXISTS hive_29059_v4; -DROP VIEW IF EXISTS hive_29059_v5; -DROP TABLE IF EXISTS hive_29059_src; -CREATE TABLE hive_29059_src (val1 string COMMENT 'val 1', +CREATE TABLE showcrt_tab_src (val1 string COMMENT 'val 1', val2 string COMMENT 'val 2', val3 string); -INSERT INTO hive_29059_src VALUES ('a1', 'b1', 'c1'); +INSERT INTO showcrt_tab_src VALUES ('a1', 'b1', 'c1'); -- Create view from source table with tab in the WHERE clause -CREATE VIEW hive_29059_v AS SELECT * FROM hive_29059_src +CREATE VIEW showcrt_tab_src_v AS SELECT * FROM showcrt_tab_src WHERE val1 = 'a1' AND val2 = 'b1'; -SHOW CREATE TABLE hive_29059_v; +SHOW CREATE TABLE showcrt_tab_src_v; -- Make sure show create table for non-view tables don't break -SHOW CREATE TABLE hive_29059_src; +SHOW CREATE TABLE showcrt_tab_src; -- Create view with TAB in string literal -CREATE VIEW hive_29059_v2 AS SELECT 'before +CREATE VIEW showcrt_tab_src_v2 AS SELECT 'before after' AS col1; -SHOW CREATE TABLE hive_29059_v2; - -CREATE VIEW hive_29059_v3 AS SELECT ' a b c ' AS col1; -SHOW CREATE TABLE hive_29059_v3; - -CREATE VIEW hive_29059_v4 AS SELECT 'a\\tb\tc' AS col1; -SHOW CREATE TABLE hive_29059_v4; +SHOW CREATE TABLE showcrt_tab_src_v2; -CREATE VIEW hive_29059_v5 AS SELECT val1 FROM hive_29059_src WHERE val1 LIKE 'a% '; -SHOW CREATE TABLE hive_29059_v5; +CREATE VIEW showcrt_tab_src_v3 AS SELECT ' a b c ' AS col1; +SHOW CREATE TABLE showcrt_tab_src_v3; +CREATE VIEW showcrt_tab_src_v4 AS SELECT 'a\\tb\tc' AS col1; +SHOW CREATE TABLE showcrt_tab_src_v4; -DROP VIEW IF EXISTS hive_29059_v; -DROP VIEW IF EXISTS hive_29059_v2; -DROP VIEW IF EXISTS hive_29059_v3; -DROP VIEW IF EXISTS hive_29059_v4; -DROP VIEW IF EXISTS hive_29059_v5; -DROP TABLE IF EXISTS hive_29059_src; +CREATE VIEW showcrt_tab_src_v5 AS SELECT val1 FROM showcrt_tab_src WHERE val1 LIKE 'a% '; +SHOW CREATE TABLE showcrt_tab_src_v5; diff --git a/ql/src/test/results/clientpositive/llap/show_create_table_tab_view.q.out b/ql/src/test/results/clientpositive/llap/show_create_table_tab_view.q.out index 5e089ad9306d..df41a147cf17 100644 --- a/ql/src/test/results/clientpositive/llap/show_create_table_tab_view.q.out +++ b/ql/src/test/results/clientpositive/llap/show_create_table_tab_view.q.out @@ -1,87 +1,61 @@ -PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v -PREHOOK: type: DROPVIEW -POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v -POSTHOOK: type: DROPVIEW -PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v2 -PREHOOK: type: DROPVIEW -POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v2 -POSTHOOK: type: DROPVIEW -PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v3 -PREHOOK: type: DROPVIEW -POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v3 -POSTHOOK: type: DROPVIEW -PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v4 -PREHOOK: type: DROPVIEW -POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v4 -POSTHOOK: type: DROPVIEW -PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v5 -PREHOOK: type: DROPVIEW -POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v5 -POSTHOOK: type: DROPVIEW -PREHOOK: query: DROP TABLE IF EXISTS hive_29059_src -PREHOOK: type: DROPTABLE -PREHOOK: Output: database:default -POSTHOOK: query: DROP TABLE IF EXISTS hive_29059_src -POSTHOOK: type: DROPTABLE -POSTHOOK: Output: database:default -PREHOOK: query: CREATE TABLE hive_29059_src (val1 string COMMENT 'val 1', +PREHOOK: query: CREATE TABLE showcrt_tab_src (val1 string COMMENT 'val 1', val2 string COMMENT 'val 2', val3 string) PREHOOK: type: CREATETABLE PREHOOK: Output: database:default -PREHOOK: Output: default@hive_29059_src -POSTHOOK: query: CREATE TABLE hive_29059_src (val1 string COMMENT 'val 1', +PREHOOK: Output: default@showcrt_tab_src +POSTHOOK: query: CREATE TABLE showcrt_tab_src (val1 string COMMENT 'val 1', val2 string COMMENT 'val 2', val3 string) POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default -POSTHOOK: Output: default@hive_29059_src -PREHOOK: query: INSERT INTO hive_29059_src VALUES ('a1', 'b1', 'c1') +POSTHOOK: Output: default@showcrt_tab_src +PREHOOK: query: INSERT INTO showcrt_tab_src VALUES ('a1', 'b1', 'c1') PREHOOK: type: QUERY PREHOOK: Input: _dummy_database@_dummy_table -PREHOOK: Output: default@hive_29059_src -POSTHOOK: query: INSERT INTO hive_29059_src VALUES ('a1', 'b1', 'c1') +PREHOOK: Output: default@showcrt_tab_src +POSTHOOK: query: INSERT INTO showcrt_tab_src VALUES ('a1', 'b1', 'c1') POSTHOOK: type: QUERY POSTHOOK: Input: _dummy_database@_dummy_table -POSTHOOK: Output: default@hive_29059_src -POSTHOOK: Lineage: hive_29059_src.val1 SCRIPT [] -POSTHOOK: Lineage: hive_29059_src.val2 SCRIPT [] -POSTHOOK: Lineage: hive_29059_src.val3 SCRIPT [] -PREHOOK: query: CREATE VIEW hive_29059_v AS SELECT * FROM hive_29059_src +POSTHOOK: Output: default@showcrt_tab_src +POSTHOOK: Lineage: showcrt_tab_src.val1 SCRIPT [] +POSTHOOK: Lineage: showcrt_tab_src.val2 SCRIPT [] +POSTHOOK: Lineage: showcrt_tab_src.val3 SCRIPT [] +PREHOOK: query: CREATE VIEW showcrt_tab_src_v AS SELECT * FROM showcrt_tab_src WHERE val1 = 'a1' AND val2 = 'b1' PREHOOK: type: CREATEVIEW -PREHOOK: Input: default@hive_29059_src +PREHOOK: Input: default@showcrt_tab_src PREHOOK: Output: database:default -PREHOOK: Output: default@hive_29059_v -POSTHOOK: query: CREATE VIEW hive_29059_v AS SELECT * FROM hive_29059_src +PREHOOK: Output: default@showcrt_tab_src_v +POSTHOOK: query: CREATE VIEW showcrt_tab_src_v AS SELECT * FROM showcrt_tab_src WHERE val1 = 'a1' AND val2 = 'b1' POSTHOOK: type: CREATEVIEW -POSTHOOK: Input: default@hive_29059_src +POSTHOOK: Input: default@showcrt_tab_src POSTHOOK: Output: database:default -POSTHOOK: Output: default@hive_29059_v -POSTHOOK: Lineage: hive_29059_v.val1 SIMPLE [] -POSTHOOK: Lineage: hive_29059_v.val2 SIMPLE [] -POSTHOOK: Lineage: hive_29059_v.val3 SIMPLE [(hive_29059_src)hive_29059_src.FieldSchema(name:val3, type:string, comment:null), ] -PREHOOK: query: SHOW CREATE TABLE hive_29059_v +POSTHOOK: Output: default@showcrt_tab_src_v +POSTHOOK: Lineage: showcrt_tab_src_v.val1 SIMPLE [] +POSTHOOK: Lineage: showcrt_tab_src_v.val2 SIMPLE [] +POSTHOOK: Lineage: showcrt_tab_src_v.val3 SIMPLE [(showcrt_tab_src)showcrt_tab_src.FieldSchema(name:val3, type:string, comment:null), ] +PREHOOK: query: SHOW CREATE TABLE showcrt_tab_src_v PREHOOK: type: SHOW_CREATETABLE -PREHOOK: Input: default@hive_29059_v -POSTHOOK: query: SHOW CREATE TABLE hive_29059_v +PREHOOK: Input: default@showcrt_tab_src_v +POSTHOOK: query: SHOW CREATE TABLE showcrt_tab_src_v POSTHOOK: type: SHOW_CREATETABLE -POSTHOOK: Input: default@hive_29059_v -CREATE VIEW `hive_29059_v` AS SELECT `hive_29059_src`.`val1`, `hive_29059_src`.`val2`, `hive_29059_src`.`val3` FROM `default`.`hive_29059_src` -\tWHERE `hive_29059_src`.`val1`\t= 'a1' -\tAND `hive_29059_src`.`val2`\t= 'b1' -PREHOOK: query: SHOW CREATE TABLE hive_29059_src +POSTHOOK: Input: default@showcrt_tab_src_v +CREATE VIEW `showcrt_tab_src_v` AS SELECT `showcrt_tab_src`.`val1`, `showcrt_tab_src`.`val2`, `showcrt_tab_src`.`val3` FROM `default`.`showcrt_tab_src` +\tWHERE `showcrt_tab_src`.`val1`\t= 'a1' +\tAND `showcrt_tab_src`.`val2`\t= 'b1' +PREHOOK: query: SHOW CREATE TABLE showcrt_tab_src PREHOOK: type: SHOW_CREATETABLE -PREHOOK: Input: default@hive_29059_src -POSTHOOK: query: SHOW CREATE TABLE hive_29059_src +PREHOOK: Input: default@showcrt_tab_src +POSTHOOK: query: SHOW CREATE TABLE showcrt_tab_src POSTHOOK: type: SHOW_CREATETABLE -POSTHOOK: Input: default@hive_29059_src -CREATE TABLE `hive_29059_src`( +POSTHOOK: Input: default@showcrt_tab_src +CREATE TABLE `showcrt_tab_src`( `val1` string COMMENT 'val\t1', `val2` string COMMENT 'val\n 2', `val3` string) @@ -92,132 +66,82 @@ STORED AS INPUTFORMAT OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION -#### A masked pattern was here #### + 'hdfs://### HDFS PATH ###' TBLPROPERTIES ( 'bucketing_version'='2', #### A masked pattern was here #### -PREHOOK: query: CREATE VIEW hive_29059_v2 AS SELECT 'before +PREHOOK: query: CREATE VIEW showcrt_tab_src_v2 AS SELECT 'before after' AS col1 PREHOOK: type: CREATEVIEW PREHOOK: Input: _dummy_database@_dummy_table PREHOOK: Output: database:default -PREHOOK: Output: default@hive_29059_v2 -POSTHOOK: query: CREATE VIEW hive_29059_v2 AS SELECT 'before +PREHOOK: Output: default@showcrt_tab_src_v2 +POSTHOOK: query: CREATE VIEW showcrt_tab_src_v2 AS SELECT 'before after' AS col1 POSTHOOK: type: CREATEVIEW POSTHOOK: Input: _dummy_database@_dummy_table POSTHOOK: Output: database:default -POSTHOOK: Output: default@hive_29059_v2 -POSTHOOK: Lineage: hive_29059_v2.col1 SIMPLE [] -PREHOOK: query: SHOW CREATE TABLE hive_29059_v2 +POSTHOOK: Output: default@showcrt_tab_src_v2 +POSTHOOK: Lineage: showcrt_tab_src_v2.col1 SIMPLE [] +PREHOOK: query: SHOW CREATE TABLE showcrt_tab_src_v2 PREHOOK: type: SHOW_CREATETABLE -PREHOOK: Input: default@hive_29059_v2 -POSTHOOK: query: SHOW CREATE TABLE hive_29059_v2 +PREHOOK: Input: default@showcrt_tab_src_v2 +POSTHOOK: query: SHOW CREATE TABLE showcrt_tab_src_v2 POSTHOOK: type: SHOW_CREATETABLE -POSTHOOK: Input: default@hive_29059_v2 -CREATE VIEW `hive_29059_v2` AS SELECT 'before +POSTHOOK: Input: default@showcrt_tab_src_v2 +CREATE VIEW `showcrt_tab_src_v2` AS SELECT 'before \tafter' AS `col1` -PREHOOK: query: CREATE VIEW hive_29059_v3 AS SELECT ' a b c ' AS col1 +PREHOOK: query: CREATE VIEW showcrt_tab_src_v3 AS SELECT ' a b c ' AS col1 PREHOOK: type: CREATEVIEW PREHOOK: Input: _dummy_database@_dummy_table PREHOOK: Output: database:default -PREHOOK: Output: default@hive_29059_v3 -POSTHOOK: query: CREATE VIEW hive_29059_v3 AS SELECT ' a b c ' AS col1 +PREHOOK: Output: default@showcrt_tab_src_v3 +POSTHOOK: query: CREATE VIEW showcrt_tab_src_v3 AS SELECT ' a b c ' AS col1 POSTHOOK: type: CREATEVIEW POSTHOOK: Input: _dummy_database@_dummy_table POSTHOOK: Output: database:default -POSTHOOK: Output: default@hive_29059_v3 -POSTHOOK: Lineage: hive_29059_v3.col1 SIMPLE [] -PREHOOK: query: SHOW CREATE TABLE hive_29059_v3 +POSTHOOK: Output: default@showcrt_tab_src_v3 +POSTHOOK: Lineage: showcrt_tab_src_v3.col1 SIMPLE [] +PREHOOK: query: SHOW CREATE TABLE showcrt_tab_src_v3 PREHOOK: type: SHOW_CREATETABLE -PREHOOK: Input: default@hive_29059_v3 -POSTHOOK: query: SHOW CREATE TABLE hive_29059_v3 +PREHOOK: Input: default@showcrt_tab_src_v3 +POSTHOOK: query: SHOW CREATE TABLE showcrt_tab_src_v3 POSTHOOK: type: SHOW_CREATETABLE -POSTHOOK: Input: default@hive_29059_v3 -CREATE VIEW `hive_29059_v3` AS SELECT '\ta\t\tb \tc\t\t' AS `col1` -PREHOOK: query: CREATE VIEW hive_29059_v4 AS SELECT 'a\\tb\tc' AS col1 +POSTHOOK: Input: default@showcrt_tab_src_v3 +CREATE VIEW `showcrt_tab_src_v3` AS SELECT '\ta\t\tb \tc\t\t' AS `col1` +PREHOOK: query: CREATE VIEW showcrt_tab_src_v4 AS SELECT 'a\\tb\tc' AS col1 PREHOOK: type: CREATEVIEW PREHOOK: Input: _dummy_database@_dummy_table PREHOOK: Output: database:default -PREHOOK: Output: default@hive_29059_v4 -POSTHOOK: query: CREATE VIEW hive_29059_v4 AS SELECT 'a\\tb\tc' AS col1 +PREHOOK: Output: default@showcrt_tab_src_v4 +POSTHOOK: query: CREATE VIEW showcrt_tab_src_v4 AS SELECT 'a\\tb\tc' AS col1 POSTHOOK: type: CREATEVIEW POSTHOOK: Input: _dummy_database@_dummy_table POSTHOOK: Output: database:default -POSTHOOK: Output: default@hive_29059_v4 -POSTHOOK: Lineage: hive_29059_v4.col1 SIMPLE [] -PREHOOK: query: SHOW CREATE TABLE hive_29059_v4 +POSTHOOK: Output: default@showcrt_tab_src_v4 +POSTHOOK: Lineage: showcrt_tab_src_v4.col1 SIMPLE [] +PREHOOK: query: SHOW CREATE TABLE showcrt_tab_src_v4 PREHOOK: type: SHOW_CREATETABLE -PREHOOK: Input: default@hive_29059_v4 -POSTHOOK: query: SHOW CREATE TABLE hive_29059_v4 +PREHOOK: Input: default@showcrt_tab_src_v4 +POSTHOOK: query: SHOW CREATE TABLE showcrt_tab_src_v4 POSTHOOK: type: SHOW_CREATETABLE -POSTHOOK: Input: default@hive_29059_v4 -CREATE VIEW `hive_29059_v4` AS SELECT 'a\\tb\tc' AS `col1` -PREHOOK: query: CREATE VIEW hive_29059_v5 AS SELECT val1 FROM hive_29059_src WHERE val1 LIKE 'a% ' +POSTHOOK: Input: default@showcrt_tab_src_v4 +CREATE VIEW `showcrt_tab_src_v4` AS SELECT 'a\\tb\tc' AS `col1` +PREHOOK: query: CREATE VIEW showcrt_tab_src_v5 AS SELECT val1 FROM showcrt_tab_src WHERE val1 LIKE 'a% ' PREHOOK: type: CREATEVIEW -PREHOOK: Input: default@hive_29059_src +PREHOOK: Input: default@showcrt_tab_src PREHOOK: Output: database:default -PREHOOK: Output: default@hive_29059_v5 -POSTHOOK: query: CREATE VIEW hive_29059_v5 AS SELECT val1 FROM hive_29059_src WHERE val1 LIKE 'a% ' +PREHOOK: Output: default@showcrt_tab_src_v5 +POSTHOOK: query: CREATE VIEW showcrt_tab_src_v5 AS SELECT val1 FROM showcrt_tab_src WHERE val1 LIKE 'a% ' POSTHOOK: type: CREATEVIEW -POSTHOOK: Input: default@hive_29059_src +POSTHOOK: Input: default@showcrt_tab_src POSTHOOK: Output: database:default -POSTHOOK: Output: default@hive_29059_v5 -POSTHOOK: Lineage: hive_29059_v5.val1 SIMPLE [(hive_29059_src)hive_29059_src.FieldSchema(name:val1, type:string, comment:val 1), ] -PREHOOK: query: SHOW CREATE TABLE hive_29059_v5 +POSTHOOK: Output: default@showcrt_tab_src_v5 +POSTHOOK: Lineage: showcrt_tab_src_v5.val1 SIMPLE [(showcrt_tab_src)showcrt_tab_src.FieldSchema(name:val1, type:string, comment:val 1), ] +PREHOOK: query: SHOW CREATE TABLE showcrt_tab_src_v5 PREHOOK: type: SHOW_CREATETABLE -PREHOOK: Input: default@hive_29059_v5 -POSTHOOK: query: SHOW CREATE TABLE hive_29059_v5 +PREHOOK: Input: default@showcrt_tab_src_v5 +POSTHOOK: query: SHOW CREATE TABLE showcrt_tab_src_v5 POSTHOOK: type: SHOW_CREATETABLE -POSTHOOK: Input: default@hive_29059_v5 -CREATE VIEW `hive_29059_v5` AS SELECT `hive_29059_src`.`val1` FROM `default`.`hive_29059_src` WHERE `hive_29059_src`.`val1` LIKE 'a%\t' -PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v -PREHOOK: type: DROPVIEW -PREHOOK: Input: default@hive_29059_v -PREHOOK: Output: default@hive_29059_v -POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v -POSTHOOK: type: DROPVIEW -POSTHOOK: Input: default@hive_29059_v -POSTHOOK: Output: default@hive_29059_v -PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v2 -PREHOOK: type: DROPVIEW -PREHOOK: Input: default@hive_29059_v2 -PREHOOK: Output: default@hive_29059_v2 -POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v2 -POSTHOOK: type: DROPVIEW -POSTHOOK: Input: default@hive_29059_v2 -POSTHOOK: Output: default@hive_29059_v2 -PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v3 -PREHOOK: type: DROPVIEW -PREHOOK: Input: default@hive_29059_v3 -PREHOOK: Output: default@hive_29059_v3 -POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v3 -POSTHOOK: type: DROPVIEW -POSTHOOK: Input: default@hive_29059_v3 -POSTHOOK: Output: default@hive_29059_v3 -PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v4 -PREHOOK: type: DROPVIEW -PREHOOK: Input: default@hive_29059_v4 -PREHOOK: Output: default@hive_29059_v4 -POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v4 -POSTHOOK: type: DROPVIEW -POSTHOOK: Input: default@hive_29059_v4 -POSTHOOK: Output: default@hive_29059_v4 -PREHOOK: query: DROP VIEW IF EXISTS hive_29059_v5 -PREHOOK: type: DROPVIEW -PREHOOK: Input: default@hive_29059_v5 -PREHOOK: Output: default@hive_29059_v5 -POSTHOOK: query: DROP VIEW IF EXISTS hive_29059_v5 -POSTHOOK: type: DROPVIEW -POSTHOOK: Input: default@hive_29059_v5 -POSTHOOK: Output: default@hive_29059_v5 -PREHOOK: query: DROP TABLE IF EXISTS hive_29059_src -PREHOOK: type: DROPTABLE -PREHOOK: Input: default@hive_29059_src -PREHOOK: Output: database:default -PREHOOK: Output: default@hive_29059_src -POSTHOOK: query: DROP TABLE IF EXISTS hive_29059_src -POSTHOOK: type: DROPTABLE -POSTHOOK: Input: default@hive_29059_src -POSTHOOK: Output: database:default -POSTHOOK: Output: default@hive_29059_src +POSTHOOK: Input: default@showcrt_tab_src_v5 +CREATE VIEW `showcrt_tab_src_v5` AS SELECT `showcrt_tab_src`.`val1` FROM `default`.`showcrt_tab_src` WHERE `showcrt_tab_src`.`val1` LIKE 'a%\t' From ce7d3f281905990579a79a1c48ef172bf6439601 Mon Sep 17 00:00:00 2001 From: cyan-zheng Date: Mon, 29 Jun 2026 13:08:59 +1000 Subject: [PATCH 3/4] removed test file from testconfiguration.properties --- itests/src/test/resources/testconfiguration.properties | 1 - .../clientpositive/llap/show_create_table_tab_view.q.out | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index ca84411dd0d7..bfefc3b5f023 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -177,7 +177,6 @@ minillap.query.files=\ script_pipe.q,\ scriptfile1.q,\ select_transform_hint.q,\ - show_create_table_tab_view.q,\ skip_header_footer_aggr.q,\ skip_header_footer_proj.q,\ str_to_map.q,\ diff --git a/ql/src/test/results/clientpositive/llap/show_create_table_tab_view.q.out b/ql/src/test/results/clientpositive/llap/show_create_table_tab_view.q.out index df41a147cf17..b34b935d113c 100644 --- a/ql/src/test/results/clientpositive/llap/show_create_table_tab_view.q.out +++ b/ql/src/test/results/clientpositive/llap/show_create_table_tab_view.q.out @@ -66,7 +66,7 @@ STORED AS INPUTFORMAT OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION - 'hdfs://### HDFS PATH ###' +#### A masked pattern was here #### TBLPROPERTIES ( 'bucketing_version'='2', #### A masked pattern was here #### From 85562819c451301ee996f43208a188e9321a63c9 Mon Sep 17 00:00:00 2001 From: cyan-zheng Date: Tue, 30 Jun 2026 17:53:56 +1000 Subject: [PATCH 4/4] HIVE-29059: revised implementation of replacing tabs in string literals with \t and outside string literals with space, updated associated tests --- .../create/show/ShowCreateTableOperation.java | 37 ++++++++++++- .../show_create_table_tab_view.q | 11 +++- .../llap/show_create_table_tab_view.q.out | 52 ++++++++++++++++--- 3 files changed, 91 insertions(+), 9 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/create/show/ShowCreateTableOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/create/show/ShowCreateTableOperation.java index 6dec91cb174f..6a46151ad1ba 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/create/show/ShowCreateTableOperation.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/create/show/ShowCreateTableOperation.java @@ -54,7 +54,7 @@ public int execute() throws HiveException { DDLPlanUtils ddlObj = new DDLPlanUtils(); String command; if (table.isView()) { - command = ddlObj.getCreateViewCommand(table, desc.isRelative()).replace("\t", "\\t"); + command = escapeSqlTabs(ddlObj.getCreateViewCommand(table, desc.isRelative())); } else { List commands = new ArrayList<>(); commands.add(ddlObj.getCreateTableCommand(table, desc.isRelative())); @@ -74,4 +74,39 @@ public int execute() throws HiveException { throw new HiveException(e); } } + + private static String escapeSqlTabs(String sql) { + if (sql == null || sql.indexOf('\t') < 0) { + return sql; + } + StringBuilder result = new StringBuilder(sql.length()); + char quote = 0; + for (int i = 0; i < sql.length(); i++) { + char c = sql.charAt(i); + if (quote == 0) { // outside string literal + if (c == '\'' || c == '"') { + quote = c; + result.append(c); + } else if (c == '\t') { + result.append(' '); + } else { + result.append(c); + } + } else { // inside string literal + if (c == '\\' && i + 1 < sql.length()) { + result.append(c); + result.append(sql.charAt(i + 1)); + i++; + } else if (c == quote) { + quote = 0; + result.append(c); + } else if (c == '\t') { + result.append("\\t"); + } else { + result.append(c); + } + } + } + return result.toString(); + } } diff --git a/ql/src/test/queries/clientpositive/show_create_table_tab_view.q b/ql/src/test/queries/clientpositive/show_create_table_tab_view.q index 5605c05c9476..06c4fb25abac 100644 --- a/ql/src/test/queries/clientpositive/show_create_table_tab_view.q +++ b/ql/src/test/queries/clientpositive/show_create_table_tab_view.q @@ -2,14 +2,17 @@ CREATE TABLE showcrt_tab_src (val1 string COMMENT 'val 1', val2 string COMMENT 'val 2', val3 string); -INSERT INTO showcrt_tab_src VALUES ('a1', 'b1', 'c1'); +INSERT INTO showcrt_tab_src VALUES ('a1 ', 'b1', 'c1'); -- Create view from source table with tab in the WHERE clause CREATE VIEW showcrt_tab_src_v AS SELECT * FROM showcrt_tab_src - WHERE val1 = 'a1' + WHERE val1 = 'a1 ' AND val2 = 'b1'; SHOW CREATE TABLE showcrt_tab_src_v; +-- Pattern matching with tabs still need to return correct results +SELECT * FROM showcrt_tab_src_v; + -- Make sure show create table for non-view tables don't break SHOW CREATE TABLE showcrt_tab_src; @@ -26,3 +29,7 @@ SHOW CREATE TABLE showcrt_tab_src_v4; CREATE VIEW showcrt_tab_src_v5 AS SELECT val1 FROM showcrt_tab_src WHERE val1 LIKE 'a% '; SHOW CREATE TABLE showcrt_tab_src_v5; + +CREATE VIEW showcrt_tab_src_v6 AS SELECT "Nested 'string with tab' "; +SHOW CREATE TABLE showcrt_tab_src_v6; +SELECT * FROM showcrt_tab_src_v6; diff --git a/ql/src/test/results/clientpositive/llap/show_create_table_tab_view.q.out b/ql/src/test/results/clientpositive/llap/show_create_table_tab_view.q.out index b34b935d113c..30e4b0aefff7 100644 --- a/ql/src/test/results/clientpositive/llap/show_create_table_tab_view.q.out +++ b/ql/src/test/results/clientpositive/llap/show_create_table_tab_view.q.out @@ -12,11 +12,11 @@ POSTHOOK: query: CREATE TABLE showcrt_tab_src (val1 string COMMENT 'val 1', POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@showcrt_tab_src -PREHOOK: query: INSERT INTO showcrt_tab_src VALUES ('a1', 'b1', 'c1') +PREHOOK: query: INSERT INTO showcrt_tab_src VALUES ('a1 ', 'b1', 'c1') PREHOOK: type: QUERY PREHOOK: Input: _dummy_database@_dummy_table PREHOOK: Output: default@showcrt_tab_src -POSTHOOK: query: INSERT INTO showcrt_tab_src VALUES ('a1', 'b1', 'c1') +POSTHOOK: query: INSERT INTO showcrt_tab_src VALUES ('a1 ', 'b1', 'c1') POSTHOOK: type: QUERY POSTHOOK: Input: _dummy_database@_dummy_table POSTHOOK: Output: default@showcrt_tab_src @@ -24,14 +24,14 @@ POSTHOOK: Lineage: showcrt_tab_src.val1 SCRIPT [] POSTHOOK: Lineage: showcrt_tab_src.val2 SCRIPT [] POSTHOOK: Lineage: showcrt_tab_src.val3 SCRIPT [] PREHOOK: query: CREATE VIEW showcrt_tab_src_v AS SELECT * FROM showcrt_tab_src - WHERE val1 = 'a1' + WHERE val1 = 'a1 ' AND val2 = 'b1' PREHOOK: type: CREATEVIEW PREHOOK: Input: default@showcrt_tab_src PREHOOK: Output: database:default PREHOOK: Output: default@showcrt_tab_src_v POSTHOOK: query: CREATE VIEW showcrt_tab_src_v AS SELECT * FROM showcrt_tab_src - WHERE val1 = 'a1' + WHERE val1 = 'a1 ' AND val2 = 'b1' POSTHOOK: type: CREATEVIEW POSTHOOK: Input: default@showcrt_tab_src @@ -47,8 +47,19 @@ POSTHOOK: query: SHOW CREATE TABLE showcrt_tab_src_v POSTHOOK: type: SHOW_CREATETABLE POSTHOOK: Input: default@showcrt_tab_src_v CREATE VIEW `showcrt_tab_src_v` AS SELECT `showcrt_tab_src`.`val1`, `showcrt_tab_src`.`val2`, `showcrt_tab_src`.`val3` FROM `default`.`showcrt_tab_src` -\tWHERE `showcrt_tab_src`.`val1`\t= 'a1' -\tAND `showcrt_tab_src`.`val2`\t= 'b1' + WHERE `showcrt_tab_src`.`val1` = 'a1\t' + AND `showcrt_tab_src`.`val2` = 'b1' +PREHOOK: query: SELECT * FROM showcrt_tab_src_v +PREHOOK: type: QUERY +PREHOOK: Input: default@showcrt_tab_src +PREHOOK: Input: default@showcrt_tab_src_v +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM showcrt_tab_src_v +POSTHOOK: type: QUERY +POSTHOOK: Input: default@showcrt_tab_src +POSTHOOK: Input: default@showcrt_tab_src_v +#### A masked pattern was here #### +a1 b1 c1 PREHOOK: query: SHOW CREATE TABLE showcrt_tab_src PREHOOK: type: SHOW_CREATETABLE PREHOOK: Input: default@showcrt_tab_src @@ -145,3 +156,32 @@ POSTHOOK: query: SHOW CREATE TABLE showcrt_tab_src_v5 POSTHOOK: type: SHOW_CREATETABLE POSTHOOK: Input: default@showcrt_tab_src_v5 CREATE VIEW `showcrt_tab_src_v5` AS SELECT `showcrt_tab_src`.`val1` FROM `default`.`showcrt_tab_src` WHERE `showcrt_tab_src`.`val1` LIKE 'a%\t' +PREHOOK: query: CREATE VIEW showcrt_tab_src_v6 AS SELECT "Nested 'string with tab' " +PREHOOK: type: CREATEVIEW +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: database:default +PREHOOK: Output: default@showcrt_tab_src_v6 +POSTHOOK: query: CREATE VIEW showcrt_tab_src_v6 AS SELECT "Nested 'string with tab' " +POSTHOOK: type: CREATEVIEW +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: database:default +POSTHOOK: Output: default@showcrt_tab_src_v6 +POSTHOOK: Lineage: showcrt_tab_src_v6._c0 SIMPLE [] +PREHOOK: query: SHOW CREATE TABLE showcrt_tab_src_v6 +PREHOOK: type: SHOW_CREATETABLE +PREHOOK: Input: default@showcrt_tab_src_v6 +POSTHOOK: query: SHOW CREATE TABLE showcrt_tab_src_v6 +POSTHOOK: type: SHOW_CREATETABLE +POSTHOOK: Input: default@showcrt_tab_src_v6 +CREATE VIEW `showcrt_tab_src_v6` AS SELECT "Nested\t'string\twith\ttab' " +PREHOOK: query: SELECT * FROM showcrt_tab_src_v6 +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Input: default@showcrt_tab_src_v6 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM showcrt_tab_src_v6 +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Input: default@showcrt_tab_src_v6 +#### A masked pattern was here #### +Nested 'string with tab'