Re: Error Compilando el Código fuente

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.

In response to

Browse pgsql-es-ayuda by date

  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