]> granicus.if.org Git - postgresql/commitdiff
Add regression test to prevent future breakage of legacy query in libpq.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 12 Jun 2014 19:54:13 +0000 (15:54 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 12 Jun 2014 19:54:21 +0000 (15:54 -0400)
Memorialize the expected output of the query that libpq has been using for
many years to get the OIDs of large-object support functions.  Although
we really ought to change the way libpq does this, we must expect that
this query will remain in use in the field for the foreseeable future,
so until we're ready to break compatibility with old libpq versions
we'd better check the results stay the same.  See the recent lo_create()
fiasco.

src/test/regress/expected/opr_sanity.out
src/test/regress/sql/opr_sanity.sql

index 8c2443d6b3e92db74276fb1480644e516c780d11..c8d8ffd7bac72623942edb03020a2630dcb56026 100644 (file)
@@ -638,6 +638,46 @@ uuid_gt(uuid,uuid)
 uuid_ne(uuid,uuid)
 -- restore normal output mode
 \a\t
+-- List of functions used by libpq's fe-lobj.c
+--
+-- If the output of this query changes, you probably broke libpq.
+-- lo_initialize() assumes that there will be at most one match for
+-- each listed name.
+select proname, oid from pg_catalog.pg_proc
+where proname in (
+  'lo_open',
+  'lo_close',
+  'lo_creat',
+  'lo_create',
+  'lo_unlink',
+  'lo_lseek',
+  'lo_lseek64',
+  'lo_tell',
+  'lo_tell64',
+  'lo_truncate',
+  'lo_truncate64',
+  'loread',
+  'lowrite')
+and pronamespace = (select oid from pg_catalog.pg_namespace
+                    where nspname = 'pg_catalog')
+order by 1;
+    proname    | oid  
+---------------+------
+ lo_close      |  953
+ lo_creat      |  957
+ lo_create     |  715
+ lo_lseek      |  956
+ lo_lseek64    | 3170
+ lo_open       |  952
+ lo_tell       |  958
+ lo_tell64     | 3171
+ lo_truncate   | 1004
+ lo_truncate64 | 3172
+ lo_unlink     |  964
+ loread        |  954
+ lowrite       |  955
+(13 rows)
+
 -- **************** pg_cast ****************
 -- Catch bogus values in pg_cast columns (other than cases detected by
 -- oidjoins test).
index de26af0d5a8ee4c4ef7772a621f8b2ad48cf30a2..213a66d4a31e101f8e878e35343394204b4521be 100644 (file)
@@ -317,6 +317,30 @@ ORDER BY 1;
 -- restore normal output mode
 \a\t
 
+-- List of functions used by libpq's fe-lobj.c
+--
+-- If the output of this query changes, you probably broke libpq.
+-- lo_initialize() assumes that there will be at most one match for
+-- each listed name.
+select proname, oid from pg_catalog.pg_proc
+where proname in (
+  'lo_open',
+  'lo_close',
+  'lo_creat',
+  'lo_create',
+  'lo_unlink',
+  'lo_lseek',
+  'lo_lseek64',
+  'lo_tell',
+  'lo_tell64',
+  'lo_truncate',
+  'lo_truncate64',
+  'loread',
+  'lowrite')
+and pronamespace = (select oid from pg_catalog.pg_namespace
+                    where nspname = 'pg_catalog')
+order by 1;
+
 
 -- **************** pg_cast ****************