Re: [HACKERS] Indexes bug

From: Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us>
To: djackson(at)cpsgroup(dot)com (Jackson, DeJuan)
Cc: tgl(at)sss(dot)pgh(dot)pa(dot)us, fenix(at)am(dot)ring(dot)ru, pgsql-hackers(at)postgreSQL(dot)org
Subject: Re: [HACKERS] Indexes bug
Date: 1998-08-11 20:33:09
Message-ID: 199808112033.QAA27223@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> > I think we now know what is happening in the current cvs tree. The
> > optimizer calls op_class to find if there is an pg_opam entry for the
> > expression (int4eq), the current index access type(btree), and the
> > current index op class(int4_ops).
> >
> > In the case of oideqint4, there is no pg_amop to match it, and we
> > can't
> > add extra rows to pg_amop to make it work. I suppose we could try
> > adding a amopopr_compat column to pg_amop, and somehow do a lookup on
> > that if the first one does not match. Because of the way the system
> > caches are structured, we would need a new cache for that extra
> > column,
> > I think. There must be a better way.
> >
> Maybe I missed it but why can't we add the extra row to pg_amop.

I have checked on this, and am not sure about how to deal with it.
However, am now doubting the value of it. In the case of oid/int4, it
is clear you can call int4 for it. However, for any more complex
conversion, I don't see many multiple entries in pg_operator pointing to
the same pg_proc entry. There are some, but how much value is it going
to be to get the access method code working for these.

---------------------------------------------------------------------------

