@@ -548,33 +548,42 @@ int EXTRACT_list_table(const SCHAR* relation_name,
548
548
** rdb$check_constraints. We hope we get at most one row back.
549
549
*/
550
550
551
- if (RFR.RDB$NULL_FLAG == 1)
552
- {
553
- FOR RCO IN RDB$RELATION_CONSTRAINTS CROSS
554
- CON IN RDB$CHECK_CONSTRAINTS WITH
555
- CON.RDB$TRIGGER_NAME = RFR.RDB$FIELD_NAME AND
556
- CON.RDB$CONSTRAINT_NAME = RCO.RDB$CONSTRAINT_NAME AND
557
- RCO.RDB$CONSTRAINT_TYPE EQ "NOT NULL" AND
558
- RCO.RDB$RELATION_NAME = RFR.RDB$RELATION_NAME
551
+ bool found = false;
552
+
553
+ FOR RCO IN RDB$RELATION_CONSTRAINTS CROSS
554
+ CON IN RDB$CHECK_CONSTRAINTS WITH
555
+ CON.RDB$TRIGGER_NAME = RFR.RDB$FIELD_NAME AND
556
+ CON.RDB$CONSTRAINT_NAME = RCO.RDB$CONSTRAINT_NAME AND
557
+ RCO.RDB$CONSTRAINT_TYPE EQ "NOT NULL" AND
558
+ RCO.RDB$RELATION_NAME = RFR.RDB$RELATION_NAME
559
559
560
- if (!fb_utils::implicit_integrity(CON.RDB$CONSTRAINT_NAME))
560
+ if (!fb_utils::implicit_integrity(CON.RDB$CONSTRAINT_NAME))
561
+ {
562
+ fb_utils::exact_name(CON.RDB$CONSTRAINT_NAME);
563
+ if (isqlGlob.db_SQL_dialect > SQL_DIALECT_V6_TRANSITION)
561
564
{
562
- fb_utils::exact_name(CON.RDB$CONSTRAINT_NAME);
563
- if (isqlGlob.db_SQL_dialect > SQL_DIALECT_V6_TRANSITION)
564
- {
565
- IUTILS_copy_SQL_id (CON.RDB$CONSTRAINT_NAME, SQL_identifier, DBL_QUOTE);
566
- isqlGlob.printf(" CONSTRAINT %s", SQL_identifier);
567
- }
568
- else
569
- isqlGlob.printf(" CONSTRAINT %s", CON.RDB$CONSTRAINT_NAME);
565
+ IUTILS_copy_SQL_id (CON.RDB$CONSTRAINT_NAME, SQL_identifier, DBL_QUOTE);
566
+ isqlGlob.printf(" CONSTRAINT %s", SQL_identifier);
570
567
}
571
- END_FOR
572
- ON_ERROR
573
- ISQL_errmsg (fbStatus);
574
- return FINI_ERROR;
575
- END_ERROR;
568
+ else
569
+ isqlGlob.printf(" CONSTRAINT %s", CON.RDB$CONSTRAINT_NAME);
570
+ }
571
+ found = true;
576
572
573
+ END_FOR
574
+ ON_ERROR
575
+ ISQL_errmsg (fbStatus);
576
+ return FINI_ERROR;
577
+ END_ERROR;
578
+
579
+ if (found)
580
+ {
577
581
isqlGlob.printf(" NOT NULL");
582
+
583
+ if (RFR.RDB$NULL_FLAG == 0)
584
+ {
585
+ isqlGlob.printf(" NOT ENFORCED");
586
+ }
578
587
}
579
588
580
589
// Handle collations after defaults
@@ -681,6 +690,11 @@ static bool extract_rel_constraints(const char* relation_name)
681
690
isqlGlob.printf(" %s", IDX.RDB$INDEX_NAME);
682
691
}
683
692
693
+ if (IDX.RDB$INDEX_INACTIVE == 1)
694
+ {
695
+ isqlGlob.printf(" NOT ENFORCED");
696
+ }
697
+
684
698
END_FOR
685
699
ON_ERROR
686
700
ISQL_errmsg(fbStatus);
@@ -1926,6 +1940,11 @@ static void list_check()
1926
1940
if (!TRG.RDB$TRIGGER_SOURCE.NULL)
1927
1941
SHOW_print_metadata_text_blob (isqlGlob.Out, &TRG.RDB$TRIGGER_SOURCE);
1928
1942
1943
+ if (TRG.RDB$TRIGGER_INACTIVE == 1)
1944
+ {
1945
+ isqlGlob.printf(" NOT ENFORCED");
1946
+ }
1947
+
1929
1948
isqlGlob.printf("%s%s", isqlGlob.global_Term, NEWLINE);
1930
1949
1931
1950
END_FOR
@@ -2828,12 +2847,14 @@ static void list_foreign()
2828
2847
2829
2848
FOR RELC1 IN RDB$RELATION_CONSTRAINTS CROSS
2830
2849
RELC2 IN RDB$RELATION_CONSTRAINTS CROSS
2831
- REFC IN RDB$REF_CONSTRAINTS WITH
2850
+ REFC IN RDB$REF_CONSTRAINTS CROSS
2851
+ IDX IN RDB$INDICES WITH
2832
2852
RELC1.RDB$CONSTRAINT_TYPE EQ "FOREIGN KEY" AND
2833
2853
REFC.RDB$CONST_NAME_UQ EQ RELC2.RDB$CONSTRAINT_NAME AND
2834
2854
REFC.RDB$CONSTRAINT_NAME EQ RELC1.RDB$CONSTRAINT_NAME AND
2835
2855
(RELC2.RDB$CONSTRAINT_TYPE EQ "UNIQUE" OR
2836
- RELC2.RDB$CONSTRAINT_TYPE EQ "PRIMARY KEY")
2856
+ RELC2.RDB$CONSTRAINT_TYPE EQ "PRIMARY KEY") AND
2857
+ IDX.RDB$INDEX_NAME = RELC1.RDB$INDEX_NAME
2837
2858
SORTED BY RELC1.RDB$RELATION_NAME, RELC1.RDB$CONSTRAINT_NAME
2838
2859
2839
2860
fb_utils::exact_name(RELC1.RDB$RELATION_NAME);
@@ -2893,6 +2914,9 @@ static void list_foreign()
2893
2914
ISQL_ri_action_print (REFC.RDB$DELETE_RULE, " ON DELETE", true);
2894
2915
}
2895
2916
2917
+ if (IDX.RDB$INDEX_INACTIVE == 1)
2918
+ isqlGlob.printf(" NOT ENFORCED");
2919
+
2896
2920
isqlGlob.printf("%s%s", isqlGlob.global_Term, NEWLINE);
2897
2921
2898
2922
END_FOR
0 commit comments