Download Latest Version flamerobin-portable-26.7.1-x86.zip (19.8 MB)
Email in envelope

Get an email when there's a new version of FlameRobin

Home / v26.6.22
Name Modified Size InfoDownloads / Week
Parent folder
FlameRobin-26.6.22-x64.msi 2026-06-24 4.5 MB
flamerobin-portable-26.6.22-x64.zip 2026-06-24 20.7 MB
FlameRobin-26.6.22-x86.msi 2026-06-24 4.1 MB
flamerobin-portable-26.6.22-x86.zip 2026-06-24 19.8 MB
flamerobin-26.6.22.deb 2026-06-24 30.7 MB
flamerobin_26.6.22_amd64.snap 2026-06-24 24.7 MB
flamerobin-26.6.22.flatpak 2026-06-24 14.1 MB
flamerobin-macos-26.6.22.zip 2026-06-24 7.2 MB
README.md 2026-06-24 2.7 kB
v26.6.22 source code.tar.gz 2026-06-24 1.3 MB
v26.6.22 source code.zip 2026-06-24 1.8 MB
Totals: 11 Items   129.0 MB 1

FlameRobin Release Notes - Version 26.6.22

We are pleased to announce the release of FlameRobin version 26.6.22. This version contains a key fix for User-Defined Function (UDF) metadata parsing in databases with multi-byte character encodings.


Extensive Summary

In previous versions of FlameRobin, when querying user-defined function parameters or generating the DLL/DDL source representation of a UDF, string parameters (CSTRING, CHAR, and VARCHAR) in databases configured with multi-byte character sets (such as UTF8) had their lengths incorrectly reported.

This occurred because Firebird stores physical byte lengths in the RDB$FUNCTION_ARGUMENTS.RDB$FIELD_LENGTH column rather than logical character counts. For a CSTRING(10) parameter in a UTF8 database, Firebird stores 40 bytes. FlameRobin displayed this as CSTRING(40) in the tree viewer, properties pane, and generated SQL definition. Consequently, trying to recreate or modify the UDF would result in declaring the parameter as CSTRING(40), which Firebird would multiply again by 4 (to 160 bytes), cascading the error.

Version 26.6.22 resolves this issue by querying c.RDB$BYTES_PER_CHARACTER from the RDB$CHARACTER_SETS system table and dividing the raw byte length by this value for string-based parameter types.


Detailed Changelog

1. Engine & Metadata Fixes

  • Corrected String Parameter Lengths in UDFs / Functions:
  • Updated src/metadata/function.cpp to fetch c.RDB$BYTES_PER_CHARACTER by joining RDB$CHARACTER_SETS in Function::loadChildren() and UDF::loadProperties().
  • Automatically divide RDB$FIELD_LENGTH by RDB$BYTES_PER_CHARACTER for CHAR (14), VARCHAR (37), and CSTRING (40) parameter types when RDB$BYTES_PER_CHARACTER > 1.
  • Solved the issue where UDF DDL generation emitted incorrect lengths for string parameters when the database character set was UTF-8 (e.g. CSTRING(40) instead of CSTRING(10)).

2. Testing & Quality Assurance

  • New Regression Test:
  • Added src/metadata/UdfCstringLengthTest.cpp to validate parameter length calculation and character width division.
  • Registered the new test in CMakeLists.txt to run as part of the standard test suite.
  • Verified that all unit tests continue to build and pass under ctest.

3. Version Update

Source: README.md, updated 2026-06-24