Summary: | mchar=mvarchar -- ERROR: could not find member 1(416621,416621) of opfamily 416784 | ||
---|---|---|---|
Product: | Postgres@Etersoft | Reporter: | Станислав Коробейников <stas> |
Component: | выполнение запросов | Assignee: | Станислав Коробейников <stas> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | critical | ||
Priority: | P4 | CC: | boris, goga, lav |
Version: | не указана | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | 4460 | ||
Bug Blocks: | 3247 |
Description
Станислав Коробейников
2009-03-04 14:02:51 MSK
Тоже самое в postgre c char и varchar работает, в MSSQL (n)char и (n)varchar тоже работает. В 8.2.12 тоже самое работает. Можно переопределить функции сравнения(mchar с mvarchar) mv_mc_icase_eq и mc_mv_icase_eq. И сделать приведение к mvarchar'у перед сравнением. Попробывал работает. Думаю, пока так и надо сделать. Вот такая функция должнга быть: CREATE OR REPLACE FUNCTION mv_mc_icase_eq(b mvarchar, a mchar ) RETURNS boolean AS $BODY$ begin return (a::mvarchar = b); end $BODY$ LANGUAGE 'plpgsql' VOLATILE COST 100; ALTER FUNCTION mv_mc_icase_eq(b mvarchar, a mchar ) OWNER TO postgres; и аналогичная mc_mv_icase_eq(a mchar, b mvarchar) Ну так что, проблемы нет на новых PG 8.3.9 и 8.4.1? (In reply to comment #4) > Ну так что, проблемы нет на новых PG 8.3.9 и 8.4.1? > пробовал на 8.3.9 и на 8.4.1, база инициализировалась последней сельтой (1.0.7),тестовый запрос CREATE TABLE a (mchar2 MCHAR(2) NOT NULL); CREATE TABLE c (mvarchar255 mvarchar NOT NULL); SELECT * FROM a, c WHERE mchar2 = mvarchar255; ошибок не выявлено, можно закрыть багу, как я понимаю |