1
1 (486 rows)
1 -------------------
1 abstimeeq
1 abstimege
1 abstimegt
1 abstimele
1 abstimelt
1 abstimene
1 aclcontains
1 aclinsert
1 aclremove
29 array_eq
1 booleq
1 boolgt
1 boollt
1 boolne
1 box_above
1 box_add
1 box_below
1 box_center
1 box_contain
1 box_contained
1 box_distance
1 box_div
1 box_eq
1 box_ge
1 box_gt
1 box_intersect
1 box_le
1 box_left
1 box_lt
1 box_mul
2 box_overlap
1 box_overleft
1 box_overright
1 box_right
1 box_same
1 box_sub
1 bpchareq
1 bpcharge
1 bpchargt
1 bpcharle
1 bpcharlt
1 bpcharne
1 cash_div_flt4
1 cash_div_flt8
1 cash_div_int2
1 cash_div_int4
1 cash_eq
1 cash_ge
1 cash_gt
1 cash_le
1 cash_lt
1 cash_mi
1 cash_mul_flt4
1 cash_mul_flt8
1 cash_mul_int2
1 cash_mul_int4
1 cash_ne
1 cash_pl
1 chardiv
1 chareq
1 charge
1 chargt
1 charle
1 charlt
1 charmi
1 charmul
1 charne
1 charpl
1 circle_above
1 circle_add_pt
1 circle_below
1 circle_center
1 circle_contain
1 circle_contain_pt
1 circle_contained
1 circle_distance
1 circle_div_pt
1 circle_eq
1 circle_ge
1 circle_gt
1 circle_le
1 circle_left
1 circle_lt
1 circle_mul_pt
1 circle_ne
1 circle_overlap
1 circle_overleft
1 circle_overright
1 circle_right
1 circle_same
1 circle_sub_pt
1 close_lb
1 close_ls
1 close_lseg
1 close_pb
1 close_pl
1 close_ps
1 close_sb
1 close_sl
1 date_eq
1 date_ge
1 date_gt
1 date_le
1 date_lt
1 date_mi
1 date_mii
1 date_ne
1 date_pli
1 datetime_eq
1 datetime_ge
1 datetime_gt
1 datetime_le
1 datetime_lt
1 datetime_mi
1 datetime_mi_span
1 datetime_ne
1 datetime_pl_span
1 dcbrt
1 dexp
1 dist_cpoly
1 dist_lb
1 dist_pb
1 dist_pc
1 dist_pl
1 dist_ppath
1 dist_ps
1 dist_sb
1 dist_sl
1 dlog1
1 dpow
1 dround
1 dsqrt
1 dtrunc
1 float48div
1 float48eq
1 float48ge
1 float48gt
1 float48le
1 float48lt
1 float48mi
1 float48mul
1 float48ne
1 float48pl
1 float4abs
1 float4div
1 float4eq
1 float4ge
1 float4gt
1 float4le
1 float4lt
1 float4mi
1 float4mul
1 float4ne
1 float4pl
1 float4um
1 float84div
1 float84eq
1 float84ge
1 float84gt
1 float84le
1 float84lt
1 float84mi
1 float84mul
1 float84ne
1 float84pl
1 float8abs
1 float8div
1 float8eq
1 float8ge
1 float8gt
1 float8le
1 float8lt
1 float8mi
1 float8mul
1 float8ne
1 float8pl
1 float8um
1 flt4_mul_cash
1 flt8_mul_cash
1 ininterval
1 int24div
1 int24eq
1 int24ge
1 int24gt
1 int24le
1 int24lt
1 int24mi
1 int24mod
1 int24mul
1 int24ne
1 int24pl
1 int2_mul_cash
1 int2div
1 int2eq
1 int2ge
1 int2gt
1 int2le
1 int2lt
1 int2mi
1 int2mod
1 int2mul
1 int2ne
1 int2pl
1 int2um
1 int42div
1 int42eq
1 int42ge
1 int42gt
1 int42le
1 int42lt
1 int42mi
1 int42mod
1 int42mul
1 int42ne
1 int42pl
1 int48div
1 int48eq
1 int48ge
1 int48gt
1 int48le
1 int48lt
1 int48mi
1 int48mul
1 int48ne
1 int48pl
1 int4_mul_cash
1 int4div
1 int4eq
1 int4eqoid
2 int4fac
2 int4ge
2 int4gt
2 int4le
2 int4lt
1 int4mi
1 int4mod
1 int4mul
1 int4ne
1 int4notin
1 int4pl
1 int4um
1 int84div
1 int84eq
1 int84ge
1 int84gt
1 int84le
1 int84lt
1 int84mi
1 int84mul
1 int84ne
1 int84pl
1 int8div
1 int8eq
1 int8ge
1 int8gt
1 int8le
1 int8lt
1 int8mi
1 int8mul
1 int8ne
1 int8pl
1 int8um
1 inter_lb
1 inter_sb
1 inter_sl
2 intervalct
1 intervaleq
1 intervalge
1 intervalgt
1 intervalle
1 intervalleneq
1 intervallenge
1 intervallengt
1 intervallenle
1 intervallenlt
1 intervallenne
1 intervallt
1 intervalne
1 intervalov
1 intervalsame
1 intervalstart
1 line_distance
1 line_eq
1 line_horizontal
1 line_interpt
1 line_intersect
1 line_parallel
1 line_perp
1 line_vertical
1 lseg_center
1 lseg_distance
2 lseg_eq
1 lseg_ge
1 lseg_gt
1 lseg_horizontal
1 lseg_interpt
1 lseg_intersect
1 lseg_le
1 lseg_length
1 lseg_lt
1 lseg_parallel
1 lseg_perp
1 lseg_vertical
1 mktinterval
1 nameeq
1 namege
1 namegt
1 nameicregexeq
1 nameicregexne
1 namele
1 namelike
1 namelt
1 namene
1 namenlike
1 nameregexeq
1 nameregexne
1 oideq
1 oideqint4
1 oidint2eq
1 oidint2ge
1 oidint2gt
1 oidint2le
1 oidint2lt
1 oidint2ne
1 oidint4eq
1 oidint4ge
1 oidint4gt
1 oidint4le
1 oidint4lt
1 oidint4ne
1 oidnameeq
1 oidnamege
1 oidnamegt
1 oidnamele
1 oidnamelt
1 oidnamene
1 oidne
1 oidnotin
1 on_pb
1 on_pl
1 on_ppath
1 on_ps
1 on_sb
1 on_sl
1 oprcode
1 path_add
1 path_add_pt
1 path_center
1 path_contain_pt
1 path_distance
1 path_div_pt
1 path_inter
1 path_length
1 path_mul_pt
1 path_n_eq
1 path_n_ge
1 path_n_gt
1 path_n_le
1 path_n_lt
1 path_npoints
1 path_sub_pt
1 point_above
1 point_add
1 point_below
1 point_distance
1 point_div
1 point_eq
1 point_horiz
1 point_left
1 point_mul
1 point_right
1 point_sub
1 point_vert
1 poly_center
1 poly_contain
1 poly_contain_pt
1 poly_contained
1 poly_distance
1 poly_left
1 poly_npoints
1 poly_overlap
1 poly_overleft
1 poly_overright
1 poly_right
1 poly_same
1 pt_contained_circle
1 pt_contained_path
1 pt_contained_poly
1 reltimeeq
1 reltimege
1 reltimegt
1 reltimele
1 reltimelt
1 reltimene
1 text_ge
1 text_gt
1 text_le
1 text_lt
3 textcat
1 texteq
3 texticregexeq
3 texticregexne
3 textlike
1 textne
3 textnlike
3 textregexeq
3 textregexne
1 time_eq
1 time_ge
1 time_gt
1 time_le
1 time_lt
1 time_ne
1 timemi
1 timepl
1 timespan_div
1 timespan_eq
1 timespan_ge
1 timespan_gt
1 timespan_le
1 timespan_lt
1 timespan_mi
1 timespan_ne
1 timespan_pl
1 timespan_um
1 timestampeq
1 timestampge
1 timestampgt
1 timestample
1 timestamplt
1 timestampne
1 varchareq
1 varcharge
1 varchargt
1 varcharle
1 varcharlt
1 varcharne

--
Bruce Momjian | 830 Blythe Avenue
maillist(at)candle(dot)pha(dot)pa(dot)us | Drexel Hill, Pennsylvania 19026
+ If your life is a hard drive, | (610) 353-9879(w)
+ Christ can be your backup. | (610) 853-3000(h)

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 1998-08-11 20:59:28 Re: [HACKERS] cidr
Previous Message Bruce Momjian 1998-08-11 19:12:18 partial index