Hi soci-team, Aleksander

meanwhile I tried to solve the problem by my own by modifying the soci 
postgresql backend:

- added possibility to transfer distinct columns to the server in binary 
format. So I don't need to PQexcapeByteAConn / PQescapeStringConn which 
would be very ineffectiv in my case.
- x_stdstring is now transfered binary to the server, but fetched as and 
therefore PQunexcapedByteaConn()ed if it came from a bytea column.
- added additional postgresql backend test11 similar to mysql backend 
test6 to demonstrate functionality.
- modified postgresql packend test10, I think the assumption that a 
use(string) for that select works is implicit knowledge.

Result: now I can use a BYTEA and bind it to a std::string in the same way 
the mysql backend can bind a BLOB or LONGBLOB to std::string.

If you are interested, I can contribute the code (i.e. send  a patch to 
soci-git 1a88555374bb6da5477964792a25abd9e6db01f9 to someone?). 
 
Regards
Gerwin Pfab

Pawel Aleksander Fedorynski <[email protected]> schrieb am 25.02.2010 
05:06:05:

> Hmm I see.  I misunderstood your question.
> 
> I probably won't have time to do anything about it in the next 2..3
> weeks but I'll look into this after that.
> 
> Thanks,
> 
> Aleksander
> 
> On Wed, Feb 24, 2010 at 9:04 AM,  <[email protected]> wrote:
> >
> > Thanks Aleksander.
> >
> > My problem is that I want to insert/retrieve binary data into a SQL 
table
> > without the need to discriminate different backends.
> > We want to be able to feed data into mysql and postgres (and possibly
> > sqlite3 as well) in a uniform way.
> >
> > I have a posgresql table like this
> >
> > create table foo (
> >  id INTEGER,
> >  buffer BYTEA,
> > );
> >
> > and a mysql table like this
> >
> >  create table foo (
> >    id INTEGER,
> >    buffer  LONGBLOB,
> > );
> >
> > and I want to use them without having to know if the database engine 
is
> > postgres or mysql.
> > <code>
> > To add an item I wanted to do something like
> > soci::session& con= ...
> > int id = ..
> > soci::blob buffer(con);
> > // ... buffer is filled with binary data
> > con.once <<  "INSERT INTO foo (id, buffer) VALUES (:1, :2)",
> >           soci::use(id),
> >           soci::use(buffer);
> >
> > soci::blob buffer2(con);
> > con.once <<  "SELECT buffer FROM foo WHERE id =  " << id,
> >           soci::into(buffer2);
> > <endcode>
> >
> >
> > But this does not work with mysql because mysql does not support Blob.
> >
> > Of course can replace the above soci::blob by a std::string and fill 
the
> > string with binary data. Then it works for mysql.
> > But this seems to be no option as the postgres backend can't bind that
> > std::string to a BYTEA, and - reading the code of the postgres backend 
-
> > the case that a std::string contains arbitrary binary data seems to be 
not
> > supported, too.
> >
> > Any ideas / hints how to solve that problem?
> >
> > Thanks in advance
> > Gerwin Pfab
> >
> >> Hey Gerwin,
> >>
> >> MySQL doesn't treat the BLOB or TEXT types specially, the is no
> >> file-like abstraction like in some other databases.  The only way for
> >> SOCI to support a consistent API would be to add a layer of 
emulation,
> >> which could be very inefficient.  That's why it's not supported. 
 When
> >> using MySQL, the best way is to just insert and select BLOB and TEXT
> >> fields like any other fields.
> >>
> >> Thanks,
> >>
> >> Aleksander
> >>
> >> On Tue, Feb 23, 2010 at 6:55 AM, Gerwin Pfab 
<[email protected]>
> >> wrote:
> >> > Thank you all for that great library!
> >> >
> >> > I'm are currently using SOCI from the Git tarball 2010-01-25
> >> > b2b614bc3f323bf99f0c11e680dba06a32ff89df
> >> >
> >> > This is almost perfect, but one thing would be essential for us: 
Support
> >> > for
> >> > soci::blob for the mysql backend.
> >> >
> >> > Are there plans to add it in the near future?
> >> >
> >> > Kind Regards
> >> >
> >> > Gerwin Pfab
> >> >
> >> >
> >>
> >> 
> 
------------------------------------------------------------------------------
> >> > Download Intel&#174; Parallel Studio Eval
> >> > Try the new software tools for yourself. Speed compiling, find bugs
> >> > proactively, and fine-tune applications for parallel performance.
> >> > See why Intel Parallel Studio got high marks during beta.
> >> > http://p.sf.net/sfu/intel-sw-dev
> >> > _______________________________________________
> >> > Soci-users mailing list
> >> > [email protected]
> >> > https://lists.sourceforge.net/lists/listinfo/soci-users
> >> >
> >>
> >>
> >> 
> 
------------------------------------------------------------------------------
> >> Download Intel&#174; Parallel Studio Eval
> >> Try the new software tools for yourself. Speed compiling, find bugs
> >> proactively, and fine-tune applications for parallel performance.
> >> See why Intel Parallel Studio got high marks during beta.
> >> http://p.sf.net/sfu/intel-sw-dev
> >> _______________________________________________
> >> Soci-users mailing list
> >> [email protected]
> >> https://lists.sourceforge.net/lists/listinfo/soci-users
> >
> > 
> 
------------------------------------------------------------------------------
> > Download Intel&#174; Parallel Studio Eval
> > Try the new software tools for yourself. Speed compiling, find bugs
> > proactively, and fine-tune applications for parallel performance.
> > See why Intel Parallel Studio got high marks during beta.
> > http://p.sf.net/sfu/intel-sw-dev
> > _______________________________________________
> > Soci-users mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/soci-users
> >
> >
> 
> 
------------------------------------------------------------------------------
> Download Intel&#174; Parallel Studio Eval
> Try the new software tools for yourself. Speed compiling, find bugs
> proactively, and fine-tune applications for parallel performance.
> See why Intel Parallel Studio got high marks during beta.
> http://p.sf.net/sfu/intel-sw-dev
> _______________________________________________
> Soci-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/soci-users
------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Soci-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/soci-users

Reply via email to