From: Stephan Szabo <sszabo@megazone.bigpanda.com>
To: Eugene E. <sad@bankir.ru>
Cc: Peter Eisentraut <peter_e@gmx.net>
Cc: Achilleus Mantzios <achill@matrix.gatewaynet.com>
Cc: pgsql-sql@postgresql.org
Subject: Re: have you feel anything when you read this ?
Date: Thu, 6 Apr 2006 04:52:55 -0700 (PDT)
Message-ID: <20060406041008.M82943@megazone.bigpanda.com> (raw)
In-Reply-To: <4434C0A9.6000001@bankir.ru>
References: <Pine.LNX.4.44.0603201522410.22894-100000@matrix.gatewaynet.com>
<441EA0A7.8030601@bankir.ru>
<200603201415.30719.peter_e@gmx.net>
<442CC95C.1030700@bankir.ru>
<20060331084503.W64402@megazone.bigpanda.com>
<44324AB6.2060104@bankir.ru>
<20060404071118.C19036@megazone.bigpanda.com>
<4433650E.1020508@bankir.ru>
<20060405071322.Y58168@megazone.bigpanda.com>
<4434A207.6010600@bankir.ru>
<20060405224337.Y83930@megazone.bigpanda.com>
<4434C0A9.6000001@bankir.ru>
On Thu, 6 Apr 2006, Eugene E. wrote:
> Praescriptum:
> If my english is ugly and something is written unclear, please
> complaint, and i'll try to rephrase.
> anyway i am trying to be understood.
>
>
> I said
>
> >> WHY SHOULD I RETRIVE A SINGLE BYTEA FIELD IN A SEPARATE QUERY ???
I didn't answer this because I didn't feel that it moved the argument
forward, but...
If you meant that you must retrieve them in a separate query, you're
incorrect, since you *could* use the binary form for the others. I can't
understand if you don't realize that there is one for all these various
types, or that you just don't wish to use it (for example, I believe using
%d on ntohl(value from pqgetvalue) or something similar will print your
integer).
If you are arguing that you don't *wish* to do use that binary form for
the other values, I don't see how that's relevant until you've proven the
rest of the argument (*).
> Stephan Szabo wrote:
>
> > What would you expect it to do given a single result format argument?
> >
> > If you want to propose a new function (set of functions) that have
> > different behavior, make a coherent proposal.
> > Statements like it should
> > do X because I want it to aren't coherent proposals.
>
> AFAIK, they convert each value before put it to a result set.
> I propose to do the following convertion to the textual-form for bytea
> values:
> X->X where X is byte [0..255]
Okay, now pass that to strcmp or a %s format. AFAIK, the "textual-form" of
values is meant to be a c-string. "ab\0cd\0" is not a c-string containing
ab\0cd, it's a c-string containing ab.
> > Expect to get asked
> > why bytea is special
>
> _Because each type is special._
>
> And at the same time they made bytea MORE special than any other type.
I don't think that it's appreciably more special.
> Look:
> every type has many representations for its values, some are obvious
> some are more usefull, some are less useful.
> they define very useful and obvious representations for all the types
> but BYTEA.
There are two representations of (at least most) types. There's a binary
format and a textual format.
> (They call those representations "textual-form".)
I think I don't exactly agree with this description, but I'm unclear
exactly what you're saying. Are you saying that textual-form is the
useful representation, or are you saying that textual-form is the
representation and it is useful?
> and the input of a value demands escaping (we all undersdand why)
> and for each type the following equality is TRUE:
>
> some_data == OUTPUT(INPUT(ESCAPE(some_data)))
>
> but for the BYTEA this equality is FALSE !
> Why BYTEA is so special ?
>
> every value of every type is expected to be given to a client UNCHANGED.
This is already false AFAICS. Leading or trailing spaces on a string
containing integer get trimmed during the input for example, the string
format of date comes back in a particular but other input formats are
supported. I don't think the above equality is valid for textual
representation.
In addition, input could be binary and output textual or the other way
around, in some_data is different on both sides. There's no reason that
you can't be passing an integer that way.
> I expect a value of BYTEA to be unchaged too.
I think (as above) that your perception of the problem isn't correct.
> > why should integer be passed as a string given
>
> because it is not causing problems, as well as if it be passed in any
> other common form.
> And i ask you:
> why integer is actually passed as a string (decimal notation) ?
It's not always. It can be, just as bytea can be passed as a string
needing escaping, however it can be passed as effectively a binary blob
containing an integer value (in network order I believe) just as bytea can
be passed as a binary blob.
> why not to define your own unique more_sofisticated representation ?
> (as for bytea is defined.)
AFAICS, there is one, the binary format for integer.
> And finally
> Why so special textual-form defined for bytea ?
> Why not to leave every byte unchanged, since user knows what kind of
> data he got.
I think this is mostly answered by the above with a little bit of
connecting the dots.
> P.S.
> changing a format of a whole result-set is not a solution for a
> field-type-dependent problem.
Since we're still arguing about whether it's a field-type-dependent
problem or a field-use-dependent problem, I can't really argue this point
since it assumes the former and I don't believe that's been shown yet.
(*) Yes, it might be nice to have something that did it for you. Having
one is not, in my mind, a requirement for the API but instead something to
make it easier.
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: sszabo@megazone.bigpanda.com, sad@bankir.ru, peter_e@gmx.net, achill@matrix.gatewaynet.com
Subject: Re: have you feel anything when you read this ?
In-Reply-To: <20060406041008.M82943@megazone.bigpanda.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox