Update for new psql formatting.

This commit is contained in:
Thomas G. Lockhart 2000-01-06 06:40:54 +00:00
parent 6e0cc2ac45
commit 67ac38085c
11 changed files with 1249 additions and 1052 deletions

View File

@ -1,97 +1,107 @@
QUERY: CREATE TABLE CASE_TBL ( --
-- CASE
-- Test the case statement
--
CREATE TABLE CASE_TBL (
i integer, i integer,
f double precision f double precision
); );
QUERY: CREATE TABLE CASE2_TBL ( CREATE TABLE CASE2_TBL (
i integer, i integer,
j integer j integer
); );
QUERY: INSERT INTO CASE_TBL VALUES (1, 10.1); INSERT INTO CASE_TBL VALUES (1, 10.1);
QUERY: INSERT INTO CASE_TBL VALUES (2, 20.2); INSERT INTO CASE_TBL VALUES (2, 20.2);
QUERY: INSERT INTO CASE_TBL VALUES (3, -30.3); INSERT INTO CASE_TBL VALUES (3, -30.3);
QUERY: INSERT INTO CASE_TBL VALUES (4, NULL); INSERT INTO CASE_TBL VALUES (4, NULL);
QUERY: INSERT INTO CASE2_TBL VALUES (1, -1); INSERT INTO CASE2_TBL VALUES (1, -1);
QUERY: INSERT INTO CASE2_TBL VALUES (2, -2); INSERT INTO CASE2_TBL VALUES (2, -2);
QUERY: INSERT INTO CASE2_TBL VALUES (3, -3); INSERT INTO CASE2_TBL VALUES (3, -3);
QUERY: INSERT INTO CASE2_TBL VALUES (2, -4); INSERT INTO CASE2_TBL VALUES (2, -4);
QUERY: INSERT INTO CASE2_TBL VALUES (1, NULL); INSERT INTO CASE2_TBL VALUES (1, NULL);
QUERY: INSERT INTO CASE2_TBL VALUES (NULL, -6); INSERT INTO CASE2_TBL VALUES (NULL, -6);
QUERY: SELECT '3' AS "One", --
-- Simplest examples without tables
--
SELECT '3' AS "One",
CASE CASE
WHEN 1 < 2 THEN 3 WHEN 1 < 2 THEN 3
END AS "Simple WHEN"; END AS "Simple WHEN";
One | Simple WHEN One | Simple WHEN
---+----------- -----+-------------
3 | 3 3 | 3
(1 row) (1 row)
QUERY: SELECT '<NULL>' AS "One", SELECT '<NULL>' AS "One",
CASE CASE
WHEN 1 > 2 THEN 3 WHEN 1 > 2 THEN 3
END AS "Simple default"; END AS "Simple default";
One | Simple default One | Simple default
------+-------------- --------+----------------
<NULL> | <NULL> |
(1 row) (1 row)
QUERY: SELECT '3' AS "One", SELECT '3' AS "One",
CASE CASE
WHEN 1 < 2 THEN 3 WHEN 1 < 2 THEN 3
ELSE 4 ELSE 4
END AS "Simple ELSE"; END AS "Simple ELSE";
One | Simple ELSE One | Simple ELSE
---+----------- -----+-------------
3 | 3 3 | 3
(1 row) (1 row)
QUERY: SELECT '4' AS "One", SELECT '4' AS "One",
CASE CASE
WHEN 1 > 2 THEN 3 WHEN 1 > 2 THEN 3
ELSE 4 ELSE 4
END AS "ELSE default"; END AS "ELSE default";
One | ELSE default One | ELSE default
---+------------ -----+--------------
4 | 4 4 | 4
(1 row) (1 row)
QUERY: SELECT '6' AS "One", SELECT '6' AS "One",
CASE CASE
WHEN 1 > 2 THEN 3 WHEN 1 > 2 THEN 3
WHEN 4 < 5 THEN 6 WHEN 4 < 5 THEN 6
ELSE 7 ELSE 7
END AS "Two WHEN with default"; END AS "Two WHEN with default";
One | Two WHEN with default One | Two WHEN with default
---+--------------------- -----+-----------------------
6 | 6 6 | 6
(1 row) (1 row)
QUERY: SELECT '' AS "Five", --
-- Examples of targets involving tables
--
SELECT '' AS "Five",
CASE CASE
WHEN i >= 3 THEN i WHEN i >= 3 THEN i
END AS ">= 3 or Null" END AS ">= 3 or Null"
FROM CASE_TBL; FROM CASE_TBL;
Five | >= 3 or Null Five | >= 3 or Null
----+------------ ------+--------------
| |
| |
| 3 | 3
| 4 | 4
(4 rows) (4 rows)
QUERY: SELECT '' AS "Five", SELECT '' AS "Five",
CASE WHEN i >= 3 THEN (i + i) CASE WHEN i >= 3 THEN (i + i)
ELSE i ELSE i
END AS "Simplest Math" END AS "Simplest Math"
FROM CASE_TBL; FROM CASE_TBL;
Five | Simplest Math Five | Simplest Math
----+------------- ------+---------------
| 1 | 1
| 2 | 2
| 6 | 6
| 8 | 8
(4 rows) (4 rows)
QUERY: SELECT '' AS "Five", i AS "Value", SELECT '' AS "Five", i AS "Value",
CASE WHEN (i < 0) THEN 'small' CASE WHEN (i < 0) THEN 'small'
WHEN (i = 0) THEN 'zero' WHEN (i = 0) THEN 'zero'
WHEN (i = 1) THEN 'one' WHEN (i = 1) THEN 'one'
@ -100,14 +110,14 @@ QUERY: SELECT '' AS "Five", i AS "Value",
END AS "Category" END AS "Category"
FROM CASE_TBL; FROM CASE_TBL;
Five | Value | Category Five | Value | Category
----+-----+-------- ------+-------+----------
| 1 | one | 1 | one
| 2 | two | 2 | two
| 3 | big | 3 | big
| 4 | big | 4 | big
(4 rows) (4 rows)
QUERY: SELECT '' AS "Five", SELECT '' AS "Five",
CASE WHEN ((i < 0) or (i < 0)) THEN 'small' CASE WHEN ((i < 0) or (i < 0)) THEN 'small'
WHEN ((i = 0) or (i = 0)) THEN 'zero' WHEN ((i = 0) or (i = 0)) THEN 'zero'
WHEN ((i = 1) or (i = 1)) THEN 'one' WHEN ((i = 1) or (i = 1)) THEN 'one'
@ -116,28 +126,36 @@ QUERY: SELECT '' AS "Five",
END AS "Category" END AS "Category"
FROM CASE_TBL; FROM CASE_TBL;
Five | Category Five | Category
----+-------- ------+----------
| one | one
| two | two
| big | big
| big | big
(4 rows) (4 rows)
QUERY: SELECT * FROM CASE_TBL WHERE COALESCE(f,i) = 4; --
-- Examples of qualifications involving tables
--
--
-- NULLIF() and COALESCE()
-- Shorthand forms for typical CASE constructs
-- defined in the SQL92 standard.
--
SELECT * FROM CASE_TBL WHERE COALESCE(f,i) = 4;
i | f i | f
-+- ---+---
4 | 4 |
(1 row) (1 row)
QUERY: SELECT * FROM CASE_TBL WHERE NULLIF(f,i) = 2; SELECT * FROM CASE_TBL WHERE NULLIF(f,i) = 2;
i | f i | f
-+- ---+---
(0 rows) (0 rows)
QUERY: SELECT COALESCE(a.f, b.i, b.j) SELECT COALESCE(a.f, b.i, b.j)
FROM CASE_TBL a, CASE2_TBL b; FROM CASE_TBL a, CASE2_TBL b;
case case
----- -------
10.1 10.1
20.2 20.2
-30.3 -30.3
@ -164,20 +182,20 @@ QUERY: SELECT COALESCE(a.f, b.i, b.j)
-6 -6
(24 rows) (24 rows)
QUERY: SELECT * SELECT *
FROM CASE_TBL a, CASE2_TBL b FROM CASE_TBL a, CASE2_TBL b
WHERE COALESCE(a.f, b.i, b.j) = 2; WHERE COALESCE(a.f, b.i, b.j) = 2;
i | f | i | j i | f | i | j
-+-+-+-- ---+---+---+----
4 | | 2 | -2 4 | | 2 | -2
4 | | 2 | -4 4 | | 2 | -4
(2 rows) (2 rows)
QUERY: SELECT '' AS Five, NULLIF(a.i,b.i) AS "NULLIF(a.i,b.i)", SELECT '' AS Five, NULLIF(a.i,b.i) AS "NULLIF(a.i,b.i)",
NULLIF(b.i, 4) AS "NULLIF(b.i,4)" NULLIF(b.i, 4) AS "NULLIF(b.i,4)"
FROM CASE_TBL a, CASE2_TBL b; FROM CASE_TBL a, CASE2_TBL b;
five | NULLIF(a.i,b.i) | NULLIF(b.i,4) five | NULLIF(a.i,b.i) | NULLIF(b.i,4)
----+---------------+------------- ------+-----------------+---------------
| | 1 | | 1
| 2 | 1 | 2 | 1
| 3 | 1 | 3 | 1
@ -204,52 +222,58 @@ five|NULLIF(a.i,b.i)|NULLIF(b.i,4)
| 4 | | 4 |
(24 rows) (24 rows)
QUERY: SELECT '' AS "Two", * SELECT '' AS "Two", *
FROM CASE_TBL a, CASE2_TBL b FROM CASE_TBL a, CASE2_TBL b
WHERE COALESCE(f,b.i) = 2; WHERE COALESCE(f,b.i) = 2;
Two | i | f | i | j Two | i | f | i | j
---+-+-+-+-- -----+---+---+---+----
| 4 | | 2 | -2 | 4 | | 2 | -2
| 4 | | 2 | -4 | 4 | | 2 | -4
(2 rows) (2 rows)
QUERY: UPDATE CASE_TBL --
-- Examples of updates involving tables
--
UPDATE CASE_TBL
SET i = CASE WHEN i >= 3 THEN (- i) SET i = CASE WHEN i >= 3 THEN (- i)
ELSE (2 * i) END; ELSE (2 * i) END;
QUERY: SELECT * FROM CASE_TBL; SELECT * FROM CASE_TBL;
i | f i | f
--+----- ----+-------
2 | 10.1 2 | 10.1
4 | 20.2 4 | 20.2
-3 | -30.3 -3 | -30.3
-4 | -4 |
(4 rows) (4 rows)
QUERY: UPDATE CASE_TBL UPDATE CASE_TBL
SET i = CASE WHEN i >= 2 THEN (2 * i) SET i = CASE WHEN i >= 2 THEN (2 * i)
ELSE (3 * i) END; ELSE (3 * i) END;
QUERY: SELECT * FROM CASE_TBL; SELECT * FROM CASE_TBL;
i | f i | f
---+----- -----+-------
4 | 10.1 4 | 10.1
8 | 20.2 8 | 20.2
-9 | -30.3 -9 | -30.3
-12 | -12 |
(4 rows) (4 rows)
QUERY: UPDATE CASE_TBL UPDATE CASE_TBL
SET i = CASE WHEN b.i >= 2 THEN (2 * j) SET i = CASE WHEN b.i >= 2 THEN (2 * j)
ELSE (3 * j) END ELSE (3 * j) END
FROM CASE2_TBL b FROM CASE2_TBL b
WHERE j = -CASE_TBL.i; WHERE j = -CASE_TBL.i;
QUERY: SELECT * FROM CASE_TBL; SELECT * FROM CASE_TBL;
i | f i | f
---+----- -----+-------
8 | 20.2 8 | 20.2
-9 | -30.3 -9 | -30.3
-12 | -12 |
-8 | 10.1 -8 | 10.1
(4 rows) (4 rows)
QUERY: DROP TABLE CASE_TBL; --
QUERY: DROP TABLE CASE2_TBL; -- Clean up
--
DROP TABLE CASE_TBL;
DROP TABLE CASE2_TBL;

