Обсуждение: VACUUM ANALYZE Problem (debugging output)
Here is what I've been able to get so far. I don't see anything obvious.
But then, I don't really know what I'm looking for. One thing I do see
is that "pg_statistic" shows up in both situations ("\d city" and
"\dS").
If anyone can make sense of this and point me in the right direction...
-James
BTW: This is the 1-31 cvs tree
#0 0x400a9369 in __kill ()
#1 0x810a0a6 in elog (lev=-1,
fmt=0x813f1c8 "fmgr_info: function %d: cache lookup failed\n")
at elog.c:180
#2 0x810ac89 in fmgr_info (procedureId=0, finfo=0xbfffd5f4) at fmgr.c:179
#3 0x810ae0d in fmgr (procedureId=0) at fmgr.c:272
#4 0x806c080 in heapgettup (relation=0x81c6be8, tid=0x0, dir=1, b=0x827250c,
seeself=0 '\000', nkeys=3, key=0x8272550) at heapam.c:422
The code turns into a string of macros after this and I have problems
tracing it. I dumped as much information as I could from this frame...
(gdb) i arg
relation = 0x81c6be8
tid = 0x0
dir = 1
b = (Buffer *) 0x827250c
seeself = 0 '\000'
nkeys = 3
key = 0x8272550
(gdb) i loc
__isnull = 0 '\000'
__atp = 0
__test = 0
__cur_nkeys = 2
__cur_keys = 0x8272550
_tuple = 0x4017ac78
_res = 1 '\001'
tid = 0x0
seeself = 0 '\000'
lpp = 0x40178cd0
dp = 0x40178cc8 "4"
page = 0
pages = 1
lines = 1075293304
rtup = 0x0
lineoff = 0
linesleft = 10
(gdb) p *__cur_keys
$165 = {sk_flags = 0, sk_attno = 1, sk_procedure = 184, sk_func = {
fn_addr = 0, fn_plhandler = 0, fn_oid = 0, fn_nargs = 0}, sk_nargs =
0, sk_argument = 1249}
(gdb) p *_tuple
$166 = {t_len = 76, t_oid = 39712, t_cmin = 0, t_cmax = 0, t_xmin =
23647, t_xmax = 0, t_ctid = {ip_blkid = {bi_hi = 0, bi_lo = 0}, ip_posid =
1}, t_natts = 5, t_infomask = 2050, t_hoff = 40 '(', t_bits =
"\000\000\000"}
(gdb) p *lpp
$167 = {lp_off = 8112, lp_flags = 1, lp_len = 76}
(gdb) p *relation
$159 = {rd_fd = 16, rd_nblocks = 1, rd_refcnt = 44, rd_islocal = 0 '\000',
rd_isnailed = 0 '\000', rd_istemp = 0 '\000', rd_tmpunlinked = 0 '\000',
rd_am = 0x0, rd_rel = 0x81c6ae8, rd_id = 16577, lockInfo = 0x81c6d40 "\001",
rd_att = 0x81c6b40, rd_rules = 0x0, rd_istrat = 0x0, rd_support = 0x0,
trigdesc = 0x0}
(gdb) p *relation.rd_rel
$160 = {relname = {data = "pg_statistic", '\000' <repeats 19 times>},
reltype = 0, relowner = 406, relam = 0, relpages = 0, reltuples = 0,
relhasindex = 0 '\000', relisshared = 0 '\000', relkind = 114 'r',
relnatts = 5, relchecks = 0, reltriggers = 0, relhasrules = 0 '\000',
relacl = {2}}
(gdb) p *relation.rd_att
$161 = {natts = 5, attrs = 0x81c6a68, constr = 0x0}
(gdb) p **relation.rd_att.attrs
$163 = {attrelid = 16577, attname = {
data = "starelid", '\000' <repeats 23 times>}, atttypid = 26,
attdisbursion = 0, attlen = 4, attnum = 1, attnelems = 0, attcacheoff = 0,
atttypmod = 0, attbyval = 1 '\001', attisset = 0 '\000',
attalign = 0 '\000', attnotnull = 0 '\000', atthasdef = 0 '\000'}
(gdb) p *key
$164 = {sk_flags = 0, sk_attno = 1, sk_procedure = 184, sk_func = {
fn_addr = 0, fn_plhandler = 0, fn_oid = 0, fn_nargs = 0}, sk_nargs = 0,
sk_argument = 1249}
#5 0x806c841 in heap_getnext (scandesc=0x82724f8, backw=0, b=0x0)
at heapam.c:968
#6 0x8101285 in gethilokey (relid=1249, attnum=6, opid=520, high=0xbfffd720,
low=0xbfffd724) at selfuncs.c:353
#7 0x8100eee in intltsel (opid=520, relid=1249, attno=6, value=0, flag=3)
at selfuncs.c:113
#8 0x8101030 in intgtsel (opid=520, relid=1249, attno=6, value=0, flag=3)
at selfuncs.c:176
#9 0x810ab38 in fmgr_c (finfo=0xbfffd798, values=0xbfffd7a8,
isNull=0xbfffd797 "") at fmgr.c:115
#10 0x810ae53 in fmgr (procedureId=104) at fmgr.c:285
#11 0x80bbe38 in restriction_selectivity (functionObjectId=104,
operatorObjectId=520, relationObjectId=1249, attributeNumber=6,
constValue=0x0, constFlag=3) at plancat.c:344
#12 0x80b37e9 in compute_selec (root=0x826b980, clauses=0x8272478,
or_selectivities=0x0) at clausesel.c:319
#13 0x80b36ab in compute_clause_selec (root=0x826b980, clause=0x826fef8,
or_selectivities=0x0) at clausesel.c:199
#14 0x80b7ddc in add_clause_to_rels (root=0x826b980, clause=0x826fef8)
at initsplan.c:214
#15 0x80b7d2a in initialize_base_rels_jinfo (root=0x826b980, clauses=0x82700b0)
at initsplan.c:154
#16 0x80b82cb in subplanner (root=0x826b980, flat_tlist=0x8270190,
qual=0x82700b0) at planmain.c:249
#17 0x80b820b in query_planner (root=0x826b980, command_type=1,
tlist=0x826dd90, qual=0x826fe98) at planmain.c:168
#18 0x80b8842 in planner (parse=0x826b980) at planner.c:110
#19 0x80e5db4 in pg_parse_and_plan (
query_string=0xbfffda08 "SELECT a.attnum, a.attname, t.typname, a.attlen, a.atttypmod, a.attnotnull, a.atthasdef
FROMpg_class c, pg_attribute a, pg_type t WHERE c.relname = 'city' and a.attnum > 0 and a.attrelid = c.o"...,
typev=0x0, nargs=0, queryListP=0xbfffd9a8, dest=Remote) at postgres.c:534
#20 0x80e5eb2 in pg_exec_query_dest (
query_string=0xbfffda08 "SELECT a.attnum, a.attname, t.typname, a.attlen, a.atttypmod, a.attnotnull, a.atthasdef
FROMpg_class c, pg_attribute a, pg_type t WHERE c.relname = 'city' and a.attnum > 0 and a.attrelid = c.o"...,
argv=0x0, typev=0x0, nargs=0, dest=Remote) at postgres.c:615
#21 0x80e5e80 in pg_exec_query (
query_string=0xbfffda08 "SELECT a.attnum, a.attname, t.typname, a.attlen, a.atttypmod, a.attnotnull, a.atthasdef
FROMpg_class c, pg_attribute a, pg_type t WHERE c.relname = 'city' and a.attnum > 0 and a.attrelid = c.o"...,
argv=0x0, typev=0x0, nargs=0) at postgres.c:597
#22 0x80e6c81 in PostgresMain (argc=9, argv=0xbffffa48) at postgres.c:1373
#23 0x80a91ed in main (argc=9, argv=0xbffffa48) at main.c:79
#24 0x806014e in _start ()
I assume you have run initdb after doing the sup. Prior to the beta
release today, things could have changed in the database format.
>
>
> Here is what I've been able to get so far. I don't see anything obvious.
> But then, I don't really know what I'm looking for. One thing I do see
> is that "pg_statistic" shows up in both situations ("\d city" and
> "\dS").
>
> If anyone can make sense of this and point me in the right direction...
>
> -James
>
> BTW: This is the 1-31 cvs tree
>
>
> #0 0x400a9369 in __kill ()
> #1 0x810a0a6 in elog (lev=-1,
> fmt=0x813f1c8 "fmgr_info: function %d: cache lookup failed\n")
> at elog.c:180
> #2 0x810ac89 in fmgr_info (procedureId=0, finfo=0xbfffd5f4) at fmgr.c:179
> #3 0x810ae0d in fmgr (procedureId=0) at fmgr.c:272
> #4 0x806c080 in heapgettup (relation=0x81c6be8, tid=0x0, dir=1, b=0x827250c,
> seeself=0 '\000', nkeys=3, key=0x8272550) at heapam.c:422
>
>
> The code turns into a string of macros after this and I have problems
> tracing it. I dumped as much information as I could from this frame...
>
>
>
> (gdb) i arg
> relation = 0x81c6be8
> tid = 0x0
> dir = 1
> b = (Buffer *) 0x827250c
> seeself = 0 '\000'
> nkeys = 3
> key = 0x8272550
>
>
> (gdb) i loc
> __isnull = 0 '\000'
> __atp = 0
> __test = 0
> __cur_nkeys = 2
> __cur_keys = 0x8272550
> _tuple = 0x4017ac78
> _res = 1 '\001'
> tid = 0x0
> seeself = 0 '\000'
> lpp = 0x40178cd0
> dp = 0x40178cc8 "4"
> page = 0
> pages = 1
> lines = 1075293304
> rtup = 0x0
> lineoff = 0
> linesleft = 10
>
> (gdb) p *__cur_keys
> $165 = {sk_flags = 0, sk_attno = 1, sk_procedure = 184, sk_func = {
> fn_addr = 0, fn_plhandler = 0, fn_oid = 0, fn_nargs = 0}, sk_nargs =
> 0, sk_argument = 1249}
>
> (gdb) p *_tuple
> $166 = {t_len = 76, t_oid = 39712, t_cmin = 0, t_cmax = 0, t_xmin =
> 23647, t_xmax = 0, t_ctid = {ip_blkid = {bi_hi = 0, bi_lo = 0}, ip_posid =
> 1}, t_natts = 5, t_infomask = 2050, t_hoff = 40 '(', t_bits =
> "\000\000\000"}
>
>
> (gdb) p *lpp
> $167 = {lp_off = 8112, lp_flags = 1, lp_len = 76}
>
>
> (gdb) p *relation
> $159 = {rd_fd = 16, rd_nblocks = 1, rd_refcnt = 44, rd_islocal = 0 '\000',
> rd_isnailed = 0 '\000', rd_istemp = 0 '\000', rd_tmpunlinked = 0 '\000',
> rd_am = 0x0, rd_rel = 0x81c6ae8, rd_id = 16577, lockInfo = 0x81c6d40 "\001",
> rd_att = 0x81c6b40, rd_rules = 0x0, rd_istrat = 0x0, rd_support = 0x0,
> trigdesc = 0x0}
>
>
> (gdb) p *relation.rd_rel
> $160 = {relname = {data = "pg_statistic", '\000' <repeats 19 times>},
> reltype = 0, relowner = 406, relam = 0, relpages = 0, reltuples = 0,
> relhasindex = 0 '\000', relisshared = 0 '\000', relkind = 114 'r',
> relnatts = 5, relchecks = 0, reltriggers = 0, relhasrules = 0 '\000',
> relacl = {2}}
>
>
> (gdb) p *relation.rd_att
> $161 = {natts = 5, attrs = 0x81c6a68, constr = 0x0}
>
>
> (gdb) p **relation.rd_att.attrs
> $163 = {attrelid = 16577, attname = {
> data = "starelid", '\000' <repeats 23 times>}, atttypid = 26,
> attdisbursion = 0, attlen = 4, attnum = 1, attnelems = 0, attcacheoff = 0,
> atttypmod = 0, attbyval = 1 '\001', attisset = 0 '\000',
> attalign = 0 '\000', attnotnull = 0 '\000', atthasdef = 0 '\000'}
>
>
> (gdb) p *key
> $164 = {sk_flags = 0, sk_attno = 1, sk_procedure = 184, sk_func = {
> fn_addr = 0, fn_plhandler = 0, fn_oid = 0, fn_nargs = 0}, sk_nargs = 0,
> sk_argument = 1249}
>
>
>
> #5 0x806c841 in heap_getnext (scandesc=0x82724f8, backw=0, b=0x0)
> at heapam.c:968
> #6 0x8101285 in gethilokey (relid=1249, attnum=6, opid=520, high=0xbfffd720,
> low=0xbfffd724) at selfuncs.c:353
> #7 0x8100eee in intltsel (opid=520, relid=1249, attno=6, value=0, flag=3)
> at selfuncs.c:113
> #8 0x8101030 in intgtsel (opid=520, relid=1249, attno=6, value=0, flag=3)
> at selfuncs.c:176
> #9 0x810ab38 in fmgr_c (finfo=0xbfffd798, values=0xbfffd7a8,
> isNull=0xbfffd797 "") at fmgr.c:115
> #10 0x810ae53 in fmgr (procedureId=104) at fmgr.c:285
> #11 0x80bbe38 in restriction_selectivity (functionObjectId=104,
> operatorObjectId=520, relationObjectId=1249, attributeNumber=6,
> constValue=0x0, constFlag=3) at plancat.c:344
> #12 0x80b37e9 in compute_selec (root=0x826b980, clauses=0x8272478,
> or_selectivities=0x0) at clausesel.c:319
> #13 0x80b36ab in compute_clause_selec (root=0x826b980, clause=0x826fef8,
> or_selectivities=0x0) at clausesel.c:199
> #14 0x80b7ddc in add_clause_to_rels (root=0x826b980, clause=0x826fef8)
> at initsplan.c:214
> #15 0x80b7d2a in initialize_base_rels_jinfo (root=0x826b980, clauses=0x82700b0)
> at initsplan.c:154
> #16 0x80b82cb in subplanner (root=0x826b980, flat_tlist=0x8270190,
> qual=0x82700b0) at planmain.c:249
> #17 0x80b820b in query_planner (root=0x826b980, command_type=1,
> tlist=0x826dd90, qual=0x826fe98) at planmain.c:168
> #18 0x80b8842 in planner (parse=0x826b980) at planner.c:110
> #19 0x80e5db4 in pg_parse_and_plan (
> query_string=0xbfffda08 "SELECT a.attnum, a.attname, t.typname, a.attlen, a.atttypmod, a.attnotnull, a.atthasdef
FROMpg_class c, pg_attribute a, pg_type t WHERE c.relname = 'city' and a.attnum > 0 and a.attrelid = c.o"...,
> typev=0x0, nargs=0, queryListP=0xbfffd9a8, dest=Remote) at postgres.c:534
> #20 0x80e5eb2 in pg_exec_query_dest (
> query_string=0xbfffda08 "SELECT a.attnum, a.attname, t.typname, a.attlen, a.atttypmod, a.attnotnull, a.atthasdef
FROMpg_class c, pg_attribute a, pg_type t WHERE c.relname = 'city' and a.attnum > 0 and a.attrelid = c.o"...,
> argv=0x0, typev=0x0, nargs=0, dest=Remote) at postgres.c:615
> #21 0x80e5e80 in pg_exec_query (
> query_string=0xbfffda08 "SELECT a.attnum, a.attname, t.typname, a.attlen, a.atttypmod, a.attnotnull, a.atthasdef
FROMpg_class c, pg_attribute a, pg_type t WHERE c.relname = 'city' and a.attnum > 0 and a.attrelid = c.o"...,
> argv=0x0, typev=0x0, nargs=0) at postgres.c:597
> #22 0x80e6c81 in PostgresMain (argc=9, argv=0xbffffa48) at postgres.c:1373
> #23 0x80a91ed in main (argc=9, argv=0xbffffa48) at main.c:79
> #24 0x806014e in _start ()
>
>
>
>
--
Bruce Momjian
maillist@candle.pha.pa.us
On Mon, 2 Feb 1998, Bruce Momjian wrote:
: I assume you have run initdb after doing the sup. Prior to the beta
: release today, things could have changed in the database format.
:
Yes. I always do a "make distclean", cvsup the latest code, build and
install everything, delete the data directory and start from scratch.
Everything works as expected until >>AFTER<< running "vacuum analyze"...
vtest=> \d
Database = vtest
+------------------+----------------------------------+----------+
| Owner | Relation | Type |
+------------------+----------------------------------+----------+
| jamesh | city | table |
| jamesh | county | table |
| jamesh | i_city | index |
| jamesh | i_county | index |
| jamesh | i_state | index |
| jamesh | s_city | sequence |
| jamesh | s_county | sequence |
| jamesh | s_state | sequence |
| jamesh | state | table |
+------------------+----------------------------------+----------+
vtest=> \d city
Table = city
+----------------------+-----------------------------+-------+
| Field | Type | Length|
+----------------------+-----------------------------+-------+
| serial | int4 |4 |
| county | int4 |4 |
| state | int4 |4 |
| addr1 | text |var |
| addr2 | text |var |
| name | text |var |
| zip | text |var |
| title | text |var |
| lname | text |var |
| fname | text |var |
| phone | text |var |
| fax | text |var |
| notes | text |var |
+----------------------+-----------------------------+-------+
vtest=>
vtest=> vacuum ;
VACUUM
vtest=> \d city
Table = city
+----------------------+-----------------------------+-------+
| Field | Type |Length |
+----------------------+-----------------------------+-------+
| serial | int4 |4 |
| county | int4 |4 |
| state | int4 |4 |
| addr1 | text |var |
| addr2 | text |var |
| name | text |var |
| zip | text |var |
| title | text |var |
| lname | text |var |
| fname | text |var |
| phone | text |var |
| fax | text |var |
| notes | text |var |
+----------------------+-----------------------------+-------+
vtest=> vacuum analyze;
VACUUM
vtest=> select * from city;
serial|county|state|addr1|addr2|name|zip|title|lname|fname|phone|fax|notes
------+------+-----+-----+-----+----+---+-----+-----+-----+-----+---+-----
(0 rows)
<< Exit & Run Perl Script To Populate Database >>
vtest=> select * from city;
...
10000565|10000098|10000000| | |Yadkinville | | |
| | | |
10000566|10000099|10000000| | |Burnsville | | |
| | | |
(567 rows)
vtest=> vacuum;
VACUUM
vtest=> \d city
Table = city
+-----------------------+---------------------------+-------+
| Field | Type |Length |
+-----------------------+---------------------------+-------+
| serial | int4 |4 |
| county | int4 |4 |
| state | int4 |4 |
| addr1 | text ...
... |var |
+-----------------------+---------------------------+-------+
vtest=> vacuum analyze;
VACUUM
vtest=> \d city
ERROR: fmgr_info: function 0: cache lookup failed
vtest=> \dS
ERROR: fmgr_info: function 0: cache lookup failed
-James