@@ -327,7 +327,7 @@ handle_modification_query(Query *parse)
327327return ;
328328
329329/* Parse syntax tree and extract partition ranges */
330- ranges = list_make1_irange (make_irange (0 ,PrelLastChild (prel ),false ));
330+ ranges = list_make1_irange (make_irange (0 ,PrelLastChild (prel ),IR_COMPLETE ));
331331expr = (Expr * )eval_const_expressions (NULL ,parse -> jointree -> quals );
332332if (!expr )
333333return ;
@@ -336,16 +336,16 @@ handle_modification_query(Query *parse)
336336InitWalkerContext (& context ,prel ,NULL , false);
337337wrap = walk_expr_tree (expr ,& context );
338338
339- ranges = irange_list_intersect (ranges ,wrap -> rangeset );
339+ ranges = irange_list_intersection (ranges ,wrap -> rangeset );
340340
341341/* If only one partition is affected then substitute parent table with partition */
342342if (irange_list_length (ranges )== 1 )
343343{
344344IndexRange irange = linitial_irange (ranges );
345- if (irange . ir_lower == irange . ir_upper )
345+ if (irange_lower ( irange ) == irange_upper ( irange ) )
346346{
347347Oid * children = PrelGetChildrenArray (prel );
348- rte -> relid = children [irange . ir_lower ];
348+ rte -> relid = children [irange_lower ( irange ) ];
349349rte -> inh = false;
350350}
351351}
@@ -688,7 +688,7 @@ walk_expr_tree(Expr *expr, WalkerContext *context)
688688result -> paramsel = 1.0 ;
689689
690690result -> rangeset = list_make1_irange (
691- make_irange (0 ,PrelLastChild (context -> prel ),true ));
691+ make_irange (0 ,PrelLastChild (context -> prel ),IR_LOSSY ));
692692
693693return result ;
694694}
@@ -1077,14 +1077,18 @@ select_range_partitions(const Datum value,
10771077if ((cmp_min < 0 && strategy == BTGreaterStrategyNumber )||
10781078(cmp_min <=0 && strategy == BTGreaterEqualStrategyNumber ))
10791079{
1080- result -> rangeset = list_make1_irange (make_irange (startidx ,endidx , false));
1080+ result -> rangeset = list_make1_irange (make_irange (startidx ,
1081+ endidx ,
1082+ IR_COMPLETE ));
10811083return ;
10821084}
10831085
10841086if (cmp_max >=0 && (strategy == BTLessEqualStrategyNumber ||
10851087strategy == BTLessStrategyNumber ))
10861088{
1087- result -> rangeset = list_make1_irange (make_irange (startidx ,endidx , false));
1089+ result -> rangeset = list_make1_irange (make_irange (startidx ,
1090+ endidx ,
1091+ IR_COMPLETE ));
10881092return ;
10891093}
10901094}
@@ -1145,39 +1149,39 @@ select_range_partitions(const Datum value,
11451149case BTLessEqualStrategyNumber :
11461150if (lossy )
11471151{
1148- result -> rangeset = list_make1_irange (make_irange (i ,i ,true ));
1152+ result -> rangeset = list_make1_irange (make_irange (i ,i ,IR_LOSSY ));
11491153if (i > 0 )
1150- result -> rangeset = lcons_irange (make_irange (0 ,i - 1 ,false ),
1154+ result -> rangeset = lcons_irange (make_irange (0 ,i - 1 ,IR_COMPLETE ),
11511155result -> rangeset );
11521156}
11531157else
11541158{
1155- result -> rangeset = list_make1_irange (make_irange (0 ,i ,false ));
1159+ result -> rangeset = list_make1_irange (make_irange (0 ,i ,IR_COMPLETE ));
11561160}
11571161break ;
11581162
11591163case BTEqualStrategyNumber :
1160- result -> rangeset = list_make1_irange (make_irange (i ,i ,true ));
1164+ result -> rangeset = list_make1_irange (make_irange (i ,i ,IR_LOSSY ));
11611165break ;
11621166
11631167case BTGreaterEqualStrategyNumber :
11641168case BTGreaterStrategyNumber :
11651169if (lossy )
11661170{
1167- result -> rangeset = list_make1_irange (make_irange (i ,i ,true ));
1171+ result -> rangeset = list_make1_irange (make_irange (i ,i ,IR_LOSSY ));
11681172if (i < nranges - 1 )
11691173result -> rangeset =
11701174lappend_irange (result -> rangeset ,
11711175make_irange (i + 1 ,
11721176nranges - 1 ,
1173- false ));
1177+ IR_COMPLETE ));
11741178}
11751179else
11761180{
11771181result -> rangeset =
11781182list_make1_irange (make_irange (i ,
11791183nranges - 1 ,
1180- false ));
1184+ IR_COMPLETE ));
11811185}
11821186break ;
11831187
@@ -1237,7 +1241,7 @@ handle_binary_opexpr(WalkerContext *context, WrapperNode *result,
12371241PrelChildrenCount (prel ));
12381242
12391243result -> paramsel = estimate_paramsel_using_prel (prel ,strategy );
1240- result -> rangeset = list_make1_irange (make_irange (idx ,idx ,true ));
1244+ result -> rangeset = list_make1_irange (make_irange (idx ,idx ,IR_LOSSY ));
12411245
12421246return ;/* exit on equal */
12431247}
@@ -1263,7 +1267,7 @@ handle_binary_opexpr(WalkerContext *context, WrapperNode *result,
12631267}
12641268
12651269binary_opexpr_return :
1266- result -> rangeset = list_make1_irange (make_irange (0 ,PrelLastChild (prel ),true ));
1270+ result -> rangeset = list_make1_irange (make_irange (0 ,PrelLastChild (prel ),IR_LOSSY ));
12671271result -> paramsel = 1.0 ;
12681272}
12691273
@@ -1289,7 +1293,7 @@ handle_binary_opexpr_param(const PartRelationInfo *prel,
12891293tce = lookup_type_cache (vartype ,TYPECACHE_BTREE_OPFAMILY );
12901294strategy = get_op_opfamily_strategy (expr -> opno ,tce -> btree_opf );
12911295
1292- result -> rangeset = list_make1_irange (make_irange (0 ,PrelLastChild (prel ),true ));
1296+ result -> rangeset = list_make1_irange (make_irange (0 ,PrelLastChild (prel ),IR_LOSSY ));
12931297result -> paramsel = estimate_paramsel_using_prel (prel ,strategy );
12941298}
12951299
@@ -1353,13 +1357,13 @@ search_range_partition_eq(const Datum value,
13531357IndexRange irange = linitial_irange (result .rangeset );
13541358
13551359Assert (list_length (result .rangeset )== 1 );
1356- Assert (irange . ir_lower == irange . ir_upper );
1357- Assert (irange . ir_valid );
1360+ Assert (irange_lower ( irange ) == irange_upper ( irange ) );
1361+ Assert (is_irange_valid ( irange ) );
13581362
13591363/* Write result to the 'out_rentry' if necessary */
13601364if (out_re )
13611365memcpy ((void * )out_re ,
1362- (const void * )& ranges [irange . ir_lower ],
1366+ (const void * )& ranges [irange_lower ( irange ) ],
13631367sizeof (RangeEntry ));
13641368
13651369return SEARCH_RANGEREL_FOUND ;
@@ -1408,7 +1412,7 @@ handle_const(const Const *c, WalkerContext *context)
14081412PrelChildrenCount (prel ));
14091413
14101414result -> paramsel = estimate_paramsel_using_prel (prel ,strategy );
1411- result -> rangeset = list_make1_irange (make_irange (idx ,idx ,true ));
1415+ result -> rangeset = list_make1_irange (make_irange (idx ,idx ,IR_LOSSY ));
14121416}
14131417break ;
14141418
@@ -1469,7 +1473,7 @@ handle_opexpr(const OpExpr *expr, WalkerContext *context)
14691473}
14701474}
14711475
1472- result -> rangeset = list_make1_irange (make_irange (0 ,PrelLastChild (prel ),true ));
1476+ result -> rangeset = list_make1_irange (make_irange (0 ,PrelLastChild (prel ),IR_LOSSY ));
14731477result -> paramsel = 1.0 ;
14741478return result ;
14751479}
@@ -1542,7 +1546,7 @@ handle_boolexpr(const BoolExpr *expr, WalkerContext *context)
15421546if (expr -> boolop == AND_EXPR )
15431547result -> rangeset = list_make1_irange (make_irange (0 ,
15441548PrelLastChild (prel ),
1545- false ));
1549+ IR_COMPLETE ));
15461550else
15471551result -> rangeset = NIL ;
15481552
@@ -1561,15 +1565,15 @@ handle_boolexpr(const BoolExpr *expr, WalkerContext *context)
15611565break ;
15621566
15631567case AND_EXPR :
1564- result -> rangeset = irange_list_intersect (result -> rangeset ,
1565- arg -> rangeset );
1568+ result -> rangeset = irange_list_intersection (result -> rangeset ,
1569+ arg -> rangeset );
15661570result -> paramsel *=arg -> paramsel ;
15671571break ;
15681572
15691573default :
15701574result -> rangeset = list_make1_irange (make_irange (0 ,
15711575PrelLastChild (prel ),
1572- false ));
1576+ IR_COMPLETE ));
15731577break ;
15741578}
15751579}
@@ -1580,8 +1584,8 @@ handle_boolexpr(const BoolExpr *expr, WalkerContext *context)
15801584
15811585foreach (lc ,result -> args )
15821586{
1583- WrapperNode * arg = (WrapperNode * )lfirst (lc );
1584- int len = irange_list_length (arg -> rangeset );
1587+ WrapperNode * arg = (WrapperNode * )lfirst (lc );
1588+ int len = irange_list_length (arg -> rangeset );
15851589
15861590result -> paramsel *= (1.0 - arg -> paramsel * (double )len / (double )totallen );
15871591}
@@ -1671,7 +1675,7 @@ handle_arrexpr(const ScalarArrayOpExpr *expr, WalkerContext *context)
16711675idx = hash_to_part_index (DatumGetUInt32 (value ),
16721676PrelChildrenCount (prel ));
16731677
1674- irange = list_make1_irange (make_irange (idx ,idx ,true ));
1678+ irange = list_make1_irange (make_irange (idx ,idx ,IR_LOSSY ));
16751679}
16761680/* No children if Const is NULL */
16771681else irange = NIL ;
@@ -1740,7 +1744,7 @@ handle_arrexpr(const ScalarArrayOpExpr *expr, WalkerContext *context)
17401744result -> paramsel = DEFAULT_INEQ_SEL ;
17411745
17421746handle_arrexpr_return :
1743- result -> rangeset = list_make1_irange (make_irange (0 ,PrelLastChild (prel ),true ));
1747+ result -> rangeset = list_make1_irange (make_irange (0 ,PrelLastChild (prel ),IR_LOSSY ));
17441748result -> paramsel = 1.0 ;
17451749return result ;
17461750}