From 04d3139d5c5ad97aa7a28f11090c5fb30302890e Mon Sep 17 00:00:00 2001 From: Teodor Sigaev Date: Tue, 20 May 2014 18:03:05 +0400 Subject: [PATCH] fix prefix/labels in spgist --- expected/gevel.out.9.4 | 164 +++++++++++++++++++++-------------------- gevel.c | 4 +- 2 files changed, 85 insertions(+), 83 deletions(-) diff --git a/expected/gevel.out.9.4 b/expected/gevel.out.9.4 index 22fa271..42a5e54 100644 --- a/expected/gevel.out.9.4 +++ b/expected/gevel.out.9.4 @@ -101,6 +101,8 @@ SELECT spgist_stat('spgist_idx'); leafPages: 19 + emptyPages: 0 + usedSpace: 126.70 kbytes+ + usedInnerSpace: 1.17 kbytes + + usedLeafSpace: 125.53 kbytes+ freeSpace: 40.64 kbytes + fillRatio: 75.71% + leafTuples: 3947 + @@ -113,87 +115,87 @@ SELECT spgist_stat('spgist_idx'); (1 row) SELECT * FROM spgist_print('kdspgist_idx') as t(tid tid, node_n int, level int, tid_pointer tid, prefix float8, node_label int, leaf_value point); - tid | node_n | level | tid_pointer | prefix | node_label | leaf_value -----------+--------+-------+-------------+--------+------------+------------------- - (1,1) | 0 | 1 | (5,1) | | | - (1,1) | 1 | 1 | (5,2) | | | - (5,2) | 0 | 2 | (5,6) | | | - (5,2) | 1 | 2 | (5,3) | | | - (5,3) | 0 | 3 | (5,5) | | | - (5,3) | 1 | 3 | (5,12) | | | - (5,12) | 0 | 4 | (5,13) | | | - (5,12) | 1 | 4 | (14,226) | | | - (14,226) | | 5 | | | | (43240,47256.5) - (5,13) | 0 | 5 | (3,112) | | | - (5,13) | 1 | 5 | (5,25) | | | - (5,25) | 0 | 6 | (22,116) | | | - (5,25) | 1 | 6 | (22,115) | | | - (22,115) | | 7 | | | | (30902,44532) - (22,116) | | 7 | | | | (23048,47416) - (3,112) | | 6 | | | | (35218.5,42124) - (5,5) | 0 | 4 | (5,11) | | | - (5,5) | 1 | 4 | (5,22) | | | - (5,22) | 0 | 5 | (20,225) | | | - (5,22) | 1 | 5 | (5,23) | | | - (5,23) | 0 | 6 | (9,112) | | | - (5,23) | 1 | 6 | (9,114) | | | - (9,114) | | 7 | | | | (44732,32182) - (9,112) | | 7 | | | | (35580,33526.5) - (20,225) | | 6 | | | | (47724.5,27185.5) - (5,11) | 0 | 5 | (13,101) | | | - (5,11) | 1 | 5 | (13,100) | | | - (13,100) | | 6 | | | | (24069,30850.5) - (13,101) | | 6 | | | | (29539,25566) - (5,6) | 0 | 3 | (5,7) | | | - (5,6) | 1 | 3 | (5,19) | | | - (5,19) | 0 | 4 | (5,20) | | | - (5,19) | 1 | 4 | (18,225) | | | - (18,225) | | 5 | | | | (20920.5,49105.5) - (5,20) | 0 | 5 | (10,110) | | | - (5,20) | 1 | 5 | (10,113) | | | - (10,113) | | 6 | | | | (93,46797) - (10,110) | | 6 | | | | (28.5,38640.5) - (5,7) | 0 | 4 | (7,113) | | | - (5,7) | 1 | 4 | (5,21) | | | - (5,21) | 0 | 5 | (19,115) | | | - (5,21) | 1 | 5 | (19,112) | | | - (19,112) | | 6 | | | | (11916.5,31668) - (19,115) | | 6 | | | | (20622.5,27462.5) - (7,113) | | 5 | | | | (9296,35157) - (5,1) | 0 | 2 | (5,8) | | | - (5,1) | 1 | 2 | (5,4) | | | - (5,4) | 0 | 3 | (5,10) | | | - (5,4) | 1 | 3 | (5,14) | | | - (5,14) | 0 | 4 | (5,15) | | | - (5,14) | 1 | 4 | (15,222) | | | - (15,222) | | 5 | | | | (41926.5,17934.5) - (5,15) | 0 | 5 | (8,113) | | | - (5,15) | 1 | 5 | (8,112) | | | - (8,112) | | 6 | | | | (32425,20702.5) - (8,113) | | 6 | | | | (29134,15559.5) - (5,10) | 0 | 4 | (12,94) | | | - (5,10) | 1 | 4 | (5,24) | | | - (5,24) | 0 | 5 | (21,108) | | | - (5,24) | 1 | 5 | (21,107) | | | - (21,107) | | 6 | | | | (49822.5,7097.5) - (21,108) | | 6 | | | | (40315.5,1689.5) - (12,94) | | 5 | | | | (30295.5,5090) - (5,8) | 0 | 3 | (5,17) | | | - (5,8) | 1 | 3 | (5,9) | | | - (5,9) | 0 | 4 | (6,114) | | | - (5,9) | 1 | 4 | (5,16) | | | - (5,16) | 0 | 5 | (16,123) | | | - (5,16) | 1 | 5 | (16,127) | | | - (16,127) | | 6 | | | | (18352.5,19366) - (16,123) | | 6 | | | | (24795,14921) - (6,114) | | 5 | | | | (6706,16676) - (5,17) | 0 | 4 | (5,18) | | | - (5,17) | 1 | 4 | (17,226) | | | - (17,226) | | 5 | | | | (23690,10214.5) - (5,18) | 0 | 5 | (11,113) | | | - (5,18) | 1 | 5 | (11,109) | | | - (11,109) | | 6 | | | | (5501.5,9916) - (11,113) | | 6 | | | | (1072.5,4752) + tid | node_n | level | tid_pointer | prefix | node_label | leaf_value +----------+--------+-------+-------------+---------+------------+------------------- + (1,1) | 0 | 1 | (5,1) | 23030 | | + (1,1) | 1 | 1 | (5,2) | 23030 | | + (5,2) | 0 | 2 | (5,6) | 21664 | | + (5,2) | 1 | 2 | (5,3) | 21664 | | + (5,3) | 0 | 3 | (5,5) | 37159.5 | | + (5,3) | 1 | 3 | (5,12) | 37159.5 | | + (5,12) | 0 | 4 | (5,13) | 36357.5 | | + (5,12) | 1 | 4 | (14,226) | 36357.5 | | + (14,226) | | 5 | | | | (43240,47256.5) + (5,13) | 0 | 5 | (3,112) | 43507 | | + (5,13) | 1 | 5 | (5,25) | 43507 | | + (5,25) | 0 | 6 | (22,116) | 28862 | | + (5,25) | 1 | 6 | (22,115) | 28862 | | + (22,115) | | 7 | | | | (30902,44532) + (22,116) | | 7 | | | | (23048,47416) + (3,112) | | 6 | | | | (35218.5,42124) + (5,5) | 0 | 4 | (5,11) | 33416 | | + (5,5) | 1 | 4 | (5,22) | 33416 | | + (5,22) | 0 | 5 | (20,225) | 30991 | | + (5,22) | 1 | 5 | (5,23) | 30991 | | + (5,23) | 0 | 6 | (9,112) | 41820 | | + (5,23) | 1 | 6 | (9,114) | 41820 | | + (9,114) | | 7 | | | | (44732,32182) + (9,112) | | 7 | | | | (35580,33526.5) + (20,225) | | 6 | | | | (47724.5,27185.5) + (5,11) | 0 | 5 | (13,101) | 29986.5 | | + (5,11) | 1 | 5 | (13,100) | 29986.5 | | + (13,100) | | 6 | | | | (24069,30850.5) + (13,101) | | 6 | | | | (29539,25566) + (5,6) | 0 | 3 | (5,7) | 36774 | | + (5,6) | 1 | 3 | (5,19) | 36774 | | + (5,19) | 0 | 4 | (5,20) | 10075.5 | | + (5,19) | 1 | 4 | (18,225) | 10075.5 | | + (18,225) | | 5 | | | | (20920.5,49105.5) + (5,20) | 0 | 5 | (10,110) | 44171.5 | | + (5,20) | 1 | 5 | (10,113) | 44171.5 | | + (10,113) | | 6 | | | | (93,46797) + (10,110) | | 6 | | | | (28.5,38640.5) + (5,7) | 0 | 4 | (7,113) | 9517 | | + (5,7) | 1 | 4 | (5,21) | 9517 | | + (5,21) | 0 | 5 | (19,115) | 28907.5 | | + (5,21) | 1 | 5 | (19,112) | 28907.5 | | + (19,112) | | 6 | | | | (11916.5,31668) + (19,115) | | 6 | | | | (20622.5,27462.5) + (7,113) | | 5 | | | | (9296,35157) + (5,1) | 0 | 2 | (5,8) | 26938 | | + (5,1) | 1 | 2 | (5,4) | 26938 | | + (5,4) | 0 | 3 | (5,10) | 9532 | | + (5,4) | 1 | 3 | (5,14) | 9532 | | + (5,14) | 0 | 4 | (5,15) | 38603 | | + (5,14) | 1 | 4 | (15,222) | 38603 | | + (15,222) | | 5 | | | | (41926.5,17934.5) + (5,15) | 0 | 5 | (8,113) | 16345 | | + (5,15) | 1 | 5 | (8,112) | 16345 | | + (8,112) | | 6 | | | | (32425,20702.5) + (8,113) | | 6 | | | | (29134,15559.5) + (5,10) | 0 | 4 | (12,94) | 38800.5 | | + (5,10) | 1 | 4 | (5,24) | 38800.5 | | + (5,24) | 0 | 5 | (21,108) | 4752 | | + (5,24) | 1 | 5 | (21,107) | 4752 | | + (21,107) | | 6 | | | | (49822.5,7097.5) + (21,108) | | 6 | | | | (40315.5,1689.5) + (12,94) | | 5 | | | | (30295.5,5090) + (5,8) | 0 | 3 | (5,17) | 11733.5 | | + (5,8) | 1 | 3 | (5,9) | 11733.5 | | + (5,9) | 0 | 4 | (6,114) | 11993 | | + (5,9) | 1 | 4 | (5,16) | 11993 | | + (5,16) | 0 | 5 | (16,123) | 17591 | | + (5,16) | 1 | 5 | (16,127) | 17591 | | + (16,127) | | 6 | | | | (18352.5,19366) + (16,123) | | 6 | | | | (24795,14921) + (6,114) | | 5 | | | | (6706,16676) + (5,17) | 0 | 4 | (5,18) | 13329.5 | | + (5,17) | 1 | 4 | (17,226) | 13329.5 | | + (17,226) | | 5 | | | | (23690,10214.5) + (5,18) | 0 | 5 | (11,113) | 6375 | | + (5,18) | 1 | 5 | (11,109) | 6375 | | + (11,109) | | 6 | | | | (5501.5,9916) + (11,113) | | 6 | | | | (1072.5,4752) (79 rows) SELECT * FROM spgist_print('spgist_idx') as t(tid tid, node_n int, level int, tid_pointer tid, prefix point, node_label int, leaf_value point) WHERE level = 1; diff --git a/gevel.c b/gevel.c index 0e14761..facfa40 100644 --- a/gevel.c +++ b/gevel.c @@ -1210,13 +1210,13 @@ next: *tid = node->t_tid; prst->dvalues[3] = PointerGetDatum(tid); prst->nulls[3] = ' '; - if (prst->state.attPrefixType.attbyval == false && innerTuple->prefixSize > 0) { + if (innerTuple->prefixSize > 0) { prst->dvalues[4] = datumCopy(SGITDATUM(innerTuple, &prst->state), prst->state.attPrefixType.attbyval, prst->state.attPrefixType.attlen); prst->nulls[4] = ' '; } else prst->nulls[4] = 'n'; - if (prst->state.attLabelType.attbyval == false && !IndexTupleHasNulls(node)) { + if (!IndexTupleHasNulls(node)) { prst->dvalues[5] = datumCopy(SGNTDATUM(node, &prst->state), prst->state.attLabelType.attbyval, prst->state.attLabelType.attlen); prst->nulls[5] = ' '; -- 2.46.1