BUG #17130: Error while executing request

Started by PG Bug reporting formover 4 years ago6 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 17130
Logged by: Viktor Alenkov
Email address: viktor@alenkov.name
PostgreSQL version: 13.3
Operating system: Docker
Description:

query:
CREATE SCHEMA "my_schema"
CREATE TABLE "my_ids" AS SELECT "a"."n" AS "id" FROM GENERATE_SERIES(1,
99) AS "a"("n");

I get the error `syntax error at or near "AS"`

#2Erik Rijkers
er@xs4all.nl
In reply to: PG Bug reporting form (#1)
Re: BUG #17130: Error while executing request

On 8/3/21 9:20 AM, PG Bug reporting form wrote:

CREATE SCHEMA "my_schema"
CREATE TABLE "my_ids" AS SELECT "a"."n" AS "id" FROM GENERATE_SERIES(1,
99) AS "a"("n");

Understandable: you forgot the semicolon after the create schema statement.

#3Guillaume Lelarge
guillaume@lelarge.info
In reply to: Erik Rijkers (#2)
Re: BUG #17130: Error while executing request

Le mar. 3 août 2021 à 10:48, Erik Rijkers <er@xs4all.nl> a écrit :

On 8/3/21 9:20 AM, PG Bug reporting form wrote:

CREATE SCHEMA "my_schema"
CREATE TABLE "my_ids" AS SELECT "a"."n" AS "id" FROM

GENERATE_SERIES(1,

99) AS "a"("n");

Understandable: you forgot the semicolon after the create schema statement.

Actually, the syntax should be valid. You can add a DDL right after CREATE
SCHEMA without a semicolon in between (see the examples on
https://www.postgresql.org/docs/13/sql-createschema.html). But I fail to
explain why it doesn't work here. A workaround would be to add the
semicolon as you said, but it should work without.

--
Guillaume.

#4David G. Johnston
david.g.johnston@gmail.com
In reply to: Guillaume Lelarge (#3)
Re: BUG #17130: Error while executing request

On Tue, Aug 3, 2021 at 6:13 AM Guillaume Lelarge <guillaume@lelarge.info>
wrote:

Le mar. 3 août 2021 à 10:48, Erik Rijkers <er@xs4all.nl> a écrit :

On 8/3/21 9:20 AM, PG Bug reporting form wrote:

CREATE SCHEMA "my_schema"
CREATE TABLE "my_ids" AS SELECT "a"."n" AS "id" FROM

GENERATE_SERIES(1,

99) AS "a"("n");

Understandable: you forgot the semicolon after the create schema
statement.

Actually, the syntax should be valid. You can add a DDL right after CREATE
SCHEMA without a semicolon in between (see the examples on
https://www.postgresql.org/docs/13/sql-createschema.html). But I fail to
explain why it doesn't work here. A workaround would be to add the
semicolon as you said, but it should work without.

CREATE TABLE and CREATE TABLE AS are two very different commands and only
the former is documented to work.

David J.

#5Guillaume Lelarge
guillaume@lelarge.info
In reply to: David G. Johnston (#4)
Re: BUG #17130: Error while executing request

Le mar. 3 août 2021 à 15:18, David G. Johnston <david.g.johnston@gmail.com>
a écrit :

On Tue, Aug 3, 2021 at 6:13 AM Guillaume Lelarge <guillaume@lelarge.info>
wrote:

Le mar. 3 août 2021 à 10:48, Erik Rijkers <er@xs4all.nl> a écrit :

On 8/3/21 9:20 AM, PG Bug reporting form wrote:

CREATE SCHEMA "my_schema"
CREATE TABLE "my_ids" AS SELECT "a"."n" AS "id" FROM

GENERATE_SERIES(1,

99) AS "a"("n");

Understandable: you forgot the semicolon after the create schema
statement.

Actually, the syntax should be valid. You can add a DDL right after
CREATE SCHEMA without a semicolon in between (see the examples on
https://www.postgresql.org/docs/13/sql-createschema.html). But I fail to
explain why it doesn't work here. A workaround would be to add the
semicolon as you said, but it should work without.

CREATE TABLE and CREATE TABLE AS are two very different commands and only
the former is documented to work.

Oh, you're right. The schema_element only accepts CREATE TABLE, CREATE
VIEW, CREATE INDEX, CREATE SEQUENCE, CREATE TRIGGER and GRANT. There's no
CREATE TABLE AS on this list. My bad.

--
Guillaume.

#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: David G. Johnston (#4)
Re: BUG #17130: Error while executing request

"David G. Johnston" <david.g.johnston@gmail.com> writes:

On Tue, Aug 3, 2021 at 6:13 AM Guillaume Lelarge <guillaume@lelarge.info>
wrote:

Actually, the syntax should be valid. You can add a DDL right after CREATE
SCHEMA without a semicolon in between (see the examples on
https://www.postgresql.org/docs/13/sql-createschema.html). But I fail to
explain why it doesn't work here. A workaround would be to add the
semicolon as you said, but it should work without.

CREATE TABLE and CREATE TABLE AS are two very different commands and only
the former is documented to work.

Right. CREATE SCHEMA allows additional DDL to create objects within
the schema right away, but it only does DDL not DML, so you can't
additionally populate the table as part of the command.

regards, tom lane