On Feb 1, 2012, at 12:45 AM, Pavel Stehule wrote: >>> I looked to sources and I found a some useful routines for people who >>> write extensions and probably PL too. >> >>> There are datum_compute_size and datum_write from range_types.c. These >>> routines can be used in PL libs and maybe in other places. >> >>> Should be these routines moved to varlena.c and be public? >> >> Why? It is not common for types to contain other types, and it >> certainly isn't likely to happen without needing lots of other >> infrastructure --- the existing examples are arrays, records, and >> rangetypes, and all of those come with lots of baggage. And there >> are a number of choices in those functions that are pretty specific to >> rangetypes, as illustrated by the fact that they're not already sharing >> code with either arrays or records. > > For example I can use this code in my implementation of set of enum > (enumset datatype) because I have to wrap a array sometimes (I reuse a > array infrastructure). > > In orafce I can use this code for serialisation and deserialisation > Datums - it is used more times there
I'm not certain this in what Pavel is referring to, but I have often wished that I could pass something like an array into a function and have the function tell me exactly how much space that would require on-disk. It's pretty easy to figure that out for things like varchar and numeric, but doing so for arrays or composite types requires pretty detailed knowledge of PG internals. -- Jim C. Nasby, Database Architect j...@nasby.net 512.569.9461 (cell) http://jim.nasby.net -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers