On 2015-12-14 20:58:21 +0900, Michael Paquier wrote:
> On Mon, Dec 14, 2015 at 8:49 PM, Andres Freund <andres@anarazel.de> wrote:
> > On 2015-12-14 20:44:20 +0900, Michael Paquier wrote:
> >> + /*
> >> + * ALTER TABLE,INDEX,MATERIALIZED VIEW ALL IN TABLESPACE xxx OWNED BY xxx
> >> + * SET TABLESPACE.
> >> + */
> >> + else if (pg_strcasecmp(prev9_wd, "ALL") == 0 &&
> >> + pg_strcasecmp(prev8_wd, "IN") == 0 &&
> >> + pg_strcasecmp(prev7_wd, "TABLESPACE") == 0 &&
> >> + pg_strcasecmp(prev5_wd, "OWNED") == 0 &&
> >> + pg_strcasecmp(prev4_wd, "BY") == 0 &&
> >> + pg_strcasecmp(prev2_wd, "SET") == 0 &&
> >> + pg_strcasecmp(prev_wd, "TABLESPACE") == 0)
> >> + {
> >> + COMPLETE_WITH_QUERY(Query_for_list_of_tablespaces);
> >> + }
> >
> > Isn't that already handled by the normal SET TABLESPACE case?
>
> No, There is no SET TABLESPACE case, there is a TABLE SET TABLESPACE
> though. Just removing the TABLE seems to be fine..
ALTER TABLE ALL IN TABLESPACE pg_default OWNED BY andres SET TABLESPACE <tab>
works, because of
/* * Finally, we look through the list of "things", such as TABLE, INDEX and * check if that was the previous word. If
so,execute the query to get a * list of them. */else{ int i;
for (i = 0; words_after_create[i].name; i++) { if (pg_strcasecmp(prev_wd, words_after_create[i].name) ==
0) { if (words_after_create[i].query) COMPLETE_WITH_QUERY(words_after_create[i].query);
else if (words_after_create[i].squery)
COMPLETE_WITH_SCHEMA_QUERY(*words_after_create[i].squery, NULL);
break; } }}