|
60 | 60 | CREATE OR REPLACE FUNCTION pg_version() |
61 | 61 | RETURNS text AS 'SELECT current_setting(''server_version'')' |
62 | 62 | LANGUAGE SQL IMMUTABLE; |
63 | | -@@ -250,21 +303,6 @@ |
| 63 | +@@ -16,7 +69,12 @@ |
| 64 | + |
| 65 | + CREATE OR REPLACE FUNCTION pg_version_num() |
| 66 | + RETURNS integer AS $$ |
| 67 | +- SELECT current_setting('server_version_num')::integer; |
| 68 | ++ SELECT substring(s.a[1] FROM '[[:digit:]]+')::int * 10000 |
| 69 | ++ + COALESCE(substring(s.a[2] FROM '[[:digit:]]+')::int, 0) * 100 |
| 70 | ++ + COALESCE(substring(s.a[3] FROM '[[:digit:]]+')::int, 0) |
| 71 | ++ FROM ( |
| 72 | ++ SELECT string_to_array(current_setting('server_version'), '.') AS a |
| 73 | ++ ) AS s; |
| 74 | + $$ LANGUAGE SQL IMMUTABLE; |
| 75 | + |
| 76 | + CREATE OR REPLACE FUNCTION os_name() |
| 77 | +@@ -245,21 +303,6 @@ |
64 | 78 | ); |
65 | 79 | $$ LANGUAGE sql strict; |
66 | 80 |
|
|
82 | 96 | CREATE OR REPLACE FUNCTION ok ( boolean, text ) |
83 | 97 | RETURNS TEXT AS $$ |
84 | 98 | DECLARE |
85 | | -@@ -477,9 +515,9 @@ |
| 99 | +@@ -472,9 +515,9 @@ |
86 | 100 | output TEXT; |
87 | 101 | BEGIN |
88 | 102 | EXECUTE 'SELECT ' || |
|
94 | 108 | INTO result; |
95 | 109 | output := ok( COALESCE(result, FALSE), descr ); |
96 | 110 | RETURN output || CASE result WHEN TRUE THEN '' ELSE E'\n' || diag( |
97 | | -@@ -763,7 +801,7 @@ |
| 111 | +@@ -758,7 +801,7 @@ |
98 | 112 | || COALESCE(E'\n TYPE: ' || nullif($10, ''), '') |
99 | 113 | -- We need to manually indent all the context lines |
100 | 114 | || COALESCE(E'\n CONTEXT:\n' |
|
103 | 117 | ), ''); |
104 | 118 | $$ LANGUAGE sql IMMUTABLE; |
105 | 119 |
|
106 | | -@@ -2483,7 +2521,7 @@ |
| 120 | +@@ -2478,7 +2521,7 @@ |
107 | 121 | pg_catalog.pg_get_userbyid(p.proowner) AS owner, |
108 | 122 | array_to_string(p.proargtypes::regtype[], ',') AS args, |
109 | 123 | CASE p.proretset WHEN TRUE THEN 'setof ' ELSE '' END |
|
112 | 126 | p.prolang AS langoid, |
113 | 127 | p.proisstrict AS is_strict, |
114 | 128 | p.proisagg AS is_agg, |
115 | | -@@ -3688,63 +3726,6 @@ |
| 129 | +@@ -3683,63 +3726,6 @@ |
116 | 130 | SELECT ok( NOT _has_type( $1, ARRAY['e'] ), ('Enum ' || quote_ident($1) || ' should not exist')::text ); |
117 | 131 | $$ LANGUAGE sql; |
118 | 132 |
|
|
176 | 190 | CREATE OR REPLACE FUNCTION _has_role( NAME ) |
177 | 191 | RETURNS BOOLEAN AS $$ |
178 | 192 | SELECT EXISTS( |
179 | | -@@ -6335,17 +6316,17 @@ |
| 193 | +@@ -6330,17 +6316,17 @@ |
180 | 194 | BEGIN |
181 | 195 | -- Run the setup functions. |
182 | 196 | FOR tap IN SELECT * FROM _runem(setup, false) LOOP |
|
197 | 211 | END LOOP; |
198 | 212 |
|
199 | 213 | -- Emit the plan. |
200 | | -@@ -6384,7 +6365,7 @@ |
| 214 | +@@ -6379,7 +6365,7 @@ |
201 | 215 | tok := FALSE; |
202 | 216 | RETURN NEXT regexp_replace( diag('Test died: ' || _error_diag( |
203 | 217 | errstate, errmsg, detail, hint, context, schname, tabname, colname, chkname, typname |
|
206 | 220 | errmsg := NULL; |
207 | 221 | END IF; |
208 | 222 | END; |
209 | | -@@ -6497,13 +6478,13 @@ |
| 223 | +@@ -6492,13 +6478,13 @@ |
210 | 224 | -- Find extra records. |
211 | 225 | FOR rec in EXECUTE 'SELECT * FROM ' || have || ' EXCEPT ' || $4 |
212 | 226 | || 'SELECT * FROM ' || want LOOP |
|
222 | 236 | END LOOP; |
223 | 237 |
|
224 | 238 | -- Drop the temporary tables. |
225 | | -@@ -6727,7 +6708,7 @@ |
| 239 | +@@ -6722,7 +6708,7 @@ |
226 | 240 | -- Find relevant records. |
227 | 241 | FOR rec in EXECUTE 'SELECT * FROM ' || want || ' ' || $4 |
228 | 242 | || ' SELECT * FROM ' || have LOOP |
|
231 | 245 | END LOOP; |
232 | 246 |
|
233 | 247 | -- Drop the temporary tables. |
234 | | -@@ -6822,11 +6803,11 @@ |
| 248 | +@@ -6817,11 +6803,11 @@ |
235 | 249 | FETCH want INTO want_rec; |
236 | 250 | want_found := FOUND; |
237 | 251 | WHILE have_found OR want_found LOOP |
|
246 | 260 | ); |
247 | 261 | END IF; |
248 | 262 | rownum = rownum + 1; |
249 | | -@@ -6841,9 +6822,9 @@ |
| 263 | +@@ -6836,9 +6822,9 @@ |
250 | 264 | WHEN datatype_mismatch THEN |
251 | 265 | RETURN ok( false, $3 ) || E'\n' || diag( |
252 | 266 | E' Number of columns or their types differ between the queries' || |
|
259 | 273 | END |
260 | 274 | ); |
261 | 275 | END; |
262 | | -@@ -6979,7 +6960,7 @@ |
| 276 | +@@ -6974,7 +6960,7 @@ |
263 | 277 | FETCH want INTO want_rec; |
264 | 278 | want_found := FOUND; |
265 | 279 | WHILE have_found OR want_found LOOP |
|
268 | 282 | RETURN ok( true, $3 ); |
269 | 283 | ELSE |
270 | 284 | FETCH have INTO have_rec; |
271 | | -@@ -6993,8 +6974,8 @@ |
| 285 | +@@ -6988,8 +6974,8 @@ |
272 | 286 | WHEN datatype_mismatch THEN |
273 | 287 | RETURN ok( false, $3 ) || E'\n' || diag( |
274 | 288 | E' Columns differ between queries:\n' || |
|
279 | 293 | ); |
280 | 294 | END; |
281 | 295 | $$ LANGUAGE plpgsql; |
282 | | -@@ -7119,9 +7100,9 @@ |
| 296 | +@@ -7114,9 +7100,9 @@ |
283 | 297 | DECLARE |
284 | 298 | typeof regtype := pg_typeof($1); |
285 | 299 | BEGIN |
|
292 | 306 | END; |
293 | 307 | $$ LANGUAGE plpgsql; |
294 | 308 |
|
295 | | -@@ -7142,7 +7123,7 @@ |
| 309 | +@@ -7137,7 +7123,7 @@ |
296 | 310 | BEGIN |
297 | 311 | -- Find extra records. |
298 | 312 | FOR rec in EXECUTE _query($1) LOOP |
|
301 | 315 | END LOOP; |
302 | 316 |
|
303 | 317 | -- What extra records do we have? |
304 | | -@@ -7310,7 +7291,7 @@ |
| 318 | +@@ -7305,7 +7291,7 @@ |
305 | 319 | t.typrelid = 0 |
306 | 320 | OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid) |
307 | 321 | ) |
|
310 | 324 | AND n.nspname = $1 |
311 | 325 | AND t.typtype = ANY( COALESCE($4, ARRAY['b', 'c', 'd', 'p', 'e']) ) |
312 | 326 | EXCEPT |
313 | | -@@ -7328,7 +7309,7 @@ |
| 327 | +@@ -7323,7 +7309,7 @@ |
314 | 328 | t.typrelid = 0 |
315 | 329 | OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid) |
316 | 330 | ) |
|
319 | 333 | AND n.nspname = $1 |
320 | 334 | AND t.typtype = ANY( COALESCE($4, ARRAY['b', 'c', 'd', 'p', 'e']) ) |
321 | 335 | ), |
322 | | -@@ -7361,7 +7342,7 @@ |
| 336 | +@@ -7356,7 +7342,7 @@ |
323 | 337 | t.typrelid = 0 |
324 | 338 | OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid) |
325 | 339 | ) |
|
328 | 342 | AND n.nspname NOT IN ('pg_catalog', 'information_schema') |
329 | 343 | AND pg_catalog.pg_type_is_visible(t.oid) |
330 | 344 | AND t.typtype = ANY( COALESCE($3, ARRAY['b', 'c', 'd', 'p', 'e']) ) |
331 | | -@@ -7380,7 +7361,7 @@ |
| 345 | +@@ -7375,7 +7361,7 @@ |
332 | 346 | t.typrelid = 0 |
333 | 347 | OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid) |
334 | 348 | ) |
|
337 | 351 | AND n.nspname NOT IN ('pg_catalog', 'information_schema') |
338 | 352 | AND pg_catalog.pg_type_is_visible(t.oid) |
339 | 353 | AND t.typtype = ANY( COALESCE($3, ARRAY['b', 'c', 'd', 'p', 'e']) ) |
340 | | -@@ -7664,10 +7645,12 @@ |
| 354 | +@@ -7659,10 +7645,12 @@ |
341 | 355 | rec RECORD; |
342 | 356 | BEGIN |
343 | 357 | EXECUTE _query($1) INTO rec; |
|
353 | 367 | ); |
354 | 368 | END; |
355 | 369 | $$ LANGUAGE plpgsql; |
356 | | -@@ -7814,7 +7797,7 @@ |
| 370 | +@@ -7809,7 +7797,7 @@ |
357 | 371 |
|
358 | 372 | CREATE OR REPLACE FUNCTION display_oper ( NAME, OID ) |
359 | 373 | RETURNS TEXT AS $$ |
|
362 | 376 | $$ LANGUAGE SQL; |
363 | 377 |
|
364 | 378 | -- operators_are( schema, operators[], description ) |
365 | | -@@ -7823,7 +7806,7 @@ |
| 379 | +@@ -7818,7 +7806,7 @@ |
366 | 380 | SELECT _areni( |
367 | 381 | 'operators', |
368 | 382 | ARRAY( |
|
371 | 385 | FROM pg_catalog.pg_operator o |
372 | 386 | JOIN pg_catalog.pg_namespace n ON o.oprnamespace = n.oid |
373 | 387 | WHERE n.nspname = $1 |
374 | | -@@ -7835,7 +7818,7 @@ |
| 388 | +@@ -7830,7 +7818,7 @@ |
375 | 389 | SELECT $2[i] |
376 | 390 | FROM generate_series(1, array_upper($2, 1)) s(i) |
377 | 391 | EXCEPT |
|
380 | 394 | FROM pg_catalog.pg_operator o |
381 | 395 | JOIN pg_catalog.pg_namespace n ON o.oprnamespace = n.oid |
382 | 396 | WHERE n.nspname = $1 |
383 | | -@@ -7856,7 +7839,7 @@ |
| 397 | +@@ -7851,7 +7839,7 @@ |
384 | 398 | SELECT _areni( |
385 | 399 | 'operators', |
386 | 400 | ARRAY( |
|
389 | 403 | FROM pg_catalog.pg_operator o |
390 | 404 | JOIN pg_catalog.pg_namespace n ON o.oprnamespace = n.oid |
391 | 405 | WHERE pg_catalog.pg_operator_is_visible(o.oid) |
392 | | -@@ -7869,7 +7852,7 @@ |
| 406 | +@@ -7864,7 +7852,7 @@ |
393 | 407 | SELECT $1[i] |
394 | 408 | FROM generate_series(1, array_upper($1, 1)) s(i) |
395 | 409 | EXCEPT |
|
398 | 412 | FROM pg_catalog.pg_operator o |
399 | 413 | JOIN pg_catalog.pg_namespace n ON o.oprnamespace = n.oid |
400 | 414 | WHERE pg_catalog.pg_operator_is_visible(o.oid) |
401 | | -@@ -8582,40 +8565,6 @@ |
| 415 | +@@ -8577,40 +8565,6 @@ |
402 | 416 | ); |
403 | 417 | $$ LANGUAGE sql; |
404 | 418 |
|
|
0 commit comments