Имя: Пароль:
1C
 
1C 8.1 + PostgreSQL 8.2 = Ошибка создания базы
Ø (КапЛей 01.06.2007 20:22)
0 VasGen
 
01.06.07
16:25
Установил 8.1 с эмулятором HASP, потом влепил на ту же машину PostgreSQL 8.2, при попытке создания базы в 1CV8 Servers получается ошибка:
Ошибка создания информационной базы:
Ошибка информационной базы
Ошибка СУБД:
Error: syntax error at or near "(" at character 39

Что может быть не так?
1 Shift
 
01.06.07
16:42
(0) ИМХО: проблема в платформе. Приходится иметь дело с Delphi+PostgreSQL, такое частенько встречаю. Это синтаксическая ошибка, т.е. ошибка в тексте запроса
2 Shift
 
01.06.07
16:47
+(1) Эту ошибку выдает PostgreSQL
3 VasGen
 
01.06.07
16:52
Как решить такую проблему???
4 Худой
 
01.06.07
16:54
(1) Спасибо. Разъяснил, утешил...
у нас такая же ошибка. Я думал, это где то в исходнике, при генерации пакета инсталляции . Все устанавливаем из диска от поставщика.
(0)А PostgreSQL на чем? Windows или Linux?
5 VasGen
 
01.06.07
17:01
Windows XP SP2 RUS, потом предполагается установка на 2003.
6 Худой
 
01.06.07
17:13
(5)у нас на Linux, при формировании самой базы из клиента, такая штука вылетает. Офигеть. Где то у них косяк. А мы грешили ни Linux.
7 Shift
 
01.06.07
17:22
(3-6). ОС здесь ни при чем, синтаксис SQL-языка един, правда существует множество его диалектов и модификаций, и не важно Linux, Windows 98/2000/xp/2003... Дело в том, что при создании новой базы платформа 1С посылает серверу PostgreSQL SQL запросы на создание базы + в ней таблицы, индесы, секуенсы, триггеры, процедуры и т.д. ИМХО: где-то в каком-то из этих запросов разработчики влепили или ненужную скобку (это которая возле 39 символа текста запроса) или возле это скобки ошибка. Естетсвенно, нарушен синтаксис запроса + как следствие PostgreSQL посылает подальше. Так что, ребята, не парьтесь, это не ваша проблема. Повторяю, это лишь мое мнение, т.к. сам такие ошибки при разработке СУБД леплю, сразу и узнал.
8 VasGen
 
01.06.07
17:25
(7) Как человек, который допускает такие же ошибки, ты можешь сказать, как быть в таком случае? Что можно сделать?
9 Худой
 
01.06.07
17:25
Я не парюсь. Отложил до лучших времен. Вот только как 1-эсники узнают об этом глюке?
10 Shift
 
01.06.07
17:30
(8) Если тексты этих запросов платформа берет из какого-нидь ресурсного файла, который не закриптован и его можно вычислтить и подправить (конечно, при условии, что 1С и УК РФ не будут против), тогда нет проблем. В других случаях могу сказать "упс", ждем-с релиза с иправлением этой "опечатки"
11 Shift
 
01.06.07
17:32
Кстати, а какой релиз-то? Можно попробовать (только попробовать!!!) взять предыдущий релиз платформы, в котором база создается без проблем, на нем создать, а потом установить эту платформу и поключить к созданной базе. Не думаю, что структура базы будет отличаться в релизах
12 VasGen
 
01.06.07
17:35
(10) (11) Релиз 8.1.6.38... Других нема))
13 Shift
 
01.06.07
17:41
(12) Если есть подписка на ИТС, стяни с сайта 1С предыдущий релиз, он, по-моему базы без проблем создает.
14 VasGen
 
01.06.07
17:48
(12) Внимательнее смотри (1) )))))
А можно как-то подправить создаваемую базу (он же не смотря на ошибку создает ее!) так, чтобы все это дело заработало?
15 Shift
 
01.06.07
17:52
(14) Надо очень хорошо знать структуру базы, которую создает платформа 1С 8.1, думаю что ее даже не все создатели 1С 8.1 знают. Ответ: теоретически "да", практически "нет". А после это ошибки хоть какие-то намеки на созданную базу в pgAdminIII есть?
16 VasGen
 
01.06.07
18:04
(15) Да, база создается, но при попытке ее подключить 1с-серверс пишет, что база некорректная
17 VasGen
 
01.06.07
18:08
Вот полный лог постгреса за время создания базы:

