Обсуждение: pg_restore cannot restore an index
Last July, I pointed out this problem when I use v7.2.1, I got the answer that will be resolved in v7.3, however, I am usingv7.3.1, pg_restore.c seems have no change in this section. So it still doesn't work. Jie Liang Jie Liang wrote: > 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! > >
Yes, I remember this. The code in 7.3 looks OK to me. Can you show me a command line that fails for you? I just tried: $ pg_restore -I x asdfpg_restore: [archiver] could not open input file: No such file or directory so it looks like -I is working. --------------------------------------------------------------------------- Jie Liang wrote: > Last July, I pointed out this problem when I use v7.2.1, I got the answer that will be resolved in v7.3, however, I amusing v7.3.1, pg_restore.c seems have no change in this section. So it still doesn't work. > > Jie Liang > > > > Jie Liang wrote: > > 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! > > > > > > ---------------------------(end of broadcast)--------------------------- > TIP 2: you can get off all lists at once with the unregister command > (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001+ If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania19073
Bruce Momjian <pgman@candle.pha.pa.us> writes: > Yes, I remember this. The code in 7.3 looks OK to me. Can you show me a > command line that fails for you? It does in fact work for me --- if the object in question is recorded as an INDEX in the dump. These days, lots of things get recorded as CONSTRAINTs instead. For example, given create table t1 (f1 int primary key); create table t2 (f1 int primary key); create table foo(f1 int); create index fooey on foo(f1); I get a dump that has a TOC like $ pg_restore -l z.dump ... 2; 149798 TABLE t1 postgres 3; 149802 TABLE t2 postgres 4; 149806 TABLE foo postgres 8; 149798 TABLE DATA t1 postgres 9; 149802 TABLE DATA t2 postgres 10; 149806 TABLE DATA foo postgres 7; 149808 INDEX fooey postgres 5; 149800 CONSTRAINT t1_pkey postgres 6; 149804 CONSTRAINT t2_pkey postgres and the -I option will find "fooey", but not "t1_pkey" or "t2_pkey". Perhaps the gripe is really that we need a "restore specific constraint" option? If so, should we overload -I or invent a separate switch? regards, tom lane
Sorry, it because I have another index with same indexname because pg_restore index fail. Thanks. Jie Liang -----Original Message----- From: Bruce Momjian [mailto:pgman@candle.pha.pa.us] Sent: Thursday, January 16, 2003 10:07 AM To: Jie Liang Cc: Tom Lane; pgsql-sql@postgresql.org Subject: Re: [SQL] pg_restore cannot restore an index Yes, I remember this. The code in 7.3 looks OK to me. Can you show me a command line that fails for you? I just tried: $ pg_restore -I x asdfpg_restore: [archiver] could not open input file: No such file or directory so it looks like -I is working. --------------------------------------------------------------------------- Jie Liang wrote: > Last July, I pointed out this problem when I use v7.2.1, I got the answer that will be resolved in v7.3, however, I amusing v7.3.1, pg_restore.c seems have no change in this section. So it still doesn't work. > > Jie Liang > > > > Jie Liang wrote: > > 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! > > > > > > ---------------------------(end of broadcast)--------------------------- > TIP 2: you can get off all lists at once with the unregister command > (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001+ If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania19073