View File

@ -1,8 +1,6 @@
-- --
-- errors.source -- ERRORS
-- --
-- $Header: /cvsroot/pgsql/src/test/regress/expected/errors.out,v 1.15 2000/01/05 17:31:08 thomas Exp $
-- bad in postquel, but ok in postsql -- bad in postquel, but ok in postsql
select 1 select 1
-- --

View File

@ -1,23 +1,35 @@
QUERY: SELECT count(*) FROM onek; --
-- RANDOM
-- Test the random function
--
-- count the number of tuples originally
SELECT count(*) FROM onek;
count count
----- -------
1000 1000
(1 row) (1 row)
QUERY: SELECT count(*) AS random INTO RANDOM_TBL -- select roughly 1/10 of the tuples
-- Assume that the "onek" table has 1000 tuples
-- and try to bracket the correct number so we
-- have a regression test which can pass/fail
-- - thomas 1998-08-17
SELECT count(*) AS random INTO RANDOM_TBL
FROM onek WHERE oidrand(onek.oid, 10); FROM onek WHERE oidrand(onek.oid, 10);
QUERY: INSERT INTO RANDOM_TBL (random) -- select again, the count should be different
INSERT INTO RANDOM_TBL (random)
SELECT count(*) SELECT count(*)
FROM onek WHERE oidrand(onek.oid, 10); FROM onek WHERE oidrand(onek.oid, 10);
QUERY: SELECT random, count(random) FROM RANDOM_TBL -- now test the results for randomness in the correct range
SELECT random, count(random) FROM RANDOM_TBL
GROUP BY random HAVING count(random) > 1; GROUP BY random HAVING count(random) > 1;
random | count random | count
------+----- --------+-------
(0 rows) (0 rows)
QUERY: SELECT random FROM RANDOM_TBL SELECT random FROM RANDOM_TBL
WHERE random NOT BETWEEN 80 AND 120; WHERE random NOT BETWEEN 80 AND 120;
random random
------ --------
(0 rows) (0 rows)

View File