2007-06-01 18:07:25 STATEMENT:   CREATE FUNCTION mchar_in(cstring)
    RETURNS mchar
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_out(mchar)
    RETURNS cstring
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_send(mchar)
    RETURNS bytea
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_recv(internal)
    RETURNS mchar
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE TYPE mchar (
        INTERNALLENGTH = -1,
       INPUT = mchar_in,
       OUTPUT = mchar_out,
       RECEIVE    = mchar_recv,
       SEND = mchar_send,
       STORAGE = extended
    );
   
    CREATE FUNCTION mchar(mchar, integer, boolean)
    RETURNS mchar
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE CAST (mchar as mchar)
    WITH FUNCTION mchar(mchar, integer, boolean) as IMPLICIT;
   
    CREATE FUNCTION mvarchar_in(cstring)
    RETURNS mvarchar
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_out(mvarchar)
    RETURNS cstring
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_send(mvarchar)
    RETURNS bytea
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_recv(internal)
    RETURNS mvarchar
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE TYPE mvarchar (
        INTERNALLENGTH = -1,
       INPUT = mvarchar_in,
       OUTPUT = mvarchar_out,
       RECEIVE    = mvarchar_recv,
       SEND = mvarchar_send,
       STORAGE = extended
    );
   
    CREATE FUNCTION mvarchar(mvarchar, integer, boolean)
    RETURNS mvarchar
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE CAST (mvarchar as mvarchar)
    WITH FUNCTION mvarchar(mvarchar, integer, boolean) as IMPLICIT;
   
    --Operations and functions
   
    CREATE FUNCTION length(mchar)
    RETURNS int4
    AS '$libdir/mchar', 'mchar_length'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION upper(mchar)
    RETURNS mchar
    AS '$libdir/mchar', 'mchar_upper'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION lower(mchar)
    RETURNS mchar
    AS '$libdir/mchar', 'mchar_lower'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_hash(mchar)
    RETURNS int4
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_concat(mchar, mchar)
    RETURNS    mchar
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE OPERATOR || (
       LEFTARG        =    mchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mchar_concat
    );
   
    CREATE FUNCTION mchar_like(mchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION like_escape(mchar, mchar)
    RETURNS mchar
    AS '$libdir/mchar', 'mchar_like_escape'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_notlike(mchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE OPERATOR ~~ (
       LEFTARG     =   mchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mchar_like,
       RESTRICT    =    likesel,
       JOIN        =    likejoinsel,
       NEGATOR        =    '!~~'
    );
   
    CREATE OPERATOR !~~ (
       LEFTARG     =   mchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mchar_notlike,
       RESTRICT    =    nlikesel,
       JOIN        =    nlikejoinsel,
       NEGATOR        =    '~~'
    );
   
    CREATE FUNCTION mchar_regexeq(mchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_regexne(mchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE OPERATOR ~ (
       LEFTARG     =   mchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mchar_regexeq,
       RESTRICT    =    regexeqsel,
       JOIN        =    regexeqjoinsel,
       NEGATOR        =    '!~'
    );
   
    CREATE OPERATOR !~ (
       LEFTARG     =   mchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mchar_regexne,
       RESTRICT    =    regexnesel,
       JOIN        =    regexnejoinsel,
       NEGATOR        =    '~'
    );
   
    CREATE FUNCTION similar_escape(mchar, mchar)
    RETURNS mchar
    AS '$libdir/mchar', 'mchar_similar_escape'
    LANGUAGE C IMMUTABLE;
   
    CREATE FUNCTION length(mvarchar)
    RETURNS int4
    AS '$libdir/mchar', 'mvarchar_length'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION upper(mvarchar)
    RETURNS mvarchar
    AS '$libdir/mchar', 'mvarchar_upper'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION lower(mvarchar)
    RETURNS mvarchar
    AS '$libdir/mchar', 'mvarchar_lower'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_hash(mvarchar)
    RETURNS int4
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_concat(mvarchar, mvarchar)
    RETURNS    mvarchar
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE OPERATOR || (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mvarchar_concat
    );
   
    CREATE FUNCTION mvarchar_like(mvarchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION like_escape(mvarchar, mvarchar)
    RETURNS mvarchar
    AS '$libdir/mchar', 'mvarchar_like_escape'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_notlike(mvarchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE OPERATOR ~~ (
       LEFTARG     =   mvarchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mvarchar_like,
       RESTRICT    =    likesel,
       JOIN        =    likejoinsel,
       NEGATOR        =    '!~~'
    );
   
    CREATE OPERATOR !~~ (
       LEFTARG     =   mvarchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mvarchar_notlike,
       RESTRICT    =    nlikesel,
       JOIN        =    nlikejoinsel,
       NEGATOR        =    '~~'
    );
   
    CREATE FUNCTION mvarchar_regexeq(mvarchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_regexne(mvarchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE OPERATOR ~ (
       LEFTARG     =   mvarchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mvarchar_regexeq,
       RESTRICT    =    regexeqsel,
       JOIN        =    regexeqjoinsel,
       NEGATOR        =    '!~'
    );
   
    CREATE OPERATOR !~ (
       LEFTARG     =   mvarchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mvarchar_regexne,
       RESTRICT    =    regexnesel,
       JOIN        =    regexnejoinsel,
       NEGATOR        =    '~'
    );
   
    CREATE FUNCTION similar_escape(mvarchar, mvarchar)
    RETURNS mvarchar
    AS '$libdir/mchar', 'mvarchar_similar_escape'
    LANGUAGE C IMMUTABLE;
   
    CREATE FUNCTION substr (mchar, int4)
    RETURNS mchar
    AS '$libdir/mchar', 'mchar_substring_no_len'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION substr (mchar, int4, int4)
    RETURNS mchar
    AS '$libdir/mchar', 'mchar_substring'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION substr (mvarchar, int4)
    RETURNS mvarchar
    AS '$libdir/mchar', 'mvarchar_substring_no_len'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION substr (mvarchar, int4, int4)
    RETURNS mvarchar
    AS '$libdir/mchar', 'mvarchar_substring'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    -- Comparing
    --    MCHAR
   
    CREATE FUNCTION mchar_icase_cmp(mchar, mchar)
    RETURNS int4
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_icase_eq(mchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_icase_ne(mchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_icase_lt(mchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_icase_le(mchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_icase_gt(mchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_icase_ge(mchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
   
    CREATE OPERATOR < (
       LEFTARG        =    mchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mchar_icase_lt,
       COMMUTATOR    =    '>',
       NEGATOR        =    '>=',
       RESTRICT    =    scalarltsel,
       JOIN        =    scalarltjoinsel
    );
   
    CREATE OPERATOR > (
       LEFTARG        =    mchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mchar_icase_gt,
       COMMUTATOR    =    '<',
       NEGATOR        =    '<=',
       RESTRICT    =    scalargtsel,
       JOIN        =    scalargtjoinsel
    );
   
    CREATE OPERATOR <= (
       LEFTARG        =    mchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mchar_icase_le,
       COMMUTATOR    =    '>=',
       NEGATOR        =    '>',
       RESTRICT    =    scalarltsel,
       JOIN        =    scalarltjoinsel
    );
   
    CREATE OPERATOR >= (
       LEFTARG        =    mchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mchar_icase_ge,
       COMMUTATOR    =    '<=',
       NEGATOR        =    '<',
       RESTRICT    =    scalargtsel,
       JOIN        =    scalargtjoinsel
    );
   
    CREATE OPERATOR = (
       LEFTARG        =    mchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mchar_icase_eq,
       COMMUTATOR    =    '=',
       NEGATOR        =    '<>',
       RESTRICT    =    eqsel,
       JOIN        =    eqjoinsel,
       SORT1        =    '<',
       SORT2        =    '<',
       HASHES
    );
   
    CREATE OPERATOR <> (
       LEFTARG        =    mchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mchar_icase_ne,
       COMMUTATOR    =    '<>',
       NEGATOR        =    '=',
       RESTRICT    =    neqsel,
       JOIN        =    neqjoinsel
    );
   
    CREATE FUNCTION mchar_case_cmp(mchar, mchar)
    RETURNS int4
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_case_eq(mchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_case_ne(mchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_case_lt(mchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_case_le(mchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_case_gt(mchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_case_ge(mchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
   
    CREATE OPERATOR &< (
       LEFTARG        =    mchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mchar_case_lt,
       COMMUTATOR    =    '&>',
       NEGATOR        =    '&>=',
       RESTRICT    =    scalarltsel,
       JOIN        =    scalarltjoinsel
    );
   
    CREATE OPERATOR &> (
       LEFTARG        =    mchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mchar_case_gt,
       COMMUTATOR    =    '&<',
       NEGATOR        =    '&<=',
       RESTRICT    =    scalargtsel,
       JOIN        =    scalargtjoinsel
    );
   
    CREATE OPERATOR &<= (
       LEFTARG        =    mchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mchar_case_le,
       COMMUTATOR    =    '&>=',
       NEGATOR        =    '&>',
       RESTRICT    =    scalarltsel,
       JOIN        =    scalarltjoinsel
    );
   
    CREATE OPERATOR &>= (
       LEFTARG        =    mchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mchar_case_ge,
       COMMUTATOR    =    '&<=',
       NEGATOR        =    '&<',
       RESTRICT    =    scalargtsel,
       JOIN        =    scalargtjoinsel
    );
   
    CREATE OPERATOR &= (
       LEFTARG        =    mchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mchar_case_eq,
       COMMUTATOR    =    '&=',
       NEGATOR        =    '&<>',
       RESTRICT    =    eqsel,
       JOIN        =    eqjoinsel,
       SORT1        =    '&<',
       SORT2        =    '&<'
    );
   
    CREATE OPERATOR &<> (
       LEFTARG        =    mchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mchar_case_ne,
       COMMUTATOR    =    '&<>',
       NEGATOR        =    '&=',
       RESTRICT    =    neqsel,
       JOIN        =    neqjoinsel
    );
   
    --MVARCHAR
   
    CREATE FUNCTION mvarchar_icase_cmp(mvarchar, mvarchar)
    RETURNS int4
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_icase_eq(mvarchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_icase_ne(mvarchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_icase_lt(mvarchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_icase_le(mvarchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_icase_gt(mvarchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_icase_ge(mvarchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
   
    CREATE OPERATOR < (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mvarchar_icase_lt,
       COMMUTATOR    =    '>',
       NEGATOR        =    '>=',
       RESTRICT    =    scalarltsel,
       JOIN        =    scalarltjoinsel
    );
   
    CREATE OPERATOR > (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mvarchar_icase_gt,
       COMMUTATOR    =    '<',
       NEGATOR        =    '<=',
       RESTRICT    =    scalargtsel,
       JOIN        =    scalargtjoinsel
    );
   
    CREATE OPERATOR <= (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mvarchar_icase_le,
       COMMUTATOR    =    '>=',
       NEGATOR        =    '>',
       RESTRICT    =    scalarltsel,
       JOIN        =    scalarltjoinsel
    );
   
    CREATE OPERATOR >= (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mvarchar_icase_ge,
       COMMUTATOR    =    '<=',
       NEGATOR        =    '<',
       RESTRICT    =    scalargtsel,
       JOIN        =    scalargtjoinsel
    );
   
    CREATE OPERATOR = (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mvarchar_icase_eq,
       COMMUTATOR    =    '=',
       NEGATOR        =    '<>',
       RESTRICT    =    eqsel,
       JOIN        =    eqjoinsel,
       SORT1        =    '<',
       SORT2        =    '<',
       HASHES
    );
   
    CREATE OPERATOR <> (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mvarchar_icase_ne,
       COMMUTATOR    =    '<>',
       NEGATOR        =    '=',
       RESTRICT    =    neqsel,
       JOIN        =    neqjoinsel
    );
   
    CREATE FUNCTION mvarchar_case_cmp(mvarchar, mvarchar)
    RETURNS int4
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_case_eq(mvarchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_case_ne(mvarchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_case_lt(mvarchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_case_le(mvarchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_case_gt(mvarchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mvarchar_case_ge(mvarchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
   
    CREATE OPERATOR &< (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mvarchar_case_lt,
       COMMUTATOR    =    '&>',
       NEGATOR        =    '&>=',
       RESTRICT    =    scalarltsel,
       JOIN        =    scalarltjoinsel
    );
   
    CREATE OPERATOR &> (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mvarchar_case_gt,
       COMMUTATOR    =    '&<',
       NEGATOR        =    '&<=',
       RESTRICT    =    scalargtsel,
       JOIN        =    scalargtjoinsel
    );
   
    CREATE OPERATOR &<= (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mvarchar_case_le,
       COMMUTATOR    =    '&>=',
       NEGATOR        =    '&>',
       RESTRICT    =    scalarltsel,
       JOIN        =    scalarltjoinsel
    );
   
    CREATE OPERATOR &>= (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mvarchar_case_ge,
       COMMUTATOR    =    '&<=',
       NEGATOR        =    '&<',
       RESTRICT    =    scalargtsel,
       JOIN        =    scalargtjoinsel
    );
   
    CREATE OPERATOR &= (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mvarchar_case_eq,
       COMMUTATOR    =    '&=',
       NEGATOR        =    '&<>',
       RESTRICT    =    eqsel,
       JOIN        =    eqjoinsel,
       SORT1        =    '&<',
       SORT2        =    '&<'
    );
   
    CREATE OPERATOR &<> (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mvarchar_case_ne,
       COMMUTATOR    =    '&<>',
       NEGATOR        =    '&=',
       RESTRICT    =    neqsel,
       JOIN        =    neqjoinsel
    );
   
    --    MCHAR <> MVARCHAR
   
    CREATE FUNCTION mc_mv_icase_cmp(mchar, mvarchar)
    RETURNS int4
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mc_mv_icase_eq(mchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mc_mv_icase_ne(mchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mc_mv_icase_lt(mchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mc_mv_icase_le(mchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mc_mv_icase_gt(mchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mc_mv_icase_ge(mchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
   
    CREATE OPERATOR < (
       LEFTARG        =    mchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mc_mv_icase_lt,
       COMMUTATOR    =    '>',
       NEGATOR        =    '>=',
       RESTRICT    =    scalarltsel,
       JOIN        =    scalarltjoinsel
    );
   
    CREATE OPERATOR > (
       LEFTARG        =    mchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mc_mv_icase_gt,
       COMMUTATOR    =    '<',
       NEGATOR        =    '<=',
       RESTRICT    =    scalargtsel,
       JOIN        =    scalargtjoinsel
    );
   
    CREATE OPERATOR <= (
       LEFTARG        =    mchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mc_mv_icase_le,
       COMMUTATOR    =    '>=',
       NEGATOR        =    '>',
       RESTRICT    =    scalarltsel,
       JOIN        =    scalarltjoinsel
    );
   
    CREATE OPERATOR >= (
       LEFTARG        =    mchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mc_mv_icase_ge,
       COMMUTATOR    =    '<=',
       NEGATOR        =    '<',
       RESTRICT    =    scalargtsel,
       JOIN        =    scalargtjoinsel
    );
   
    CREATE OPERATOR = (
       LEFTARG        =    mchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mc_mv_icase_eq,
       COMMUTATOR    =    '=',
       NEGATOR        =    '<>',
       RESTRICT    =    eqsel,
       JOIN        =    eqjoinsel,
       SORT1        =    '<',
       SORT2        =    '<'
    );
   
    CREATE OPERATOR <> (
       LEFTARG        =    mchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mc_mv_icase_ne,
       COMMUTATOR    =    '<>',
       NEGATOR        =    '=',
       RESTRICT    =    neqsel,
       JOIN        =    neqjoinsel
    );
   
    CREATE FUNCTION mc_mv_case_cmp(mchar, mvarchar)
    RETURNS int4
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mc_mv_case_eq(mchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mc_mv_case_ne(mchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mc_mv_case_lt(mchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mc_mv_case_le(mchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mc_mv_case_gt(mchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mc_mv_case_ge(mchar, mvarchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
   
    CREATE OPERATOR &< (
       LEFTARG        =    mchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mc_mv_case_lt,
       COMMUTATOR    =    '&>',
       NEGATOR        =    '&>=',
       RESTRICT    =    scalarltsel,
       JOIN        =    scalarltjoinsel
    );
   
    CREATE OPERATOR &> (
       LEFTARG        =    mchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mc_mv_case_gt,
       COMMUTATOR    =    '&<',
       NEGATOR        =    '&<=',
       RESTRICT    =    scalargtsel,
       JOIN        =    scalargtjoinsel
    );
   
    CREATE OPERATOR &<= (
       LEFTARG        =    mchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mc_mv_case_le,
       COMMUTATOR    =    '&>=',
       NEGATOR        =    '&>',
       RESTRICT    =    scalarltsel,
       JOIN        =    scalarltjoinsel
    );
   
    CREATE OPERATOR &>= (
       LEFTARG        =    mchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mc_mv_case_ge,
       COMMUTATOR    =    '&<=',
       NEGATOR        =    '&<',
       RESTRICT    =    scalargtsel,
       JOIN        =    scalargtjoinsel
    );
   
    CREATE OPERATOR &= (
       LEFTARG        =    mchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mc_mv_case_eq,
       COMMUTATOR    =    '&=',
       NEGATOR        =    '&<>',
       RESTRICT    =    eqsel,
       JOIN        =    eqjoinsel,
       SORT1        =    '&<',
       SORT2        =    '&<'
    );
   
    CREATE OPERATOR &<> (
       LEFTARG        =    mchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mc_mv_case_ne,
       COMMUTATOR    =    '&<>',
       NEGATOR        =    '&=',
       RESTRICT    =    neqsel,
       JOIN        =    neqjoinsel
    );
   
    --    MVARCHAR <> MCHAR
   
    CREATE FUNCTION mv_mc_icase_cmp(mvarchar, mchar)
    RETURNS int4
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mv_mc_icase_eq(mvarchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mv_mc_icase_ne(mvarchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mv_mc_icase_lt(mvarchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mv_mc_icase_le(mvarchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mv_mc_icase_gt(mvarchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mv_mc_icase_ge(mvarchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
   
    CREATE OPERATOR < (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mv_mc_icase_lt,
       COMMUTATOR    =    '>',
       NEGATOR        =    '>=',
       RESTRICT    =    scalarltsel,
       JOIN        =    scalarltjoinsel
    );
   
    CREATE OPERATOR > (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mv_mc_icase_gt,
       COMMUTATOR    =    '<',
       NEGATOR        =    '<=',
       RESTRICT    =    scalargtsel,
       JOIN        =    scalargtjoinsel
    );
   
    CREATE OPERATOR <= (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mv_mc_icase_le,
       COMMUTATOR    =    '>=',
       NEGATOR        =    '>',
       RESTRICT    =    scalarltsel,
       JOIN        =    scalarltjoinsel
    );
   
    CREATE OPERATOR >= (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mv_mc_icase_ge,
       COMMUTATOR    =    '<=',
       NEGATOR        =    '<',
       RESTRICT    =    scalargtsel,
       JOIN        =    scalargtjoinsel
    );
   
    CREATE OPERATOR = (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mv_mc_icase_eq,
       COMMUTATOR    =    '=',
       NEGATOR        =    '<>',
       RESTRICT    =    eqsel,
       JOIN        =    eqjoinsel,
       SORT1        =    '<',
       SORT2        =    '<'
    );
   
    CREATE OPERATOR <> (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mv_mc_icase_ne,
       COMMUTATOR    =    '<>',
       NEGATOR        =    '=',
       RESTRICT    =    neqsel,
       JOIN        =    neqjoinsel
    );
   
    CREATE FUNCTION mv_mc_case_cmp(mvarchar, mchar)
    RETURNS int4
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mv_mc_case_eq(mvarchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mv_mc_case_ne(mvarchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mv_mc_case_lt(mvarchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mv_mc_case_le(mvarchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mv_mc_case_gt(mvarchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mv_mc_case_ge(mvarchar, mchar)
    RETURNS bool
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
   
    CREATE OPERATOR &< (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mv_mc_case_lt,
       COMMUTATOR    =    '&>',
       NEGATOR        =    '&>=',
       RESTRICT    =    scalarltsel,
       JOIN        =    scalarltjoinsel
    );
   
    CREATE OPERATOR &> (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mv_mc_case_gt,
       COMMUTATOR    =    '&<',
       NEGATOR        =    '&<=',
       RESTRICT    =    scalargtsel,
       JOIN        =    scalargtjoinsel
    );
   
    CREATE OPERATOR &<= (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mv_mc_case_le,
       COMMUTATOR    =    '&>=',
       NEGATOR        =    '&>',
       RESTRICT    =    scalarltsel,
       JOIN        =    scalarltjoinsel
    );
   
    CREATE OPERATOR &>= (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mv_mc_case_ge,
       COMMUTATOR    =    '&<=',
       NEGATOR        =    '&<',
       RESTRICT    =    scalargtsel,
       JOIN        =    scalargtjoinsel
    );
   
    CREATE OPERATOR &= (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mv_mc_case_eq,
       COMMUTATOR    =    '&=',
       NEGATOR        =    '&<>',
       RESTRICT    =    eqsel,
       JOIN        =    eqjoinsel,
       SORT1        =    '&<',
       SORT2        =    '&<'
    );
   
    CREATE OPERATOR &<> (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mv_mc_case_ne,
       COMMUTATOR    =    '&<>',
       NEGATOR        =    '&=',
       RESTRICT    =    neqsel,
       JOIN        =    neqjoinsel
    );
   
    -- MCHAR - VARCHAR operations
   
    CREATE FUNCTION mchar_mvarchar_concat(mchar, mvarchar)
    RETURNS    mvarchar
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE OPERATOR || (
       LEFTARG        =    mchar,
       RIGHTARG    =    mvarchar,
       PROCEDURE    =    mchar_mvarchar_concat
    );
   
    CREATE FUNCTION mvarchar_mchar_concat(mvarchar, mchar)
    RETURNS    mvarchar
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE OPERATOR || (
       LEFTARG        =    mvarchar,
       RIGHTARG    =    mchar,
       PROCEDURE    =    mvarchar_mchar_concat
    );
  &nb
18 VasGen
 
01.06.07
18:30
CREATE FUNCTION mvarchar_mchar(mvarchar, integer, boolean)
    RETURNS mchar
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE CAST (mvarchar as mchar)
    WITH FUNCTION mvarchar_mchar(mvarchar, integer, boolean) as IMPLICIT;
   
    CREATE FUNCTION mchar_mvarchar(mchar, integer, boolean)
    RETURNS mvarchar
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE CAST (mchar as mvarchar)
    WITH FUNCTION mchar_mvarchar(mchar, integer, boolean) as IMPLICIT;
   
    -- Aggregates
   
    CREATE FUNCTION mchar_larger(mchar, mchar)
    RETURNS mchar
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE AGGREGATE max (
       BASETYPE    =    mchar,
       SFUNC        =    mchar_larger,
       STYPE        =    mchar,
       SORTOP        =    '>'
    );
   
    CREATE FUNCTION mchar_smaller(mchar, mchar)
    RETURNS mchar
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE AGGREGATE min (
       BASETYPE    =    mchar,
       SFUNC        =    mchar_smaller,
       STYPE        =    mchar,
       SORTOP        =    '<'
    );
   
    CREATE FUNCTION mvarchar_larger(mvarchar, mvarchar)
    RETURNS mvarchar
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE AGGREGATE max (
       BASETYPE    =    mvarchar,
       SFUNC        =    mvarchar_larger,
       STYPE        =    mvarchar,
       SORTOP        =    '>'
    );
   
    CREATE FUNCTION mvarchar_smaller(mvarchar, mvarchar)
    RETURNS mvarchar
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE AGGREGATE min (
       BASETYPE    =    mvarchar,
       SFUNC        =    mvarchar_smaller,
       STYPE        =    mvarchar,
       SORTOP        =    '<'
    );
   
    -- B-tree support
   
    CREATE OPERATOR CLASS mchar_icase_ops
    DEFAULT FOR TYPE mchar USING btree AS
            OPERATOR        1       <  ,
           OPERATOR        2       <= ,
           OPERATOR        3       =  ,
           OPERATOR        4       >= ,
           OPERATOR        5       >  ,
           FUNCTION        1       mchar_icase_cmp(mchar, mchar),
            OPERATOR        1       <  (mchar, mvarchar),
           OPERATOR        2       <= (mchar, mvarchar),
           OPERATOR        3       =  (mchar, mvarchar),
           OPERATOR        4       >= (mchar, mvarchar),
           OPERATOR        5       >  (mchar, mvarchar),
           FUNCTION        1       mc_mv_icase_cmp(mchar, mvarchar);
   
    CREATE OPERATOR CLASS mchar_icase_ops
    DEFAULT FOR TYPE mchar USING hash AS
           OPERATOR        1       =  ,
           FUNCTION        1       mchar_hash(mchar);
   
    CREATE OPERATOR CLASS mvarchar_icase_ops
    DEFAULT FOR TYPE mvarchar USING btree AS
            OPERATOR        1       <  ,
           OPERATOR        2       <= ,
           OPERATOR        3       =  ,
           OPERATOR        4       >= ,
           OPERATOR        5       >  ,
           FUNCTION        1       mvarchar_icase_cmp(mvarchar, mvarchar),
            OPERATOR        1       <  (mvarchar, mchar),
           OPERATOR        2       <= (mvarchar, mchar),
           OPERATOR        3       =  (mvarchar, mchar),
           OPERATOR        4       >= (mvarchar, mchar),
           OPERATOR        5       >  (mvarchar, mchar),
           FUNCTION        1       mv_mc_icase_cmp(mvarchar, mchar);
   
    CREATE OPERATOR CLASS mvarchar_icase_ops
    DEFAULT FOR TYPE mvarchar USING hash AS
           OPERATOR        1       =  ,
           FUNCTION        1       mvarchar_hash(mvarchar);
   
   
    -- Index support for LIKE
   
    CREATE FUNCTION mchar_pattern_fixed_prefix(bool, internal, internal, internal, internal)
    RETURNS int4
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
   
    CREATE FUNCTION mchar_greaterstring(bool, internal)
    RETURNS internal
    AS '$libdir/mchar'
    LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
    --
    --
    --  FULLEQ
    --
    --
    CREATE OR REPLACE FUNCTION isfulleq_bool(bool, bool)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_bool(bool)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = bool,
       RIGHTARG    = bool,
       PROCEDURE    = isfulleq_bool,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS bool_fill_ops
     FOR TYPE bool USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_bool(bool);
   
    -- For bytea
   
    CREATE OR REPLACE FUNCTION isfulleq_bytea(bytea, bytea)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_bytea(bytea)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = bytea,
       RIGHTARG    = bytea,
       PROCEDURE    = isfulleq_bytea,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS bytea_fill_ops
     FOR TYPE bytea USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_bytea(bytea);
   
    -- For char
   
    CREATE OR REPLACE FUNCTION isfulleq_char(char, char)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_char(char)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = char,
       RIGHTARG    = char,
       PROCEDURE    = isfulleq_char,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS char_fill_ops
     FOR TYPE char USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_char(char);
   
    -- For name
   
    CREATE OR REPLACE FUNCTION isfulleq_name(name, name)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_name(name)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = name,
       RIGHTARG    = name,
       PROCEDURE    = isfulleq_name,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS name_fill_ops
     FOR TYPE name USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_name(name);
   
    -- For int8
   
    CREATE OR REPLACE FUNCTION isfulleq_int8(int8, int8)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_int8(int8)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = int8,
       RIGHTARG    = int8,
       PROCEDURE    = isfulleq_int8,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS int8_fill_ops
     FOR TYPE int8 USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_int8(int8);
   
    -- For int2
   
    CREATE OR REPLACE FUNCTION isfulleq_int2(int2, int2)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_int2(int2)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = int2,
       RIGHTARG    = int2,
       PROCEDURE    = isfulleq_int2,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS int2_fill_ops
     FOR TYPE int2 USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_int2(int2);
   
    -- For int2vector
   
    CREATE OR REPLACE FUNCTION isfulleq_int2vector(int2vector, int2vector)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_int2vector(int2vector)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = int2vector,
       RIGHTARG    = int2vector,
       PROCEDURE    = isfulleq_int2vector,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS int2vector_fill_ops
     FOR TYPE int2vector USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_int2vector(int2vector);
   
    -- For int4
   
    CREATE OR REPLACE FUNCTION isfulleq_int4(int4, int4)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_int4(int4)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = int4,
       RIGHTARG    = int4,
       PROCEDURE    = isfulleq_int4,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS int4_fill_ops
     FOR TYPE int4 USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_int4(int4);
   
    -- For text
   
    CREATE OR REPLACE FUNCTION isfulleq_text(text, text)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_text(text)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = text,
       RIGHTARG    = text,
       PROCEDURE    = isfulleq_text,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS text_fill_ops
     FOR TYPE text USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_text(text);
   
    -- For oid
   
    CREATE OR REPLACE FUNCTION isfulleq_oid(oid, oid)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_oid(oid)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = oid,
       RIGHTARG    = oid,
       PROCEDURE    = isfulleq_oid,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS oid_fill_ops
     FOR TYPE oid USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_oid(oid);
   
    -- For xid
   
    CREATE OR REPLACE FUNCTION isfulleq_xid(xid, xid)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_xid(xid)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = xid,
       RIGHTARG    = xid,
       PROCEDURE    = isfulleq_xid,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS xid_fill_ops
     FOR TYPE xid USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_xid(xid);
   
    -- For cid
   
    CREATE OR REPLACE FUNCTION isfulleq_cid(cid, cid)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_cid(cid)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = cid,
       RIGHTARG    = cid,
       PROCEDURE    = isfulleq_cid,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS cid_fill_ops
     FOR TYPE cid USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_cid(cid);
   
    -- For oidvector
   
    CREATE OR REPLACE FUNCTION isfulleq_oidvector(oidvector, oidvector)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_oidvector(oidvector)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = oidvector,
       RIGHTARG    = oidvector,
       PROCEDURE    = isfulleq_oidvector,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS oidvector_fill_ops
     FOR TYPE oidvector USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_oidvector(oidvector);
   
    -- For float4
   
    CREATE OR REPLACE FUNCTION isfulleq_float4(float4, float4)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_float4(float4)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = float4,
       RIGHTARG    = float4,
       PROCEDURE    = isfulleq_float4,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS float4_fill_ops
     FOR TYPE float4 USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_float4(float4);
   
    -- For float8
   
    CREATE OR REPLACE FUNCTION isfulleq_float8(float8, float8)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_float8(float8)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = float8,
       RIGHTARG    = float8,
       PROCEDURE    = isfulleq_float8,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS float8_fill_ops
     FOR TYPE float8 USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_float8(float8);
   
    -- For abstime
   
    CREATE OR REPLACE FUNCTION isfulleq_abstime(abstime, abstime)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_abstime(abstime)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = abstime,
       RIGHTARG    = abstime,
       PROCEDURE    = isfulleq_abstime,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS abstime_fill_ops
     FOR TYPE abstime USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_abstime(abstime);
   
    -- For reltime
   
    CREATE OR REPLACE FUNCTION isfulleq_reltime(reltime, reltime)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_reltime(reltime)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = reltime,
       RIGHTARG    = reltime,
       PROCEDURE    = isfulleq_reltime,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS reltime_fill_ops
     FOR TYPE reltime USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_reltime(reltime);
   
    -- For macaddr
   
    CREATE OR REPLACE FUNCTION isfulleq_macaddr(macaddr, macaddr)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_macaddr(macaddr)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = macaddr,
       RIGHTARG    = macaddr,
       PROCEDURE    = isfulleq_macaddr,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS macaddr_fill_ops
     FOR TYPE macaddr USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_macaddr(macaddr);
   
    -- For inet
   
    CREATE OR REPLACE FUNCTION isfulleq_inet(inet, inet)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_inet(inet)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = inet,
       RIGHTARG    = inet,
       PROCEDURE    = isfulleq_inet,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS inet_fill_ops
     FOR TYPE inet USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_inet(inet);
   
    -- For cidr
   
    CREATE OR REPLACE FUNCTION isfulleq_cidr(cidr, cidr)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_cidr(cidr)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = cidr,
       RIGHTARG    = cidr,
       PROCEDURE    = isfulleq_cidr,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS cidr_fill_ops
     FOR TYPE cidr USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_cidr(cidr);
   
    -- For varchar
   
    CREATE OR REPLACE FUNCTION isfulleq_varchar(varchar, varchar)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_varchar(varchar)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = varchar,
       RIGHTARG    = varchar,
       PROCEDURE    = isfulleq_varchar,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS varchar_fill_ops
     FOR TYPE varchar USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_varchar(varchar);
   
    -- For date
   
    CREATE OR REPLACE FUNCTION isfulleq_date(date, date)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_date(date)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = date,
       RIGHTARG    = date,
       PROCEDURE    = isfulleq_date,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS date_fill_ops
     FOR TYPE date USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_date(date);
   
    -- For time
   
    CREATE OR REPLACE FUNCTION isfulleq_time(time, time)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_time(time)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = time,
       RIGHTARG    = time,
       PROCEDURE    = isfulleq_time,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS time_fill_ops
     FOR TYPE time USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_time(time);
   
    -- For timestamp
   
    CREATE OR REPLACE FUNCTION isfulleq_timestamp(timestamp, timestamp)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_timestamp(timestamp)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = timestamp,
       RIGHTARG    = timestamp,
       PROCEDURE    = isfulleq_timestamp,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS timestamp_fill_ops
     FOR TYPE timestamp USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_timestamp(timestamp);
   
    -- For timestamptz
   
    CREATE OR REPLACE FUNCTION isfulleq_timestamptz(timestamptz, timestamptz)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_timestamptz(timestamptz)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = timestamptz,
       RIGHTARG    = timestamptz,
       PROCEDURE    = isfulleq_timestamptz,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS timestamptz_fill_ops
     FOR TYPE timestamptz USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_timestamptz(timestamptz);
   
    -- For interval
   
    CREATE OR REPLACE FUNCTION isfulleq_interval(interval, interval)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_interval(interval)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = interval,
       RIGHTARG    = interval,
       PROCEDURE    = isfulleq_interval,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS interval_fill_ops
     FOR TYPE interval USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_interval(interval);
   
    -- For timetz
   
    CREATE OR REPLACE FUNCTION isfulleq_timetz(timetz, timetz)
    RETURNS bool AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_timetz(timetz)
    RETURNS int4 AS '$libdir/fulleq'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
   
    CREATE OPERATOR == (
       LEFTARG        = timetz,
       RIGHTARG    = timetz,
       PROCEDURE    = isfulleq_timetz,
       COMMUTATOR    = '==',
       RESTRICT    = eqsel,
       JOIN        = eqjoinsel,
       HASHES
    );
   
    CREATE OPERATOR CLASS timetz_fill_ops
     FOR TYPE timetz USING hash AS
       OPERATOR    1    ==,
       FUNCTION    1    fullhash_timetz(timetz);
   
    -- For mchar
   
    CREATE OR REPLACE FUNCTION isfulleq_mchar(mchar, mchar)
    RETURNS bool AS '$libdir/mchar'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
     
    CREATE OR REPLACE FUNCTION fullhash_mchar(mchar)
    RETURNS int4 AS '$libdir/mchar'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OPERATOR == (
        LEFTARG     = mchar,
        RIGHTARG    = mchar,
        PROCEDURE   = isfulleq_mchar,
        COMMUTATOR  = '==',
        RESTRICT    = eqsel,
        JOIN        = eqjoinsel,
        HASHES
    );
   
    CREATE OPERATOR CLASS mchar_fill_ops
     FOR TYPE mchar USING hash AS
        OPERATOR    1   ==,
        FUNCTION    1   fullhash_mchar(mchar);
   
    -- For mvarchar
   
    CREATE OR REPLACE FUNCTION isfulleq_mvarchar(mvarchar, mvarchar)
    RETURNS bool AS '$libdir/mchar'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OR REPLACE FUNCTION fullhash_mvarchar(mvarchar)
    RETURNS int4 AS '$libdir/mchar'
    LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
   
    CREATE OPERATOR == (
        LEFTARG     = mvarchar,
        RIGHTARG    = mvarchar,
        PROCEDURE   = isfulleq_mvarchar,
        COMMUTATOR  = '==',
        RESTRICT    = eqsel,
        JOIN        = eqjoinsel,
        HASHES
    );
   
    CREATE OPERATOR CLASS mvarchar_fill_ops
     FOR TYPE mvarchar USING hash AS
        OPERATOR    1   ==,
        FUNCTION    1   fullhash_mvarchar(mvarchar);
   
    CREATE OR REPLACE FUNCTION fasttruncate(text)
    RETURNS void AS '$libdir/fasttrun'
    LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
   
2007-06-01 18:07:25 WARNING:  there is no transaction in progress
2007-06-01 18:07:26 ERROR:  syntax error at or near "application" at character 24
2007-06-01 18:07:26 STATEMENT:  lock table pg_class in application share mode
2007-06-01 18:07:26 WARNING:  there is no transaction in progress
2007-06-01 18:07:26 ERROR:  syntax error at or near "(" at character 39
2007-06-01 18:07:26 STATEMENT:  create table Config (FileName mvarchar(128) not null primary key, Creation timestamp not null, Modified timestamp not null, Attributes int not null, DataSize int not null, BinaryData bytea not null)
2007-06-01 18:07:26 WARNING:  there is no transaction in progress
19 Худой
 
01.06.07
18:30
Мля! Ты еще сюда энциклопедию скопировал бы.
У нас Релиз 8.1.7.37 и тоже трабла такая же
20 VasGen
 
01.06.07
18:31
В конце как раз ошибка и отмечена.
21 VasGen
 
01.06.07
18:32
(19) Статей тут и так хватает, а решения этой проблемы нет.
22 Худой
 
01.06.07
18:44
А где он записывается, при создании базы?
23 VasGen
 
01.06.07
18:53
(22) в папке Postgresql\data\pg_log

насколько я понимаю весь приведенный выше текст можно ввести в query и результат должен быть таким же?
вот что получаем в результате таких действий:

NOTICE:  type "mchar" is not yet defined
DETAIL:  Creating a shell type definition.

ERROR: could not access file "$libdir/mchar": No such file or directory
SQL state: 58P01
24 Худой
 
01.06.07
19:10
Да, именно так. Но надо потом еще действия моделировать. Дурдом какой то.
25 VasGen
 
01.06.07
20:01
(24) Как это моделировать?
26 baklan22
 
01.06.07
20:18
А название базы можно сюда? Или оно есть в постах, но влом читать все.
27 КапЛей
 
01.06.07
20:21
идите Вы так сказать в ... назовем это "жопой".... не надо про эмуляторы
AdBlock убивает бесплатный контент. 1Сергей