| create or replace function test_connect(text) RETURNS bool AS |
| '@abs_builddir@/gplibpq@DLSUFFIX@' LANGUAGE C VOLATILE STRICT NO SQL; |
| |
| create or replace function test_disconnect() RETURNS bool AS |
| '@abs_builddir@/gplibpq@DLSUFFIX@' LANGUAGE C VOLATILE STRICT NO SQL; |
| |
| create or replace function test_send() RETURNS bool AS |
| '@abs_builddir@/gplibpq@DLSUFFIX@' LANGUAGE C VOLATILE STRICT NO SQL; |
| |
| create or replace function test_receive_and_verify(pg_lsn, pg_lsn) RETURNS bool AS |
| '@abs_builddir@/gplibpq@DLSUFFIX@' LANGUAGE C VOLATILE STRICT NO SQL; |
| |
| create or replace function test_xlog_ao(IN text, IN pg_lsn, OUT xrecoff INT, OUT record_type TEXT, |
| OUT recordlen INT, OUT spcNode OID, OUT dbNode OID, |
| OUT relNode OID, OUT segment_filenum INT, OUT file_offset BIGINT) |
| RETURNS SETOF record AS |
| '@abs_builddir@/gplibpq@DLSUFFIX@' LANGUAGE C VOLATILE STRICT NO SQL; |
| |
| CREATE OR REPLACE FUNCTION test_xlog_ao_wrapper(IN startpoints pg_lsn[]) |
| RETURNS TABLE (gp_segment_id INT, oid OID, relname name, |
| xrecoff TEXT, record_type TEXT, recordlen INT, |
| spcNode OID, dbNode OID, relNode OID, segment_filenum INT, |
| file_offset BIGINT) |
| EXECUTE ON ALL SEGMENTS AS |
| $func$ |
| DECLARE |
| port TEXT; |
| startpoint pg_lsn; |
| myseg INT; |
| BEGIN |
| myseg := gp_execution_segment(); |
| startpoint := startpoints[myseg + 1]; |
| select 'host=localhost port=' || setting INTO port from pg_settings where name = 'port'; |
| RAISE DEBUG 'port %, startpoint % current_wal_lsn %', |
| port, startpoint, pg_current_wal_lsn(); |
| |
| RETURN QUERY |
| SELECT gp_execution_segment(), pg.oid, pg.relname, upper('0/' || to_hex(t.xrecoff)), t.record_type, |
| t.recordlen, t.spcNode, t.dbNode, t.relNode, t.segment_filenum, t.file_offset |
| FROM test_xlog_ao(port, startpoint) t |
| LEFT JOIN pg_class pg ON t.relnode = pg.relfilenode; |
| END; |
| $func$ LANGUAGE plpgsql; |