File: variant_extract_try_cast.test

package info (click to toggle)
duckdb 1.5.1-3
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 299,196 kB
  • sloc: cpp: 865,414; ansic: 57,292; python: 18,871; sql: 12,663; lisp: 11,751; yacc: 7,412; lex: 1,682; sh: 747; makefile: 564
file content (81 lines) | stat: -rw-r--r-- 1,429 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# name: test/sql/function/variant/variant_extract_try_cast.test
# group: [variant]

load __TEST_DIR__/variant_extract_try_cast.db readwrite v1.5.0

statement ok
SET variant_minimum_shredding_size = 0;

statement ok
create table tbl(col VARIANT);

statement ok
insert into tbl SELECT * FROM UNNEST([
	{'almost_a_number': c, 'a_number': CAST(TRY_CAST(c AS INT) AS VARCHAR)} for c in ['12', '24', '25a6', '24c', '16']
])

statement ok
checkpoint

restart

query I
from tbl order by all
----
{'a_number': NULL, 'almost_a_number': 24c}
{'a_number': NULL, 'almost_a_number': 25a6}
{'a_number': 12, 'almost_a_number': 12}
{'a_number': 16, 'almost_a_number': 16}
{'a_number': 24, 'almost_a_number': 24}

query I
select col.almost_a_number from tbl order by all
----
12
16
24
24c
25a6

# Can't use CAST
statement error
select col.almost_a_number::BIGINT from tbl order by all
----
Conversion Error

# Use TRY_CAST instead
query I
select TRY_CAST(col.almost_a_number AS BIGINT) from tbl order by all
----
12
16
24
NULL
NULL

query I
select col.a_number from tbl order by all
----
12
16
24
NULL
NULL

query I
select col.a_number::BIGINT from tbl order by all
----
12
16
24
NULL
NULL

statement ok
set explain_output='optimized_only';

# Very that the EXPLAIN plan doesn't contain a pushed down extract
query II
EXPLAIN select TRY_CAST(col.almost_a_number AS BIGINT) from tbl order by all
----
logical_opt	<REGEX>:.*Expressions:.*TRY_CAST.*