Author: cito
Date: Tue Jan 12 11:33:00 2016
New Revision: 726

Log:
Use query parameter again

Modified:
   branches/4.x/pg.py
   trunk/pg.py

Modified: branches/4.x/pg.py
==============================================================================
--- branches/4.x/pg.py  Tue Jan 12 10:32:32 2016        (r725)
+++ branches/4.x/pg.py  Tue Jan 12 11:33:00 2016        (r726)
@@ -423,16 +423,16 @@
             schemas = self.db.query(q).getresult()[0][0][1:-1].split(',')
             if schemas:  # non-empty path
                 # search schema for this object in the current search path
+                # (we could also use unnest with ordinality here to spare
+                # one query, but this is only possible since PostgreSQL 9.4)
                 q = ' UNION '.join(
                     ["SELECT %d::integer AS n, '%s'::name AS nspname"
                         % s for s in enumerate(schemas)])
-                q = ("SELECT nspname FROM pg_class"
-                    " JOIN pg_namespace"
-                    " ON pg_class.relnamespace = pg_namespace.oid"
+                q = ("SELECT nspname FROM pg_class r"
+                    " JOIN pg_namespace s ON r.relnamespace = s.oid"
                     " JOIN (%s) AS p USING (nspname)"
-                    " WHERE pg_class.relname = '%s'"
-                    " ORDER BY n LIMIT 1" % (q, cl))
-                schema = self.db.query(q).getresult()
+                    " WHERE r.relname = $1 ORDER BY n LIMIT 1" % q)
+                schema = self.db.query(q, (cl,)).getresult()
                 if schema:  # schema found
                     schema = schema[0][0]
                 else:  # object not found in current search path

Modified: trunk/pg.py
==============================================================================
--- trunk/pg.py Tue Jan 12 10:32:32 2016        (r725)
+++ trunk/pg.py Tue Jan 12 11:33:00 2016        (r726)
@@ -435,16 +435,16 @@
             schemas = self.db.query(q).getresult()[0][0][1:-1].split(',')
             if schemas:  # non-empty path
                 # search schema for this object in the current search path
+                # (we could also use unnest with ordinality here to spare
+                # one query, but this is only possible since PostgreSQL 9.4)
                 q = ' UNION '.join(
                     ["SELECT %d::integer AS n, '%s'::name AS nspname"
                         % s for s in enumerate(schemas)])
-                q = ("SELECT nspname FROM pg_class"
-                    " JOIN pg_namespace"
-                    " ON pg_class.relnamespace = pg_namespace.oid"
+                q = ("SELECT nspname FROM pg_class r"
+                    " JOIN pg_namespace s ON r.relnamespace = s.oid"
                     " JOIN (%s) AS p USING (nspname)"
-                    " WHERE pg_class.relname = '%s'"
-                    " ORDER BY n LIMIT 1" % (q, cl))
-                schema = self.db.query(q).getresult()
+                    " WHERE r.relname = $1 ORDER BY n LIMIT 1" % q)
+                schema = self.db.query(q, (cl,)).getresult()
                 if schema:  # schema found
                     schema = schema[0][0]
                 else:  # object not found in current search path
_______________________________________________
PyGreSQL mailing list
[email protected]
https://mail.vex.net/mailman/listinfo.cgi/pygresql

Reply via email to