@@ -66,6 +66,7 @@ static void pathman_set_rel_pathlist_hook(PlannerInfo *root, RelOptInfo *rel, In
66
66
static PlannedStmt * pathman_planner_hook (Query * parse ,int cursorOptions ,ParamListInfo boundParams );
67
67
68
68
/* Utility functions */
69
+ static void handle_modification_query (Query * parse );
69
70
static void append_child_relation (PlannerInfo * root ,RelOptInfo * rel ,Index rti ,
70
71
RangeTblEntry * rte ,int index ,Oid childOID ,List * wrappers );
71
72
static Node * wrapper_make_expression (WrapperNode * wrap ,int index ,bool * alwaysTrue );
@@ -89,7 +90,6 @@ static void set_append_rel_pathlist(PlannerInfo *root, RelOptInfo *rel, Index rt
89
90
static List * accumulate_append_subpath (List * subpaths ,Path * path );
90
91
static void set_pathkeys (PlannerInfo * root ,RelOptInfo * childrel ,Path * path );
91
92
92
- static void handle_delete_query (Query * parse );
93
93
94
94
/*
95
95
* Compare two Datums with the given comarison function
@@ -204,8 +204,9 @@ pathman_planner_hook(Query *parse, int cursorOptions, ParamListInfo boundParams)
204
204
case CMD_SELECT :
205
205
disable_inheritance (parse );
206
206
break ;
207
+ case CMD_UPDATE :
207
208
case CMD_DELETE :
208
- handle_delete_query (parse );
209
+ handle_modification_query (parse );
209
210
break ;
210
211
default :
211
212
break ;
@@ -269,7 +270,7 @@ disable_inheritance(Query *parse)
269
270
* Checks if query is affects only one partition. If true then substitute
270
271
*/
271
272
static void
272
- handle_delete_query (Query * parse )
273
+ handle_modification_query (Query * parse )
273
274
{
274
275
PartRelationInfo * prel ;
275
276
List * ranges ,
@@ -298,7 +299,7 @@ handle_delete_query(Query *parse)
298
299
// }
299
300
300
301
/* If only one partition is affected then substitute parent table with partition */
301
- if (irange_list_length (ranges ))
302
+ if (irange_list_length (ranges )== 1 )
302
303
{
303
304
IndexRange irange = (IndexRange )linitial_oid (ranges );
304
305
elog (WARNING ,"lower: %d, upper: %d, lossy: %d" ,irange_lower (irange ),irange_upper (irange ),irange_is_lossy (irange ));