agora inbox for postgres@postgres.berkeley.edu  
help / color / mirror / Atom feed
From: Bruce Taneja. <aataneja@cs.mtu.edu>
To: postgres@postgres.Berkeley.EDU
Cc: Bruce Taneja. <aataneja@cs.mtu.edu>
Subject: variable size data types..
Date: Tue, 7 Jun 1994 02:03:54 -0400 (EDT)
Message-ID: <9406070603.AA06822@cs.mtu.edu> (raw)


Howdy Paul & folks,

Dunno if this is a more of a C question than a postgres question
but since it concerns postgres's variable user defined (array) 
data types, here goes:

example:

	typedef struct {

		int size; 	/* size of this mem glob */
		int n_points;	/* number of points struct nested */
		POINT points[1];/* the first one*/
		int n_circles;	/* the number of circles */
		CIRCLE circles[1]; /* the 1st one*/

		} CIRCLES_N_POINTS;

Next step is to parse my append statement and decide how much space
I require to palloc, once I have determined that and palloced that
space, I start putting the points in : points[0], points[1], points[2]
.. and similarly parsed circles data in circles[0], circles[1], ...

Understandably, the space for these "arrays" is being sliced out of
the palloced glob of memory ..

Now what is the guarantee that C does not write my circles "array"
data over my points "array" data ??? 

The way I see it , C can distinctly identify the CIRCLES_N_POINTS struct
but not the contiguous space following the struct, so both times when
we start to write in locations points[1] and circles[1], the same space
lying right after the struct is going to be used overwriting the previous
data .. or am I (happily) mistaken?..

and, if I am (sadly) right, then what is the solution to having two complex 
variable sized arrays in your defined variable size complex data type?

Perhaps the C gurus or postgres gurus would like to educate the dumb
old me ..
 
thanx for help in advance!
Bruce!

==============================================================================
   To add/remove yourself to/from the POSTGRES mailing list: send mail with 
   the subject line ADD or DEL to "postgres-request@postgres.Berkeley.EDU"

   If this fails, send mail to "post_questions@postgres.Berkeley.EDU" and
   a human will deal with it.  DO NOT post to the "postgres" mailing list.
==============================================================================



reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: postgres@postgres.berkeley.edu
  Cc: aataneja@cs.mtu.edu
  Subject: Re: variable size data types..
  In-Reply-To: <9406070603.AA06822@cs.mtu.edu>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox