@@ -651,5 +651,64 @@ do_eqp_test subquery-10.2 {
651651# `--SEARCH t1 USING INDEX x12 (aa=?)
652652#
653653
654+ #-----------------------------------------------------------------------------
655+ # 2024-04-25 Column affinities for columns of compound subqueries
656+ #
657+ reset_db
658+ sqlite3_test_control SQLITE_TESTCTRL_INTERNAL_FUNCTIONS db
659+ do_execsql_test subquery-11.1 {
660+ CREATE TABLE t1(ix INT, rx REAL, bx BLOB, tx TEXT, ax);
661+ INSERT INTO t1 VALUES(1,1.0,x'31','x',NULL);
662+ WITH c(a) AS (SELECT 'y' UNION SELECT tx FROM t1) SELECT affinity(a) FROM c;
663+ WITH c(a) AS (SELECT tx FROM t1 UNION SELECT 'y') SELECT affinity(a) FROM c;
664+ } {text text text text}
665+ do_execsql_test subquery-11.2 {
666+ WITH c(a) AS (SELECT 2 UNION SELECT tx FROM t1) SELECT affinity(a) FROM c;
667+ WITH c(a) AS (SELECT tx FROM t1 UNION SELECT 2) SELECT affinity(a) FROM c;
668+ } {blob blob blob blob}
669+ do_execsql_test subquery-11.3 {
670+ WITH c(a) AS (SELECT 2.0 UNION SELECT tx FROM t1) SELECT affinity(a) FROM c;
671+ WITH c(a) AS (SELECT tx FROM t1 UNION SELECT 2.0) SELECT affinity(a) FROM c;
672+ } {blob blob blob blob}
673+ do_execsql_test subquery-11.4 {
674+ WITH c(a) AS (SELECT null UNION SELECT tx FROM t1) SELECT affinity(a) FROM c;
675+ WITH c(a) AS (SELECT tx FROM t1 UNION SELECT null) SELECT affinity(a) FROM c;
676+ } {text text text text}
677+ do_execsql_test subquery-11.5 {
678+ WITH c(a) AS (SELECT x'32' UNION SELECT tx FROM t1) SELECT affinity(a) FROM c;
679+ WITH c(a) AS (SELECT tx FROM t1 UNION SELECT x'32') SELECT affinity(a) FROM c;
680+ } {text text text text}
681+ do_execsql_test subquery-11.6 {
682+ WITH c(a) AS (SELECT 3 UNION SELECT ix FROM t1) SELECT affinity(a) FROM c;
683+ WITH c(a) AS (SELECT ix FROM t1 UNION SELECT 3) SELECT affinity(a) FROM c;
684+ } {integer integer integer integer}
685+ do_execsql_test subquery-11.7 {
686+ WITH c(a) AS (SELECT 3.0 UNION SELECT ix FROM t1) SELECT affinity(a) FROM c;
687+ WITH c(a) AS (SELECT ix FROM t1 UNION SELECT 3.0) SELECT affinity(a) FROM c;
688+ } {integer integer integer integer}
689+ do_execsql_test subquery-11.8 {
690+ WITH c(a) AS (SELECT '3' UNION SELECT ix FROM t1) SELECT affinity(a) FROM c;
691+ WITH c(a) AS (SELECT ix FROM t1 UNION SELECT '3') SELECT affinity(a) FROM c;
692+ } {blob blob blob blob}
693+ do_execsql_test subquery-11.10 {
694+ WITH c(a) AS (SELECT x'32' UNION SELECT ix FROM t1) SELECT affinity(a) FROM c;
695+ WITH c(a) AS (SELECT ix FROM t1 UNION SELECT x'32') SELECT affinity(a) FROM c;
696+ } {integer integer integer integer}
697+ do_execsql_test subquery-11.11 {
698+ WITH c(a) AS (SELECT 4 UNION SELECT rx FROM t1) SELECT affinity(a) FROM c;
699+ WITH c(a) AS (SELECT rx FROM t1 UNION SELECT 4) SELECT affinity(a) FROM c;
700+ } {real real real real}
701+ do_execsql_test subquery-11.12 {
702+ WITH c(a) AS (SELECT '4' UNION SELECT rx FROM t1) SELECT affinity(a) FROM c;
703+ WITH c(a) AS (SELECT rx FROM t1 UNION SELECT '4') SELECT affinity(a) FROM c;
704+ } {blob blob blob blob}
705+ do_execsql_test subquery-11.13 {
706+ WITH c(a) AS (SELECT null UNION SELECT rx FROM t1) SELECT affinity(a) FROM c;
707+ WITH c(a) AS (SELECT rx FROM t1 UNION SELECT null) SELECT affinity(a) FROM c;
708+ } {real real real real}
709+ do_execsql_test subquery-11.14 {
710+ WITH c(a) AS (SELECT x'b4' UNION SELECT rx FROM t1) SELECT affinity(a) FROM c;
711+ WITH c(a) AS (SELECT rx FROM t1 UNION SELECT x'b4') SELECT affinity(a) FROM c;
712+ } {real real real real}
654713
655714finish_test
0 commit comments