Выпуск Π‘Π£Π‘Π” Firebird 5.0

ПослС Π΄Π²ΡƒΡ… с ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΎΠΉ Π»Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прСдставлСн Ρ€Π΅Π»ΠΈΠ· рСляционной Π‘Π£Π‘Π” Firebird 5.0. Firebird ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π‘Π£Π‘Π” InterBase 6.0, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ Π² 2000 Π³ΠΎΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Borland. Firebird распространяСтся ΠΏΠΎΠ΄ свободной Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MPL ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ стандарты ANSI SQL, Π² Ρ‚ΠΎΠΌ числС Ρ‚Π°ΠΊΠΈΠ΅ возмоТности, ΠΊΠ°ΠΊ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹, Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ. Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ сборки ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ для Linux, Windows, macOS ΠΈ Android.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²Π°:

  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. РаспараллСливаниС Π² нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΏΡ€ΠΈ создании индСксов, сборкС мусора (автоматичСскиС ΠΈ Ρ€ΡƒΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ sweep), создании Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ ΠΈ восстановлСнии ΠΈΠ· Π½ΠΈΡ…. gfix -sweep -parallel 4 dbname gbak -b -par 4 -user username -pass password dbname backupname
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° частичных индСксов, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΡ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½Ρ‹Π΅ записи, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈ создании индСкса условиям. CREATE INDEX IT1_COL ON T1 (COL) WHERE COL < 100;
  • Π’ выраТСниях SELECT WITH LOCK, UPDATE ΠΈ DELETE Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ синтаксис «SKIP LOCKED», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ записи, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ запроса выставлСна Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΆΠ΄Π°Ρ‚ΡŒ освобоТдСния Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΈ пСрСсСчСнии с Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ обновлСния Π‘Π” Π΄ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΉ вСрсии Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° (ODS — On-Disk-Structure) Π½Π° Π»Π΅Ρ‚Ρƒ (inline update) Π±Π΅Π· создания ΠΈ восстановлСния ΠΈΠ· Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ. НапримСр, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° Π»Π΅Ρ‚Ρƒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π‘Π” Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Firebird 4.0 (ODS 13.0) Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Firebird 5.0 (ODS 13.1).
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ кэш скомпилированных SQL-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, обслуТиваСмый автоматичСски (ΡƒΡΡ‚Π°Ρ€Π΅Π²Π°ΡŽΡ‰ΠΈΠ΅ записи ΠΎΡ‡ΠΈΡ‰Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости). Π Π°Π·ΠΌΠ΅Ρ€ кэша задаётся Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ MaxStatementCacheSize Π² firebird.conf.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ интСрфСйс для профилирования SQL ΠΈ PSQL, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ врСмя выполнСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запроса, Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Ρ‚ΡŒ статистику ΠΎ числС запросов ΠΈ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.
  • Π’ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ MERGE Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° условного Π±Π»ΠΎΠΊΠ° «WHEN NOT MATCHED BY SOURCE», ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ³Π΄Π° исходная запись Π½Π΅ соотвСтствуСт Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ записи Π² Ρ†Π΅Π»Π΅Π²ΠΎΠΌ Π½Π°Π±ΠΎΡ€Π΅. MERGE INTO customers c USING new_customers nc ON (c.id = nc.id) WHEN MATCHED THEN UPDATE SET name = nc.name WHEN NOT MATCHED BY SOURCE THEN DELETE
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ возвращСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ RETURNING, Ссли Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ DML-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ нСсколько строк (Ρ€Π°Π½Π΅Π΅ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ситуациях Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ ошибка «multiple rows in singleton select»).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: UNICODE_CHAR для возвращСния unicode-символа, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ, ΠΈ UNICODE_VAL для возвращСния ΠΊΠΎΠ΄Π° для Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ символа. Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ EXTRACT, FIRST_DAY ΠΈ LAST_DAY Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ QUARTER для опрСдСлСния Π½ΠΎΠΌΠ΅Ρ€Π° ΠΊΠ²Π°Ρ€Ρ‚Π°Π»Π°.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ систСмный ΠΏΠ°ΠΊΠ΅Ρ‚ RDB$BLOB_UTIL с ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с BLOB-Π°ΠΌΠΈ для ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ PSQL.
  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сТатия записСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ примСняСт счётчик ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ для Π±ΠΎΠ»Π΅Π΅ эффСктивной ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ сТатия Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ VARCHAR с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ UTF-8.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ курсорами (scrollable) ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΌ сСтСвом ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π‘Π”.
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ копирования Π±Π»ΠΎΠ±ΠΎΠ².
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° синтаксиса опрСдСлСния строк, описанного Π² стандартС SQL. НапримСр, строки Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Ρ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ коммСнтариями ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ: select ‘ab’ /* comment */ ‘cd’ from RDB$DATABASE; select ‘ab’ ‘cd’ from RDB$DATABASE;

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru