blob: 9565c447e036cf7ef70b3752a816c88ba4330f0e [file] [log] [blame]
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;