-- SQL code to define the new string I/O functions

-- This is not needed because escapes are handled by the parser
--
-- create function c_textin(opaque)
--   returns text
--   as 'MODULE_PATHNAME' 
--   language 'c';

create function c_charout(opaque) returns int4
  as 'MODULE_PATHNAME' 
  language 'c';

create function c_char2out(opaque) returns int4
  as 'MODULE_PATHNAME' 
  language 'c';

create function c_char4out(opaque) returns int4
  as 'MODULE_PATHNAME' 
  language 'c';

create function c_char8out(opaque) returns int4
  as 'MODULE_PATHNAME' 
  language 'c';

create function c_char16out(opaque) returns int4
  as 'MODULE_PATHNAME' 
  language 'c';

create function c_textout(opaque) returns int4
  as 'MODULE_PATHNAME' 
  language 'c';

create function c_varcharout(opaque) returns int4
  as 'MODULE_PATHNAME' 
  language 'c';


-- Define a function which sets the new output routines for char types
--
--   select c_mode();
--
create function c_mode() returns text
  as 'update pg_type set typoutput=''c_charout''    where typname=''char'';
      update pg_type set typoutput=''c_char2out''   where typname=''char2'';
      update pg_type set typoutput=''c_char4out''   where typname=''char4'';
      update pg_type set typoutput=''c_char8out''   where typname=''char8'';
      update pg_type set typoutput=''c_char16out''  where typname=''char16'';
      update pg_type set typoutput=''c_textout''    where typname=''text'';
      update pg_type set typoutput=''c_textout''    where typname=''bytea'';
      update pg_type set typoutput=''c_textout''    where typname=''unknown'';
      update pg_type set typoutput=''c_textout''    where typname=''SET'';
      update pg_type set typoutput=''c_varcharout'' where typname=''varchar'';
      update pg_type set typoutput=''c_varcharout'' where typname=''bpchar'';
      select ''c_mode''::text'
  language 'sql';

-- Define a function which restores the original routines for char types
--
--   select pg_mode();
--
create function pg_mode() returns text
  as 'update pg_type set typoutput=''charout''    where typname=''char'';
      update pg_type set typoutput=''char2out''   where typname=''char2'';
      update pg_type set typoutput=''char4out''   where typname=''char4'';
      update pg_type set typoutput=''char8out''   where typname=''char8'';
      update pg_type set typoutput=''char16out''  where typname=''char16'';
      update pg_type set typoutput=''textout''    where typname=''text'';
      update pg_type set typoutput=''textout''    where typname=''bytea'';
      update pg_type set typoutput=''textout''    where typname=''unknown'';
      update pg_type set typoutput=''textout''    where typname=''SET'';
      update pg_type set typoutput=''varcharout'' where typname=''varchar'';
      update pg_type set typoutput=''varcharout'' where typname=''bpchar'';
      select ''pg_mode''::text'
  language 'sql';


-- Use these if you want do the updates manually
--
-- update pg_type set typoutput='charout'    where typname='char';
-- update pg_type set typoutput='char2out'   where typname='char2';
-- update pg_type set typoutput='char4out'   where typname='char4';
-- update pg_type set typoutput='char8out'   where typname='char8';
-- update pg_type set typoutput='char16out'  where typname='char16';
-- update pg_type set typoutput='textout'    where typname='text';
-- update pg_type set typoutput='textout'    where typname='bytea';
-- update pg_type set typoutput='textout'    where typname='unknown';
-- update pg_type set typoutput='textout'    where typname='SET';
-- update pg_type set typoutput='varcharout' where typname='varchar';
-- update pg_type set typoutput='varcharout' where typname='bpchar';
--
-- update pg_type set typoutput='c_charout'    where typname='char';
-- update pg_type set typoutput='c_char2out'   where typname='char2';
-- update pg_type set typoutput='c_char4out'   where typname='char4';
-- update pg_type set typoutput='c_char8out'   where typname='char8';
-- update pg_type set typoutput='c_char16out'  where typname='char16';
-- update pg_type set typoutput='c_textout'    where typname='text';
-- update pg_type set typoutput='c_textout'    where typname='bytea';
-- update pg_type set typoutput='c_textout'    where typname='unknown';
-- update pg_type set typoutput='c_textout'    where typname='SET';
-- update pg_type set typoutput='c_varcharout' where typname='varchar';
-- update pg_type set typoutput='c_varcharout' where typname='bpchar';

-- end of file