@ -4,41 +4,41 @@
-- Simple UNION constructs
-- Simple UNION constructs
SELECT 1 AS two UNION SELECT 2 ;
SELECT 1 AS two UNION SELECT 2 ORDER BY 1 ;
SELECT 1 AS one UNION SELECT 1 ;
SELECT 1 AS one UNION SELECT 1 ORDER BY 1 ;
SELECT 1 AS two UNION ALL SELECT 2 ;
SELECT 1 AS two UNION ALL SELECT 2 ;
SELECT 1 AS two UNION ALL SELECT 1 ;
SELECT 1 AS two UNION ALL SELECT 1 ;
SELECT 1 AS three UNION SELECT 2 UNION SELECT 3 ;
SELECT 1 AS three UNION SELECT 2 UNION SELECT 3 ORDER BY 1 ;
SELECT 1 AS two UNION SELECT 2 UNION SELECT 2 ;
SELECT 1 AS two UNION SELECT 2 UNION SELECT 2 ORDER BY 1 ;
SELECT 1 AS three UNION SELECT 2 UNION ALL SELECT 2 ;
SELECT 1 AS three UNION SELECT 2 UNION ALL SELECT 2 ORDER BY 1 ;
SELECT 1 . 1 AS two UNION SELECT 2 . 2 ;
SELECT 1 . 1 AS two UNION SELECT 2 . 2 ORDER BY 1 ;
-- Mixed types
-- Mixed types
SELECT 1 . 1 AS two UNION SELECT 2 ;
SELECT 1 . 1 AS two UNION SELECT 2 ORDER BY 1 ;
SELECT 1 AS two UNION SELECT 2 . 2 ;
SELECT 1 AS two UNION SELECT 2 . 2 ORDER BY 1 ;
SELECT 1 AS one UNION SELECT 1 . 0 : : float8 ;
SELECT 1 AS one UNION SELECT 1 . 0 : : float8 ORDER BY 1 ;
SELECT 1 . 1 AS two UNION ALL SELECT 2 ;
SELECT 1 . 1 AS two UNION ALL SELECT 2 ORDER BY 1 ;
SELECT 1 . 0 : : float8 AS two UNION ALL SELECT 1 ;
SELECT 1 . 0 : : float8 AS two UNION ALL SELECT 1 ORDER BY 1 ;
SELECT 1 . 1 AS three UNION SELECT 2 UNION SELECT 3 ;
SELECT 1 . 1 AS three UNION SELECT 2 UNION SELECT 3 ORDER BY 1 ;
SELECT 1 . 1 : : float8 AS two UNION SELECT 2 UNION SELECT 2 . 0 : : float8 ORDER BY 1 ;
SELECT 1 . 1 : : float8 AS two UNION SELECT 2 UNION SELECT 2 . 0 : : float8 ORDER BY 1 ;
SELECT 1 . 1 AS three UNION SELECT 2 UNION ALL SELECT 2 ;
SELECT 1 . 1 AS three UNION SELECT 2 UNION ALL SELECT 2 ORDER BY 1 ;
SELECT 1 . 1 AS two UNION ( SELECT 2 UNION ALL SELECT 2 ) ;
SELECT 1 . 1 AS two UNION ( SELECT 2 UNION ALL SELECT 2 ) ORDER BY 1 ;
- -
- -
-- Try testing from tables...
-- Try testing from tables...
@ -66,7 +66,8 @@ SELECT f1 AS five FROM FLOAT8_TBL
WHERE f1 BETWEEN - 1 e6 AND 1 e6
WHERE f1 BETWEEN - 1 e6 AND 1 e6
UNION
UNION
SELECT f1 FROM INT4_TBL
SELECT f1 FROM INT4_TBL
WHERE f1 BETWEEN 0 AND 1000000 ;
WHERE f1 BETWEEN 0 AND 1000000
ORDER BY 1 ;
SELECT CAST ( f1 AS char ( 4 ) ) AS three FROM VARCHAR_TBL
SELECT CAST ( f1 AS char ( 4 ) ) AS three FROM VARCHAR_TBL
UNION
UNION
@ -93,9 +94,9 @@ ORDER BY 1;
-- INTERSECT and EXCEPT
-- INTERSECT and EXCEPT
- -
- -
SELECT q2 FROM int8_tbl INTERSECT SELECT q1 FROM int8_tbl ;
SELECT q2 FROM int8_tbl INTERSECT SELECT q1 FROM int8_tbl ORDER BY 1 ;
SELECT q2 FROM int8_tbl INTERSECT ALL SELECT q1 FROM int8_tbl ;
SELECT q2 FROM int8_tbl INTERSECT ALL SELECT q1 FROM int8_tbl ORDER BY 1 ;
SELECT q2 FROM int8_tbl EXCEPT SELECT q1 FROM int8_tbl ORDER BY 1 ;
SELECT q2 FROM int8_tbl EXCEPT SELECT q1 FROM int8_tbl ORDER BY 1 ;
@ -103,11 +104,11 @@ SELECT q2 FROM int8_tbl EXCEPT ALL SELECT q1 FROM int8_tbl ORDER BY 1;
SELECT q2 FROM int8_tbl EXCEPT ALL SELECT DISTINCT q1 FROM int8_tbl ORDER BY 1 ;
SELECT q2 FROM int8_tbl EXCEPT ALL SELECT DISTINCT q1 FROM int8_tbl ORDER BY 1 ;
SELECT q1 FROM int8_tbl EXCEPT SELECT q2 FROM int8_tbl ;
SELECT q1 FROM int8_tbl EXCEPT SELECT q2 FROM int8_tbl ORDER BY 1 ;
SELECT q1 FROM int8_tbl EXCEPT ALL SELECT q2 FROM int8_tbl ;
SELECT q1 FROM int8_tbl EXCEPT ALL SELECT q2 FROM int8_tbl ORDER BY 1 ;
SELECT q1 FROM int8_tbl EXCEPT ALL SELECT DISTINCT q2 FROM int8_tbl ;
SELECT q1 FROM int8_tbl EXCEPT ALL SELECT DISTINCT q2 FROM int8_tbl ORDER BY 1 ;
SELECT q1 FROM int8_tbl EXCEPT ALL SELECT q1 FROM int8_tbl FOR NO KEY UPDATE ;
SELECT q1 FROM int8_tbl EXCEPT ALL SELECT q1 FROM int8_tbl FOR NO KEY UPDATE ;
@ -115,7 +116,7 @@ SELECT q1 FROM int8_tbl EXCEPT ALL SELECT q1 FROM int8_tbl FOR NO KEY UPDATE;
-- Mixed types
-- Mixed types
- -
- -
SELECT f1 FROM float8_tbl INTERSECT SELECT f1 FROM int4_tbl ;
SELECT f1 FROM float8_tbl INTERSECT SELECT f1 FROM int4_tbl ORDER BY 1 ;
SELECT f1 FROM float8_tbl EXCEPT SELECT f1 FROM int4_tbl ORDER BY 1 ;
SELECT f1 FROM float8_tbl EXCEPT SELECT f1 FROM int4_tbl ORDER BY 1 ;
@ -123,11 +124,11 @@ SELECT f1 FROM float8_tbl EXCEPT SELECT f1 FROM int4_tbl ORDER BY 1;
-- Operator precedence and (((((extra))))) parentheses
-- Operator precedence and (((((extra))))) parentheses
- -
- -
SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl ;
SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl ORDER BY 1 ;
SELECT q1 FROM int8_tbl INTERSECT ( ( ( SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl ) ) ) ;
SELECT q1 FROM int8_tbl INTERSECT ( ( ( SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl ) ) ) ORDER BY 1 ;
( ( ( SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl ) ) ) UNION ALL SELECT q2 FROM int8_tbl ;
( ( ( SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl ORDER BY 1 ) ) ) UNION ALL SELECT q2 FROM int8_tbl ;
SELECT q1 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl EXCEPT SELECT q1 FROM int8_tbl ORDER BY 1 ;
SELECT q1 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl EXCEPT SELECT q1 FROM int8_tbl ORDER BY 1 ;
@ -147,7 +148,7 @@ ORDER BY q2,q1;
SELECT q1 FROM int8_tbl EXCEPT SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1 ;
SELECT q1 FROM int8_tbl EXCEPT SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1 ;
-- But this should work:
-- But this should work:
SELECT q1 FROM int8_tbl EXCEPT ( ( ( SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1 ) ) ) ;
SELECT q1 FROM int8_tbl EXCEPT ( ( ( SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1 ) ) ) ORDER BY 1 ;
- -
- -
-- New syntaxes (7.1) permit new tests
-- New syntaxes (7.1) permit new tests
@ -261,13 +262,15 @@ SELECT * FROM
( SELECT 1 AS t , 2 AS x
( SELECT 1 AS t , 2 AS x
UNION
UNION
SELECT 2 AS t , 4 AS x ) ss
SELECT 2 AS t , 4 AS x ) ss
WHERE x < 4 ;
WHERE x < 4
ORDER BY x ;
SELECT * FROM
SELECT * FROM
( SELECT 1 AS t , 2 AS x
( SELECT 1 AS t , 2 AS x
UNION
UNION
SELECT 2 AS t , 4 AS x ) ss
SELECT 2 AS t , 4 AS x ) ss
WHERE x < 4 ;
WHERE x < 4
ORDER BY x ;
explain ( costs off )
explain ( costs off )
SELECT * FROM
SELECT * FROM
@ -289,13 +292,15 @@ SELECT * FROM
( SELECT 1 AS t , ( random ( ) * 3 ) : : int AS x
( SELECT 1 AS t , ( random ( ) * 3 ) : : int AS x
UNION
UNION
SELECT 2 AS t , 4 AS x ) ss
SELECT 2 AS t , 4 AS x ) ss
WHERE x > 3 ;
WHERE x > 3
ORDER BY x ;
SELECT * FROM
SELECT * FROM
( SELECT 1 AS t , ( random ( ) * 3 ) : : int AS x
( SELECT 1 AS t , ( random ( ) * 3 ) : : int AS x
UNION
UNION
SELECT 2 AS t , 4 AS x ) ss
SELECT 2 AS t , 4 AS x ) ss
WHERE x > 3 ;
WHERE x > 3
ORDER BY x ;
-- Test proper handling of parameterized appendrel paths when the
-- Test proper handling of parameterized appendrel paths when the
-- potential join qual is expensive
-- potential join qual is expensive