All pastes #2082009 Raw Edit

Untitled

public text v1 · immutable
#2082009 ·published 2011-09-22 02:36 UTC
rendered paste body
warning: skipping missing include file data/mkdata: No such file or directory
echo "==> Mk $stem.sql"
eval echo "\"  $SED -e "s/__TDBNAME__/$tdbname/g"  	-e "s/__TSCHENAME__/$tschename/g" < $prereq |  	if $PSQL -Xwe --set ON_ERROR_STOP= -d $pgdbname  	-U $pguser -f /dev/stdin; then touch $target; else kill $$; fi\""
eval "$psqlskel" 2>&1 | sed -e 's/^/  /g' # indent two spaces
==> Mk .sql
  sed -e s/__TDBNAME__/_n_srv/g  	-e s/__TSCHENAME__/n_srv/g < skel.sql |  	if psql -Xwe --set ON_ERROR_STOP= -d template1  	-U _postgresql -f /dev/stdin; then touch skel.ck; else kill 2432; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * Database squeleton
   */
  drop database if exists _n_srv;
  DROP DATABASE
  create database _n_srv encoding = 'UTF8' template = template0;
  CREATE DATABASE
  You are now connected to database "_n_srv" as user "_postgresql".
  drop schema if exists public;
  DROP SCHEMA
  create schema public;
  CREATE SCHEMA
  drop schema if exists regress;
  psql:/dev/stdin:27: NOTICE:  schema "regress" does not exist, skipping
  DROP SCHEMA
  create schema regress;
  CREATE SCHEMA
  drop schema if exists n_srv;
  psql:/dev/stdin:30: NOTICE:  schema "n_srv" does not exist, skipping
  DROP SCHEMA
  create schema n_srv;
  CREATE SCHEMA
  alter database _n_srv set search_path to n_srv,public;
  ALTER DATABASE
==> Mk role/auth.sh
sh role/auth.sh <role/auth.sql >role/auth.sql
==> Mk func/pgrole.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/pgrole.sql; then touch func/pgrole.ck; else kill 9802; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  
  /*
   * Returns a set of role names that have permissions on an object name, this
   * function search for objna in the current schema search path, in order.
   */
  create or replace function grantee_on_obj(objna text) 
      returns table (grantee text) language plpgsql as 
  $$
  declare
  	sch	text; -- schema to search in.
  begin
  	for sch in
  		select unnest(current_schemas('t'))
  	loop
  		return query 
  			 select	rol.rolname::text
  			   from	pg_catalog.pg_shdepend shd join 
  				pg_catalog.pg_class cla on 
  					shd.objid = cla.oid join
  				pg_catalog.pg_roles rol on 
  					shd.refobjid = rol.oid join 
  				pg_catalog.pg_namespace nas on 
  					cla.relnamespace = nas.oid
  			  where	nas.nspname = sch and cla.relname = objna;
  	end loop;
  
  	return;
  end;
  $$;
  CREATE FUNCTION
  create or replace function revoke_all_on_obj(obj_n text, out revokes bigint) returns bigint 
      language plpgsql as $$
  declare
  	role_n	text;
  	sql	text;
  begin
  	revokes := 0;
  	for role_n in 
  		select	grantee from grantee_on_obj(obj_n) as foo (grantee)
  	loop
  		sql := 'revoke all on "' || obj_n || '" from "' || role_n || '";';
  		-- debug: 
  		-- raise notice '%', sql;
  		execute sql;
  		revokes := revokes + 1;
  	end loop;
  
  	return;
  end;
  $$;
  CREATE FUNCTION
  /*
   * Creates role if not exists. Returns false if the role already exists or it
   * couldn't create the role for whatever reason...
   */
  create or replace function
  creatrolifne(rol text)
      returns boolean language plpgsql as
  $$
  begin
  	if rol is null then
  		return false;
  	end if;
  
  	perform rolname from pg_roles where rolname = rol; 
  
  	-- DEBUG: raise notice 'Fucking found: %', found;
  
  	if found then
  		return false;
  	end if;
  
  	execute 'create role "' || rol || '";';
  
  	return true;
  end;
  $$;
  CREATE FUNCTION
==> Mk role/cdr.sh
sh role/cdr.sh <role/cdr.sql >role/cdr.sql
==> Mk role/ext.www.sh
sh role/ext.www.sh <role/ext.www.sql >role/ext.www.sql
==> Mk role/ext.www.client.sh
sh role/ext.www.client.sh <role/ext.www.client.sql >role/ext.www.client.sql
==> Mk role/ext.www.hclient.sh
sh role/ext.www.hclient.sh <role/ext.www.hclient.sql >role/ext.www.hclient.sql
==> Mk role/int.www.sh
sh role/int.www.sh <role/int.www.sql >role/int.www.sql
==> Mk role/n_srv.sh
sh role/n_srv.sh <role/n_srv.sql >role/n_srv.sql
==> Mk role/www.cookie.sh
sh role/www.cookie.sh <role/www.cookie.sql >role/www.cookie.sql
==> Mk table/cdrt.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/cdrt.sql; then touch table/cdrt.ck; else kill 31665; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * Contains the type's of Call Detail Records (CDR) that we can handle
   */
  drop table if exists cdrt cascade;
  psql:table/cdrt.sql:20: NOTICE:  table "cdrt" does not exist, skipping
  DROP TABLE
  create table cdrt (
  	
  	cdrtid		bigserial not null primary key,
  	
  	cdrtna		varchar(32) not null unique
  );
  psql:table/cdrt.sql:27: NOTICE:  CREATE TABLE will create implicit sequence "cdrt_cdrtid_seq" for serial column "cdrt.cdrtid"
  psql:table/cdrt.sql:27: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "cdrt_pkey" for table "cdrt"
  psql:table/cdrt.sql:27: NOTICE:  CREATE TABLE / UNIQUE will create implicit index "cdrt_cdrtna_key" for table "cdrt"
  CREATE TABLE
  /*
   * Insert's default btna's.
   */
  insert into cdrt (cdrtid, cdrtna) values (0, 'ast');
  INSERT 0 1
  insert into cdrt (cdrtid, cdrtna) values (1, 'omni');
  INSERT 0 1
  insert into cdrt (cdrtid, cdrtna) values (2, 'axt');
  INSERT 0 1
  insert into cdrt (cdrtid, cdrtna) values (3, 'ale');
  INSERT 0 1
==> Mk table/numtref.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/numtref.sql; then touch table/numtref.ck; else kill 21902; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * Numeration tree family (numtref)
   */
  drop table if exists numtref cascade;
  psql:table/numtref.sql:20: NOTICE:  table "numtref" does not exist, skipping
  DROP TABLE
  create table numtref (	
  	numtrefid	bigserial primary key,
  	
  	numtrefna	varchar(32) not null unique,
  	
  	numtrefdesc	text
  );
  psql:table/numtref.sql:27: NOTICE:  CREATE TABLE will create implicit sequence "numtref_numtrefid_seq" for serial column "numtref.numtrefid"
  psql:table/numtref.sql:27: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "numtref_pkey" for table "numtref"
  psql:table/numtref.sql:27: NOTICE:  CREATE TABLE / UNIQUE will create implicit index "numtref_numtrefna_key" for table "numtref"
  CREATE TABLE
==> Mk table/srv.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/srv.sql; then touch table/srv.ck; else kill 2061; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * Contains the type of call (service code).
   */
  drop table if exists srv cascade;
  psql:table/srv.sql:21: NOTICE:  table "srv" does not exist, skipping
  DROP TABLE
  create table srv ( 
  	
  	srvid		bigint not null primary key
  			constraint "srvid must be non-negative"
  			check (srvid >= 0),
  	
  	srvna		varchar(126) not null
  );
  psql:table/srv.sql:30: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "srv_pkey" for table "srv"
  CREATE TABLE
