diff options
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/regress/expected/circle.out | 2 | ||||
| -rw-r--r-- | src/test/regress/expected/create_index.out | 16 | ||||
| -rw-r--r-- | src/test/regress/expected/geometry.out | 2 | ||||
| -rw-r--r-- | src/test/regress/expected/geometry_1.out | 2 | ||||
| -rw-r--r-- | src/test/regress/expected/geometry_2.out | 2 | ||||
| -rw-r--r-- | src/test/regress/expected/point.out | 4 | ||||
| -rw-r--r-- | src/test/regress/expected/select.out | 216 | ||||
| -rw-r--r-- | src/test/regress/sql/circle.sql | 2 | ||||
| -rw-r--r-- | src/test/regress/sql/create_index.sql | 12 | ||||
| -rw-r--r-- | src/test/regress/sql/geometry.sql | 2 | ||||
| -rw-r--r-- | src/test/regress/sql/point.sql | 4 | ||||
| -rw-r--r-- | src/test/regress/sql/select.sql | 39 |
12 files changed, 279 insertions, 24 deletions
diff --git a/src/test/regress/expected/circle.out b/src/test/regress/expected/circle.out index 0f8cf741e8c..a63e348acaa 100644 --- a/src/test/regress/expected/circle.out +++ b/src/test/regress/expected/circle.out @@ -81,7 +81,7 @@ SELECT '' AS four, f1 FROM CIRCLE_TBL WHERE diameter(f1) >= 10; SELECT '' as five, c1.f1 AS one, c2.f1 AS two, (c1.f1 <-> c2.f1) AS distance FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE (c1.f1 < c2.f1) AND ((c1.f1 <-> c2.f1) > 0) - ORDER BY distance, one USING < , two USING < ; + ORDER BY distance, area(c1.f1), area(c2.f1); five | one | two | distance ------+----------------+----------------+------------------ | <(100,200),10> | <(100,1),115> | 74 diff --git a/src/test/regress/expected/create_index.out b/src/test/regress/expected/create_index.out index c19794e67ed..fff65adfb60 100644 --- a/src/test/regress/expected/create_index.out +++ b/src/test/regress/expected/create_index.out @@ -62,11 +62,11 @@ SET enable_indexscan = OFF; SET enable_bitmapscan = OFF; SELECT * FROM fast_emp4000 WHERE home_base @ '(200,200),(2000,1000)'::box - ORDER BY home_base USING <; + ORDER BY (home_base[0])[0]; home_base ----------------------- - (1444,403),(1346,344) (337,455),(240,359) + (1444,403),(1346,344) (2 rows) SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box; @@ -76,14 +76,14 @@ SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box; (1 row) SELECT * FROM polygon_tbl WHERE f1 ~ '((1,1),(2,2),(2,1))'::polygon - ORDER BY f1 USING <<; + ORDER BY (poly_center(f1))[0]; f1 --------------------- ((2,0),(2,4),(0,0)) (1 row) SELECT * FROM circle_tbl WHERE f1 && circle(point(1,-2), 1) - ORDER BY f1 USING <; + ORDER BY area(f1); f1 --------------- <(1,2),3> @@ -112,11 +112,11 @@ SET enable_bitmapscan = ON; -- changes too often for me to want to put an EXPLAIN in the test...) SELECT * FROM fast_emp4000 WHERE home_base @ '(200,200),(2000,1000)'::box - ORDER BY home_base USING <; + ORDER BY (home_base[0])[0]; home_base ----------------------- - (1444,403),(1346,344) (337,455),(240,359) + (1444,403),(1346,344) (2 rows) SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box; @@ -126,14 +126,14 @@ SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box; (1 row) SELECT * FROM polygon_tbl WHERE f1 ~ '((1,1),(2,2),(2,1))'::polygon - ORDER BY f1 USING <<; + ORDER BY (poly_center(f1))[0]; f1 --------------------- ((2,0),(2,4),(0,0)) (1 row) SELECT * FROM circle_tbl WHERE f1 && circle(point(1,-2), 1) - ORDER BY f1 USING <; + ORDER BY area(f1); f1 --------------- <(1,2),3> diff --git a/src/test/regress/expected/geometry.out b/src/test/regress/expected/geometry.out index 79763f81003..f307788cf14 100644 --- a/src/test/regress/expected/geometry.out +++ b/src/test/regress/expected/geometry.out @@ -506,7 +506,7 @@ SELECT '' AS two, circle(f1) SELECT '' AS twentyfour, c1.f1 AS circle, p1.f1 AS point, (p1.f1 <-> c1.f1) AS distance FROM CIRCLE_TBL c1, POINT_TBL p1 WHERE (p1.f1 <-> c1.f1) > 0 - ORDER BY distance, circle using <, point using <<; + ORDER BY distance, area(c1.f1), p1.f1[0]; twentyfour | circle | point | distance ------------+----------------+------------+--------------- | <(1,2),3> | (-3,4) | 1.472135955 diff --git a/src/test/regress/expected/geometry_1.out b/src/test/regress/expected/geometry_1.out index 81e6b535ef3..3c7234b2b4d 100644 --- a/src/test/regress/expected/geometry_1.out +++ b/src/test/regress/expected/geometry_1.out @@ -506,7 +506,7 @@ SELECT '' AS two, circle(f1) SELECT '' AS twentyfour, c1.f1 AS circle, p1.f1 AS point, (p1.f1 <-> c1.f1) AS distance FROM CIRCLE_TBL c1, POINT_TBL p1 WHERE (p1.f1 <-> c1.f1) > 0 - ORDER BY distance, circle using <, point using <<; + ORDER BY distance, area(c1.f1), p1.f1[0]; twentyfour | circle | point | distance ------------+----------------+------------+--------------- | <(1,2),3> | (-3,4) | 1.472135955 diff --git a/src/test/regress/expected/geometry_2.out b/src/test/regress/expected/geometry_2.out index bcc405e8c7d..7daddc4a420 100644 --- a/src/test/regress/expected/geometry_2.out +++ b/src/test/regress/expected/geometry_2.out @@ -506,7 +506,7 @@ SELECT '' AS two, circle(f1) SELECT '' AS twentyfour, c1.f1 AS circle, p1.f1 AS point, (p1.f1 <-> c1.f1) AS distance FROM CIRCLE_TBL c1, POINT_TBL p1 WHERE (p1.f1 <-> c1.f1) > 0 - ORDER BY distance, circle using <, point using <<; + ORDER BY distance, area(c1.f1), p1.f1[0]; twentyfour | circle | point | distance ------------+----------------+------------+--------------- | <(1,2),3> | (-3,4) | 1.472135955 diff --git a/src/test/regress/expected/point.out b/src/test/regress/expected/point.out index 552be515d6f..96bcc6d695c 100644 --- a/src/test/regress/expected/point.out +++ b/src/test/regress/expected/point.out @@ -108,7 +108,7 @@ SELECT '' AS six, p.f1, p.f1 <-> point '(0,0)' AS dist SET geqo TO 'off'; SELECT '' AS thirtysix, p1.f1 AS point1, p2.f1 AS point2, p1.f1 <-> p2.f1 AS dist FROM POINT_TBL p1, POINT_TBL p2 - ORDER BY dist, point1 using <<, point2 using <<; + ORDER BY dist, p1.f1[0], p2.f1[0]; thirtysix | point1 | point2 | dist -----------+------------+------------+------------------ | (-10,0) | (-10,0) | 0 @@ -190,7 +190,7 @@ SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2 SELECT '' AS fifteen, p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance FROM POINT_TBL p1, POINT_TBL p2 WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1 - ORDER BY distance, point1 using <<, point2 using <<; + ORDER BY distance, p1.f1[0], p2.f1[0]; fifteen | point1 | point2 | distance ---------+------------+------------+------------------ | (-3,4) | (0,0) | 5 diff --git a/src/test/regress/expected/select.out b/src/test/regress/expected/select.out index 6fcc88860d6..0b3f546bdfb 100644 --- a/src/test/regress/expected/select.out +++ b/src/test/regress/expected/select.out @@ -513,3 +513,219 @@ SELECT * FROM int8_tbl; 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) + diff --git a/src/test/regress/sql/circle.sql b/src/test/regress/sql/circle.sql index fe229b3b2c0..c0284b2b598 100644 --- a/src/test/regress/sql/circle.sql +++ b/src/test/regress/sql/circle.sql @@ -42,4 +42,4 @@ SELECT '' AS four, f1 FROM CIRCLE_TBL WHERE diameter(f1) >= 10; SELECT '' as five, c1.f1 AS one, c2.f1 AS two, (c1.f1 <-> c2.f1) AS distance FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE (c1.f1 < c2.f1) AND ((c1.f1 <-> c2.f1) > 0) - ORDER BY distance, one USING < , two USING < ; + ORDER BY distance, area(c1.f1), area(c2.f1); diff --git a/src/test/regress/sql/create_index.sql b/src/test/regress/sql/create_index.sql index a4bd1db9155..70d17ec68c1 100644 --- a/src/test/regress/sql/create_index.sql +++ b/src/test/regress/sql/create_index.sql @@ -92,15 +92,15 @@ SET enable_bitmapscan = OFF; SELECT * FROM fast_emp4000 WHERE home_base @ '(200,200),(2000,1000)'::box - ORDER BY home_base USING <; + ORDER BY (home_base[0])[0]; SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box; SELECT * FROM polygon_tbl WHERE f1 ~ '((1,1),(2,2),(2,1))'::polygon - ORDER BY f1 USING <<; + ORDER BY (poly_center(f1))[0]; SELECT * FROM circle_tbl WHERE f1 && circle(point(1,-2), 1) - ORDER BY f1 USING <; + ORDER BY area(f1); SELECT count(*) FROM gpolygon_tbl WHERE f1 && '(1000,1000,0,0)'::polygon; @@ -115,15 +115,15 @@ SET enable_bitmapscan = ON; -- changes too often for me to want to put an EXPLAIN in the test...) SELECT * FROM fast_emp4000 WHERE home_base @ '(200,200),(2000,1000)'::box - ORDER BY home_base USING <; + ORDER BY (home_base[0])[0]; SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box; SELECT * FROM polygon_tbl WHERE f1 ~ '((1,1),(2,2),(2,1))'::polygon - ORDER BY f1 USING <<; + ORDER BY (poly_center(f1))[0]; SELECT * FROM circle_tbl WHERE f1 && circle(point(1,-2), 1) - ORDER BY f1 USING <; + ORDER BY area(f1); SELECT count(*) FROM gpolygon_tbl WHERE f1 && '(1000,1000,0,0)'::polygon; diff --git a/src/test/regress/sql/geometry.sql b/src/test/regress/sql/geometry.sql index c53d9116faa..523bcdb76df 100644 --- a/src/test/regress/sql/geometry.sql +++ b/src/test/regress/sql/geometry.sql @@ -152,4 +152,4 @@ SELECT '' AS two, circle(f1) SELECT '' AS twentyfour, c1.f1 AS circle, p1.f1 AS point, (p1.f1 <-> c1.f1) AS distance FROM CIRCLE_TBL c1, POINT_TBL p1 WHERE (p1.f1 <-> c1.f1) > 0 - ORDER BY distance, circle using <, point using <<; + ORDER BY distance, area(c1.f1), p1.f1[0]; diff --git a/src/test/regress/sql/point.sql b/src/test/regress/sql/point.sql index efbfe6905f5..1f5f7635d19 100644 --- a/src/test/regress/sql/point.sql +++ b/src/test/regress/sql/point.sql @@ -59,7 +59,7 @@ SET geqo TO 'off'; SELECT '' AS thirtysix, p1.f1 AS point1, p2.f1 AS point2, p1.f1 <-> p2.f1 AS dist FROM POINT_TBL p1, POINT_TBL p2 - ORDER BY dist, point1 using <<, point2 using <<; + ORDER BY dist, p1.f1[0], p2.f1[0]; SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2 FROM POINT_TBL p1, POINT_TBL p2 @@ -69,7 +69,7 @@ SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2 SELECT '' AS fifteen, p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance FROM POINT_TBL p1, POINT_TBL p2 WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1 - ORDER BY distance, point1 using <<, point2 using <<; + ORDER BY distance, p1.f1[0], p2.f1[0]; -- put distance result into output to allow sorting with GEQ optimizer - tgl 97/05/10 SELECT '' AS three, p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance diff --git a/src/test/regress/sql/select.sql b/src/test/regress/sql/select.sql index 2c813a9d8e5..f23cccd24f9 100644 --- a/src/test/regress/sql/select.sql +++ b/src/test/regress/sql/select.sql @@ -138,3 +138,42 @@ UNION ALL SELECT 2+2, 57 UNION ALL SELECT * FROM int8_tbl; + +-- +-- 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; +SELECT * FROM foo ORDER BY f1 ASC; -- same thing +SELECT * FROM foo ORDER BY f1 NULLS FIRST; +SELECT * FROM foo ORDER BY f1 DESC; +SELECT * FROM foo ORDER BY f1 DESC NULLS LAST; + +-- check if indexscans do the right things +CREATE INDEX fooi ON foo (f1); +SET enable_sort = false; + +SELECT * FROM foo ORDER BY f1; +SELECT * FROM foo ORDER BY f1 NULLS FIRST; +SELECT * FROM foo ORDER BY f1 DESC; +SELECT * FROM foo ORDER BY f1 DESC NULLS LAST; + +DROP INDEX fooi; +CREATE INDEX fooi ON foo (f1 DESC); + +SELECT * FROM foo ORDER BY f1; +SELECT * FROM foo ORDER BY f1 NULLS FIRST; +SELECT * FROM foo ORDER BY f1 DESC; +SELECT * FROM foo ORDER BY f1 DESC NULLS LAST; + +DROP INDEX fooi; +CREATE INDEX fooi ON foo (f1 DESC NULLS LAST); + +SELECT * FROM foo ORDER BY f1; +SELECT * FROM foo ORDER BY f1 NULLS FIRST; +SELECT * FROM foo ORDER BY f1 DESC; +SELECT * FROM foo ORDER BY f1 DESC NULLS LAST; |
