fix prefix/labels in spgist
authorTeodor Sigaev <teodor@sigaev.ru>
Tue, 20 May 2014 14:03:05 +0000 (18:03 +0400)
committerTeodor Sigaev <teodor@sigaev.ru>
Tue, 20 May 2014 14:03:05 +0000 (18:03 +0400)
expected/gevel.out.9.4
gevel.c

index 22fa271..42a5e54 100644 (file)
@@ -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 (file)
--- 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] = ' ';