From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | rug_vzla(at)hotmail(dot)com |
Cc: | Postgre SQL <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Error Compilando el Código fuente |
Date: | 2006-09-01 22:28:22 |
Message-ID: | 20060901222822.GQ3755@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Rafael Urbina escribió:
> gram.y
> insert_rest:
> VALUES '(' insert_target_list ')' VALID insert_target_el
> {
> $$ = makeNode(InsertStmt);
> $$->cols = NIL;
> if (1 > 0)
> {
> $3= lappend($3,$6);
> }
> $$->targetList = $3;
> $$->selectStmt = NULL;
> }
> Lo que que quiero es agregar insert_target_el a la lista insert_target_list.
Esto no funciona, porque asume que VALID insert_target_el siempre estara
presente. Debes añadirlo como clausula opcional. Otras clausulas
opcionales hacen cosas como definir un no-terminal opt_foo el cual puede
ser reducido a vacio (mira por ejemplo opt_with en la produccion de
COPY. Hay muchos otros ejemplos).
El initdb te falla precisamente porque se ejecutan algunos INSERT, los
cuales no traen la clausula VALID y por lo tanto son un error de
sintaxis de acuerdo a tu gramatica.
Es posible que esto redunde en conflictos shift/reduce ...
Lo otro que puedes hacer es que insert_rest pueda ser reducido a VALUES
con VALID, o a VALUES sin VALID.
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From | Date | Subject | |
---|---|---|---|
Next Message | Salvador Mondragón Avilés | 2006-09-01 22:29:52 | Sin conexión con phppgadmin |
Previous Message | Carlos Andres Pizo | 2006-09-01 21:51:35 | Ayuda insercion datos |