|
44 | 44 | ("SELECT 1 FROM testdata.tweets WHERE str_timestamp || '.000000' == CAST(ts_timestamp AS VARCHAR)", 100000, 1, None), |
45 | 45 | ("SELECT 1 FROM testdata.tweets WHERE CAST(int_timestamp * 1_000_000 AS TIMESTAMP) == ts_timestamp", 100000, 1, None), |
46 | 46 |
|
| 47 | + # Additional CAST edge cases - NULL handling |
| 48 | + ("SELECT CAST(NULL AS INTEGER)", 1, 1, None), |
| 49 | + ("SELECT CAST(NULL AS VARCHAR)", 1, 1, None), |
| 50 | + ("SELECT CAST(NULL AS DOUBLE)", 1, 1, None), |
| 51 | + ("SELECT CAST(NULL AS BOOLEAN)", 1, 1, None), |
| 52 | + ("SELECT CAST(NULL AS TIMESTAMP)", 1, 1, None), |
| 53 | + |
| 54 | + # BOOLEAN casts |
| 55 | + ("SELECT CAST(1 AS BOOLEAN)", 1, 1, None), |
| 56 | + ("SELECT CAST(0 AS BOOLEAN)", 1, 1, None), |
| 57 | + ("SELECT CAST('true' AS BOOLEAN)", 1, 1, None), |
| 58 | + ("SELECT CAST('false' AS BOOLEAN)", 1, 1, None), |
| 59 | + ("SELECT CAST(TRUE AS VARCHAR)", 1, 1, None), |
| 60 | + ("SELECT CAST(FALSE AS VARCHAR)", 1, 1, None), |
| 61 | + ("SELECT CAST(TRUE AS INTEGER)", 1, 1, None), |
| 62 | + ("SELECT CAST(FALSE AS INTEGER)", 1, 1, None), |
| 63 | + |
| 64 | + # VARCHAR casts with special characters |
| 65 | + ("SELECT CAST('hello world' AS VARCHAR)", 1, 1, None), |
| 66 | + ("SELECT CAST('123' AS INTEGER)", 1, 1, None), |
| 67 | + ("SELECT CAST('123.456' AS DOUBLE)", 1, 1, None), |
| 68 | + ("SELECT CAST('2023-01-01' AS TIMESTAMP)", 1, 1, None), |
| 69 | + |
| 70 | + # Numeric edge cases |
| 71 | + ("SELECT CAST(0 AS VARCHAR)", 1, 1, None), |
| 72 | + ("SELECT CAST(-0 AS VARCHAR)", 1, 1, None), |
| 73 | + ("SELECT CAST(0.0 AS VARCHAR)", 1, 1, None), |
| 74 | + ("SELECT CAST(-0.0 AS VARCHAR)", 1, 1, None), |
| 75 | + |
| 76 | + # Large numbers |
| 77 | + ("SELECT CAST(999999999999 AS VARCHAR)", 1, 1, None), |
| 78 | + ("SELECT CAST(-999999999999 AS VARCHAR)", 1, 1, None), |
| 79 | + ("SELECT CAST(1.7976931348623157e+308 AS VARCHAR)", 1, 1, None), |
| 80 | + |
| 81 | + # Scientific notation |
| 82 | + ("SELECT CAST('1e10' AS DOUBLE)", 1, 1, None), |
| 83 | + ("SELECT CAST('1.5e-5' AS DOUBLE)", 1, 1, None), |
| 84 | + ("SELECT CAST('-2.5e3' AS DOUBLE)", 1, 1, None), |
| 85 | + |
| 86 | + # Empty string casts |
| 87 | + ("SELECT CAST('' AS VARCHAR)", 1, 1, None), |
| 88 | + ("SELECT CAST('' AS BLOB)", 1, 1, None), |
| 89 | + |
| 90 | + # Special numeric values (these may need adjustment based on engine support) |
| 91 | + # ("SELECT CAST('inf' AS DOUBLE)", 1, 1, None), |
| 92 | + # ("SELECT CAST('-inf' AS DOUBLE)", 1, 1, None), |
| 93 | + # ("SELECT CAST('nan' AS DOUBLE)", 1, 1, None), |
| 94 | + |
| 95 | + # Cross-type casting chains |
| 96 | + ("SELECT CAST(CAST(CAST(123 AS VARCHAR) AS INTEGER) AS DOUBLE)", 1, 1, None), |
| 97 | + ("SELECT CAST(CAST(CAST('456' AS INTEGER) AS DOUBLE) AS VARCHAR)", 1, 1, None), |
| 98 | + ("SELECT CAST(CAST(TRUE AS INTEGER) AS VARCHAR)", 1, 1, None), |
| 99 | + |
| 100 | + # BLOB/BINARY casts |
| 101 | + ("SELECT CAST('test' AS BLOB)", 1, 1, None), |
| 102 | + ("SELECT CAST(CAST('test' AS BLOB) AS VARCHAR)", 1, 1, None), |
| 103 | + |
47 | 104 | ] |
48 | 105 | # fmt:on |
49 | 106 |
|
|
0 commit comments