@@ -2566,6 +2566,74 @@ listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSys
2566
2566
}
2567
2567
2568
2568
2569
+ /*
2570
+ * \dL
2571
+ *
2572
+ * Describes languages.
2573
+ */
2574
+ bool
2575
+ listLanguages (const char * pattern , bool verbose , bool showSystem )
2576
+ {
2577
+ PQExpBufferData buf ;
2578
+ PGresult * res ;
2579
+ printQueryOpt myopt = pset .popt ;
2580
+
2581
+ initPQExpBuffer (& buf );
2582
+
2583
+ printfPQExpBuffer (& buf ,
2584
+ "SELECT l.lanname AS \"%s\",\n" ,
2585
+ gettext_noop ("Name" ));
2586
+ if (pset .sversion >= 80300 )
2587
+ appendPQExpBuffer (& buf ,
2588
+ " pg_catalog.pg_get_userbyid(l.lanowner) as \"%s\",\n" ,
2589
+ gettext_noop ("Owner" ));
2590
+
2591
+ appendPQExpBuffer (& buf ,
2592
+ " l.lanpltrusted AS \"%s\"" ,
2593
+ gettext_noop ("Trusted" ));
2594
+
2595
+ if (verbose )
2596
+ {
2597
+ appendPQExpBuffer (& buf ,
2598
+ ",\n NOT l.lanispl AS \"%s\",\n"
2599
+ " l.lanplcallfoid::regprocedure AS \"%s\",\n"
2600
+ " l.lanvalidator::regprocedure AS \"%s\",\n " ,
2601
+ gettext_noop ("Internal Language" ),
2602
+ gettext_noop ("Call Handler" ),
2603
+ gettext_noop ("Validator" ));
2604
+ if (pset .sversion >= 90000 )
2605
+ appendPQExpBuffer (& buf , "l.laninline::regprocedure AS \"%s\",\n " ,
2606
+ gettext_noop ("Inline Handler" ));
2607
+ printACLColumn (& buf , "l.lanacl" );
2608
+ }
2609
+
2610
+ appendPQExpBuffer (& buf ,
2611
+ "\nFROM pg_catalog.pg_language l\n" );
2612
+
2613
+ processSQLNamePattern (pset .db , & buf , pattern , false, false,
2614
+ NULL , "l.lanname" , NULL , NULL );
2615
+
2616
+ if (!showSystem && !pattern )
2617
+ appendPQExpBuffer (& buf , "WHERE lanplcallfoid != 0\n" );
2618
+
2619
+ appendPQExpBuffer (& buf , "ORDER BY 1;" );
2620
+
2621
+ res = PSQLexec (buf .data , false);
2622
+ termPQExpBuffer (& buf );
2623
+ if (!res )
2624
+ return false;
2625
+
2626
+ myopt .nullPrint = NULL ;
2627
+ myopt .title = _ ("List of languages" );
2628
+ myopt .translate_header = true;
2629
+
2630
+ printQuery (res , & myopt , pset .queryFout , pset .logfile );
2631
+
2632
+ PQclear (res );
2633
+ return true;
2634
+ }
2635
+
2636
+
2569
2637
/*
2570
2638
* \dD
2571
2639
*
0 commit comments