==> Mk func/cube.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/cube.sql; then touch func/cube.ck; else kill 12704; fi
  /* $PostgreSQL: pgsql/contrib/cube/cube.sql.in,v 1.25 2009/06/11 18:30:03 tgl Exp $ */
  
  SET search_path = public;
  SET
  CREATE OR REPLACE FUNCTION cube_in(cstring)
  RETURNS cube
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  psql:func/cube.sql:13: NOTICE:  type "cube" is not yet defined
  DETAIL:  Creating a shell type definition.
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION cube(float8[], float8[]) RETURNS cube
  AS '$libdir/cube', 'cube_a_f8_f8'
  LANGUAGE C IMMUTABLE STRICT;
  psql:func/cube.sql:17: NOTICE:  return type cube is only a shell
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION cube(float8[]) RETURNS cube
  AS '$libdir/cube', 'cube_a_f8'
  LANGUAGE C IMMUTABLE STRICT;
  psql:func/cube.sql:21: NOTICE:  return type cube is only a shell
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION cube_out(cube)
  RETURNS cstring
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  psql:func/cube.sql:26: NOTICE:  argument type cube is only a shell
  CREATE FUNCTION
  CREATE TYPE cube (
  	INTERNALLENGTH = variable,
  	INPUT = cube_in,
  	OUTPUT = cube_out,
  	ALIGNMENT = double
  );
  CREATE TYPE
  COMMENT ON TYPE cube IS 'multi-dimensional cube ''(FLOAT-1, FLOAT-2, ..., FLOAT-N), (FLOAT-1, FLOAT-2, ..., FLOAT-N)''';
  COMMENT
  CREATE OR REPLACE FUNCTION cube_eq(cube, cube)
  RETURNS bool
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION cube_eq(cube, cube) IS 'same as';
  COMMENT
  CREATE OR REPLACE FUNCTION cube_ne(cube, cube)
  RETURNS bool
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION cube_ne(cube, cube) IS 'different';
  COMMENT
  CREATE OR REPLACE FUNCTION cube_lt(cube, cube)
  RETURNS bool
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION cube_lt(cube, cube) IS 'lower than';
  COMMENT
  CREATE OR REPLACE FUNCTION cube_gt(cube, cube)
  RETURNS bool
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION cube_gt(cube, cube) IS 'greater than';
  COMMENT
  CREATE OR REPLACE FUNCTION cube_le(cube, cube)
  RETURNS bool
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION cube_le(cube, cube) IS 'lower than or equal to';
  COMMENT
  CREATE OR REPLACE FUNCTION cube_ge(cube, cube)
  RETURNS bool
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION cube_ge(cube, cube) IS 'greater than or equal to';
  COMMENT
  CREATE OR REPLACE FUNCTION cube_cmp(cube, cube)
  RETURNS int4
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION cube_cmp(cube, cube) IS 'btree comparison function';
  COMMENT
  CREATE OR REPLACE FUNCTION cube_contains(cube, cube)
  RETURNS bool
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION cube_contains(cube, cube) IS 'contains';
  COMMENT
  CREATE OR REPLACE FUNCTION cube_contained(cube, cube)
  RETURNS bool
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION cube_contained(cube, cube) IS 'contained in';
  COMMENT
  CREATE OR REPLACE FUNCTION cube_overlap(cube, cube)
  RETURNS bool
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION cube_overlap(cube, cube) IS 'overlaps';
  COMMENT
  CREATE OR REPLACE FUNCTION cube_union(cube, cube)
  RETURNS cube
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION cube_inter(cube, cube)
  RETURNS cube
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION cube_size(cube)
  RETURNS float8
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION cube_subset(cube, int4[])
  RETURNS cube
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION cube_distance(cube, cube)
  RETURNS float8
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION cube_dim(cube)
  RETURNS int4
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION cube_ll_coord(cube, int4)
  RETURNS float8
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION cube_ur_coord(cube, int4)
  RETURNS float8
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION cube(float8) RETURNS cube
  AS '$libdir/cube', 'cube_f8'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION cube(float8, float8) RETURNS cube
  AS '$libdir/cube', 'cube_f8_f8'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION cube(cube, float8) RETURNS cube
  AS '$libdir/cube', 'cube_c_f8'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION cube(cube, float8, float8) RETURNS cube
  AS '$libdir/cube', 'cube_c_f8_f8'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION cube_is_point(cube)
  RETURNS bool
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION cube_enlarge(cube, float8, int4)
  RETURNS cube
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR < (
  	LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_lt,
  	COMMUTATOR = '>', NEGATOR = '>=',
  	RESTRICT = scalarltsel, JOIN = scalarltjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR > (
  	LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_gt,
  	COMMUTATOR = '<', NEGATOR = '<=',
  	RESTRICT = scalargtsel, JOIN = scalargtjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR <= (
  	LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_le,
  	COMMUTATOR = '>=', NEGATOR = '>',
  	RESTRICT = scalarltsel, JOIN = scalarltjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR >= (
  	LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_ge,
  	COMMUTATOR = '<=', NEGATOR = '<',
  	RESTRICT = scalargtsel, JOIN = scalargtjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR && (
  	LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_overlap,
  	COMMUTATOR = '&&',
  	RESTRICT = areasel, JOIN = areajoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR = (
  	LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_eq,
  	COMMUTATOR = '=', NEGATOR = '<>',
  	RESTRICT = eqsel, JOIN = eqjoinsel,
  	MERGES
  );
  CREATE OPERATOR
  CREATE OPERATOR <> (
  	LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_ne,
  	COMMUTATOR = '<>', NEGATOR = '=',
  	RESTRICT = neqsel, JOIN = neqjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR @> (
  	LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_contains,
  	COMMUTATOR = '<@',
  	RESTRICT = contsel, JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR <@ (
  	LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_contained,
  	COMMUTATOR = '@>',
  	RESTRICT = contsel, JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR @ (
  	LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_contains,
  	COMMUTATOR = '~',
  	RESTRICT = contsel, JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ~ (
  	LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_contained,
  	COMMUTATOR = '@',
  	RESTRICT = contsel, JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION g_cube_consistent(internal,cube,int,oid,internal)
  RETURNS bool
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION g_cube_compress(internal)
  RETURNS internal 
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION g_cube_decompress(internal)
  RETURNS internal 
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION g_cube_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION g_cube_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION g_cube_union(internal, internal)
  RETURNS cube 
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION g_cube_same(cube, cube, internal)
  RETURNS internal 
  AS '$libdir/cube'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS cube_ops
      DEFAULT FOR TYPE cube USING btree AS
          OPERATOR        1       < ,
          OPERATOR        2       <= ,
          OPERATOR        3       = ,
          OPERATOR        4       >= ,
          OPERATOR        5       > ,
          FUNCTION        1       cube_cmp(cube, cube);
  CREATE OPERATOR CLASS
  CREATE OPERATOR CLASS gist_cube_ops
      DEFAULT FOR TYPE cube USING gist AS
  	OPERATOR	3	&& ,
  	OPERATOR	6	= ,
  	OPERATOR	7	@> ,
  	OPERATOR	8	<@ ,
  	OPERATOR	13	@ ,
  	OPERATOR	14	~ ,
  	FUNCTION	1	g_cube_consistent (internal, cube, int, oid, internal),
  	FUNCTION	2	g_cube_union (internal, internal),
  	FUNCTION	3	g_cube_compress (internal),
  	FUNCTION	4	g_cube_decompress (internal),
  	FUNCTION	5	g_cube_penalty (internal, internal, internal),
  	FUNCTION	6	g_cube_picksplit (internal, internal),
  	FUNCTION	7	g_cube_same (cube, cube, internal);
  CREATE OPERATOR CLASS
==> Mk func/intarray.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/intarray.sql; then touch func/intarray.ck; else kill 10695; fi
  /* $PostgreSQL: pgsql/contrib/intarray/_int.sql.in,v 1.32 2009/06/11 18:30:03 tgl Exp $ */
  
  SET search_path = public;
  SET
  CREATE OR REPLACE FUNCTION bqarr_in(cstring)
  RETURNS query_int
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  psql:func/intarray.sql:14: NOTICE:  type "query_int" is not yet defined
  DETAIL:  Creating a shell type definition.
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION bqarr_out(query_int)
  RETURNS cstring
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  psql:func/intarray.sql:19: NOTICE:  argument type query_int is only a shell
  CREATE FUNCTION
  CREATE TYPE query_int (
  	INTERNALLENGTH = -1,
  	INPUT = bqarr_in,
  	OUTPUT = bqarr_out
  );
  CREATE TYPE
  CREATE OR REPLACE FUNCTION querytree(query_int)
  RETURNS text
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION boolop(_int4, query_int)
  RETURNS bool
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  COMMENT ON FUNCTION boolop(_int4, query_int) IS 'boolean operation with array';
  COMMENT
  CREATE OR REPLACE FUNCTION rboolop(query_int, _int4)
  RETURNS bool
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  COMMENT ON FUNCTION rboolop(query_int, _int4) IS 'boolean operation with array';
  COMMENT
  CREATE OPERATOR @@ (
  	LEFTARG = _int4,
  	RIGHTARG = query_int,
  	PROCEDURE = boolop,
  	COMMUTATOR = '~~',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ~~ (
  	LEFTARG = query_int,
  	RIGHTARG = _int4,
  	PROCEDURE = rboolop,
  	COMMUTATOR = '@@',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION _int_contains(_int4, _int4)
  RETURNS bool
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  COMMENT ON FUNCTION _int_contains(_int4, _int4) IS 'contains';
  COMMENT
  CREATE OR REPLACE FUNCTION _int_contained(_int4, _int4)
  RETURNS bool
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  COMMENT ON FUNCTION _int_contained(_int4, _int4) IS 'contained in';
  COMMENT
  CREATE OR REPLACE FUNCTION _int_overlap(_int4, _int4)
  RETURNS bool
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  COMMENT ON FUNCTION _int_overlap(_int4, _int4) IS 'overlaps';
  COMMENT
  CREATE OR REPLACE FUNCTION _int_same(_int4, _int4)
  RETURNS bool
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  COMMENT ON FUNCTION _int_same(_int4, _int4) IS 'same as';
  COMMENT
  CREATE OR REPLACE FUNCTION _int_different(_int4, _int4)
  RETURNS bool
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  COMMENT ON FUNCTION _int_different(_int4, _int4) IS 'different';
  COMMENT
  CREATE OR REPLACE FUNCTION _int_union(_int4, _int4)
  RETURNS _int4
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION _int_inter(_int4, _int4)
  RETURNS _int4
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR && (
  	LEFTARG = _int4,
  	RIGHTARG = _int4,
  	PROCEDURE = _int_overlap,
  	COMMUTATOR = '&&',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR @> (
  	LEFTARG = _int4,
  	RIGHTARG = _int4,
  	PROCEDURE = _int_contains,
  	COMMUTATOR = '<@',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR <@ (
  	LEFTARG = _int4,
  	RIGHTARG = _int4,
  	PROCEDURE = _int_contained,
  	COMMUTATOR = '@>',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR @ (
  	LEFTARG = _int4,
  	RIGHTARG = _int4,
  	PROCEDURE = _int_contains,
  	COMMUTATOR = '~',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ~ (
  	LEFTARG = _int4,
  	RIGHTARG = _int4,
  	PROCEDURE = _int_contained,
  	COMMUTATOR = '@',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION intset(int4)
  RETURNS _int4
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION icount(_int4)
  RETURNS int4
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR # (
  	RIGHTARG = _int4,
  	PROCEDURE = icount
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION sort(_int4, text)
  RETURNS _int4
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION sort(_int4)
  RETURNS _int4
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION sort_asc(_int4)
  RETURNS _int4
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION sort_desc(_int4)
  RETURNS _int4
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION uniq(_int4)
  RETURNS _int4
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION idx(_int4, int4)
  RETURNS int4
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR # (
  	LEFTARG = _int4,
  	RIGHTARG = int4,
  	PROCEDURE = idx
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION subarray(_int4, int4, int4)
  RETURNS _int4
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION subarray(_int4, int4)
  RETURNS _int4
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION intarray_push_elem(_int4, int4)
  RETURNS _int4
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR + (
  	LEFTARG = _int4,
  	RIGHTARG = int4,
  	PROCEDURE = intarray_push_elem
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION intarray_push_array(_int4, _int4)
  RETURNS _int4
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR + (
  	LEFTARG = _int4,
  	RIGHTARG = _int4,
  	COMMUTATOR = +,
  	PROCEDURE = intarray_push_array
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION intarray_del_elem(_int4, int4)
  RETURNS _int4
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR - (
  	LEFTARG = _int4,
  	RIGHTARG = int4,
  	PROCEDURE = intarray_del_elem
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION intset_union_elem(_int4, int4)
  RETURNS _int4
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR | (
  	LEFTARG = _int4,
  	RIGHTARG = int4,
  	PROCEDURE = intset_union_elem
  );
  CREATE OPERATOR
  CREATE OPERATOR | (
  	LEFTARG = _int4,
  	RIGHTARG = _int4,
  	COMMUTATOR = |,
  	PROCEDURE = _int_union
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION intset_subtract(_int4, _int4)
  RETURNS _int4
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR - (
  	LEFTARG = _int4,
  	RIGHTARG = _int4,
  	PROCEDURE = intset_subtract
  );
  CREATE OPERATOR
  CREATE OPERATOR & (
  	LEFTARG = _int4,
  	RIGHTARG = _int4,
  	COMMUTATOR = &,
  	PROCEDURE = _int_inter
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION g_int_consistent(internal,_int4,int,oid,internal)
  RETURNS bool
  AS '$libdir/_int'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION g_int_compress(internal)
  RETURNS internal
  AS '$libdir/_int'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION g_int_decompress(internal)
  RETURNS internal
  AS '$libdir/_int'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION g_int_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/_int'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION g_int_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/_int'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION g_int_union(internal, internal)
  RETURNS _int4
  AS '$libdir/_int'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION g_int_same(_int4, _int4, internal)
  RETURNS internal
  AS '$libdir/_int'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist__int_ops
  DEFAULT FOR TYPE _int4 USING gist AS
  	OPERATOR	3	&&,
  	OPERATOR	6	= (anyarray, anyarray),
  	OPERATOR	7	@>,
  	OPERATOR	8	<@,
  	OPERATOR	13	@,
  	OPERATOR	14	~,
  	OPERATOR	20	@@ (_int4, query_int),
  	FUNCTION	1	g_int_consistent (internal, _int4, int, oid, internal),
  	FUNCTION	2	g_int_union (internal, internal),
  	FUNCTION	3	g_int_compress (internal),
  	FUNCTION	4	g_int_decompress (internal),
  	FUNCTION	5	g_int_penalty (internal, internal, internal),
  	FUNCTION	6	g_int_picksplit (internal, internal),
  	FUNCTION	7	g_int_same (_int4, _int4, internal);
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION _intbig_in(cstring)
  RETURNS intbig_gkey
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  psql:func/intarray.sql:390: NOTICE:  type "intbig_gkey" is not yet defined
  DETAIL:  Creating a shell type definition.
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION _intbig_out(intbig_gkey)
  RETURNS cstring
  AS '$libdir/_int'
  LANGUAGE C STRICT IMMUTABLE;
  psql:func/intarray.sql:395: NOTICE:  argument type intbig_gkey is only a shell
  CREATE FUNCTION
  CREATE TYPE intbig_gkey (
          INTERNALLENGTH = -1,
          INPUT = _intbig_in,
          OUTPUT = _intbig_out
  );
  CREATE TYPE
  CREATE OR REPLACE FUNCTION g_intbig_consistent(internal,internal,int,oid,internal)
  RETURNS bool
  AS '$libdir/_int'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION g_intbig_compress(internal)
  RETURNS internal
  AS '$libdir/_int'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION g_intbig_decompress(internal)
  RETURNS internal
  AS '$libdir/_int'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION g_intbig_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/_int'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION g_intbig_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/_int'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION g_intbig_union(internal, internal)
  RETURNS _int4
  AS '$libdir/_int'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION g_intbig_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/_int'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist__intbig_ops
  FOR TYPE _int4 USING gist
  AS
  	OPERATOR	3	&&,
  	OPERATOR	6	= (anyarray, anyarray),
  	OPERATOR	7	@>,
  	OPERATOR	8	<@,
  	OPERATOR	13	@,
  	OPERATOR	14	~,
  	OPERATOR	20	@@ (_int4, query_int),
  	FUNCTION	1	g_intbig_consistent (internal, internal, int, oid, internal),
  	FUNCTION	2	g_intbig_union (internal, internal),
  	FUNCTION	3	g_intbig_compress (internal),
  	FUNCTION	4	g_intbig_decompress (internal),
  	FUNCTION	5	g_intbig_penalty (internal, internal, internal),
  	FUNCTION	6	g_intbig_picksplit (internal, internal),
  	FUNCTION	7	g_intbig_same (internal, internal, internal),
  	STORAGE		intbig_gkey;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION ginint4_queryextract(internal, internal, int2, internal, internal)
  RETURNS internal
  AS '$libdir/_int'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ginint4_consistent(internal, int2, internal, int4, internal, internal)
  RETURNS bool
  AS '$libdir/_int'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gin__int_ops
  FOR TYPE _int4 USING gin
  AS
  	OPERATOR	3	&&,
  	OPERATOR	6	= (anyarray, anyarray),
  	OPERATOR	7	@>,
  	OPERATOR	8	<@,
  	OPERATOR	13	@,
  	OPERATOR	14	~,
  	OPERATOR	20	@@ (_int4, query_int),
  	FUNCTION	1	btint4cmp (int4, int4),
  	FUNCTION	2	ginarrayextract (anyarray, internal),
  	FUNCTION	3	ginint4_queryextract (internal, internal, int2, internal, internal),
  	FUNCTION	4	ginint4_consistent (internal, int2, internal, int4, internal, internal),
  	STORAGE		int4;
  CREATE OPERATOR CLASS
==> Mk func/ltree.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/ltree.sql; then touch func/ltree.ck; else kill 6254; fi
  /* $PostgreSQL: pgsql/contrib/ltree/ltree.sql.in,v 1.18 2009/06/11 18:30:03 tgl Exp $ */
  
  SET search_path = public;
  SET
  CREATE OR REPLACE FUNCTION ltree_in(cstring)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT;
  psql:func/ltree.sql:9: NOTICE:  type "ltree" is not yet defined
  DETAIL:  Creating a shell type definition.
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_out(ltree)
  RETURNS cstring
  AS '$libdir/ltree'
  LANGUAGE C STRICT;
  psql:func/ltree.sql:14: NOTICE:  argument type ltree is only a shell
  CREATE FUNCTION
  CREATE TYPE ltree (
  	INTERNALLENGTH = -1,
  	INPUT = ltree_in,
  	OUTPUT = ltree_out,
  	STORAGE = extended
  );
  CREATE TYPE
  CREATE OR REPLACE FUNCTION ltree_cmp(ltree,ltree)
  RETURNS int4
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_lt(ltree,ltree)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_le(ltree,ltree)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_eq(ltree,ltree)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_ge(ltree,ltree)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_gt(ltree,ltree)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_ne(ltree,ltree)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR < (
          LEFTARG = ltree,
  	RIGHTARG = ltree,
  	PROCEDURE = ltree_lt,
          COMMUTATOR = '>',
  	NEGATOR = '>=',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR <= (
          LEFTARG = ltree,
  	RIGHTARG = ltree,
  	PROCEDURE = ltree_le,
          COMMUTATOR = '>=',
  	NEGATOR = '>',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR >= (
          LEFTARG = ltree,
  	RIGHTARG = ltree,
  	PROCEDURE = ltree_ge,
          COMMUTATOR = '<=',
  	NEGATOR = '<',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR > (
          LEFTARG = ltree,
  	RIGHTARG = ltree,
  	PROCEDURE = ltree_gt,
          COMMUTATOR = '<',
  	NEGATOR = '<=',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR = (
          LEFTARG = ltree,
  	RIGHTARG = ltree,
  	PROCEDURE = ltree_eq,
          COMMUTATOR = '=',
  	NEGATOR = '<>',
          RESTRICT = eqsel,
  	JOIN = eqjoinsel,
          SORT1 = '<',
  	SORT2 = '<'
  );
  CREATE OPERATOR
  CREATE OPERATOR <> (
          LEFTARG = ltree,
  	RIGHTARG = ltree,
  	PROCEDURE = ltree_ne,
          COMMUTATOR = '<>',
  	NEGATOR = '=',
          RESTRICT = neqsel,
  	JOIN = neqjoinsel
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION subltree(ltree,int4,int4)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION subpath(ltree,int4,int4)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION subpath(ltree,int4)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION index(ltree,ltree)
  RETURNS int4
  AS '$libdir/ltree', 'ltree_index'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION index(ltree,ltree,int4)
  RETURNS int4
  AS '$libdir/ltree', 'ltree_index'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION nlevel(ltree)
  RETURNS int4
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree2text(ltree)
  RETURNS text
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION text2ltree(text)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION lca(_ltree)
  RETURNS ltree
  AS '$libdir/ltree','_lca'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION lca(ltree,ltree)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION lca(ltree,ltree,ltree)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION lca(ltree,ltree,ltree,ltree)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION lca(ltree,ltree,ltree,ltree,ltree)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION lca(ltree,ltree,ltree,ltree,ltree,ltree)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION lca(ltree,ltree,ltree,ltree,ltree,ltree,ltree)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION lca(ltree,ltree,ltree,ltree,ltree,ltree,ltree,ltree)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_isparent(ltree,ltree)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_risparent(ltree,ltree)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_addltree(ltree,ltree)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_addtext(ltree,text)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_textadd(text,ltree)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltreeparentsel(internal, oid, internal, integer)
  RETURNS float8
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR @> (
          LEFTARG = ltree,
  	RIGHTARG = ltree,
  	PROCEDURE = ltree_isparent,
          COMMUTATOR = '<@',
          RESTRICT = ltreeparentsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ^@> (
          LEFTARG = ltree,
  	RIGHTARG = ltree,
  	PROCEDURE = ltree_isparent,
          COMMUTATOR = '^<@',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR <@ (
          LEFTARG = ltree,
  	RIGHTARG = ltree,
  	PROCEDURE = ltree_risparent,
          COMMUTATOR = '@>',
          RESTRICT = ltreeparentsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ^<@ (
          LEFTARG = ltree,
  	RIGHTARG = ltree,
  	PROCEDURE = ltree_risparent,
          COMMUTATOR = '^@>',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR || (
          LEFTARG = ltree,
  	RIGHTARG = ltree,
  	PROCEDURE = ltree_addltree
  );
  CREATE OPERATOR
  CREATE OPERATOR || (
          LEFTARG = ltree,
  	RIGHTARG = text,
  	PROCEDURE = ltree_addtext
  );
  CREATE OPERATOR
  CREATE OPERATOR || (
          LEFTARG = text,
  	RIGHTARG = ltree,
  	PROCEDURE = ltree_textadd
  );
  CREATE OPERATOR
  CREATE OPERATOR CLASS ltree_ops
      DEFAULT FOR TYPE ltree USING btree AS
          OPERATOR        1       < ,
          OPERATOR        2       <= ,
          OPERATOR        3       = ,
          OPERATOR        4       >= ,
          OPERATOR        5       > ,
          FUNCTION        1       ltree_cmp(ltree, ltree);
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION lquery_in(cstring)
  RETURNS lquery
  AS '$libdir/ltree'
  LANGUAGE C STRICT;
  psql:func/ltree.sql:306: NOTICE:  type "lquery" is not yet defined
  DETAIL:  Creating a shell type definition.
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION lquery_out(lquery)
  RETURNS cstring
  AS '$libdir/ltree'
  LANGUAGE C STRICT;
  psql:func/ltree.sql:311: NOTICE:  argument type lquery is only a shell
  CREATE FUNCTION
  CREATE TYPE lquery (
  	INTERNALLENGTH = -1,
  	INPUT = lquery_in,
  	OUTPUT = lquery_out,
  	STORAGE = extended
  );
  CREATE TYPE
  CREATE OR REPLACE FUNCTION ltq_regex(ltree,lquery)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltq_rregex(lquery,ltree)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR ~ (
          LEFTARG = ltree,
  	RIGHTARG = lquery,
  	PROCEDURE = ltq_regex,
  	COMMUTATOR = '~',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ~ (
          LEFTARG = lquery,
  	RIGHTARG = ltree,
  	PROCEDURE = ltq_rregex,
  	COMMUTATOR = '~',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ^~ (
          LEFTARG = ltree,
  	RIGHTARG = lquery,
  	PROCEDURE = ltq_regex,
  	COMMUTATOR = '^~',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ^~ (
          LEFTARG = lquery,
  	RIGHTARG = ltree,
  	PROCEDURE = ltq_rregex,
  	COMMUTATOR = '^~',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION lt_q_regex(ltree,_lquery)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION lt_q_rregex(_lquery,ltree)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR ? (
          LEFTARG = ltree,
  	RIGHTARG = _lquery,
  	PROCEDURE = lt_q_regex,
  	COMMUTATOR = '?',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ? (
          LEFTARG = _lquery,
  	RIGHTARG = ltree,
  	PROCEDURE = lt_q_rregex,
  	COMMUTATOR = '?',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ^? (
          LEFTARG = ltree,
  	RIGHTARG = _lquery,
  	PROCEDURE = lt_q_regex,
  	COMMUTATOR = '^?',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ^? (
          LEFTARG = _lquery,
  	RIGHTARG = ltree,
  	PROCEDURE = lt_q_rregex,
  	COMMUTATOR = '^?',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION ltxtq_in(cstring)
  RETURNS ltxtquery
  AS '$libdir/ltree'
  LANGUAGE C STRICT;
  psql:func/ltree.sql:417: NOTICE:  type "ltxtquery" is not yet defined
  DETAIL:  Creating a shell type definition.
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltxtq_out(ltxtquery)
  RETURNS cstring
  AS '$libdir/ltree'
  LANGUAGE C STRICT;
  psql:func/ltree.sql:422: NOTICE:  argument type ltxtquery is only a shell
  CREATE FUNCTION
  CREATE TYPE ltxtquery (
  	INTERNALLENGTH = -1,
  	INPUT = ltxtq_in,
  	OUTPUT = ltxtq_out,
  	STORAGE = extended
  );
  CREATE TYPE
  CREATE OR REPLACE FUNCTION ltxtq_exec(ltree, ltxtquery)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltxtq_rexec(ltxtquery, ltree)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR @ (
          LEFTARG = ltree,
  	RIGHTARG = ltxtquery,
  	PROCEDURE = ltxtq_exec,
  	COMMUTATOR = '@',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR @ (
          LEFTARG = ltxtquery,
  	RIGHTARG = ltree,
  	PROCEDURE = ltxtq_rexec,
  	COMMUTATOR = '@',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ^@ (
          LEFTARG = ltree,
  	RIGHTARG = ltxtquery,
  	PROCEDURE = ltxtq_exec,
  	COMMUTATOR = '^@',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ^@ (
          LEFTARG = ltxtquery,
  	RIGHTARG = ltree,
  	PROCEDURE = ltxtq_rexec,
  	COMMUTATOR = '^@',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION ltree_gist_in(cstring)
  RETURNS ltree_gist
  AS '$libdir/ltree'
  LANGUAGE C STRICT;
  psql:func/ltree.sql:484: NOTICE:  type "ltree_gist" is not yet defined
  DETAIL:  Creating a shell type definition.
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_gist_out(ltree_gist)
  RETURNS cstring
  AS '$libdir/ltree'
  LANGUAGE C STRICT;
  psql:func/ltree.sql:489: NOTICE:  argument type ltree_gist is only a shell
  CREATE FUNCTION
  CREATE TYPE ltree_gist (
  	internallength = -1,
  	input = ltree_gist_in,
  	output = ltree_gist_out,
  	storage = plain
  );
  CREATE TYPE
  CREATE OR REPLACE FUNCTION ltree_consistent(internal,internal,int2,oid,internal)
  RETURNS bool as '$libdir/ltree' LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_compress(internal)
  RETURNS internal as '$libdir/ltree' LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_decompress(internal)
  RETURNS internal as '$libdir/ltree' LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_penalty(internal,internal,internal)
  RETURNS internal as '$libdir/ltree' LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_picksplit(internal, internal)
  RETURNS internal as '$libdir/ltree' LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_union(internal, internal)
  RETURNS int4 as '$libdir/ltree' LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ltree_same(internal, internal, internal)
  RETURNS internal as '$libdir/ltree' LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_ltree_ops
      DEFAULT FOR TYPE ltree USING gist AS
  	OPERATOR	1	< ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	= ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	> ,
  	OPERATOR	10	@> ,
  	OPERATOR	11	<@ ,
  	OPERATOR	12	~ (ltree, lquery) ,
  	OPERATOR	13	~ (lquery, ltree) ,
  	OPERATOR	14	@ (ltree, ltxtquery) ,
  	OPERATOR	15	@ (ltxtquery, ltree) ,
  	OPERATOR	16	? (ltree, _lquery) ,
  	OPERATOR	17	? (_lquery, ltree) ,
  	FUNCTION	1	ltree_consistent (internal, internal, int2, oid, internal),
  	FUNCTION	2	ltree_union (internal, internal),
  	FUNCTION	3	ltree_compress (internal),
  	FUNCTION	4	ltree_decompress (internal),
  	FUNCTION	5	ltree_penalty (internal, internal, internal),
  	FUNCTION	6	ltree_picksplit (internal, internal),
  	FUNCTION	7	ltree_same (internal, internal, internal),
  	STORAGE		ltree_gist;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION _ltree_isparent(_ltree,ltree)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION _ltree_r_isparent(ltree,_ltree)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION _ltree_risparent(_ltree,ltree)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION _ltree_r_risparent(ltree,_ltree)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION _ltq_regex(_ltree,lquery)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION _ltq_rregex(lquery,_ltree)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION _lt_q_regex(_ltree,_lquery)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION _lt_q_rregex(_lquery,_ltree)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION _ltxtq_exec(_ltree, ltxtquery)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION _ltxtq_rexec(ltxtquery, _ltree)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR @> (
          LEFTARG = _ltree,
  	RIGHTARG = ltree,
  	PROCEDURE = _ltree_isparent,
          COMMUTATOR = '<@',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR <@ (
          LEFTARG = ltree,
  	RIGHTARG = _ltree,
  	PROCEDURE = _ltree_r_isparent,
          COMMUTATOR = '@>',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR <@ (
          LEFTARG = _ltree,
  	RIGHTARG = ltree,
  	PROCEDURE = _ltree_risparent,
          COMMUTATOR = '@>',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR @> (
          LEFTARG = ltree,
  	RIGHTARG = _ltree,
  	PROCEDURE = _ltree_r_risparent,
          COMMUTATOR = '<@',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ~ (
          LEFTARG = _ltree,
  	RIGHTARG = lquery,
  	PROCEDURE = _ltq_regex,
          COMMUTATOR = '~',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ~ (
          LEFTARG = lquery,
  	RIGHTARG = _ltree,
  	PROCEDURE = _ltq_rregex,
          COMMUTATOR = '~',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ? (
          LEFTARG = _ltree,
  	RIGHTARG = _lquery,
  	PROCEDURE = _lt_q_regex,
          COMMUTATOR = '?',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ? (
          LEFTARG = _lquery,
  	RIGHTARG = _ltree,
  	PROCEDURE = _lt_q_rregex,
          COMMUTATOR = '?',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR @ (
          LEFTARG = _ltree,
  	RIGHTARG = ltxtquery,
  	PROCEDURE = _ltxtq_exec,
          COMMUTATOR = '@',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR @ (
          LEFTARG = ltxtquery,
  	RIGHTARG = _ltree,
  	PROCEDURE = _ltxtq_rexec,
          COMMUTATOR = '@',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ^@> (
          LEFTARG = _ltree,
  	RIGHTARG = ltree,
  	PROCEDURE = _ltree_isparent,
          COMMUTATOR = '^<@',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ^<@ (
          LEFTARG = ltree,
  	RIGHTARG = _ltree,
  	PROCEDURE = _ltree_r_isparent,
          COMMUTATOR = '^@>',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ^<@ (
          LEFTARG = _ltree,
  	RIGHTARG = ltree,
  	PROCEDURE = _ltree_risparent,
          COMMUTATOR = '^@>',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ^@> (
          LEFTARG = ltree,
  	RIGHTARG = _ltree,
  	PROCEDURE = _ltree_r_risparent,
          COMMUTATOR = '^<@',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ^~ (
          LEFTARG = _ltree,
  	RIGHTARG = lquery,
  	PROCEDURE = _ltq_regex,
          COMMUTATOR = '^~',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ^~ (
          LEFTARG = lquery,
  	RIGHTARG = _ltree,
  	PROCEDURE = _ltq_rregex,
          COMMUTATOR = '^~',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ^? (
          LEFTARG = _ltree,
  	RIGHTARG = _lquery,
  	PROCEDURE = _lt_q_regex,
          COMMUTATOR = '^?',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ^? (
          LEFTARG = _lquery,
  	RIGHTARG = _ltree,
  	PROCEDURE = _lt_q_rregex,
          COMMUTATOR = '^?',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ^@ (
          LEFTARG = _ltree,
  	RIGHTARG = ltxtquery,
  	PROCEDURE = _ltxtq_exec,
          COMMUTATOR = '^@',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ^@ (
          LEFTARG = ltxtquery,
  	RIGHTARG = _ltree,
  	PROCEDURE = _ltxtq_rexec,
          COMMUTATOR = '^@',
          RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION _ltree_extract_isparent(_ltree,ltree)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR ?@> (
          LEFTARG = _ltree,
  	RIGHTARG = ltree,
  	PROCEDURE = _ltree_extract_isparent
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION _ltree_extract_risparent(_ltree,ltree)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR ?<@ (
          LEFTARG = _ltree,
  	RIGHTARG = ltree,
  	PROCEDURE = _ltree_extract_risparent
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION _ltq_extract_regex(_ltree,lquery)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR ?~ (
          LEFTARG = _ltree,
  	RIGHTARG = lquery,
  	PROCEDURE = _ltq_extract_regex
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION _ltxtq_extract_exec(_ltree,ltxtquery)
  RETURNS ltree
  AS '$libdir/ltree'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR ?@ (
          LEFTARG = _ltree,
  	RIGHTARG = ltxtquery,
  	PROCEDURE = _ltxtq_extract_exec
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION _ltree_consistent(internal,internal,int2,oid,internal)
  RETURNS bool
  AS '$libdir/ltree'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION _ltree_compress(internal)
  RETURNS internal
  AS '$libdir/ltree'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION _ltree_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/ltree'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION _ltree_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/ltree'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION _ltree_union(internal, internal)
  RETURNS int4
  AS '$libdir/ltree'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION _ltree_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/ltree'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist__ltree_ops
      DEFAULT FOR TYPE _ltree USING gist AS
  	OPERATOR	10	<@ (_ltree, ltree),
  	OPERATOR	11	@> (ltree, _ltree),
  	OPERATOR	12	~ (_ltree, lquery),
  	OPERATOR	13	~ (lquery, _ltree),
  	OPERATOR	14	@ (_ltree, ltxtquery),
  	OPERATOR	15	@ (ltxtquery, _ltree),
  	OPERATOR	16	? (_ltree, _lquery),
  	OPERATOR	17	? (_lquery, _ltree),
  	FUNCTION	1	_ltree_consistent (internal, internal, int2, oid, internal),
  	FUNCTION	2	_ltree_union (internal, internal),
  	FUNCTION	3	_ltree_compress (internal),
  	FUNCTION	4	ltree_decompress (internal),
  	FUNCTION	5	_ltree_penalty (internal, internal, internal),
  	FUNCTION	6	_ltree_picksplit (internal, internal),
  	FUNCTION	7	_ltree_same (internal, internal, internal),
  	STORAGE		ltree_gist;
  CREATE OPERATOR CLASS
==> Mk table/rolki.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/rolki.sql; then touch table/rolki.ck; else kill 31932; fi
  /*
   * Copyright (c) 2011 Anibal Ezau Limon Belmares <limon.anibal@gmail.com>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * Role kind table, this are the predefined roles into pg_roles.
   */
  drop table if exists rolki cascade;
  psql:table/rolki.sql:21: NOTICE:  table "rolki" does not exist, skipping
  DROP TABLE
  create table rolki (
  	
  	rolkiid		bigserial not null primary key check (rolkiid > 0),
  	
  	rolkna		varchar(126) unique not null
  );
  psql:table/rolki.sql:28: NOTICE:  CREATE TABLE will create implicit sequence "rolki_rolkiid_seq" for serial column "rolki.rolkiid"
  psql:table/rolki.sql:28: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "rolki_pkey" for table "rolki"
  psql:table/rolki.sql:28: NOTICE:  CREATE TABLE / UNIQUE will create implicit index "rolki_rolkna_key" for table "rolki"
  CREATE TABLE
==> Mk func/btree_gist.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/btree_gist.sql; then touch func/btree_gist.ck; else kill 30919; fi
  /* $PostgreSQL: pgsql/contrib/btree_gist/btree_gist.sql.in,v 1.21 2009/06/11 18:30:03 tgl Exp $ */
  
  SET search_path = public;
  SET
  CREATE OR REPLACE FUNCTION gbtreekey4_in(cstring)
  RETURNS gbtreekey4
  AS '$libdir/btree_gist', 'gbtreekey_in'
  LANGUAGE C IMMUTABLE STRICT;
  psql:func/btree_gist.sql:9: NOTICE:  type "gbtreekey4" is not yet defined
  DETAIL:  Creating a shell type definition.
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbtreekey4_out(gbtreekey4)
  RETURNS cstring
  AS '$libdir/btree_gist', 'gbtreekey_out'
  LANGUAGE C IMMUTABLE STRICT;
  psql:func/btree_gist.sql:14: NOTICE:  argument type gbtreekey4 is only a shell
  CREATE FUNCTION
  CREATE TYPE gbtreekey4 (
  	INTERNALLENGTH = 4,
  	INPUT  = gbtreekey4_in,
  	OUTPUT = gbtreekey4_out
  );
  CREATE TYPE
  CREATE OR REPLACE FUNCTION gbtreekey8_in(cstring)
  RETURNS gbtreekey8
  AS '$libdir/btree_gist', 'gbtreekey_in'
  LANGUAGE C IMMUTABLE STRICT;
  psql:func/btree_gist.sql:25: NOTICE:  type "gbtreekey8" is not yet defined
  DETAIL:  Creating a shell type definition.
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbtreekey8_out(gbtreekey8)
  RETURNS cstring
  AS '$libdir/btree_gist', 'gbtreekey_out'
  LANGUAGE C IMMUTABLE STRICT;
  psql:func/btree_gist.sql:30: NOTICE:  argument type gbtreekey8 is only a shell
  CREATE FUNCTION
  CREATE TYPE gbtreekey8 (
  	INTERNALLENGTH = 8,
  	INPUT  = gbtreekey8_in,
  	OUTPUT = gbtreekey8_out
  );
  CREATE TYPE
  CREATE OR REPLACE FUNCTION gbtreekey16_in(cstring)
  RETURNS gbtreekey16
  AS '$libdir/btree_gist', 'gbtreekey_in'
  LANGUAGE C IMMUTABLE STRICT;
  psql:func/btree_gist.sql:41: NOTICE:  type "gbtreekey16" is not yet defined
  DETAIL:  Creating a shell type definition.
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbtreekey16_out(gbtreekey16)
  RETURNS cstring
  AS '$libdir/btree_gist', 'gbtreekey_out'
  LANGUAGE C IMMUTABLE STRICT;
  psql:func/btree_gist.sql:46: NOTICE:  argument type gbtreekey16 is only a shell
  CREATE FUNCTION
  CREATE TYPE gbtreekey16 (
  	INTERNALLENGTH = 16,
  	INPUT  = gbtreekey16_in,
  	OUTPUT = gbtreekey16_out
  );
  CREATE TYPE
  CREATE OR REPLACE FUNCTION gbtreekey32_in(cstring)
  RETURNS gbtreekey32
  AS '$libdir/btree_gist', 'gbtreekey_in'
  LANGUAGE C IMMUTABLE STRICT;
  psql:func/btree_gist.sql:57: NOTICE:  type "gbtreekey32" is not yet defined
  DETAIL:  Creating a shell type definition.
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbtreekey32_out(gbtreekey32)
  RETURNS cstring
  AS '$libdir/btree_gist', 'gbtreekey_out'
  LANGUAGE C IMMUTABLE STRICT;
  psql:func/btree_gist.sql:62: NOTICE:  argument type gbtreekey32 is only a shell
  CREATE FUNCTION
  CREATE TYPE gbtreekey32 (
  	INTERNALLENGTH = 32,
  	INPUT  = gbtreekey32_in,
  	OUTPUT = gbtreekey32_out
  );
  CREATE TYPE
  CREATE OR REPLACE FUNCTION gbtreekey_var_in(cstring)
  RETURNS gbtreekey_var
  AS '$libdir/btree_gist', 'gbtreekey_in'
  LANGUAGE C IMMUTABLE STRICT;
  psql:func/btree_gist.sql:73: NOTICE:  type "gbtreekey_var" is not yet defined
  DETAIL:  Creating a shell type definition.
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbtreekey_var_out(gbtreekey_var)
  RETURNS cstring
  AS '$libdir/btree_gist', 'gbtreekey_out'
  LANGUAGE C IMMUTABLE STRICT;
  psql:func/btree_gist.sql:78: NOTICE:  argument type gbtreekey_var is only a shell
  CREATE FUNCTION
  CREATE TYPE gbtreekey_var (
  	INTERNALLENGTH = VARIABLE,
  	INPUT  = gbtreekey_var_in,
  	OUTPUT = gbtreekey_var_out,
  	STORAGE = EXTENDED
  );
  CREATE TYPE
  CREATE OR REPLACE FUNCTION gbt_oid_consistent(internal,oid,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_oid_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_decompress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_var_decompress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_oid_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_oid_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_oid_union(bytea, internal)
  RETURNS gbtreekey8
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_oid_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_oid_ops
  DEFAULT FOR TYPE oid USING gist 
  AS
  	OPERATOR	1	<  ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	=  ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	>  ,
  	FUNCTION	1	gbt_oid_consistent (internal, oid, int2, oid, internal),
  	FUNCTION	2	gbt_oid_union (bytea, internal),
  	FUNCTION	3	gbt_oid_compress (internal),
  	FUNCTION	4	gbt_decompress (internal),
  	FUNCTION	5	gbt_oid_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_oid_picksplit (internal, internal),
  	FUNCTION	7	gbt_oid_same (internal, internal, internal),
  	STORAGE		gbtreekey8;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION gbt_int2_consistent(internal,int2,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_int2_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_int2_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_int2_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_int2_union(bytea, internal)
  RETURNS gbtreekey4
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_int2_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_int2_ops
  DEFAULT FOR TYPE int2 USING gist 
  AS
  	OPERATOR	1	<  ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	=  ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	>  ,
  	FUNCTION	1	gbt_int2_consistent (internal, int2, int2, oid, internal),
  	FUNCTION	2	gbt_int2_union (bytea, internal),
  	FUNCTION	3	gbt_int2_compress (internal),
  	FUNCTION	4	gbt_decompress (internal),
  	FUNCTION	5	gbt_int2_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_int2_picksplit (internal, internal),
  	FUNCTION	7	gbt_int2_same (internal, internal, internal),
  	STORAGE		gbtreekey4;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION gbt_int4_consistent(internal,int4,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_int4_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_int4_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_int4_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_int4_union(bytea, internal)
  RETURNS gbtreekey8
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_int4_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_int4_ops
  DEFAULT FOR TYPE int4 USING gist 
  AS
  	OPERATOR	1	<  ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	=  ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	>  ,
  	FUNCTION	1	gbt_int4_consistent (internal, int4, int2, oid, internal),
  	FUNCTION	2	gbt_int4_union (bytea, internal),
  	FUNCTION	3	gbt_int4_compress (internal),
  	FUNCTION	4	gbt_decompress (internal),
  	FUNCTION	5	gbt_int4_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_int4_picksplit (internal, internal),
  	FUNCTION	7	gbt_int4_same (internal, internal, internal),
  	STORAGE		gbtreekey8;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION gbt_int8_consistent(internal,int8,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_int8_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_int8_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_int8_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_int8_union(bytea, internal)
  RETURNS gbtreekey16
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_int8_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_int8_ops
  DEFAULT FOR TYPE int8 USING gist 
  AS
  	OPERATOR	1	<  ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	=  ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	>  ,
  	FUNCTION	1	gbt_int8_consistent (internal, int8, int2, oid, internal),
  	FUNCTION	2	gbt_int8_union (bytea, internal),
  	FUNCTION	3	gbt_int8_compress (internal),
  	FUNCTION	4	gbt_decompress (internal),
  	FUNCTION	5	gbt_int8_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_int8_picksplit (internal, internal),
  	FUNCTION	7	gbt_int8_same (internal, internal, internal),
  	STORAGE		gbtreekey16;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION gbt_float4_consistent(internal,float4,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_float4_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_float4_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_float4_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_float4_union(bytea, internal)
  RETURNS gbtreekey8
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_float4_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_float4_ops
  DEFAULT FOR TYPE float4 USING gist 
  AS
  	OPERATOR	1	<  ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	=  ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	>  ,
  	FUNCTION	1	gbt_float4_consistent (internal, float4, int2, oid, internal),
  	FUNCTION	2	gbt_float4_union (bytea, internal),
  	FUNCTION	3	gbt_float4_compress (internal),
  	FUNCTION	4	gbt_decompress (internal),
  	FUNCTION	5	gbt_float4_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_float4_picksplit (internal, internal),
  	FUNCTION	7	gbt_float4_same (internal, internal, internal),
  	STORAGE		gbtreekey8;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION gbt_float8_consistent(internal,float8,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_float8_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_float8_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_float8_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_float8_union(bytea, internal)
  RETURNS gbtreekey16
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_float8_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_float8_ops
  DEFAULT FOR TYPE float8 USING gist 
  AS
  	OPERATOR	1	<  ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	=  ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	>  ,
  	FUNCTION	1	gbt_float8_consistent (internal, float8, int2, oid, internal),
  	FUNCTION	2	gbt_float8_union (bytea, internal),
  	FUNCTION	3	gbt_float8_compress (internal),
  	FUNCTION	4	gbt_decompress (internal),
  	FUNCTION	5	gbt_float8_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_float8_picksplit (internal, internal),
  	FUNCTION	7	gbt_float8_same (internal, internal, internal),
  	STORAGE		gbtreekey16;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION gbt_ts_consistent(internal,timestamp,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_tstz_consistent(internal,timestamptz,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_ts_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_tstz_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_ts_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_ts_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_ts_union(bytea, internal)
  RETURNS gbtreekey16
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_ts_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_timestamp_ops
  DEFAULT FOR TYPE timestamp USING gist 
  AS
  	OPERATOR	1	<  ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	=  ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	>  ,
  	FUNCTION	1	gbt_ts_consistent (internal, timestamp, int2, oid, internal),
  	FUNCTION	2	gbt_ts_union (bytea, internal),
  	FUNCTION	3	gbt_ts_compress (internal),
  	FUNCTION	4	gbt_decompress (internal),
  	FUNCTION	5	gbt_ts_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_ts_picksplit (internal, internal),
  	FUNCTION	7	gbt_ts_same (internal, internal, internal),
  	STORAGE		gbtreekey16;
  CREATE OPERATOR CLASS
  CREATE OPERATOR CLASS gist_timestamptz_ops
  DEFAULT FOR TYPE timestamptz USING gist 
  AS
  	OPERATOR	1	<  ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	=  ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	>  ,
  	FUNCTION	1	gbt_tstz_consistent (internal, timestamptz, int2, oid, internal),
  	FUNCTION	2	gbt_ts_union (bytea, internal),
  	FUNCTION	3	gbt_tstz_compress (internal),
  	FUNCTION	4	gbt_decompress (internal),
  	FUNCTION	5	gbt_ts_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_ts_picksplit (internal, internal),
  	FUNCTION	7	gbt_ts_same (internal, internal, internal),
  	STORAGE		gbtreekey16;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION gbt_time_consistent(internal,time,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_timetz_consistent(internal,timetz,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_time_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_timetz_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_time_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_time_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_time_union(bytea, internal)
  RETURNS gbtreekey16
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_time_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_time_ops
  DEFAULT FOR TYPE time USING gist 
  AS
  	OPERATOR	1	<  ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	=  ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	>  ,
  	FUNCTION	1	gbt_time_consistent (internal, time, int2, oid, internal),
  	FUNCTION	2	gbt_time_union (bytea, internal),
  	FUNCTION	3	gbt_time_compress (internal),
  	FUNCTION	4	gbt_decompress (internal),
  	FUNCTION	5	gbt_time_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_time_picksplit (internal, internal),
  	FUNCTION	7	gbt_time_same (internal, internal, internal),
  	STORAGE		gbtreekey16;
  CREATE OPERATOR CLASS
  CREATE OPERATOR CLASS gist_timetz_ops
  DEFAULT FOR TYPE timetz USING gist 
  AS
  	OPERATOR	1	<   ,
  	OPERATOR	2	<=  ,
  	OPERATOR	3	=   ,
  	OPERATOR	4	>=  ,
  	OPERATOR	5	>   ,
  	FUNCTION	1	gbt_timetz_consistent (internal, timetz, int2, oid, internal),
  	FUNCTION	2	gbt_time_union (bytea, internal),
  	FUNCTION	3	gbt_timetz_compress (internal),
  	FUNCTION	4	gbt_decompress (internal),
  	FUNCTION	5	gbt_time_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_time_picksplit (internal, internal),
  	FUNCTION	7	gbt_time_same (internal, internal, internal),
  	STORAGE		gbtreekey16;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION gbt_date_consistent(internal,date,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_date_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_date_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_date_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_date_union(bytea, internal)
  RETURNS gbtreekey8
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_date_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_date_ops
  DEFAULT FOR TYPE date USING gist 
  AS
  	OPERATOR	1	<  ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	=  ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	>  ,
  	FUNCTION	1	gbt_date_consistent (internal, date, int2, oid, internal),
  	FUNCTION	2	gbt_date_union (bytea, internal),
  	FUNCTION	3	gbt_date_compress (internal),
  	FUNCTION	4	gbt_decompress (internal),
  	FUNCTION	5	gbt_date_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_date_picksplit (internal, internal),
  	FUNCTION	7	gbt_date_same (internal, internal, internal),
  	STORAGE		gbtreekey8;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION gbt_intv_consistent(internal,interval,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_intv_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_intv_decompress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_intv_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_intv_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_intv_union(bytea, internal)
  RETURNS gbtreekey32
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_intv_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_interval_ops
  DEFAULT FOR TYPE interval USING gist 
  AS
  	OPERATOR	1	< ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	= ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	> ,
  	FUNCTION	1	gbt_intv_consistent (internal, interval, int2, oid, internal),
  	FUNCTION	2	gbt_intv_union (bytea, internal),
  	FUNCTION	3	gbt_intv_compress (internal),
  	FUNCTION	4	gbt_intv_decompress (internal),
  	FUNCTION	5	gbt_intv_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_intv_picksplit (internal, internal),
  	FUNCTION	7	gbt_intv_same (internal, internal, internal),
  	STORAGE		gbtreekey32;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION gbt_cash_consistent(internal,money,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_cash_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_cash_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_cash_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_cash_union(bytea, internal)
  RETURNS gbtreekey8
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_cash_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_cash_ops
  DEFAULT FOR TYPE money USING gist 
  AS
  	OPERATOR	1	< ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	= ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	> ,
  	FUNCTION	1	gbt_cash_consistent (internal, money, int2, oid, internal),
  	FUNCTION	2	gbt_cash_union (bytea, internal),
  	FUNCTION	3	gbt_cash_compress (internal),
  	FUNCTION	4	gbt_decompress (internal),
  	FUNCTION	5	gbt_cash_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_cash_picksplit (internal, internal),
  	FUNCTION	7	gbt_cash_same (internal, internal, internal),
  	STORAGE		gbtreekey16;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION gbt_macad_consistent(internal,macaddr,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_macad_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_macad_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_macad_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_macad_union(bytea, internal)
  RETURNS gbtreekey16
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_macad_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_macaddr_ops
  DEFAULT FOR TYPE macaddr USING gist 
  AS
  	OPERATOR	1	< ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	= ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	> ,
  	FUNCTION	1	gbt_macad_consistent (internal, macaddr, int2, oid, internal),
  	FUNCTION	2	gbt_macad_union (bytea, internal),
  	FUNCTION	3	gbt_macad_compress (internal),
  	FUNCTION	4	gbt_decompress (internal),
  	FUNCTION	5	gbt_macad_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_macad_picksplit (internal, internal),
  	FUNCTION	7	gbt_macad_same (internal, internal, internal),
  	STORAGE		gbtreekey16;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION gbt_text_consistent(internal,text,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_bpchar_consistent(internal,bpchar,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_text_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_bpchar_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_text_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_text_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_text_union(bytea, internal)
  RETURNS gbtreekey_var
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_text_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_text_ops
  DEFAULT FOR TYPE text USING gist 
  AS
  	OPERATOR	1	<  ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	=  ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	>  ,
  	FUNCTION	1	gbt_text_consistent (internal, text, int2, oid, internal),
  	FUNCTION	2	gbt_text_union (bytea, internal),
  	FUNCTION	3	gbt_text_compress (internal),
  	FUNCTION	4	gbt_var_decompress (internal),
  	FUNCTION	5	gbt_text_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_text_picksplit (internal, internal),
  	FUNCTION	7	gbt_text_same (internal, internal, internal),
  	STORAGE	                gbtreekey_var;
  CREATE OPERATOR CLASS
  CREATE OPERATOR CLASS gist_bpchar_ops
  DEFAULT FOR TYPE bpchar USING gist 
  AS
  	OPERATOR	1	<  ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	=  ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	>  ,
  	FUNCTION	1	gbt_bpchar_consistent (internal, bpchar , int2, oid, internal),
  	FUNCTION	2	gbt_text_union (bytea, internal),
  	FUNCTION	3	gbt_bpchar_compress (internal),
  	FUNCTION	4	gbt_var_decompress (internal),
  	FUNCTION	5	gbt_text_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_text_picksplit (internal, internal),
  	FUNCTION	7	gbt_text_same (internal, internal, internal),
  	STORAGE	                gbtreekey_var;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION gbt_bytea_consistent(internal,bytea,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_bytea_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_bytea_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_bytea_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_bytea_union(bytea, internal)
  RETURNS gbtreekey_var
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_bytea_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_bytea_ops
  DEFAULT FOR TYPE bytea USING gist 
  AS
  	OPERATOR	1	<  ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	=  ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	>  ,
  	FUNCTION	1	gbt_bytea_consistent (internal, bytea, int2, oid, internal),
  	FUNCTION	2	gbt_bytea_union (bytea, internal),
  	FUNCTION	3	gbt_bytea_compress (internal),
  	FUNCTION	4	gbt_var_decompress (internal),
  	FUNCTION	5	gbt_bytea_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_bytea_picksplit (internal, internal),
  	FUNCTION	7	gbt_bytea_same (internal, internal, internal),
  	STORAGE	                gbtreekey_var;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION gbt_numeric_consistent(internal,numeric,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_numeric_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_numeric_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_numeric_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_numeric_union(bytea, internal)
  RETURNS gbtreekey_var
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_numeric_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_numeric_ops
  DEFAULT FOR TYPE numeric USING gist 
  AS
  	OPERATOR	1	<  ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	=  ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	>  ,
  	FUNCTION	1	gbt_numeric_consistent (internal, numeric, int2, oid, internal),
  	FUNCTION	2	gbt_numeric_union (bytea, internal),
  	FUNCTION	3	gbt_numeric_compress (internal),
  	FUNCTION	4	gbt_var_decompress (internal),
  	FUNCTION	5	gbt_numeric_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_numeric_picksplit (internal, internal),
  	FUNCTION	7	gbt_numeric_same (internal, internal, internal),
  	STORAGE	                gbtreekey_var;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION gbt_bit_consistent(internal,bit,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_bit_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_bit_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_bit_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_bit_union(bytea, internal)
  RETURNS gbtreekey_var
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_bit_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_bit_ops
  DEFAULT FOR TYPE bit USING gist 
  AS
  	OPERATOR	1	<  ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	=  ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	>  ,
  	FUNCTION	1	gbt_bit_consistent (internal, bit, int2, oid, internal),
  	FUNCTION	2	gbt_bit_union (bytea, internal),
  	FUNCTION	3	gbt_bit_compress (internal),
  	FUNCTION	4	gbt_var_decompress (internal),
  	FUNCTION	5	gbt_bit_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_bit_picksplit (internal, internal),
  	FUNCTION	7	gbt_bit_same (internal, internal, internal),
  	STORAGE	                gbtreekey_var;
  CREATE OPERATOR CLASS
  CREATE OPERATOR CLASS gist_vbit_ops
  DEFAULT FOR TYPE varbit USING gist 
  AS
  	OPERATOR	1	<  ,
  	OPERATOR	2	<= ,
  	OPERATOR	3	=  ,
  	OPERATOR	4	>= ,
  	OPERATOR	5	>  ,
  	FUNCTION	1	gbt_bit_consistent (internal, bit, int2, oid, internal),
  	FUNCTION	2	gbt_bit_union (bytea, internal),
  	FUNCTION	3	gbt_bit_compress (internal),
  	FUNCTION	4	gbt_var_decompress (internal),
  	FUNCTION	5	gbt_bit_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_bit_picksplit (internal, internal),
  	FUNCTION	7	gbt_bit_same (internal, internal, internal),
  	STORAGE	                gbtreekey_var;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION gbt_inet_consistent(internal,inet,int2,oid,internal)
  RETURNS bool
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_inet_compress(internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_inet_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_inet_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_inet_union(bytea, internal)
  RETURNS gbtreekey16
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gbt_inet_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/btree_gist'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_inet_ops
  DEFAULT FOR TYPE inet USING gist 
  AS
  	OPERATOR	1	<   ,
  	OPERATOR	2	<=  ,
  	OPERATOR	3	=   ,
  	OPERATOR	4	>=  ,
  	OPERATOR	5	>   ,
  	FUNCTION	1	gbt_inet_consistent (internal, inet, int2, oid, internal),
  	FUNCTION	2	gbt_inet_union (bytea, internal),
  	FUNCTION	3	gbt_inet_compress (internal),
  	FUNCTION	4	gbt_decompress (internal),
  	FUNCTION	5	gbt_inet_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_inet_picksplit (internal, internal),
  	FUNCTION	7	gbt_inet_same (internal, internal, internal),
  	STORAGE		gbtreekey16;
  CREATE OPERATOR CLASS
  CREATE OPERATOR CLASS gist_cidr_ops
  DEFAULT FOR TYPE cidr USING gist 
  AS
  	OPERATOR	1	<  (inet, inet)  ,
  	OPERATOR	2	<= (inet, inet)  ,
  	OPERATOR	3	=  (inet, inet)  ,
  	OPERATOR	4	>= (inet, inet)  ,
  	OPERATOR	5	>  (inet, inet)  ,
  	FUNCTION	1	gbt_inet_consistent (internal, inet, int2, oid, internal),
  	FUNCTION	2	gbt_inet_union (bytea, internal),
  	FUNCTION	3	gbt_inet_compress (internal),
  	FUNCTION	4	gbt_decompress (internal),
  	FUNCTION	5	gbt_inet_penalty (internal, internal, internal),
  	FUNCTION	6	gbt_inet_picksplit (internal, internal),
  	FUNCTION	7	gbt_inet_same (internal, internal, internal),
  	STORAGE		gbtreekey16;
  CREATE OPERATOR CLASS
==> Mk func/chronos/chronos_utils.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/chronos/chronos_utils.sql; then touch func/chronos/chronos_utils.ck; else kill 17144; fi
  /*
       Helper functions for  Chronos Temporal Extensions
       Author:     Scott Bailey
       License:    BSD
  
      Copyright (c) 2009, Scott Bailey
  
      All rights reserved.
  
      Redistribution and use in source and binary forms, with or without
      modification, are permitted provided that the following conditions are met:
          * Redistributions of source code must retain the above copyright
            notice, this list of conditions and the following disclaimer.
          * Redistributions in binary form must reproduce the above copyright
            notice, this list of conditions and the following disclaimer in the
            documentation and/or other materials provided with the distribution.
          * Neither the name of the <organization> nor the
            names of its contributors may be used to endorse or promote products
            derived from this software without specific prior written permission.
  
      THIS SOFTWARE IS PROVIDED BY Scott Bailey ''AS IS'' AND ANY
      EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
      WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
      DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
      DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
      (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
      LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
      ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
      (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
      SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
  
  /*****************************************************************
  *                             CONFIG
  *****************************************************************/
  
  /*
  *  These settings controls how much to increment or decrement when
  *  adding numeric values to date/time values.
  *  Common values:
  *  '1us'   or   '1 microsecond' (default for temporal project period)
  *  '1ms'        '1 millisecond'
  *  '1s'         '1 second' (default for timestamp, period and time)
  *  '1m'         '1 minute'
  *  '1h'         '1 hour'
  *  '1d'         '1 day'    (default for date)
  */
  
  
  CREATE OR REPLACE FUNCTION timestamp_granularity()
  RETURNS INTERVAL AS
  $$
      SELECT INTERVAL '1s';
  $$ LANGUAGE 'sql' IMMUTABLE;
  CREATE FUNCTION
  COMMENT ON FUNCTION timestamp_granularity() 
  IS 'Configuration for units to use in time/timestamp math.';
  COMMENT
  CREATE OR REPLACE FUNCTION date_granularity()
  RETURNS INTERVAL AS
  $$
      SELECT INTERVAL '1 day';
  $$ LANGUAGE 'sql' IMMUTABLE;
  CREATE FUNCTION
  COMMENT ON FUNCTION date_granularity() 
  IS 'Configuration for units to use in date math.';
  COMMENT
  CREATE OR REPLACE FUNCTION period_granularity()
  RETURNS INTERVAL AS
  $$
      SELECT INTERVAL '1s';
  $$ LANGUAGE 'sql' IMMUTABLE;
  CREATE FUNCTION
  COMMENT ON FUNCTION period_granularity()
  IS 'Configuration for units to use in period math.';
  COMMENT
  /*****************************************************************
  *                      timestamp functions
  *****************************************************************/
  
  
  CREATE OR REPLACE FUNCTION prior(ts1 timestampTz)
  RETURNS timestampTz AS
  $$
      SELECT $1 - timestamp_granularity();
  $$ LANGUAGE 'sql' IMMUTABLE STRICT COST 1;
  CREATE FUNCTION
  COMMENT ON FUNCTION prior(timestampTz) 
  IS 'Timestamp immediately prior to ts1 (1 granule)';
  COMMENT
  CREATE OR REPLACE FUNCTION prior(ts1 timestamp)
  RETURNS timestamp AS
  $$
      SELECT $1 - timestamp_granularity();
  $$ LANGUAGE 'sql' IMMUTABLE STRICT COST 1;
  CREATE FUNCTION
  COMMENT ON FUNCTION prior(timestamp) 
  IS 'Timestamp immediately prior to ts1 (1 granule)';
  COMMENT
  CREATE OR REPLACE FUNCTION next(ts1 timestampTz)
  RETURNS timestampTz AS
  $$
      SELECT $1 + timestamp_granularity();
  $$ LANGUAGE 'sql' IMMUTABLE STRICT COST 1;
  CREATE FUNCTION
  COMMENT ON FUNCTION next(timestampTz)
  IS 'Timestamp immediately after ts1 (1 granule)';
  COMMENT
  CREATE OR REPLACE FUNCTION next(timestamp)
  RETURNS timestamp AS
  $$
      SELECT $1 + timestamp_granularity();
  $$ LANGUAGE 'sql' IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION next(timestamp)
  IS 'Timestamp immediately after ts1 (1 granule)';
  COMMENT
  CREATE OR REPLACE FUNCTION timestamp_add(ts1 timestampTz, n numeric)
  RETURNS timestampTz AS
  $$
      SELECT $1 + timestamp_granularity() * $2;
  $$ LANGUAGE 'sql' IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION timestamp_add(timestampTz, numeric)
  IS 'Add n timestamp granules to ts1';
  COMMENT
  CREATE OR REPLACE FUNCTION timestamp_add(ts1 timestamp, n numeric)
  RETURNS timestamp AS
  $$
      SELECT $1 + timestamp_granularity() * $2;
  $$ LANGUAGE 'sql' IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION timestamp_add(timestamp, numeric)
  IS 'Add n timestamp granules to ts1';
  COMMENT
  CREATE OR REPLACE FUNCTION timestamp_subtract(ts1 timestampTz, n numeric)
  RETURNS timestampTz AS
  $$
      SELECT $1 - timestamp_granularity() * $2;
  $$ LANGUAGE 'sql' IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION timestamp_subtract(timestampTz, numeric)
  IS 'Subtract n timestamp granules from ts1';
  COMMENT
  CREATE OR REPLACE FUNCTION timestamp_subtract(ts1 timestamp, n numeric)
  RETURNS timestamp AS
  $$
      SELECT $1 - timestamp_granularity() * $2;
  $$ LANGUAGE 'sql' IMMUTABLE STRICT COST 1;
  CREATE FUNCTION
  COMMENT ON FUNCTION timestamp_subtract(timestamp, numeric)
  IS 'Subtract n timestamp granules from ts1';
  COMMENT
  /*****************************************************************
  *                       date functions
  *****************************************************************/
  
  
  
  CREATE OR REPLACE FUNCTION date_add(d1 date, n numeric)
  RETURNS timestampTz AS
  $$
      SELECT $1::timestampTz + date_granularity() * $2;
  $$ LANGUAGE 'sql' IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION date_add(date, numeric)
  IS 'Add n date granules to d1. The date type only allows interger
  addition. This allows numeric addition and returns a timestampTz.';
  COMMENT
  CREATE OR REPLACE FUNCTION date_subtract(d1 date, n numeric)
  RETURNS timestampTz AS
  $$
      SELECT $1::timestampTz - date_granularity() * $2;
  $$ LANGUAGE 'sql' IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION date_subtract(date, numeric)
  IS 'Subtract n date granules from d1. The date type only allows interger
  subtraction. This allows numeric subtraction and returns a timestampTz.';
  COMMENT
  CREATE OR REPLACE FUNCTION last_day(d1 date)
  RETURNS date AS
  $$
      SELECT 
        CASE WHEN mo IN (1,3,5,7,8,10,12)
          THEN mon_start + 30 -- 31 days
        WHEN mo IN (4,6,9,11)
         THEN mon_start + 29 -- 30 days
        WHEN MOD(yr, 4) != 0 
          OR (MOD(yr, 100) = 0 AND MOD(yr, 400) != 0)
          THEN mon_start + 27 -- 28 days
        ELSE mon_start + 28 -- 29 days
      END
      FROM (
        SELECT EXTRACT(MONTH FROM $1)::int AS mo,
          EXTRACT(YEAR FROM $1)::int AS yr,
          DATE_TRUNC('MONTH', $1)::date AS mon_start
      ) sub
  $$ LANGUAGE 'sql' IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION last_day(date)
  IS 'Returns the last day in the month containing d1';
  COMMENT
  CREATE OR REPLACE FUNCTION week_of_month(d1 date, dir int)
  RETURNS int AS
  $$
    SELECT CASE WHEN $2 >= 0 THEN
      CEIL(EXTRACT(DAY FROM $1) / 7)::int
    ELSE 
      0 - CEIL(
        (EXTRACT(DAY FROM last_day($1)) - EXTRACT(DAY FROM $1) + 1) / 7
      )::int
    END
  $$ LANGUAGE 'sql' IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION week_of_month(date, int)
  IS 'Get the week of month from either the start or end of the month.';
  COMMENT
  CREATE OR REPLACE FUNCTION week_of_month(d1 date)
  RETURNS int AS
  $$
    SELECT week_of_month($1, 1);
  $$ LANGUAGE 'sql' IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION week_of_month(date)
  IS 'Get the week of month from the start of the month.';
  COMMENT
  CREATE OR REPLACE FUNCTION day_of_cycle(
    dt	       date,
    anchor_date  date,
    cycle_length int
  ) RETURNS int AS
  $$
    SELECT CASE WHEN $1 > $2 THEN
      MOD($1 - $2, $3)
    WHEN $1 < $2 THEN 
      MOD($3 - MOD($1 - $2, $3), $3)
    ELSE 0 END;
  $$ LANGUAGE 'sql' IMMUTABLE;
  CREATE FUNCTION
  COMMENT ON FUNCTION day_of_cycle(date,date,int)
  IS 'Find where a date is in a cycle given the anchor date and length of a cycle.';
  COMMENT
  /*****************************************************************
  *                        time functions
  *****************************************************************/
  
  
  CREATE OR REPLACE FUNCTION time_add(t1 time, n numeric)
  RETURNS time AS
  $$
      SELECT $1 + timestamp_granularity() * $2;
  $$ LANGUAGE 'sql' IMMUTABLE STRICT COST 1;
  CREATE FUNCTION
  COMMENT ON FUNCTION time_add(time, numeric)
  IS 'Add n timestamp granules to t1.';
  COMMENT
  CREATE OR REPLACE FUNCTION time_add(t1 timeTz, n numeric)
  RETURNS timeTz AS
  $$
      SELECT $1 + timestamp_granularity() * $2;
  $$ LANGUAGE 'sql' IMMUTABLE STRICT COST 1;
  CREATE FUNCTION
  COMMENT ON FUNCTION time_add(timeTz, numeric)
  IS 'Add n timestamp granules to t1.';
  COMMENT
  CREATE OR REPLACE FUNCTION time_subtract(t1 time, n numeric)
  RETURNS time AS
  $$
      SELECT $1 - timestamp_granularity() * $2;
  $$ LANGUAGE 'sql' IMMUTABLE STRICT COST 1;
  CREATE FUNCTION
  COMMENT ON FUNCTION time_subtract(time, numeric)
  IS 'Subtract n timestamp granules from t1';
  COMMENT
  CREATE OR REPLACE FUNCTION time_subtract(t1 timeTz, n numeric)
  RETURNS timeTz AS
  $$
      SELECT $1 - timestamp_granularity() * $2;
  $$ LANGUAGE 'sql' IMMUTABLE STRICT COST 1;
  CREATE FUNCTION
  COMMENT ON FUNCTION time_subtract(timeTz, numeric)
  IS 'Subtract n timestamp granules from t1';
  COMMENT
  /*****************************************************************
  *                        interval functions
  *****************************************************************/
  
  
  CREATE OR REPLACE FUNCTION seconds(i interval)
  RETURNS numeric AS
  $$
      SELECT EXTRACT(EPOCH FROM $1)::numeric;
  $$ LANGUAGE 'sql' IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION seconds(interval)
  IS 'Convert interval to seconds. Opposite of to_interval(numeric).';
  COMMENT
  CREATE OR REPLACE FUNCTION to_interval(n numeric)
  RETURNS interval AS
  $$
    SELECT INTERVAL '1s' * $1;
  $$ LANGUAGE 'sql' IMMUTABLE STRICT;
  CREATE FUNCTION
  COMMENT ON FUNCTION to_interval(numeric)
  IS 'Convert seconds to interval. Opposite of duration(interval)';
  COMMENT
  /*****************************************************************
  *                          operators
  *****************************************************************/
  
  CREATE OPERATOR +(
    PROCEDURE = timestamp_add,
    LEFTARG = timestampTz,
    RIGHTARG = numeric
  );
  CREATE OPERATOR
  CREATE OPERATOR -(
    PROCEDURE = timestamp_subtract,
    LEFTARG = timestampTz,
    RIGHTARG = numeric
  );
  CREATE OPERATOR
  CREATE OPERATOR +(
    PROCEDURE = timestamp_add,
    LEFTARG = timestamp,
    RIGHTARG = numeric
  );
  CREATE OPERATOR
  CREATE OPERATOR -(
    PROCEDURE = timestamp_subtract,
    LEFTARG = timestamp,
    RIGHTARG = numeric
  );
  CREATE OPERATOR
  CREATE OPERATOR +(
    PROCEDURE = date_add,
    LEFTARG = date,
    RIGHTARG = numeric
  );
  CREATE OPERATOR
  CREATE OPERATOR -(
    PROCEDURE = date_subtract,
    LEFTARG = date,
    RIGHTARG = numeric
  );
  CREATE OPERATOR
  CREATE OPERATOR +(
    PROCEDURE = time_add,
    LEFTARG = time,
    RIGHTARG = numeric
  );
  CREATE OPERATOR
  CREATE OPERATOR -(
    PROCEDURE = time_subtract,
    LEFTARG = time,
    RIGHTARG = numeric
  );
  CREATE OPERATOR
  CREATE OPERATOR +(
    PROCEDURE = time_add,
    LEFTARG = timetz,
    RIGHTARG = numeric
  );
  CREATE OPERATOR
  CREATE OPERATOR -(
    PROCEDURE = time_subtract,
    LEFTARG = timetz,
    RIGHTARG = numeric
  );
  CREATE OPERATOR
==> Mk func/temporal/period.o
gcc -O2 -Wall -fPIC -I/usr/local/include/postgresql/server -o func/temporal/period.o -c func/temporal/period.c
patch=`dirname $prereq`/`basename $prereq .in`.patch
patch -o func/temporal/period.sql func/temporal/period.sql.in <$patch
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- func/temporal/period.sql.in	Sun Jul  3 16:25:52 2011
|+++ func/temporal/period.sql	Fri Jul  1 22:04:27 2011
--------------------------
Patching file func/temporal/period.sql.in using Plan A...
Hunk #1 succeeded at 8.
Hunk #2 succeeded at 26.
done
==> Mk table/excep.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/excep.sql; then touch table/excep.ck; else kill 22097; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * For exception descriptions see dbdata.
   */
  drop table if exists excep cascade;
  psql:table/excep.sql:21: NOTICE:  table "excep" does not exist, skipping
  DROP TABLE
  create table excep (
  	
  	excepid		bigserial not null primary key,
  	
  	excepdesc	varchar(64)
  );
  psql:table/excep.sql:28: NOTICE:  CREATE TABLE will create implicit sequence "excep_excepid_seq" for serial column "excep.excepid"
  psql:table/excep.sql:28: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "excep_pkey" for table "excep"
  CREATE TABLE
  /*
   * Insert default exceptions
   */
  insert into excep (excepid, excepdesc) values
  	(0, 'Change extension from building 023 to building 043'),
  	(1, 'Telular call: use srvid = "15" and use message "Desvío"');
  INSERT 0 2
==> Mk table/place.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/place.sql; then touch table/place.ck; else kill 4838; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * Starts place localization implementation.
   */
  drop table if exists place cascade;
  psql:table/place.sql:21: NOTICE:  table "place" does not exist, skipping
  DROP TABLE
  create table place (
  	
  	placeid		bigserial not null primary key,
  	
  	placena		varchar(126) unique not null
  );
  psql:table/place.sql:28: NOTICE:  CREATE TABLE will create implicit sequence "place_placeid_seq" for serial column "place.placeid"
  psql:table/place.sql:28: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "place_pkey" for table "place"
  psql:table/place.sql:28: NOTICE:  CREATE TABLE / UNIQUE will create implicit index "place_placena_key" for table "place"
  CREATE TABLE
==> Mk table/doc.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/doc.sql; then touch table/doc.ck; else kill 440; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * Stores the revision history and the access path (in web)
   * for the wiki sub-system.
   */
  drop table if exists doc cascade;
  psql:table/doc.sql:23: NOTICE:  table "doc" does not exist, skipping
  DROP TABLE
  create table doc (
  	
  	docpath		ltree primary key,
  	
  	docisact	boolean default true not null
  	/* see table/doc_doclarev.sql for more columns */
  );
  psql:table/doc.sql:31: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "doc_pkey" for table "doc"
  CREATE TABLE
==> Mk func/docaclt.o
gcc -O2 -Wall -fPIC -I/usr/local/include/postgresql/server -o func/docaclt.o -c func/docaclt.c
==> Mk table/sap_avfcodext.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/sap_avfcodext.sql; then touch table/sap_avfcodext.ck; else kill 4402; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /* XXX we should split this in multiple tables... adding primary keys */
  /*
   * We also do some sap autoupdating with SAP's @AVFCONMUTADOR table (to build
   * table), but we insert automatically to our local building table.
   */
  drop table if exists sap_avfcodext cascade;
  psql:table/sap_avfcodext.sql:23: NOTICE:  table "sap_avfcodext" does not exist, skipping
  DROP TABLE
  /*
   * from sap's '[@avfcodext]' table
   */
  create table sap_avfcodext (
  	
  	savfid		bigint not null check (savfid > 0),
  	
  	savfbuildno	varchar(126)
  			check (savfbuildno != ''),
  	
  	savfextno	varchar(126)
  			check (savfextno ~ '^[[:digit:]]+$'),
  	
  	savfpass	varchar(126)
  			check (savfpass ~ '^[[:digit:]]+$')
  );
  CREATE TABLE
==> Mk table/sap_inv.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/sap_inv.sql; then touch table/sap_inv.ck; else kill 4968; fi
  /*
   * Copyright (c) 2011 Anibal Ezau Limon Belmares <limon.anibal@gmail.com>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * sap_inv
   */
  drop table if exists sap_inv cascade;
  psql:table/sap_inv.sql:20: NOTICE:  table "sap_inv" does not exist, skipping
  DROP TABLE
  /*
   * from sap's tables oinv and [@ecfd_einv]
   */
  create table sap_inv (
  	
  	sinvcos		varchar(126) not null check (sinvcos like '_____'),
  	
  	sinvuuid	varchar(126) not null
  );
  CREATE TABLE
==> Mk table/sap_octr.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/sap_octr.sql; then touch table/sap_octr.ck; else kill 2153; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /* XXX: change this fucking ugly mnemonics */
  /*
   * sap_octr contains id (cstmrcode) of the client
   */
  drop table if exists sap_octr cascade;
  psql:table/sap_octr.sql:22: NOTICE:  table "sap_octr" does not exist, skipping
  DROP TABLE
  /*
   * from sap's 'octr' table
   */
  create table sap_octr (
  	
  	soctrid		bigint check (soctrid > 0) primary key,
  	
  	soctrcos	varchar(126)
  			check (soctrcos like '_____')
  			constraint "soctrcos must be upper case"
  			check (upper(soctrcos) = soctrcos),
  	
  	soctrsttm	timestamp without time zone,
  	
  	soctrentm	timestamp without time zone
  );
  psql:table/sap_octr.sql:39: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "sap_octr_pkey" for table "sap_octr"
  CREATE TABLE
==> Mk func/rolki.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/rolki.sql; then touch func/rolki.ck; else kill 2810; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  
  /*
   * Inserts a rolki by rolkna only if it doesn't exist, don't raising an error if
   * it doesn't exist
   */
  create or replace function insrolki(rolkna text) 
      returns setof rolki strict language sql as 
  $$
  	insert	into rolki (rolkna) 
  	values	($1)
  	except all
  	select	rolkna
  	from	rolki
  	where	rolkna = $1
  	returning *;
  $$;
  CREATE FUNCTION
==> Mk func/pgcrypto.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/pgcrypto.sql; then touch func/pgcrypto.ck; else kill 10128; fi
  /* $PostgreSQL: pgsql/contrib/pgcrypto/pgcrypto.sql.in,v 1.15 2007/11/13 04:24:28 momjian Exp $ */
  
  SET search_path = public;
  SET
  CREATE OR REPLACE FUNCTION digest(text, text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pg_digest'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION digest(bytea, text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pg_digest'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION hmac(text, text, text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pg_hmac'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION hmac(bytea, bytea, text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pg_hmac'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION crypt(text, text)
  RETURNS text
  AS '$libdir/pgcrypto', 'pg_crypt'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gen_salt(text)
  RETURNS text
  AS '$libdir/pgcrypto', 'pg_gen_salt'
  LANGUAGE C VOLATILE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gen_salt(text, int4)
  RETURNS text
  AS '$libdir/pgcrypto', 'pg_gen_salt_rounds'
  LANGUAGE C VOLATILE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION encrypt(bytea, bytea, text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pg_encrypt'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION decrypt(bytea, bytea, text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pg_decrypt'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION encrypt_iv(bytea, bytea, bytea, text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pg_encrypt_iv'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION decrypt_iv(bytea, bytea, bytea, text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pg_decrypt_iv'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gen_random_bytes(int4)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pg_random_bytes'
  LANGUAGE 'C' VOLATILE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_sym_encrypt(text, text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pgp_sym_encrypt_text'
  LANGUAGE C STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_sym_encrypt_bytea(bytea, text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pgp_sym_encrypt_bytea'
  LANGUAGE C STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_sym_encrypt(text, text, text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pgp_sym_encrypt_text'
  LANGUAGE C STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_sym_encrypt_bytea(bytea, text, text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pgp_sym_encrypt_bytea'
  LANGUAGE C STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_sym_decrypt(bytea, text)
  RETURNS text
  AS '$libdir/pgcrypto', 'pgp_sym_decrypt_text'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_sym_decrypt_bytea(bytea, text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pgp_sym_decrypt_bytea'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_sym_decrypt(bytea, text, text)
  RETURNS text
  AS '$libdir/pgcrypto', 'pgp_sym_decrypt_text'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_sym_decrypt_bytea(bytea, text, text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pgp_sym_decrypt_bytea'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_pub_encrypt(text, bytea)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pgp_pub_encrypt_text'
  LANGUAGE C STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_pub_encrypt_bytea(bytea, bytea)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pgp_pub_encrypt_bytea'
  LANGUAGE C STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_pub_encrypt(text, bytea, text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pgp_pub_encrypt_text'
  LANGUAGE C STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_pub_encrypt_bytea(bytea, bytea, text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pgp_pub_encrypt_bytea'
  LANGUAGE C STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_pub_decrypt(bytea, bytea)
  RETURNS text
  AS '$libdir/pgcrypto', 'pgp_pub_decrypt_text'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_pub_decrypt_bytea(bytea, bytea)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pgp_pub_decrypt_bytea'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_pub_decrypt(bytea, bytea, text)
  RETURNS text
  AS '$libdir/pgcrypto', 'pgp_pub_decrypt_text'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_pub_decrypt_bytea(bytea, bytea, text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pgp_pub_decrypt_bytea'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_pub_decrypt(bytea, bytea, text, text)
  RETURNS text
  AS '$libdir/pgcrypto', 'pgp_pub_decrypt_text'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_pub_decrypt_bytea(bytea, bytea, text, text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pgp_pub_decrypt_bytea'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION pgp_key_id(bytea)
  RETURNS text
  AS '$libdir/pgcrypto', 'pgp_key_id_w'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION armor(bytea)
  RETURNS text
  AS '$libdir/pgcrypto', 'pg_armor'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION dearmor(text)
  RETURNS bytea
  AS '$libdir/pgcrypto', 'pg_dearmor'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
==> Mk func/hstore.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/hstore.sql; then touch func/hstore.ck; else kill 13611; fi
  /* $PostgreSQL: pgsql/contrib/hstore/hstore.sql.in,v 1.15 2010/07/02 20:36:48 rhaas Exp $ */
  
  SET search_path = public;
  SET
  CREATE TYPE hstore;
  CREATE TYPE
  CREATE OR REPLACE FUNCTION hstore_in(cstring)
  RETURNS hstore
  AS '$libdir/hstore'
  LANGUAGE C STRICT IMMUTABLE;
  psql:func/hstore.sql:11: NOTICE:  return type hstore is only a shell
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION hstore_out(hstore)
  RETURNS cstring
  AS '$libdir/hstore'
  LANGUAGE C STRICT IMMUTABLE;
  psql:func/hstore.sql:16: NOTICE:  argument type hstore is only a shell
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION hstore_recv(internal)
  RETURNS hstore
  AS '$libdir/hstore'
  LANGUAGE C STRICT IMMUTABLE;
  psql:func/hstore.sql:21: NOTICE:  return type hstore is only a shell
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION hstore_send(hstore)
  RETURNS bytea
  AS '$libdir/hstore'
  LANGUAGE C STRICT IMMUTABLE;
  psql:func/hstore.sql:26: NOTICE:  argument type hstore is only a shell
  CREATE FUNCTION
  CREATE TYPE hstore (
          INTERNALLENGTH = -1,
          INPUT = hstore_in,
          OUTPUT = hstore_out,
          RECEIVE = hstore_recv,
          SEND = hstore_send,
          STORAGE = extended
  );
  CREATE TYPE
  CREATE OR REPLACE FUNCTION hstore_version_diag(hstore)
  RETURNS integer
  AS '$libdir/hstore','hstore_version_diag'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION fetchval(hstore,text)
  RETURNS text
  AS '$libdir/hstore','hstore_fetchval'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR -> (
  	LEFTARG = hstore,
  	RIGHTARG = text,
  	PROCEDURE = fetchval
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION slice_array(hstore,text[])
  RETURNS text[]
  AS '$libdir/hstore','hstore_slice_to_array'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR -> (
  	LEFTARG = hstore,
  	RIGHTARG = text[],
  	PROCEDURE = slice_array
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION slice(hstore,text[])
  RETURNS hstore
  AS '$libdir/hstore','hstore_slice_to_hstore'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION isexists(hstore,text)
  RETURNS bool
  AS '$libdir/hstore','hstore_exists'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION exist(hstore,text)
  RETURNS bool
  AS '$libdir/hstore','hstore_exists'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR ? (
  	LEFTARG = hstore,
  	RIGHTARG = text,
  	PROCEDURE = exist,
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION exists_any(hstore,text[])
  RETURNS bool
  AS '$libdir/hstore','hstore_exists_any'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR ?| (
  	LEFTARG = hstore,
  	RIGHTARG = text[],
  	PROCEDURE = exists_any,
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION exists_all(hstore,text[])
  RETURNS bool
  AS '$libdir/hstore','hstore_exists_all'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR ?& (
  	LEFTARG = hstore,
  	RIGHTARG = text[],
  	PROCEDURE = exists_all,
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION isdefined(hstore,text)
  RETURNS bool
  AS '$libdir/hstore','hstore_defined'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION defined(hstore,text)
  RETURNS bool
  AS '$libdir/hstore','hstore_defined'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION delete(hstore,text)
  RETURNS hstore
  AS '$libdir/hstore','hstore_delete'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION delete(hstore,text[])
  RETURNS hstore
  AS '$libdir/hstore','hstore_delete_array'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION delete(hstore,hstore)
  RETURNS hstore
  AS '$libdir/hstore','hstore_delete_hstore'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR - (
  	LEFTARG = hstore,
  	RIGHTARG = text,
  	PROCEDURE = delete
  );
  CREATE OPERATOR
  CREATE OPERATOR - (
  	LEFTARG = hstore,
  	RIGHTARG = text[],
  	PROCEDURE = delete
  );
  CREATE OPERATOR
  CREATE OPERATOR - (
  	LEFTARG = hstore,
  	RIGHTARG = hstore,
  	PROCEDURE = delete
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION hs_concat(hstore,hstore)
  RETURNS hstore
  AS '$libdir/hstore','hstore_concat'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR || (
  	LEFTARG = hstore,
  	RIGHTARG = hstore,
  	PROCEDURE = hs_concat
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION hs_contains(hstore,hstore)
  RETURNS bool
  AS '$libdir/hstore','hstore_contains'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION hs_contained(hstore,hstore)
  RETURNS bool
  AS '$libdir/hstore','hstore_contained'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR @> (
  	LEFTARG = hstore,
  	RIGHTARG = hstore,
  	PROCEDURE = hs_contains,
  	COMMUTATOR = '<@',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR <@ (
  	LEFTARG = hstore,
  	RIGHTARG = hstore,
  	PROCEDURE = hs_contained,
  	COMMUTATOR = '@>',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR @ (
  	LEFTARG = hstore,
  	RIGHTARG = hstore,
  	PROCEDURE = hs_contains,
  	COMMUTATOR = '~',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR ~ (
  	LEFTARG = hstore,
  	RIGHTARG = hstore,
  	PROCEDURE = hs_contained,
  	COMMUTATOR = '@',
  	RESTRICT = contsel,
  	JOIN = contjoinsel
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION tconvert(text,text)
  RETURNS hstore
  AS '$libdir/hstore','hstore_from_text'
  LANGUAGE C IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION hstore(text,text)
  RETURNS hstore
  AS '$libdir/hstore','hstore_from_text'
  LANGUAGE C IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR => (
  	LEFTARG = text,
  	RIGHTARG = text,
  	PROCEDURE = hstore
  );
  psql:func/hstore.sql:228: WARNING:  => is deprecated as an operator name
  DETAIL:  This name may be disallowed altogether in future versions of PostgreSQL.
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION hstore(text[],text[])
  RETURNS hstore
  AS '$libdir/hstore', 'hstore_from_arrays'
  LANGUAGE C IMMUTABLE;
  CREATE FUNCTION
  CREATE FUNCTION hstore(text[])
  RETURNS hstore
  AS '$libdir/hstore', 'hstore_from_array'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE CAST (text[] AS hstore)
    WITH FUNCTION hstore(text[]);
  CREATE CAST
  CREATE OR REPLACE FUNCTION hstore(record)
  RETURNS hstore
  AS '$libdir/hstore', 'hstore_from_record'
  LANGUAGE C IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION hstore_to_array(hstore)
  RETURNS text[]
  AS '$libdir/hstore','hstore_to_array'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR %% (
         RIGHTARG = hstore,
         PROCEDURE = hstore_to_array
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION hstore_to_matrix(hstore)
  RETURNS text[]
  AS '$libdir/hstore','hstore_to_matrix'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR %# (
         RIGHTARG = hstore,
         PROCEDURE = hstore_to_matrix
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION akeys(hstore)
  RETURNS text[]
  AS '$libdir/hstore','hstore_akeys'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION avals(hstore)
  RETURNS text[]
  AS '$libdir/hstore','hstore_avals'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION skeys(hstore)
  RETURNS setof text
  AS '$libdir/hstore','hstore_skeys'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION svals(hstore)
  RETURNS setof text
  AS '$libdir/hstore','hstore_svals'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION each(IN hs hstore,
      OUT key text,
      OUT value text)
  RETURNS SETOF record
  AS '$libdir/hstore','hstore_each'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION populate_record(anyelement,hstore)
  RETURNS anyelement
  AS '$libdir/hstore', 'hstore_populate_record'
  LANGUAGE C IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR #= (
  	LEFTARG = anyelement,
  	RIGHTARG = hstore,
  	PROCEDURE = populate_record
  );
  CREATE OPERATOR
  CREATE OR REPLACE FUNCTION hstore_eq(hstore,hstore)
  RETURNS boolean
  AS '$libdir/hstore','hstore_eq'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION hstore_ne(hstore,hstore)
  RETURNS boolean
  AS '$libdir/hstore','hstore_ne'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION hstore_gt(hstore,hstore)
  RETURNS boolean
  AS '$libdir/hstore','hstore_gt'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION hstore_ge(hstore,hstore)
  RETURNS boolean
  AS '$libdir/hstore','hstore_ge'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION hstore_lt(hstore,hstore)
  RETURNS boolean
  AS '$libdir/hstore','hstore_lt'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION hstore_le(hstore,hstore)
  RETURNS boolean
  AS '$libdir/hstore','hstore_le'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION hstore_cmp(hstore,hstore)
  RETURNS integer
  AS '$libdir/hstore','hstore_cmp'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR = (
         LEFTARG = hstore,
         RIGHTARG = hstore,
         PROCEDURE = hstore_eq,
         COMMUTATOR = =,
         NEGATOR = <>,
         RESTRICT = eqsel,
         JOIN = eqjoinsel,
         MERGES,
         HASHES
  );
  CREATE OPERATOR
  CREATE OPERATOR <> (
         LEFTARG = hstore,
         RIGHTARG = hstore,
         PROCEDURE = hstore_ne,
         COMMUTATOR = <>,
         NEGATOR = =,
         RESTRICT = neqsel,
         JOIN = neqjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR #<# (
         LEFTARG = hstore,
         RIGHTARG = hstore,
         PROCEDURE = hstore_lt,
         COMMUTATOR = #>#,
         NEGATOR = #>=#,
         RESTRICT = scalarltsel,
         JOIN = scalarltjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR #<=# (
         LEFTARG = hstore,
         RIGHTARG = hstore,
         PROCEDURE = hstore_le,
         COMMUTATOR = #>=#,
         NEGATOR = #>#,
         RESTRICT = scalarltsel,
         JOIN = scalarltjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR #># (
         LEFTARG = hstore,
         RIGHTARG = hstore,
         PROCEDURE = hstore_gt,
         COMMUTATOR = #<#,
         NEGATOR = #<=#,
         RESTRICT = scalargtsel,
         JOIN = scalargtjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR #>=# (
         LEFTARG = hstore,
         RIGHTARG = hstore,
         PROCEDURE = hstore_ge,
         COMMUTATOR = #<=#,
         NEGATOR = #<#,
         RESTRICT = scalargtsel,
         JOIN = scalargtjoinsel
  );
  CREATE OPERATOR
  CREATE OPERATOR CLASS btree_hstore_ops
  DEFAULT FOR TYPE hstore USING btree
  AS
  	OPERATOR	1	#<# ,
  	OPERATOR	2	#<=# ,
  	OPERATOR	3	= ,
  	OPERATOR	4	#>=# ,
  	OPERATOR	5	#># ,
  	FUNCTION	1	hstore_cmp(hstore,hstore);
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION hstore_hash(hstore)
  RETURNS integer
  AS '$libdir/hstore','hstore_hash'
  LANGUAGE C STRICT IMMUTABLE;
  CREATE FUNCTION
  CREATE OPERATOR CLASS hash_hstore_ops
  DEFAULT FOR TYPE hstore USING hash
  AS
  	OPERATOR	1	= ,
  	FUNCTION	1	hstore_hash(hstore);
  CREATE OPERATOR CLASS
  CREATE TYPE ghstore;
  CREATE TYPE
  CREATE OR REPLACE FUNCTION ghstore_in(cstring)
  RETURNS ghstore
  AS '$libdir/hstore'
  LANGUAGE C STRICT IMMUTABLE;
  psql:func/hstore.sql:435: NOTICE:  return type ghstore is only a shell
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ghstore_out(ghstore)
  RETURNS cstring
  AS '$libdir/hstore'
  LANGUAGE C STRICT IMMUTABLE;
  psql:func/hstore.sql:440: NOTICE:  argument type ghstore is only a shell
  CREATE FUNCTION
  CREATE TYPE ghstore (
          INTERNALLENGTH = -1,
          INPUT = ghstore_in,
          OUTPUT = ghstore_out
  );
  CREATE TYPE
  CREATE OR REPLACE FUNCTION ghstore_compress(internal)
  RETURNS internal
  AS '$libdir/hstore'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ghstore_decompress(internal)
  RETURNS internal
  AS '$libdir/hstore'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ghstore_penalty(internal,internal,internal)
  RETURNS internal
  AS '$libdir/hstore'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ghstore_picksplit(internal, internal)
  RETURNS internal
  AS '$libdir/hstore'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ghstore_union(internal, internal)
  RETURNS internal
  AS '$libdir/hstore'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ghstore_same(internal, internal, internal)
  RETURNS internal
  AS '$libdir/hstore'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION ghstore_consistent(internal,internal,int,oid,internal)
  RETURNS bool
  AS '$libdir/hstore'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gist_hstore_ops
  DEFAULT FOR TYPE hstore USING gist
  AS
  	OPERATOR        7       @> ,
  	OPERATOR        9       ?(hstore,text) ,
  	OPERATOR        10      ?|(hstore,text[]) ,
  	OPERATOR        11      ?&(hstore,text[]) ,
          
          OPERATOR        13      @ ,
          
          FUNCTION        1       ghstore_consistent (internal, internal, int, oid, internal),
          FUNCTION        2       ghstore_union (internal, internal),
          FUNCTION        3       ghstore_compress (internal),
          FUNCTION        4       ghstore_decompress (internal),
          FUNCTION        5       ghstore_penalty (internal, internal, internal),
          FUNCTION        6       ghstore_picksplit (internal, internal),
          FUNCTION        7       ghstore_same (internal, internal, internal),
          STORAGE         ghstore;
  CREATE OPERATOR CLASS
  CREATE OR REPLACE FUNCTION gin_extract_hstore(internal, internal)
  RETURNS internal
  AS '$libdir/hstore'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gin_extract_hstore_query(internal, internal, int2, internal, internal)
  RETURNS internal
  AS '$libdir/hstore'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OR REPLACE FUNCTION gin_consistent_hstore(internal, int2, internal, int4, internal, internal)
  RETURNS bool
  AS '$libdir/hstore'
  LANGUAGE C IMMUTABLE STRICT;
  CREATE FUNCTION
  CREATE OPERATOR CLASS gin_hstore_ops
  DEFAULT FOR TYPE hstore USING gin
  AS
  	OPERATOR        7       @>,
  	OPERATOR        9       ?(hstore,text),
  	OPERATOR        10      ?|(hstore,text[]),
  	OPERATOR        11      ?&(hstore,text[]),
  	FUNCTION        1       bttextcmp(text,text),
  	FUNCTION        2       gin_extract_hstore(internal, internal),
  	FUNCTION        3       gin_extract_hstore_query(internal, internal, int2, internal, internal),
  	FUNCTION        4       gin_consistent_hstore(internal, int2, internal, int4, internal, internal),
  	STORAGE         text;
  CREATE OPERATOR CLASS
==> Mk func/revpath.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/revpath.sql; then touch func/revpath.ck; else kill 11013; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * Converts a ltree rrevpath value into an int[] (_int in postgres
   * conventions).
   */
  create or replace function rrevpathto_int(a ltree) returns int[]
  language sql immutable strict as 
  $$
  	select	regexp_split_to_array($1::text, E'\\.')::int[];
  $$;
  CREATE FUNCTION
==> Mk func/tool.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/tool.sql; then touch func/tool.ck; else kill 1726; fi
  /*
   * Copyright (c) 2009,2010,2011 Abel Camarillo <acamari@the00z.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /* 
   * tool.sql: miscellaneous functions
   */ 
  CREATE OR REPLACE FUNCTION
  get_date_split(start_t timestamptz, end_t timestamptz, delta interval) 
    returns setof timestamptz language sql as
  $$
  	SELECT	ss * interval '1 sec' + timestamptz 'epoch' 
  	  FROM	generate_series(extract(epoch from $1)::int,
  		extract(epoch from $2)::int, extract(epoch from $3)::int) 
  		as s(ss);
  $$;
  CREATE FUNCTION
  /*
   * runs a sql string
   */
  create or replace function sql_exec (sql text)
      returns boolean language plpgsql as 
  $$
  declare 
  begin
  	-- raise notice 'running query : %', sql; 
  	execute sql;
  	return true;
  end;
  $$;
  CREATE FUNCTION
  /*
   * Print message. Raises a 'level' message.
   * It's boolean return type makes it useful to use in CASE WHEN ... END
   */
  create or replace function 
  pmsg(level text, msg anyelement) returns boolean 
  language plpgsql as 
  $$
  begin 
  	case when level = 'EXCEPTION' then
  		raise EXCEPTION '%', msg;
  	when level = 'WARNING' then
  		raise WARNING '%', msg;
  	when level = 'NOTICE' then
  		raise NOTICE '%', msg;
  	when level = 'INFO' then
  		raise INFO '%', msg;
  	when level = 'LOG' then
  		raise LOG '%', msg;
  	when level = 'DEBUG' then
  		raise DEBUG '%', msg;
  	end case;
  
  	return true;
  end;
  $$;
  CREATE FUNCTION
==> Mk role/auth.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f role/auth.sql; then touch role/auth.ck; else kill 9638; fi
  select n_srv.creatrolifne('auth');
   creatrolifne 
  --------------
   f
  (1 row)
  
  alter role "auth" inherit;
  ALTER ROLE
  grant usage on schema public, n_srv to "auth";
  GRANT
  grant usage on schema public to auth;
  GRANT
==> Mk role/cdr.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f role/cdr.sql; then touch role/cdr.ck; else kill 32014; fi
  select n_srv.creatrolifne('cdr');
   creatrolifne 
  --------------
   f
  (1 row)
  
  alter role "cdr" inherit;
  ALTER ROLE
  grant usage on schema public, n_srv to "cdr";
  GRANT
==> Mk role/ext.www.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f role/ext.www.sql; then touch role/ext.www.ck; else kill 8134; fi
  select n_srv.creatrolifne('ext.www');
   creatrolifne 
  --------------
   f
  (1 row)
  
  alter role "ext.www" encrypted password 'EXT.WWW_USER_PASSWORD' inherit login;
  ALTER ROLE
  grant usage on schema public, n_srv to "ext.www";
  GRANT
==> Mk role/int.www.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f role/int.www.sql; then touch role/int.www.ck; else kill 3969; fi
  select n_srv.creatrolifne('int.www');
   creatrolifne 
  --------------
   f
  (1 row)
  
  alter role "int.www" encrypted password 'INT_WWW_USER_PASSWORD' inherit login;
  ALTER ROLE
  grant usage on schema public, n_srv to "int.www";
  GRANT
==> Mk role/n_srv.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f role/n_srv.sql; then touch role/n_srv.ck; else kill 18230; fi
  select n_srv.creatrolifne('n_srv');
   creatrolifne 
  --------------
   f
  (1 row)
  
  alter role "n_srv" encrypted password 'N_SRV_USER_PASSWORD' inherit login;
  ALTER ROLE
  grant usage on schema public, n_srv to "n_srv";
  GRANT
==> Mk role/www.cookie.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f role/www.cookie.sql; then touch role/www.cookie.ck; else kill 17574; fi
  select n_srv.creatrolifne('www.cookie');
   creatrolifne 
  --------------
   f
  (1 row)
  
  alter role "www.cookie" inherit;
  ALTER ROLE
  grant usage on schema public, n_srv to "www.cookie";
  GRANT
==> Mk func/cdrt.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/cdrt.sql; then touch func/cdrt.ck; else kill 5790; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  create or replace function
  gcdrt(name text) returns bigint strict stable language sql as
  $$
  	select	cdrtid
  	from	cdrt
  	where	cdrtna = $1;
  $$;
  CREATE FUNCTION
==> Mk table/build.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/build.sql; then touch table/build.ck; else kill 5790; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * Contains definitions of buildings.
   */
  drop table if exists build cascade;
  psql:table/build.sql:21: NOTICE:  table "build" does not exist, skipping
  DROP TABLE
  create table build (
  	
  	buildid		bigserial not null primary key,
  	
  	buildna		varchar(126),
  	
  	buildno		varchar(32) not null unique
  			constraint "buildno must not be an empty string"
  			check (length(buildno) > 0),
  	
  	bnumtref	bigint not null
  			references numtref (numtrefid)
  			on update cascade
  			on delete restrict,
  	
  	bcdrt		bigint
  			references cdrt (cdrtid)
  			on update restrict
  			on delete restrict
  );
  psql:table/build.sql:42: NOTICE:  CREATE TABLE will create implicit sequence "build_buildid_seq" for serial column "build.buildid"
  psql:table/build.sql:42: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "build_pkey" for table "build"
  psql:table/build.sql:42: NOTICE:  CREATE TABLE / UNIQUE will create implicit index "build_buildno_key" for table "build"
  CREATE TABLE
==> Mk func/numtref.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/numtref.sql; then touch func/numtref.ck; else kill 11856; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  create or replace function
  gnumtref(name text) returns bigint strict stable language sql as 
  $$
  	select	numtrefid
  	from	numtref
  	where	numtrefna = $1;
  $$;
  CREATE FUNCTION
==> Mk table/numtre.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/numtre.sql; then touch table/numtre.ck; else kill 26290; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * Numeration tree (numtre)
   */
  drop table if exists numtre cascade;
  psql:table/numtre.sql:20: NOTICE:  table "numtre" does not exist, skipping
  DROP TABLE
  create table numtre (	
  	
  	numtreid	bigserial not null primary key,
  	
  	ntnumtref	bigint not null references numtref (numtrefid)
  			on update cascade
  			on delete cascade,
  	
  	
  	numtresttm	timestamp not null
  			default '-infinity',
  	
  	
  	numtreentm	timestamp not null
  			default 'infinity'
  			constraint 
  			    "numtresttm must be less or equal than numtentm"
  			check (numtresttm <= numtreentm),
  	constraint "numtre: no more than one tree per family valid concurrently"
  	exclude using gist
  	(cube(array[
  		(case when numtresttm = '-infinity' then
  			'-inf'::float8
  		when numtresttm = 'infinity' then
  			'inf'::float8
  		else
  			extract(epoch from numtresttm)::float8
  		end),
  		ntnumtref::float8
  	    ],
  	    array[
  		(case when numtreentm = '-infinity' then
  			'-inf'::float8
  		when numtreentm = 'infinity' then
  			'inf'::float8
  		else
  			extract(epoch from numtreentm)::float8
  		end),
  		ntnumtref::float8
  	   ]
  	) with &&)
  );
  psql:table/numtre.sql:62: NOTICE:  CREATE TABLE will create implicit sequence "numtre_numtreid_seq" for serial column "numtre.numtreid"
  psql:table/numtre.sql:62: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "numtre_pkey" for table "numtre"
  psql:table/numtre.sql:62: NOTICE:  CREATE TABLE / EXCLUDE will create implicit index "numtre: no more than one tree per family valid concurrently" for table "numtre"
  CREATE TABLE
==> Mk func/telno.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/telno.sql; then touch func/telno.ck; else kill 26838; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * Telephone number:
   * Ideally we would like to put a lot of constraints on this... as soon as we
   * know which should be good...
   */
  drop domain if exists telno cascade;
  psql:func/telno.sql:22: NOTICE:  type "telno" does not exist, skipping
  DROP DOMAIN
  create domain
  telno as text;
  CREATE DOMAIN
  /* Get ltree */
  create or replace function
  gltree(telno) returns ltree strict immutable language sql as
  $$
  	select	array_to_string(regexp_split_to_array(a, ''), '.')::ltree
  	from	(values (regexp_replace($1::text, '[^[:digit:]]', '', 'g'))) as
  		t(a)
  $$;
  CREATE FUNCTION
==> Mk table/rolki.sqlidx
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/rolki.sqlidx; then touch table/rolki.ckidx; else kill 21386; fi
  /*
   * Copyright (c) 2011 Anibal Ezau Limon Belmares <limon.anibal@gmail.com>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  drop index if exists rolki_rolkna_idx;
  psql:table/rolki.sqlidx:17: NOTICE:  index "rolki_rolkna_idx" does not exist, skipping
  DROP INDEX
  create index rolki_rolkna_idx on rolki (rolkna varchar_pattern_ops);
  CREATE INDEX
==> Mk table/rolki.sqldata
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/rolki.sqldata; then touch table/rolki.ckdata; else kill 26491; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  select insrolki('ext.www.client');
        insrolki      
  --------------------
   (1,ext.www.client)
  (1 row)
  
  select insrolki('ext.www.hclient');
        insrolki       
  ---------------------
   (2,ext.www.hclient)
  (1 row)
  
  select insrolki('int.www');
    insrolki   
  -------------
   (3,int.www)
  (1 row)
  
==> Mk func/temporal/period.so
ld -Bshareable -o func/temporal/period.so func/temporal/period.o
==> Mk table/place.sqlidx
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/place.sqlidx; then touch table/place.ckidx; else kill 28099; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  drop index if exists place_placena_idx;
  psql:table/place.sqlidx:17: NOTICE:  index "place_placena_idx" does not exist, skipping
  DROP INDEX
  create index place_placena_idx on place (placena);
  CREATE INDEX
==> Mk table/docfile.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/docfile.sql; then touch table/docfile.ck; else kill 28837; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  drop table if exists docfile cascade;
  psql:table/docfile.sql:17: NOTICE:  table "docfile" does not exist, skipping
  DROP TABLE
  create table docfile (
  	
  	docfidoc	ltree not null
  			references doc (docpath)
  			on update cascade
  			on delete cascade,
  	
  	docfipa		varchar(4096) not null
  			constraint "docfipa must not be empty"
  			check (docfipa != ''),
  	
  	docfidesc	text
  			constraint "docfidesc must not be empty"
  			check (docfidesc != '')
  );
  CREATE TABLE
==> Mk table/doc.sqlidx
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/doc.sqlidx; then touch table/doc.ckidx; else kill 7957; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  drop index if exists doc_docpath_idx;
  psql:table/doc.sqlidx:17: NOTICE:  index "doc_docpath_idx" does not exist, skipping
  DROP INDEX
  create index doc_docpath_idx on doc using gist(docpath);
  CREATE INDEX
==> Mk func/docaclt.so
ld -Bshareable -o func/docaclt.so func/docaclt.o
==> Mk table/sap_avfcodext.sqlidx
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/sap_avfcodext.sqlidx; then touch table/sap_avfcodext.ckidx; else kill 21486; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  drop index if exists sap_avfcodext_savfid_idx;
  psql:table/sap_avfcodext.sqlidx:17: NOTICE:  index "sap_avfcodext_savfid_idx" does not exist, skipping
  DROP INDEX
  drop index if exists sap_avfcodext_savfbuildno_idx;
  psql:table/sap_avfcodext.sqlidx:18: NOTICE:  index "sap_avfcodext_savfbuildno_idx" does not exist, skipping
  DROP INDEX
  drop index if exists sap_avfcodext_savfextno_idx;
  psql:table/sap_avfcodext.sqlidx:19: NOTICE:  index "sap_avfcodext_savfextno_idx" does not exist, skipping
  DROP INDEX
  drop index if exists sap_avfcodext_savfpass_idx;
  psql:table/sap_avfcodext.sqlidx:20: NOTICE:  index "sap_avfcodext_savfpass_idx" does not exist, skipping
  DROP INDEX
  create index sap_avfcodext_savfid_idx on sap_avfcodext (savfid);
  CREATE INDEX
  create index sap_avfcodext_savfbuildno_idx on sap_avfcodext (savfbuildno);
  CREATE INDEX
  create index sap_avfcodext_savfextno_idx on sap_avfcodext (savfextno);
  CREATE INDEX
  create index sap_avfcodext_savfpass_idx on sap_avfcodext (savfpass);
  CREATE INDEX
==> Mk table/sap_inv.sqlidx
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/sap_inv.sqlidx; then touch table/sap_inv.ckidx; else kill 31339; fi
  /*
   * Copyright (c) 2011 Anibal Ezau Limon Belmares <limon.anibal@gmail.com>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  drop index if exists sap_inv_sinvuuid_idx;
  psql:table/sap_inv.sqlidx:17: NOTICE:  index "sap_inv_sinvuuid_idx" does not exist, skipping
  DROP INDEX
  create index sap_inv_sinvuuid_idx on sap_inv (sinvuuid);
  CREATE INDEX
==> Mk table/sap_octr.sqlidx
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/sap_octr.sqlidx; then touch table/sap_octr.ckidx; else kill 20410; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  drop index if exists sap_octr_soctrcos_idx_idx;
  psql:table/sap_octr.sqlidx:17: NOTICE:  index "sap_octr_soctrcos_idx_idx" does not exist, skipping
  DROP INDEX
  create index sap_octr_soctrcos_idx on sap_octr (soctrcos);
  CREATE INDEX
==> Mk func/crypt.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/crypt.sql; then touch func/crypt.ck; else kill 23867; fi
  /*
   * Copyright (c) 2011 Anibal Ezau Limon Belmares <limon.anibal@gmail.com>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  
  /*
   * Returns text salt.
   */
  create or replace function
  gsalt() returns text language sql as
  $$
  	select gen_salt('bf', 7);
  $$;
  CREATE FUNCTION
==> Mk func/syncrel.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/syncrel.sql; then touch func/syncrel.ck; else kill 29791; fi
  /*
   * Copyright (c) 2009,2010,2011 Abel Camarillo <acamari@the00z.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * Get SQL to sync relationships (tables).
   *
   * updates orel with the values of nrel, assuming that they have the
   * same number of columns , same name, and type of values, this is useful for "SAP"
   * compatibility tables auto-update, old_table and new_table are the name of
   * the tables to update, this is supossed to be abstract and arbitrary
   *
   * the primary key of the tables (we know that it must exist and must be only
   * one column) is used for the comparison, you cannot update the  primary key of
   * a row using this method.
   */
  create or replace function 
  gsqlsyncrel(orel regclass, nrel regclass) returns text[] strict language plpgsql as
  $$
  declare 
  	ins	hstore;
  	upd	hstore; 
  	del	hstore;
  	ret	text[];
  	r	record;
  begin
  	ins := hstore(array['cols', 'selcols', 'join', 'where', 'returning'], null);
  	upd := hstore(array['cols', 'where', 'returning'], null);
  	del := hstore(array['where', 'returning']);
  	ret := array[]::text[];
  
  	-- orel keys, columns with a PRIMARY KEY
  	with orelkeys as (
  		select	attname, attnum, contype, conkey
  		from	pg_catalog.pg_constraint as cons join
  			pg_catalog.pg_attribute as att on
  			attrelid = conrelid and 
  			array[attnum] operator(pg_catalog.<@) conkey
  		where	conrelid = orel::regclass and
  			contype = 'p' and attnum >= 0 and
  			attisdropped is false 
  	),
  	-- Columns from orel that aren't key
  	orelcols as (
  		select	attname, attnum
  		from	pg_catalog.pg_attribute as att 
  		where	attrelid = orel::regclass and
  			attnum >= 0 and attisdropped is false
  		except	all
  		select	attname, attnum
  		from	orelkeys
  	),
  	nrelkeys as (
  		select	attname, attnum, contype, conkey
  		from	pg_catalog.pg_constraint as cons join
  			pg_catalog.pg_attribute as att on
  			attrelid = conrelid and 
  			array[attnum] operator(pg_catalog.<@) conkey
  		where	conrelid = nrel::regclass and
  			contype = 'p' and attnum >= 0 and
  			attisdropped is false 
  	),
  	nrelcols as (
  		select	attname, attnum
  		from	pg_catalog.pg_attribute as att 
  		where	attrelid = nrel::regclass and
  			attnum >= 0 and attisdropped is false
  		except	all
  		select	attname, attnum
  		from	nrelkeys
  	),
  	relcols as ( -- Non key columns that are in orel _and_ in nrel
  		select	attname
  		from	orelcols
  		intersect all
  		select	attname
  		from	nrelcols
  	)
  	select	case when okeys = nkeys then okeys else NULL end as keys,
  		okeys,
  		ocols,
  		nkeys,
  		ncols,
  		cols 
  	into	strict r
  	from	(values ((select array_agg(attname) from orelkeys),
  			(select array_agg(attname) from orelcols),
  			(select array_agg(attname) from nrelkeys),
  			(select array_agg(attname) from nrelcols),
  			(select array_agg(attname) from relcols)))
  		as foo(okeys, ocols, nkeys, ncols, cols);
  
  	if r.okeys is NULL then
  		raise exception 'table "%" must have a primary key', orel;
  	elsif r.nkeys is NULL then
  		raise exception 'table "%" must have a primary key', nrel;
  	elsif r.keys  is NULL then
  		raise exception 'keys from "%" must be equal to keys of "%"',
  			orel, nrel;
  	end if;
  
  	-- DEBUG
  	-- raise notice 'primary key is : %', pkey;
  
  	-- generate set assignment lists 
  	upd := upd || hstore('cols',
  		(select	string_agg(format('%I = %s.%1$I', col, nrel),
  				   ', ' order by col)
  		from	unnest(r.keys || r.cols) as t(col)));
  
  	-- generate where conditions, check that primary keys are equal
  	upd := upd || hstore('where',
  		(select	string_agg(format('%s.%I = %s.%2$I', orel, key, nrel),
  				   ' AND ' order by key)
  		from	unnest(r.keys) as t(key)));
  
  	upd := upd || hstore('returning',
  		(select	string_agg(format('%s.%I', orel, key),
  				   ', ' order by key)
  		 from	unnest(r.keys) as t(key)));
  
  	-- generate the update query
  	ret := ret || format('UPDATE %s SET %s FROM %s WHERE %s RETURNING %s;',
  			orel, upd -> 'cols', nrel, upd -> 'where',
  			upd -> 'returning');
  
  	-- generate the new row insert query: insert into orel the rows that
  	-- are on nrel but aren't in orel, searching using the primary keys.
  	ins := ins || hstore('cols',
  		(select	string_agg(format('%I', col), ', ' order by col)
  		from	unnest(r.keys || r.cols) as t(col)));
  
  	ins := ins || hstore('selcols',
  		(select	string_agg(format('%s.%I', nrel, col),
  				   ', ' order by col)
  		 from	unnest(r.keys || r.cols) as t(col)));
  
  	ins := ins || hstore('join',
  		(select	string_agg(format('%s.%I = %s.%2$I', orel, key, nrel),
  				   ' AND ' order by key)
  		 from	unnest(r.keys) as t(key)));
  
  	ins := ins || hstore('where',
  		(select	string_agg(format('%s.%I IS NULL', orel, key),
  				   ' OR ' order by key)
  		 from	unnest(r.keys) as t(key)));
  
  	ins := ins || hstore('returning',
  		(select	string_agg(format('%s.%I', orel, key),
  				   ', ' order by key)
  		 from	unnest(r.keys) as t(key)));
  
  	ret := ret || format('INSERT INTO %s (%s) ' ||
  			     'SELECT %s FROM %s RIGHT JOIN %s ON %s ' ||
  			     'WHERE %s RETURNING %s;',
  			     orel, ins -> 'cols', ins -> 'selcols', orel,
  			     nrel, ins -> 'join', ins -> 'where',
  			     ins -> 'returning');
  
  	-- generate the row delete query: delete from orel the rows that are
  	-- on it but aren't on nrel.
  	del := del || hstore('where',
  		(select	string_agg(format('%s.%I = %s.%2$I', orel, key, nrel),
  				   ' AND ' order by key)
  		from	unnest(r.keys) as t(key)));
  
  	del := del || hstore('returning',
  		(select	string_agg(format('%s.%I', orel, key),
  				   ', ' order by key)
  		 from	unnest(r.keys) as t(key)));
  
  	ret := ret || format('DELETE FROM %s WHERE NOT EXISTS ' || 
  			     '(SELECT 1 FROM %s WHERE %s) RETURNING %s;',
  			     orel, nrel, del -> 'where', del -> 'returning');
  
  	return ret;
  end;
  $$;
  CREATE FUNCTION
  /*
   * Sync relations using the output of gsqlsyncrel()
   */
  create or replace function
  syncrel(sql text[], out rows bigint, out query text)
  returns setof record strict language plpgsql as 
  $$
  declare
  	_sql	text;
  	r	record;
  begin
  
  	for _sql in select a from unnest(sql) as foo(a) loop
  		rows := 0;
  		query := _sql;
  		for r in execute _sql loop
  			rows := rows + 1;
  		end loop;
  		return next;
  	end loop;
  	return;
  end;
  $$;
  CREATE FUNCTION
==> Mk func/auth.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/auth.sql; then touch func/auth.ck; else kill 30558; fi
  /*
   * Copyright (c) 2011 Anibal Ezau Limon Belmares <limon.anibal@gmail.com>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  
  /*
   * If the user have good credentials returns rolid otherwise -1.
   */
  create or replace function
  auth(una text, upass text, ukna text) returns bigint language plpgsql 
  security definer set search_path = n_srv, public, pg_temp as
  $$
  declare
  	urolid	bigint;
  	ukid	bigint;		-- kind of rol (id) 
  begin
  	-- DEBUG: Show params.
  	-- raise notice 'Calling auth(%, %, %)', una, upass, ukna.
  
  	urolid := -1;
  	ukid := null;
  
  	-- Obtain the rolkiid.
  	 select	rolkiid 
  		into ukid 
  	   from	rolki 
  	  where	rolkna = ukna;
  
  	-- DEBUG: Check if ukid is null.
  	-- raise notice 'Hurr';
  
  	-- If ukid is null return false (this avoid overhead for crypt func).
  	if ukid is null then
  		return -1;
  	end if;
  
  	-- raise notice 'Durr';
  	-- DEBUG.
  
  	-- Make auth with crypt function.
  	 select	rolid
  		into urolid
  	   from	role
  	  where	rolna = una 
  	    and	rolkid = ukid
  	    and	rolpass = crypt(upass, rolpass);
  
  	-- Sets urolid to -1 bescause query set it to null.
  	if urolid is null then
  		urolid := -1;
  	end if;
  
  	return urolid;
  
  end;
  $$;
  CREATE FUNCTION
  alter function n_srv.auth(text, text, text) owner to "auth";
  ALTER FUNCTION
  /*
   * Checks if upass hash to the same value as the field rolpass on the table role
   * for the user una, returns rolid of user una if password is ok, -1 otherwise
   */
  create or replace function
  auth(una text, upass text) returns bigint language plpgsql 
  security definer set search_path = n_srv, public, pg_temp as
  $$
  declare
  	_rolid	bigint;
  begin
  	select	rolid
  	into	_rolid
  	from	role
  	where	rolna = una and
  		rolpass = crypt(upass, rolpass);
  
  	if _rolid is null then
  		_rolid := -1;
  	end if;
  
  	return _rolid;
  end;
  $$;
  CREATE FUNCTION
  alter function n_srv.auth(text, text) owner to "auth";
  ALTER FUNCTION
==> Mk role/ext.www.client.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f role/ext.www.client.sql; then touch role/ext.www.client.ck; else kill 10720; fi
  select n_srv.creatrolifne('ext.www.client');
   creatrolifne 
  --------------
   f
  (1 row)
  
  alter role "ext.www.client" inherit;
  ALTER ROLE
  grant usage on schema public, n_srv to "ext.www.client";
  GRANT
  grant "ext.www.client" to "ext.www";
  psql:role/ext.www.client.sql:4: NOTICE:  role "ext.www" is already a member of role "ext.www.client"
  GRANT ROLE
==> Mk role/ext.www.hclient.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f role/ext.www.hclient.sql; then touch role/ext.www.hclient.ck; else kill 31484; fi
  select n_srv.creatrolifne('ext.www.hclient');
   creatrolifne 
  --------------
   f
  (1 row)
  
  alter role "ext.www.hclient" inherit;
  ALTER ROLE
  grant usage on schema public, n_srv to "ext.www.hclient";
  GRANT
  grant "ext.www.hclient" to "ext.www";
  psql:role/ext.www.hclient.sql:4: NOTICE:  role "ext.www" is already a member of role "ext.www.hclient"
  GRANT ROLE
==> Mk table/rolki.sqlgrant
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/rolki.sqlgrant; then touch table/rolki.ckgrant; else kill 19634; fi
  /*
   * Copyright (c) 2011 Anibal Ezau Limon Belmares <limon.anibal@gmail.com>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  
  select revoke_all_on_obj('rolki'::text);
   revoke_all_on_obj 
  -------------------
                   0
  (1 row)
  
  grant select on rolki to "auth";
  GRANT
  grant select on rolki to "ext.www";
  GRANT
  select insrolki('ext.www.client');
   insrolki 
  ----------
  (0 rows)
  
  select insrolki('ext.www.hclient');
   insrolki 
  ----------
  (0 rows)
  
  select insrolki('int.www');
   insrolki 
  ----------
  (0 rows)
  
==> Mk table/sap_octr.sqlgrant
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/sap_octr.sqlgrant; then touch table/sap_octr.ckgrant; else kill 29756; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  select revoke_all_on_obj('sap_octr'::text);
   revoke_all_on_obj 
  -------------------
                   0
  (1 row)
  
  grant select on sap_octr to "ext.www";
  GRANT
==> Mk table/doc.sqlgrant
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/doc.sqlgrant; then touch table/doc.ckgrant; else kill 25087; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  select revoke_all_on_obj('doc'::text);
   revoke_all_on_obj 
  -------------------
                   0
  (1 row)
  
  grant select, insert, update, delete on doc to "int.www";
  GRANT
==> Mk func/cookie.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/cookie.sql; then touch func/cookie.ck; else kill 32238; fi
  /*
   * Copyright (c) 2011 Anibal Ezau Limon Belmares <limon.anibal@gmail.com>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  
  /*
   * If the cookie was write returns true otherwise false.
   */
  create or replace function
  wrt_ck(usessid text, uexpiry timestamp, urolid bigint) returns boolean 
  language plpgsql security definer set search_path = n_srv, public, pg_temp as
  $$
  declare
  	status boolean;
  begin
  	status := false;
  
  	begin
  		   insert	into cookie
  				(sessid, expiry, rolid)
  		   values	(usessid, uexpiry, urolid) 
  		returning 	true
  		     into	status;
  
  	exception 
  		when foreign_key_violation then
  		status := false;
  	end;
  
  	if status is null then
  		status := false;
  	end if;
  
  	return status;
  end;
  $$;
  CREATE FUNCTION
  alter function wrt_ck(text, timestamp, bigint) owner to "www.cookie";
  ALTER FUNCTION
  /*
   * Check if the cookie is valid and return rolid otherwise return -1.
   */
  create or replace function
  chk_ck(usessid text) returns bigint language plpgsql 
  security definer set search_path = n_srv, public, pg_temp as
  $$
  declare
  	urolid bigint;
  begin
  	urolid := -1;
  
  	select	rolid into urolid
  	  from	cookie
  	 where	sessid = usessid
  	   and	expiry > now() at time zone 'utc'
  	   and	active;
  
  	if urolid is null then
  		urolid = -1;
  	end if;
  
  	return urolid;
  end;
  $$;
  CREATE FUNCTION
  alter function chk_ck(text) owner to "www.cookie";
  ALTER FUNCTION
  /*
   * If cookie is deleted returns true otherwise false.
   */
  create or replace function
  rm_ck(usessid text) returns boolean language plpgsql security definer 
  set search_path = n_srv, public, pg_temp as
  $$
  declare
  	status boolean;
  begin
  	status := false;
  
  	   delete
  	     from	cookie
  	    where	sessid = usessid
  	returning 	true
  	     into	status;
  
  	if status is null then
  		status := false;
  	end if;
  
  	return status;
  end;
  $$;
  CREATE FUNCTION
  alter function rm_ck(text) owner to "www.cookie";
  ALTER FUNCTION
  /*
   * Set cookie not active.
   */
  create or replace function
  out_ck(usessid text) returns boolean language plpgsql security definer
  set search_path = n_srv, public, pg_temp as
  $$
  declare
  	status boolean;
  begin
  	status := false;
  
  	update		cookie
  	set		active = false,
  			entm = timezone('utc', now())
  	where		sessid = usessid
  	returning	true
  	into		status;
  
  	if status is null then
  		status := false;
  	end if;
  
  	return status;
  end;
  $$;
  CREATE FUNCTION
  alter function out_ck(text) owner to "www.cookie";
  ALTER FUNCTION
==> Mk table/ext.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/ext.sql; then touch table/ext.ck; else kill 8652; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * Contains the extension numbers.
   */
  drop table if exists ext cascade;
  psql:table/ext.sql:21: NOTICE:  table "ext" does not exist, skipping
  DROP TABLE
  create table ext ( 
  	
  	extid		bigserial not null primary key check (extid >= 0),
  	
  	extno		varchar(32) not null 
  			constraint "extno must be only digits"
  			check (extno ~ '^[[:digit:]]+$'),
  	
  	extbuild	bigint not null references build (buildid) 
  			on update cascade
  			on delete cascade,
  	
  	unique		(extno, extbuild)
  );
  psql:table/ext.sql:36: NOTICE:  CREATE TABLE will create implicit sequence "ext_extid_seq" for serial column "ext.extid"
  psql:table/ext.sql:36: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "ext_pkey" for table "ext"
  psql:table/ext.sql:36: NOTICE:  CREATE TABLE / UNIQUE will create implicit index "ext_extno_extbuild_key" for table "ext"
  CREATE TABLE
==> Mk table/build.sqlidx
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/build.sqlidx; then touch table/build.ckidx; else kill 14949; fi
  /*
   * Copyright (c) 2011 Anibal Ezau Limon Belmares <limon.anibal@gmail.com>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  drop index if exists build_buildno_idx;
  psql:table/build.sqlidx:17: NOTICE:  index "build_buildno_idx" does not exist, skipping
  DROP INDEX
  create index build_buildno_idx on build (buildno);
  CREATE INDEX
==> Mk func/build.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/build.sql; then touch func/build.ck; else kill 8654; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  create or replace function  gbuild  (text) returns bigint
  language sql stable returns null on null input as 
  $$
  	select buildid from build where buildno = $1;
  $$;
  CREATE FUNCTION
==> Mk func/numtre.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/numtre.sql; then touch func/numtre.ck; else kill 32711; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * Search for a valid numeration tree member of some numeration tree family on a
   * determinated date.
   * 'date' must be in UTC.
   */
  create or replace function
  gnumtre(trefid bigint, date timestamp) returns bigint 
  strict stable language sql as
  $$
  	select	numtreid
  	from	numtre
  	where	ntnumtref = $1 and 
  		$2 between numtresttm and numtreentm;
  $$;
  CREATE FUNCTION
  /*
   * Same as gnumtre(bigint, timestamp) but first converts 'date' from timestamptz
   * to timestamp using 'UTC' as time zone.
   */
  create or replace function
  gnumtre(trefid bigint, date timestamptz) returns bigint 
  strict stable language sql as
  $$
  	select gnumtre($1, ($2 at time zone 'utc')::timestamp);
  $$;
  CREATE FUNCTION
  /*
   * Same as gnumtre(bigint, timestamp) but with timestamp defaulting to now()
   */
  create or replace function
  gnumtre(trefid bigint) returns bigint 
  strict stable language sql as
  $$
  	select gnumtre($1, (now() at time zone 'utc')::timestamp);
  $$;
  CREATE FUNCTION
==> Mk table/num.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/num.sql; then touch table/num.ck; else kill 26637; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * Numeration: stores numeration forest.
   */
  drop table if exists num cascade;
  psql:table/num.sql:20: NOTICE:  table "num" does not exist, skipping
  DROP TABLE
  create table num (	
  	
  	numid		serial not null primary key,
  			constraint "numid must be non-negative"
  			check (numid >= 0),
  	
  	nnumtre		bigint not null references numtre (numtreid)
  			on update cascade
  			on delete cascade,
  	
  	nnum		ltree not null
  			constraint "nnum must use single number paths"
  			check (nnum::text ~ E'^([[:digit:]]\\.)*[[:digit:]]$'),
  	
  	numpl		bigint references place (placeid)
  			on update cascade
  			on delete cascade,
  	
  	numsrv		bigint references srv (srvid)
  			on update cascade
  			on delete cascade,
  	unique (nnumtre, nnum)
  );
  psql:table/num.sql:43: NOTICE:  CREATE TABLE will create implicit sequence "num_numid_seq" for serial column "num.numid"
  psql:table/num.sql:43: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "num_pkey" for table "num"
  psql:table/num.sql:43: NOTICE:  CREATE TABLE / UNIQUE will create implicit index "num_nnumtre_nnum_key" for table "num"
  CREATE TABLE
==> Mk table/sap_avfdtcall.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/sap_avfdtcall.sql; then touch table/sap_avfdtcall.ck; else kill 13634; fi
  /*
   * Copyright (c) 2011 Anibal Ezau Limon Belmares <limon.anibal@gmail.com>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * sap_avfdtcall
   */
  drop table if exists sap_avfdtcall cascade;
  psql:table/sap_avfdtcall.sql:20: NOTICE:  table "sap_avfdtcall" does not exist, skipping
  DROP TABLE
  /*
   * from sap's 'avfdtcall' table
   */
  create table sap_avfdtcall (
  	
  	scallid		bigint primary key,
  	
  	scallcos	varchar(126) not null check (scallcos like '_____'),
  	
  	scallsttm	timestamp without time zone not null,
  	
  	scallsrv	bigint not null,
  	
  	scallbill	time not null,
  	
  	scallcost	money not null,
  	
  	scalldest	telno not null,
  	
  	scallext	varchar(32) not null
  			constraint "scallext must be only digits"
  			check (scallext ~ '^[[:digit:]]+$'),
  	
  	scallcode	bigint not null
  );
  psql:table/sap_avfdtcall.sql:46: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "sap_avfdtcall_pkey" for table "sap_avfdtcall"
  CREATE TABLE
mv func/temporal/period.so func/lib/period.so
==> Mk table/docfile.sqlgrant
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/docfile.sqlgrant; then touch table/docfile.ckgrant; else kill 28284; fi
  /*
   * Copyright (c) 2011 Rafael Diaz de Leon Plata <rleon@neuroservices.com.mx>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  select revoke_all_on_obj('docfile'::text);
   revoke_all_on_obj 
  -------------------
                   0
  (1 row)
  
  grant select, insert, update, delete on docfile to "int.www";
  GRANT
mv func/docaclt.so func/lib/docaclt.so
==> Mk table/sap_avfcodext.sqlgrant
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/sap_avfcodext.sqlgrant; then touch table/sap_avfcodext.ckgrant; else kill 30604; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  select revoke_all_on_obj('sap_avfcodext'::text);
   revoke_all_on_obj 
  -------------------
                   0
  (1 row)
  
  grant select on sap_avfcodext to "ext.www";
  GRANT
==> Mk table/srv.sqlgrant
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/srv.sqlgrant; then touch table/srv.ckgrant; else kill 14051; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  select revoke_all_on_obj('srv'::text);
   revoke_all_on_obj 
  -------------------
                   0
  (1 row)
  
  grant select on srv to "ext.www.client";
  GRANT
==> Mk table/ast.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/ast.sql; then touch table/ast.ck; else kill 30497; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  drop table if exists ast cascade;
  psql:table/ast.sql:17: NOTICE:  table "ast" does not exist, skipping
  DROP TABLE
  /*
   * asterisk cdr table, this is a forest of one-by-one relationships between
   * calls.
   */
  create table ast (
  	
  	astid		bigserial primary key
  			constraint "astid must be non-negative"
  			check (astid >= 0),
  	
  	
  	astold		bigint unique 
  			references ast (astid) on 
  			update cascade on 
  			delete cascade,
  	
  	
  	
  	astcode		varchar(126) 
  			constraint "astcode must be digits"
  			check (astcode ~ '^[[:digit:]]+$')
  			constraint "astcode must not be an empty string"
  			check (astcode != ''),
  	
  	astcost		money 
  			constraint "astcost must be non-negative" 
  			check (astcost >= '0.0'),
  	
  	astorig		varchar(126)
  			constraint "astorig must be upper case"
  			check (upper(astorig) = astorig)
  			constraint "astorig must not be an empty string"
  			check (astorig != ''),
  	
  	astdest		telno not null
  			constraint "astdest must be upper case"
  			check (upper(astdest) = astdest)
  			constraint "astdest must not be an empty string"
  			check (astdest != ''),
  	
  	
  	astdnum		int[],
  	
  	astdcont	varchar(126) not null
  			constraint "astdcont must be upper case"
  			check (upper(astdcont) = astdcont)
  			constraint "astdcont must not be an empty string"
  			check (astdcont != ''),
  	
  	astcli		varchar(126) not null
  			constraint "astcli must be upper case"
  			check (upper(astcli) = astcli)
  			constraint "astcli must not be an empty string"
  			check (astcli != ''),
  	
  	astchan		varchar(126) not null
  			constraint "astchan must be upper case"
  			check (upper(astchan) = astchan)
  			constraint "astchan must not be an empty string"
  			check (astchan != ''),
  	
  	asttrunk	varchar(126)
  			constraint "asttrunk must be upper case"
  			check (upper(asttrunk) = asttrunk)
  			constraint "asttrunk must not be an empty string"
  			check (asttrunk != ''),
  	
  	astlapp		varchar(126)
  			constraint "astlapp must be upper case"
  			check (upper(astlapp) = astlapp)
  			constraint "astlapp must not be an empty string"
  			check (astlapp != ''),
  	
  	astldata	varchar(126)
  			constraint "astldata must be upper case"
  			check (upper(astldata) = astldata)
  			constraint "astldata must not be an empty string"
  			check (astldata != ''),
  	
  	aststtm		timestamptz not null,
  	
  	astdur		int not null
  			constraint "astdur must be non negative"
  			check (astdur >= 0),
  	
  	
  	astbill		int not null
  			constraint "astbill must be non negative"
  			check (astbill >= 0),
  	
  	astdispo	varchar(126) not null
  			constraint "astdispo must be upper case"
  			check (upper(astdispo) = astdispo)
  			constraint "astdispo must not be an empty string"
  			check (astdispo != ''),
  	
  	astamafl	varchar(126) not null
  			constraint "astamafl must be upper case"
  			check (upper(astamafl) = astamafl)
  			constraint "astamafl must not be an empty string"
  			check (astamafl != ''),
  			
  	
  	astext		bigint not null references ext (extid) on 
  			update cascade on delete cascade,
  	
  	
  	
  	
  	astvalid	boolean, 
  	
  	astsrv		bigint 
  			references srv (srvid) on 
  			update cascade on 
  			delete cascade,
  	astexcep	bigint
  			references excep (excepid) on
  			update cascade on delete cascade,
  	constraint "astid must not be equal to astold" 
  		check (astid != astold),
  	constraint "astbill must be less or equal to astdur"
  		check (astbill <= astdur),
  	constraint "ast must be unique"
  		exclude (
  			(case when astold is null then
  				'-1'::bigint
  			else
  				astold
  			end) with =,
  			aststtm with =,
  			astext with =)
  );
  psql:table/ast.sql:150: NOTICE:  CREATE TABLE will create implicit sequence "ast_astid_seq" for serial column "ast.astid"
  psql:table/ast.sql:150: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "ast_pkey" for table "ast"
  psql:table/ast.sql:150: NOTICE:  CREATE TABLE / UNIQUE will create implicit index "ast_astold_key" for table "ast"
  psql:table/ast.sql:150: NOTICE:  CREATE TABLE / EXCLUDE will create implicit index "ast must be unique" for table "ast"
  CREATE TABLE
==> Mk table/did.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/did.sql; then touch table/did.ck; else kill 17929; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * DID: Direct Inward Dialing number
   */
  drop table if exists did cascade;
  psql:table/did.sql:20: NOTICE:  table "did" does not exist, skipping
  DROP TABLE
  create table did (
  	
  	didid		bigserial primary key,
  	
  	didno		varchar(126) not null unique,
  	didext		bigint not null references ext (extid)
  			on update cascade
  			on delete cascade
  );
  psql:table/did.sql:29: NOTICE:  CREATE TABLE will create implicit sequence "did_didid_seq" for serial column "did.didid"
  psql:table/did.sql:29: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "did_pkey" for table "did"
  psql:table/did.sql:29: NOTICE:  CREATE TABLE / UNIQUE will create implicit index "did_didno_key" for table "did"
  CREATE TABLE
==> Mk table/ext.sqlidx
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/ext.sqlidx; then touch table/ext.ckidx; else kill 32625; fi
  /*
   * Copyright (c) 2011 Anibal Ezau Limon Belmares <limon.anibal@gmail.com>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  drop index if exists ext_extno_idx;
  psql:table/ext.sqlidx:17: NOTICE:  index "ext_extno_idx" does not exist, skipping
  DROP INDEX
  create index ext_extno_idx on ext (extno);
  CREATE INDEX
==> Mk func/ext.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/ext.sql; then touch func/ext.ck; else kill 26209; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  create or replace function gext(_extno text, _buildid bigint) returns bigint 
  language plpgsql volatile strict as 
  $$
  declare
  	eid	bigint; -- Extension ID
  begin
  	select	extid
  	into	eid
  	from	ext
  	where	extno = _extno and extbuild = _buildid;
  
  	if found then
  		return eid;
  	end if;
  
  	begin
  		insert into ext (extno, extbuild) values (_extno, _buildid)
  		    returning extid into strict eid;
  		return eid;
  	exception
  		/* Somebody inserted it between our select and our insert */
  		when unique_violation then
  			select	extid
  			into	strict eid
  			from	ext 
  			where	extno = _extno and extbuild = _buildid;
  
  			return eid;
  	end;
  
  	return eid;
  end;
  $$;
  CREATE FUNCTION
==> Mk table/dest_num.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/dest_num.sql; then touch table/dest_num.ck; else kill 11788; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * This table caches the values of getnumerations(number), in a future we
   * need to real materialize this table
   */
  drop table if exists dest_num cascade;
  psql:table/dest_num.sql:22: NOTICE:  table "dest_num" does not exist, skipping
  DROP TABLE
  create table dest_num (
  	
  	dndest		varchar(126),
  	
  	dnnumid		bigint not null references num (numid)
  			on update cascade
  			on delete cascade,
  	primary		key (dndest, dnnumid)
  );
  psql:table/dest_num.sql:32: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "dest_num_pkey" for table "dest_num"
  CREATE TABLE
==> Mk table/num.sqlgrant
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/num.sqlgrant; then touch table/num.ckgrant; else kill 27165; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  /*
   * the normal user will only be able to edit the num data through our
   * restricted view, that make a lot of consistency validations
   */
  grant all on num to cdr;
  GRANT
  grant usage on num_numid_seq to cdr;
  GRANT
==> Mk table/num.sqlidx
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/num.sqlidx; then touch table/num.ckidx; else kill 14050; fi
  /*
   * Copyright (c) 2011 Abel Abraham Camarillo Ojeda <acamari@verlet.org>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  drop index if exists num_nnum_gist_idx;
  psql:table/num.sqlidx:17: NOTICE:  index "num_nnum_gist_idx" does not exist, skipping
  DROP INDEX
  create index num_nnum_gist_idx on num using gist(nnum);
  CREATE INDEX
==> Mk table/sap_avfdtcall.sqlgrant
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/sap_avfdtcall.sqlgrant; then touch table/sap_avfdtcall.ckgrant; else kill 19720; fi
  /*
   * Copyright (c) 2011 Anibal Ezau Limon Belmares <limon.anibal@gmail.com>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  select revoke_all_on_obj('sap_avfdtcall'::text);
   revoke_all_on_obj 
  -------------------
                   0
  (1 row)
  
  grant select on sap_avfdtcall to "ext.www.client";
  GRANT
==> Mk table/sap_avfdtcall.sqlidx
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f table/sap_avfdtcall.sqlidx; then touch table/sap_avfdtcall.ckidx; else kill 17519; fi
  /*
   * Copyright (c) 2011 Anibal Ezau Limon Belmares <limon.anibal@gmail.com>
   *
   * Permission to use, copy, modify, and distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  drop index if exists sap_avfdtcall_scallcos_idx;
  psql:table/sap_avfdtcall.sqlidx:17: NOTICE:  index "sap_avfdtcall_scallcos_idx" does not exist, skipping
  DROP INDEX
  drop index if exists sap_avfdtcall_scallext_idx;
  psql:table/sap_avfdtcall.sqlidx:18: NOTICE:  index "sap_avfdtcall_scallext_idx" does not exist, skipping
  DROP INDEX
  drop index if exists sap_avfdtcall_scallsrv_idx;
  psql:table/sap_avfdtcall.sqlidx:19: NOTICE:  index "sap_avfdtcall_scallsrv_idx" does not exist, skipping
  DROP INDEX
  create index sap_avfdtcall_scallcos_idx on sap_avfdtcall (scallcos);
  CREATE INDEX
  create index sap_avfdtcall_scallext_idx on sap_avfdtcall (scallext);
  CREATE INDEX
  create index sap_avfdtcall_scallsrv_idx on sap_avfdtcall (scallsrv);
  CREATE INDEX
==> Mk func/temporal/period.sql
  if psql -1Xwe --set ON_ERROR_STOP= -d _n_srv  	-U _postgresql -f func/temporal/period.sql; then touch func/temporal/period.ck; else kill 31835; fi
  CREATE TYPE period;
  CREATE TYPE
  CREATE OR REPLACE FUNCTION period_in(cstring) RETURNS period LANGUAGE C IMMUTABLE STRICT 
    AS 'period','period_in';
  psql:func/temporal/period.sql:11: NOTICE:  return type period is only a shell
  psql:func/temporal/period.sql:11: ERROR:  could not access file "period": No such file or directory
mk: sqlf=func/temporal/period.sql echo "==> ...  : exit status=exit(143)