Обсуждение: BUG #2143: Indexes incorrectly created from database dump
The following bug has been logged online:
Bug reference: 2143
Logged by: Robert Osowiecki
Email address: robson@cavern.pl
PostgreSQL version: 8.1.1
Operating system: Linux 2.6.14-gentoo-r5 #2 SMP Thu Dec 22 11:58:01 CET
2005 i686 Intel(R) Xeon(TM) CPU 3.20GHz GenuineIntel GNU/Linux
Description: Indexes incorrectly created from database dump
Details:
I've got this indexes on my table:
primary key
"unique_code_i" UNIQUE, btree (ar_code, ... 6 int fields)
"pattern_i" btree (ar_code varchar_pattern_ops)
Immediately after restoring from SQL dump with pg_sql, unique_code_i index
is buggy. When I read:
select * from my_table where ar_code like 'FOO'
postgres uses pattern_i and returns all requested rows.
BUT when on "where ar_code = 'FOO'" unique_code_i index is used and query
returns NO ROWS!
The bug dissapears after REINDEX and does not apper when doing data-only
restore on empty database structure.
Please, help. I'll gladly provide any additional information as sonn as I
know where to look.
Robert
PS. Spotting that kind of bug on production database (as it was i my case)
can really spoil a day :)
On 1/4/06, Robert Osowiecki <robson@cavern.pl> wrote: > > The following bug has been logged online: > > Bug reference: 2143 > Logged by: Robert Osowiecki > Email address: robson@cavern.pl > PostgreSQL version: 8.1.1 > Operating system: Linux 2.6.14-gentoo-r5 #2 SMP Thu Dec 22 11:58:01 CET > 2005 i686 Intel(R) Xeon(TM) CPU 3.20GHz GenuineIntel GNU/Linux > Description: Indexes incorrectly created from database dump > Details: > > I've got this indexes on my table: > primary key > "unique_code_i" UNIQUE, btree (ar_code, ... 6 int fields) > "pattern_i" btree (ar_code varchar_pattern_ops) > > Immediately after restoring from SQL dump with pg_sql, unique_code_i index > is buggy. When I read: > > select * from my_table where ar_code like 'FOO' > > postgres uses pattern_i and returns all requested rows. > > BUT when on "where ar_code =3D 'FOO'" unique_code_i index is used and que= ry > returns NO ROWS! > > The bug dissapears after REINDEX and does not apper when doing data-only > restore on empty database structure. > > Please, help. I'll gladly provide any additional information as sonn as I > know where to look. > > Robert > > PS. Spotting that kind of bug on production database (as it was i my case) > can really spoil a day :) > Last year come up an issue with similar behaviour (maybe the same problem).= .. http://archives.postgresql.org/pgsql-general/2005-12/msg00740.php IRC, there was a patch made for this... -- regards, Jaime Casanova (DBA: DataBase Aniquilator ;)
"Robert Osowiecki" <robson@cavern.pl> writes:
> BUT when on "where ar_code = 'FOO'" unique_code_i index is used and query
> returns NO ROWS!
Could you be more specific? Which values of 'FOO' does this happen for?
What is the datatype of ar_code? If it's a string type, what locale and
encoding are you using? You have not given nearly enough information to
let anyone else reproduce the problem.
regards, tom lane
Tom Lane napisa³(a): >"Robert Osowiecki" <robson@cavern.pl> writes: > > >>BUT when on "where ar_code = 'FOO'" unique_code_i index is used and query >>returns NO ROWS! >> >> > >Could you be more specific? Which values of 'FOO' does this happen for? > > I haven't checked for everyone. I'll be doing another dump:restore soon so I'll be able to check that. >What is the datatype of ar_code? If it's a string type, what locale > ar_code is varchar(20) >and >encoding are you using? > locale is pl_PL: at least it sorts polish letters correctly. Database encoding set to LATIN2 > You have not given nearly enough information to >let anyone else reproduce the problem. > > I'll be happy to answer any future questions, this is a critical issue for me. Robson.
Tom Lane napisal: >Robert Osowiecki <robson@cavern.pl> writes: > > >Hm, are you using any plperl functions? This could be the same problem >already identified with plperl messing up the locale settings. > > Yes, I am. Where can I read about that other problem, especially: does plperl spoil locale with each pgperl function call or only when creating language? Robson.
Robert Osowiecki <robson@cavern.pl> writes:
> Yes, I am. Where can I read about that other problem, especially: does
> plperl spoil locale with each pgperl function call or only when creating
> language?
It was discussed a week or two ago. We're still testing a patch, but
in the meantime you can work around it by making sure that the
postmaster is started with environment variables LC_COLLATE and LC_CTYPE
matching the settings used in the database.
regards, tom lane
Tom Lane napisa³(a): >It was discussed a week or two ago. We're still testing a patch, but >in the meantime you can work around it by making sure that the >postmaster is started with environment variables LC_COLLATE and LC_CTYPE >matching the settings used in the database. > > > It seems to work. Thanks a lot! :) R.