F.28. mchar

Модуль mchar предоставляет дополнительные типы данных для совместимости с Microsoft SQL Server (MS SQL).

F.28.1. Обзор

Этот модуль был разработан для улучшения поддержки системы 1С:Предприятие, самой популярной в России CRM и ERP-платформы.

Он содержит реализацию типов MCHAR и MVARCHAR, которые с точностью до ошибок совместимы с типами MS SQL CHAR и VARCHAR, соответственно. Эти типы используют библиотеку ICU для сравнения строк и преобразования регистра, так что они действуют одинаково в разных операционных системах.

В Postgres Pro также есть расширение citext, предоставляющие типы, подобные MCHAR. Но это расширение не воспроизводит поведение MS-SQL в отношении пробельных символов в конце строки.

Отличия от стандартных типов Postgres Pro CHAR и VARCHAR:

  • Сравнение без учёта регистра

  • Обработка пробельных символов в конце строки

  • Эти типы всегда хранятся как двухбайтовые строки Unicode вне зависимости от кодировки базы данных.

F.28.2. Дополнительные типы

  • mchar — аналог типа char в MS SQL

  • mvarchar — аналог типа varchar в MS SQL

F.28.3. Функциональность типов MCHAR и MVARCHAR

  • Определяется функция length(str)

  • Определяется функция substr(str, pos[, length])

  • Определяется оператор ||, применяемый для конкатенации любых аргументов mchar и mvarchar

  • Определяется набор операторов: <, <=, =, >= и > для сравнения символов без учёта регистра (ICU)

  • Определяется набор операторов: &<, &<=, &=, &>= и &> для сравнения с учётом регистра (ICU)

  • Неявное приведение между типами mchar и mvarchar

  • Поддержка B-деревьев и хеш-индексов

  • Поддержка оператора LIKE [ESCAPE]

  • Поддержка оператора SIMILAR TO [ESCAPE]

  • Поддержка оператора ~ (регулярные выражения POSIX)

  • Поддержка индексов для оператора LIKE

F.28.4. Авторы

      Олег Бартунов 
      Фёдор Сигаев 
    

F.28. mchar

The mchar module provides additional data types for compatibility with Microsoft SQL Server (MS SQL).

F.28.1. Overview

This module has been designed to improve 1C Enterprise support, most popular Russian CRM and ERP system.

It implements types MCHAR and MVARCHAR, which are bug-to-bug compatible with MS SQL CHAR and VARCHAR respectively. Additionally, these types use the ICU library for comparison and case conversion, so their behavior is identical across different operating systems.

Postgres Pro also includes citext extension which provides types similar to MCHAR. But this extension doesn't emulate MS-SQL behavior concerning end-of-value whitespace.

Differences from Postgres Pro standard CHAR and VARCHAR are:

  • Case insensitive comparison

  • Handling of the whitespace at the end of string

  • These types are always stored as two-byte unicode value regardless of database encoding.

F.28.2. Additional types

  • mchar — analog of the MS SQL char type

  • mvarchar — analog of the MS SQL varchar type

F.28.3. MCHAR and MVARCHAR features

  • Defines length(str) function

  • Defines substr(str, pos[, length]) function

  • Defines || operator, which would be applied to concatenate any (mchar and mvarchar) arguments

  • Defines set of operators: <, <=, =, >=, > for case-insensitive comparison (ICU)

  • Defines set of operators: &<, &<=, &=, &>=, &> to case-sensitive comparison (ICU)

  • Implicit cast between mchar and mvarchar types

  • B-tree and Hash-index support

  • The LIKE [ESCAPE] operator support

  • The SIMILAR TO [ESCAPE] operator support

  • The ~ operator (POSIX regexp) support

  • Index support for the LIKE operator

F.28.4. Authors


      Oleg Bartunov 
      Teodor Sigaev