@@ -651,5 +651,64 @@ do_eqp_test subquery-10.2 {
651
651
# `--SEARCH t1 USING INDEX x12 (aa=?)
652
652
#
653
653
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}
654
713
655
714
finish_test
0 commit comments