mirror of
https://github.com/postgres/postgres.git
synced 2025-05-29 16:21:20 +03:00
Print out error position for some more DDLs
The following commands gain some information about the error position in the query, should they fail when looking at the type used: - CREATE TYPE (LIKE) - CREATE TABLE OF Both are related to typenameType() where the type name lookup is done. These calls gain the ParseState that already exists in these paths. Author: Kirill Reshke, Jian He Reviewed-by: Álvaro Herrera, Michael Paquier Discussion: https://postgr.es/m/CALdSSPhqfvKbDwqJaY=yEePi_aq61GmMpW88i6ZH7CMG_2Z4Cg@mail.gmail.com
This commit is contained in:
parent
e116b703f0
commit
0f23dedc91
@ -348,7 +348,7 @@ DefineType(ParseState *pstate, List *names, List *parameters)
|
||||
Type likeType;
|
||||
Form_pg_type likeForm;
|
||||
|
||||
likeType = typenameType(NULL, defGetTypeName(likeTypeEl), NULL);
|
||||
likeType = typenameType(pstate, defGetTypeName(likeTypeEl), NULL);
|
||||
likeForm = (Form_pg_type) GETSTRUCT(likeType);
|
||||
internalLength = likeForm->typlen;
|
||||
byValue = likeForm->typbyval;
|
||||
|
@ -1615,7 +1615,7 @@ transformOfType(CreateStmtContext *cxt, TypeName *ofTypename)
|
||||
|
||||
Assert(ofTypename);
|
||||
|
||||
tuple = typenameType(NULL, ofTypename, NULL);
|
||||
tuple = typenameType(cxt->pstate, ofTypename, NULL);
|
||||
check_of_type(tuple);
|
||||
ofTypeId = ((Form_pg_type) GETSTRUCT(tuple))->oid;
|
||||
ofTypename->typeOid = ofTypeId; /* cached for later */
|
||||
|
@ -1026,6 +1026,8 @@ LINE 1: create function xfloat8out(xfloat8) returns cstring immutabl...
|
||||
^
|
||||
create type xfloat8 (input = xfloat8in, output = xfloat8out, like = no_such_type);
|
||||
ERROR: type "no_such_type" does not exist
|
||||
LINE 1: ...8 (input = xfloat8in, output = xfloat8out, like = no_such_ty...
|
||||
^
|
||||
create type xfloat8 (input = xfloat8in, output = xfloat8out, like = float8);
|
||||
create cast (xfloat8 as float8) without function;
|
||||
create cast (float8 as xfloat8) without function;
|
||||
|
@ -1,5 +1,7 @@
|
||||
CREATE TABLE ttable1 OF nothing;
|
||||
ERROR: type "nothing" does not exist
|
||||
LINE 1: CREATE TABLE ttable1 OF nothing;
|
||||
^
|
||||
CREATE TYPE person_type AS (id int, name text);
|
||||
CREATE TABLE persons OF person_type;
|
||||
CREATE TABLE IF NOT EXISTS persons OF person_type;
|
||||
|
Loading…
x
Reference in New Issue
Block a user