Обсуждение: A problem with the constraint system.

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

A problem with the constraint system.

От
"Billy G. Allie"
Дата:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


The problem:
Creating a table with a name containing mixed case that has aconstraint, the creation will fail.  For example:
    mug=> create table "MyTest" ( a int4 default 10 );    ERROR:  mytest: Table does not exist.    mug=> 

The Solution:
I haven't the faintest idea!

This problem bit me when I was trying to move an MS-Access database to 
postgreSQL while keeping MS-Access as the front end for the database.
- -- 
____       | Billy G. Allie    | Domain....: Bill.Allie@mug.org
|  /|      | 7436 Hartwell     | Compuserve: 76337,2061
|-/-|----- | Dearborn, MI 48126| MSN.......: B_G_Allie@email.msn.com
|/  |LLIE  | (313) 582-1540    | 



-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 5.0i for non-commercial use
Charset: noconv

iQA/AwUBNkpoxaFebSRz8o+3EQI+rwCdH1luSaOd78t0fKax+G4JnDeNndcAoKFV
QfKhqQuqVhRYPYFUTBpCDwBD
=KaAB
-----END PGP SIGNATURE-----



Re: [HACKERS] A problem with the constraint system.

От
Sferacarta Software
Дата:
Hello Billy,

giovedì, 12 novembre 98, you wrote:

BGA> -----BEGIN PGP SIGNED MESSAGE-----
BGA> Hash: SHA1


BGA> The problem:

BGA>         Creating a table with a name containing mixed case that has a
BGA>         constraint, the creation will fail.  For example:

BGA>             mug=> create table "MyTest" ( a int4 default 10 );
BGA>             ERROR:  mytest: Table does not exist.
BGA>             mug=> 
BGA> The Solution:
BGA>         I haven't the faintest idea!


I have this error also using CHECK... but the error message goes away
if I create, drop and re-create the table...

prova=> create table "MyTest" ( a int4 check(a>0) );
ERROR:  mytest: Table does not exist.
prova=> create table "MyTest" ( a int4 );
CREATE
prova=> drop table "MyTest";
DROP
prova=> create table "MyTest" ( a int4 check(a>0) );
CREATE

-Jose'-




Re: [HACKERS] A problem with the constraint system.

От
"Thomas G. Lockhart"
Дата:
> BGA> Creating a table with a name containing mixed case that has a
> BGA> constraint, the creation will fail.  For example:
> BGA>   mug=> create table "MyTest" ( a int4 default 10 );
> BGA>   ERROR:  mytest: Table does not exist.

I have a fix for this, though I've only tested with your example. Here
is the patch...

                      - Tom*** ../src/backend/catalog/heap.c.orig    Tue Sep  1 04:27:29 1998
--- ../src/backend/catalog/heap.c    Thu Nov 12 15:09:58 1998
***************
*** 1515,1521 ****
      char        nulls[4] = {' ', ' ', ' ', ' '};
      extern GlobalMemory CacheCxt;

!     sprintf(str, "select 1 from %.*s where %s",
              NAMEDATALEN, rel->rd_rel->relname.data, check->ccsrc);
      setheapoverride(true);
      planTree_list = (List *) pg_parse_and_plan(str, NULL, 0, &queryTree_list, None, FALSE);
--- 1515,1524 ----
      char        nulls[4] = {' ', ' ', ' ', ' '};
      extern GlobalMemory CacheCxt;

!     /* Check for table's existance. Surround table name with double-quotes
!      * to allow mixed-case and whitespace names. - thomas 1998-11-12
!      */
!     sprintf(str, "select 1 from \"%.*s\" where %s",
              NAMEDATALEN, rel->rd_rel->relname.data, check->ccsrc);
      setheapoverride(true);
      planTree_list = (List *) pg_parse_and_plan(str, NULL, 0, &queryTree_list, None, FALSE);