Thread: BUG #17130: Error while executing request

BUG #17130: Error while executing request

From
PG Bug reporting form
Date:
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"`


Re: BUG #17130: Error while executing request

From
Erik Rijkers
Date:
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.





Re: BUG #17130: Error while executing request

From
Guillaume Lelarge
Date:
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.

Re: BUG #17130: Error while executing request

From
"David G. Johnston"
Date:
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.

Re: BUG #17130: Error while executing request

From
Guillaume Lelarge
Date:
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.

Re: BUG #17130: Error while executing request

From
Tom Lane
Date:
"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