Thread: If there a bug in the psql or just a feature .
Dear all, I'm currently working on my thesis and I chose psql. What I need to do is defining a new type in psql. It should be dynamic array. | 1 | 2 | 3.0 | 4.5 | 2.1 | . .. . . // This one is not working typedef struct Myindex {double *indexes;int level;int size; } Myindex Myindex * Myindex_in { } Myindex * Myindex_out {However when I try to get back the data. It seems that the lastinsertion always overwrite other previous insertion.Inparticular, it overwrites all data from 2nd to n-1th record.where n is the number of insertion but not the firstone. } // This one work ok but the idea is to have dynamic array. // This would defeat the purpose of this new structure. typedef struct Myindex { double indexes[10]; int level; int size; } Myindex; Standalone debuging works for both cases. However psql accepts only the static array. Could anybody enlight me on this issue, please regards, Van
Vanmunin Chea <vac@cse.unsw.EDU.AU> writes: > // This one is not working > typedef struct Myindex { > double *indexes; > int level; > int size; > } Myindex You cannot use a pointer inside a Postgres datatype. The system will have no idea that the pointer is there and so will not copy the pointed-to data, nor update the pointer, when the datum is copied, stored on disk, etc. regards, tom lane
Hey Tom, Thanks for the tips, Tom. I have that feeling from the start (with the two different implementation) but never actually have a chance to confirm with someone. 1. It there a way to store the dynamic array at all ? I notice psql has a similar type - Single Dynamic Dimensional Array. However there isn't any built in operators(<,<=,==,>,>=) for Array to do sorting. 2. Can I write one up ? regards, Van. On Tue, 10 Sep 2002, Tom Lane wrote: > Vanmunin Chea <vac@cse.unsw.EDU.AU> writes: > > // This one is not working > > typedef struct Myindex { > > double *indexes; > > int level; > > int size; > > } Myindex > > You cannot use a pointer inside a Postgres datatype. The system will > have no idea that the pointer is there and so will not copy the > pointed-to data, nor update the pointer, when the datum is copied, > stored on disk, etc. > > regards, tom lane > Vanmunin Chea
On Tue, 2002-09-10 at 17:22, Vanmunin Chea wrote: > Hey Tom, > > Thanks for the tips, Tom. I have that feeling from the start > (with the two different implementation) but never actually have a chance > to confirm with someone. > > 1. It there a way to store the dynamic array at all ? > > > I notice psql has a similar type - Single Dynamic Dimensional > Array. However there isn't any built in operators(<,<=,==,>,>=) for Array > to do sorting. > > 2. Can I write one up ? See attachment. Unfortunately I ran out of time before figuring out how to make btree index use it ;( Also, in 7.3 there are a lot more ops for in contrib/intarray than was in 7.2. ------------- Hannu