Thread: Update and bytea problem...
Hi, I am trying to write a general update command where there might be "bytea" fields involved. The update command is generated programatically. I am having some problems when a bytea field is involved. A generated command might look like: update pics set info='moof.jpg', byteafield='<pgescaped contents of moof.jpg>' where info='doofus.jpg' and byteafield = '<pgescaped contents of doofus.jpg>' Unfortunately the above does not seem to work, I keep getting a syntax error with an invalid character '\' generally thousands of bytes into the command. Does update play nice with bytea used as above ( the escaped contents of doofus.jpg are the results of fetching the byteafield as text...)? For a couple of reasons ( NULL and DEFAULT) I have to use a text interface. Thanks Jerry
On Fri, Dec 09, 2005 at 08:46:17PM -0500, Jerry LeVan wrote: > I am trying to write a general update command where > there might be "bytea" fields involved. > > The update command is generated programatically. > > I am having some problems when a bytea field is > involved. What language are you using and how are you escaping the bytea data? Could you post a code snippet so we can see exactly what you're doing? -- Michael Fuhr
On Dec 9, 2005, at 9:35 PM, Michael Fuhr wrote: > On Fri, Dec 09, 2005 at 08:46:17PM -0500, Jerry LeVan wrote: >> I am trying to write a general update command where >> there might be "bytea" fields involved. >> >> The update command is generated programatically. >> >> I am having some problems when a bytea field is >> involved. > > What language are you using and how are you escaping the bytea > data? Could you post a code snippet so we can see exactly what > you're doing? > > -- > Michael Fuhr Sigh, it is really messy, I am writing in Tcl and using Pgtcl as the interface to Postgresql. This seems to work ok: insert into pics byteafield='<pg_escaped string>' I have been able to extract the byteafield and get the original file contents , jpg, png, etc...maybe I have been lucky? However update pics set byteafield='<pg_escaped string>' where byteafield='<other pg_escaped string>' has always failed for me unless the "other pg_escaped string" is a simple string. probably when pg_escaped string == string. Assuming I am not overlooking something obvious, I wonder how the "where clause" above is evaluated for bytea columns... do I need to unpgescape the string and then pg quote it? Something is not clear to me: I notice that pg_escaped strings can contain "'s are floating about in pg_escaped strings... Back to manuals... Jerry
Begin forwarded message: > From: Jerry LeVan <jerry.levan@eku.edu> > Date: December 9, 2005 10:45:35 PM EST > To: Michael Fuhr <mike@fuhr.org> > Cc: Postgres General <pgsql-general@postgresql.org> > Subject: Re: [GENERAL] Update and bytea problem... > > > On Dec 9, 2005, at 9:35 PM, Michael Fuhr wrote: > >> On Fri, Dec 09, 2005 at 08:46:17PM -0500, Jerry LeVan wrote: >>> I am trying to write a general update command where >>> there might be "bytea" fields involved. >>> >>> The update command is generated programatically. >>> >>> I am having some problems when a bytea field is >>> involved. >> >> What language are you using and how are you escaping the bytea >> data? Could you post a code snippet so we can see exactly what >> you're doing? >> >> -- Michael Fuhr > > Sigh, it is really messy, I am writing in Tcl and using Pgtcl as > the interface to Postgresql. > > This seems to work ok: > > insert into pics byteafield='<pg_escaped string>' > > > I have been able to extract the byteafield and get the > original file contents , jpg, png, etc...maybe I have been lucky? > > However > > update pics set byteafield='<pg_escaped string>' where > byteafield='<other pg_escaped string>' > > has always failed for me unless the "other pg_escaped string" is a > simple string. > probably when pg_escaped string == string. > > Assuming I am not overlooking something obvious, I wonder how the > "where clause" above is > evaluated for bytea columns... do I need to unpgescape the string > and then pg quote it? > > Something is not clear to me: I notice that pg_escaped strings can > contain "'s are > floating about in pg_escaped strings... > > Back to manuals... > > Jerry Hmmm, This seems to work... update pic set byteafield='<pg_escaped string>' where byteafield = pg_quote (<other pg_escaped string) Still gotta do more testing. Tain't clear why I don't have to pg_quote the <pg_escaped string> in the set clause... Jerry