Skip to content

Commit b58e1dc

Browse files
authored
fix(query): avoid showing implicit scalar defaults in desc (#19779)
* fix(query): avoid showing implicit scalar defaults in desc * fix(test): update desc output expectations after removing implicit scalar defaults * fix(query): show NULL as default for all columns without explicit default Align with PG/MySQL/Snowflake behavior: when no explicit default is set, DESC shows NULL regardless of nullability.
1 parent 8641cd0 commit b58e1dc

12 files changed

Lines changed: 167 additions & 168 deletions

File tree

src/query/service/src/interpreters/util.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,7 @@ pub fn generate_desc_schema(
9797
}
9898

9999
None => {
100-
let value = Scalar::default_value(&field.data_type().into());
101-
default_exprs.push(value.to_string());
100+
default_exprs.push("NULL".to_string());
102101
}
103102
}
104103
let extra = match field.computed_expr() {

tests/sqllogictests/suites/base/03_common/03_0026_insert_into_tuple.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ create table t4 (a Tuple(Int, Int) not null)
9595
query TTTTT
9696
desc t4
9797
----
98-
a TUPLE(1 INT32, 2 INT32) NO (NULL, NULL) (empty)
98+
a TUPLE(1 INT32, 2 INT32) NO NULL (empty)
9999

100100
# decimal precision <=9, <=18, other are serialize to different underlying types.
101101
# decimal precision <=38 to Decimal128, >38 to Decimal256

tests/sqllogictests/suites/base/05_ddl/05_0000_ddl_create_tables.test

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ SELECT a+b FROM db2.test2
129129
query TTTTT
130130
DESCRIBE db2.test2
131131
----
132-
a INT NO 0 (empty)
132+
a INT NO NULL (empty)
133133
b INT YES NULL (empty)
134134

135135
statement ok
@@ -199,7 +199,7 @@ create table db2.test6(id Int8 not null, a Int8 not null DEFAULT 1 + 2, created
199199
query TTTTT
200200
desc db2.test6
201201
----
202-
id TINYINT NO 0 (empty)
202+
id TINYINT NO NULL (empty)
203203
a TINYINT NO 3 (empty)
204204
created TIMESTAMP NO now() (empty)
205205

@@ -220,53 +220,53 @@ create table db2.test7(tiny TINYINT(10) not null, tiny_unsigned TINYINT(10) UNSI
220220
query TTTTT
221221
desc db2.test7
222222
----
223-
tiny TINYINT NO 0 (empty)
224-
tiny_unsigned TINYINT UNSIGNED NO 0 (empty)
225-
smallint SMALLINT NO 0 (empty)
226-
smallint_unsigned SMALLINT UNSIGNED NO 0 (empty)
227-
int INT NO 0 (empty)
228-
int_unsigned INT UNSIGNED NO 0 (empty)
229-
bigint BIGINT NO 0 (empty)
230-
bigint_unsigned BIGINT UNSIGNED NO 0 (empty)
231-
float FLOAT NO 0 (empty)
232-
double DOUBLE NO 0 (empty)
233-
date DATE NO '1970-01-01' (empty)
234-
datetime TIMESTAMP NO '1970-01-01 00:00:00.000000' (empty)
235-
ts TIMESTAMP NO '1970-01-01 00:00:00.000000' (empty)
223+
tiny TINYINT NO NULL (empty)
224+
tiny_unsigned TINYINT UNSIGNED NO NULL (empty)
225+
smallint SMALLINT NO NULL (empty)
226+
smallint_unsigned SMALLINT UNSIGNED NO NULL (empty)
227+
int INT NO NULL (empty)
228+
int_unsigned INT UNSIGNED NO NULL (empty)
229+
bigint BIGINT NO NULL (empty)
230+
bigint_unsigned BIGINT UNSIGNED NO NULL (empty)
231+
float FLOAT NO NULL (empty)
232+
double DOUBLE NO NULL (empty)
233+
date DATE NO NULL (empty)
234+
datetime TIMESTAMP NO NULL (empty)
235+
ts TIMESTAMP NO NULL (empty)
236236
str VARCHAR NO '3' (empty)
237-
bool BOOLEAN NO false (empty)
238-
arr ARRAY(INT32) NO [] (empty)
239-
tup TUPLE(1 INT32, 2 BOOLEAN) NO (NULL, NULL) (empty)
240-
map MAP(INT32, STRING) NO {} (empty)
241-
bitmap BITMAP NO '' (empty)
242-
variant VARIANT NO 'null' (empty)
237+
bool BOOLEAN NO NULL (empty)
238+
arr ARRAY(INT32) NO NULL (empty)
239+
tup TUPLE(1 INT32, 2 BOOLEAN) NO NULL (empty)
240+
map MAP(INT32, STRING) NO NULL (empty)
241+
bitmap BITMAP NO NULL (empty)
242+
variant VARIANT NO NULL (empty)
243243

244244
statement ok
245245
create transient table db2.test8(tiny TINYINT not null, tiny_unsigned TINYINT UNSIGNED not null, smallint SMALLINT not null, smallint_unsigned SMALLINT UNSIGNED not null, int INT not null, int_unsigned INT UNSIGNED not null, bigint BIGINT not null, bigint_unsigned BIGINT UNSIGNED not null,float FLOAT not null, double DOUBLE not null, date DATE not null, datetime DATETIME not null, ts TIMESTAMP not null, str VARCHAR not null default '3', bool BOOLEAN not null, arr ARRAY(VARCHAR) not null, tup TUPLE(DOUBLE, INT) not null, map MAP(STRING, Date) not null, bitmap BITMAP not null, variant VARIANT not null)
246246

247247
query TTTTT
248248
desc db2.test8
249249
----
250-
tiny TINYINT NO 0 (empty)
251-
tiny_unsigned TINYINT UNSIGNED NO 0 (empty)
252-
smallint SMALLINT NO 0 (empty)
253-
smallint_unsigned SMALLINT UNSIGNED NO 0 (empty)
254-
int INT NO 0 (empty)
255-
int_unsigned INT UNSIGNED NO 0 (empty)
256-
bigint BIGINT NO 0 (empty)
257-
bigint_unsigned BIGINT UNSIGNED NO 0 (empty)
258-
float FLOAT NO 0 (empty)
259-
double DOUBLE NO 0 (empty)
260-
date DATE NO '1970-01-01' (empty)
261-
datetime TIMESTAMP NO '1970-01-01 00:00:00.000000' (empty)
262-
ts TIMESTAMP NO '1970-01-01 00:00:00.000000' (empty)
250+
tiny TINYINT NO NULL (empty)
251+
tiny_unsigned TINYINT UNSIGNED NO NULL (empty)
252+
smallint SMALLINT NO NULL (empty)
253+
smallint_unsigned SMALLINT UNSIGNED NO NULL (empty)
254+
int INT NO NULL (empty)
255+
int_unsigned INT UNSIGNED NO NULL (empty)
256+
bigint BIGINT NO NULL (empty)
257+
bigint_unsigned BIGINT UNSIGNED NO NULL (empty)
258+
float FLOAT NO NULL (empty)
259+
double DOUBLE NO NULL (empty)
260+
date DATE NO NULL (empty)
261+
datetime TIMESTAMP NO NULL (empty)
262+
ts TIMESTAMP NO NULL (empty)
263263
str VARCHAR NO '3' (empty)
264-
bool BOOLEAN NO false (empty)
265-
arr ARRAY(STRING) NO [] (empty)
266-
tup TUPLE(1 FLOAT64, 2 INT32) NO (NULL, NULL) (empty)
267-
map MAP(STRING, DATE) NO {} (empty)
268-
bitmap BITMAP NO '' (empty)
269-
variant VARIANT NO 'null' (empty)
264+
bool BOOLEAN NO NULL (empty)
265+
arr ARRAY(STRING) NO NULL (empty)
266+
tup TUPLE(1 FLOAT64, 2 INT32) NO NULL (empty)
267+
map MAP(STRING, DATE) NO NULL (empty)
268+
bitmap BITMAP NO NULL (empty)
269+
variant VARIANT NO NULL (empty)
270270

271271

272272
statement ok
@@ -662,7 +662,7 @@ create or replace table b as select 123 as col1, null as col2;
662662
query TTTTT
663663
desc b;
664664
----
665-
col1 TINYINT UNSIGNED NO 0 (empty)
665+
col1 TINYINT UNSIGNED NO NULL (empty)
666666
col2 VARCHAR YES NULL (empty)
667667

668668
query TT
@@ -698,7 +698,7 @@ create or replace table b as select 123 as col1;
698698
query TTTTT
699699
desc b;
700700
----
701-
col1 TINYINT UNSIGNED NO 0 (empty)
701+
col1 TINYINT UNSIGNED NO NULL (empty)
702702

703703
statement ok
704704
unset ddl_column_type_nullable;

tests/sqllogictests/suites/base/05_ddl/05_0019_ddl_create_view.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ create view tmp_view(c1, c2) as select number % 3 as a, avg(number) from numbers
102102
query TTTTT
103103
describe tmp_view
104104
----
105-
c1 TINYINT UNSIGNED NO 0 (empty)
105+
c1 TINYINT UNSIGNED NO NULL (empty)
106106
c2 DOUBLE YES NULL (empty)
107107

108108
statement error 1018

tests/sqllogictests/suites/base/05_ddl/05_0021_ddl_alter_view.test

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ SELECT * FROM tmp_view
2424
query TTTTT
2525
DESCRIBE tmp_view;
2626
----
27-
number BIGINT UNSIGNED NO 0 (empty)
27+
number BIGINT UNSIGNED NO NULL (empty)
2828

2929
statement ok
3030
ALTER VIEW tmp_view(c1) AS SELECT * from numbers(3)
3131

3232
query TTTTT
3333
DESCRIBE tmp_view;
3434
----
35-
c1 BIGINT UNSIGNED NO 0 (empty)
35+
c1 BIGINT UNSIGNED NO NULL (empty)
3636

3737
statement error 1018
3838
ALTER VIEW tmp_view(c1) AS SELECT number % 3 AS a, avg(number) FROM numbers(1000) GROUP BY a ORDER BY a

tests/sqllogictests/suites/base/05_ddl/05_0022_ddl_desc_view.test

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ DESCRIBE VIEW v
2020
a BIGINT YES NULL (empty)
2121
b INT YES NULL (empty)
2222
c VARCHAR YES NULL (empty)
23-
d SMALLINT NO 0 (empty)
24-
e DATE NO '1970-01-01' (empty)
23+
d SMALLINT NO NULL (empty)
24+
e DATE NO NULL (empty)
2525

2626
skipif mysql
2727
query TTTTT
@@ -30,8 +30,8 @@ DESC VIEW v
3030
a BIGINT YES NULL (empty)
3131
b INT YES NULL (empty)
3232
c VARCHAR YES NULL (empty)
33-
d SMALLINT NO 0 (empty)
34-
e DATE NO '1970-01-01' (empty)
33+
d SMALLINT NO NULL (empty)
34+
e DATE NO NULL (empty)
3535

3636

3737
statement ok
@@ -53,9 +53,9 @@ DESCRIBE VIEW v1
5353
a BIGINT YES NULL (empty)
5454
b INT YES NULL (empty)
5555
c VARCHAR YES NULL (empty)
56-
d SMALLINT NO 0 (empty)
57-
e DATE NO '1970-01-01' (empty)
58-
f VARCHAR NO '' (empty)
56+
d SMALLINT NO NULL (empty)
57+
e DATE NO NULL (empty)
58+
f VARCHAR NO NULL (empty)
5959

6060
skipif mysql
6161
query TTTTT
@@ -64,9 +64,9 @@ DESC VIEW v1
6464
a BIGINT YES NULL (empty)
6565
b INT YES NULL (empty)
6666
c VARCHAR YES NULL (empty)
67-
d SMALLINT NO 0 (empty)
68-
e DATE NO '1970-01-01' (empty)
69-
f VARCHAR NO '' (empty)
67+
d SMALLINT NO NULL (empty)
68+
e DATE NO NULL (empty)
69+
f VARCHAR NO NULL (empty)
7070

7171
query TIT
7272
select column_name, nullable, is_nullable from INFORMATION_SCHEMA.COLUMNS where table_name='tables_with_history' and column_name in ('num_rows', 'dropped_on') order by column_name

tests/sqllogictests/suites/base/06_show/06_0010_show_fields.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ CREATE TABLE t1(a INT not null)
1313
query TTTTT
1414
SHOW FIELDS FROM t1
1515
----
16-
a INT NO 0 (empty)
16+
a INT NO NULL (empty)
1717

1818
statement ok
1919
DROP DATABASE IF EXISTS ss

tests/sqllogictests/suites/base/11_data_type/11_0006_data_type_decimal.test

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -975,9 +975,9 @@ create table desc_decimal(c1 decimal(4,2) not null, c2 decimal(4,2) null, c3 dec
975975
query TTTTT
976976
desc desc_decimal
977977
----
978-
c1 DECIMAL(4, 2) NO 0.00 (empty)
978+
c1 DECIMAL(4, 2) NO NULL (empty)
979979
c2 DECIMAL(4, 2) YES NULL (empty)
980-
c3 DECIMAL(39, 2) NO 0.00 (empty)
980+
c3 DECIMAL(39, 2) NO NULL (empty)
981981
c4 DECIMAL(39, 2) YES NULL (empty)
982982

983983
statement ok

tests/sqllogictests/suites/base/20+_others/20_0000_describe_table.test

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,17 @@ DESCRIBE t
1313
a BIGINT YES NULL (empty)
1414
b INT YES NULL (empty)
1515
c VARCHAR YES NULL (empty)
16-
d SMALLINT NO 0 (empty)
17-
e DATE NO '1970-01-01' (empty)
16+
d SMALLINT NO NULL (empty)
17+
e DATE NO NULL (empty)
1818

1919
query TTTTT
2020
DESC t
2121
----
2222
a BIGINT YES NULL (empty)
2323
b INT YES NULL (empty)
2424
c VARCHAR YES NULL (empty)
25-
d SMALLINT NO 0 (empty)
26-
e DATE NO '1970-01-01' (empty)
25+
d SMALLINT NO NULL (empty)
26+
e DATE NO NULL (empty)
2727

2828
statement ok
2929
DROP TABLE IF EXISTS t1
@@ -37,8 +37,8 @@ DESCRIBE t1
3737
a BIGINT YES NULL (empty)
3838
b INT YES NULL (empty)
3939
c VARCHAR YES NULL (empty)
40-
d SMALLINT NO 0 (empty)
41-
e DATE NO '1970-01-01' (empty)
40+
d SMALLINT NO NULL (empty)
41+
e DATE NO NULL (empty)
4242
f VARCHAR NO '' (empty)
4343

4444
query TTTTT
@@ -47,25 +47,25 @@ DESC t1
4747
a BIGINT YES NULL (empty)
4848
b INT YES NULL (empty)
4949
c VARCHAR YES NULL (empty)
50-
d SMALLINT NO 0 (empty)
51-
e DATE NO '1970-01-01' (empty)
50+
d SMALLINT NO NULL (empty)
51+
e DATE NO NULL (empty)
5252
f VARCHAR NO '' (empty)
5353

5454
query TTTTT
5555
DESC INFORMATION_SCHEMA.COLUMNS
5656
----
57-
table_catalog VARCHAR NO '' (empty)
58-
table_schema VARCHAR NO '' (empty)
59-
table_name VARCHAR NO '' (empty)
60-
column_name VARCHAR NO '' (empty)
61-
ordinal_position TINYINT UNSIGNED NO 0 (empty)
57+
table_catalog VARCHAR NO NULL (empty)
58+
table_schema VARCHAR NO NULL (empty)
59+
table_name VARCHAR NO NULL (empty)
60+
column_name VARCHAR NO NULL (empty)
61+
ordinal_position TINYINT UNSIGNED NO NULL (empty)
6262
column_default NULL NO NULL (empty)
63-
column_comment VARCHAR NO '' (empty)
63+
column_comment VARCHAR NO NULL (empty)
6464
column_key NULL NO NULL (empty)
6565
nullable TINYINT UNSIGNED YES NULL (empty)
66-
is_nullable VARCHAR NO '' (empty)
67-
data_type VARCHAR NO '' (empty)
68-
column_type VARCHAR NO '' (empty)
66+
is_nullable VARCHAR NO NULL (empty)
67+
data_type VARCHAR NO NULL (empty)
68+
column_type VARCHAR NO NULL (empty)
6969
character_maximum_length SMALLINT UNSIGNED YES NULL (empty)
7070
character_octet_length SMALLINT UNSIGNED YES NULL (empty)
7171
numeric_precision NULL NO NULL (empty)
@@ -82,7 +82,7 @@ domain_catalog NULL NO NULL (empty)
8282
domain_schema NULL NO NULL (empty)
8383
domain_name NULL NO NULL (empty)
8484
privileges NULL NO NULL (empty)
85-
default VARCHAR NO '' (empty)
85+
default VARCHAR NO NULL (empty)
8686
extra NULL NO NULL (empty)
8787

8888
query TIT

0 commit comments

Comments
 (0)