Re: hint infrastructure setup (v3) - Mailing list pgsql-patches

From Fabien COELHO
Subject Re: hint infrastructure setup (v3)
Date
Msg-id Pine.GSO.4.58.0404021537350.2755@louis
Whole thread Raw
In response to Re: hint infrastructure setup (v3)  (Bruce Momjian <pgman@candle.pha.pa.us>)
Responses Re: hint infrastructure setup (v3)
List pgsql-patches
> Please show us an example of what a typical hint would look like to the
> user.

As an illustration, here is the kind of thing I had with an early
quick and dirty proof of concept implementation I made for myself
one month ago.

As a result of this first try, I've convinced myself that I should do
that cleanly and incrementally, one command at a time, with a proper clean
infrastructure, and intermediate validations...

My idea of the target audience for those hints is my students while
they're learning SQL.


--
-- test HINTs provided on parser errors.
--
-- it should:
-- (1) trigger all possible hints
-- (2) include ACTUAL syntax errors by REAL people
--
-- Note that these test assume a psql like interface which
-- can only send "lexable" and "even" commands to the backend.
-- Thus I cannot test badly closed quotes or parentheses.
--
--
-- (1) all hints
--
--
-- sql command expected

foo;
ERROR:  syntax error at or near "foo" at character 1
HINT:  sql command such as SELECT, CREATE, GRANT... expected

123;
ERROR:  syntax error at or near "123" at character 1
HINT:  sql command such as SELECT, CREATE, GRANT... expected

+;
ERROR:  syntax error at or near "+" at character 1
HINT:  sql command such as SELECT, CREATE, GRANT... expected

'hello world';
ERROR:  syntax error at or near "'hello world'" at character 1
HINT:  sql command such as SELECT, CREATE, GRANT... expected

NULL;
ERROR:  syntax error at or near "NULL" at character 1
HINT:  sql command such as SELECT, CREATE, GRANT... expected

COLUMN;
ERROR:  syntax error at or near "COLUMN" at character 1
HINT:  sql command such as SELECT, CREATE, GRANT... expected

CREAT TABLE foo(id INT4);
ERROR:  syntax error at or near "CREAT" at character 1
HINT:  sql command such as SELECT, CREATE, GRANT... expected

--
-- CREATE xxx

CREATE 123;
ERROR:  syntax error at or near "123" at character 8
HINT:  OR REPLACE, TABLE, DATABASE, USER... expected

CREATE foo;
ERROR:  syntax error at or near "foo" at character 8
HINT:  OR REPLACE, TABLE, DATABASE, USER... expected

CREATE + CREATE ();
ERROR:  syntax error at or near "+" at character 8
HINT:  OR REPLACE, TABLE, DATABASE, USER... expected

CREATE INT4;
ERROR:  syntax error at or near "INT4" at character 8
HINT:  OR REPLACE, TABLE, DATABASE, USER... expected

CREATE OR foo;
ERROR:  syntax error at or near "foo" at character 11
HINT:  REPLACE expected

--
-- DROP xxx

DROP 123;
ERROR:  syntax error at or near "123" at character 6
HINT:  object such as TABLE, DATABASE, USER... expected

DROP foo;
ERROR:  syntax error at or near "foo" at character 6
HINT:  object such as TABLE, DATABASE, USER... expected

DROP USER 123;
ERROR:  syntax error at or near "123" at character 11
HINT:  user id such as calvin expected

DROP SYSID 123;
ERROR:  syntax error at or near "SYSID" at character 6
HINT:  object such as TABLE, DATABASE, USER... expected

DROP USER SYSID 123;
ERROR:  syntax error at or near "123" at character 17

DROP GROUP 321;
ERROR:  syntax error at or near "321" at character 12
HINT:  group id such as admin expected

DROP GROUP calvin, foo;
ERROR:  syntax error at or near "," at character 18
HINT:  ; expected

DROP TABLE (foo);
ERROR:  syntax error at or near "(" at character 12
HINT:  table name... expected

--
-- CREATE USER

CREATE USER COLUMN;
ERROR:  syntax error at or near "COLUMN" at character 13
HINT:  user id such as calvin expected

CREATE USER 123;
ERROR:  syntax error at or near "123" at character 13
HINT:  user id such as calvin expected

CREATE USER 'hello';
ERROR:  syntax error at or near "'hello'" at character 13
HINT:  user id such as calvin expected

CREATE USER calvin foo;
ERROR:  syntax error at or near "foo" at character 20
HINT:  user options or SET or RESET expected

