-- -- XC_COPY -- -- COPY tests for a Postgres-XL cluster create or replace function pgxc_nodetype() returns varchar as $$ declare pgxc_class_entries int; begin select into pgxc_class_entries count(*) from pgxc_class ; if pgxc_class_entries > 0 then return ' Node type: C'; else return ' Node type: D'; end if; end $$ language plpgsql; create function deffunc() returns bytea as $$ begin return E'\\023\\000\\\\''!|'''; end $$ language plpgsql; create or replace function deffunc_bytea() returns bytea as $$ begin return E'\0123'; end $$ language plpgsql; create or replace function deffunc_str() returns varchar as $$ begin return E'\\.\\000"\\''!|''\\N' || pgxc_nodetype(); end $$ language plpgsql; create or replace function deffunc_str_i() returns varchar immutable as $$ begin return E'\\.\\000"\\''!|''' || pgxc_nodetype(); end $$ language plpgsql; create or replace function deffunc_nullstring() returns varchar as $$ begin return E'\\N'; end $$ language plpgsql; create table xccopydef(idseq serial, id1 int, def1 bytea default deffunc(), def2 bytea default E'\\000'::bytea, def3 varchar default deffunc_str(), def4 varchar default deffunc_str_i(), def5 varchar default deffunc_nullstring(), def6 bytea default deffunc_bytea(), id2 varchar, def7 float default length(deffunc_str()) + 0.433); copy xccopydef (id1, id2) from stdin (delimiter '|'); 3 | \\\\x135 \N| abcd \. copy xccopydef (id1, id2) from stdin (format 'csv'); 3 , \\\\x135 , abcd \. insert into xccopydef (id1, id2) values (NULL, NULL); insert into xccopydef (id1) values (4567); select * from xccopydef order by idseq; copy xccopydef (id1, id2) to '@abs_builddir@/results/copydefout.data' (format 'binary'); truncate xccopydef; copy xccopydef (id1, id2) from '@abs_builddir@/results/copydefout.data' (format 'binary'); select * from xccopydef order by idseq; drop table xccopydef; drop function pgxc_nodetype(); drop function deffunc(); drop function deffunc_bytea(); drop function deffunc_str(); drop function deffunc_str_i(); drop function deffunc_nullstring();