Thread: pgtcl large object fix

pgtcl large object fix

From
Mahlon Stacy
Date:
Newer versions of TCL implement ByteArray objects which are
the best fit for Postgresql Large Object functions. The change
is simple. Here's a diff on the 7.4 source file and a fixed version:

diff pgtclCmds.c pgtclCmds.c.fixed
1218c1218
<       bufObj = Tcl_NewStringObj(buf, nbytes);
---
>       bufObj = Tcl_NewByteArrayObj(buf, nbytes);
1310c1310
<       buf = Tcl_GetStringFromObj(objv[3], &nbytes);
---
>       buf = Tcl_GetByteArrayFromObj(objv[3], &nbytes);

By making this change, TCL users (like me) can store and retrieve
binary objects in the database, like images. And, strings will
still work fine, too.

-Mahlon Stacy

-------------------------------------------------------------
Mahlon Stacy                   Internet:   mcs@mayo.edu
Mayo Foundation                (507) 284-4558
Medical Science Bldg 1-43      FAX (507) 284-1632
Rochester, MN 55905
-------------------------------------------------------------

Re: pgtcl large object fix

From
Tom Lane
Date:
Mahlon Stacy <mcs@mayo.edu> writes:
> Newer versions of TCL implement ByteArray objects which are
> the best fit for Postgresql Large Object functions.

How newer is "newer"?  That is, what compatibility problems might we
create if we make this change?

            regards, tom lane

Re: pgtcl large object fix

From
Reinhard Max
Date:
On Wed, 6 Aug 2003 at 18:02, Tom Lane wrote:

> Mahlon Stacy <mcs@mayo.edu> writes:
> > Newer versions of TCL implement ByteArray objects which are
> > the best fit for Postgresql Large Object functions.
>
> How newer is "newer"?  That is, what compatibility problems might we
> create if we make this change?

ByteArrays were introduced in Tcl 8.1 (March 1999) along with the
change to use UTF-8 as internal string encoding.

cu
    Reinhard