CREATE USER calvin WITH foo;
ERROR:  syntax error at or near "foo" at character 25
HINT:  user options expected

CREATE USER calvin WITH CREATEDB foo;
ERROR:  syntax error at or near "foo" at character 34
HINT:  other user options or ';' expected

CREATE USER calvin PASSWORD 123;
ERROR:  syntax error at or near "123" at character 29
HINT:  password string such as 'secret' expected

CREATE USER calvin WITH PASSWORD 123;
ERROR:  syntax error at or near "123" at character 34
HINT:  password string such as 'secret' expected

CREATE USER calvin WITH ENCRYPTED 'pass';
ERROR:  syntax error at or near "'pass'" at character 35
HINT:  PASSWORD expected

CREATE USER calvin WITH UNENCRYPTED 'pass';
ERROR:  syntax error at or near "'pass'" at character 37
HINT:  PASSWORD expected

CREATE USER calvin WITH ENCRYPTED PASS 123;
ERROR:  syntax error at or near "PASS" at character 35
HINT:  PASSWORD expected

CREATE USER calvin WITH ENCRYPTED PASSWORD 123;
ERROR:  syntax error at or near "123" at character 44
HINT:  password string such as 'secret' expected

CREATE USER calvin WITH UNENCRYPTED PASSWORD 'secret' CREADB;
ERROR:  syntax error at or near "CREADB" at character 55
HINT:  other user options or ';' expected

CREATE USER calvin NOCREATEDB foo;
ERROR:  syntax error at or near "foo" at character 31
HINT:  other user options or ';' expected

CREATE USER calvin WITH IN foo;
ERROR:  syntax error at or near "foo" at character 28
HINT:  GROUP expected

CREATE USER calvin WITH IN GROUP 'foo';
ERROR:  syntax error at or near "'foo'" at character 34
HINT:  group id list expected

CREATE USER calvin WITH IN GROUP 123;
ERROR:  syntax error at or near "123" at character 34
HINT:  group id list expected

CREATE USER calvin WITH IN GROUP admin, column;
ERROR:  syntax error at or near "column" at character 41
HINT:  group id such as admin expected

CREATE USER calvin WITH IN GROUP admin, 123;
ERROR:  syntax error at or near "123" at character 41
HINT:  group id such as admin expected

CREATE USER calvin WITH IN GROUP admin, CREATEDB;
ERROR:  group "admin" does not exist

CREATE USER calvin WITH IN GROUP admin CREATEDB foo;
ERROR:  syntax error at or near "foo" at character 49
HINT:  other user options or ';' expected

CREATE USER calvin NOCREATEUSER CREATEDB foo;
ERROR:  syntax error at or near "foo" at character 42
HINT:  other user options or ';' expected

CREATE USER calvin CREATEUSER foo;
ERROR:  syntax error at or near "foo" at character 31
HINT:  other user options or ';' expected

CREATE USER calvin SYSID foo;
ERROR:  syntax error at or near "foo" at character 26
HINT:  integer constant expected

CREATE USER calvin SYSID 12 foo;
ERROR:  syntax error at or near "foo" at character 29
HINT:  other user options or ';' expected

CREATE USER calvin VALID UNTIL 12;
ERROR:  syntax error at or near "12" at character 32
HINT:  date string such as '01-02-2000' expected

CREATE USER calvin VALID foo;
ERROR:  syntax error at or near "foo" at character 26
HINT:  UNTIL expected

--
-- ALTER USER

ALTER USER calvin foo;
ERROR:  syntax error at or near "foo" at character 19
HINT:  user options or SET or RESET or ; expected

ALTER USER calvin WITH foo;
ERROR:  syntax error at or near "foo" at character 24
HINT:  user options expected

ALTER USER calvin SET foo;
ERROR:  syntax error at or near ";" at character 26
HINT:  SET stuff expected

ALTER USER calvin RESET 123;
ERROR:  syntax error at or near "123" at character 25
HINT:  user id such as calvin expected

--
-- CREATE GROUP

CREATE GROUP 123;
ERROR:  syntax error at or near "123" at character 14
HINT:  group id such as admin expected

CREATE GROUP grp foo;
ERROR:  syntax error at or near "foo" at character 18
HINT:  user list such as "USER calvin" or "SYSID 123" expected

CREATE GROUP grp WITH foo;
ERROR:  syntax error at or near "foo" at character 23
HINT:  user list such as "USER calvin" or "SYSID 123" expected

CREATE GROUP grp WITH USER ;
ERROR:  syntax error at or near ";" at character 28
HINT:  user id such as calvin expected

