Re: BUG #6376: Cannot prepare a "CREATE TABLE" statement, error message is unhelpful

From: "Kevin Grittner" <Kevin(dot)Grittner(at)wicourts(dot)gov>
To: <agserm(at)gmail(dot)com>,<pgsql-bugs(at)postgresql(dot)org>
Subject: Re: BUG #6376: Cannot prepare a "CREATE TABLE" statement, error message is unhelpful
Date: 2012-01-04 14:48:57
Message-ID: 4F0412790200002500044333@gw.wicourts.gov
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

<agserm(at)gmail(dot)com> wrote:

> postgres=# prepare foo as create table bar (c integer);
> ERROR: syntax error at or near "create"
> LINE 1: prepare foo as create table bar (c integer);
> ^
>
> This error message does not in any way indicate that one cannot
> prepare a create table statement.
>
> It appears that PostgreSQL does not support this operation, but I
> cannot find any documentation that indicates why, or indeed if
> this is intentional.

http://www.postgresql.org/docs/9.1/interactive/sql-prepare.html

The synopsis is:

PREPARE name [ ( data_type [, ...] ) ] AS statement

and the Parameters section says:

statement
Any SELECT, INSERT, UPDATE, DELETE, or VALUES statement.

Thus, to put anything except a valid SELECT, INSERT, UPDATE, DELETE,
or VALUES statement at that position is a syntax error. What would
you expect to happen in general when you put some statement in the
middle of another statement where it is not supported? For example,
if you put a CREATE TABLE statement in the FROM clause of a SELECT
statement, what would you expect?

-Kevin

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Patrick PILERI 2012-01-04 15:12:36 Proble Postgre SQL version 7.4.1
Previous Message bock 2012-01-04 13:35:28 BUG #6378: exceeding memory usage while creating index in pg-9.1.2