@ -1,6 +1,12 @@
QUERY: SELECT onek.* WHERE onek.unique1 < 10; --
-- SELECT
--
-- btree index
-- awk '{if($1<10){print;}else{next;}}' onek.data | sort +0n -1
--
SELECT onek.* WHERE onek.unique1 < 10;
unique1 | unique2 | two | four | ten | twenty | hundred | thousand | twothousand | fivethous | tenthous | odd | even | stringu1 | stringu2 | string4 unique1 | unique2 | two | four | ten | twenty | hundred | thousand | twothousand | fivethous | tenthous | odd | even | stringu1 | stringu2 | string4
-------+-------+---+----+---+------+-------+--------+-----------+---------+--------+---+----+--------+--------+------- ---------+---------+-----+------+-----+--------+---------+----------+-------------+-----------+----------+-----+------+----------+----------+---------
0 | 998 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | AAAAAA | KMBAAA | OOOOxx 0 | 998 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | AAAAAA | KMBAAA | OOOOxx
1 | 214 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 3 | BAAAAA | GIAAAA | OOOOxx 1 | 214 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 3 | BAAAAA | GIAAAA | OOOOxx
2 | 326 | 0 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 4 | 5 | CAAAAA | OMAAAA | OOOOxx 2 | 326 | 0 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 4 | 5 | CAAAAA | OMAAAA | OOOOxx
@ -13,11 +19,14 @@ unique1|unique2|two|four|ten|twenty|hundred|thousand|twothousand|fivethous|tenth
9 | 49 | 1 | 1 | 9 | 9 | 9 | 9 | 9 | 9 | 9 | 18 | 19 | JAAAAA | XBAAAA | HHHHxx 9 | 49 | 1 | 1 | 9 | 9 | 9 | 9 | 9 | 9 | 9 | 18 | 19 | JAAAAA | XBAAAA | HHHHxx
(10 rows) (10 rows)
QUERY: SELECT onek.unique1, onek.stringu1 --
-- awk '{if($1<20){print $1,$14;}else{next;}}' onek.data | sort +0nr -1
--
SELECT onek.unique1, onek.stringu1
WHERE onek.unique1 < 20 WHERE onek.unique1 < 20
ORDER BY unique1 using >; ORDER BY unique1 using >;
unique1 | stringu1 unique1 | stringu1
-------+-------- ---------+----------
19 | TAAAAA 19 | TAAAAA
18 | SAAAAA 18 | SAAAAA
17 | RAAAAA 17 | RAAAAA
@ -40,11 +49,14 @@ unique1|stringu1
0 | AAAAAA 0 | AAAAAA
(20 rows) (20 rows)
QUERY: SELECT onek.unique1, onek.stringu1 --
-- awk '{if($1>980){print $1,$14;}else{next;}}' onek.data | sort +1d -2
--
SELECT onek.unique1, onek.stringu1
WHERE onek.unique1 > 980 WHERE onek.unique1 > 980
ORDER BY stringu1 using <; ORDER BY stringu1 using <;
unique1 | stringu1 unique1 | stringu1
-------+-------- ---------+----------
988 | AMAAAA 988 | AMAAAA
989 | BMAAAA 989 | BMAAAA
990 | CMAAAA 990 | CMAAAA
@ -66,11 +78,16 @@ unique1|stringu1
987 | ZLAAAA 987 | ZLAAAA
(19 rows) (19 rows)
QUERY: SELECT onek.unique1, onek.string4
--
-- awk '{if($1>980){print $1,$16;}else{next;}}' onek.data |
-- sort +1d -2 +0nr -1
--
SELECT onek.unique1, onek.string4
WHERE onek.unique1 > 980 WHERE onek.unique1 > 980
ORDER BY string4 using <, unique1 using >; ORDER BY string4 using <, unique1 using >;
unique1 | string4 unique1 | string4
-------+------- ---------+---------
999 | AAAAxx 999 | AAAAxx
995 | AAAAxx 995 | AAAAxx
983 | AAAAxx 983 | AAAAxx
@ -92,11 +109,16 @@ unique1|string4
984 | VVVVxx 984 | VVVVxx
(19 rows) (19 rows)
QUERY: SELECT onek.unique1, onek.string4
--
-- awk '{if($1>980){print $1,$16;}else{next;}}' onek.data |
-- sort +1dr -2 +0n -1
--
SELECT onek.unique1, onek.string4
WHERE onek.unique1 > 980 WHERE onek.unique1 > 980
ORDER BY string4 using >, unique1 using <; ORDER BY string4 using >, unique1 using <;
unique1 | string4 unique1 | string4
-------+------- ---------+---------
984 | VVVVxx 984 | VVVVxx
989 | VVVVxx 989 | VVVVxx
992 | VVVVxx 992 | VVVVxx
@ -118,11 +140,16 @@ unique1|string4
999 | AAAAxx 999 | AAAAxx
(19 rows) (19 rows)
QUERY: SELECT onek.unique1, onek.string4
--
-- awk '{if($1<20){print $1,$16;}else{next;}}' onek.data |
-- sort +0nr -1 +1d -2
--
SELECT onek.unique1, onek.string4
WHERE onek.unique1 < 20 WHERE onek.unique1 < 20
ORDER BY unique1 using >, string4 using <; ORDER BY unique1 using >, string4 using <;
unique1 | string4 unique1 | string4
-------+------- ---------+---------
19 | OOOOxx 19 | OOOOxx
18 | VVVVxx 18 | VVVVxx
17 | HHHHxx 17 | HHHHxx
@ -145,11 +172,15 @@ unique1|string4
0 | OOOOxx 0 | OOOOxx
(20 rows) (20 rows)
QUERY: SELECT onek.unique1, onek.string4 --
-- awk '{if($1<20){print $1,$16;}else{next;}}' onek.data |
-- sort +0n -1 +1dr -2
--
SELECT onek.unique1, onek.string4
WHERE onek.unique1 < 20 WHERE onek.unique1 < 20
ORDER BY unique1 using <, string4 using >; ORDER BY unique1 using <, string4 using >;
unique1 | string4 unique1 | string4
-------+------- ---------+---------
0 | OOOOxx 0 | OOOOxx
1 | OOOOxx 1 | OOOOxx
2 | OOOOxx 2 | OOOOxx
@ -172,12 +203,38 @@ unique1|string4
19 | OOOOxx 19 | OOOOxx
(20 rows) (20 rows)
QUERY: SELECT two, stringu1, ten, string4 --
-- partial btree index
-- awk '{if($1<10){print $0;}else{next;}}' onek.data | sort +0n -1
--
--SELECT onek2.* WHERE onek2.unique1 < 10;
--
-- partial btree index
-- awk '{if($1<20){print $1,$14;}else{next;}}' onek.data | sort +0nr -1
--
--SELECT onek2.unique1, onek2.stringu1
-- WHERE onek2.unique1 < 20
-- ORDER BY unique1 using >;
--
-- awk '{if($1>980){print $1,$14;}else{next;}}' onek.data | sort +1d -2
--
--SELECT onek2.unique1, onek2.stringu1
-- WHERE onek2.unique1 > 980
-- ORDER BY stringu1 using <;
SELECT two, stringu1, ten, string4
INTO TABLE tmp INTO TABLE tmp
FROM onek; FROM onek;
QUERY: SELECT p.name, p.age FROM person* p; --
-- awk '{print $1,$2;}' person.data |
-- awk '{if(NF!=2){print $3,$2;}else{print;}}' - emp.data |
-- awk '{if(NF!=2){print $3,$2;}else{print;}}' - student.data |
-- awk 'BEGIN{FS=" ";}{if(NF!=2){print $4,$5;}else{print;}}' - stud_emp.data
--
-- SELECT name, age FROM person*; ??? check if different
SELECT p.name, p.age FROM person* p;
name | age name | age
-------+--- ---------+-----
mike | 40 mike | 40
joe | 20 joe | 20
sally | 34 sally | 34
@ -238,9 +295,16 @@ cim | 30
linda | 19 linda | 19
(58 rows) (58 rows)
QUERY: SELECT p.name, p.age FROM person* p ORDER BY age using >, name; --
-- awk '{print $1,$2;}' person.data |
-- awk '{if(NF!=2){print $3,$2;}else{print;}}' - emp.data |
-- awk '{if(NF!=2){print $3,$2;}else{print;}}' - student.data |
-- awk 'BEGIN{FS=" ";}{if(NF!=1){print $4,$5;}else{print;}}' - stud_emp.data |
-- sort +1nr -2
--
SELECT p.name, p.age FROM person* p ORDER BY age using >, name;
name | age name | age
-------+--- ---------+-----
esther | 98 esther | 98
louise | 98 louise | 98
zena | 98 zena | 98

View File

