@@ -2550,136 +2550,124 @@ describeOneTableDetails(const char *schemaname,
2550
2550
PQclear (result );
2551
2551
}
2552
2552
2553
- /*
2554
- * Print foreign-key constraints (there are none if no triggers,
2555
- * except if the table is partitioned, in which case the triggers
2556
- * appear in the partitions)
2557
- */
2558
- if (tableinfo .hastriggers ||
2559
- tableinfo .relkind == RELKIND_PARTITIONED_TABLE )
2553
+ /* Print foreign-key constraints */
2554
+ if (pset .sversion >= 120000 &&
2555
+ (tableinfo .ispartition || tableinfo .relkind == RELKIND_PARTITIONED_TABLE ))
2560
2556
{
2561
- if (pset .sversion >= 120000 &&
2562
- (tableinfo .ispartition || tableinfo .relkind == RELKIND_PARTITIONED_TABLE ))
2563
- {
2564
- /*
2565
- * Put the constraints defined in this table first, followed
2566
- * by the constraints defined in ancestor partitioned tables.
2567
- */
2568
- printfPQExpBuffer (& buf ,
2569
- "SELECT conrelid = '%s'::pg_catalog.regclass AS sametable,\n"
2570
- " conname,\n"
2571
- " pg_catalog.pg_get_constraintdef(oid, true) AS condef,\n"
2572
- " conrelid::pg_catalog.regclass AS ontable\n"
2573
- " FROM pg_catalog.pg_constraint,\n"
2574
- " pg_catalog.pg_partition_ancestors('%s')\n"
2575
- " WHERE conrelid = relid AND contype = " CppAsString2 (CONSTRAINT_FOREIGN ) " AND conparentid = 0\n"
2576
- "ORDER BY sametable DESC, conname;" ,
2577
- oid , oid );
2578
- }
2579
- else
2580
- {
2581
- printfPQExpBuffer (& buf ,
2582
- "SELECT true as sametable, conname,\n"
2583
- " pg_catalog.pg_get_constraintdef(r.oid, true) as condef,\n"
2584
- " conrelid::pg_catalog.regclass AS ontable\n"
2585
- "FROM pg_catalog.pg_constraint r\n"
2586
- "WHERE r.conrelid = '%s' AND r.contype = " CppAsString2 (CONSTRAINT_FOREIGN ) "\n ",
2587
- oid );
2588
-
2589
- if (pset .sversion >= 120000 )
2590
- appendPQExpBufferStr (& buf , " AND conparentid = 0\n" );
2591
- appendPQExpBufferStr (& buf , "ORDER BY conname" );
2592
- }
2557
+ /*
2558
+ * Put the constraints defined in this table first, followed
2559
+ * by the constraints defined in ancestor partitioned tables.
2560
+ */
2561
+ printfPQExpBuffer (& buf ,
2562
+ "SELECT conrelid = '%s'::pg_catalog.regclass AS sametable,\n"
2563
+ " conname,\n"
2564
+ " pg_catalog.pg_get_constraintdef(oid, true) AS condef,\n"
2565
+ " conrelid::pg_catalog.regclass AS ontable\n"
2566
+ " FROM pg_catalog.pg_constraint,\n"
2567
+ " pg_catalog.pg_partition_ancestors('%s')\n"
2568
+ " WHERE conrelid = relid AND contype = " CppAsString2 (CONSTRAINT_FOREIGN ) " AND conparentid = 0\n"
2569
+ "ORDER BY sametable DESC, conname;" ,
2570
+ oid , oid );
2571
+ }
2572
+ else
2573
+ {
2574
+ printfPQExpBuffer (& buf ,
2575
+ "SELECT true as sametable, conname,\n"
2576
+ " pg_catalog.pg_get_constraintdef(r.oid, true) as condef,\n"
2577
+ " conrelid::pg_catalog.regclass AS ontable\n"
2578
+ "FROM pg_catalog.pg_constraint r\n"
2579
+ "WHERE r.conrelid = '%s' AND r.contype = " CppAsString2 (CONSTRAINT_FOREIGN ) "\n ",
2580
+ oid );
2593
2581
2594
- result = PSQLexec (buf .data );
2595
- if (!result )
2596
- goto error_return ;
2597
- else
2598
- tuples = PQntuples (result );
2582
+ if (pset .sversion >= 120000 )
2583
+ appendPQExpBufferStr (& buf , " AND conparentid = 0\n" );
2584
+ appendPQExpBufferStr (& buf , "ORDER BY conname" );
2585
+ }
2599
2586
2600
- if (tuples > 0 )
2601
- {
2602
- int i_sametable = PQfnumber (result , "sametable" ),
2603
- i_conname = PQfnumber (result , "conname" ),
2604
- i_condef = PQfnumber (result , "condef" ),
2605
- i_ontable = PQfnumber (result , "ontable" );
2587
+ result = PSQLexec (buf .data );
2588
+ if (!result )
2589
+ goto error_return ;
2590
+ else
2591
+ tuples = PQntuples (result );
2606
2592
2607
- printTableAddFooter (& cont , _ ("Foreign-key constraints:" ));
2608
- for (i = 0 ; i < tuples ; i ++ )
2609
- {
2610
- /*
2611
- * Print untranslated constraint name and definition. Use
2612
- * a "TABLE tab" prefix when the constraint is defined in
2613
- * a parent partitioned table.
2614
- */
2615
- if (strcmp (PQgetvalue (result , i , i_sametable ), "f" ) == 0 )
2616
- printfPQExpBuffer (& buf , " TABLE \"%s\" CONSTRAINT \"%s\" %s" ,
2617
- PQgetvalue (result , i , i_ontable ),
2618
- PQgetvalue (result , i , i_conname ),
2619
- PQgetvalue (result , i , i_condef ));
2620
- else
2621
- printfPQExpBuffer (& buf , " \"%s\" %s" ,
2622
- PQgetvalue (result , i , i_conname ),
2623
- PQgetvalue (result , i , i_condef ));
2593
+ if (tuples > 0 )
2594
+ {
2595
+ int i_sametable = PQfnumber (result , "sametable" ),
2596
+ i_conname = PQfnumber (result , "conname" ),
2597
+ i_condef = PQfnumber (result , "condef" ),
2598
+ i_ontable = PQfnumber (result , "ontable" );
2624
2599
2625
- printTableAddFooter (& cont , buf .data );
2626
- }
2600
+ printTableAddFooter (& cont , _ ("Foreign-key constraints:" ));
2601
+ for (i = 0 ; i < tuples ; i ++ )
2602
+ {
2603
+ /*
2604
+ * Print untranslated constraint name and definition. Use
2605
+ * a "TABLE tab" prefix when the constraint is defined in
2606
+ * a parent partitioned table.
2607
+ */
2608
+ if (strcmp (PQgetvalue (result , i , i_sametable ), "f" ) == 0 )
2609
+ printfPQExpBuffer (& buf , " TABLE \"%s\" CONSTRAINT \"%s\" %s" ,
2610
+ PQgetvalue (result , i , i_ontable ),
2611
+ PQgetvalue (result , i , i_conname ),
2612
+ PQgetvalue (result , i , i_condef ));
2613
+ else
2614
+ printfPQExpBuffer (& buf , " \"%s\" %s" ,
2615
+ PQgetvalue (result , i , i_conname ),
2616
+ PQgetvalue (result , i , i_condef ));
2617
+
2618
+ printTableAddFooter (& cont , buf .data );
2627
2619
}
2628
- PQclear (result );
2629
2620
}
2621
+ PQclear (result );
2630
2622
2631
2623
/* print incoming foreign-key references */
2632
- if (tableinfo .hastriggers ||
2633
- tableinfo .relkind == RELKIND_PARTITIONED_TABLE )
2624
+ if (pset .sversion >= 120000 )
2634
2625
{
2635
- if (pset .sversion >= 120000 )
2636
- {
2637
- printfPQExpBuffer (& buf ,
2638
- "SELECT conname, conrelid::pg_catalog.regclass AS ontable,\n"
2639
- " pg_catalog.pg_get_constraintdef(oid, true) AS condef\n"
2640
- " FROM pg_catalog.pg_constraint c\n"
2641
- " WHERE confrelid IN (SELECT pg_catalog.pg_partition_ancestors('%s')\n"
2642
- " UNION ALL VALUES ('%s'::pg_catalog.regclass))\n"
2643
- " AND contype = " CppAsString2 (CONSTRAINT_FOREIGN ) " AND conparentid = 0\n"
2644
- "ORDER BY conname;" ,
2645
- oid , oid );
2646
- }
2647
- else
2648
- {
2649
- printfPQExpBuffer (& buf ,
2650
- "SELECT conname, conrelid::pg_catalog.regclass AS ontable,\n"
2651
- " pg_catalog.pg_get_constraintdef(oid, true) AS condef\n"
2652
- " FROM pg_catalog.pg_constraint\n"
2653
- " WHERE confrelid = %s AND contype = " CppAsString2 (CONSTRAINT_FOREIGN ) "\n"
2654
- "ORDER BY conname;" ,
2655
- oid );
2656
- }
2626
+ printfPQExpBuffer (& buf ,
2627
+ "SELECT conname, conrelid::pg_catalog.regclass AS ontable,\n"
2628
+ " pg_catalog.pg_get_constraintdef(oid, true) AS condef\n"
2629
+ " FROM pg_catalog.pg_constraint c\n"
2630
+ " WHERE confrelid IN (SELECT pg_catalog.pg_partition_ancestors('%s')\n"
2631
+ " UNION ALL VALUES ('%s'::pg_catalog.regclass))\n"
2632
+ " AND contype = " CppAsString2 (CONSTRAINT_FOREIGN ) " AND conparentid = 0\n"
2633
+ "ORDER BY conname;" ,
2634
+ oid , oid );
2635
+ }
2636
+ else
2637
+ {
2638
+ printfPQExpBuffer (& buf ,
2639
+ "SELECT conname, conrelid::pg_catalog.regclass AS ontable,\n"
2640
+ " pg_catalog.pg_get_constraintdef(oid, true) AS condef\n"
2641
+ " FROM pg_catalog.pg_constraint\n"
2642
+ " WHERE confrelid = %s AND contype = " CppAsString2 (CONSTRAINT_FOREIGN ) "\n"
2643
+ "ORDER BY conname;" ,
2644
+ oid );
2645
+ }
2657
2646
2658
- result = PSQLexec (buf .data );
2659
- if (!result )
2660
- goto error_return ;
2661
- else
2662
- tuples = PQntuples (result );
2647
+ result = PSQLexec (buf .data );
2648
+ if (!result )
2649
+ goto error_return ;
2650
+ else
2651
+ tuples = PQntuples (result );
2663
2652
2664
- if (tuples > 0 )
2665
- {
2666
- int i_conname = PQfnumber (result , "conname" ),
2667
- i_ontable = PQfnumber (result , "ontable" ),
2668
- i_condef = PQfnumber (result , "condef" );
2653
+ if (tuples > 0 )
2654
+ {
2655
+ int i_conname = PQfnumber (result , "conname" ),
2656
+ i_ontable = PQfnumber (result , "ontable" ),
2657
+ i_condef = PQfnumber (result , "condef" );
2669
2658
2670
- printTableAddFooter (& cont , _ ("Referenced by:" ));
2671
- for (i = 0 ; i < tuples ; i ++ )
2672
- {
2673
- printfPQExpBuffer (& buf , " TABLE \"%s\" CONSTRAINT \"%s\" %s" ,
2674
- PQgetvalue (result , i , i_ontable ),
2675
- PQgetvalue (result , i , i_conname ),
2676
- PQgetvalue (result , i , i_condef ));
2659
+ printTableAddFooter (& cont , _ ("Referenced by:" ));
2660
+ for (i = 0 ; i < tuples ; i ++ )
2661
+ {
2662
+ printfPQExpBuffer (& buf , " TABLE \"%s\" CONSTRAINT \"%s\" %s" ,
2663
+ PQgetvalue (result , i , i_ontable ),
2664
+ PQgetvalue (result , i , i_conname ),
2665
+ PQgetvalue (result , i , i_condef ));
2677
2666
2678
- printTableAddFooter (& cont , buf .data );
2679
- }
2667
+ printTableAddFooter (& cont , buf .data );
2680
2668
}
2681
- PQclear (result );
2682
2669
}
2670
+ PQclear (result );
2683
2671
2684
2672
/* print any row-level policies */
2685
2673
if (pset .sversion >= 90500 )
0 commit comments