aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>1999-07-19 00:29:07 +0000
committerTom Lane <tgl@sss.pgh.pa.us>1999-07-19 00:29:07 +0000
commit0c4929ff86564095245fa6db3d1c790aeb44bcd4 (patch)
tree2c7a33c778ba6de45f66f3bc8059049fa5c6a85c
parent7f76eab140e703b7847b107245a669e2010886c0 (diff)
downloadpostgresql-0c4929ff86564095245fa6db3d1c790aeb44bcd4.tar.gz
postgresql-0c4929ff86564095245fa6db3d1c790aeb44bcd4.zip
Parser no longer considers
SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2; to be ambiguous ... which I think is correct behavior.
-rw-r--r--src/test/regress/expected/select_implicit.out19
-rw-r--r--src/test/regress/sql/select_implicit.sql32
2 files changed, 25 insertions, 26 deletions
diff --git a/src/test/regress/expected/select_implicit.out b/src/test/regress/expected/select_implicit.out
index 910bf221de4..a9b94c9b1e1 100644
--- a/src/test/regress/expected/select_implicit.out
+++ b/src/test/regress/expected/select_implicit.out
@@ -133,7 +133,15 @@ QUERY: SELECT a/2, a/2 FROM test_missing_target
QUERY: SELECT a/2, a/2 FROM test_missing_target
GROUP BY a/2;
-ERROR: GROUP BY has ambiguous expression
+?column?|?column?
+--------+--------
+ 0| 0
+ 1| 1
+ 2| 2
+ 3| 3
+ 4| 4
+(5 rows)
+
QUERY: SELECT x.b, count(*) FROM test_missing_target x, test_missing_target y
WHERE x.a = y.a
GROUP BY x.b;
@@ -169,19 +177,14 @@ count
4
(4 rows)
-QUERY: SELECT a%2, count(a) FROM test_missing_target GROUP BY test_missing_target.a%2;
+QUERY: SELECT a%2, count(b) FROM test_missing_target GROUP BY test_missing_target.a%2;
?column?|count
--------+-----
0| 5
1| 5
(2 rows)
-QUERY: /*
- NOTE: as of 1998-08-01 a bug was detected unrelated to this feature which
- requires the aggragate function argument to be the same as some non-agragate
- in the target list. (i.e. count(*) and count(b) crash the backend.)
-*/
-SELECT count(c) FROM test_missing_target GROUP BY lower(test_missing_target.c);
+QUERY: SELECT count(c) FROM test_missing_target GROUP BY lower(test_missing_target.c);
count
-----
2
diff --git a/src/test/regress/sql/select_implicit.sql b/src/test/regress/sql/select_implicit.sql
index 041e761b05d..55a6efad05f 100644
--- a/src/test/regress/sql/select_implicit.sql
+++ b/src/test/regress/sql/select_implicit.sql
@@ -53,38 +53,38 @@ SELECT c, count(*) FROM test_missing_target GROUP BY 1;
-- failure expected
SELECT c, count(*) FROM test_missing_target GROUP BY 3;
--- group w/o existing GROUP BY and ORDER BY target under ambigious condition
+-- 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
GROUP BY b ORDER BY b;
--- order w/ target under ambigious condition
+-- order w/ target under ambiguous condition
-- failure NOT expected
SELECT a, a FROM test_missing_target
ORDER BY a;
--- order expression w/ target under ambigious condition
+-- order expression w/ target under ambiguous condition
-- failure NOT expected
SELECT a/2, a/2 FROM test_missing_target
ORDER BY a/2;
--- group expression w/ target under ambigious condition
--- failure expected
+-- group expression w/ target under ambiguous condition
+-- failure NOT expected
SELECT a/2, a/2 FROM test_missing_target
GROUP BY a/2;
--- group w/ existing GROUP BY target under ambigious condition
+-- 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
GROUP BY x.b;
--- group w/o existing GROUP BY target under ambigious condition
+-- 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
GROUP BY x.b;
--- group w/o existing GROUP BY target under ambigious condition
+-- 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
@@ -96,12 +96,7 @@ SELECT * FROM test_missing_target2;
-- Functions and expressions
-- w/ existing GROUP BY target
-SELECT a%2, count(a) FROM test_missing_target GROUP BY test_missing_target.a%2;
-/*
- NOTE: as of 1998-08-01 a bug was detected unrelated to this feature which
- requires the aggragate function argument to be the same as some non-agragate
- in the target list. (i.e. count(*) and count(b) crash the backend.)
-*/
+SELECT a%2, count(b) FROM test_missing_target GROUP BY test_missing_target.a%2;
-- 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);
@@ -124,23 +119,24 @@ SELECT a FROM test_missing_target ORDER BY upper(d);
SELECT count(b) FROM test_missing_target
GROUP BY (b + 1) / 2 ORDER BY (b + 1) / 2 desc;
--- group w/o existing GROUP BY and ORDER BY target under ambigious condition
+-- 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
GROUP BY b/2 ORDER BY b/2;
--- group w/ existing GROUP BY target under ambigious condition
+-- 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
GROUP BY x.b/2;
--- group w/o existing GROUP BY target under ambigious condition
+-- 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
GROUP BY x.b/2;
--- group w/o existing GROUP BY target under ambigious condition
+-- 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