@ -1,13 +1,22 @@
QUERY: SELECT DISTINCT two FROM tmp; --
-- SELECT_DISTINCT
--
--
-- awk '{print $3;}' onek.data | sort -n | uniq
--
SELECT DISTINCT two FROM tmp;
two two
--- -----
0 0
1 1
(2 rows) (2 rows)
QUERY: SELECT DISTINCT ten FROM tmp; --
-- awk '{print $5;}' onek.data | sort -n | uniq
--
SELECT DISTINCT ten FROM tmp;
ten ten
--- -----
0 0
1 1
2 2
@ -20,20 +29,27 @@ ten
9 9
(10 rows) (10 rows)
QUERY: SELECT DISTINCT string4 FROM tmp; --
-- awk '{print $16;}' onek.data | sort -d | uniq
--
SELECT DISTINCT string4 FROM tmp;
string4 string4
------- ---------
AAAAxx AAAAxx
HHHHxx HHHHxx
OOOOxx OOOOxx
VVVVxx VVVVxx
(4 rows) (4 rows)
QUERY: SELECT DISTINCT two, string4, ten --
-- awk '{print $3,$16,$5;}' onek.data | sort -d | uniq |
-- sort +0n -1 +1d -2 +2n -3
--
SELECT DISTINCT two, string4, ten
FROM tmp FROM tmp
ORDER BY two using <, string4 using <, ten using <; ORDER BY two using <, string4 using <, ten using <;
two | string4 | ten two | string4 | ten
---+-------+--- -----+---------+-----
0 | AAAAxx | 0 0 | AAAAxx | 0
0 | AAAAxx | 2 0 | AAAAxx | 2
0 | AAAAxx | 4 0 | AAAAxx | 4
@ -76,9 +92,16 @@ two|string4|ten
1 | VVVVxx | 9 1 | VVVVxx | 9
(40 rows) (40 rows)
QUERY: SELECT DISTINCT p.age FROM person* p ORDER BY age using >; --
-- awk '{print $2;}' person.data |
-- awk '{if(NF!=1){print $2;}else{print;}}' - emp.data |
-- awk '{if(NF!=1){print $2;}else{print;}}' - student.data |
-- awk 'BEGIN{FS=" ";}{if(NF!=1){print $5;}else{print;}}' - stud_emp.data |
-- sort -n -r | uniq
--
SELECT DISTINCT p.age FROM person* p ORDER BY age using >;
age age
--- -----
98 98
88 88
78 78

View File

@ -1,8 +1,11 @@
QUERY: SELECT DISTINCT ON string4 two, string4, ten --
-- SELECT_DISTINCT_ON
--
SELECT DISTINCT ON string4 two, string4, ten
FROM tmp FROM tmp
ORDER BY two using <, string4 using <, ten using <; ORDER BY two using <, string4 using <, ten using <;
two | string4 | ten two | string4 | ten
---+-------+--- -----+---------+-----
0 | AAAAxx | 0 0 | AAAAxx | 0
0 | HHHHxx | 0 0 | HHHHxx | 0
0 | OOOOxx | 0 0 | OOOOxx | 0

View File

@ -1,37 +1,41 @@
QUERY: CREATE TABLE test_having (a int, b int, c char(8), d char); --
QUERY: INSERT INTO test_having VALUES (0, 1, 'XXXX', 'A'); -- SELECT_HAVING
QUERY: INSERT INTO test_having VALUES (1, 2, 'AAAA', 'b'); --
QUERY: INSERT INTO test_having VALUES (2, 2, 'AAAA', 'c'); -- load test data
QUERY: INSERT INTO test_having VALUES (3, 3, 'BBBB', 'D'); CREATE TABLE test_having (a int, b int, c char(8), d char);
QUERY: INSERT INTO test_having VALUES (4, 3, 'BBBB', 'e'); INSERT INTO test_having VALUES (0, 1, 'XXXX', 'A');
QUERY: INSERT INTO test_having VALUES (5, 3, 'bbbb', 'F'); INSERT INTO test_having VALUES (1, 2, 'AAAA', 'b');
QUERY: INSERT INTO test_having VALUES (6, 4, 'cccc', 'g'); INSERT INTO test_having VALUES (2, 2, 'AAAA', 'c');
QUERY: INSERT INTO test_having VALUES (7, 4, 'cccc', 'h'); INSERT INTO test_having VALUES (3, 3, 'BBBB', 'D');
QUERY: INSERT INTO test_having VALUES (8, 4, 'CCCC', 'I'); INSERT INTO test_having VALUES (4, 3, 'BBBB', 'e');
QUERY: INSERT INTO test_having VALUES (9, 4, 'CCCC', 'j'); INSERT INTO test_having VALUES (5, 3, 'bbbb', 'F');
QUERY: SELECT b, c FROM test_having INSERT INTO test_having VALUES (6, 4, 'cccc', 'g');
INSERT INTO test_having VALUES (7, 4, 'cccc', 'h');
INSERT INTO test_having VALUES (8, 4, 'CCCC', 'I');
INSERT INTO test_having VALUES (9, 4, 'CCCC', 'j');
SELECT b, c FROM test_having
GROUP BY b, c HAVING count(*) = 1; GROUP BY b, c HAVING count(*) = 1;
b | c b | c
-+-------- ---+----------
1 | XXXX 1 | XXXX
3 | bbbb 3 | bbbb
(2 rows) (2 rows)
QUERY: SELECT lower(c), count(c) FROM test_having SELECT lower(c), count(c) FROM test_having
GROUP BY lower(c) HAVING count(*) > 2 OR min(a) = max(a); GROUP BY lower(c) HAVING count(*) > 2 OR min(a) = max(a);
lower | count lower | count
--------+----- ----------+-------
bbbb | 3 bbbb | 3
cccc | 4 cccc | 4
xxxx | 1 xxxx | 1
(3 rows) (3 rows)
QUERY: SELECT c, max(a) FROM test_having SELECT c, max(a) FROM test_having
GROUP BY c HAVING count(*) > 2 OR min(a) = max(a); GROUP BY c HAVING count(*) > 2 OR min(a) = max(a);
c | max c | max
--------+--- ----------+-----
XXXX | 0 XXXX | 0
bbbb | 5 bbbb | 5
(2 rows) (2 rows)
QUERY: DROP TABLE test_having; DROP TABLE test_having;

View File

