Обсуждение: nodeRead: did not find '}' at end of plan node

Поиск
Список
Период
Сортировка

nodeRead: did not find '}' at end of plan node

От
Martin Sarsale
Дата:
Dear All:
Im running psql (PostgreSQL) 7.3.2 here and since some weeks Im getting this error when trying to dump all databases
(toupgrade to pg 7.4.1) 

\connect XXX
pg_dump: SQL command failed
pg_dump: Error message from server: ERROR:  nodeRead: did not find '}' at end of plan node
pg_dump: The command was: select (select usename from pg_user where usesysid = datdba) as dba, encoding, datpath from
pg_databasewhere datname = 'emepe3' 
pg_dumpall: pg_dump failed on emepe3, exiting


I've found some pages in google but I couldn't find the answer.

Thanks in advance!

--
you can find my public PGP/GPG key at http://www.n3rds.com.ar/files/martin_sarsale.key

Re: nodeRead: did not find '}' at end of plan node

От
Tom Lane
Дата:
Martin Sarsale <lists@runa.sytes.net> writes:
> Im running psql (PostgreSQL) 7.3.2 here and since some weeks Im getting this error when trying to dump all databases
(toupgrade to pg 7.4.1) 

> \connect XXX
> pg_dump: SQL command failed
> pg_dump: Error message from server: ERROR:  nodeRead: did not find '}' at end of plan node
> pg_dump: The command was: select (select usename from pg_user where usesysid = datdba) as dba, encoding, datpath from
pg_databasewhere datname = 'emepe3' 
> pg_dumpall: pg_dump failed on emepe3, exiting

It would appear that the view rule for the pg_user view is corrupt, or
at least not quite the same format that the backend code is expecting.

Can you do "select * from pg_user" in any of your databases, or does it
fail the same way in all?  If it fails in each database then I'd suspect
some kind of version mismatch; if not then it's just corrupt in that
particular database.

We had a similar report last November which seemed to be related to a
glibc update --- see the thread starting here:
http://archives.postgresql.org/pgsql-general/2003-11/msg01102.php
The complainant lost interest after finding a workaround, so we
never did get a complete explanation of what happened, but I'm
suspicious there was some software incompatibility involved, not
data corruption per se.  I would like to find out the truth of the
matter.  If you are interested you could try manually creating an
equivalent of pg_user, viz

CREATE VIEW my_pg_user AS
    SELECT
        usename,
        usesysid,
        usecreatedb,
        usesuper,
        usecatupd,
        '********'::text as passwd,
        valuntil,
        useconfig
    FROM pg_shadow;

and then see if you can do "select * from my_pg_user", and if so,
what is the difference between the pg_rewrite entries for the two
views.  (See the above-referenced thread for more info.)

            regards, tom lane

Re: nodeRead: did not find '}' at end of plan node

От
Martin Sarsale
Дата:
> Can you do "select * from pg_user" in any of your databases, or does it
> fail the same way in all?  If it fails in each database then I'd suspect
> some kind of version mismatch; if not then it's just corrupt in that
> particular database.

I've only 2 databases t(template1 and another one) and it didn't worked in any of them

Also, I couldn't create the alternate view, I get the same error:

xxx:~# psql -U postgres template1
ERROR:  nodeRead: did not find '}' at end of plan node
Welcome to psql 7.3.2, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit

template1=>
template1=> CREATE VIEW my_pg_user AS
template1->     SELECT
template1->         usename,
template1->         usesysid,
template1->         usecreatedb,
template1->         usesuper,
template1->         usecatupd,
template1->         '********'::text as passwd,
template1->         valuntil,
template1->         useconfig
template1->     FROM pg_shadow;
ERROR:  current transaction is aborted, queries ignored until end of transaction          block

Im running debian stable/testing, postgresql 7.3.2 with a "connect by prior" patch.

Thanks in advance


On Mon, 15 Mar 2004 17:07:09 -0500
Tom Lane <tgl@sss.pgh.pa.us> wrote:

> Martin Sarsale <lists@runa.sytes.net> writes:
> > Im running psql (PostgreSQL) 7.3.2 here and since some weeks Im getting this error when trying to dump all
databases(to upgrade to pg 7.4.1) 
>
> > \connect XXX
> > pg_dump: SQL command failed
> > pg_dump: Error message from server: ERROR:  nodeRead: did not find '}' at end of plan node
> > pg_dump: The command was: select (select usename from pg_user where usesysid = datdba) as dba, encoding, datpath
frompg_database where datname = 'emepe3' 
> > pg_dumpall: pg_dump failed on emepe3, exiting
>
> It would appear that the view rule for the pg_user view is corrupt, or
> at least not quite the same format that the backend code is expecting.
>
> Can you do "select * from pg_user" in any of your databases, or does it
> fail the same way in all?  If it fails in each database then I'd suspect
> some kind of version mismatch; if not then it's just corrupt in that
> particular database.
>
> We had a similar report last November which seemed to be related to a
> glibc update --- see the thread starting here:
> http://archives.postgresql.org/pgsql-general/2003-11/msg01102.php
> The complainant lost interest after finding a workaround, so we
> never did get a complete explanation of what happened, but I'm
> suspicious there was some software incompatibility involved, not
> data corruption per se.  I would like to find out the truth of the
> matter.  If you are interested you could try manually creating an
> equivalent of pg_user, viz
>
> CREATE VIEW my_pg_user AS
>     SELECT
>         usename,
>         usesysid,
>         usecreatedb,
>         usesuper,
>         usecatupd,
>         '********'::text as passwd,
>         valuntil,
>         useconfig
>     FROM pg_shadow;
>
> and then see if you can do "select * from my_pg_user", and if so,
> what is the difference between the pg_rewrite entries for the two
> views.  (See the above-referenced thread for more info.)
>
>             regards, tom lane
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
>                http://www.postgresql.org/docs/faqs/FAQ.html
>


--
you can find my public PGP/GPG key at http://www.n3rds.com.ar/files/martin_sarsale.key

Re: nodeRead: did not find '}' at end of plan node

От
Tom Lane
Дата:
Martin Sarsale <lists@runa.sytes.net> writes:
> Im running debian stable/testing, postgresql 7.3.2 with a "connect by
> prior" patch.

Oh.  You know, there's a reason why that patch isn't in the tree.  Back
it out...

If you really want to use that patch, dump your database without the
patch, install the patch, initdb, reload.  It is not initdb-compatible.

            regards, tom lane