[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gambas-user
Subject:    Re: [Gambas-user] Gambas & PostgreSQL cannot create index. relation
From:       "Ron_1st" <ronstk () tiscali ! nl>
Date:       2009-01-24 23:19:16
Message-ID: 200901250019.16944.ronstk () tiscali ! nl
[Download RAW message or body]

On Saturday 24 January 2009, Randy wrote:
> .Fields.Add("status", gb.String, 1)
> .PrimaryKey = ["account"]
> .Indexes.Add("glcoa_sort", "glsort", TRUE)
> .Update
> END WITH
> 
> Here's the debug output with index. Their is NO CREATE TABLE SQL when you try make \
> table with indexes. It's missing! It looks like this is a bug in Gambas when \
> creating table with indexes. 
> postgresql: 0x8159aa8: select substring(version(),12,5)
> postgresql: 0x8159aa8: show client_encoding
> postgresql: 0x8159aa8: select relname from pg_class where (relkind = 'r' 
> or relkind = 'v') and (relname = 'glcoa') and (relnamespace not in 
> (select oid from pg_namespace where nspname = 'information_schema'))
> postgresql: 0x8159aa8: select pg_class.relname from pg_class, pg_index, 
> pg_class pg_class2 where pg_class2.relname = 'glcoa' and 
> (pg_class2.relnamespace not in (select oid from pg_namespace where 
> nspname = 'information_schema')) and pg_index.indrelid = pg_
> class2.oid and pg_index.indexrelid = pg_class.oid and pg_class.relname = 
> 'glcoa_sort'
> postgresql: 0x8159aa8: CREATE UNIQUE INDEX "glcoa_sort" ON glcoa ( glsort )
------------------------------------------------------------^^^^^^^
	here it tries the table glcoa but that does not exist yet !!!
> 


OK
Just the last line tells me it wants a table to add the index.

> From the past with msaccess and mysql i had a problem too
The solution was write the table first and change the field type.

For the last line I would say it try to create the index "glcoa_sort" ON glcoa
and that the table glcoa does not exist. 


suggest:
a)

    .Fields.Add("status", gb.String, 1)
    .PrimaryKey = ["account"]
    .Update              '<-- this should write the table before tha add indexes
    .Indexes.Add("glcoa_account", "account", TRUE)
    .Indexes.Add("glcoa_sort", "glsort", TRUE)
    .Update
   END WITH

or
b)

    .Fields.Add("status", gb.String, 1)
    .PrimaryKey = ["account"]
    .Update
   END WITH

' here the table must have been written by the .update and the END WIDTH

' maybe you must reopen the table again here

   WITH hTable
    .Indexes.Add("glcoa_account", "account", TRUE)
    .Indexes.Add("glcoa_sort", "glsort", TRUE)
    .Update              '<-- this should write the table before tha add indes
   END WITH


It looks stupid but it is the best idea I have ATM.




Best regards,

Ron_1st

-- 

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Gambas-user mailing list
Gambas-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic