mirror of https://github.com/postgres/postgres
equally (in glibc: et_EE, sv_SE, tk_TM). It turns out that this was already taken care of previously by select_1.out, which I had forgotten to update for an unrelated change. But might as well avoid the issue altogether.REL8_5_ALPHA1_BRANCH
parent
8987c115f1
commit
0a9ddf72cf
@ -1,770 +0,0 @@ |
|||||||
-- |
|
||||||
-- SELECT |
|
||||||
-- |
|
||||||
-- btree index |
|
||||||
-- awk '{if($1<10){print;}else{next;}}' onek.data | sort +0n -1 |
|
||||||
-- |
|
||||||
SELECT * FROM onek |
|
||||||
WHERE onek.unique1 < 10 |
|
||||||
ORDER BY onek.unique1; |
|
||||||
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 |
|
||||||
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 |
|
||||||
3 | 431 | 1 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 6 | 7 | DAAAAA | PQAAAA | VVVVxx |
|
||||||
4 | 833 | 0 | 0 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 8 | 9 | EAAAAA | BGBAAA | HHHHxx |
|
||||||
5 | 541 | 1 | 1 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 10 | 11 | FAAAAA | VUAAAA | HHHHxx |
|
||||||
6 | 978 | 0 | 2 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 12 | 13 | GAAAAA | QLBAAA | OOOOxx |
|
||||||
7 | 647 | 1 | 3 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 14 | 15 | HAAAAA | XYAAAA | VVVVxx |
|
||||||
8 | 653 | 0 | 0 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 16 | 17 | IAAAAA | DZAAAA | HHHHxx |
|
||||||
9 | 49 | 1 | 1 | 9 | 9 | 9 | 9 | 9 | 9 | 9 | 18 | 19 | JAAAAA | XBAAAA | HHHHxx |
|
||||||
(10 rows) |
|
||||||
|
|
||||||
-- |
|
||||||
-- awk '{if($1<20){print $1,$14;}else{next;}}' onek.data | sort +0nr -1 |
|
||||||
-- |
|
||||||
SELECT onek.unique1, onek.stringu1 FROM onek |
|
||||||
WHERE onek.unique1 < 20 |
|
||||||
ORDER BY unique1 using >; |
|
||||||
unique1 | stringu1 |
|
||||||
---------+---------- |
|
||||||
19 | TAAAAA |
|
||||||
18 | SAAAAA |
|
||||||
17 | RAAAAA |
|
||||||
16 | QAAAAA |
|
||||||
15 | PAAAAA |
|
||||||
14 | OAAAAA |
|
||||||
13 | NAAAAA |
|
||||||
12 | MAAAAA |
|
||||||
11 | LAAAAA |
|
||||||
10 | KAAAAA |
|
||||||
9 | JAAAAA |
|
||||||
8 | IAAAAA |
|
||||||
7 | HAAAAA |
|
||||||
6 | GAAAAA |
|
||||||
5 | FAAAAA |
|
||||||
4 | EAAAAA |
|
||||||
3 | DAAAAA |
|
||||||
2 | CAAAAA |
|
||||||
1 | BAAAAA |
|
||||||
0 | AAAAAA |
|
||||||
(20 rows) |
|
||||||
|
|
||||||
-- |
|
||||||
-- awk '{if($1>980){print $1,$14;}else{next;}}' onek.data | sort +1d -2 |
|
||||||
-- |
|
||||||
SELECT onek.unique1, onek.stringu1 FROM onek |
|
||||||
WHERE onek.unique1 > 980 |
|
||||||
ORDER BY stringu1 using <; |
|
||||||
unique1 | stringu1 |
|
||||||
---------+---------- |
|
||||||
988 | AMAAAA |
|
||||||
989 | BMAAAA |
|
||||||
990 | CMAAAA |
|
||||||
991 | DMAAAA |
|
||||||
992 | EMAAAA |
|
||||||
993 | FMAAAA |
|
||||||
994 | GMAAAA |
|
||||||
995 | HMAAAA |
|
||||||
996 | IMAAAA |
|
||||||
997 | JMAAAA |
|
||||||
998 | KMAAAA |
|
||||||
999 | LMAAAA |
|
||||||
981 | TLAAAA |
|
||||||
982 | ULAAAA |
|
||||||
983 | VLAAAA |
|
||||||
984 | WLAAAA |
|
||||||
985 | XLAAAA |
|
||||||
986 | YLAAAA |
|
||||||
987 | ZLAAAA |
|
||||||
(19 rows) |
|
||||||
|
|
||||||
|
|
||||||
-- |
|
||||||
-- awk '{if($1>980){print $1,$16;}else{next;}}' onek.data | |
|
||||||
-- sort +1d -2 +0nr -1 |
|
||||||
-- |
|
||||||
SELECT onek.unique1, onek.string4 FROM onek |
|
||||||
WHERE onek.unique1 > 980 |
|
||||||
ORDER BY string4 using <, unique1 using >; |
|
||||||
unique1 | string4 |
|
||||||
---------+--------- |
|
||||||
999 | AAAAxx |
|
||||||
995 | AAAAxx |
|
||||||
983 | AAAAxx |
|
||||||
982 | AAAAxx |
|
||||||
981 | AAAAxx |
|
||||||
998 | HHHHxx |
|
||||||
997 | HHHHxx |
|
||||||
993 | HHHHxx |
|
||||||
990 | HHHHxx |
|
||||||
986 | HHHHxx |
|
||||||
996 | OOOOxx |
|
||||||
991 | OOOOxx |
|
||||||
988 | OOOOxx |
|
||||||
987 | OOOOxx |
|
||||||
985 | OOOOxx |
|
||||||
994 | VVVVxx |
|
||||||
992 | VVVVxx |
|
||||||
989 | VVVVxx |
|
||||||
984 | VVVVxx |
|
||||||
(19 rows) |
|
||||||
|
|
||||||
|
|
||||||
-- |
|
||||||
-- awk '{if($1>980){print $1,$16;}else{next;}}' onek.data | |
|
||||||
-- sort +1dr -2 +0n -1 |
|
||||||
-- |
|
||||||
SELECT onek.unique1, onek.string4 FROM onek |
|
||||||
WHERE onek.unique1 > 980 |
|
||||||
ORDER BY string4 using >, unique1 using <; |
|
||||||
unique1 | string4 |
|
||||||
---------+--------- |
|
||||||
984 | VVVVxx |
|
||||||
989 | VVVVxx |
|
||||||
992 | VVVVxx |
|
||||||
994 | VVVVxx |
|
||||||
985 | OOOOxx |
|
||||||
987 | OOOOxx |
|
||||||
988 | OOOOxx |
|
||||||
991 | OOOOxx |
|
||||||
996 | OOOOxx |
|
||||||
986 | HHHHxx |
|
||||||
990 | HHHHxx |
|
||||||
993 | HHHHxx |
|
||||||
997 | HHHHxx |
|
||||||
998 | HHHHxx |
|
||||||
981 | AAAAxx |
|
||||||
982 | AAAAxx |
|
||||||
983 | AAAAxx |
|
||||||
995 | AAAAxx |
|
||||||
999 | AAAAxx |
|
||||||
(19 rows) |
|
||||||
|
|
||||||
|
|
||||||
-- |
|
||||||
-- awk '{if($1<20){print $1,$16;}else{next;}}' onek.data | |
|
||||||
-- sort +0nr -1 +1d -2 |
|
||||||
-- |
|
||||||
SELECT onek.unique1, onek.string4 FROM onek |
|
||||||
WHERE onek.unique1 < 20 |
|
||||||
ORDER BY unique1 using >, string4 using <; |
|
||||||
unique1 | string4 |
|
||||||
---------+--------- |
|
||||||
19 | OOOOxx |
|
||||||
18 | VVVVxx |
|
||||||
17 | HHHHxx |
|
||||||
16 | OOOOxx |
|
||||||
15 | VVVVxx |
|
||||||
14 | AAAAxx |
|
||||||
13 | OOOOxx |
|
||||||
12 | AAAAxx |
|
||||||
11 | OOOOxx |
|
||||||
10 | AAAAxx |
|
||||||
9 | HHHHxx |
|
||||||
8 | HHHHxx |
|
||||||
7 | VVVVxx |
|
||||||
6 | OOOOxx |
|
||||||
5 | HHHHxx |
|
||||||
4 | HHHHxx |
|
||||||
3 | VVVVxx |
|
||||||
2 | OOOOxx |
|
||||||
1 | OOOOxx |
|
||||||
0 | OOOOxx |
|
||||||
(20 rows) |
|
||||||
|
|
||||||
-- |
|
||||||
-- awk '{if($1<20){print $1,$16;}else{next;}}' onek.data | |
|
||||||
-- sort +0n -1 +1dr -2 |
|
||||||
-- |
|
||||||
SELECT onek.unique1, onek.string4 FROM onek |
|
||||||
WHERE onek.unique1 < 20 |
|
||||||
ORDER BY unique1 using <, string4 using >; |
|
||||||
unique1 | string4 |
|
||||||
---------+--------- |
|
||||||
0 | OOOOxx |
|
||||||
1 | OOOOxx |
|
||||||
2 | OOOOxx |
|
||||||
3 | VVVVxx |
|
||||||
4 | HHHHxx |
|
||||||
5 | HHHHxx |
|
||||||
6 | OOOOxx |
|
||||||
7 | VVVVxx |
|
||||||
8 | HHHHxx |
|
||||||
9 | HHHHxx |
|
||||||
10 | AAAAxx |
|
||||||
11 | OOOOxx |
|
||||||
12 | AAAAxx |
|
||||||
13 | OOOOxx |
|
||||||
14 | AAAAxx |
|
||||||
15 | VVVVxx |
|
||||||
16 | OOOOxx |
|
||||||
17 | HHHHxx |
|
||||||
18 | VVVVxx |
|
||||||
19 | OOOOxx |
|
||||||
(20 rows) |
|
||||||
|
|
||||||
-- |
|
||||||
-- test partial btree indexes |
|
||||||
-- |
|
||||||
-- As of 7.2, planner probably won't pick an indexscan without stats, |
|
||||||
-- so ANALYZE first. Also, we want to prevent it from picking a bitmapscan |
|
||||||
-- followed by sort, because that could hide index ordering problems. |
|
||||||
-- |
|
||||||
ANALYZE onek2; |
|
||||||
SET enable_seqscan TO off; |
|
||||||
SET enable_bitmapscan TO off; |
|
||||||
SET enable_sort TO off; |
|
||||||
-- |
|
||||||
-- awk '{if($1<10){print $0;}else{next;}}' onek.data | sort +0n -1 |
|
||||||
-- |
|
||||||
SELECT onek2.* FROM onek2 WHERE onek2.unique1 < 10; |
|
||||||
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 |
|
||||||
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 |
|
||||||
3 | 431 | 1 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 6 | 7 | DAAAAA | PQAAAA | VVVVxx |
|
||||||
4 | 833 | 0 | 0 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 8 | 9 | EAAAAA | BGBAAA | HHHHxx |
|
||||||
5 | 541 | 1 | 1 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 10 | 11 | FAAAAA | VUAAAA | HHHHxx |
|
||||||
6 | 978 | 0 | 2 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 12 | 13 | GAAAAA | QLBAAA | OOOOxx |
|
||||||
7 | 647 | 1 | 3 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 14 | 15 | HAAAAA | XYAAAA | VVVVxx |
|
||||||
8 | 653 | 0 | 0 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 16 | 17 | IAAAAA | DZAAAA | HHHHxx |
|
||||||
9 | 49 | 1 | 1 | 9 | 9 | 9 | 9 | 9 | 9 | 9 | 18 | 19 | JAAAAA | XBAAAA | HHHHxx |
|
||||||
(10 rows) |
|
||||||
|
|
||||||
-- |
|
||||||
-- awk '{if($1<20){print $1,$14;}else{next;}}' onek.data | sort +0nr -1 |
|
||||||
-- |
|
||||||
SELECT onek2.unique1, onek2.stringu1 FROM onek2 |
|
||||||
WHERE onek2.unique1 < 20 |
|
||||||
ORDER BY unique1 using >; |
|
||||||
unique1 | stringu1 |
|
||||||
---------+---------- |
|
||||||
19 | TAAAAA |
|
||||||
18 | SAAAAA |
|
||||||
17 | RAAAAA |
|
||||||
16 | QAAAAA |
|
||||||
15 | PAAAAA |
|
||||||
14 | OAAAAA |
|
||||||
13 | NAAAAA |
|
||||||
12 | MAAAAA |
|
||||||
11 | LAAAAA |
|
||||||
10 | KAAAAA |
|
||||||
9 | JAAAAA |
|
||||||
8 | IAAAAA |
|
||||||
7 | HAAAAA |
|
||||||
6 | GAAAAA |
|
||||||
5 | FAAAAA |
|
||||||
4 | EAAAAA |
|
||||||
3 | DAAAAA |
|
||||||
2 | CAAAAA |
|
||||||
1 | BAAAAA |
|
||||||
0 | AAAAAA |
|
||||||
(20 rows) |
|
||||||
|
|
||||||
-- |
|
||||||
-- awk '{if($1>980){print $1,$14;}else{next;}}' onek.data | sort +1d -2 |
|
||||||
-- |
|
||||||
SELECT onek2.unique1, onek2.stringu1 FROM onek2 |
|
||||||
WHERE onek2.unique1 > 980; |
|
||||||
unique1 | stringu1 |
|
||||||
---------+---------- |
|
||||||
981 | TLAAAA |
|
||||||
982 | ULAAAA |
|
||||||
983 | VLAAAA |
|
||||||
984 | WLAAAA |
|
||||||
985 | XLAAAA |
|
||||||
986 | YLAAAA |
|
||||||
987 | ZLAAAA |
|
||||||
988 | AMAAAA |
|
||||||
989 | BMAAAA |
|
||||||
990 | CMAAAA |
|
||||||
991 | DMAAAA |
|
||||||
992 | EMAAAA |
|
||||||
993 | FMAAAA |
|
||||||
994 | GMAAAA |
|
||||||
995 | HMAAAA |
|
||||||
996 | IMAAAA |
|
||||||
997 | JMAAAA |
|
||||||
998 | KMAAAA |
|
||||||
999 | LMAAAA |
|
||||||
(19 rows) |
|
||||||
|
|
||||||
RESET enable_seqscan; |
|
||||||
RESET enable_bitmapscan; |
|
||||||
RESET enable_sort; |
|
||||||
SELECT two, stringu1, ten, string4 |
|
||||||
INTO TABLE tmp |
|
||||||
FROM onek; |
|
||||||
-- |
|
||||||
-- 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 |
|
||||||
---------+----- |
|
||||||
mike | 40 |
|
||||||
joe | 20 |
|
||||||
sally | 34 |
|
||||||
sandra | 19 |
|
||||||
alex | 30 |
|
||||||
sue | 50 |
|
||||||
denise | 24 |
|
||||||
sarah | 88 |
|
||||||
teresa | 38 |
|
||||||
nan | 28 |
|
||||||
leah | 68 |
|
||||||
wendy | 78 |
|
||||||
melissa | 28 |
|
||||||
joan | 18 |
|
||||||
mary | 8 |
|
||||||
jane | 58 |
|
||||||
liza | 38 |
|
||||||
jean | 28 |
|
||||||
jenifer | 38 |
|
||||||
juanita | 58 |
|
||||||
susan | 78 |
|
||||||
zena | 98 |
|
||||||
martie | 88 |
|
||||||
chris | 78 |
|
||||||
pat | 18 |
|
||||||
zola | 58 |
|
||||||
louise | 98 |
|
||||||
edna | 18 |
|
||||||
bertha | 88 |
|
||||||
sumi | 38 |
|
||||||
koko | 88 |
|
||||||
gina | 18 |
|
||||||
rean | 48 |
|
||||||
sharon | 78 |
|
||||||
paula | 68 |
|
||||||
julie | 68 |
|
||||||
belinda | 38 |
|
||||||
karen | 48 |
|
||||||
carina | 58 |
|
||||||
diane | 18 |
|
||||||
esther | 98 |
|
||||||
trudy | 88 |
|
||||||
fanny | 8 |
|
||||||
carmen | 78 |
|
||||||
lita | 25 |
|
||||||
pamela | 48 |
|
||||||
sandy | 38 |
|
||||||
trisha | 88 |
|
||||||
vera | 78 |
|
||||||
velma | 68 |
|
||||||
sharon | 25 |
|
||||||
sam | 30 |
|
||||||
bill | 20 |
|
||||||
fred | 28 |
|
||||||
larry | 60 |
|
||||||
jeff | 23 |
|
||||||
cim | 30 |
|
||||||
linda | 19 |
|
||||||
(58 rows) |
|
||||||
|
|
||||||
-- |
|
||||||
-- 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 |
|
||||||
---------+----- |
|
||||||
esther | 98 |
|
||||||
louise | 98 |
|
||||||
zena | 98 |
|
||||||
bertha | 88 |
|
||||||
koko | 88 |
|
||||||
martie | 88 |
|
||||||
sarah | 88 |
|
||||||
trisha | 88 |
|
||||||
trudy | 88 |
|
||||||
carmen | 78 |
|
||||||
chris | 78 |
|
||||||
sharon | 78 |
|
||||||
susan | 78 |
|
||||||
wendy | 78 |
|
||||||
vera | 78 |
|
||||||
julie | 68 |
|
||||||
leah | 68 |
|
||||||
paula | 68 |
|
||||||
velma | 68 |
|
||||||
larry | 60 |
|
||||||
carina | 58 |
|
||||||
jane | 58 |
|
||||||
juanita | 58 |
|
||||||
zola | 58 |
|
||||||
sue | 50 |
|
||||||
karen | 48 |
|
||||||
pamela | 48 |
|
||||||
rean | 48 |
|
||||||
mike | 40 |
|
||||||
belinda | 38 |
|
||||||
jenifer | 38 |
|
||||||
liza | 38 |
|
||||||
sandy | 38 |
|
||||||
sumi | 38 |
|
||||||
teresa | 38 |
|
||||||
sally | 34 |
|
||||||
alex | 30 |
|
||||||
cim | 30 |
|
||||||
sam | 30 |
|
||||||
fred | 28 |
|
||||||
jean | 28 |
|
||||||
melissa | 28 |
|
||||||
nan | 28 |
|
||||||
lita | 25 |
|
||||||
sharon | 25 |
|
||||||
denise | 24 |
|
||||||
jeff | 23 |
|
||||||
bill | 20 |
|
||||||
joe | 20 |
|
||||||
linda | 19 |
|
||||||
sandra | 19 |
|
||||||
diane | 18 |
|
||||||
edna | 18 |
|
||||||
gina | 18 |
|
||||||
joan | 18 |
|
||||||
pat | 18 |
|
||||||
fanny | 8 |
|
||||||
mary | 8 |
|
||||||
(58 rows) |
|
||||||
|
|
||||||
-- |
|
||||||
-- Test some cases involving whole-row Var referencing a subquery |
|
||||||
-- |
|
||||||
select foo from (select 1) as foo; |
|
||||||
foo |
|
||||||
----- |
|
||||||
(1) |
|
||||||
(1 row) |
|
||||||
|
|
||||||
select foo from (select null) as foo; |
|
||||||
foo |
|
||||||
----- |
|
||||||
() |
|
||||||
(1 row) |
|
||||||
|
|
||||||
select foo from (select 'xyzzy',1,null) as foo; |
|
||||||
foo |
|
||||||
------------ |
|
||||||
(xyzzy,1,) |
|
||||||
(1 row) |
|
||||||
|
|
||||||
-- |
|
||||||
-- Test VALUES lists |
|
||||||
-- |
|
||||||
select * from onek, (values(147, 'RFAAAA'), (931, 'VJAAAA')) as v (i, j) |
|
||||||
WHERE onek.unique1 = v.i and onek.stringu1 = v.j; |
|
||||||
unique1 | unique2 | two | four | ten | twenty | hundred | thousand | twothousand | fivethous | tenthous | odd | even | stringu1 | stringu2 | string4 | i | j |
|
||||||
---------+---------+-----+------+-----+--------+---------+----------+-------------+-----------+----------+-----+------+----------+----------+---------+-----+-------- |
|
||||||
147 | 0 | 1 | 3 | 7 | 7 | 7 | 47 | 147 | 147 | 147 | 14 | 15 | RFAAAA | AAAAAA | AAAAxx | 147 | RFAAAA |
|
||||||
931 | 1 | 1 | 3 | 1 | 11 | 1 | 31 | 131 | 431 | 931 | 2 | 3 | VJAAAA | BAAAAA | HHHHxx | 931 | VJAAAA |
|
||||||
(2 rows) |
|
||||||
|
|
||||||
-- a more complex case |
|
||||||
-- looks like we're coding lisp :-) |
|
||||||
select * from onek, |
|
||||||
(values ((select i from |
|
||||||
(values(10000), (2), (389), (1000), (2000), ((select 10029))) as foo(i) |
|
||||||
order by i asc limit 1))) bar (i) |
|
||||||
where onek.unique1 = bar.i; |
|
||||||
unique1 | unique2 | two | four | ten | twenty | hundred | thousand | twothousand | fivethous | tenthous | odd | even | stringu1 | stringu2 | string4 | i |
|
||||||
---------+---------+-----+------+-----+--------+---------+----------+-------------+-----------+----------+-----+------+----------+----------+---------+--- |
|
||||||
2 | 326 | 0 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 4 | 5 | CAAAAA | OMAAAA | OOOOxx | 2 |
|
||||||
(1 row) |
|
||||||
|
|
||||||
-- try VALUES in a subquery |
|
||||||
select * from onek |
|
||||||
where (unique1,ten) in (values (1,1), (20,0), (99,9), (17,99)) |
|
||||||
order by unique1; |
|
||||||
unique1 | unique2 | two | four | ten | twenty | hundred | thousand | twothousand | fivethous | tenthous | odd | even | stringu1 | stringu2 | string4 |
|
||||||
---------+---------+-----+------+-----+--------+---------+----------+-------------+-----------+----------+-----+------+----------+----------+--------- |
|
||||||
1 | 214 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 3 | BAAAAA | GIAAAA | OOOOxx |
|
||||||
20 | 306 | 0 | 0 | 0 | 0 | 0 | 20 | 20 | 20 | 20 | 0 | 1 | UAAAAA | ULAAAA | OOOOxx |
|
||||||
99 | 101 | 1 | 3 | 9 | 19 | 9 | 99 | 99 | 99 | 99 | 18 | 19 | VDAAAA | XDAAAA | HHHHxx |
|
||||||
(3 rows) |
|
||||||
|
|
||||||
-- VALUES is also legal as a standalone query or a set-operation member |
|
||||||
VALUES (1,2), (3,4+4), (7,77.7); |
|
||||||
column1 | column2 |
|
||||||
---------+--------- |
|
||||||
1 | 2 |
|
||||||
3 | 8 |
|
||||||
7 | 77.7 |
|
||||||
(3 rows) |
|
||||||
|
|
||||||
VALUES (1,2), (3,4+4), (7,77.7) |
|
||||||
UNION ALL |
|
||||||
SELECT 2+2, 57 |
|
||||||
UNION ALL |
|
||||||
SELECT * FROM int8_tbl; |
|
||||||
column1 | column2 |
|
||||||
------------------+------------------- |
|
||||||
1 | 2 |
|
||||||
3 | 8 |
|
||||||
7 | 77.7 |
|
||||||
4 | 57 |
|
||||||
123 | 456 |
|
||||||
123 | 4567890123456789 |
|
||||||
4567890123456789 | 123 |
|
||||||
4567890123456789 | 4567890123456789 |
|
||||||
4567890123456789 | -4567890123456789 |
|
||||||
(9 rows) |
|
||||||
|
|
||||||
-- |
|
||||||
-- Test ORDER BY options |
|
||||||
-- |
|
||||||
CREATE TEMP TABLE foo (f1 int); |
|
||||||
INSERT INTO foo VALUES (42),(3),(10),(7),(null),(null),(1); |
|
||||||
SELECT * FROM foo ORDER BY f1; |
|
||||||
f1 |
|
||||||
---- |
|
||||||
1 |
|
||||||
3 |
|
||||||
7 |
|
||||||
10 |
|
||||||
42 |
|
||||||
|
|
||||||
|
|
||||||
(7 rows) |
|
||||||
|
|
||||||
SELECT * FROM foo ORDER BY f1 ASC; -- same thing |
|
||||||
f1 |
|
||||||
---- |
|
||||||
1 |
|
||||||
3 |
|
||||||
7 |
|
||||||
10 |
|
||||||
42 |
|
||||||
|
|
||||||
|
|
||||||
(7 rows) |
|
||||||
|
|
||||||
SELECT * FROM foo ORDER BY f1 NULLS FIRST; |
|
||||||
f1 |
|
||||||
---- |
|
||||||
|
|
||||||
|
|
||||||
1 |
|
||||||
3 |
|
||||||
7 |
|
||||||
10 |
|
||||||
42 |
|
||||||
(7 rows) |
|
||||||
|
|
||||||
SELECT * FROM foo ORDER BY f1 DESC; |
|
||||||
f1 |
|
||||||
---- |
|
||||||
|
|
||||||
|
|
||||||
42 |
|
||||||
10 |
|
||||||
7 |
|
||||||
3 |
|
||||||
1 |
|
||||||
(7 rows) |
|
||||||
|
|
||||||
SELECT * FROM foo ORDER BY f1 DESC NULLS LAST; |
|
||||||
f1 |
|
||||||
---- |
|
||||||
42 |
|
||||||
10 |
|
||||||
7 |
|
||||||
3 |
|
||||||
1 |
|
||||||
|
|
||||||
|
|
||||||
(7 rows) |
|
||||||
|
|
||||||
-- check if indexscans do the right things |
|
||||||
CREATE INDEX fooi ON foo (f1); |
|
||||||
SET enable_sort = false; |
|
||||||
SELECT * FROM foo ORDER BY f1; |
|
||||||
f1 |
|
||||||
---- |
|
||||||
1 |
|
||||||
3 |
|
||||||
7 |
|
||||||
10 |
|
||||||
42 |
|
||||||
|
|
||||||
|
|
||||||
(7 rows) |
|
||||||
|
|
||||||
SELECT * FROM foo ORDER BY f1 NULLS FIRST; |
|
||||||
f1 |
|
||||||
---- |
|
||||||
|
|
||||||
|
|
||||||
1 |
|
||||||
3 |
|
||||||
7 |
|
||||||
10 |
|
||||||
42 |
|
||||||
(7 rows) |
|
||||||
|
|
||||||
SELECT * FROM foo ORDER BY f1 DESC; |
|
||||||
f1 |
|
||||||
---- |
|
||||||
|
|
||||||
|
|
||||||
42 |
|
||||||
10 |
|
||||||
7 |
|
||||||
3 |
|
||||||
1 |
|
||||||
(7 rows) |
|
||||||
|
|
||||||
SELECT * FROM foo ORDER BY f1 DESC NULLS LAST; |
|
||||||
f1 |
|
||||||
---- |
|
||||||
42 |
|
||||||
10 |
|
||||||
7 |
|
||||||
3 |
|
||||||
1 |
|
||||||
|
|
||||||
|
|
||||||
(7 rows) |
|
||||||
|
|
||||||
DROP INDEX fooi; |
|
||||||
CREATE INDEX fooi ON foo (f1 DESC); |
|
||||||
SELECT * FROM foo ORDER BY f1; |
|
||||||
f1 |
|
||||||
---- |
|
||||||
1 |
|
||||||
3 |
|
||||||
7 |
|
||||||
10 |
|
||||||
42 |
|
||||||
|
|
||||||
|
|
||||||
(7 rows) |
|
||||||
|
|
||||||
SELECT * FROM foo ORDER BY f1 NULLS FIRST; |
|
||||||
f1 |
|
||||||
---- |
|
||||||
|
|
||||||
|
|
||||||
1 |
|
||||||
3 |
|
||||||
7 |
|
||||||
10 |
|
||||||
42 |
|
||||||
(7 rows) |
|
||||||
|
|
||||||
SELECT * FROM foo ORDER BY f1 DESC; |
|
||||||
f1 |
|
||||||
---- |
|
||||||
|
|
||||||
|
|
||||||
42 |
|
||||||
10 |
|
||||||
7 |
|
||||||
3 |
|
||||||
1 |
|
||||||
(7 rows) |
|
||||||
|
|
||||||
SELECT * FROM foo ORDER BY f1 DESC NULLS LAST; |
|
||||||
f1 |
|
||||||
---- |
|
||||||
42 |
|
||||||
10 |
|
||||||
7 |
|
||||||
3 |
|
||||||
1 |
|
||||||
|
|
||||||
|
|
||||||
(7 rows) |
|
||||||
|
|
||||||
DROP INDEX fooi; |
|
||||||
CREATE INDEX fooi ON foo (f1 DESC NULLS LAST); |
|
||||||
SELECT * FROM foo ORDER BY f1; |
|
||||||
f1 |
|
||||||
---- |
|
||||||
1 |
|
||||||
3 |
|
||||||
7 |
|
||||||
10 |
|
||||||
42 |
|
||||||
|
|
||||||
|
|
||||||
(7 rows) |
|
||||||
|
|
||||||
SELECT * FROM foo ORDER BY f1 NULLS FIRST; |
|
||||||
f1 |
|
||||||
---- |
|
||||||
|
|
||||||
|
|
||||||
1 |
|
||||||
3 |
|
||||||
7 |
|
||||||
10 |
|
||||||
42 |
|
||||||
(7 rows) |
|
||||||
|
|
||||||
SELECT * FROM foo ORDER BY f1 DESC; |
|
||||||
f1 |
|
||||||
---- |
|
||||||
|
|
||||||
|
|
||||||
42 |
|
||||||
10 |
|
||||||
7 |
|
||||||
3 |
|
||||||
1 |
|
||||||
(7 rows) |
|
||||||
|
|
||||||
SELECT * FROM foo ORDER BY f1 DESC NULLS LAST; |
|
||||||
f1 |
|
||||||
---- |
|
||||||
42 |
|
||||||
10 |
|
||||||
7 |
|
||||||
3 |
|
||||||
1 |
|
||||||
|
|
||||||
|
|
||||||
(7 rows) |
|
||||||
|
|
||||||
-- |
|
||||||
-- Test some corner cases that have been known to confuse the planner |
|
||||||
-- |
|
||||||
-- ORDER BY on a constant doesn't really need any sorting |
|
||||||
SELECT 1 AS x ORDER BY x; |
|
||||||
x |
|
||||||
--- |
|
||||||
1 |
|
||||||
(1 row) |
|
||||||
|
|
||||||
-- But ORDER BY on a set-valued expression does |
|
||||||
create function sillysrf(int) returns setof int as |
|
||||||
'values (1),(10),(2),($1)' language sql immutable; |
|
||||||
select sillysrf(42); |
|
||||||
sillysrf |
|
||||||
---------- |
|
||||||
1 |
|
||||||
10 |
|
||||||
2 |
|
||||||
42 |
|
||||||
(4 rows) |
|
||||||
|
|
||||||
select sillysrf(-1) order by 1; |
|
||||||
sillysrf |
|
||||||
---------- |
|
||||||
-1 |
|
||||||
1 |
|
||||||
2 |
|
||||||
10 |
|
||||||
(4 rows) |
|
||||||
|
|
||||||
drop function sillysrf(int); |
|
Loading…
Reference in new issue