@ -1,17 +1,26 @@
QUERY: CREATE TABLE test_missing_target (a int, b int, c char(8), d char); --
QUERY: INSERT INTO test_missing_target VALUES (0, 1, 'XXXX', 'A'); -- SELECT_IMPLICIT
QUERY: INSERT INTO test_missing_target VALUES (1, 2, 'AAAA', 'b'); -- Test cases for queries with ordering terms missing from the target list.
QUERY: INSERT INTO test_missing_target VALUES (2, 2, 'AAAA', 'c'); -- This used to be called "junkfilter.sql".
QUERY: INSERT INTO test_missing_target VALUES (3, 3, 'BBBB', 'D'); -- The parser uses the term "resjunk" to handle these cases.
QUERY: INSERT INTO test_missing_target VALUES (4, 3, 'BBBB', 'e'); -- - thomas 1998-07-09
QUERY: INSERT INTO test_missing_target VALUES (5, 3, 'bbbb', 'F'); --
QUERY: INSERT INTO test_missing_target VALUES (6, 4, 'cccc', 'g'); -- load test data
QUERY: INSERT INTO test_missing_target VALUES (7, 4, 'cccc', 'h'); CREATE TABLE test_missing_target (a int, b int, c char(8), d char);
QUERY: INSERT INTO test_missing_target VALUES (8, 4, 'CCCC', 'I'); INSERT INTO test_missing_target VALUES (0, 1, 'XXXX', 'A');
QUERY: INSERT INTO test_missing_target VALUES (9, 4, 'CCCC', 'j'); INSERT INTO test_missing_target VALUES (1, 2, 'AAAA', 'b');
QUERY: SELECT c, count(*) FROM test_missing_target GROUP BY test_missing_target.c; INSERT INTO test_missing_target VALUES (2, 2, 'AAAA', 'c');
INSERT INTO test_missing_target VALUES (3, 3, 'BBBB', 'D');
INSERT INTO test_missing_target VALUES (4, 3, 'BBBB', 'e');
INSERT INTO test_missing_target VALUES (5, 3, 'bbbb', 'F');
INSERT INTO test_missing_target VALUES (6, 4, 'cccc', 'g');
INSERT INTO test_missing_target VALUES (7, 4, 'cccc', 'h');
INSERT INTO test_missing_target VALUES (8, 4, 'CCCC', 'I');
INSERT INTO test_missing_target VALUES (9, 4, 'CCCC', 'j');
-- w/ existing GROUP BY target
SELECT c, count(*) FROM test_missing_target GROUP BY test_missing_target.c;
c | count c | count
--------+----- ----------+-------
AAAA | 2 AAAA | 2
BBBB | 2 BBBB | 2
CCCC | 2 CCCC | 2
@ -20,9 +29,10 @@ bbbb | 1
cccc | 2 cccc | 2
(6 rows) (6 rows)
QUERY: SELECT count(*) FROM test_missing_target GROUP BY test_missing_target.c; -- w/o existing GROUP BY target using a relation name in GROUP BY clause
SELECT count(*) FROM test_missing_target GROUP BY test_missing_target.c;
count count
----- -------
2 2
2 2
2 2
@ -31,30 +41,35 @@ count
2 2
(6 rows) (6 rows)
QUERY: SELECT count(*) FROM test_missing_target GROUP BY a ORDER BY b; -- w/o existing GROUP BY target and w/o existing a different ORDER BY target
-- failure expected
SELECT count(*) FROM test_missing_target GROUP BY a ORDER BY b;
ERROR: Attribute test_missing_target.b must be GROUPed or used in an aggregate function ERROR: Attribute test_missing_target.b must be GROUPed or used in an aggregate function
QUERY: SELECT count(*) FROM test_missing_target GROUP BY b ORDER BY b; -- w/o existing GROUP BY target and w/o existing same ORDER BY target
SELECT count(*) FROM test_missing_target GROUP BY b ORDER BY b;
count count
----- -------
1 1
2 2
3 3
4 4
(4 rows) (4 rows)
QUERY: SELECT test_missing_target.b, count(*) -- w/ existing GROUP BY target using a relation name in target
SELECT test_missing_target.b, count(*)
FROM test_missing_target GROUP BY b ORDER BY b; FROM test_missing_target GROUP BY b ORDER BY b;
b | count b | count
-+----- ---+-------
1 | 1 1 | 1
2 | 2 2 | 2
3 | 3 3 | 3
4 | 4 4 | 4
(4 rows) (4 rows)
QUERY: SELECT c FROM test_missing_target ORDER BY a; -- w/o existing GROUP BY target
SELECT c FROM test_missing_target ORDER BY a;
c c
-------- ----------
XXXX XXXX
AAAA AAAA
AAAA AAAA
@ -67,24 +82,27 @@ CCCC
CCCC CCCC
(10 rows) (10 rows)
QUERY: SELECT count(*) FROM test_missing_target GROUP BY b ORDER BY b desc; -- w/o existing ORDER BY target
SELECT count(*) FROM test_missing_target GROUP BY b ORDER BY b desc;
count count
----- -------
4 4
3 3
2 2
1 1
(4 rows) (4 rows)
QUERY: SELECT count(*) FROM test_missing_target ORDER BY 1 desc; -- group using reference number
SELECT count(*) FROM test_missing_target ORDER BY 1 desc;
count count
----- -------
10 10
(1 row) (1 row)
QUERY: SELECT c, count(*) FROM test_missing_target GROUP BY 1; -- order using reference number
SELECT c, count(*) FROM test_missing_target GROUP BY 1;
c | count c | count
--------+----- ----------+-------
AAAA | 2 AAAA | 2
BBBB | 2 BBBB | 2
CCCC | 2 CCCC | 2
@ -93,16 +111,22 @@ bbbb | 1
cccc | 2 cccc | 2
(6 rows) (6 rows)
QUERY: SELECT c, count(*) FROM test_missing_target GROUP BY 3; -- group using reference number out of range
-- failure expected
SELECT c, count(*) FROM test_missing_target GROUP BY 3;
ERROR: GROUP BY position 3 is not in target list ERROR: GROUP BY position 3 is not in target list
QUERY: SELECT count(*) FROM test_missing_target x, test_missing_target y -- group w/o existing GROUP BY and ORDER BY target under ambiguous condition
-- failure expected
SELECT count(*) FROM test_missing_target x, test_missing_target y
WHERE x.a = y.a WHERE x.a = y.a
GROUP BY b ORDER BY b; GROUP BY b ORDER BY b;
ERROR: Column 'b' is ambiguous ERROR: Column 'b' is ambiguous
QUERY: SELECT a, a FROM test_missing_target -- order w/ target under ambiguous condition
-- failure NOT expected
SELECT a, a FROM test_missing_target
ORDER BY a; ORDER BY a;
a | a a | a
-+- ---+---
0 | 0 0 | 0
1 | 1 1 | 1
2 | 2 2 | 2
@ -115,10 +139,12 @@ a|a
9 | 9 9 | 9
(10 rows) (10 rows)
QUERY: SELECT a/2, a/2 FROM test_missing_target -- order expression w/ target under ambiguous condition
-- failure NOT expected
SELECT a/2, a/2 FROM test_missing_target
ORDER BY a/2; ORDER BY a/2;
?column? | ?column? ?column? | ?column?
--------+-------- ----------+----------
0 | 0 0 | 0
0 | 0 0 | 0
1 | 1 1 | 1
@ -131,10 +157,12 @@ QUERY: SELECT a/2, a/2 FROM test_missing_target
4 | 4 4 | 4
(10 rows) (10 rows)
QUERY: SELECT a/2, a/2 FROM test_missing_target -- group expression w/ target under ambiguous condition
-- failure NOT expected
SELECT a/2, a/2 FROM test_missing_target
GROUP BY a/2; GROUP BY a/2;
?column? | ?column? ?column? | ?column?
--------+-------- ----------+----------
0 | 0 0 | 0
1 | 1 1 | 1
2 | 2 2 | 2
@ -142,80 +170,92 @@ QUERY: SELECT a/2, a/2 FROM test_missing_target
4 | 4 4 | 4
(5 rows) (5 rows)
QUERY: SELECT x.b, count(*) FROM test_missing_target x, test_missing_target y -- group w/ existing GROUP BY target under ambiguous condition
SELECT x.b, count(*) FROM test_missing_target x, test_missing_target y
WHERE x.a = y.a WHERE x.a = y.a
GROUP BY x.b; GROUP BY x.b;
b | count b | count
-+----- ---+-------
1 | 1 1 | 1
2 | 2 2 | 2
3 | 3 3 | 3
4 | 4 4 | 4
(4 rows) (4 rows)
QUERY: SELECT count(*) FROM test_missing_target x, test_missing_target y -- group w/o existing GROUP BY target under ambiguous condition
SELECT count(*) FROM test_missing_target x, test_missing_target y
WHERE x.a = y.a WHERE x.a = y.a
GROUP BY x.b; GROUP BY x.b;
count count
----- -------
1 1
2 2
3 3
4 4
(4 rows) (4 rows)
QUERY: SELECT count(*) INTO TABLE test_missing_target2 -- group w/o existing GROUP BY target under ambiguous condition
-- into a table
SELECT count(*) INTO TABLE test_missing_target2
FROM test_missing_target x, test_missing_target y FROM test_missing_target x, test_missing_target y
WHERE x.a = y.a WHERE x.a = y.a
GROUP BY x.b; GROUP BY x.b;
QUERY: SELECT * FROM test_missing_target2; SELECT * FROM test_missing_target2;
count count
----- -------
1 1
2 2
3 3
4 4
(4 rows) (4 rows)
QUERY: SELECT a%2, count(b) FROM test_missing_target GROUP BY test_missing_target.a%2; -- Functions and expressions
-- w/ existing GROUP BY target
SELECT a%2, count(b) FROM test_missing_target GROUP BY test_missing_target.a%2;
?column? | count ?column? | count
--------+----- ----------+-------
0 | 5 0 | 5
1 | 5 1 | 5
(2 rows) (2 rows)
QUERY: SELECT count(c) FROM test_missing_target GROUP BY lower(test_missing_target.c); -- w/o existing GROUP BY target using a relation name in GROUP BY clause
SELECT count(c) FROM test_missing_target GROUP BY lower(test_missing_target.c);
count count
----- -------
2 2
3 3
4 4
1 1
(4 rows) (4 rows)
QUERY: SELECT count(a) FROM test_missing_target GROUP BY a ORDER BY b; -- w/o existing GROUP BY target and w/o existing a different ORDER BY target
-- failure expected
SELECT count(a) FROM test_missing_target GROUP BY a ORDER BY b;
ERROR: Attribute test_missing_target.b must be GROUPed or used in an aggregate function ERROR: Attribute test_missing_target.b must be GROUPed or used in an aggregate function
QUERY: SELECT count(b) FROM test_missing_target GROUP BY b/2 ORDER BY b/2; -- w/o existing GROUP BY target and w/o existing same ORDER BY target
SELECT count(b) FROM test_missing_target GROUP BY b/2 ORDER BY b/2;
count count
----- -------
1 1
5 5
4 4
(3 rows) (3 rows)
QUERY: SELECT lower(test_missing_target.c), count(c) -- w/ existing GROUP BY target using a relation name in target
SELECT lower(test_missing_target.c), count(c)
FROM test_missing_target GROUP BY lower(c) ORDER BY lower(c); FROM test_missing_target GROUP BY lower(c) ORDER BY lower(c);
lower | count lower | count
--------+----- ----------+-------
aaaa | 2 aaaa | 2
bbbb | 3 bbbb | 3
cccc | 4 cccc | 4
xxxx | 1 xxxx | 1
(4 rows) (4 rows)
QUERY: SELECT a FROM test_missing_target ORDER BY upper(d); -- w/o existing GROUP BY target
SELECT a FROM test_missing_target ORDER BY upper(d);
a a
- ---
0 0
1 1
2 2
@ -228,44 +268,53 @@ a
9 9
(10 rows) (10 rows)
QUERY: SELECT count(b) FROM test_missing_target -- w/o existing ORDER BY target
SELECT count(b) FROM test_missing_target
GROUP BY (b + 1) / 2 ORDER BY (b + 1) / 2 desc; GROUP BY (b + 1) / 2 ORDER BY (b + 1) / 2 desc;
count count
----- -------
7 7
3 3
(2 rows) (2 rows)
QUERY: SELECT count(x.a) FROM test_missing_target x, test_missing_target y -- group w/o existing GROUP BY and ORDER BY target under ambiguous condition
-- failure expected
SELECT count(x.a) FROM test_missing_target x, test_missing_target y
WHERE x.a = y.a WHERE x.a = y.a
GROUP BY b/2 ORDER BY b/2; GROUP BY b/2 ORDER BY b/2;
ERROR: Column 'b' is ambiguous ERROR: Column 'b' is ambiguous
QUERY: SELECT x.b/2, count(x.b) FROM test_missing_target x, test_missing_target y -- group w/ existing GROUP BY target under ambiguous condition
SELECT x.b/2, count(x.b) FROM test_missing_target x, test_missing_target y
WHERE x.a = y.a WHERE x.a = y.a
GROUP BY x.b/2; GROUP BY x.b/2;
?column? | count ?column? | count
--------+----- ----------+-------
0 | 1 0 | 1
1 | 5 1 | 5
2 | 4 2 | 4
(3 rows) (3 rows)
QUERY: SELECT count(b) FROM test_missing_target x, test_missing_target y -- group w/o existing GROUP BY target under ambiguous condition
-- failure expected due to ambiguous b in count(b)
SELECT count(b) FROM test_missing_target x, test_missing_target y
WHERE x.a = y.a WHERE x.a = y.a
GROUP BY x.b/2; GROUP BY x.b/2;
ERROR: Column 'b' is ambiguous ERROR: Column 'b' is ambiguous
QUERY: SELECT count(x.b) INTO TABLE test_missing_target3 -- group w/o existing GROUP BY target under ambiguous condition
-- into a table
SELECT count(x.b) INTO TABLE test_missing_target3
FROM test_missing_target x, test_missing_target y FROM test_missing_target x, test_missing_target y
WHERE x.a = y.a WHERE x.a = y.a
GROUP BY x.b/2; GROUP BY x.b/2;
QUERY: SELECT * FROM test_missing_target3; SELECT * FROM test_missing_target3;
count count
----- -------
1 1
5 5
4 4
(3 rows) (3 rows)
QUERY: DROP TABLE test_missing_target; -- Cleanup
QUERY: DROP TABLE test_missing_target2; DROP TABLE test_missing_target;
QUERY: DROP TABLE test_missing_target3; DROP TABLE test_missing_target2;
DROP TABLE test_missing_target3;

