Re: add additional options to CREATE TABLE ... AS
От | Neil Conway |
---|---|
Тема | Re: add additional options to CREATE TABLE ... AS |
Дата | |
Msg-id | 1139948832.31672.15.camel@localhost.localdomain обсуждение исходный текст |
Ответ на | add additional options to CREATE TABLE ... AS (Kris Jurka <books@ejurka.com>) |
Ответы |
Re: add additional options to CREATE TABLE ... AS
|
Список | pgsql-patches |
On Tue, 2006-02-14 at 14:32 -0500, Kris Jurka wrote: > This patch adds most of the options available for regular CREATE TABLE > syntax to the CREATE TABLE x AS SELECT ... and AS EXECUTE ... > Specifically this allows specification of on commit behavior for temp > tables and tablespaces for regular tables to these two statements. The implementation is pretty ugly -- it clutters ExecuteStmt and Query with fields that really do not belong there. Per previous discussion, I think it would be better to refactor the CREATE TABLE AS implementation to be essentially a CREATE TABLE followed by a INSERT ... SELECT. (That's not necessarily a reason to reject the patch, but the patch does increase the benefit of performing that refactoring.) A few cosmetic comments: typedef struct ExecuteStmt { NodeTag type; char *name; RangeVar *into; ContainsOids intocontainsoids; bool intohasoids; OnCommitAction intooncommit; char *intotablespacename; List *params; } ExecuteStmt; I think we ought to use either camel-case or underscore characters to separate words. parser/analyze.c, circa 1822: if (stmt->intoTableSpaceName) qry->intoTableSpaceName = pstrdup(stmt->intoTableSpaceName); else qry->intoTableSpaceName = NULL; You can omit the "else", as makeNode() zeroes all the fields of the new node. (You could argue that leaving the assignment is more readable, but I personally don't think so: this behavior of makeNode() is used in a several places in the backend.) -Neil
В списке pgsql-patches по дате отправления: