@@ -5356,7 +5356,7 @@ void AlterDomainNode::modifyLocalFieldIndex(thread_db* tdbb, jrd_tra* transactio
53565356 const QualifiedName& relationName, const MetaName& fieldName, const MetaName& newFieldName,
53575357 ModifyIndexList& indexList)
53585358{
5359- AutoRequest request, rq2 ;
5359+ AutoRequest request;
53605360
53615361 FOR(REQUEST_HANDLE request TRANSACTION_HANDLE transaction)
53625362 IDX IN RDB$INDICES
@@ -5378,60 +5378,142 @@ void AlterDomainNode::modifyLocalFieldIndex(thread_db* tdbb, jrd_tra* transactio
53785378 node->drop(tdbb, nullptr, transaction, indexList, false); // keep segments
53795379 auto* rel = node->getRelation();
53805380
5381+ AutoRequest request2;
5382+
53815383 // Add record for new index
5382- STORE(REQUEST_HANDLE rq2 TRANSACTION_HANDLE transaction)
5384+ STORE(REQUEST_HANDLE request2 TRANSACTION_HANDLE transaction)
53835385 INEW IN RDB$INDICES
53845386 {
53855387 INEW.RDB$INDEX_ID.NULL = TRUE;
53865388 INEW.RDB$FORMAT.NULL = TRUE; // Leave it till DFW_update_index()
53875389
5388- if (IDX.RDB$INDEX_NAME.NULL) INEW.RDB$INDEX_NAME.NULL = TRUE;
5389- else {INEW.RDB$INDEX_NAME.NULL = FALSE; strcpy(INEW.RDB$INDEX_NAME, IDX.RDB$INDEX_NAME);};
5390-
5391- if (IDX.RDB$RELATION_NAME.NULL) INEW.RDB$RELATION_NAME.NULL = TRUE;
5392- else {INEW.RDB$RELATION_NAME.NULL = FALSE; strcpy(INEW.RDB$RELATION_NAME, IDX.RDB$RELATION_NAME);};
5393-
5394- if (IDX.RDB$UNIQUE_FLAG.NULL) INEW.RDB$UNIQUE_FLAG.NULL = TRUE;
5395- else {INEW.RDB$UNIQUE_FLAG.NULL = FALSE; INEW.RDB$UNIQUE_FLAG = IDX.RDB$UNIQUE_FLAG;};
5396-
5397- if (IDX.RDB$DESCRIPTION.NULL) INEW.RDB$DESCRIPTION.NULL = TRUE;
5398- else {INEW.RDB$DESCRIPTION.NULL = FALSE; INEW.RDB$DESCRIPTION = IDX.RDB$DESCRIPTION;};
5399-
5400- if (IDX.RDB$SEGMENT_COUNT.NULL) INEW.RDB$SEGMENT_COUNT.NULL = TRUE;
5401- else {INEW.RDB$SEGMENT_COUNT.NULL = FALSE; INEW.RDB$SEGMENT_COUNT = IDX.RDB$SEGMENT_COUNT;};
5402-
5403- if (IDX.RDB$INDEX_INACTIVE.NULL) INEW.RDB$INDEX_INACTIVE.NULL = TRUE;
5404- else {INEW.RDB$INDEX_INACTIVE.NULL = FALSE; INEW.RDB$INDEX_INACTIVE = IDX.RDB$INDEX_INACTIVE;};
5405-
5406- if (IDX.RDB$INDEX_TYPE.NULL) INEW.RDB$INDEX_TYPE.NULL = TRUE;
5407- else {INEW.RDB$INDEX_TYPE.NULL = FALSE; INEW.RDB$INDEX_TYPE = IDX.RDB$INDEX_TYPE;};
5408-
5409- if (IDX.RDB$FOREIGN_KEY.NULL) INEW.RDB$FOREIGN_KEY.NULL = TRUE;
5410- else {INEW.RDB$FOREIGN_KEY.NULL = FALSE; strcpy(INEW.RDB$FOREIGN_KEY, IDX.RDB$FOREIGN_KEY);};
5411-
5412- if (IDX.RDB$SYSTEM_FLAG.NULL) INEW.RDB$SYSTEM_FLAG.NULL = TRUE;
5413- else {INEW.RDB$SYSTEM_FLAG.NULL = FALSE; INEW.RDB$SYSTEM_FLAG = IDX.RDB$SYSTEM_FLAG;};
5414-
5415- if (IDX.RDB$EXPRESSION_BLR.NULL) INEW.RDB$EXPRESSION_BLR.NULL = TRUE;
5416- else {INEW.RDB$EXPRESSION_BLR.NULL = FALSE; INEW.RDB$EXPRESSION_BLR = IDX.RDB$EXPRESSION_BLR;};
5417-
5418- if (IDX.RDB$EXPRESSION_SOURCE.NULL) INEW.RDB$EXPRESSION_SOURCE.NULL = TRUE;
5419- else {INEW.RDB$EXPRESSION_SOURCE.NULL = FALSE; INEW.RDB$EXPRESSION_SOURCE = IDX.RDB$EXPRESSION_SOURCE;};
5420-
5421- if (IDX.RDB$STATISTICS.NULL) INEW.RDB$STATISTICS.NULL = TRUE;
5422- else {INEW.RDB$STATISTICS.NULL = FALSE; INEW.RDB$STATISTICS = IDX.RDB$STATISTICS;};
5423-
5424- if (IDX.RDB$CONDITION_BLR.NULL) INEW.RDB$CONDITION_BLR.NULL = TRUE;
5425- else {INEW.RDB$CONDITION_BLR.NULL = FALSE; INEW.RDB$CONDITION_BLR = IDX.RDB$CONDITION_BLR;};
5426-
5427- if (IDX.RDB$CONDITION_SOURCE.NULL) INEW.RDB$CONDITION_SOURCE.NULL = TRUE;
5428- else {INEW.RDB$CONDITION_SOURCE.NULL = FALSE; INEW.RDB$CONDITION_SOURCE = IDX.RDB$CONDITION_SOURCE;};
5429-
5430- if (IDX.RDB$SCHEMA_NAME.NULL) INEW.RDB$SCHEMA_NAME.NULL = TRUE;
5431- else {INEW.RDB$SCHEMA_NAME.NULL = FALSE; strcpy(INEW.RDB$SCHEMA_NAME, IDX.RDB$SCHEMA_NAME);};
5432-
5433- if (IDX.RDB$FOREIGN_KEY_SCHEMA_NAME.NULL) INEW.RDB$FOREIGN_KEY_SCHEMA_NAME.NULL = TRUE;
5434- else {INEW.RDB$FOREIGN_KEY_SCHEMA_NAME.NULL = FALSE; strcpy(INEW.RDB$FOREIGN_KEY_SCHEMA_NAME, IDX.RDB$FOREIGN_KEY_SCHEMA_NAME);};
5390+ if (IDX.RDB$INDEX_NAME.NULL)
5391+ INEW.RDB$INDEX_NAME.NULL = TRUE;
5392+ else
5393+ {
5394+ INEW.RDB$INDEX_NAME.NULL = FALSE;
5395+ strcpy(INEW.RDB$INDEX_NAME, IDX.RDB$INDEX_NAME);
5396+ }
5397+
5398+ if (IDX.RDB$RELATION_NAME.NULL)
5399+ INEW.RDB$RELATION_NAME.NULL = TRUE;
5400+ else
5401+ {
5402+ INEW.RDB$RELATION_NAME.NULL = FALSE;
5403+ strcpy(INEW.RDB$RELATION_NAME, IDX.RDB$RELATION_NAME);
5404+ }
5405+
5406+ if (IDX.RDB$UNIQUE_FLAG.NULL)
5407+ INEW.RDB$UNIQUE_FLAG.NULL = TRUE;
5408+ else
5409+ {
5410+ INEW.RDB$UNIQUE_FLAG.NULL = FALSE;
5411+ INEW.RDB$UNIQUE_FLAG = IDX.RDB$UNIQUE_FLAG;
5412+ }
5413+
5414+ if (IDX.RDB$DESCRIPTION.NULL)
5415+ INEW.RDB$DESCRIPTION.NULL = TRUE;
5416+ else
5417+ {
5418+ INEW.RDB$DESCRIPTION.NULL = FALSE;
5419+ INEW.RDB$DESCRIPTION = IDX.RDB$DESCRIPTION;
5420+ }
5421+
5422+ if (IDX.RDB$SEGMENT_COUNT.NULL)
5423+ INEW.RDB$SEGMENT_COUNT.NULL = TRUE;
5424+ else
5425+ {
5426+ INEW.RDB$SEGMENT_COUNT.NULL = FALSE;
5427+ INEW.RDB$SEGMENT_COUNT = IDX.RDB$SEGMENT_COUNT;
5428+ }
5429+
5430+ if (IDX.RDB$INDEX_INACTIVE.NULL)
5431+ INEW.RDB$INDEX_INACTIVE.NULL = TRUE;
5432+ else
5433+ {
5434+ INEW.RDB$INDEX_INACTIVE.NULL = FALSE;
5435+ INEW.RDB$INDEX_INACTIVE = IDX.RDB$INDEX_INACTIVE;
5436+ }
5437+
5438+ if (IDX.RDB$INDEX_TYPE.NULL)
5439+ INEW.RDB$INDEX_TYPE.NULL = TRUE;
5440+ else
5441+ {
5442+ INEW.RDB$INDEX_TYPE.NULL = FALSE;
5443+ INEW.RDB$INDEX_TYPE = IDX.RDB$INDEX_TYPE;
5444+ }
5445+
5446+ if (IDX.RDB$FOREIGN_KEY.NULL)
5447+ INEW.RDB$FOREIGN_KEY.NULL = TRUE;
5448+ else
5449+ {
5450+ INEW.RDB$FOREIGN_KEY.NULL = FALSE;
5451+ strcpy(INEW.RDB$FOREIGN_KEY, IDX.RDB$FOREIGN_KEY);
5452+ }
5453+
5454+ if (IDX.RDB$SYSTEM_FLAG.NULL)
5455+ INEW.RDB$SYSTEM_FLAG.NULL = TRUE;
5456+ else
5457+ {
5458+ INEW.RDB$SYSTEM_FLAG.NULL = FALSE;
5459+ INEW.RDB$SYSTEM_FLAG = IDX.RDB$SYSTEM_FLAG;
5460+ }
5461+
5462+ if (IDX.RDB$EXPRESSION_BLR.NULL)
5463+ INEW.RDB$EXPRESSION_BLR.NULL = TRUE;
5464+ else
5465+ {
5466+ INEW.RDB$EXPRESSION_BLR.NULL = FALSE;
5467+ INEW.RDB$EXPRESSION_BLR = IDX.RDB$EXPRESSION_BLR;
5468+ }
5469+
5470+ if (IDX.RDB$EXPRESSION_SOURCE.NULL)
5471+ INEW.RDB$EXPRESSION_SOURCE.NULL = TRUE;
5472+ else
5473+ {
5474+ INEW.RDB$EXPRESSION_SOURCE.NULL = FALSE;
5475+ INEW.RDB$EXPRESSION_SOURCE = IDX.RDB$EXPRESSION_SOURCE;
5476+ }
5477+
5478+ if (IDX.RDB$STATISTICS.NULL)
5479+ INEW.RDB$STATISTICS.NULL = TRUE;
5480+ else
5481+ {
5482+ INEW.RDB$STATISTICS.NULL = FALSE;
5483+ INEW.RDB$STATISTICS = IDX.RDB$STATISTICS;
5484+ }
5485+
5486+ if (IDX.RDB$CONDITION_BLR.NULL)
5487+ INEW.RDB$CONDITION_BLR.NULL = TRUE;
5488+ else
5489+ {
5490+ INEW.RDB$CONDITION_BLR.NULL = FALSE;
5491+ INEW.RDB$CONDITION_BLR = IDX.RDB$CONDITION_BLR;
5492+ }
5493+
5494+ if (IDX.RDB$CONDITION_SOURCE.NULL)
5495+ INEW.RDB$CONDITION_SOURCE.NULL = TRUE;
5496+ else
5497+ {
5498+ INEW.RDB$CONDITION_SOURCE.NULL = FALSE;
5499+ INEW.RDB$CONDITION_SOURCE = IDX.RDB$CONDITION_SOURCE;
5500+ }
5501+
5502+ if (IDX.RDB$SCHEMA_NAME.NULL)
5503+ INEW.RDB$SCHEMA_NAME.NULL = TRUE;
5504+ else
5505+ {
5506+ INEW.RDB$SCHEMA_NAME.NULL = FALSE;
5507+ strcpy(INEW.RDB$SCHEMA_NAME, IDX.RDB$SCHEMA_NAME);
5508+ }
5509+
5510+ if (IDX.RDB$FOREIGN_KEY_SCHEMA_NAME.NULL)
5511+ INEW.RDB$FOREIGN_KEY_SCHEMA_NAME.NULL = TRUE;
5512+ else
5513+ {
5514+ INEW.RDB$FOREIGN_KEY_SCHEMA_NAME.NULL = FALSE;
5515+ strcpy(INEW.RDB$FOREIGN_KEY_SCHEMA_NAME, IDX.RDB$FOREIGN_KEY_SCHEMA_NAME);
5516+ }
54355517 }
54365518 END_STORE
54375519
0 commit comments