Thread: pg_restore cannot restore index
Another possible bug: pg_restore -i "\"indexname\"" -d mydb mydumpfile msg: pg_restore: connecting to database for restore pg_restore: creating FUNCTION "plpgsql_call_handler" () pg_restore: [archiver (db)] could not execute query: ERROR: function plpgsql_call_handler already exists with same argument types pg_restore: *** aborted because of error I read the pg_restore.c source code, I found: #ifdef HAVE_GETOPT_LONG struct option cmdopts[] = { {"clean", 0, NULL, 'c'}, {"create",0, NULL, 'C'}, {"data-only", 0, NULL, 'a'}, {"dbname", 1, NULL, 'd'}, {"file", 1, NULL, 'f'}, {"format", 1, NULL, 'F'}, {"function", 1, NULL, 'P'}, {"host", 1, NULL, 'h'}, {"ignore-version", 0, NULL, 'i'}, {"index", 1, NULL, 'I'}, So, -i may be mapped wrong, however, -I is illegal option. Thanks! Jie Liang -----Original Message----- From: Jie Liang [mailto:jie@stbernard.com] Sent: Wednesday, July 03, 2002 12:03 PM To: 'Jan Wieck'; Jie Liang Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' Subject: Re: [SQL] pg_restore cannot restore function OK, we figured it out. The problem is the documentation confused me!!! In man page of pg_restore: -P function-name --function=function name Specify a procedure or function to be restored. User will assume that syntax of restoring a function is same as restoring a table, but it's not true, it's slightly different. To restore a table: pg_restore -Rxt mytable -d mydb2 dbf works, but to restore a function: pg_restore -P myfunction -d mydb2 dbf won't work, and you need to use: pg_restore -P "\"myfunction\" (args and type)" -d mydb2 dbf to make it work!!!!! I believe that the man page of pg_restore should be improved. Thanks. Jie Liang -----Original Message----- From: Jan Wieck [mailto:JanWieck@Yahoo.com] Sent: Monday, July 01, 2002 11:14 AM To: Jie Liang Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' Subject: Re: [SQL] pg_restore cannot restore function Jie Liang wrote: > > Oops,my OS is FreeBSD4.3 PostgreSQL7.2 I cannot see such an error message in the pg_restore sources at all. Are you sure to use the right versions together? Jan > > Thanks > > Jie Liang > > -----Original Message----- > From: Jie Liang > Sent: Friday, June 28, 2002 1:46 PM > To: 'Jan Wieck' > Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > Subject: RE: [SQL] pg_restore cannot restore function > > No any error msg in the logfile, I didn't see any create function statement > in my logfile which I enabled the query log. > This function is written in PL/pgSQL which is enabled in target db, > If I pg_dump the schema into a plain text file, I can see its defination > there, I can easily copy & paste (restore) it into mydb2. > however, I failed to restore it by using flag -P with compressed file. > I also tried to use > su postgres -c "/usr/local/pgsql/bin/pg_restore --function=myfunction > --dbname=mydb2 dbf" > error msg > pg_restore: [archiver] could not open input file: No such file or directory > > weird??? > > I use > pg_restore -Rxt mytable -d mydb2 dbf > have no such a problem, it works. > > Is any syntax error?? > I am confused by documentation now! > Is it a bug???? > > Thanks > > Jie Liang > > -----Original Message----- > From: Jan Wieck [mailto:JanWieck@Yahoo.com] > Sent: Friday, June 28, 2002 12:39 PM > To: Jie Liang > Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > Subject: Re: [SQL] pg_restore cannot restore function > > Jie Liang wrote: > > > > I use > > pg_dump -Fc mydb > dbf > > then I create another db by: > > createdb mydb2 > > I use > > pg_restore -P myfunction -d mydb2 dbf > > > > cannot restore myfunction into mydb2 > > > > why?????? > > Good question. Is there any error message in the postmaster log? > > If the function is written in a procedural language, is that language > enabled in the target database? If the function is written in the SQL > language, do all underlying objects like tables and views exist? If it's > a C language function, does the shared object containing the function > exist at the expected location? > > Jan > > -- > > #======================================================================# > # It's easier to get forgiveness for being wrong than for being right. # > # Let's break this rule - forgive me. # > #================================================== JanWieck@Yahoo.com # -- #======================================================================# # It's easier to get forgiveness for being wrong than for being right. # # Let's break this rule - forgive me. # #================================================== JanWieck@Yahoo.com # ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org
Another possible bug: pg_restore -i "\"indexname\"" -d mydb mydumpfile msg: pg_restore: connecting to database for restore pg_restore: creating FUNCTION "plpgsql_call_handler" () pg_restore: [archiver (db)] could not execute query: ERROR: function plpgsql_call_handler already exists with same argument types pg_restore: *** aborted because of error I read the pg_restore.c source code, I found: #ifdef HAVE_GETOPT_LONG struct option cmdopts[] = { {"clean", 0, NULL, 'c'}, {"create",0, NULL, 'C'}, {"data-only", 0, NULL, 'a'}, {"dbname", 1, NULL, 'd'}, {"file", 1, NULL, 'f'}, {"format", 1, NULL, 'F'}, {"function", 1, NULL, 'P'}, {"host", 1, NULL, 'h'}, {"ignore-version", 0, NULL, 'i'}, {"index", 1, NULL, 'I'}, So, -i may be mapped wrong, however, -I is illegal option. Thanks! Jie Liang
Yep, documentation is wrong. Documentation patch attached and applied. Also, in 7.3 you will not need the weird quoting for objects. --------------------------------------------------------------------------- Jie Liang wrote: > Another possible bug: > pg_restore -i "\"indexname\"" -d mydb mydumpfile > msg: > pg_restore: connecting to database for restore > pg_restore: creating FUNCTION "plpgsql_call_handler" () > pg_restore: [archiver (db)] could not execute query: ERROR: function > plpgsql_call_handler already exists with same argument types > pg_restore: *** aborted because of error > > I read the pg_restore.c source code, I found: > #ifdef HAVE_GETOPT_LONG > struct option cmdopts[] = { > {"clean", 0, NULL, 'c'}, > {"create", 0, NULL, 'C'}, > {"data-only", 0, NULL, 'a'}, > {"dbname", 1, NULL, 'd'}, > {"file", 1, NULL, 'f'}, > {"format", 1, NULL, 'F'}, > {"function", 1, NULL, 'P'}, > {"host", 1, NULL, 'h'}, > {"ignore-version", 0, NULL, 'i'}, > {"index", 1, NULL, 'I'}, > So, -i may be mapped wrong, however, -I is illegal option. > > Thanks! > > > Jie Liang > > > > -----Original Message----- > From: Jie Liang [mailto:jie@stbernard.com] > Sent: Wednesday, July 03, 2002 12:03 PM > To: 'Jan Wieck'; Jie Liang > Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > Subject: Re: [SQL] pg_restore cannot restore function > > > > OK, we figured it out. > The problem is the documentation confused me!!! > In man page of pg_restore: > -P function-name > --function=function name > Specify a procedure or function to be restored. > > User will assume that syntax of restoring a function is same as > restoring a table, but it's not true, it's slightly different. > To restore a table: > pg_restore -Rxt mytable -d mydb2 dbf > works, but to restore a function: > pg_restore -P myfunction -d mydb2 dbf > won't work, and you need to use: > pg_restore -P "\"myfunction\" (args and type)" -d mydb2 dbf > to make it work!!!!! > > > I believe that the man page of pg_restore should be improved. > > > Thanks. > > > > Jie Liang > > > > -----Original Message----- > From: Jan Wieck [mailto:JanWieck@Yahoo.com] > Sent: Monday, July 01, 2002 11:14 AM > To: Jie Liang > Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > Subject: Re: [SQL] pg_restore cannot restore function > > > Jie Liang wrote: > > > > Oops,my OS is FreeBSD4.3 PostgreSQL7.2 > > I cannot see such an error message in the pg_restore sources at all. Are > you sure to use the right versions together? > > > Jan > > > > > Thanks > > > > Jie Liang > > > > -----Original Message----- > > From: Jie Liang > > Sent: Friday, June 28, 2002 1:46 PM > > To: 'Jan Wieck' > > Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > > Subject: RE: [SQL] pg_restore cannot restore function > > > > No any error msg in the logfile, I didn't see any create function > statement > > in my logfile which I enabled the query log. > > This function is written in PL/pgSQL which is enabled in target db, > > If I pg_dump the schema into a plain text file, I can see its defination > > there, I can easily copy & paste (restore) it into mydb2. > > however, I failed to restore it by using flag -P with compressed file. > > I also tried to use > > su postgres -c "/usr/local/pgsql/bin/pg_restore --function=myfunction > > --dbname=mydb2 dbf" > > error msg > > pg_restore: [archiver] could not open input file: No such file or > directory > > > > weird??? > > > > I use > > pg_restore -Rxt mytable -d mydb2 dbf > > have no such a problem, it works. > > > > Is any syntax error?? > > I am confused by documentation now! > > Is it a bug???? > > > > Thanks > > > > Jie Liang > > > > -----Original Message----- > > From: Jan Wieck [mailto:JanWieck@Yahoo.com] > > Sent: Friday, June 28, 2002 12:39 PM > > To: Jie Liang > > Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > > Subject: Re: [SQL] pg_restore cannot restore function > > > > Jie Liang wrote: > > > > > > I use > > > pg_dump -Fc mydb > dbf > > > then I create another db by: > > > createdb mydb2 > > > I use > > > pg_restore -P myfunction -d mydb2 dbf > > > > > > cannot restore myfunction into mydb2 > > > > > > why?????? > > > > Good question. Is there any error message in the postmaster log? > > > > If the function is written in a procedural language, is that language > > enabled in the target database? If the function is written in the SQL > > language, do all underlying objects like tables and views exist? If it's > > a C language function, does the shared object containing the function > > exist at the expected location? > > > > Jan > > > > -- > > > > #======================================================================# > > # It's easier to get forgiveness for being wrong than for being right. # > > # Let's break this rule - forgive me. # > > #================================================== JanWieck@Yahoo.com # > > -- > > #======================================================================# > # It's easier to get forgiveness for being wrong than for being right. # > # Let's break this rule - forgive me. # > #================================================== JanWieck@Yahoo.com # > > > > ---------------------------(end of broadcast)--------------------------- > TIP 6: Have you searched our list archives? > > http://archives.postgresql.org > > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026 Index: pg_restore.sgml =================================================================== RCS file: /cvsroot/pgsql/doc/src/sgml/ref/pg_restore.sgml,v retrieving revision 1.26 diff -c -r1.26 pg_restore.sgml *** pg_restore.sgml 4 Jul 2002 03:04:54 -0000 1.26 --- pg_restore.sgml 10 Jul 2002 02:57:12 -0000 *************** *** 28,34 **** <arg> -d <replaceable class="parameter">dbname</replaceable> </arg> <arg> -f <replaceable class="parameter">output-file</replaceable> </arg> <arg> -F <replaceable class="parameter">format</replaceable> </arg> ! <arg> -i <replaceable class="parameter">index</replaceable> </arg> <arg> -l </arg> <arg> -L <replaceable class="parameter">contents-file</replaceable> </arg> <group> <arg> -N </arg> <arg> -o </arg> <arg> -r </arg> </group> --- 28,35 ---- <arg> -d <replaceable class="parameter">dbname</replaceable> </arg> <arg> -f <replaceable class="parameter">output-file</replaceable> </arg> <arg> -F <replaceable class="parameter">format</replaceable> </arg> ! <arg> -i </arg> ! <arg> -I <replaceable class="parameter">index</replaceable> </arg> <arg> -l </arg> <arg> -L <replaceable class="parameter">contents-file</replaceable> </arg> <group> <arg> -N </arg> <arg> -o </arg> <arg> -r </arg> </group> *************** *** 210,220 **** </varlistentry> <varlistentry> ! <term><option>-i <replaceable class="parameter">index</replaceable></option></term> ! <term><option>--index=<replaceable class="parameter">index</replaceable></option></term> <listitem> <para> ! Restore definition for named <replaceable class="parameter">index</replaceable> only. </para> </listitem> </varlistentry> --- 211,221 ---- </varlistentry> <varlistentry> ! <term><option>-i </term> ! <term><option>--ignore-version</term> <listitem> <para> ! Ignore database version checks. </para> </listitem> </varlistentry>
Thanks! But I did not make long form works also, is it: pg_restore --index="\"indexname\"" --dbname=mydb mydumpfile ??????????? msg: pg_restore:[archiver] could open input file: No such file or directory could you give out a example of long form???? Thanks again. Jie Liang -----Original Message----- From: Bruce Momjian [mailto:pgman@candle.pha.pa.us] Sent: Tuesday, July 09, 2002 7:59 PM To: Jie Liang Cc: 'Jan Wieck'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' Subject: Re: pg_restore cannot restore index Yep, documentation is wrong. Documentation patch attached and applied. Also, in 7.3 you will not need the weird quoting for objects. --------------------------------------------------------------------------- Jie Liang wrote: > Another possible bug: > pg_restore -i "\"indexname\"" -d mydb mydumpfile > msg: > pg_restore: connecting to database for restore > pg_restore: creating FUNCTION "plpgsql_call_handler" () > pg_restore: [archiver (db)] could not execute query: ERROR: function > plpgsql_call_handler already exists with same argument types > pg_restore: *** aborted because of error > > I read the pg_restore.c source code, I found: > #ifdef HAVE_GETOPT_LONG > struct option cmdopts[] = { > {"clean", 0, NULL, 'c'}, > {"create", 0, NULL, 'C'}, > {"data-only", 0, NULL, 'a'}, > {"dbname", 1, NULL, 'd'}, > {"file", 1, NULL, 'f'}, > {"format", 1, NULL, 'F'}, > {"function", 1, NULL, 'P'}, > {"host", 1, NULL, 'h'}, > {"ignore-version", 0, NULL, 'i'}, > {"index", 1, NULL, 'I'}, > So, -i may be mapped wrong, however, -I is illegal option. > > Thanks! > > > Jie Liang > > > > -----Original Message----- > From: Jie Liang [mailto:jie@stbernard.com] > Sent: Wednesday, July 03, 2002 12:03 PM > To: 'Jan Wieck'; Jie Liang > Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > Subject: Re: [SQL] pg_restore cannot restore function > > > > OK, we figured it out. > The problem is the documentation confused me!!! > In man page of pg_restore: > -P function-name > --function=function name > Specify a procedure or function to be restored. > > User will assume that syntax of restoring a function is same as > restoring a table, but it's not true, it's slightly different. > To restore a table: > pg_restore -Rxt mytable -d mydb2 dbf > works, but to restore a function: > pg_restore -P myfunction -d mydb2 dbf > won't work, and you need to use: > pg_restore -P "\"myfunction\" (args and type)" -d mydb2 dbf > to make it work!!!!! > > > I believe that the man page of pg_restore should be improved. > > > Thanks. > > > > Jie Liang > > > > -----Original Message----- > From: Jan Wieck [mailto:JanWieck@Yahoo.com] > Sent: Monday, July 01, 2002 11:14 AM > To: Jie Liang > Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > Subject: Re: [SQL] pg_restore cannot restore function > > > Jie Liang wrote: > > > > Oops,my OS is FreeBSD4.3 PostgreSQL7.2 > > I cannot see such an error message in the pg_restore sources at all. Are > you sure to use the right versions together? > > > Jan > > > > > Thanks > > > > Jie Liang > > > > -----Original Message----- > > From: Jie Liang > > Sent: Friday, June 28, 2002 1:46 PM > > To: 'Jan Wieck' > > Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > > Subject: RE: [SQL] pg_restore cannot restore function > > > > No any error msg in the logfile, I didn't see any create function > statement > > in my logfile which I enabled the query log. > > This function is written in PL/pgSQL which is enabled in target db, > > If I pg_dump the schema into a plain text file, I can see its defination > > there, I can easily copy & paste (restore) it into mydb2. > > however, I failed to restore it by using flag -P with compressed file. > > I also tried to use > > su postgres -c "/usr/local/pgsql/bin/pg_restore --function=myfunction > > --dbname=mydb2 dbf" > > error msg > > pg_restore: [archiver] could not open input file: No such file or > directory > > > > weird??? > > > > I use > > pg_restore -Rxt mytable -d mydb2 dbf > > have no such a problem, it works. > > > > Is any syntax error?? > > I am confused by documentation now! > > Is it a bug???? > > > > Thanks > > > > Jie Liang > > > > -----Original Message----- > > From: Jan Wieck [mailto:JanWieck@Yahoo.com] > > Sent: Friday, June 28, 2002 12:39 PM > > To: Jie Liang > > Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > > Subject: Re: [SQL] pg_restore cannot restore function > > > > Jie Liang wrote: > > > > > > I use > > > pg_dump -Fc mydb > dbf > > > then I create another db by: > > > createdb mydb2 > > > I use > > > pg_restore -P myfunction -d mydb2 dbf > > > > > > cannot restore myfunction into mydb2 > > > > > > why?????? > > > > Good question. Is there any error message in the postmaster log? > > > > If the function is written in a procedural language, is that language > > enabled in the target database? If the function is written in the SQL > > language, do all underlying objects like tables and views exist? If it's > > a C language function, does the shared object containing the function > > exist at the expected location? > > > > Jan > > > > -- > > > > #======================================================================# > > # It's easier to get forgiveness for being wrong than for being right. # > > # Let's break this rule - forgive me. # > > #================================================== JanWieck@Yahoo.com # > > -- > > #======================================================================# > # It's easier to get forgiveness for being wrong than for being right. # > # Let's break this rule - forgive me. # > #================================================== JanWieck@Yahoo.com # > > > > ---------------------------(end of broadcast)--------------------------- > TIP 6: Have you searched our list archives? > > http://archives.postgresql.org > > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
Jie Liang wrote: > Thanks! > But I did not make long form works also, is it: > pg_restore --index="\"indexname\"" --dbname=mydb mydumpfile > ??????????? > msg: > pg_restore:[archiver] could open input file: No such file or directory Strange. I found a few more problems with the getopt values in pg_restore.c not matching the 'case' statement or the documentation. I got it working here with my patched version using: pg_restore -I aa -d test /bjm/x It can't find the file? I didn't fix anything in that area. I am confused how that could be messed up. I don't see any other meaningful changes to pg_restore except the quote fixes I did. Are you sure the file is correct? Thanks for pointing these things out. It is a big help. Now I am starting to wonder what else is wrong in the code. :-) > > > could you give out a example of long form???? > > > Thanks again. > > > Jie Liang > > -----Original Message----- > From: Bruce Momjian [mailto:pgman@candle.pha.pa.us] > Sent: Tuesday, July 09, 2002 7:59 PM > To: Jie Liang > Cc: 'Jan Wieck'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > Subject: Re: pg_restore cannot restore index > > > > Yep, documentation is wrong. Documentation patch attached and applied. > Also, in 7.3 you will not need the weird quoting for objects. > > --------------------------------------------------------------------------- > > Jie Liang wrote: > > Another possible bug: > > pg_restore -i "\"indexname\"" -d mydb mydumpfile > > msg: > > pg_restore: connecting to database for restore > > pg_restore: creating FUNCTION "plpgsql_call_handler" () > > pg_restore: [archiver (db)] could not execute query: ERROR: function > > plpgsql_call_handler already exists with same argument types > > pg_restore: *** aborted because of error > > > > I read the pg_restore.c source code, I found: > > #ifdef HAVE_GETOPT_LONG > > struct option cmdopts[] = { > > {"clean", 0, NULL, 'c'}, > > {"create", 0, NULL, 'C'}, > > {"data-only", 0, NULL, 'a'}, > > {"dbname", 1, NULL, 'd'}, > > {"file", 1, NULL, 'f'}, > > {"format", 1, NULL, 'F'}, > > {"function", 1, NULL, 'P'}, > > {"host", 1, NULL, 'h'}, > > {"ignore-version", 0, NULL, 'i'}, > > {"index", 1, NULL, 'I'}, > > So, -i may be mapped wrong, however, -I is illegal option. > > > > Thanks! > > > > > > Jie Liang > > > > > > > > -----Original Message----- > > From: Jie Liang [mailto:jie@stbernard.com] > > Sent: Wednesday, July 03, 2002 12:03 PM > > To: 'Jan Wieck'; Jie Liang > > Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > > Subject: Re: [SQL] pg_restore cannot restore function > > > > > > > > OK, we figured it out. > > The problem is the documentation confused me!!! > > In man page of pg_restore: > > -P function-name > > --function=function name > > Specify a procedure or function to be restored. > > > > User will assume that syntax of restoring a function is same as > > restoring a table, but it's not true, it's slightly different. > > To restore a table: > > pg_restore -Rxt mytable -d mydb2 dbf > > works, but to restore a function: > > pg_restore -P myfunction -d mydb2 dbf > > won't work, and you need to use: > > pg_restore -P "\"myfunction\" (args and type)" -d mydb2 dbf > > to make it work!!!!! > > > > > > I believe that the man page of pg_restore should be improved. > > > > > > Thanks. > > > > > > > > Jie Liang > > > > > > > > -----Original Message----- > > From: Jan Wieck [mailto:JanWieck@Yahoo.com] > > Sent: Monday, July 01, 2002 11:14 AM > > To: Jie Liang > > Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > > Subject: Re: [SQL] pg_restore cannot restore function > > > > > > Jie Liang wrote: > > > > > > Oops,my OS is FreeBSD4.3 PostgreSQL7.2 > > > > I cannot see such an error message in the pg_restore sources at all. Are > > you sure to use the right versions together? > > > > > > Jan > > > > > > > > Thanks > > > > > > Jie Liang > > > > > > -----Original Message----- > > > From: Jie Liang > > > Sent: Friday, June 28, 2002 1:46 PM > > > To: 'Jan Wieck' > > > Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > > > Subject: RE: [SQL] pg_restore cannot restore function > > > > > > No any error msg in the logfile, I didn't see any create function > > statement > > > in my logfile which I enabled the query log. > > > This function is written in PL/pgSQL which is enabled in target db, > > > If I pg_dump the schema into a plain text file, I can see its defination > > > there, I can easily copy & paste (restore) it into mydb2. > > > however, I failed to restore it by using flag -P with compressed file. > > > I also tried to use > > > su postgres -c "/usr/local/pgsql/bin/pg_restore --function=myfunction > > > --dbname=mydb2 dbf" > > > error msg > > > pg_restore: [archiver] could not open input file: No such file or > > directory > > > > > > weird??? > > > > > > I use > > > pg_restore -Rxt mytable -d mydb2 dbf > > > have no such a problem, it works. > > > > > > Is any syntax error?? > > > I am confused by documentation now! > > > Is it a bug???? > > > > > > Thanks > > > > > > Jie Liang > > > > > > -----Original Message----- > > > From: Jan Wieck [mailto:JanWieck@Yahoo.com] > > > Sent: Friday, June 28, 2002 12:39 PM > > > To: Jie Liang > > > Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > > > Subject: Re: [SQL] pg_restore cannot restore function > > > > > > Jie Liang wrote: > > > > > > > > I use > > > > pg_dump -Fc mydb > dbf > > > > then I create another db by: > > > > createdb mydb2 > > > > I use > > > > pg_restore -P myfunction -d mydb2 dbf > > > > > > > > cannot restore myfunction into mydb2 > > > > > > > > why?????? > > > > > > Good question. Is there any error message in the postmaster log? > > > > > > If the function is written in a procedural language, is that language > > > enabled in the target database? If the function is written in the SQL > > > language, do all underlying objects like tables and views exist? If it's > > > a C language function, does the shared object containing the function > > > exist at the expected location? > > > > > > Jan > > > > > > -- > > > > > > #======================================================================# > > > # It's easier to get forgiveness for being wrong than for being right. # > > > # Let's break this rule - forgive me. # > > > #================================================== JanWieck@Yahoo.com # > > > > -- > > > > #======================================================================# > > # It's easier to get forgiveness for being wrong than for being right. # > > # Let's break this rule - forgive me. # > > #================================================== JanWieck@Yahoo.com # > > > > > > > > ---------------------------(end of broadcast)--------------------------- > > TIP 6: Have you searched our list archives? > > > > http://archives.postgresql.org > > > > > > -- > Bruce Momjian | http://candle.pha.pa.us > pgman@candle.pha.pa.us | (610) 853-3000 > + If your life is a hard drive, | 830 Blythe Avenue > + Christ can be your backup. | Drexel Hill, Pennsylvania 19026 > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
On this point, I'd like to ask: 1. where I can download this new version? 2. does pg_restore --index=aa --dbname=test /bjm/x works also??? Because pg_restore --table=mytable --dbname=mydb mydumpfile doesn't work! I got same error msg. Jie Liang -----Original Message----- From: Bruce Momjian [mailto:pgman@candle.pha.pa.us] Sent: Wednesday, July 10, 2002 7:06 PM To: Jie Liang Cc: 'Jan Wieck'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' Subject: Re: pg_restore cannot restore index Jie Liang wrote: > Thanks! > But I did not make long form works also, is it: > pg_restore --index="\"indexname\"" --dbname=mydb mydumpfile > ??????????? > msg: > pg_restore:[archiver] could open input file: No such file or directory Strange. I found a few more problems with the getopt values in pg_restore.c not matching the 'case' statement or the documentation. I got it working here with my patched version using: pg_restore -I aa -d test /bjm/x It can't find the file? I didn't fix anything in that area. I am confused how that could be messed up. I don't see any other meaningful changes to pg_restore except the quote fixes I did. Are you sure the file is correct? Thanks for pointing these things out. It is a big help. Now I am starting to wonder what else is wrong in the code. :-) > > > could you give out a example of long form???? > > > Thanks again. > > > Jie Liang > > -----Original Message----- > From: Bruce Momjian [mailto:pgman@candle.pha.pa.us] > Sent: Tuesday, July 09, 2002 7:59 PM > To: Jie Liang > Cc: 'Jan Wieck'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > Subject: Re: pg_restore cannot restore index > > > > Yep, documentation is wrong. Documentation patch attached and applied. > Also, in 7.3 you will not need the weird quoting for objects. > > --------------------------------------------------------------------------- > > Jie Liang wrote: > > Another possible bug: > > pg_restore -i "\"indexname\"" -d mydb mydumpfile > > msg: > > pg_restore: connecting to database for restore > > pg_restore: creating FUNCTION "plpgsql_call_handler" () > > pg_restore: [archiver (db)] could not execute query: ERROR: function > > plpgsql_call_handler already exists with same argument types > > pg_restore: *** aborted because of error > > > > I read the pg_restore.c source code, I found: > > #ifdef HAVE_GETOPT_LONG > > struct option cmdopts[] = { > > {"clean", 0, NULL, 'c'}, > > {"create", 0, NULL, 'C'}, > > {"data-only", 0, NULL, 'a'}, > > {"dbname", 1, NULL, 'd'}, > > {"file", 1, NULL, 'f'}, > > {"format", 1, NULL, 'F'}, > > {"function", 1, NULL, 'P'}, > > {"host", 1, NULL, 'h'}, > > {"ignore-version", 0, NULL, 'i'}, > > {"index", 1, NULL, 'I'}, > > So, -i may be mapped wrong, however, -I is illegal option. > > > > Thanks! > > > > > > Jie Liang > > > > > > > > -----Original Message----- > > From: Jie Liang [mailto:jie@stbernard.com] > > Sent: Wednesday, July 03, 2002 12:03 PM > > To: 'Jan Wieck'; Jie Liang > > Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > > Subject: Re: [SQL] pg_restore cannot restore function > > > > > > > > OK, we figured it out. > > The problem is the documentation confused me!!! > > In man page of pg_restore: > > -P function-name > > --function=function name > > Specify a procedure or function to be restored. > > > > User will assume that syntax of restoring a function is same as > > restoring a table, but it's not true, it's slightly different. > > To restore a table: > > pg_restore -Rxt mytable -d mydb2 dbf > > works, but to restore a function: > > pg_restore -P myfunction -d mydb2 dbf > > won't work, and you need to use: > > pg_restore -P "\"myfunction\" (args and type)" -d mydb2 dbf > > to make it work!!!!! > > > > > > I believe that the man page of pg_restore should be improved. > > > > > > Thanks. > > > > > > > > Jie Liang > > > > > > > > -----Original Message----- > > From: Jan Wieck [mailto:JanWieck@Yahoo.com] > > Sent: Monday, July 01, 2002 11:14 AM > > To: Jie Liang > > Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > > Subject: Re: [SQL] pg_restore cannot restore function > > > > > > Jie Liang wrote: > > > > > > Oops,my OS is FreeBSD4.3 PostgreSQL7.2 > > > > I cannot see such an error message in the pg_restore sources at all. Are > > you sure to use the right versions together? > > > > > > Jan > > > > > > > > Thanks > > > > > > Jie Liang > > > > > > -----Original Message----- > > > From: Jie Liang > > > Sent: Friday, June 28, 2002 1:46 PM > > > To: 'Jan Wieck' > > > Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > > > Subject: RE: [SQL] pg_restore cannot restore function > > > > > > No any error msg in the logfile, I didn't see any create function > > statement > > > in my logfile which I enabled the query log. > > > This function is written in PL/pgSQL which is enabled in target db, > > > If I pg_dump the schema into a plain text file, I can see its defination > > > there, I can easily copy & paste (restore) it into mydb2. > > > however, I failed to restore it by using flag -P with compressed file. > > > I also tried to use > > > su postgres -c "/usr/local/pgsql/bin/pg_restore --function=myfunction > > > --dbname=mydb2 dbf" > > > error msg > > > pg_restore: [archiver] could not open input file: No such file or > > directory > > > > > > weird??? > > > > > > I use > > > pg_restore -Rxt mytable -d mydb2 dbf > > > have no such a problem, it works. > > > > > > Is any syntax error?? > > > I am confused by documentation now! > > > Is it a bug???? > > > > > > Thanks > > > > > > Jie Liang > > > > > > -----Original Message----- > > > From: Jan Wieck [mailto:JanWieck@Yahoo.com] > > > Sent: Friday, June 28, 2002 12:39 PM > > > To: Jie Liang > > > Cc: 'Bruce Momjian'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > > > Subject: Re: [SQL] pg_restore cannot restore function > > > > > > Jie Liang wrote: > > > > > > > > I use > > > > pg_dump -Fc mydb > dbf > > > > then I create another db by: > > > > createdb mydb2 > > > > I use > > > > pg_restore -P myfunction -d mydb2 dbf > > > > > > > > cannot restore myfunction into mydb2 > > > > > > > > why?????? > > > > > > Good question. Is there any error message in the postmaster log? > > > > > > If the function is written in a procedural language, is that language > > > enabled in the target database? If the function is written in the SQL > > > language, do all underlying objects like tables and views exist? If it's > > > a C language function, does the shared object containing the function > > > exist at the expected location? > > > > > > Jan > > > > > > -- > > > > > > #======================================================================# > > > # It's easier to get forgiveness for being wrong than for being right. # > > > # Let's break this rule - forgive me. # > > > #================================================== JanWieck@Yahoo.com # > > > > -- > > > > #======================================================================# > > # It's easier to get forgiveness for being wrong than for being right. # > > # Let's break this rule - forgive me. # > > #================================================== JanWieck@Yahoo.com # > > > > > > > > ---------------------------(end of broadcast)--------------------------- > > TIP 6: Have you searched our list archives? > > > > http://archives.postgresql.org > > > > > > -- > Bruce Momjian | http://candle.pha.pa.us > pgman@candle.pha.pa.us | (610) 853-3000 > + If your life is a hard drive, | 830 Blythe Avenue > + Christ can be your backup. | Drexel Hill, Pennsylvania 19026 > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
What parameter I should change in order to make postmaster taking CPU as much as possible? Maybe I should ask: how can I make big tables equijoin faster? I have a serveral tables that contain more 2.5 million records, I need to equijoin those tables often. Thanks! Jie Liang
Jie Liang wrote: > On this point, I'd like to ask: > 1. where I can download this new version? > 2. does > pg_restore --index=aa --dbname=test /bjm/x > works also??? OK, the attached patch should allow -I to work in 7.2.X. This will all be fixed in 7.3. > Because > pg_restore --table=mytable --dbname=mydb mydumpfile > doesn't work! Is this a different problem? --table doesn't work either? -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026 *** ./pg_restore.c.orig Sat Jul 13 10:45:43 2002 --- ./pg_restore.c Sat Jul 13 10:45:55 2002 *************** *** 163,171 **** } #ifdef HAVE_GETOPT_LONG ! while ((c = getopt_long(argc, argv, "acCd:f:F:h:i:lL:NoOp:P:rRsS:t:T:uU:vWxX:", cmdopts, NULL)) != -1) #else ! while ((c = getopt(argc, argv, "acCd:f:F:h:i:lL:NoOp:P:rRsS:t:T:uU:vWxX:")) != -1) #endif { switch (c) --- 163,171 ---- } #ifdef HAVE_GETOPT_LONG ! while ((c = getopt_long(argc, argv, "acCd:f:F:h:iI:lL:NoOp:P:rRsS:t:T:uU:vWxX:", cmdopts, NULL)) != -1) #else ! while ((c = getopt(argc, argv, "acCd:f:F:h:iI:lL:NoOp:P:rRsS:t:T:uU:vWxX:")) != -1) #endif { switch (c)
Same problem, did you test: pg_restore --index=aa --dbname=test /bjm/x ?????? I didn't make it work, I may miss someting. Thanks! Jie Liang -----Original Message----- From: Bruce Momjian [mailto:pgman@candle.pha.pa.us] Sent: Saturday, July 13, 2002 7:51 AM To: Jie Liang Cc: 'Jan Wieck'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' Subject: Re: pg_restore cannot restore index Jie Liang wrote: > On this point, I'd like to ask: > 1. where I can download this new version? > 2. does > pg_restore --index=aa --dbname=test /bjm/x > works also??? OK, the attached patch should allow -I to work in 7.2.X. This will all be fixed in 7.3. > Because > pg_restore --table=mytable --dbname=mydb mydumpfile > doesn't work! Is this a different problem? --table doesn't work either? -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
I just ran some tests in 7.2.1 and 7.3 and both worked fine. Can I see the exact error it generates? --------------------------------------------------------------------------- Jie Liang wrote: > Same problem, did you test: > pg_restore --index=aa --dbname=test /bjm/x > ?????? > I didn't make it work, I may miss someting. > > Thanks! > > > Jie Liang > > > > -----Original Message----- > From: Bruce Momjian [mailto:pgman@candle.pha.pa.us] > Sent: Saturday, July 13, 2002 7:51 AM > To: Jie Liang > Cc: 'Jan Wieck'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > Subject: Re: pg_restore cannot restore index > > > Jie Liang wrote: > > On this point, I'd like to ask: > > 1. where I can download this new version? > > 2. does > > pg_restore --index=aa --dbname=test /bjm/x > > works also??? > > OK, the attached patch should allow -I to work in 7.2.X. This will all > be fixed in 7.3. > > > Because > > pg_restore --table=mytable --dbname=mydb mydumpfile > > doesn't work! > > Is this a different problem? --table doesn't work either? > > -- > Bruce Momjian | http://candle.pha.pa.us > pgman@candle.pha.pa.us | (610) 853-3000 > + If your life is a hard drive, | 830 Blythe Avenue > + Christ can be your backup. | Drexel Hill, Pennsylvania 19026 > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
su postgres -c "/usr/local/pgsql/bin/pg_restore --table=mytable --dbname=mydb mydumpfile" error msg pg_restore: [archiver] could not open input file: No such file or directory I run it on 7.2.0 Jie Liang -----Original Message----- From: Bruce Momjian [mailto:pgman@candle.pha.pa.us] Sent: Monday, July 15, 2002 3:24 PM To: Jie Liang Cc: 'Jan Wieck'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' Subject: Re: pg_restore cannot restore index I just ran some tests in 7.2.1 and 7.3 and both worked fine. Can I see the exact error it generates? --------------------------------------------------------------------------- Jie Liang wrote: > Same problem, did you test: > pg_restore --index=aa --dbname=test /bjm/x > ?????? > I didn't make it work, I may miss someting. > > Thanks! > > > Jie Liang > > > > -----Original Message----- > From: Bruce Momjian [mailto:pgman@candle.pha.pa.us] > Sent: Saturday, July 13, 2002 7:51 AM > To: Jie Liang > Cc: 'Jan Wieck'; 'admin@postgresql.org'; 'pgsql-sql@postgresql.org' > Subject: Re: pg_restore cannot restore index > > > Jie Liang wrote: > > On this point, I'd like to ask: > > 1. where I can download this new version? > > 2. does > > pg_restore --index=aa --dbname=test /bjm/x > > works also??? > > OK, the attached patch should allow -I to work in 7.2.X. This will all > be fixed in 7.3. > > > Because > > pg_restore --table=mytable --dbname=mydb mydumpfile > > doesn't work! > > Is this a different problem? --table doesn't work either? > > -- > Bruce Momjian | http://candle.pha.pa.us > pgman@candle.pha.pa.us | (610) 853-3000 > + If your life is a hard drive, | 830 Blythe Avenue > + Christ can be your backup. | Drexel Hill, Pennsylvania 19026 > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
Jie Liang wrote: > su postgres -c "/usr/local/pgsql/bin/pg_restore --table=mytable > --dbname=mydb mydumpfile" > error msg > pg_restore: [archiver] could not open input file: No such file or directory > > I run it on 7.2.0 OK, my guess is that the 'su' is moving you to another directory. Try specifying the full path of the file, e.g. /var/tmp/mydumpfile. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026