blob: e8aba55b2eed08264258761462b2dc65241c4a12 [file] [log] [blame]
====
---- QUERY
INSERT INTO unsafe_insert(string_col) select 1.0 union select int_col from unsafe_insert;
---- CATCH
AnalysisException: Unsafe implicit cast is prohibited for non-const expression: int_col
====
---- QUERY
INSERT INTO unsafe_insert(string_col) select 1 union select int_col from unsafe_insert;
---- CATCH
AnalysisException: Unsafe implicit cast is prohibited for non-const expression: int_col
====
---- QUERY
INSERT INTO unsafe_insert(string_col) select int_col from unsafe_insert union select 1;
---- CATCH
AnalysisException: Unsafe implicit cast is prohibited for non-const expression: int_col
====
---- QUERY
INSERT INTO unsafe_insert(string_col) select 1 union select string_col from unsafe_insert;
---- CATCH
AnalysisException: Unsafe implicit cast is prohibited for non-const expression: string_col
====
---- QUERY
INSERT INTO unsafe_insert(string_col) select 1 union select 2;
====
---- QUERY
INSERT INTO unsafe_insert(string_col) select 1;
====
---- QUERY
INSERT INTO unsafe_insert(string_col) values (10.0);
---- CATCH
AnalysisException: Target table '$DATABASE.unsafe_insert' is incompatible with source expressions.
Expression '10.0' (type: DECIMAL(3,1)) is not compatible with column 'string_col' (type: STRING)
====
---- QUERY
INSERT INTO unsafe_insert(string_col) values (100), (1000), (1000.0);
---- CATCH
AnalysisException: Target table '$DATABASE.unsafe_insert' is incompatible with source expressions.
Expression '100' (type: DECIMAL(6,1)) is not compatible with column 'string_col' (type: STRING)
====
---- QUERY
INSERT INTO unsafe_insert(string_col) values (cast(100 as TINYINT));
====
---- QUERY
INSERT INTO unsafe_insert(string_col) values (cast(100 as SMALLINT));
====
---- QUERY
INSERT INTO unsafe_insert(string_col) values (cast(100 as FLOAT));
====
---- QUERY
INSERT INTO unsafe_insert(string_col) values (cast(100 as DOUBLE));
====
---- QUERY
INSERT INTO unsafe_insert(string_col) values (cast(100 as INT));
====
---- QUERY
INSERT INTO unsafe_insert(string_col) values (cast(100 as BIGINT));
====
---- QUERY
INSERT INTO unsafe_insert(varchar_col) values (cast(100 as TINYINT));
====
---- QUERY
INSERT INTO unsafe_insert(varchar_col) values (cast(100 as SMALLINT));
====
---- QUERY
INSERT INTO unsafe_insert(varchar_col) values (cast(100 as FLOAT));
====
---- QUERY
INSERT INTO unsafe_insert(varchar_col) values (cast(100 as DOUBLE));
====
---- QUERY
INSERT INTO unsafe_insert(varchar_col) values (cast(100 as INT));
====
---- QUERY
INSERT INTO unsafe_insert(varchar_col) values (cast(100 as BIGINT));
====
---- QUERY
INSERT INTO unsafe_insert(char_col) values (cast(100 as TINYINT));
====
---- QUERY
INSERT INTO unsafe_insert(char_col) values (cast(100 as SMALLINT));
====
---- QUERY
INSERT INTO unsafe_insert(char_col) values (cast(100 as FLOAT));
====
---- QUERY
INSERT INTO unsafe_insert(char_col) values (cast(100 as DOUBLE));
====
---- QUERY
INSERT INTO unsafe_insert(char_col) values (cast(100 as INT));
====
---- QUERY
INSERT INTO unsafe_insert(char_col) values (cast(100 as BIGINT));
====
---- QUERY
INSERT INTO unsafe_insert(float_col) values ("100");
====
---- QUERY
INSERT INTO unsafe_insert(bigint_col) values ("100");
====
---- QUERY
INSERT INTO unsafe_insert(smallint_col) values ("100");
====
---- QUERY
INSERT INTO unsafe_insert(tinyint_col) values ("100");
====
---- QUERY
INSERT INTO unsafe_insert(int_col) values ("100");
====
---- QUERY
INSERT INTO unsafe_insert(double_col) values ("100");
====
---- QUERY
INSERT INTO unsafe_insert(float_col) values (cast("100" as VARCHAR(10)));
====
---- QUERY
INSERT INTO unsafe_insert(bigint_col) values (cast("100" as VARCHAR(10)));
====
---- QUERY
INSERT INTO unsafe_insert(smallint_col) values (cast("100" as VARCHAR(10)));
====
---- QUERY
INSERT INTO unsafe_insert(tinyint_col) values (cast("100" as VARCHAR(10)));
====
---- QUERY
INSERT INTO unsafe_insert(int_col) values (cast("100" as VARCHAR(10)));
====
---- QUERY
INSERT INTO unsafe_insert(double_col) values (cast("100" as VARCHAR(10)));
====
---- QUERY
INSERT INTO unsafe_insert(float_col) values (cast("100" as CHAR(10)));
====
---- QUERY
INSERT INTO unsafe_insert(bigint_col) values (cast("100" as CHAR(10)));
====
---- QUERY
INSERT INTO unsafe_insert(smallint_col) values (cast("100" as CHAR(10)));
====
---- QUERY
INSERT INTO unsafe_insert(tinyint_col) values (cast("100" as CHAR(10)));
====
---- QUERY
INSERT INTO unsafe_insert(int_col) values (cast("100" as CHAR(10)));
====
---- QUERY
INSERT INTO unsafe_insert(double_col) values (cast("100" as CHAR(10)));
====
---- QUERY
INSERT INTO unsafe_insert(char_col) values (cast("100" as STRING));
====
---- QUERY
INSERT INTO unsafe_insert(varchar_col) values (cast("100" as STRING));
====
---- QUERY
INSERT INTO unsafe_insert(float_col) values ("100"), (15629);
====
---- QUERY
INSERT INTO unsafe_insert(bigint_col) select string_col from unsafe_insert;
---- CATCH
AnalysisException: Unsafe implicit cast is prohibited for non-const expression: string_col
====
---- QUERY
INSERT INTO unsafe_insert(string_col) select smallint_col from unsafe_insert;
---- CATCH
AnalysisException: Unsafe implicit cast is prohibited for non-const expression: smallint_col
====
---- QUERY
INSERT INTO unsafe_insert(tinyint_col) select string_col from unsafe_insert;
---- CATCH
AnalysisException: Unsafe implicit cast is prohibited for non-const expression: string_col
====
---- QUERY
INSERT INTO unsafe_insert(string_col) select tinyint_col from unsafe_insert;
---- CATCH
AnalysisException: Unsafe implicit cast is prohibited for non-const expression: tinyint_col
====
---- QUERY
INSERT INTO unsafe_insert(string_col) select int_col from unsafe_insert;
---- CATCH
AnalysisException: Unsafe implicit cast is prohibited for non-const expression: int_col
====
---- QUERY
INSERT INTO unsafe_insert(int_col) select string_col from unsafe_insert;
---- CATCH
AnalysisException: Unsafe implicit cast is prohibited for non-const expression: string_col
====
---- QUERY
INSERT INTO unsafe_insert(smallint_col) select string_col from unsafe_insert;
---- CATCH
AnalysisException: Unsafe implicit cast is prohibited for non-const expression: string_col
====
---- QUERY
INSERT INTO unsafe_insert(float_col) select string_col from unsafe_insert;
---- CATCH
AnalysisException: Unsafe implicit cast is prohibited for non-const expression: string_col
====
---- QUERY
INSERT INTO unsafe_insert(string_col) select double_col from unsafe_insert;
---- CATCH
AnalysisException: Unsafe implicit cast is prohibited for non-const expression: double_col
====
---- QUERY
INSERT INTO unsafe_insert(string_col) select bigint_col from unsafe_insert;
---- CATCH
AnalysisException: Unsafe implicit cast is prohibited for non-const expression: bigint_col
====
---- QUERY
INSERT INTO unsafe_insert(string_col) select float_col from unsafe_insert;
---- CATCH
AnalysisException: Unsafe implicit cast is prohibited for non-const expression: float_col
====
---- QUERY
INSERT INTO unsafe_insert(double_col) select string_col from unsafe_insert;
---- CATCH
AnalysisException: Unsafe implicit cast is prohibited for non-const expression: string_col
====
---- QUERY
# Mixing unsafe and regular compatibility on column level, unsafe union between 1 and "1"
# regular union between column 'string_col' and "100".
INSERT INTO unsafe_insert(int_col, string_col) select 1, string_col from unsafe_insert union select "1", "100";
====
---- QUERY
# Regression test for expression substitution on unsafe casts.
INSERT INTO unsafe_insert(int_col, string_col) select "1", "1" from unsafe_insert union select 1, "1";
====
---- QUERY
# Regression test for expression substitution on unsafe casts with partitioned tables.
INSERT INTO unsafe_insert_partitioned(int_col, string_col) values("1", null), (null, "1");
====