blob: 0d916a93d70c2d5fb37963395ebead6f25efaec2 [file] [log] [blame]
-- ORCA uses functions (e.g. vswprintf) to translation to wide character
-- format. But those libraries may fail if the current locale cannot handle the
-- character set. This test checks that even when those libraries fail, ORCA is
-- still able to generate plans.
--
-- Create a database that sets the minimum locale
--
DROP DATABASE IF EXISTS test_locale;
CREATE DATABASE test_locale WITH LC_COLLATE='C' LC_CTYPE='C' TEMPLATE=template0;
\c test_locale
--
-- drop/add/remove columns
--
CREATE TABLE hi_안녕세계 (a int, 안녕세계1 text, 안녕세계2 text, 안녕세계3 text) DISTRIBUTED BY (a);
ALTER TABLE hi_안녕세계 DROP COLUMN 안녕세계2;
ALTER TABLE hi_안녕세계 ADD COLUMN 안녕세계2_ADD_COLUMN text;
ALTER TABLE hi_안녕세계 RENAME COLUMN 안녕세계3 TO こんにちわ3;
INSERT INTO hi_안녕세계 VALUES(1, '안녕세계1 first', '안녕세2 first', '안녕세계3 first');
INSERT INTO hi_안녕세계 VALUES(42, '안녕세계1 second', '안녕세2 second', '안녕세계3 second');
--
-- Try various queries containing multibyte character set and check the column
-- name output
--
SET optimizer_trace_fallback=on;
-- DELETE
DELETE FROM hi_안녕세계 WHERE a=42;
-- UPDATE
UPDATE hi_안녕세계 SET 안녕세계1='안녕세계1 first UPDATE' WHERE 안녕세계1='안녕세계1 first';
-- SELECT
SELECT * FROM hi_안녕세계;
a | 안녕세계1 | こんにちわ3 | 안녕세계2_add_column
---+------------------------+---------------+----------------------
1 | 안녕세계1 first UPDATE | 안녕세2 first | 안녕세계3 first
(1 row)
SELECT 안녕세계1 || こんにちわ3 FROM hi_안녕세계;
?column?
-------------------------------------
안녕세계1 first UPDATE안녕세2 first
(1 row)
-- SELECT ALIAS
SELECT 안녕세계1 AS 안녕세계1_Alias FROM hi_안녕세계;
안녕세계1_alias
------------------------
안녕세계1 first UPDATE
(1 row)
-- SUBQUERY
SELECT * FROM (SELECT 안녕세계1 FROM hi_안녕세계) t;
안녕세계1
------------------------
안녕세계1 first UPDATE
(1 row)
SELECT (SELECT こんにちわ3 FROM hi_안녕세계) FROM (SELECT 1) AS q;
こんにちわ3
---------------
안녕세2 first
(1 row)
SELECT (SELECT (SELECT こんにちわ3 FROM hi_안녕세계) FROM hi_안녕세계) FROM (SELECT 1) AS q;
こんにちわ3
---------------
안녕세2 first
(1 row)
-- CTE
WITH cte AS
(SELECT 안녕세계1, こんにちわ3 FROM hi_안녕세계) SELECT * FROM cte WHERE 안녕세계1 LIKE '안녕세계1%';
안녕세계1 | こんにちわ3
------------------------+---------------
안녕세계1 first UPDATE | 안녕세2 first
(1 row)
WITH cte(안녕세계x, こんにちわx) AS
(SELECT 안녕세계1, こんにちわ3 FROM hi_안녕세계) SELECT * FROM cte WHERE 안녕세계x LIKE '안녕세계1%';
안녕세계x | こんにちわx
------------------------+---------------
안녕세계1 first UPDATE | 안녕세2 first
(1 row)
-- JOIN
SELECT * FROM hi_안녕세계 hi_안녕세계1, hi_안녕세계 hi_안녕세계2 WHERE hi_안녕세계1.안녕세계1 LIKE '%UPDATE';
a | 안녕세계1 | こんにちわ3 | 안녕세계2_add_column | a | 안녕세계1 | こんにちわ3 | 안녕세계2_add_column
---+------------------------+---------------+----------------------+---+------------------------+---------------+----------------------
1 | 안녕세계1 first UPDATE | 안녕세2 first | 안녕세계3 first | 1 | 안녕세계1 first UPDATE | 안녕세2 first | 안녕세계3 first
(1 row)
RESET optimizer_trace_fallback;