/* * GetUniqueMatRelName * * Returns a unique name for the given CV's underlying materialization table */ char * GetUniqueMatRelName(char *cvname, char* nspname) { char *relname = palloc0(NAMEDATALEN); int i = 0; StringInfoData suffix; Oid nspoid; if (nspname != NULL) nspoid = GetSysCacheOid1(NAMESPACENAME, CStringGetDatum(nspname)); else nspoid = InvalidOid; initStringInfo(&suffix); strcpy(relname, cvname); while (true) { appendStringInfo(&suffix, "%s%d", CQ_TABLE_SUFFIX, i); append_suffix(relname, suffix.data, NAMEDATALEN); resetStringInfo(&suffix); if (!OidIsValid(get_relname_relid(relname, nspoid))) break; } return relname; }
char * CVNameToSeqRelName(char *cv_name) { char *relname = palloc0(NAMEDATALEN); strcpy(relname, cv_name); append_suffix(relname, CQ_SEQREL_SUFFIX, NAMEDATALEN); return relname; }