MCPcopy Index your code
hub / github.com/dbcli/pgcli / casing

Method casing

pgcli/pgexecute.py:838–885  ·  view source on GitHub ↗

Yields the most common casing for names used in db functions

(self)

Source from the content-addressed store, hash-verified

836 yield from cur
837
838 def casing(self):
839 """Yields the most common casing for names used in db functions"""
840 with self.conn.cursor() as cur:
841 query = r"""
842 WITH Words AS (
843 SELECT regexp_split_to_table(prosrc, '\W+') AS Word, COUNT(1)
844 FROM pg_catalog.pg_proc P
845 JOIN pg_catalog.pg_namespace N ON N.oid = P.pronamespace
846 JOIN pg_catalog.pg_language L ON L.oid = P.prolang
847 WHERE L.lanname IN ('sql', 'plpgsql')
848 AND N.nspname NOT IN ('pg_catalog', 'information_schema')
849 GROUP BY Word
850 ),
851 OrderWords AS (
852 SELECT Word,
853 ROW_NUMBER() OVER(PARTITION BY LOWER(Word) ORDER BY Count DESC)
854 FROM Words
855 WHERE Word ~* '.*[a-z].*'
856 ),
857 Names AS (
858 --Column names
859 SELECT attname AS Name
860 FROM pg_catalog.pg_attribute
861 UNION -- Table/view names
862 SELECT relname
863 FROM pg_catalog.pg_class
864 UNION -- Function names
865 SELECT proname
866 FROM pg_catalog.pg_proc
867 UNION -- Type names
868 SELECT typname
869 FROM pg_catalog.pg_type
870 UNION -- Schema names
871 SELECT nspname
872 FROM pg_catalog.pg_namespace
873 UNION -- Parameter names
874 SELECT unnest(proargnames)
875 FROM pg_proc
876 )
877 SELECT Word
878 FROM OrderWords
879 WHERE LOWER(Word) IN (SELECT Name FROM Names)
880 AND Row_Number = 1;
881 """
882 _logger.debug("Casing Query. sql: %r", query)
883 cur.execute(query)
884 for row in cur:
885 yield row[0]
886
887 def explain_prefix(self):
888 return "EXPLAIN (ANALYZE, COSTS, VERBOSE, BUFFERS, FORMAT JSON) "

Callers 1

refresh_casingFunction · 0.80

Calls 1

executeMethod · 0.45

Tested by

no test coverage detected