Re: user defined data types - help - Mailing list pgsql-general
| From | Sathish Vadhiyar |
|---|---|
| Subject | Re: user defined data types - help |
| Date | |
| Msg-id | Pine.GSO.4.33.0209151031180.8908-100000@bluegrass.cs.utk.edu Whole thread Raw |
| In response to | Re: user defined data types - help (Martijn van Oosterhout <kleptog@svana.org>) |
| Responses |
Re: user defined data types - help
|
| List | pgsql-general |
Because of 2 reaons:
1. My C structure consists of other such fields like 'latency' etc. Here I
have shown 'bandwidth' for the ease of explaining. Having tables for each
such field will lead to large number of tables and hence will soon get
unmanageable.
2. I have a table in which I want to have this structure as one field.
Thanks.
On Sat, 14 Sep 2002, Martijn van Oosterhout wrote:
> Why are you trying to store this all into one value? Why not just create two
> tables, one for the names of the machines and one to stores the bandwidths?
>
> On Fri, Sep 13, 2002 at 11:39:23AM -0400, Sathish Vadhiyar wrote:
> >
> > Hi.
> >
> > I have a struct in C in my application program.
> >
> > typedef struct{
> > int count;
> > char** machine_names;
> > double* bandwidth;
> > } MACHINEINFO;
> >
> > 'count' is the number of machines. machine_names[i] gives the machine name
> > of machine i. 'bandwidth' is a matrix that stores bandwidth information
> > between the machines. So bandwidth[i*count+j] gives the bandwidth between
> > machines i and j.
> >
> > Iam trying to define a corresponding structure and define the type to
> > store in a postgresql datat base using 'CREATE TYPE'.
> >
> > I don't want to have a structure like
> >
> > typedef struct{
> > int32 size; /* for variable length */
> > int4 count;
> > char data[1];
> > } PSQLSTRUCT;
> >
> > and have both the machine_names and bandwidth encoded into string stored
> > in 'data'.
> >
> > What I would like instead is something like a 'polygon' type where I would
> > have.
> >
> > typedef struct{
> > char machine_name[100]; /* Ideally, I don't want to fix the size of a
> > single machine as 100. But I will compromise
> > for the moment */
> > float8 bandwidth; /* ???? */
> > } SINGLEMACHINE
> >
> > typedef struct{
> > int32 size;
> > int4 count;
> > SINGLEMACHINE sm[1]; /* variable number of machines */
> > } PSQLSTRUCT;
> >
> > This is similar to the POLYGON built in type where the structure polygon
> > consists of variable number of POINT structures.
> >
> > But here is the tricky issue. Unlike the POINT structure that contains
> > fileds of fixed lengths, my SINGLEMACHINE structure consists of variable
> > length field in 'bandwidth'.
> >
> > Any ideas regarding how to do this?
> >
> >
> > Thanks.
> >
> > ---------------------------------------------------------------------
> >
> > Sathish S. Vadhiyar
> > PhD Candidate Research Assistant, Innovative Computing Laboratory
> > Computer Science Department
> > University of Tennessee
> > Knoxville
> >
> > Ph: (865)946-4558 (H) , (865)974-6323 (O).
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 3: if posting/reading through Usenet, please send an appropriate
> > subscribe-nomail command to majordomo@postgresql.org so that your
> > message can get through to the mailing list cleanly
>
> --
> Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/
> > There are 10 kinds of people in the world, those that can do binary
> > arithmetic and those that can't.
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
>
---------------------------------------------------------------------
Sathish S. Vadhiyar
PhD Candidate Research Assistant, Innovative Computing Laboratory
Computer Science Department
University of Tennessee
Knoxville
Ph: (865)946-4558 (H) , (865)974-6323 (O).
pgsql-general by date: