@@ -327,7 +327,7 @@ handle_modification_query(Query *parse)
327
327
return ;
328
328
329
329
/* 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 ));
331
331
expr = (Expr * ) eval_const_expressions (NULL , parse -> jointree -> quals );
332
332
if (!expr )
333
333
return ;
@@ -336,16 +336,16 @@ handle_modification_query(Query *parse)
336
336
InitWalkerContext (& context , prel , NULL , false);
337
337
wrap = walk_expr_tree (expr , & context );
338
338
339
- ranges = irange_list_intersect (ranges , wrap -> rangeset );
339
+ ranges = irange_list_intersection (ranges , wrap -> rangeset );
340
340
341
341
/* If only one partition is affected then substitute parent table with partition */
342
342
if (irange_list_length (ranges ) == 1 )
343
343
{
344
344
IndexRange irange = linitial_irange (ranges );
345
- if (irange . ir_lower == irange . ir_upper )
345
+ if (irange_lower ( irange ) == irange_upper ( irange ) )
346
346
{
347
347
Oid * children = PrelGetChildrenArray (prel );
348
- rte -> relid = children [irange . ir_lower ];
348
+ rte -> relid = children [irange_lower ( irange ) ];
349
349
rte -> inh = false;
350
350
}
351
351
}
@@ -688,7 +688,7 @@ walk_expr_tree(Expr *expr, WalkerContext *context)
688
688
result -> paramsel = 1.0 ;
689
689
690
690
result -> rangeset = list_make1_irange (
691
- make_irange (0 , PrelLastChild (context -> prel ), true ));
691
+ make_irange (0 , PrelLastChild (context -> prel ), IR_LOSSY ));
692
692
693
693
return result ;
694
694
}
@@ -1077,14 +1077,18 @@ select_range_partitions(const Datum value,
1077
1077
if ((cmp_min < 0 && strategy == BTGreaterStrategyNumber ) ||
1078
1078
(cmp_min <= 0 && strategy == BTGreaterEqualStrategyNumber ))
1079
1079
{
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 ));
1081
1083
return ;
1082
1084
}
1083
1085
1084
1086
if (cmp_max >= 0 && (strategy == BTLessEqualStrategyNumber ||
1085
1087
strategy == BTLessStrategyNumber ))
1086
1088
{
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 ));
1088
1092
return ;
1089
1093
}
1090
1094
}
@@ -1145,39 +1149,39 @@ select_range_partitions(const Datum value,
1145
1149
case BTLessEqualStrategyNumber :
1146
1150
if (lossy )
1147
1151
{
1148
- result -> rangeset = list_make1_irange (make_irange (i , i , true ));
1152
+ result -> rangeset = list_make1_irange (make_irange (i , i , IR_LOSSY ));
1149
1153
if (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 ),
1151
1155
result -> rangeset );
1152
1156
}
1153
1157
else
1154
1158
{
1155
- result -> rangeset = list_make1_irange (make_irange (0 , i , false ));
1159
+ result -> rangeset = list_make1_irange (make_irange (0 , i , IR_COMPLETE ));
1156
1160
}
1157
1161
break ;
1158
1162
1159
1163
case BTEqualStrategyNumber :
1160
- result -> rangeset = list_make1_irange (make_irange (i , i , true ));
1164
+ result -> rangeset = list_make1_irange (make_irange (i , i , IR_LOSSY ));
1161
1165
break ;
1162
1166
1163
1167
case BTGreaterEqualStrategyNumber :
1164
1168
case BTGreaterStrategyNumber :
1165
1169
if (lossy )
1166
1170
{
1167
- result -> rangeset = list_make1_irange (make_irange (i , i , true ));
1171
+ result -> rangeset = list_make1_irange (make_irange (i , i , IR_LOSSY ));
1168
1172
if (i < nranges - 1 )
1169
1173
result -> rangeset =
1170
1174
lappend_irange (result -> rangeset ,
1171
1175
make_irange (i + 1 ,
1172
1176
nranges - 1 ,
1173
- false ));
1177
+ IR_COMPLETE ));
1174
1178
}
1175
1179
else
1176
1180
{
1177
1181
result -> rangeset =
1178
1182
list_make1_irange (make_irange (i ,
1179
1183
nranges - 1 ,
1180
- false ));
1184
+ IR_COMPLETE ));
1181
1185
}
1182
1186
break ;
1183
1187
@@ -1237,7 +1241,7 @@ handle_binary_opexpr(WalkerContext *context, WrapperNode *result,
1237
1241
PrelChildrenCount (prel ));
1238
1242
1239
1243
result -> 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 ));
1241
1245
1242
1246
return ; /* exit on equal */
1243
1247
}
@@ -1263,7 +1267,7 @@ handle_binary_opexpr(WalkerContext *context, WrapperNode *result,
1263
1267
}
1264
1268
1265
1269
binary_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 ));
1267
1271
result -> paramsel = 1.0 ;
1268
1272
}
1269
1273
@@ -1289,7 +1293,7 @@ handle_binary_opexpr_param(const PartRelationInfo *prel,
1289
1293
tce = lookup_type_cache (vartype , TYPECACHE_BTREE_OPFAMILY );
1290
1294
strategy = get_op_opfamily_strategy (expr -> opno , tce -> btree_opf );
1291
1295
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 ));
1293
1297
result -> paramsel = estimate_paramsel_using_prel (prel , strategy );
1294
1298
}
1295
1299
@@ -1353,13 +1357,13 @@ search_range_partition_eq(const Datum value,
1353
1357
IndexRange irange = linitial_irange (result .rangeset );
1354
1358
1355
1359
Assert (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 ) );
1358
1362
1359
1363
/* Write result to the 'out_rentry' if necessary */
1360
1364
if (out_re )
1361
1365
memcpy ((void * ) out_re ,
1362
- (const void * ) & ranges [irange . ir_lower ],
1366
+ (const void * ) & ranges [irange_lower ( irange ) ],
1363
1367
sizeof (RangeEntry ));
1364
1368
1365
1369
return SEARCH_RANGEREL_FOUND ;
@@ -1408,7 +1412,7 @@ handle_const(const Const *c, WalkerContext *context)
1408
1412
PrelChildrenCount (prel ));
1409
1413
1410
1414
result -> 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 ));
1412
1416
}
1413
1417
break ;
1414
1418
@@ -1469,7 +1473,7 @@ handle_opexpr(const OpExpr *expr, WalkerContext *context)
1469
1473
}
1470
1474
}
1471
1475
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 ));
1473
1477
result -> paramsel = 1.0 ;
1474
1478
return result ;
1475
1479
}
@@ -1542,7 +1546,7 @@ handle_boolexpr(const BoolExpr *expr, WalkerContext *context)
1542
1546
if (expr -> boolop == AND_EXPR )
1543
1547
result -> rangeset = list_make1_irange (make_irange (0 ,
1544
1548
PrelLastChild (prel ),
1545
- false ));
1549
+ IR_COMPLETE ));
1546
1550
else
1547
1551
result -> rangeset = NIL ;
1548
1552
@@ -1561,15 +1565,15 @@ handle_boolexpr(const BoolExpr *expr, WalkerContext *context)
1561
1565
break ;
1562
1566
1563
1567
case AND_EXPR :
1564
- result -> rangeset = irange_list_intersect (result -> rangeset ,
1565
- arg -> rangeset );
1568
+ result -> rangeset = irange_list_intersection (result -> rangeset ,
1569
+ arg -> rangeset );
1566
1570
result -> paramsel *= arg -> paramsel ;
1567
1571
break ;
1568
1572
1569
1573
default :
1570
1574
result -> rangeset = list_make1_irange (make_irange (0 ,
1571
1575
PrelLastChild (prel ),
1572
- false ));
1576
+ IR_COMPLETE ));
1573
1577
break ;
1574
1578
}
1575
1579
}
@@ -1580,8 +1584,8 @@ handle_boolexpr(const BoolExpr *expr, WalkerContext *context)
1580
1584
1581
1585
foreach (lc , result -> args )
1582
1586
{
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 );
1585
1589
1586
1590
result -> paramsel *= (1.0 - arg -> paramsel * (double )len / (double )totallen );
1587
1591
}
@@ -1671,7 +1675,7 @@ handle_arrexpr(const ScalarArrayOpExpr *expr, WalkerContext *context)
1671
1675
idx = hash_to_part_index (DatumGetUInt32 (value ),
1672
1676
PrelChildrenCount (prel ));
1673
1677
1674
- irange = list_make1_irange (make_irange (idx , idx , true ));
1678
+ irange = list_make1_irange (make_irange (idx , idx , IR_LOSSY ));
1675
1679
}
1676
1680
/* No children if Const is NULL */
1677
1681
else irange = NIL ;
@@ -1740,7 +1744,7 @@ handle_arrexpr(const ScalarArrayOpExpr *expr, WalkerContext *context)
1740
1744
result -> paramsel = DEFAULT_INEQ_SEL ;
1741
1745
1742
1746
handle_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 ));
1744
1748
result -> paramsel = 1.0 ;
1745
1749
return result ;
1746
1750
}
0 commit comments