*** a/src/bin/psql/tab-complete.c --- b/src/bin/psql/tab-complete.c *************** *** 899,905 **** static const pgsql_thing_t words_after_create[] = { {"GROUP", Query_for_list_of_roles}, {"LANGUAGE", Query_for_list_of_languages}, {"INDEX", NULL, &Query_for_list_of_indexes}, ! {"MATERIALIZED VIEW", NULL, NULL}, {"OPERATOR", NULL, NULL}, /* Querying for this is probably not such a * good idea. */ {"OWNED", NULL, NULL, THING_NO_CREATE}, /* for DROP OWNED BY ... */ --- 899,905 ---- {"GROUP", Query_for_list_of_roles}, {"LANGUAGE", Query_for_list_of_languages}, {"INDEX", NULL, &Query_for_list_of_indexes}, ! {"MATERIALIZED VIEW", NULL, &Query_for_list_of_matviews}, {"OPERATOR", NULL, NULL}, /* Querying for this is probably not such a * good idea. */ {"OWNED", NULL, NULL, THING_NO_CREATE}, /* for DROP OWNED BY ... */ *************** *** 2653,2665 **** psql_completion(const char *text, int start, int end) else if (Matches4("REFRESH", "MATERIALIZED", "VIEW", MatchAny)) COMPLETE_WITH_CONST("WITH"); else if (Matches5("REFRESH", "MATERIALIZED", "VIEW", "CONCURRENTLY", MatchAny)) ! COMPLETE_WITH_CONST("WITH DATA"); else if (Matches5("REFRESH", "MATERIALIZED", "VIEW", MatchAny, "WITH")) COMPLETE_WITH_LIST2("NO DATA", "DATA"); else if (Matches6("REFRESH", "MATERIALIZED", "VIEW", "CONCURRENTLY", MatchAny, "WITH")) ! COMPLETE_WITH_CONST("DATA"); ! else if (Matches6("REFRESH", "MATERIALIZED", "VIEW", MatchAny, "WITH", "NO")) ! COMPLETE_WITH_CONST("DATA"); /* REINDEX */ else if (Matches1("REINDEX")) --- 2653,2663 ---- else if (Matches4("REFRESH", "MATERIALIZED", "VIEW", MatchAny)) COMPLETE_WITH_CONST("WITH"); else if (Matches5("REFRESH", "MATERIALIZED", "VIEW", "CONCURRENTLY", MatchAny)) ! COMPLETE_WITH_CONST("WITH"); else if (Matches5("REFRESH", "MATERIALIZED", "VIEW", MatchAny, "WITH")) COMPLETE_WITH_LIST2("NO DATA", "DATA"); else if (Matches6("REFRESH", "MATERIALIZED", "VIEW", "CONCURRENTLY", MatchAny, "WITH")) ! COMPLETE_WITH_LIST2("NO DATA", "DATA"); /* REINDEX */ else if (Matches1("REINDEX"))