aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/define.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2006-07-02 02:23:23 +0000
committerBruce Momjian <bruce@momjian.us>2006-07-02 02:23:23 +0000
commit277807bd9eba1645d8dfc9252fa29220c4a83751 (patch)
treefb3dca975d8371bd42e9e58d0b841db3fd6c4654 /src/backend/commands/define.c
parent5d5c1416bf03efcf13cfd3b8f68a0bba199d70af (diff)
downloadpostgresql-277807bd9eba1645d8dfc9252fa29220c4a83751.tar.gz
postgresql-277807bd9eba1645d8dfc9252fa29220c4a83751.zip
Add FILLFACTOR to CREATE INDEX.
ITAGAKI Takahiro
Diffstat (limited to 'src/backend/commands/define.c')
-rw-r--r--src/backend/commands/define.c36
1 files changed, 31 insertions, 5 deletions
diff --git a/src/backend/commands/define.c b/src/backend/commands/define.c
index 98cded67cc4..ebde8f10950 100644
--- a/src/backend/commands/define.c
+++ b/src/backend/commands/define.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/commands/define.c,v 1.95 2006/03/14 22:48:18 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/commands/define.c,v 1.96 2006/07/02 02:23:19 momjian Exp $
*
* DESCRIPTION
* The "DefineFoo" routines take the parse tree and pick out the
@@ -110,6 +110,7 @@ defGetNumeric(DefElem *def)
case T_Integer:
return (double) intVal(def->arg);
case T_Float:
+ case T_String: /* XXX: needs strict check? */
return floatVal(def->arg);
default:
ereport(ERROR,
@@ -127,14 +128,30 @@ bool
defGetBoolean(DefElem *def)
{
/*
- * Presently, boolean flags must simply be present or absent. Later we
- * could allow 'flag = t', 'flag = f', etc.
+ * Presently, boolean flags must simply be present/absent or
+ * integer 0/1. Later we could allow 'flag = t', 'flag = f', etc.
*/
if (def->arg == NULL)
return true;
+ switch (nodeTag(def->arg))
+ {
+ case T_Integer:
+ switch (intVal(def->arg))
+ {
+ case 0:
+ return false;
+ case 1:
+ return true;
+ }
+ break;
+ default:
+ break;
+ }
+
+ /* on error */
ereport(ERROR,
(errcode(ERRCODE_SYNTAX_ERROR),
- errmsg("%s does not take a parameter",
+ errmsg("%s requires a boolean value",
def->defname)));
return false; /* keep compiler quiet */
}
@@ -155,7 +172,7 @@ defGetInt64(DefElem *def)
case T_Integer:
return (int64) intVal(def->arg);
case T_Float:
-
+ case T_String: /* XXX: needs strict check? */
/*
* Values too large for int4 will be represented as Float
* constants by the lexer. Accept these if they are valid int8
@@ -275,3 +292,12 @@ defGetTypeLength(DefElem *def)
def->defname, defGetString(def))));
return 0; /* keep compiler quiet */
}
+
+DefElem *
+defWithOids(bool value)
+{
+ DefElem *f = makeNode(DefElem);
+ f->defname = "oids";
+ f->arg = (Node *)makeInteger(value);
+ return f;
+}