CREATE GROUP grp WITH USER 123;
ERROR:  syntax error at or near "123" at character 28
HINT:  user id such as calvin expected

CREATE GROUP grp WITH USER calvin, 123;
ERROR:  syntax error at or near "123" at character 36
HINT:  user id such as calvin expected

CREATE GROUP grp WITH SYSID calvin;
ERROR:  syntax error at or near "calvin" at character 29
HINT:  integer constant expected

CREATE GROUP grp WITH SYSID 'hello';
ERROR:  syntax error at or near "'hello'" at character 29
HINT:  integer constant expected

CREATE GROUP grp WITH USER calvin, hobbes SYSID 'hello';
ERROR:  syntax error at or near "'hello'" at character 49
HINT:  integer constant expected

CREATE GROUP grtp USER 123;
ERROR:  syntax error at or near "123" at character 24
HINT:  user id such as calvin expected

CREATE GROUP grtp SYSID calvin;
ERROR:  syntax error at or near "calvin" at character 25
HINT:  integer constant expected

CREATE GROUP grp WITH USER calvin, hobbes SYSID 123 foo;
ERROR:  syntax error at or near "foo" at character 53
HINT:  user list such as "USER calvin" or "SYSID 123" expected

--
-- ALTER GROUP

ALTER GROUP grp;
ERROR:  syntax error at or near ";" at character 16
HINT:  ADD or DROP expected

ALTER GROUP grp foo;
ERROR:  syntax error at or near "foo" at character 17
HINT:  ADD or DROP expected

ALTER GROUP grp ADD calvin;
ERROR:  syntax error at or near "calvin" at character 21
HINT:  USER user id list expected

ALTER GROUP grp DROP calvin;
ERROR:  syntax error at or near "calvin" at character 22
HINT:  USER user id list expected

ALTER GROUP grp ADD USER 123;
ERROR:  syntax error at or near "123" at character 26
HINT:  user id such as calvin expected

ALTER GROUP grp DROP USER 123;
ERROR:  syntax error at or near "123" at character 27
HINT:  user id such as calvin expected

ALTER GROUP grp ADD USER calvin, USER 123;
ERROR:  syntax error at or near "USER" at character 34
HINT:  user id such as calvin expected

ALTER GROUP grp DROP USER calvin, 123;
ERROR:  syntax error at or near "123" at character 35
HINT:  user id such as calvin expected

ALTER GROUP grp ADD SYSID calvin;
ERROR:  syntax error at or near "SYSID" at character 21
HINT:  USER user id list expected

ALTER GROUP grp DROP SYSID calvin;
ERROR:  syntax error at or near "SYSID" at character 22
HINT:  USER user id list expected

--
-- CREATE SCHEMA...

CREATE SCHEMA 123;
ERROR:  syntax error at or near "123" at character 15
HINT:  schema name or AUTHORIZATION expected

CREATE SCHEMA sch foo;
ERROR:  syntax error at or near "foo" at character 19
HINT:  AUTHORIZATION or ... expected

CREATE SCHEMA sch AUTHORIZATION 123;
ERROR:  syntax error at or near "123" at character 33
HINT:  user id such as calvin expected

CREATE SCHEMA AUTHORIZATION 123;
ERROR:  syntax error at or near "123" at character 29
HINT:  user id such as calvin expected

CREATE SCHEMA sch AUTHORIZATION calvin CREATE foo;
ERROR:  syntax error at or near "foo" at character 47
HINT:  TABLE, INDEX, SEQUENCE, TRIGGER or VIEW expected

CREATE SCHEMA sch AUTHORIZATION calvin CREATE TABLE +;
ERROR:  syntax error at or near "+" at character 53
HINT:  table name... expected

CREATE SCHEMA sch AUTHORIZATION calvin CREATE TABLE foo() xxx;
ERROR:  syntax error at or near "xxx" at character 59
HINT:  schema statement list such as CREATE TABLE/INDEX/SEQUENCE/TRIGGER/VIEW or GRANT or ; expected

CREATE SCHEMA sch AUTHORIZATION calvin CREATE TABLE foo() CREATE TABLE bla() x;
ERROR:  syntax error at or near "x" at character 78
HINT:  schema statement list such as CREATE TABLE/INDEX/SEQUENCE/TRIGGER/VIEW or GRANT or ; expected


--
Fabien Coelho - coelho@cri.ensmp.fr

pgsql-patches by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: hint infrastructure setup (v3)
Next
From: Tom Lane
Date:
Subject: Re: hint infrastructure setup (v3)