*** a/src/backend/commands/indexcmds.c
--- b/src/backend/commands/indexcmds.c
***************
*** 73,78 **** static bool relationHasPrimaryKey(Relation rel);
--- 73,154 ----
/*
+ * GetIndexCompatibilityFeatures
+ * Select operator classes and exclusion operators for a prospective index.
+ *
+ * Mostly a support function for MakeIndexCompatible(). Omits some of the
+ * checks of DefineIndex, as the index definition always has an internal
+ * genesis. Errors arising from the attribute list still apply.
+ *
+ * 'heapRelation': the relation the index would apply to.
+ * 'accessMethodName': name of the AM to use.
+ * 'attributeList': a list of IndexElem specifying columns and expressions
+ * to index on.
+ * 'exclusionOpNames': list of names of exclusion-constraint operators,
+ * or NIL if not an exclusion constraint.
+ *
+ * Returns a palloc'd array of operator class OIDs and another palloc'd array of
+ * exclusion operator OIDs. Each has one element per index column.
+ */
+ void
+ GetIndexCompatibilityAspects(RangeVar *heapRelation,
+ char *accessMethodName,
+ List *attributeList,
+ List *exclusionOpNames,
+ Oid **opClasses,
+ Oid **exclusionOps)
+ {
+ Oid *classObjectId;
+ Oid accessMethodId;
+ HeapTuple tuple;
+ Form_pg_am accessMethodForm;
+ bool amcanorder;
+ RegProcedure amoptions;
+ int16 *coloptions;
+ IndexInfo *indexInfo;
+ int numberOfAttributes;
+
+ numberOfAttributes = list_length(attributeList);
+ Assert(numberOfAttributes > 0);
+ Assert(numberOfAttributes <= INDEX_MAX_KEYS);
+
+ /* look up the access method */
+ tuple = SearchSysCache1(AMNAME, PointerGetDatum(accessMethodName));
+ if (!HeapTupleIsValid(tuple))
+ ereport(ERROR,
+ (errcode(ERRCODE_UNDEFINED_OBJECT),
+ errmsg("access method \"%s\" does not exist",
+ accessMethodName)));
+ accessMethodId = HeapTupleGetOid(tuple);
+ accessMethodForm = (Form_pg_am) GETSTRUCT(tuple);
+ amcanorder = accessMethodForm->amcanorder;
+ amoptions = accessMethodForm->amoptions;
+ ReleaseSysCache(tuple);
+
+ indexInfo = makeNode(IndexInfo);
+ indexInfo->ii_Expressions = NIL;
+ indexInfo->ii_ExpressionsState = NIL;
+ indexInfo->ii_PredicateState = NIL;
+ indexInfo->ii_ExclusionOps = NULL;
+ indexInfo->ii_ExclusionProcs = NULL;
+ indexInfo->ii_ExclusionStrats = NULL;
+ classObjectId = (Oid *) palloc(numberOfAttributes * sizeof(Oid));
+ coloptions = (int16 *) palloc(numberOfAttributes * sizeof(int16));
+
+ /*
+ * We can pretend isconstraint = false unconditionally. It only serves to
+ * decide the text of an error message that should never happen for us.
+ */
+ ComputeIndexAttrs(indexInfo, classObjectId, coloptions, attributeList,
+ exclusionOpNames, RangeVarGetRelid(heapRelation, false),
+ accessMethodName, accessMethodId, false, amcanorder);
+ pfree(coloptions);
+
+ *opClasses = classObjectId;
+ *exclusionOps = indexInfo->ii_ExclusionOps;
+ }
+
+ /*
* DefineIndex
* Creates a new index.
*
*** a/src/backend/commands/tablecmds.c
--- b/src/backend/commands/tablecmds.c
***************
*** 118,123 **** static List *on_commits = NIL;
--- 118,124 ----
* a pass determined by subcommand type.
*/
+ #define AT_PASS_INVALID -1 /* placeholder, pending selection */
#define AT_PASS_DROP 0 /* DROP (all flavors) */
#define AT_PASS_ALTER_TYPE 1 /* ALTER COLUMN TYPE */
#define AT_PASS_OLD_INDEX 2 /* re-add existing indexes */
***************
*** 338,344 **** static void ATPrepAlterColumnType(List **wqueue,
static void ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel,
const char *colName, TypeName *typeName, LOCKMODE lockmode);
static void ATPostAlterTypeCleanup(List **wqueue, AlteredTableInfo *tab, LOCKMODE lockmode);
! static void ATPostAlterTypeParse(char *cmd, List **wqueue, LOCKMODE lockmode);
static void change_owner_recurse_to_sequences(Oid relationOid,
Oid newOwnerId, LOCKMODE lockmode);
static void ATExecClusterOn(Relation rel, const char *indexName, LOCKMODE lockmode);
--- 339,347 ----
static void ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel,
const char *colName, TypeName *typeName, LOCKMODE lockmode);
static void ATPostAlterTypeCleanup(List **wqueue, AlteredTableInfo *tab, LOCKMODE lockmode);
! static void ATPostAlterTypeCleanupOne(Oid classId, Oid oldId, char *cmd,
! List **wqueue, LOCKMODE lockmode, bool newBits);
! static bool MakeIndexCompatible(Oid oldId, IndexStmt *stmt);
static void change_owner_recurse_to_sequences(Oid relationOid,
Oid newOwnerId, LOCKMODE lockmode);
static void ATExecClusterOn(Relation rel, const char *indexName, LOCKMODE lockmode);
***************
*** 6809,6960 **** ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel,
}
/*
! * Cleanup after we've finished all the ALTER TYPE operations for a
! * particular relation. We have to drop and recreate all the indexes
! * and constraints that depend on the altered columns.
*/
static void
ATPostAlterTypeCleanup(List **wqueue, AlteredTableInfo *tab, LOCKMODE lockmode)
{
! ObjectAddress obj;
! ListCell *l;
/*
! * Re-parse the index and constraint definitions, and attach them to the
! * appropriate work queue entries. We do this before dropping because in
! * the case of a FOREIGN KEY constraint, we might not yet have exclusive
! * lock on the table the constraint is attached to, and we need to get
! * that before dropping. It's safe because the parser won't actually look
! * at the catalogs to detect the existing entry.
*/
! foreach(l, tab->changedIndexDefs)
! ATPostAlterTypeParse((char *) lfirst(l), wqueue, lockmode);
! foreach(l, tab->changedConstraintDefs)
! ATPostAlterTypeParse((char *) lfirst(l), wqueue, lockmode);
/*
! * Now we can drop the existing constraints and indexes --- constraints
! * first, since some of them might depend on the indexes. In fact, we
! * have to delete FOREIGN KEY constraints before UNIQUE constraints, but
! * we already ordered the constraint list to ensure that would happen. It
! * should be okay to use DROP_RESTRICT here, since nothing else should be
! * depending on these objects.
*/
! foreach(l, tab->changedConstraintOids)
{
! obj.classId = ConstraintRelationId;
! obj.objectId = lfirst_oid(l);
! obj.objectSubId = 0;
! performDeletion(&obj, DROP_RESTRICT);
}
! foreach(l, tab->changedIndexOids)
{
! obj.classId = RelationRelationId;
! obj.objectId = lfirst_oid(l);
obj.objectSubId = 0;
performDeletion(&obj, DROP_RESTRICT);
}
-
- /*
- * The objects will get recreated during subsequent passes over the work
- * queue.
- */
}
! static void
! ATPostAlterTypeParse(char *cmd, List **wqueue, LOCKMODE lockmode)
{
! List *raw_parsetree_list;
! List *querytree_list;
! ListCell *list_item;
/*
! * We expect that we will get only ALTER TABLE and CREATE INDEX
! * statements. Hence, there is no need to pass them through
! * parse_analyze() or the rewriter, but instead we need to pass them
! * through parse_utilcmd.c to make them ready for execution.
*/
! raw_parsetree_list = raw_parser(cmd);
! querytree_list = NIL;
! foreach(list_item, raw_parsetree_list)
! {
! Node *stmt = (Node *) lfirst(list_item);
!
! if (IsA(stmt, IndexStmt))
! querytree_list = lappend(querytree_list,
! transformIndexStmt((IndexStmt *) stmt,
! cmd));
! else if (IsA(stmt, AlterTableStmt))
! querytree_list = list_concat(querytree_list,
! transformAlterTableStmt((AlterTableStmt *) stmt,
! cmd));
! else
! querytree_list = lappend(querytree_list, stmt);
}
! /*
! * Attach each generated command to the proper place in the work queue.
! * Note this could result in creation of entirely new work-queue entries.
! */
! foreach(list_item, querytree_list)
{
! Node *stm = (Node *) lfirst(list_item);
! Relation rel;
! AlteredTableInfo *tab;
! switch (nodeTag(stm))
! {
! case T_IndexStmt:
! {
! IndexStmt *stmt = (IndexStmt *) stm;
! AlterTableCmd *newcmd;
!
! rel = relation_openrv(stmt->relation, lockmode);
! tab = ATGetQueueEntry(wqueue, rel);
! newcmd = makeNode(AlterTableCmd);
! newcmd->subtype = AT_ReAddIndex;
! newcmd->def = (Node *) stmt;
! tab->subcmds[AT_PASS_OLD_INDEX] =
! lappend(tab->subcmds[AT_PASS_OLD_INDEX], newcmd);
! relation_close(rel, NoLock);
! break;
! }
! case T_AlterTableStmt:
! {
! AlterTableStmt *stmt = (AlterTableStmt *) stm;
! ListCell *lcmd;
! rel = relation_openrv(stmt->relation, lockmode);
! tab = ATGetQueueEntry(wqueue, rel);
! foreach(lcmd, stmt->cmds)
! {
! AlterTableCmd *cmd = (AlterTableCmd *) lfirst(lcmd);
! switch (cmd->subtype)
! {
! case AT_AddIndex:
! cmd->subtype = AT_ReAddIndex;
! tab->subcmds[AT_PASS_OLD_INDEX] =
! lappend(tab->subcmds[AT_PASS_OLD_INDEX], cmd);
! break;
! case AT_AddConstraint:
! tab->subcmds[AT_PASS_OLD_CONSTR] =
! lappend(tab->subcmds[AT_PASS_OLD_CONSTR], cmd);
! break;
! default:
! elog(ERROR, "unexpected statement type: %d",
! (int) cmd->subtype);
! }
! }
! relation_close(rel, NoLock);
! break;
! }
! default:
! elog(ERROR, "unexpected statement type: %d",
! (int) nodeTag(stm));
! }
}
}
--- 6812,7176 ----
}
/*
! * The pseudo-pass follows AT_PASS_ALTER_TYPE for a particular relation. Here,
! * we parse the statements to recreate indexes and constraints that depend on
! * the altered columns, then drop the current objects. This parsing cannot come
! * earlier, because the tuple descriptor must be in final form. We must drop
! * FOREIGN KEY constraints before indexes and index-based constraints; we have
! * already ordered changedConstraintOids accordingly. We will recreate the
! * objects during AT_PASS_OLD_INDEX and AT_PASS_OLD_CONSTR.
*/
static void
ATPostAlterTypeCleanup(List **wqueue, AlteredTableInfo *tab, LOCKMODE lockmode)
{
! ListCell *def;
! ListCell *oid;
!
! forboth(oid, tab->changedConstraintOids, def, tab->changedConstraintDefs)
! {
! ATPostAlterTypeCleanupOne(ConstraintRelationId,
! lfirst_oid(oid), (char *) lfirst(def),
! wqueue, lockmode, tab->new_bits);
! }
! forboth(oid, tab->changedIndexOids, def, tab->changedIndexDefs)
! {
! ATPostAlterTypeCleanupOne(RelationRelationId,
! lfirst_oid(oid), (char *) lfirst(def),
! wqueue, lockmode, tab->new_bits);
! }
! }
!
! static void
! ATPostAlterTypeCleanupOne(Oid classId, Oid oldId, char *cmd,
! List **wqueue, LOCKMODE lockmode, bool newBits)
! {
! List *raw_parsetree_list;
! Node *stm;
! RangeVar *rv;
! Oid index_oid;
! IndexStmt *index_stmt = NULL;
! AlterTableCmd *atcmd;
! int pass = AT_PASS_INVALID;
/*
! * We expect either an ALTER TABLE or a CREATE INDEX statement. Hence,
! * there is no need to pass it through parse_analyze() or the rewriter, but
! * instead we need to pass it through parse_utilcmd.c to make it ready.
! * Objects with the same still exist, but parse analysis won't look.
*/
! raw_parsetree_list = raw_parser(cmd);
! Assert(list_length(raw_parsetree_list) == 1);
! stm = (Node *) linitial(raw_parsetree_list);
! if (IsA(stm, IndexStmt))
! stm = (Node *) transformIndexStmt((IndexStmt *) stm, cmd);
! else if (IsA(stm, AlterTableStmt))
! {
! List *querytree_list;
!
! querytree_list = transformAlterTableStmt((AlterTableStmt *) stm, cmd);
! Assert(list_length(querytree_list) == 1);
! stm = (Node *) linitial(querytree_list);
! }
! /* else, retain the raw parse tree: error likely coming soon */
/*
! * Construct an AlterTableCmd for the statement and choose a pass in which
! * to execute it. Identify its RangeVar. For plain indexes and constraints
! * based on indexes, identify the IndexStmt parse node and OID of the
! * soon-obsolete index.
*/
! switch (nodeTag(stm))
{
! case T_IndexStmt:
! {
! index_oid = oldId;
! index_stmt = (IndexStmt *) stm;
! rv = index_stmt->relation;
! atcmd = makeNode(AlterTableCmd);
! atcmd->subtype = AT_ReAddIndex;
! atcmd->def = stm;
! pass = AT_PASS_OLD_INDEX;
! break;
! }
! case T_AlterTableStmt:
! {
! AlterTableStmt *stmt = (AlterTableStmt *) stm;
!
! rv = stmt->relation;
! Assert(list_length(stmt->cmds) == 1);
! atcmd = (AlterTableCmd *) linitial(stmt->cmds);
!
! switch (atcmd->subtype)
! {
! case AT_AddIndex:
! Assert(IsA(atcmd->def, IndexStmt));
! index_oid = get_constraint_index(oldId);
! index_stmt = (IndexStmt *) atcmd->def;
!
! atcmd->subtype = AT_ReAddIndex;
! pass = AT_PASS_OLD_INDEX;
! break;
! case AT_AddConstraint:
!
! /*
! * Skip foreign key revalidation when the stored bits
! * aren't changing. ATAddCheckConstraint does not look
! * at skip_validation. This works well in practice, but
! * it suffers from the same formal risks as index reuse.
! * See the comment at MakeIndexCompatible().
! */
! if (!newBits)
! ((Constraint *) atcmd->def)->skip_validation = true;
!
! pass = AT_PASS_OLD_CONSTR;
! break;
! default:
! elog(ERROR, "unexpected statement type: %d",
! (int) atcmd->subtype);
! }
!
! break;
! }
! default:
! elog(ERROR, "unexpected statement type: %d",
! (int) nodeTag(stm));
}
! /*
! * When an index or index-based constraint is provably compatible with its
! * current edition, we can update the definition instead of dropping and
! * recreating the object. For constraints with no storage, we still drop
! * and recreate but add a note above to skip revalidation.
! */
! if (index_stmt == NULL || newBits ||
! !MakeIndexCompatible(index_oid, index_stmt))
{
! Relation rel;
! AlteredTableInfo *tab;
! ObjectAddress obj;
!
! /* Find or create a work-queue entry and add the analyzed command. */
! rel = relation_openrv(rv, lockmode);
! tab = ATGetQueueEntry(wqueue, rel);
! relation_close(rel, NoLock);
! Assert(pass != AT_PASS_INVALID);
! tab->subcmds[pass] = lappend(tab->subcmds[pass], atcmd);
!
! /* Drop the obsolete edition of the object. */
! obj.classId = classId;
! obj.objectId = oldId;
obj.objectSubId = 0;
performDeletion(&obj, DROP_RESTRICT);
}
}
! /*
! * Typical indexes will remain valid across most column type changes not
! * entailing table rewrites. We assume continued validity when each column of
! * an index would have the same operator family before and after the change. No
! * formal behavioral contract justifies this, but it fits well in practice. To
! * illustrate the formal hazard, consider type "int_regular" and "int_negative",
! * both covered by a common operator family. To user, they both behave like the
! * SQL standard integer type, but the latter internally stores the negation of
! * its value. Now suppose an explicit binary-coercion cast between them. After
! * a no-work change between these types on a B-tree-indexed column, the operator
! * family will remain the same, but the sort order inverts. The operator family
! * was blameless under its contract. This arose because we effectively assumed
! * that a cast had some connection to the B-tree operator family's concept of
! * equality. That connection is firm in practice, yet informal.
! *
! * We do not document a contract for GIN or GiST operator families. Only the
! * GIN operator family "array_ops" has more than one constituent operator class,
! * and only typmod-only changes to arrays can avoid a rewrite. Preserving a GIN
! * index across such a change is safe. We therefore support GiST and GIN here
! * using the same rules as for B-tree and hash indexes, but that is mostly
! * academic. Any forthcoming contract for GiST or GIN operator families should,
! * all other things being equal, bolster the validity of this assumption.
! *
! * Exclusion constraints raise the question: can we trust that the operator has
! * the same semantics with the new type? The operator will fall in the index's
! * operator family. For B-tree or hash, the operator will be "=" or "<>",
! * yielding an affirmative answer from contractual requirements. For GiST and
! * GIN, we assume that a similar requirement would fall out of any contract for
! * their operator families, should one arise. We therefore support exclusion
! * constraints without any special treatment, but this is again mostly academic.
! *
! * This implementation assumes a general similarity with the old and new
! * indexes, specifically that they have the same number of columns, and that if
! * one has an expression column or predicate, both do. Since the new index
! * statement comes from pg_get_indexdef on the old index, this had better hold.
! */
! static bool
! MakeIndexCompatible(Oid oldId, IndexStmt *stmt)
{
! HeapTuple tup;
! int2 index_natts;
! bool isnull;
! oidvector *old_indclass;
! Oid *new_indclass;
! Oid *new_conexclop;
! int i;
! Relation pg_index;
! Relation pg_attribute;
! Relation parentrel;
! Datum repl_val[Natts_pg_index];
! bool repl_null[Natts_pg_index];
! bool repl_repl[Natts_pg_index] = {};
! Datum d;
! int2vector *indkey;
! TupleDesc tableDesc;
!
! /* Get the soon-obsolete pg_index tuple. */
! tup = SearchSysCacheCopy1(INDEXRELID, ObjectIdGetDatum(oldId));
! if (!HeapTupleIsValid(tup))
! elog(ERROR, "cache lookup failed for index %u", oldId);
!
! /* We don't handle expressions or predicates. */
! if (!(heap_attisnull(tup, Anum_pg_index_indpred) &&
! heap_attisnull(tup, Anum_pg_index_indexprs)))
! return false;
/*
! * If the old and new operator class of any index column differ in operator
! * family, the old index may be incompatible.
*/
! index_natts = ((Form_pg_index) GETSTRUCT(tup))->indnatts;
!
! d = SysCacheGetAttr(INDEXRELID, tup, Anum_pg_index_indclass, &isnull);
! Assert(!isnull);
! old_indclass = (oidvector *) DatumGetPointer(d);
!
! GetIndexCompatibilityAspects(stmt->relation,
! stmt->accessMethod,
! stmt->indexParams,
! stmt->excludeOpNames,
! &new_indclass,
! &new_conexclop);
!
! for (i = 0; i < index_natts; i++)
! {
! Oid old_opc = old_indclass->values[i];
! Oid new_opc = new_indclass[i];
!
! if (old_opc != new_opc
! && get_opclass_family(old_opc) != get_opclass_family(new_opc))
! return false;
}
!
! /* The old index is compatible. Update catalogs. */
!
! /* Update pg_index.indclass. */
! pg_index = heap_open(IndexRelationId, RowExclusiveLock);
!
! repl_val[Anum_pg_index_indclass - 1]
! = PointerGetDatum(buildoidvector(new_indclass, index_natts));
! repl_null[Anum_pg_index_indclass - 1] = false;
! repl_repl[Anum_pg_index_indclass - 1] = true;
! tup = heap_modify_tuple(tup, RelationGetDescr(pg_index),
! repl_val, repl_null, repl_repl);
!
! simple_heap_update(pg_index, &tup->t_self, tup);
! CatalogUpdateIndexes(pg_index, tup);
! heap_close(pg_index, RowExclusiveLock);
!
! /* Update pg_attribute. */
! d = SysCacheGetAttr(INDEXRELID, tup, Anum_pg_index_indkey, &isnull);
! Assert(!isnull);
! indkey = (int2vector *) DatumGetPointer(d);
!
! pg_attribute = heap_open(AttributeRelationId, RowExclusiveLock);
! parentrel = heap_open(((Form_pg_index) GETSTRUCT(tup))->indrelid, NoLock);
! tableDesc = RelationGetDescr(parentrel);
! for (i = 0; i < index_natts; i++)
{
! HeapTuple atup;
! Form_pg_attribute indexatt;
! Form_pg_attribute tableatt;
! AttrNumber table_attnum = indkey->values[i];
! /*
! * pg_attribute tuples for expression columns depend only on the
! * expression result type. If the result type changed, we would have
! * rejected the index as incompatible. Therefore, nothing to do.
! */
! if (table_attnum == 0)
! continue;
! /* System column definitions never change. */
! if (table_attnum < 0)
! continue;
! atup = SearchSysCacheCopy2(ATTNUM, oldId, i + 1);
! if (!HeapTupleIsValid(atup)) /* should not happen */
! elog(ERROR, "cache lookup failed for attribute %d of relation %u",
! i + 1, oldId);
! indexatt = (Form_pg_attribute) GETSTRUCT(atup);
!
! tableatt = tableDesc->attrs[AttrNumberGetAttrOffset(table_attnum)];
! Assert(table_attnum <= RelationGetNumberOfAttributes(parentrel));
!
! /* Copy the table's pg_attribute row. */
! memcpy(indexatt, tableatt, ATTRIBUTE_FIXED_PART_SIZE);
!
! /*
! * Fix the stuff that should not be the same as the underlying
! * attr. Mirrors ConstructTupleDescriptor().
! */
! indexatt->attrelid = oldId;
! indexatt->attnum = i + 1;
!
! indexatt->attstattarget = -1;
! indexatt->attcacheoff = -1;
! indexatt->attnotnull = false;
! indexatt->atthasdef = false;
! indexatt->attislocal = true;
! indexatt->attinhcount = 0;
!
! simple_heap_update(pg_attribute, &atup->t_self, atup);
! CatalogUpdateIndexes(pg_attribute, atup);
! }
! heap_close(parentrel, NoLock);
! heap_close(pg_attribute, RowExclusiveLock);
!
! /* Update pg_constraint.conexclop. */
! if (new_conexclop != NULL)
! {
! Datum *opdatums;
! Relation pg_constraint;
! Oid conid;
! HeapTuple ctup;
! ArrayType *conexclop;
!
! opdatums = (Datum *) palloc(index_natts * sizeof(*opdatums));
! for (i = 0; i < index_natts; i++)
! opdatums[i] = ObjectIdGetDatum(new_conexclop[i]);
! conexclop = construct_array(opdatums, index_natts, OIDOID, sizeof(Oid),
! true, 'i');
!
! pg_constraint = heap_open(ConstraintRelationId, RowExclusiveLock);
!
! conid = get_index_constraint(oldId);
! Assert(OidIsValid(conid));
! ctup = SearchSysCacheCopy1(CONSTROID, conid);
! if (!HeapTupleIsValid(ctup)) /* should not happen */
! elog(ERROR, "cache lookup failed for constraint %u", conid);
!
! repl_repl[Anum_pg_index_indclass - 1] = false; /* clear earlier use */
! repl_val[Anum_pg_constraint_conexclop - 1] = PointerGetDatum(conexclop);
! repl_null[Anum_pg_constraint_conexclop - 1] = false;
! repl_repl[Anum_pg_constraint_conexclop - 1] = true;
! ctup = heap_modify_tuple(ctup, RelationGetDescr(pg_constraint),
! repl_val, repl_null, repl_repl);
!
! simple_heap_update(pg_constraint, &ctup->t_self, ctup);
! CatalogUpdateIndexes(pg_constraint, ctup);
!
! heap_close(pg_constraint, RowExclusiveLock);
}
+
+ CommandCounterIncrement(); /* XXX needed? */
+ return true;
}
*** a/src/include/commands/defrem.h
--- b/src/include/commands/defrem.h
***************
*** 49,54 **** extern char *ChooseIndexName(const char *tabname, Oid namespaceId,
--- 49,60 ----
List *colnames, List *exclusionOpNames,
bool primary, bool isconstraint);
extern List *ChooseIndexColumnNames(List *indexElems);
+ extern void GetIndexCompatibilityAspects(RangeVar *heapRelation,
+ char *accessMethodName,
+ List *attributeList,
+ List *exclusionOpNames,
+ Oid **opClasses,
+ Oid **exclusionOps);
extern Oid GetDefaultOpClass(Oid type_id, Oid am_id);
/* commands/functioncmds.c */
*** a/src/test/regress/expected/alter_table.out
--- b/src/test/regress/expected/alter_table.out
***************
*** 1519,1524 **** CREATE TABLE t (
--- 1519,1525 ----
document xml NOT NULL,
strarr varchar(2)[] NOT NULL,
square box NOT NULL,
+ EXCLUDE (stamptz WITH =),
CHECK (touchy_f(constraint0) < 10)
);
NOTICE: CREATE TABLE / UNIQUE will create implicit index "t_constraint4_key" for table "t"
***************
*** 1541,1546 **** NOTICE: CREATE TABLE / UNIQUE will create implicit index "t_bits_key" for table
--- 1542,1549 ----
DEBUG: Rebuilding index "t_bits_key"
NOTICE: CREATE TABLE / UNIQUE will create implicit index "t_network_key" for table "t"
DEBUG: Rebuilding index "t_network_key"
+ NOTICE: CREATE TABLE / EXCLUDE will create implicit index "t_stamptz_excl" for table "t"
+ DEBUG: Rebuilding index "t_stamptz_excl"
CREATE INDEX ON t (string);
DEBUG: Rebuilding index "t_string_idx"
CREATE INDEX ON t USING hash (string);
***************
*** 1615,1621 **** FROM pg_class WHERE oid = 't'::regclass
ORDER BY 1;
relname | relnamespace | relowner | relam | reltablespace | relhasindex | relisshared | relpersistence | relkind | relnatts | relchecks | relhasoids | relhaspkey | relhasexclusion | relhasrules | relhastriggers | relacl | reloptions
-------------------+--------------+----------+-------+---------------+-------------+-------------+----------------+---------+----------+-----------+------------+------------+-----------------+-------------+----------------+--------+------------
! t | 2200 | 10 | 0 | 0 | t | f | p | r | 18 | 1 | f | f | f | f | t | |
t_bits_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_constraint4_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_daytime_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
--- 1618,1624 ----
ORDER BY 1;
relname | relnamespace | relowner | relam | reltablespace | relhasindex | relisshared | relpersistence | relkind | relnatts | relchecks | relhasoids | relhaspkey | relhasexclusion | relhasrules | relhastriggers | relacl | reloptions
-------------------+--------------+----------+-------+---------------+-------------+-------------+----------------+---------+----------+-----------+------------+------------+-----------------+-------------+----------------+--------+------------
! t | 2200 | 10 | 0 | 0 | t | f | p | r | 18 | 1 | f | f | t | f | t | |
t_bits_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_constraint4_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_daytime_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
***************
*** 1626,1638 **** ORDER BY 1;
t_rational_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_square_idx | 2200 | 10 | 783 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_stamp_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_stamptz_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_strarr_idx | 2200 | 10 | 2742 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_string_idx | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_string_idx1 | 2200 | 10 | 405 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_timegap_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_touchy_f_idx | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
! (17 rows)
SELECT relname, indnatts, indisunique, indisprimary, indimmediate,
indisclustered, indisvalid, indcheckxmin, indisready, indkey, indclass,
--- 1629,1642 ----
t_rational_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_square_idx | 2200 | 10 | 783 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_stamp_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
+ t_stamptz_excl | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | t | f | f | |
t_stamptz_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_strarr_idx | 2200 | 10 | 2742 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_string_idx | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_string_idx1 | 2200 | 10 | 405 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_timegap_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_touchy_f_idx | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
! (18 rows)
SELECT relname, indnatts, indisunique, indisprimary, indimmediate,
indisclustered, indisvalid, indcheckxmin, indisready, indkey, indclass,
***************
*** 1651,1663 **** WHERE indrelid = 't'::regclass ORDER BY 1;
t_rational_key | 1 | t | f | t | f | t | f | t | 7 | 10037 | 0
t_square_idx | 1 | f | f | t | f | t | f | t | 18 | 10074 | 0
t_stamp_key | 1 | t | f | t | f | t | f | t | 12 | 10054 | 0
t_stamptz_key | 1 | t | f | t | f | t | f | t | 11 | 10047 | 0
t_strarr_idx | 1 | f | f | t | f | t | f | t | 17 | 10103 | 0
t_string_idx | 1 | f | f | t | f | t | f | t | 8 | 10043 | 0
t_string_idx1 | 1 | f | f | t | f | t | f | t | 8 | 10044 | 0
t_timegap_key | 1 | t | f | t | f | t | f | t | 13 | 10031 | 0
t_touchy_f_idx | 1 | t | f | t | f | t | f | t | 0 | 1978 | 0
! (16 rows)
SELECT relname, attname, atttypid, attstattarget, attlen, attnum, attndims,
attcacheoff, atttypmod, attbyval, attstorage, attalign, attnotnull,
--- 1655,1668 ----
t_rational_key | 1 | t | f | t | f | t | f | t | 7 | 10037 | 0
t_square_idx | 1 | f | f | t | f | t | f | t | 18 | 10074 | 0
t_stamp_key | 1 | t | f | t | f | t | f | t | 12 | 10054 | 0
+ t_stamptz_excl | 1 | f | f | t | f | t | f | t | 11 | 10047 | 0
t_stamptz_key | 1 | t | f | t | f | t | f | t | 11 | 10047 | 0
t_strarr_idx | 1 | f | f | t | f | t | f | t | 17 | 10103 | 0
t_string_idx | 1 | f | f | t | f | t | f | t | 8 | 10043 | 0
t_string_idx1 | 1 | f | f | t | f | t | f | t | 8 | 10044 | 0
t_timegap_key | 1 | t | f | t | f | t | f | t | 13 | 10031 | 0
t_touchy_f_idx | 1 | t | f | t | f | t | f | t | 0 | 1978 | 0
! (17 rows)
SELECT relname, attname, atttypid, attstattarget, attlen, attnum, attndims,
attcacheoff, atttypmod, attbyval, attstorage, attalign, attnotnull,
***************
*** 1702,1714 **** ORDER BY 1, 2;
t_rational_key | rational | 1700 | -1 | -1 | 1 | 0 | -1 | -1 | f | m | i | f | f | f | t | 0 | |
t_square_idx | square | 603 | -1 | 32 | 1 | 0 | -1 | -1 | f | p | d | f | f | f | t | 0 | |
t_stamp_key | stamp | 1114 | -1 | 8 | 1 | 0 | -1 | -1 | t | p | d | f | f | f | t | 0 | |
t_stamptz_key | stamptz | 1184 | -1 | 8 | 1 | 0 | -1 | -1 | t | p | d | f | f | f | t | 0 | |
t_strarr_idx | strarr | 1043 | -1 | -1 | 1 | 1 | -1 | -1 | f | x | i | f | f | f | t | 0 | |
t_string_idx | string | 1043 | -1 | -1 | 1 | 0 | -1 | 6 | f | x | i | f | f | f | t | 0 | |
t_string_idx1 | string | 23 | -1 | 4 | 1 | 0 | -1 | -1 | t | p | i | f | f | f | t | 0 | |
t_timegap_key | timegap | 1186 | -1 | 16 | 1 | 0 | -1 | -1 | f | p | d | f | f | f | t | 0 | |
t_touchy_f_idx | touchy_f | 23 | -1 | 4 | 1 | 0 | -1 | -1 | t | p | i | f | f | f | t | 0 | |
! (40 rows)
SELECT conname, connamespace, contype, condeferrable, condeferred, confupdtype,
confdeltype, confmatchtype, conislocal, coninhcount, conkey, confkey,
--- 1707,1720 ----
t_rational_key | rational | 1700 | -1 | -1 | 1 | 0 | -1 | -1 | f | m | i | f | f | f | t | 0 | |
t_square_idx | square | 603 | -1 | 32 | 1 | 0 | -1 | -1 | f | p | d | f | f | f | t | 0 | |
t_stamp_key | stamp | 1114 | -1 | 8 | 1 | 0 | -1 | -1 | t | p | d | f | f | f | t | 0 | |
+ t_stamptz_excl | stamptz | 1184 | -1 | 8 | 1 | 0 | -1 | -1 | t | p | d | f | f | f | t | 0 | |
t_stamptz_key | stamptz | 1184 | -1 | 8 | 1 | 0 | -1 | -1 | t | p | d | f | f | f | t | 0 | |
t_strarr_idx | strarr | 1043 | -1 | -1 | 1 | 1 | -1 | -1 | f | x | i | f | f | f | t | 0 | |
t_string_idx | string | 1043 | -1 | -1 | 1 | 0 | -1 | 6 | f | x | i | f | f | f | t | 0 | |
t_string_idx1 | string | 23 | -1 | 4 | 1 | 0 | -1 | -1 | t | p | i | f | f | f | t | 0 | |
t_timegap_key | timegap | 1186 | -1 | 16 | 1 | 0 | -1 | -1 | f | p | d | f | f | f | t | 0 | |
t_touchy_f_idx | touchy_f | 23 | -1 | 4 | 1 | 0 | -1 | -1 | t | p | i | f | f | f | t | 0 | |
! (41 rows)
SELECT conname, connamespace, contype, condeferrable, condeferred, confupdtype,
confdeltype, confmatchtype, conislocal, coninhcount, conkey, confkey,
***************
*** 1727,1735 **** ORDER BY 1;
t_network_key | 2200 | u | f | f | | | | t | 0 | {15} | | | | | |
t_rational_key | 2200 | u | f | f | | | | t | 0 | {7} | | | | | |
t_stamp_key | 2200 | u | f | f | | | | t | 0 | {12} | | | | | |
t_stamptz_key | 2200 | u | f | f | | | | t | 0 | {11} | | | | | |
t_timegap_key | 2200 | u | f | f | | | | t | 0 | {13} | | | | | |
! (12 rows)
-- RI trigger names include the table OID. We don't have a great sort order
-- available, but tgname probably serves acceptably in practice.
--- 1733,1742 ----
t_network_key | 2200 | u | f | f | | | | t | 0 | {15} | | | | | |
t_rational_key | 2200 | u | f | f | | | | t | 0 | {7} | | | | | |
t_stamp_key | 2200 | u | f | f | | | | t | 0 | {12} | | | | | |
+ t_stamptz_excl | 2200 | x | f | f | | | | t | 0 | {11} | | | | | {1320} |
t_stamptz_key | 2200 | u | f | f | | | | t | 0 | {11} | | | | | |
t_timegap_key | 2200 | u | f | f | | | | t | 0 | {13} | | | | | |
! (13 rows)
-- RI trigger names include the table OID. We don't have a great sort order
-- available, but tgname probably serves acceptably in practice.
***************
*** 1775,1780 **** DEBUG: Rebuilding index "t_stamp_key"
--- 1782,1788 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_strarr_idx"
***************
*** 1796,1801 **** DEBUG: Rebuilding index "t_stamp_key"
--- 1804,1810 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_strarr_idx"
***************
*** 1805,1813 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Validating foreign key constraint "t_constraint3_fkey"
ALTER TABLE t ALTER constraint3 TYPE numeric(7,2); -- verify; FK noop
DEBUG: Verifying table "t"
- DEBUG: Validating foreign key constraint "t_constraint3_fkey"
ALTER TABLE t ALTER constraint3 TYPE numeric(9,2); -- noop; FK noop
- DEBUG: Validating foreign key constraint "t_constraint3_fkey"
-- Change a column with an incoming foreign key constraint.
ALTER TABLE t ALTER constraint4 TYPE numeric(8,1); -- rewrite; FK error
DEBUG: Rewriting table "t"
--- 1814,1820 ----
***************
*** 1820,1825 **** DEBUG: Rebuilding index "t_stamp_key"
--- 1827,1833 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_strarr_idx"
***************
*** 1841,1846 **** DEBUG: Rebuilding index "t_stamp_key"
--- 1849,1855 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_strarr_idx"
***************
*** 1850,1868 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Validating foreign key constraint "child_keycol_fkey"
ALTER TABLE t ALTER constraint4 TYPE numeric(7,2); -- verify; FK noop
- DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Verifying table "t"
- DEBUG: Validating foreign key constraint "child_keycol_fkey"
ALTER TABLE t ALTER constraint4 TYPE numeric(9,2); -- noop; FK noop
- DEBUG: Rebuilding index "t_constraint4_key"
- DEBUG: Validating foreign key constraint "child_keycol_fkey"
-- Type-specific tests.
ALTER TABLE t ALTER integral TYPE abstime USING integral::abstime; -- noop
DEBUG: Rebuilding index "t_integral_key"
ALTER TABLE t ALTER integral TYPE oid USING integral::int4; -- noop
DEBUG: Rebuilding index "t_integral_key"
ALTER TABLE t ALTER integral TYPE regtype; -- noop
- DEBUG: Rebuilding index "t_integral_key"
ALTER TABLE t ALTER integral TYPE int8; -- rewrite
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_rational_key"
--- 1859,1872 ----
***************
*** 1873,1878 **** DEBUG: Rebuilding index "t_stamp_key"
--- 1877,1883 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_strarr_idx"
***************
*** 1891,1896 **** DEBUG: Rebuilding index "t_stamp_key"
--- 1896,1902 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_strarr_idx"
***************
*** 1908,1913 **** DEBUG: Rebuilding index "t_stamp_key"
--- 1914,1920 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_strarr_idx"
***************
*** 1926,1931 **** DEBUG: Rebuilding index "t_stamp_key"
--- 1933,1939 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_strarr_idx"
***************
*** 1936,1947 **** DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
ALTER TABLE t ALTER rational TYPE numeric(13,4); -- noop
- DEBUG: Rebuilding index "t_rational_key"
ALTER TABLE t ALTER rational TYPE numeric(11,4); -- verify
- DEBUG: Rebuilding index "t_rational_key"
DEBUG: Verifying table "t"
ALTER TABLE t ALTER rational TYPE numeric; -- noop
- DEBUG: Rebuilding index "t_rational_key"
ALTER TABLE t ALTER rational TYPE numeric(5,4); -- verify-e
DEBUG: Rewriting table "t"
ERROR: numeric field overflow
--- 1944,1952 ----
***************
*** 1951,1979 **** DEBUG: Rewriting table "t"
ERROR: numeric field overflow
DETAIL: A field with precision 4, scale 3 must round to an absolute value less than 10^1.
ALTER TABLE t ALTER string TYPE varchar(4); -- noop
- DEBUG: Rebuilding index "t_string_idx1"
- DEBUG: Rebuilding index "t_string_idx"
ALTER TABLE t ALTER string TYPE lendom; -- noop
- DEBUG: Rebuilding index "t_string_idx"
- DEBUG: Rebuilding index "t_string_idx1"
ALTER TABLE t ALTER string TYPE shortdom; -- rewrite-e
DEBUG: Rewriting table "t"
ERROR: value too long for type character varying(1)
ALTER TABLE t ALTER string TYPE checkdom; -- verify
- DEBUG: Rebuilding index "t_string_idx1"
- DEBUG: Rebuilding index "t_string_idx"
DEBUG: Verifying table "t"
ALTER TABLE t ALTER string TYPE faildom; -- verify-e
- DEBUG: Rebuilding index "t_string_idx"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Verifying table "t"
ERROR: value for domain faildom violates check constraint "faildom_check"
ALTER TABLE t ALTER string TYPE loosedom; -- noop
- DEBUG: Rebuilding index "t_string_idx"
- DEBUG: Rebuilding index "t_string_idx1"
ALTER TABLE t ALTER string TYPE text; -- noop
- DEBUG: Rebuilding index "t_string_idx1"
- DEBUG: Rebuilding index "t_string_idx"
ALTER TABLE t ALTER string TYPE varchar(20); -- rewrite-v
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_daytimetz_key"
--- 1956,1972 ----
***************
*** 1983,1988 **** DEBUG: Rebuilding index "t_stamp_key"
--- 1976,1982 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_strarr_idx"
DEBUG: Rebuilding index "t_square_idx"
DEBUG: Rebuilding index "t_touchy_f_idx"
***************
*** 1990,1997 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_string_idx1"
ALTER TABLE t ALTER string TYPE varchar(1); -- rewrite-e
DEBUG: Rewriting table "t"
ERROR: value too long for type character varying(1)
--- 1984,1991 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx1"
+ DEBUG: Rebuilding index "t_string_idx"
ALTER TABLE t ALTER string TYPE varchar(1); -- rewrite-e
DEBUG: Rewriting table "t"
ERROR: value too long for type character varying(1)
***************
*** 2004,2009 **** DEBUG: Rebuilding index "t_stamp_key"
--- 1998,2004 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_strarr_idx"
DEBUG: Rebuilding index "t_square_idx"
DEBUG: Rebuilding index "t_touchy_f_idx"
***************
*** 2011,2018 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
ALTER TABLE t ALTER string TYPE text USING 'foo'::varchar; -- rewrite
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_daytimetz_key"
--- 2006,2013 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
ALTER TABLE t ALTER string TYPE text USING 'foo'::varchar; -- rewrite
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_daytimetz_key"
***************
*** 2022,2027 **** DEBUG: Rebuilding index "t_stamp_key"
--- 2017,2023 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_strarr_idx"
DEBUG: Rebuilding index "t_square_idx"
DEBUG: Rebuilding index "t_touchy_f_idx"
***************
*** 2029,2036 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_string_idx1"
ALTER TABLE t ALTER string TYPE char(3); -- rewrite-v
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_daytimetz_key"
--- 2025,2032 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx1"
+ DEBUG: Rebuilding index "t_string_idx"
ALTER TABLE t ALTER string TYPE char(3); -- rewrite-v
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_daytimetz_key"
***************
*** 2040,2045 **** DEBUG: Rebuilding index "t_stamp_key"
--- 2036,2042 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_strarr_idx"
DEBUG: Rebuilding index "t_square_idx"
DEBUG: Rebuilding index "t_touchy_f_idx"
***************
*** 2047,2054 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
ALTER TABLE t ALTER string TYPE char(2); -- rewrite-e
DEBUG: Rewriting table "t"
ERROR: value too long for type character(2)
--- 2044,2051 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
ALTER TABLE t ALTER string TYPE char(2); -- rewrite-e
DEBUG: Rewriting table "t"
ERROR: value too long for type character(2)
***************
*** 2061,2066 **** DEBUG: Rebuilding index "t_stamp_key"
--- 2058,2064 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_strarr_idx"
DEBUG: Rebuilding index "t_square_idx"
DEBUG: Rebuilding index "t_touchy_f_idx"
***************
*** 2068,2075 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_string_idx1"
ALTER TABLE t ALTER string TYPE char(4); -- rewrite
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_daytimetz_key"
--- 2066,2073 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx1"
+ DEBUG: Rebuilding index "t_string_idx"
ALTER TABLE t ALTER string TYPE char(4); -- rewrite
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_daytimetz_key"
***************
*** 2079,2084 **** DEBUG: Rebuilding index "t_stamp_key"
--- 2077,2083 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_strarr_idx"
DEBUG: Rebuilding index "t_square_idx"
DEBUG: Rebuilding index "t_touchy_f_idx"
***************
*** 2086,2093 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
ALTER TABLE t ALTER daytimetz TYPE timetz(3); -- rewrite-v
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_daytime_key"
--- 2085,2092 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
ALTER TABLE t ALTER daytimetz TYPE timetz(3); -- rewrite-v
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_daytime_key"
***************
*** 2096,2101 **** DEBUG: Rebuilding index "t_stamp_key"
--- 2095,2101 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_strarr_idx"
DEBUG: Rebuilding index "t_square_idx"
DEBUG: Rebuilding index "t_touchy_f_idx"
***************
*** 2103,2110 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
ALTER TABLE t ALTER daytimetz TYPE timetz(1); -- rewrite
DEBUG: Rewriting table "t"
--- 2103,2110 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
ALTER TABLE t ALTER daytimetz TYPE timetz(1); -- rewrite
DEBUG: Rewriting table "t"
***************
*** 2114,2119 **** DEBUG: Rebuilding index "t_stamp_key"
--- 2114,2120 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_strarr_idx"
DEBUG: Rebuilding index "t_square_idx"
DEBUG: Rebuilding index "t_touchy_f_idx"
***************
*** 2121,2131 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
ALTER TABLE t ALTER daytimetz TYPE timetz(2); -- noop
- DEBUG: Rebuilding index "t_daytimetz_key"
ALTER TABLE t ALTER daytimetz TYPE time; -- rewrite
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_daytime_key"
--- 2122,2131 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
ALTER TABLE t ALTER daytimetz TYPE timetz(2); -- noop
ALTER TABLE t ALTER daytimetz TYPE time; -- rewrite
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_daytime_key"
***************
*** 2134,2139 **** DEBUG: Rebuilding index "t_stamp_key"
--- 2134,2140 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_strarr_idx"
DEBUG: Rebuilding index "t_square_idx"
DEBUG: Rebuilding index "t_touchy_f_idx"
***************
*** 2141,2148 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
ALTER TABLE t ALTER daytime TYPE time(3); -- rewrite-v
DEBUG: Rewriting table "t"
--- 2142,2149 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
ALTER TABLE t ALTER daytime TYPE time(3); -- rewrite-v
DEBUG: Rewriting table "t"
***************
*** 2151,2156 **** DEBUG: Rebuilding index "t_stamp_key"
--- 2152,2158 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_strarr_idx"
DEBUG: Rebuilding index "t_square_idx"
DEBUG: Rebuilding index "t_touchy_f_idx"
***************
*** 2158,2165 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
ALTER TABLE t ALTER daytime TYPE time(1); -- rewrite
--- 2160,2167 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
ALTER TABLE t ALTER daytime TYPE time(1); -- rewrite
***************
*** 2169,2174 **** DEBUG: Rebuilding index "t_stamp_key"
--- 2171,2177 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_strarr_idx"
DEBUG: Rebuilding index "t_square_idx"
DEBUG: Rebuilding index "t_touchy_f_idx"
***************
*** 2176,2187 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
ALTER TABLE t ALTER daytime TYPE time(2); -- noop
- DEBUG: Rebuilding index "t_daytime_key"
ALTER TABLE t ALTER daytime TYPE timetz; -- rewrite
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_stamptz_key"
--- 2179,2189 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
ALTER TABLE t ALTER daytime TYPE time(2); -- noop
ALTER TABLE t ALTER daytime TYPE timetz; -- rewrite
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_stamptz_key"
***************
*** 2189,2194 **** DEBUG: Rebuilding index "t_stamp_key"
--- 2191,2197 ----
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Rebuilding index "t_network_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_strarr_idx"
DEBUG: Rebuilding index "t_square_idx"
DEBUG: Rebuilding index "t_touchy_f_idx"
***************
*** 2196,2203 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
ALTER TABLE t ALTER stamptz TYPE timestamptz(3); -- rewrite-v
--- 2199,2206 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
ALTER TABLE t ALTER stamptz TYPE timestamptz(3); -- rewrite-v
***************
*** 2213,2222 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
DEBUG: Rebuilding index "t_stamptz_key"
ALTER TABLE t ALTER stamptz TYPE timestamptz(1); -- rewrite
DEBUG: Rewriting table "t"
--- 2216,2226 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_stamptz_key"
ALTER TABLE t ALTER stamptz TYPE timestamptz(1); -- rewrite
DEBUG: Rewriting table "t"
***************
*** 2231,2245 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
DEBUG: Rebuilding index "t_stamptz_key"
ALTER TABLE t ALTER stamptz TYPE timestamptz(2); -- noop
- DEBUG: Rebuilding index "t_stamptz_key"
ALTER TABLE t ALTER stamptz TYPE timestamp; -- noop
- DEBUG: Rebuilding index "t_stamptz_key"
SET timezone = 'Asia/Jakarta';
ALTER TABLE t ALTER stamptz TYPE timestamptz; -- rewrite
DEBUG: Rewriting table "t"
--- 2235,2248 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
DEBUG: Rebuilding index "t_stamptz_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
ALTER TABLE t ALTER stamptz TYPE timestamptz(2); -- noop
ALTER TABLE t ALTER stamptz TYPE timestamp; -- noop
SET timezone = 'Asia/Jakarta';
ALTER TABLE t ALTER stamptz TYPE timestamptz; -- rewrite
DEBUG: Rewriting table "t"
***************
*** 2254,2265 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
DEBUG: Rebuilding index "t_stamptz_key"
SET timezone = 'UTC';
ALTER TABLE t ALTER stamp TYPE timestamp(3); -- rewrite-v
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_timegap_key"
--- 2257,2270 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_stamptz_key"
SET timezone = 'UTC';
+ ALTER TABLE t ALTER stamptz TYPE timestamp; -- noop
ALTER TABLE t ALTER stamp TYPE timestamp(3); -- rewrite-v
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_timegap_key"
***************
*** 2272,2281 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
ALTER TABLE t ALTER stamp TYPE timestamp(1); -- rewrite
--- 2277,2287 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
ALTER TABLE t ALTER stamp TYPE timestamp(1); -- rewrite
***************
*** 2290,2305 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
ALTER TABLE t ALTER stamp TYPE timestamp(2); -- noop
- DEBUG: Rebuilding index "t_stamp_key"
ALTER TABLE t ALTER stamp TYPE timestamptz; -- noop
- DEBUG: Rebuilding index "t_stamp_key"
SET timezone = 'Asia/Jakarta';
ALTER TABLE t ALTER stamp TYPE timestamp; -- rewrite
DEBUG: Rewriting table "t"
--- 2296,2310 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
ALTER TABLE t ALTER stamp TYPE timestamp(2); -- noop
ALTER TABLE t ALTER stamp TYPE timestamptz; -- noop
SET timezone = 'Asia/Jakarta';
ALTER TABLE t ALTER stamp TYPE timestamp; -- rewrite
DEBUG: Rewriting table "t"
***************
*** 2313,2325 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
SET timezone = 'UTC';
ALTER TABLE t ALTER timegap TYPE interval(3); -- rewrite-v
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_bits_key"
--- 2318,2332 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
SET timezone = 'UTC';
+ ALTER TABLE t ALTER stamp TYPE timestamptz; -- noop
ALTER TABLE t ALTER timegap TYPE interval(3); -- rewrite-v
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_bits_key"
***************
*** 2331,2340 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
--- 2338,2348 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
***************
*** 2349,2368 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
ALTER TABLE t ALTER timegap TYPE interval(2); -- noop
- DEBUG: Rebuilding index "t_timegap_key"
ALTER TABLE t ALTER bits TYPE bit(6); -- verify
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Verifying table "t"
ALTER TABLE t ALTER bits TYPE bit(7); -- verify-e
- DEBUG: Rebuilding index "t_bits_key"
DEBUG: Verifying table "t"
ERROR: bit string length 6 does not match type bit(7)
ALTER TABLE t ALTER bits TYPE bit(7) USING bits::bit(7); -- rewrite
--- 2357,2375 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
ALTER TABLE t ALTER timegap TYPE interval(2); -- noop
ALTER TABLE t ALTER bits TYPE bit(6); -- verify
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Verifying table "t"
ALTER TABLE t ALTER bits TYPE bit(7); -- verify-e
DEBUG: Verifying table "t"
ERROR: bit string length 6 does not match type bit(7)
ALTER TABLE t ALTER bits TYPE bit(7) USING bits::bit(7); -- rewrite
***************
*** 2375,2384 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
--- 2382,2392 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
***************
*** 2388,2397 **** ALTER TABLE t ALTER bits TYPE varbit(8); -- verify
DEBUG: Rebuilding index "t_bits_key"
DEBUG: Verifying table "t"
ALTER TABLE t ALTER bits TYPE varbit(7); -- verify
- DEBUG: Rebuilding index "t_bits_key"
DEBUG: Verifying table "t"
ALTER TABLE t ALTER bits TYPE varbit(5); -- verify-e
- DEBUG: Rebuilding index "t_bits_key"
DEBUG: Verifying table "t"
ERROR: bit string too long for type bit varying(5)
ALTER TABLE t ALTER bits TYPE varbit(5) USING bits::varbit(5); -- rewrite
--- 2396,2403 ----
***************
*** 2404,2421 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
ALTER TABLE t ALTER bits TYPE varbit(8); -- noop
- DEBUG: Rebuilding index "t_bits_key"
ALTER TABLE t ALTER network TYPE inet; -- noop
- DEBUG: Rebuilding index "t_network_key"
ALTER TABLE t ALTER network TYPE cidr; -- rewrite-v
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_strarr_idx"
--- 2410,2426 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
DEBUG: Rebuilding index "t_bits_key"
ALTER TABLE t ALTER bits TYPE varbit(8); -- noop
ALTER TABLE t ALTER network TYPE inet; -- noop
ALTER TABLE t ALTER network TYPE cidr; -- rewrite-v
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_strarr_idx"
***************
*** 2425,2434 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
--- 2430,2440 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
***************
*** 2446,2455 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
--- 2452,2462 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
***************
*** 2466,2475 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
--- 2473,2483 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
***************
*** 2478,2484 **** DEBUG: Rebuilding index "t_network_key"
ALTER TABLE t ALTER document TYPE xml USING document::xml; -- verify
DEBUG: Verifying table "t"
ALTER TABLE t ALTER strarr TYPE varchar(4)[]; -- noop
- DEBUG: Rebuilding index "t_strarr_idx"
ALTER TABLE t ALTER strarr TYPE varchar(3)[]; -- rewrite-v
DEBUG: Rewriting table "t"
DEBUG: Rebuilding index "t_square_idx"
--- 2486,2491 ----
***************
*** 2487,2496 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
--- 2494,2504 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
***************
*** 2508,2517 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
--- 2516,2526 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
***************
*** 2525,2534 **** DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
--- 2534,2544 ----
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
***************
*** 2547,2556 **** DEBUG: Rebuilding index "t_touchy_f_idx"
DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_rational_key"
- DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_string_idx"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
--- 2557,2567 ----
DEBUG: Rebuilding index "t_expr_idx"
DEBUG: Rebuilding index "t_constraint4_key"
DEBUG: Rebuilding index "t_rational_key"
DEBUG: Rebuilding index "t_string_idx"
+ DEBUG: Rebuilding index "t_string_idx1"
DEBUG: Rebuilding index "t_daytimetz_key"
DEBUG: Rebuilding index "t_daytime_key"
+ DEBUG: Rebuilding index "t_stamptz_excl"
DEBUG: Rebuilding index "t_stamptz_key"
DEBUG: Rebuilding index "t_stamp_key"
DEBUG: Rebuilding index "t_timegap_key"
***************
*** 2563,2572 **** DEBUG: Rebuilding index "t_integral_key"
DEBUG: Rebuilding index "u1"
-- Data and catalog end state. We omit the columns that bear unstable OIDs.
SELECT * FROM t ORDER BY 1;
! constraint0 | constraint1 | constraint2 | constraint3 | constraint4 | integral | rational | string | daytimetz | daytime | stamptz | stamp | timegap | bits | network | document | strarr | square
! -------------+-------------+-------------+-------------+-------------+----------+----------+--------+------------+---------------+--------------------------------+----------------------------+------------+-------+-------------+----------------------+---------+---------------------------
! 1 | 2 | 3 | 1.05 | 1.06 | 4 | 10.1200 | fo | 08:44:00.2 | 08:44:00.3+00 | Sat Jan 01 01:44:00.4 2000 UTC | Sat Jan 01 15:44:00.5 2000 | @ 1.6 secs | 01110 | 10.0.0.0/16 | | {ab,cd} | ((0,0),(0,1),(1,1),(1,0))
! 2 | 3 | 4 | 1.15 | 1.16 | 5 | 11.1200 | fo | 09:44:00.2 | 09:44:00.3+00 | Sat Jan 01 02:44:00.4 2000 UTC | Sat Jan 01 16:44:00.5 2000 | @ 2.6 secs | 00110 | 10.1.0.0/16 | | {ef,gh} | ((0,0),(0,2),(2,2),(2,0))
(2 rows)
SELECT relname, relnamespace, relowner, relam, reltablespace, relhasindex,
--- 2574,2583 ----
DEBUG: Rebuilding index "u1"
-- Data and catalog end state. We omit the columns that bear unstable OIDs.
SELECT * FROM t ORDER BY 1;
! constraint0 | constraint1 | constraint2 | constraint3 | constraint4 | integral | rational | string | daytimetz | daytime | stamptz | stamp | timegap | bits | network | document | strarr | square
! -------------+-------------+-------------+-------------+-------------+----------+----------+--------+------------+---------------+----------------------------+--------------------------------+------------+-------+-------------+----------------------+---------+---------------------------
! 1 | 2 | 3 | 1.05 | 1.06 | 4 | 10.1200 | fo | 08:44:00.2 | 08:44:00.3+00 | Sat Jan 01 01:44:00.4 2000 | Sat Jan 01 15:44:00.5 2000 UTC | @ 1.6 secs | 01110 | 10.0.0.0/16 | | {ab,cd} | ((0,0),(0,1),(1,1),(1,0))
! 2 | 3 | 4 | 1.15 | 1.16 | 5 | 11.1200 | fo | 09:44:00.2 | 09:44:00.3+00 | Sat Jan 01 02:44:00.4 2000 | Sat Jan 01 16:44:00.5 2000 UTC | @ 2.6 secs | 00110 | 10.1.0.0/16 | | {ef,gh} | ((0,0),(0,2),(2,2),(2,0))
(2 rows)
SELECT relname, relnamespace, relowner, relam, reltablespace, relhasindex,
***************
*** 2578,2584 **** FROM pg_class WHERE oid = 't'::regclass
ORDER BY 1;
relname | relnamespace | relowner | relam | reltablespace | relhasindex | relisshared | relpersistence | relkind | relnatts | relchecks | relhasoids | relhaspkey | relhasexclusion | relhasrules | relhastriggers | relacl | reloptions
-------------------+--------------+----------+-------+---------------+-------------+-------------+----------------+---------+----------+-----------+------------+------------+-----------------+-------------+----------------+--------+------------
! t | 2200 | 10 | 0 | 0 | t | f | p | r | 18 | 1 | f | f | f | f | t | |
t_bits_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_constraint4_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_daytime_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
--- 2589,2595 ----
ORDER BY 1;
relname | relnamespace | relowner | relam | reltablespace | relhasindex | relisshared | relpersistence | relkind | relnatts | relchecks | relhasoids | relhaspkey | relhasexclusion | relhasrules | relhastriggers | relacl | reloptions
-------------------+--------------+----------+-------+---------------+-------------+-------------+----------------+---------+----------+-----------+------------+------------+-----------------+-------------+----------------+--------+------------
! t | 2200 | 10 | 0 | 0 | t | f | p | r | 18 | 1 | f | f | t | f | t | |
t_bits_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_constraint4_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_daytime_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
***************
*** 2589,2594 **** ORDER BY 1;
--- 2600,2606 ----
t_rational_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_square_idx | 2200 | 10 | 783 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_stamp_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
+ t_stamptz_excl | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | t | f | f | |
t_stamptz_key | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_strarr_idx | 2200 | 10 | 2742 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
t_string_idx | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
***************
*** 2597,2603 **** ORDER BY 1;
t_touchy_f_idx | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
u0 | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
u1 | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
! (19 rows)
SELECT relname, indnatts, indisunique, indisprimary, indimmediate,
indisclustered, indisvalid, indcheckxmin, indisready, indkey, indclass,
--- 2609,2615 ----
t_touchy_f_idx | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
u0 | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
u1 | 2200 | 10 | 403 | 0 | f | f | p | i | 1 | 0 | f | f | f | f | f | |
! (20 rows)
SELECT relname, indnatts, indisunique, indisprimary, indimmediate,
indisclustered, indisvalid, indcheckxmin, indisready, indkey, indclass,
***************
*** 2615,2622 **** WHERE indrelid = 't'::regclass ORDER BY 1;
t_network_key | 1 | t | f | t | f | t | f | t | 15 | 10025 | 0
t_rational_key | 1 | t | f | t | f | t | f | t | 7 | 10037 | 0
t_square_idx | 1 | f | f | t | f | t | f | t | 18 | 10076 | 0
! t_stamp_key | 1 | t | f | t | f | t | f | t | 12 | 10054 | 0
! t_stamptz_key | 1 | t | f | t | f | t | f | t | 11 | 10047 | 0
t_strarr_idx | 1 | f | f | t | f | t | f | t | 17 | 10079 | 0
t_string_idx | 1 | f | f | t | f | t | f | t | 8 | 10012 | 0
t_string_idx1 | 1 | f | f | t | f | t | f | t | 8 | 10013 | 0
--- 2627,2635 ----
t_network_key | 1 | t | f | t | f | t | f | t | 15 | 10025 | 0
t_rational_key | 1 | t | f | t | f | t | f | t | 7 | 10037 | 0
t_square_idx | 1 | f | f | t | f | t | f | t | 18 | 10076 | 0
! t_stamp_key | 1 | t | f | t | f | t | f | t | 12 | 10047 | 0
! t_stamptz_excl | 1 | f | f | t | f | t | f | t | 11 | 10054 | 0
! t_stamptz_key | 1 | t | f | t | f | t | f | t | 11 | 10054 | 0
t_strarr_idx | 1 | f | f | t | f | t | f | t | 17 | 10079 | 0
t_string_idx | 1 | f | f | t | f | t | f | t | 8 | 10012 | 0
t_string_idx1 | 1 | f | f | t | f | t | f | t | 8 | 10013 | 0
***************
*** 2624,2630 **** WHERE indrelid = 't'::regclass ORDER BY 1;
t_touchy_f_idx | 1 | t | f | t | f | t | f | t | 0 | 1978 | 0
u0 | 1 | t | f | t | f | t | f | t | 6 | 1978 | 0
u1 | 1 | t | f | t | f | t | f | t | 6 | 1978 | 0
! (18 rows)
SELECT relname, attname, atttypid, attstattarget, attlen, attnum, attndims,
attcacheoff, atttypmod, attbyval, attstorage, attalign, attnotnull,
--- 2637,2643 ----
t_touchy_f_idx | 1 | t | f | t | f | t | f | t | 0 | 1978 | 0
u0 | 1 | t | f | t | f | t | f | t | 6 | 1978 | 0
u1 | 1 | t | f | t | f | t | f | t | 6 | 1978 | 0
! (19 rows)
SELECT relname, attname, atttypid, attstattarget, attlen, attnum, attndims,
attcacheoff, atttypmod, attbyval, attstorage, attalign, attnotnull,
***************
*** 2651,2658 **** ORDER BY 1, 2;
t | network | 650 | -1 | -1 | 15 | 0 | -1 | -1 | f | m | i | t | f | f | t | 0 | |
t | rational | 1700 | -1 | -1 | 7 | 0 | -1 | -1 | f | m | i | t | f | f | t | 0 | |
t | square | 604 | -1 | -1 | 18 | 0 | -1 | -1 | f | x | d | t | f | f | t | 0 | |
! t | stamp | 1114 | -1 | 8 | 12 | 0 | -1 | -1 | t | p | d | t | f | f | t | 0 | |
! t | stamptz | 1184 | -1 | 8 | 11 | 0 | -1 | -1 | t | p | d | t | f | f | t | 0 | |
t | strarr | 1009 | -1 | -1 | 17 | 1 | -1 | -1 | f | x | i | t | f | f | t | 0 | |
t | string | 1042 | -1 | -1 | 8 | 0 | -1 | 8 | f | x | i | t | f | f | t | 0 | |
t | tableoid | 26 | 0 | 4 | -7 | 0 | -1 | -1 | t | p | i | t | f | f | t | 0 | |
--- 2664,2671 ----
t | network | 650 | -1 | -1 | 15 | 0 | -1 | -1 | f | m | i | t | f | f | t | 0 | |
t | rational | 1700 | -1 | -1 | 7 | 0 | -1 | -1 | f | m | i | t | f | f | t | 0 | |
t | square | 604 | -1 | -1 | 18 | 0 | -1 | -1 | f | x | d | t | f | f | t | 0 | |
! t | stamp | 1184 | -1 | 8 | 12 | 0 | -1 | -1 | t | p | d | t | f | f | t | 0 | |
! t | stamptz | 1114 | -1 | 8 | 11 | 0 | -1 | -1 | t | p | d | t | f | f | t | 0 | |
t | strarr | 1009 | -1 | -1 | 17 | 1 | -1 | -1 | f | x | i | t | f | f | t | 0 | |
t | string | 1042 | -1 | -1 | 8 | 0 | -1 | 8 | f | x | i | t | f | f | t | 0 | |
t | tableoid | 26 | 0 | 4 | -7 | 0 | -1 | -1 | t | p | i | t | f | f | t | 0 | |
***************
*** 2668,2675 **** ORDER BY 1, 2;
t_network_key | network | 650 | -1 | -1 | 1 | 0 | -1 | -1 | f | m | i | f | f | f | t | 0 | |
t_rational_key | rational | 1700 | -1 | -1 | 1 | 0 | -1 | -1 | f | m | i | f | f | f | t | 0 | |
t_square_idx | square | 603 | -1 | 32 | 1 | 0 | -1 | -1 | f | p | d | f | f | f | t | 0 | |
! t_stamp_key | stamp | 1114 | -1 | 8 | 1 | 0 | -1 | -1 | t | p | d | f | f | f | t | 0 | |
! t_stamptz_key | stamptz | 1184 | -1 | 8 | 1 | 0 | -1 | -1 | t | p | d | f | f | f | t | 0 | |
t_strarr_idx | strarr | 25 | -1 | -1 | 1 | 1 | -1 | -1 | f | x | i | f | f | f | t | 0 | |
t_string_idx | string | 1042 | -1 | -1 | 1 | 0 | -1 | 8 | f | x | i | f | f | f | t | 0 | |
t_string_idx1 | string | 23 | -1 | 4 | 1 | 0 | -1 | -1 | t | p | i | f | f | f | t | 0 | |
--- 2681,2689 ----
t_network_key | network | 650 | -1 | -1 | 1 | 0 | -1 | -1 | f | m | i | f | f | f | t | 0 | |
t_rational_key | rational | 1700 | -1 | -1 | 1 | 0 | -1 | -1 | f | m | i | f | f | f | t | 0 | |
t_square_idx | square | 603 | -1 | 32 | 1 | 0 | -1 | -1 | f | p | d | f | f | f | t | 0 | |
! t_stamp_key | stamp | 1184 | -1 | 8 | 1 | 0 | -1 | -1 | t | p | d | f | f | f | t | 0 | |
! t_stamptz_excl | stamptz | 1114 | -1 | 8 | 1 | 0 | -1 | -1 | t | p | d | f | f | f | t | 0 | |
! t_stamptz_key | stamptz | 1114 | -1 | 8 | 1 | 0 | -1 | -1 | t | p | d | f | f | f | t | 0 | |
t_strarr_idx | strarr | 25 | -1 | -1 | 1 | 1 | -1 | -1 | f | x | i | f | f | f | t | 0 | |
t_string_idx | string | 1042 | -1 | -1 | 1 | 0 | -1 | 8 | f | x | i | f | f | f | t | 0 | |
t_string_idx1 | string | 23 | -1 | 4 | 1 | 0 | -1 | -1 | t | p | i | f | f | f | t | 0 | |
***************
*** 2677,2683 **** ORDER BY 1, 2;
t_touchy_f_idx | touchy_f | 23 | -1 | 4 | 1 | 0 | -1 | -1 | t | p | i | f | f | f | t | 0 | |
u0 | integral | 23 | -1 | 4 | 1 | 0 | -1 | -1 | t | p | i | f | f | f | t | 0 | |
u1 | integral | 23 | -1 | 4 | 1 | 0 | -1 | -1 | t | p | i | f | f | f | t | 0 | |
! (42 rows)
SELECT conname, connamespace, contype, condeferrable, condeferred, confupdtype,
confdeltype, confmatchtype, conislocal, coninhcount, conkey, confkey,
--- 2691,2697 ----
t_touchy_f_idx | touchy_f | 23 | -1 | 4 | 1 | 0 | -1 | -1 | t | p | i | f | f | f | t | 0 | |
u0 | integral | 23 | -1 | 4 | 1 | 0 | -1 | -1 | t | p | i | f | f | f | t | 0 | |
u1 | integral | 23 | -1 | 4 | 1 | 0 | -1 | -1 | t | p | i | f | f | f | t | 0 | |
! (43 rows)
SELECT conname, connamespace, contype, condeferrable, condeferred, confupdtype,
confdeltype, confmatchtype, conislocal, coninhcount, conkey, confkey,
***************
*** 2696,2706 **** ORDER BY 1;
t_network_key | 2200 | u | f | f | | | | t | 0 | {15} | | | | | |
t_rational_key | 2200 | u | f | f | | | | t | 0 | {7} | | | | | |
t_stamp_key | 2200 | u | f | f | | | | t | 0 | {12} | | | | | |
t_stamptz_key | 2200 | u | f | f | | | | t | 0 | {11} | | | | | |
t_timegap_key | 2200 | u | f | f | | | | t | 0 | {13} | | | | | |
u0 | 2200 | u | f | f | | | | t | 0 | {6} | | | | | |
u1 | 2200 | u | f | f | | | | t | 0 | {6} | | | | | |
! (14 rows)
-- RI trigger names include the table OID. We don't have a great sort order
-- available, but tgname probably serves acceptably in practice.
--- 2710,2721 ----
t_network_key | 2200 | u | f | f | | | | t | 0 | {15} | | | | | |
t_rational_key | 2200 | u | f | f | | | | t | 0 | {7} | | | | | |
t_stamp_key | 2200 | u | f | f | | | | t | 0 | {12} | | | | | |
+ t_stamptz_excl | 2200 | x | f | f | | | | t | 0 | {11} | | | | | {2060} |
t_stamptz_key | 2200 | u | f | f | | | | t | 0 | {11} | | | | | |
t_timegap_key | 2200 | u | f | f | | | | t | 0 | {13} | | | | | |
u0 | 2200 | u | f | f | | | | t | 0 | {6} | | | | | |
u1 | 2200 | u | f | f | | | | t | 0 | {6} | | | | | |
! (15 rows)
-- RI trigger names include the table OID. We don't have a great sort order
-- available, but tgname probably serves acceptably in practice.
*** a/src/test/regress/sql/alter_table.sql
--- b/src/test/regress/sql/alter_table.sql
***************
*** 1141,1146 **** CREATE TABLE t (
--- 1141,1147 ----
strarr varchar(2)[] NOT NULL,
square box NOT NULL,
+ EXCLUDE (stamptz WITH =),
CHECK (touchy_f(constraint0) < 10)
);
CREATE INDEX ON t (string);
***************
*** 1307,1312 **** ALTER TABLE t ALTER stamptz TYPE timestamp; -- noop
--- 1308,1314 ----
SET timezone = 'Asia/Jakarta';
ALTER TABLE t ALTER stamptz TYPE timestamptz; -- rewrite
SET timezone = 'UTC';
+ ALTER TABLE t ALTER stamptz TYPE timestamp; -- noop
ALTER TABLE t ALTER stamp TYPE timestamp(3); -- rewrite-v
ALTER TABLE t ALTER stamp TYPE timestamp(1); -- rewrite
***************
*** 1315,1320 **** ALTER TABLE t ALTER stamp TYPE timestamptz; -- noop
--- 1317,1323 ----
SET timezone = 'Asia/Jakarta';
ALTER TABLE t ALTER stamp TYPE timestamp; -- rewrite
SET timezone = 'UTC';
+ ALTER TABLE t ALTER stamp TYPE timestamptz; -- noop
ALTER TABLE t ALTER timegap TYPE interval(3); -- rewrite-v
ALTER TABLE t ALTER timegap TYPE interval(1); -- rewrite