Thread

  1. Must a C state transition function use palloc on the returned value?

    Dirk Lutzebäck <lutzeb@aeccom.com> — 2000-11-10T11:19:21Z

    Hi,
    
    I'm defining a new aggregate using a C transition function. It is of
    type TEXT, so the C function gets pointers (*text) to the internal-state1 and
    next-data-item parameters. 
    
    Question is if the returning value of type *text must be palloc'ed or
    can be just taken from the input parameters. In the latter case I get
    error messages like 
    
    NOTICE:  PortalHeapMemoryFree: 0x0x40b22ce8 not in alloc set!
    
    Dirk
    
    
  2. Re: Must a C state transition function use palloc on the returned value?

    Tom Lane <tgl@sss.pgh.pa.us> — 2000-11-10T15:03:07Z

    Dirk Lutzebaeck <lutzeb@aeccom.com> writes:
    > I'm defining a new aggregate using a C transition function. It is of
    > type TEXT, so the C function gets pointers (*text) to the internal-state1 and
    > next-data-item parameters. 
    
    > Question is if the returning value of type *text must be palloc'ed or
    > can be just taken from the input parameters.
    
    The result must be a fresh palloc, since both inputs will be pfreed the
    moment you return.  7.1 will copy the result for you if you are so
    incautious as to try to return an input, but 7.0.* just falls over :-(
    
    			regards, tom lane
    
    
  3. Re: Must a C state transition function use palloc on the returned value?

    Dirk Lutzebäck <lutzeb@aeccom.com> — 2000-11-10T15:13:13Z

    Tom Lane writes:
     > Dirk Lutzebaeck <lutzeb@aeccom.com> writes:
     > > I'm defining a new aggregate using a C transition function. It is of
     > > type TEXT, so the C function gets pointers (*text) to the internal-state1 and
     > > next-data-item parameters. 
     > 
     > > Question is if the returning value of type *text must be palloc'ed or
     > > can be just taken from the input parameters.
     > 
     > The result must be a fresh palloc, since both inputs will be pfreed the
     > moment you return.  7.1 will copy the result for you if you are so
     > incautious as to try to return an input, but 7.0.* just falls over :-(
    
    Thanks! It works now...
    
    Dirk