-
- Downloads
Refactor broken CREATE TABLE IF NOT EXISTS support.
Per bug #5988, reported by Marko Tiikkaja, and further analyzed by Tom Lane, the previous coding was broken in several respects: even if the target table already existed, a subsequent CREATE TABLE IF NOT EXISTS might try to add additional constraints or sequences-for-serial specified in the new CREATE TABLE statement. In passing, this also fixes a minor information leak: it's no longer possible to figure out whether a schema to which you don't have CREATE access contains a sequence named like "x_y_seq" by attempting to create a table in that schema called "x" with a serial column called "y". Some more refactoring of this code in the future might be warranted, but that will need to wait for a later major release.
Showing
- src/backend/bootstrap/bootparse.y 1 addition, 2 deletionssrc/backend/bootstrap/bootparse.y
- src/backend/catalog/heap.c 3 additions, 16 deletionssrc/backend/catalog/heap.c
- src/backend/catalog/namespace.c 29 additions, 0 deletionssrc/backend/catalog/namespace.c
- src/backend/catalog/toasting.c 1 addition, 2 deletionssrc/backend/catalog/toasting.c
- src/backend/commands/cluster.c 1 addition, 2 deletionssrc/backend/commands/cluster.c
- src/backend/commands/tablecmds.c 4 additions, 25 deletionssrc/backend/commands/tablecmds.c
- src/backend/executor/execMain.c 2 additions, 10 deletionssrc/backend/executor/execMain.c
- src/backend/parser/parse_utilcmd.c 28 additions, 4 deletionssrc/backend/parser/parse_utilcmd.c
- src/backend/tcop/utility.c 2 additions, 16 deletionssrc/backend/tcop/utility.c
- src/include/catalog/heap.h 1 addition, 2 deletionssrc/include/catalog/heap.h
- src/include/catalog/namespace.h 1 addition, 0 deletionssrc/include/catalog/namespace.h
Loading
Please register or sign in to comment