View File

@ -1,10 +1,13 @@
QUERY: SELECT * --
-- SELECT_INTO
--
SELECT *
INTO TABLE tmp1 INTO TABLE tmp1
FROM tmp FROM tmp
WHERE onek.unique1 < 2; WHERE onek.unique1 < 2;
QUERY: DROP TABLE tmp1; DROP TABLE tmp1;
QUERY: SELECT * SELECT *
INTO TABLE tmp1 INTO TABLE tmp1
FROM tmp FROM tmp
WHERE onek2.unique1 < 2; WHERE onek2.unique1 < 2;
QUERY: DROP TABLE tmp1; DROP TABLE tmp1;

View File

@ -1,35 +1,39 @@
QUERY: SELECT 1 AS one WHERE 1 IN (SELECT 1); --
-- SUBSELECT
--
SELECT 1 AS one WHERE 1 IN (SELECT 1);
one one
--- -----
1 1
(1 row) (1 row)
QUERY: SELECT 1 AS zero WHERE 1 NOT IN (SELECT 1); SELECT 1 AS zero WHERE 1 NOT IN (SELECT 1);
zero zero
---- ------
(0 rows) (0 rows)
QUERY: SELECT 1 AS zero WHERE 1 IN (SELECT 2); SELECT 1 AS zero WHERE 1 IN (SELECT 2);
zero zero
---- ------
(0 rows) (0 rows)
QUERY: CREATE TABLE SUBSELECT_TBL ( -- Set up some simple test tables
CREATE TABLE SUBSELECT_TBL (
f1 integer, f1 integer,
f2 integer, f2 integer,
f3 float f3 float
); );
QUERY: INSERT INTO SUBSELECT_TBL VALUES (1, 2, 3); INSERT INTO SUBSELECT_TBL VALUES (1, 2, 3);
QUERY: INSERT INTO SUBSELECT_TBL VALUES (2, 3, 4); INSERT INTO SUBSELECT_TBL VALUES (2, 3, 4);
QUERY: INSERT INTO SUBSELECT_TBL VALUES (3, 4, 5); INSERT INTO SUBSELECT_TBL VALUES (3, 4, 5);
QUERY: INSERT INTO SUBSELECT_TBL VALUES (1, 1, 1); INSERT INTO SUBSELECT_TBL VALUES (1, 1, 1);
QUERY: INSERT INTO SUBSELECT_TBL VALUES (2, 2, 2); INSERT INTO SUBSELECT_TBL VALUES (2, 2, 2);
QUERY: INSERT INTO SUBSELECT_TBL VALUES (3, 3, 3); INSERT INTO SUBSELECT_TBL VALUES (3, 3, 3);
QUERY: INSERT INTO SUBSELECT_TBL VALUES (6, 7, 8); INSERT INTO SUBSELECT_TBL VALUES (6, 7, 8);
QUERY: INSERT INTO SUBSELECT_TBL VALUES (8, 9, NULL); INSERT INTO SUBSELECT_TBL VALUES (8, 9, NULL);
QUERY: SELECT '' AS eight, * FROM SUBSELECT_TBL; SELECT '' AS eight, * FROM SUBSELECT_TBL;
eight | f1 | f2 | f3 eight | f1 | f2 | f3
-----+--+--+-- -------+----+----+----
| 1 | 2 | 3 | 1 | 2 | 3
| 2 | 3 | 4 | 2 | 3 | 4
| 3 | 4 | 5 | 3 | 4 | 5
@ -40,18 +44,19 @@ eight|f1|f2|f3
| 8 | 9 | | 8 | 9 |
(8 rows) (8 rows)
QUERY: SELECT '' AS two, f1 AS "Constant Select" FROM SUBSELECT_TBL -- Uncorrelated subselects
SELECT '' AS two, f1 AS "Constant Select" FROM SUBSELECT_TBL
WHERE f1 IN (SELECT 1); WHERE f1 IN (SELECT 1);
two | Constant Select two | Constant Select
---+--------------- -----+-----------------
| 1 | 1
| 1 | 1
(2 rows) (2 rows)
QUERY: SELECT '' AS six, f1 AS "Uncorrelated Field" FROM SUBSELECT_TBL SELECT '' AS six, f1 AS "Uncorrelated Field" FROM SUBSELECT_TBL
WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL); WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL);
six | Uncorrelated Field six | Uncorrelated Field
---+------------------ -----+--------------------
| 1 | 1
| 2 | 2
| 3 | 3
@ -60,11 +65,11 @@ six|Uncorrelated Field
| 3 | 3
(6 rows) (6 rows)
QUERY: SELECT '' AS six, f1 AS "Uncorrelated Field" FROM SUBSELECT_TBL SELECT '' AS six, f1 AS "Uncorrelated Field" FROM SUBSELECT_TBL
WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE
f2 IN (SELECT f1 FROM SUBSELECT_TBL)); f2 IN (SELECT f1 FROM SUBSELECT_TBL));
six | Uncorrelated Field six | Uncorrelated Field
---+------------------ -----+--------------------
| 1 | 1
| 2 | 2
| 3 | 3
@ -73,11 +78,12 @@ six|Uncorrelated Field
| 3 | 3
(6 rows) (6 rows)
QUERY: SELECT '' AS six, f1 AS "Correlated Field", f3 AS "Second Field" -- Correlated subselects
SELECT '' AS six, f1 AS "Correlated Field", f3 AS "Second Field"
FROM SUBSELECT_TBL FROM SUBSELECT_TBL
WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE f2 = f1); WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE f2 = f1);
six | Correlated Field | Second Field six | Correlated Field | Second Field
---+----------------+------------ -----+------------------+--------------
| 1 | 3 | 1 | 3
| 2 | 4 | 2 | 4
| 3 | 5 | 3 | 5
@ -86,11 +92,11 @@ six|Correlated Field|Second Field
| 3 | 3 | 3 | 3
(6 rows) (6 rows)
QUERY: SELECT '' AS six, f1 AS "Correlated Field", f3 AS "Second Field" SELECT '' AS six, f1 AS "Correlated Field", f3 AS "Second Field"
FROM SUBSELECT_TBL FROM SUBSELECT_TBL
WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE CAST(f2 AS float) = f3); WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE CAST(f2 AS float) = f3);
six | Correlated Field | Second Field six | Correlated Field | Second Field
---+----------------+------------ -----+------------------+--------------
| 1 | 3 | 1 | 3
| 2 | 4 | 2 | 4
| 3 | 5 | 3 | 5
@ -99,15 +105,15 @@ six|Correlated Field|Second Field
| 3 | 3 | 3 | 3
(6 rows) (6 rows)
QUERY: SELECT '' AS six, f1 AS "Correlated Field", f3 AS "Second Field" SELECT '' AS six, f1 AS "Correlated Field", f3 AS "Second Field"
FROM SUBSELECT_TBL FROM SUBSELECT_TBL
WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE f2 = CAST(f3 AS integer)); WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE f2 = CAST(f3 AS integer));
ERROR: dtoi4: unable to convert null ERROR: dtoi4: unable to convert null
QUERY: SELECT '' AS five, f1 AS "Correlated Field" SELECT '' AS five, f1 AS "Correlated Field"
FROM SUBSELECT_TBL FROM SUBSELECT_TBL
WHERE (f1, f2) IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL WHERE f3 IS NOT NULL); WHERE (f1, f2) IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL WHERE f3 IS NOT NULL);
five | Correlated Field five | Correlated Field
----+---------------- ------+------------------
| 2 | 2
| 3 | 3
| 1 | 1
@ -115,21 +121,24 @@ five|Correlated Field
| 3 | 3
(5 rows) (5 rows)
QUERY: SELECT '' AS three, f1 AS "Correlated Field" SELECT '' AS three, f1 AS "Correlated Field"
FROM SUBSELECT_TBL FROM SUBSELECT_TBL
WHERE (f1, f2) NOT IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL WHERE f3 IS NOT NULL); WHERE (f1, f2) NOT IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL WHERE f3 IS NOT NULL);
three | Correlated Field three | Correlated Field
-----+---------------- -------+------------------
| 1 | 1
| 6 | 6
| 8 | 8
(3 rows) (3 rows)
QUERY: SELECT '' AS eight, ss.f1 AS "Correlated Field", ss.f3 AS "Second Field" --
-- Use some existing tables in the regression test
--
SELECT '' AS eight, ss.f1 AS "Correlated Field", ss.f3 AS "Second Field"
FROM SUBSELECT_TBL ss FROM SUBSELECT_TBL ss
WHERE f1 NOT IN (SELECT f1 FROM INT4_TBL WHERE f1 != ss.f1); WHERE f1 NOT IN (SELECT f1 FROM INT4_TBL WHERE f1 != ss.f1);
eight | Correlated Field | Second Field eight | Correlated Field | Second Field
-----+----------------+------------ -------+------------------+--------------
| 1 | 3 | 1 | 3
| 2 | 4 | 2 | 4
| 3 | 5 | 3 | 5

