Files
dennis zhuang 1f91422bae feat!: improve mysql/pg compatibility (#7315)
* feat(mysql): add SHOW WARNINGS support and return warnings for unsupported SET variables

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* feat(function): add MySQL IF() function and PostgreSQL description functions for connector compatibility

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* fix: show tables for mysql

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* fix: partitions table in information_schema and add starrocks external catalog compatibility

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* refactor: async udf

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* fix: set warnings

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* feat: impl pg_my_temp_schema and make description functions simple

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* test: add test for issue 7313

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* feat: apply suggestions

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* fix: partition_expression and partition_description

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* fix: test

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* fix: unit tests

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* fix: saerch_path only works for pg

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* feat: improve warnings processing

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* fix: warnings while writing affected rows and refactor

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* chore: improve ShobjDescriptionFunction signature

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* refactor: array_to_boolean

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

---------

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-01 20:41:14 +00:00

63 lines
1.0 KiB
SQL

CREATE TABLE t(a INTEGER, ts timestamp time index);
INSERT INTO t VALUES (1, 1), (null, 2), (3, 3);
SELECT ISNULL(a) from t;
SELECT ISNULL(null);
SELECT ISNULL(1);
SELECT ISNULL(-1);
SELECT ISNULL(1.0);
SELECT ISNULL(true);
SELECT ISNULL('string');
SELECT FIRST_VALUE(1);
SELECT FIRST_VALUE('a');
SELECT LAST_VALUE(1);
SELECT LAST_VALUE('a');
-- MySQL-compatible IF function tests
SELECT IF(true, 'yes', 'no');
SELECT IF(false, 'yes', 'no');
SELECT IF(NULL, 'yes', 'no');
SELECT IF(1, 'yes', 'no');
SELECT IF(0, 'yes', 'no');
SELECT IF(-1, 'yes', 'no');
SELECT IF(1.5, 'yes', 'no');
SELECT IF(0.0, 'yes', 'no');
-- Test with table column
SELECT IF(a > 1, 'greater', 'not greater') FROM t;
-- Test numeric return types
SELECT IF(true, 100, 200);
SELECT IF(false, 100, 200);
-- Test with IFNULL (should already work via DataFusion)
SELECT IFNULL(NULL, 'default');
SELECT IFNULL('value', 'default');
-- Test COALESCE (should already work via DataFusion)
SELECT COALESCE(NULL, NULL, 'third');
SELECT COALESCE('first', 'second');
DROP TABLE t;