Aleksander, Vadim,

Well caught points!


On 3 February 2013 22:35, Vadim Zeitlin <[email protected]> wrote:
> On Sun, 3 Feb 2013 14:31:06 -0800 Pawel Aleksander Fedorynski 
> <[email protected]> wrote:
> PAF> On Sun, Feb 3, 2013 at 2:26 PM, Vadim Zeitlin <[email protected]> 
> wrote:
> PAF> > On Sun, 3 Feb 2013 14:17:49 -0800 Pawel Aleksander Fedorynski <
> PAF> > [email protected]> wrote:
> PAF> >
> PAF> > PAF> It occurs to me that some other db engines (Oracle?) probably send
> PAF> > values
> PAF> > PAF> in non-string format, what should into_as_raw_text() do then?
> PAF> > PAF>
> PAF> > PAF> (a) signal an error?
> PAF> > PAF>
> PAF> > PAF> (b) put the raw value (which may be non-printable and may be 
> packed
> PAF> > in some
> PAF> > PAF> unobvious way) in the provided string, say the value is of type 
> INT32
> PAF> > and
> PAF> > PAF> some db sends four bytes over the wire, should we put these exact 
> four
> PAF> > PAF> bytes into the string?
> PAF> > PAF>
> PAF> > PAF> (c) convert to string?
> PAF> >
> PAF> >  I'd say (b). "Raw" would seem to mean this, i.e. exactly the bytes
> PAF> > received.
> PAF>
> PAF> Yes, I was thinking the same thing.  But then it shouldn't be raw_text,
> PAF> raw_string maybe or raw_bytes even?
>
>  Yes, taking this into account, into_raw_bytes() or maybe into_raw_buffer()
> (just because "buffer" is something you can put things into, while
> "bytes"... not so much IMHO) does seem better, thanks!

One may argue 'raw' is not so meaningful either, so into_bytes_buffer()
with implicit assumption, bytes is a raw form of data (in software in general).

The std::string sink type for into_raw_buffer() might not be the best choice
as it has different semantic. It is a (null-terminated, if [1] is accepted)
character sequence.

Wouldn't it be clearer to have into_raw_buffer(std::vector<byte>) ?

The discussion about the into_as_raw_text() and later about into_raw_buffer()
made me think if this idea potentially could share some common
elements with binary data support.

Here I have a branch
https://github.com/mloskot/soci/tree/soci-type-binary
where I've been working on binary data support for SOCI
https://github.com/mloskot/soci/commit/8f5ea63f
The prototype is very basic:
1) New into/use type indicated by x_binary_string
2) Trivial, but SOCI-defined bytes buffer
namespace soci {
  struct binary_string
  {
     std::vector<std::uint8_t> data_;
  };
}
3) The data exchange machinery updated to recognise the new  x_binary_string

It seems to be, that the into_raw_buffer() and the binary support
require the same kind of data type - a container for sequence of bytes
of arbitrary length - a buffer.

Would it be possible to have single container for raw byte sequence in SOCI?

[1] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2534.html

Best regards,
--
Mateusz Loskot, http://mateusz.loskot.net

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_jan
_______________________________________________
soci-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/soci-users

Reply via email to