View File

@ -1,122 +1,130 @@
QUERY: SELECT 1 AS two UNION SELECT 2; --
-- UNION
--
-- Simple UNION constructs
SELECT 1 AS two UNION SELECT 2;
two two
--- -----
1 1
2 2
(2 rows) (2 rows)
QUERY: SELECT 1 AS one UNION SELECT 1; SELECT 1 AS one UNION SELECT 1;
one one
--- -----
1 1
(1 row) (1 row)
QUERY: SELECT 1 AS two UNION ALL SELECT 2; SELECT 1 AS two UNION ALL SELECT 2;
two two
--- -----
1 1
2 2
(2 rows) (2 rows)
QUERY: SELECT 1 AS two UNION ALL SELECT 1; SELECT 1 AS two UNION ALL SELECT 1;
two two
--- -----
1 1
1 1
(2 rows) (2 rows)
QUERY: SELECT 1 AS three UNION SELECT 2 UNION SELECT 3; SELECT 1 AS three UNION SELECT 2 UNION SELECT 3;
three three
----- -------
1 1
2 2
3 3
(3 rows) (3 rows)
QUERY: SELECT 1 AS two UNION SELECT 2 UNION SELECT 2; SELECT 1 AS two UNION SELECT 2 UNION SELECT 2;
two two
--- -----
1 1
2 2
(2 rows) (2 rows)
QUERY: SELECT 1 AS three UNION SELECT 2 UNION ALL SELECT 2; SELECT 1 AS three UNION SELECT 2 UNION ALL SELECT 2;
three three
----- -------
1 1
2 2
2 2
(3 rows) (3 rows)
QUERY: SELECT 1.1 AS two UNION SELECT 2.2; SELECT 1.1 AS two UNION SELECT 2.2;
two two
--- -----
1.1 1.1
2.2 2.2
(2 rows) (2 rows)
QUERY: SELECT 1.1 AS two UNION SELECT 2; -- Mixed types
SELECT 1.1 AS two UNION SELECT 2;
two two
--- -----
1.1 1.1
2 2
(2 rows) (2 rows)
QUERY: SELECT 1 AS two UNION SELECT 2.2; SELECT 1 AS two UNION SELECT 2.2;
two two
--- -----
1 1
2 2
(2 rows) (2 rows)
QUERY: SELECT 1 AS one UNION SELECT 1.1; SELECT 1 AS one UNION SELECT 1.1;
one one
--- -----
1 1
(1 row) (1 row)
QUERY: SELECT 1.1 AS two UNION ALL SELECT 2; SELECT 1.1 AS two UNION ALL SELECT 2;
two two
--- -----
1.1 1.1
2 2
(2 rows) (2 rows)
QUERY: SELECT 1 AS two UNION ALL SELECT 1; SELECT 1 AS two UNION ALL SELECT 1;
two two
--- -----
1 1
1 1
(2 rows) (2 rows)
QUERY: SELECT 1 AS three UNION SELECT 2 UNION SELECT 3; SELECT 1 AS three UNION SELECT 2 UNION SELECT 3;
three three
----- -------
1 1
2 2
3 3
(3 rows) (3 rows)
QUERY: SELECT 1 AS two UNION SELECT 2 UNION SELECT 2; SELECT 1 AS two UNION SELECT 2 UNION SELECT 2;
two two
--- -----
1 1
2 2
(2 rows) (2 rows)
QUERY: SELECT 1 AS three UNION SELECT 2 UNION ALL SELECT 2; SELECT 1 AS three UNION SELECT 2 UNION ALL SELECT 2;
three three
----- -------
1 1
2 2
2 2
(3 rows) (3 rows)
QUERY: SELECT f1 AS five FROM FLOAT8_TBL --
-- Try testing from tables...
--
SELECT f1 AS five FROM FLOAT8_TBL
UNION UNION
SELECT f1 FROM FLOAT8_TBL; SELECT f1 FROM FLOAT8_TBL;
five five
--------------------- -----------------------
-1.2345678901234e+200 -1.2345678901234e+200
-1004.3 -1004.3
-34.84 -34.84
@ -124,11 +132,11 @@ five
0 0
(5 rows) (5 rows)
QUERY: SELECT f1 AS ten FROM FLOAT8_TBL SELECT f1 AS ten FROM FLOAT8_TBL
UNION ALL UNION ALL
SELECT f1 FROM FLOAT8_TBL; SELECT f1 FROM FLOAT8_TBL;
ten ten
--------------------- -----------------------
0 0
-34.84 -34.84
-1004.3 -1004.3
@ -141,11 +149,11 @@ ten
-1.2345678901234e-200 -1.2345678901234e-200
(10 rows) (10 rows)
QUERY: SELECT f1 AS nine FROM FLOAT8_TBL SELECT f1 AS nine FROM FLOAT8_TBL
UNION UNION
SELECT f1 FROM INT4_TBL; SELECT f1 FROM INT4_TBL;
nine nine
--------------------- -----------------------
-1.2345678901234e+200 -1.2345678901234e+200
-2147483647 -2147483647
-123456 -123456
@ -157,11 +165,11 @@ nine
2147483647 2147483647
(9 rows) (9 rows)
QUERY: SELECT f1 AS ten FROM FLOAT8_TBL SELECT f1 AS ten FROM FLOAT8_TBL
UNION ALL UNION ALL
SELECT f1 FROM INT4_TBL; SELECT f1 FROM INT4_TBL;
ten ten
--------------------- -----------------------
0 0
-34.84 -34.84
-1004.3 -1004.3
@ -174,13 +182,13 @@ ten
-2147483647 -2147483647
(10 rows) (10 rows)
QUERY: SELECT f1 AS five FROM FLOAT8_TBL SELECT f1 AS five FROM FLOAT8_TBL
WHERE f1 BETWEEN -1e6 AND 1e6 WHERE f1 BETWEEN -1e6 AND 1e6
UNION UNION
SELECT f1 FROM INT4_TBL SELECT f1 FROM INT4_TBL
WHERE f1 BETWEEN 0 AND 1000000; WHERE f1 BETWEEN 0 AND 1000000;
five five
--------------------- -----------------------
-1004.3 -1004.3
-34.84 -34.84
-1.2345678901234e-200 -1.2345678901234e-200
@ -188,11 +196,11 @@ SELECT f1 FROM INT4_TBL
123456 123456
(5 rows) (5 rows)
QUERY: SELECT f1 AS five FROM VARCHAR_TBL SELECT f1 AS five FROM VARCHAR_TBL
UNION UNION
SELECT f1 FROM CHAR_TBL; SELECT f1 FROM CHAR_TBL;
five five
---- ------
a a
a a
ab ab
@ -200,21 +208,21 @@ ab
abcd abcd
(5 rows) (5 rows)
QUERY: SELECT f1 AS three FROM VARCHAR_TBL SELECT f1 AS three FROM VARCHAR_TBL
UNION UNION
SELECT TRIM(TRAILING FROM f1) FROM CHAR_TBL; SELECT TRIM(TRAILING FROM f1) FROM CHAR_TBL;
three three
----- -------
a a
ab ab
abcd abcd
(3 rows) (3 rows)
QUERY: SELECT f1 AS eight FROM VARCHAR_TBL SELECT f1 AS eight FROM VARCHAR_TBL
UNION ALL UNION ALL
SELECT f1 FROM CHAR_TBL; SELECT f1 FROM CHAR_TBL;
eight eight
----- -------
a a
ab ab
abcd abcd
@ -225,13 +233,13 @@ abcd
abcd abcd
(8 rows) (8 rows)
QUERY: SELECT f1 AS five FROM TEXT_TBL SELECT f1 AS five FROM TEXT_TBL
UNION UNION
SELECT f1 FROM VARCHAR_TBL SELECT f1 FROM VARCHAR_TBL
UNION UNION
SELECT TRIM(TRAILING FROM f1) FROM CHAR_TBL; SELECT TRIM(TRAILING FROM f1) FROM CHAR_TBL;
five five
----------------- -------------------
a a
ab ab
abcd abcd