Обсуждение: regression: select_views.sql
I got different results for the second query
(SELECT * FROM iexit ORDER BY 1, 2;) when using -S 64 (on-disk sorting)
and -S 8192 (in-memory).
Could it be caused by this _wrong_ line in pg_operator.h:
DATA(insert OID = 793 ( "<" PGUID 0 b t f 602 602 701 ... path_n_lt ...
^^^
this is float8 but path_n_lt() returns bool...
The same for all path_n_* funcs (may be others too)...
Vadim
> I got different results for the second query > (SELECT * FROM iexit ORDER BY 1, 2;) when using -S 64 (on-disk sorting) > and -S 8192 (in-memory). > Could it be caused by this _wrong_ line in pg_operator.h: > > DATA(insert OID = 793 ( "<" PGUID 0 b t f 602 602 701 ... path_n_lt ... > ^^^ > this is float8 but path_n_lt() returns bool... > > The same for all path_n_* funcs (may be others too)... I'll fix this...
Thomas G. Lockhart wrote: > > > DATA(insert OID = 793 ( "<" PGUID 0 b t f 602 602 701 ... path_n_lt ... > > ^^^ > > this is float8 but path_n_lt() returns bool... > > > > The same for all path_n_* funcs (may be others too)... > > I'll fix this... Nice. There are other invalids: vac=> select oprname, oprcode from pg_operator where oprcanhash and oprname <> '='; oprname|oprcode -------+------------ ~= |intervalsame ^^^^^^^^^^^^^^^^^^^^ ok, but others are not! <> |intervalne < |intervallt > |intervalgt <= |intervalle >= |intervalge (6 rows) (BTW, oprcanhash can be used to let know does operator mean EQUALity... I'd like to use this for subselects) Vadim
Vadim B. Mikheev wrote:
> Thomas G. Lockhart wrote:
> >
> > > DATA(insert OID = 793 ( "<" PGUID 0 b t f 602 602 701 ... path_n_lt ...
> > > ^^^
> > > this is float8 but path_n_lt() returns bool...
> > >
> > > The same for all path_n_* funcs (may be others too)...
> >
> > I'll fix this...
>
> Nice. There are other invalids:
>
> vac=> select oprname, oprcode from pg_operator where oprcanhash and oprname <> '=';
> oprname|oprcode
> -------+------------
> ~= |intervalsame
> ^^^^^^^^^^^^^^^^^^^^ ok, but others are not!
> <> |intervalne
> < |intervallt
> > |intervalgt
> <= |intervalle
> >= |intervalge
> (6 rows)
Hmm. Those look like they support the "time interval" type, which I haven't been updating
because it is based on abstime; I'm more interested in the wider-range/more-precise
datetime-based stuff. I would think about rewriting the time interval routines, but
assume it was used somewhere in the backend to support time travel. Don't know if it is
still in there somewhere...
- Tom
Thomas G. Lockhart wrote: > > > > > vac=> select oprname, oprcode from pg_operator where oprcanhash and oprname <> '='; > > oprname|oprcode > > -------+------------ > > ~= |intervalsame > > ^^^^^^^^^^^^^^^^^^^^ ok, but others are not! > > <> |intervalne > > < |intervallt > > > |intervalgt > > <= |intervalle > > >= |intervalge > > (6 rows) > > Hmm. Those look like they support the "time interval" type, which I haven't been updating > because it is based on abstime; I'm more interested in the wider-range/more-precise > datetime-based stuff. I would think about rewriting the time interval routines, but > assume it was used somewhere in the backend to support time travel. Don't know if it is > still in there somewhere... I just say that all these <>, <, >, >=, <= must have FALSE in oprcanhash. Having TRUE for them is bug. Vadim