Kouhei Sutou
null+****@clear*****
Sat Oct 8 22:11:02 JST 2016
Kouhei Sutou 2016-10-08 22:11:02 +0900 (Sat, 08 Oct 2016) New Revision: 51ed6e487e289c73d166f009e92466c419f23c36 https://github.com/pgroonga/pgroonga/commit/51ed6e487e289c73d166f009e92466c419f23c36 Message: Extract common code Modified files: src/pgroonga.c Modified: src/pgroonga.c (+24 -24) =================================================================== --- src/pgroonga.c 2016-10-07 01:24:55 +0900 (9230c9b) +++ src/pgroonga.c 2016-10-08 22:11:02 +0900 (22c4031) @@ -3274,6 +3274,26 @@ PGrnEnsureCursorOpened(IndexScanDesc scan, } } +static grn_id +PGrnScanOpaqueResolveID(PGrnScanOpaque so) +{ + grn_id recordID = so->currentID; + + if (so->sorted) + { + GRN_BULK_REWIND(&(buffers->general)); + grn_obj_get_value(ctx, so->sorted, recordID, &(buffers->general)); + recordID = GRN_RECORD_VALUE(&(buffers->general)); + } + if (so->searched) + { + grn_table_get_key(ctx, so->searched, recordID, + &recordID, sizeof(grn_id)); + } + + return recordID; +} + #ifdef PGRN_SUPPORT_INDEX_ONLY_SCAN static void PGrnGetTupleFillIndexTuple(PGrnScanOpaque so, @@ -3291,18 +3311,7 @@ PGrnGetTupleFillIndexTuple(PGrnScanOpaque so, values = palloc(sizeof(Datum) * desc->natts); isNulls = palloc(sizeof(bool) * desc->natts); - recordID = so->currentID; - if (so->sorted) - { - GRN_BULK_REWIND(&(buffers->general)); - grn_obj_get_value(ctx, so->sorted, recordID, &(buffers->general)); - recordID = GRN_RECORD_VALUE(&(buffers->general)); - } - if (so->searched) - { - grn_table_get_key(ctx, so->searched, recordID, - &recordID, sizeof(grn_id)); - } + recordID = PGrnScanOpaqueResolveID(so); for (i = 0; i < desc->natts; i++) { @@ -3338,18 +3347,9 @@ pgroonga_gettuple_raw(IndexScanDesc scan, if (scan->kill_prior_tuple && so->currentID != GRN_ID_NIL) { - grn_id recordID = so->currentID; - if (so->sorted) - { - GRN_BULK_REWIND(&(buffers->general)); - grn_obj_get_value(ctx, so->sorted, recordID, &(buffers->general)); - recordID = GRN_RECORD_VALUE(&(buffers->general)); - } - if (so->searched) - { - grn_table_get_key(ctx, so->searched, recordID, - &recordID, sizeof(grn_id)); - } + grn_id recordID; + + recordID = PGrnScanOpaqueResolveID(so); grn_table_delete_by_id(ctx, so->sourcesTable, recordID); } -------------- next part -------------- HTML����������������������������...Download