IBExpert Changelog

What's new in IBExpert 2023.11.22

Nov 24, 2023
  • Mainly bug fixes.

New in IBExpert 2023.10.27 (Oct 30, 2023)

  • Code Editor, Code Completion:
  • Improved performance especially on databases with lot of objects. Suggesting possible joins based on existing relationships by foreign keys - call the Code Completion after JOIN keyword. There was a bug on some configurations in the previous version which caused IBExpert to freeze when the Code Completion is fires. Fixed in this version.
  • Database Inside:
  • Support for Firebird 4 databases.
  • Partial support for Firebird 5 implemented:
  • Support for all known syntax changes/additions in the PSQL parser:
  • SKIP LOCKED, WHEN NOT MATCHED BY SOURCE, parenthesized SELECTs etc.
  • However, there is NO support yet for parenthesized SELECTs in the Database Comparer.
  • Also the PSQL debugger doesn't allow to debug roitines with subroutines which reference variables in a main routine.
  • Support for new built-in functions in the Code Parameters hint.
  • Support for partial indices in the index editors and metadata extract.
  • Support for parallel workers in following IBEBlock functions:
  • ibec_BackupDatabase, ibec_RestoreDatabase, @Services.RepairDatabase.
  • There is a new option available - ParallelWorkers (or just Parallel) - which allows to specify number of parallel workers (e.g. ParallelWorkers=4)
  • Other minor bugfixes and small improvements

New in IBExpert 2023.9.13 (Sep 18, 2023)

  • Mainly bug fixes.

New in IBExpert 2022.11.28 Bugfix (Nov 28, 2022)

  • SQL Editor:
  • Execute with commit (Ctrl+Alt+F9) feature implemented.
  • This executes a query and performs a COMMIT immediately for queries that don't return a record set.
  • Autocommit feature for the current SQL Editor (Ctrl+Shift+M) implemented.
  • If ON non-select queries will be committed immediately. There is also a corresponding button on the toolbar and an item in the SQL Editor menu.
  • Convert SELECT / WITH into IBEBlock (Ctrl+Shift+B) feature.
  • Converts the current select/with query into IBEBlock.
  • There is also a corresponding item in the SQL Editor menu.
  • Metadata Search:
  • Web-style search implemented. Rules are:
  • By default AND condition is used: 'declare variable' will find all DDL's that contain both 'declare' and 'variable'
  • To use OR place '|' between words: 'declare | variable'
  • OR has lower priority than AND
  • To exclude words from a search use '-' before a word (without a space):
  • 'declare -variable -procedure'
  • To search for an exact match put a word or phrase inside quotes:
  • "declare variable"
  • Complex expressions with parentheses are not supported
  • 'Whole words' and 'Case sensitive' options are taken into account
  • Details can be referred to in our online documentation: Search in Metadata.
  • Support of version history for stored Firebird and IBExpert blocks
  • Visual Options:
  • Disable undocked toolbars option. This prevents toolbars from undocking.
  • IBEBlock:
  • ibec_StartTraceSession function improvements. See ibec_StartTraceSession and Identify unusually high database load: take two for detailed information.
  • Embed web technologies:
  • It is just replacement of embedded Internet Explorer that is used in IBE Direct, Blob Viewer and some other parts of IBExpert, with embedded Edge.
  • The lastest IBExpert includes a new feature to embed web technologies (HTML, CSS, and JavaScript). So, instead of using an external program to display PDF or JSON, we have implemented Microsoft edge WebView2 support. The WebView2 control uses Microsoft Edge as the rendering engine to display the web content in IBExpert.
  • However, some Windows versions do not include WebView2 Runtime.
  • If you encounter an error when starting IBExpert, please download and install the correct WebView2 Runtime from https://developer.microsoft.com/en-us/microsoft-edge/webview2/#download-section for your OS version. Following installation, IBExpert should work as intended.
  • If you do not wish to install this additional Runtime on your server, you can disable (for the time being) WebView2 support and revert to using SumatraPDF by deleting WebView.dll and WebView2Loader.dll from your IBExpert install folder.
  • Minor bugfixes and improvements

New in IBExpert 2022.06.10 (Jun 13, 2022)

  • Data Grid:
  • The possibility to edit UUID/OCTETS values directly in the grid in hexadecimal notation has been implemented.
  • For UUID values (CHAR(16) CHARACTER SET OCTETS) the following formats of input data are accepted (examples)
  • 3897C040-5DAE-4856-BDAF-F1BA2591AA13
  • 3897C0405DAE4856BDAFF1BA2591AA13
  • {3897C040-5DAE-4856-BDAF-F1BA2591AA13}
  • x'3897C0405DAE4856BDAFF1BA2591AA13'
  • For OCTETS values (CHAR(xx) CHARACTER SET OCTETS) the following formats of input data are accepted (examples):
  • 3897C0405DAE
  • x'4856BDAFF1BA2591'
  • Notation as x'<hexadecimal sequence>' is universal and may be used even if the UUID and OCTETS switches on the grid toolbar are off.
  • Same possibilities are available in the Form View.
  • 2. PSQL Debugger
  • The values of UUID/OCTETS variables are now shown in hexadecimal format.
  • Editing of OCTETS/UUID values is available AsOCTETS and AsUUID, see description above.
  • Support of conditions in automatic breakpoints. The IBExpert PSQL debugger supports automatic breakpoint in the form of a special comment: -- IBE_BREAKPOINT or /* IBE_BREAKPOINT */
  • If the debugger meets such a comment, the next executable line in a PSQL source will be set as a breakpoint automatically. Now it is possible to simply specify the conditions in such breakpoints: -- IBE_BREAKPOINT (var_a = 20) or (var_b > 0)
  • Input Parameters Form:
  • Editing of OCTETS/UUID values in hexadecimal format has been implemented, see above.
  • Event blocks:
  • The "After database connected" event block processes a new output parameter DBEExtraCaption which may be used to replace default SQL dialect information followed by database alias in the Database Explorer.
  • SQL Editor:
  • Added the F4 shortcut to toggle visibility of the Query Manager.
  • Code Editors, Find and Replace Text:
  • Added support of substitutions when using regular expressions.
  • Table and View Editors:
  • DDL page: included USAGE privileges on generators used in table triggers.
  • IBEBlock:
  • ibec_RecompileFunction implemented additionally to ibec_RecompileProcedure and ibec_RecompileTrigger.
  • Other minor bugfixes and small improvements

New in IBExpert 2022.03.08 (Mar 9, 2022)

  • Minor bugfixes and improvements

New in IBExpert 2022.03.01 (Mar 3, 2022)

  • Minor bugfixes and improvements

New in IBExpert 2021.11.14 (Nov 15, 2021)

  • Database Explorer:
  • Added the possibility to deactivate (comment) stored functions and packages from the context menu.
  • DB object editors, Dependencies trees:
  • Added the possibility to deactivate (comment) PSQL objects from the context menu.
  • After deactivation of dependant objects they will disappear from the dependencies tree, and IBExpert offers the option to store a list of deactivated objects in the Project View tree or copy it to clipboard. It is possible to customize this behaviour using the corresponding event block, see "Event blocks" section below.
  • Object editors, SQL Editor:
  • Error messages now provide hyperlinks to mentioned database objects.
  • Table data compare:
  • Support of alternative hash functions implemented.
  • Input parameters form:
  • Added the possibility to enter OCTETS values in hexadecimal format.
  • PSQL Debugger:
  • Support of "Trace Into" for the RETURN statement implemented.
  • Data grid, string value editor:
  • Open in Blob Editor button added.
  • Windows navigation bar:
  • Now supports database colour marks (Database Registration Info / Color Mark).
  • Event blocks:
  • Table/View editor :: On compose SELECT statement
  • This block fires before executing a SELECT from table/view and allows you to override the SELECT statement composed by IBExpert.
  • Data grid :: Before edit a string value
  • This block fires when the user clicks an edit button in a string cell and allows you to force IBExpert to open/edit the string value in the Blob editor.
  • Data grid :: After executing a query
  • This block fires after executing a query that returns a record set and allows you to apply the best fit to grid columns just after the query is executed.
  • The user can choose where and when "Apply best fit" should be performed and where not. See block example/template for details.
  • Dependencies :: Before deactivate database objects
  • This block fires when the user deactivates PSQL objects from the dependencies trees in the database object editors.
  • There are some options that can be customized via the block:
  • default action, deactivation lists autodelete interval, confirmation request.
  • IBEBlock:
  • ibec_CompareTables: support of alternative hash functions.
  • In case you want to use your own hash function instead of the Firebird HASH function just specify its name in the UseHashFunction option:
  • UseHashFunction=MY_OWN_HASH
  • Other minor bugfixes and small improvements:

New in IBExpert 2021.08.01 (Aug 2, 2021)

  • Minor bugfixes and improvements

New in IBExpert 2021.07.09 (Jul 14, 2021)

  • Minor bugfixes and improvements.

New in IBExpert 2021.07.08 (Jul 9, 2021)

  • Minor bugfixes and improvements

New in IBExpert 2021.06.17 (Jun 18, 2021)

  • Minor bugfixes and improvements

New in IBExpert 2021.02.16 (Feb 17, 2021)

  • Database Explorer:
  • Package nodes now contain child nodes with package routines (procedures and functions).
  • Dragging package routine nodes into code editors has been implemented, with a choice of autogenerated statements.
  • SQL Assistant for packages has been implemented.
  • Table Editor:
  • Log tab: added the possibility to disable automatic refresh of log data:
  • To disable automatic refresh put the following function call into "After IBExpert starts" event block: ibec_SetGlobalVar('IBE$TDL_DISABLE_AUTO_REFRESH', TRUE);
  • To disable the automatic refresh for a specified database where 123 is a unique identifier of the registered database: ibec_SetGlobalVar('IBE$TDL_DISABLE_AUTO_REFRESH.123', TRUE);
  • Package Editor:
  • Commenting and uncommenting package procedures and functions implemented.
  • [Ctrl] + [C] shortcut in the list of package routines displays "Copy to clipboard" dialog with a choice of autogenerated statements.
  • Data Form View:
  • Support of mouse wheel implemented.
  • Stored procedure/Function Editor:
  • Emulation of procedure/function plan for Firebird 3, 4 databases.
  • Procedure/Function/Trigger Editors:
  • Fixed the problem with missing body for external procedures/functions/triggers which have a non-empty source.
  • Parameters grid, Lazy mode: for domain-based parameters it is now possible to copy the domain comment to parameter comment. To enable this put following the function call into the "After IBExpert starts" event block: ibec_SetGlobalVar('IBE$PRMFM_COPY_DOMAIN_COMMENT', TRUE);
  • To enable for a specified database only where 123 is an unique identifier of the registered database: ibec_SetGlobalVar('IBE$PRMFM_COPY_DOMAIN_COMMENT.123', TRUE);
  • Export data into script:
  • The possibility to put statements into Firebird blocks (EXECUTE BLOCK) has been implemented.
  • Extract metadata:
  • The possibility to put DML statements into Firebird blocks (EXECUTE BLOCK) has been implemented.
  • "Use REINSERT" option is ignored when the "Put statements in blocks" option is selected.
  • Table Data Comparer:
  • The possibility to compare system (RDB$*) tables has been implemented.
  • "Use UNIQUE constraint in case of missing PRIMARY KEY constraint" option has been implemented.
  • For system (RDB$*) tables UNIQUE constraints will be used automatically, for user tables this option should be enabled manually if it is really necessary:
  • If two or more UNIQUE constraints are defined for a table, a random constraint will be used to identify records.
  • Online synchronization ignores DML statements generated for system tables.
  • IBEBlock:
  • ibec_CompareTables: UseUniques option has been implemented to allow the comparison of tables which have a UNIQUE constraint instead of a PRIMARY KEY.
  • ibec_ExtractMetadata: UseBlocks and CommitBlocks options have been implemented.
  • ibec_CastEx function implemented.
  • In comparison with the ibec_Cast function, ibec_CastEx doesn't raise an exception if casting is impossible, instead it returns a specified DefaultValue.
  • Other minor bugfixes and improvements

New in IBExpert 2021.01.07 (Jan 8, 2021)

  • Bugfixes, for example the grid view in Trace and Audit.

New in IBExpert 2020.12.06 (Dec 7, 2020)

  • Stored procedures now also display a plan in Firebird 3.0
  • Minor bug fixes and small improvements

New in IBExpert 2020.09.21 (Sep 21, 2020)

  • New IBEScript.dll interface:
  • There are new interface functions implemented to allow a user application to communicate with IBEBlocks:
  • Set IBEBlock parameters from the user application.
  • Get IBEBlock output values.
  • Perform user callback in any place of IBEBlock code passing data from within a block and returning user data back to a block,
  • New interface functions:
  • ibesScriptInit - creates and initializes a scripter instance.
  • Syntax
  • function ibesScriptInit : THandle;
  • This function has no arguments and returns the handle of a script object.
  • ibesScriptFinalize - destroys a script object.
  • Syntax
  • function ibesScriptFinalize(AScript : THandle) : integer;
  • AScript is a valid handle to a scripter object created with the ibesScriptInit function. This function always returns 0 (zero).
  • ibesScriptSetConnection - sets an external connection for a script object.
  • Syntax
  • function ibesScriptSetConnection(AScript : THandle; AConnection : THandle) : integer;
  • AScript is a valid handle to a scripter object created with the ibesScriptInit function.
  • AConnection is a valid handle to a connection object created with the ibesConnectionInit function.
  • You don't need to set a connection if your script establishes it by itself or doesn't need any connection at all.
  • ibesScriptSetCallback - sets a specified callback function for a script object.
  • Syntax
  • function ibesScriptSetCallback(AScript : THandle; AFunctionID : integer; AFunc : pointer) : integer;
  • AScript is a valid handle to a scripter object created with the ibesScriptInit function.
  • AFunctionID is an identifier of a callback function, see IBEScriptIntf.pas and the demo application (found in the program sub-directory IBExpert/IBEScriptDll/DemoApp) for a list of supported callback functions and their identifiers.
  • AFunc is a pointer to a callback function.
  • This function returns 0 (zero) if it succeeds, otherwise it returns a non-zero value.
  • ibesScriptExecuteText - executes a script from a specified string.
  • Syntax
  • function ibesScriptExecuteText(AScript : THandle; AScriptText : PAnsiChar; AOptions : PAnsiChar) : integer;
  • AScript is a valid handle to a scripter object created with the ibesScriptInit function.
  • AScriptText is a string with script source.
  • AOptions argument is reserved for future use.
  • ibesScriptExecuteFile - executes a script from a specified file.
  • Syntax
  • function ibesScriptExecuteFile(AScript : THandle; AFileName : PAnsiChar; AOptions : PAnsiChar) : integer;
  • AScript is a valid handle to a scripter object created with the ibesScriptInit function.
  • AFileName is a name of an existing script file.
  • AOptions argument is reserved for future use.
  • ibesConnectionInit connects to a database with specified connection parameters.
  • Syntax
  • function ibesConnectionInit(AParams : PAnsiChar; AConnectErrorCallbacFunc : TConnectErrorCallbackFunc) : THandle;
  • AParams is a string with connection params. Syntax of the params string is the same as to the Connect function: IBEScript.dll documentation.
  • AConnectErrorCallbacFunc is a pointer to a callback function which will be fired in case of a connection error.
  • ibesConnectionInit returns a connection object handle (if successful) which should be used as an argument with the ibesScriptSetConnection function.
  • ibesConnectionFinalize - performs a disconnect for the specified connection object and destroys the specified connection object.
  • Syntax
  • function ibesConnectionFinalize(AConnection : THandle) : integer;
  • The return value is 0 (zero).
  • The following new callback functions have been implemented:
  • TScriptIBEBlockProgressFunc = function(ABlockName, AProgressMessage : PAnsiChar) : integer; stdcall;
  • Similar to the old TBlockProgressFunc but also provides the block name for named blocks.
  • This function is called by the ibec_ProgressMessage function.
  • TScriptIBEBlockSuspendFunc = function(ABlockName, ASuspendData : PAnsiChar) : integer; stdcall;
  • This callback function is fired when SUSPEND is executed within a block. ASuspendData contains values of all output parameters in JSON format. See the demo app for an example.
  • TScriptIBEBlockGetInputParamsFunc = function(ABlockName : PAnsiChar) : PAnsiChar; stdcall;
  • This callback function is fired before the execution of the block and allows you to set values of block input parameters.
  • The user application should return a string which contains JSON data as in the example below:
  • "input": {
  • "byname": true,
  • "items": [
  • "name": "FirstParam",
  • "value": 321
  • "name": "SecondArrayParam",
  • "value": [
  • 123.321,
  • 123.321
  • "name": "ThirdParam",
  • "value": true
  • TScriptIBEBlockUserCallbackFunc = function(ABlockName, AUserData : PAnsiChar) : PAnsiChar; stdcall;
  • This function is intended for communication between IBEBlock and the user application. It is fired when the @IBEScript.DoUserCallback function is executed.
  • Call it to pass data from a block and get a response if necessary:
  • sResponse = @IBEScript.DoUserCallback('Should I do that?');
  • if (sResponse = 'YES') then
  • ...
  • else
  • ...;
  • All functions described above provide ABlockName argument which contains the name of the block if execution of that block was initiated as below:
  • EXECUTE IBEBLOCK MYBLOCK ...
  • If the block name is missing ABlockName parameter will contain an empty string.

New in IBExpert 2020.09.13 (Sep 15, 2020)

  • New features include:
  • Stored Procedure/Function Editor: Recompilation of dependent functions implemented (FB 3,4).
  • Grant Manager: Improved performance (updating and filtering) while working with databases which contain thousands of DB objects and hundred thousands of grant records.
  • Script Executive: OUTPUT statement: MemoAsText option implemented.
  • Extract Metadata: "Explicit COMMIT after each DDL statement" option implemented.
  • IBEScript.dll: New set of interface functions implemented to handle work with the new callback functions.
  • IBEBlock: New functions and features.

New in IBExpert 2020.05.10 (May 11, 2020)

  • Minor bug fixes and small improvements

New in IBExpert 2020.01.06 (Jan 7, 2020)

  • Test Data Generator:
  • Initial support of DECFLOAT / NUMERIC(38) fields (Firebird 4).
  • Data Grid:
  • Support of DECFLOAT and NUMERIC(38) fields (Firebird 4): sorting, filtering and aggregate functions implemented.
  • SQL Editor:
  • Support of UPDATE OR INSERT into another database implemented.
  • Syntax is similar to INSERT into another database:
  • UPDATE OR INSERT into [another_database_alias].<table_name>
  • <select>
  • Table/View Editor:
  • Columns grid: Ctrl+C / Ctrl+Ins now copies name of focused field into the clipboard.
  • Blob Viewer:
  • Support of JSON data format implemented.
  • If blob data is modified using "As JSON" page IBExpert will try to remove all insignificant whitespaces before post. There is "Remove whitespaces on post" checkbox to control this behaviour. If there is a syntax error in JSON data - it will be posted "as is", without removing whitespaces.
  • JSON syntax highlighting is available also on "As text" page.
  • IBEBlock:
  • ibec_BackupDatabase, ibec_RestoreDatabase, ibec_CreateConnection functions now support WireCompression option (if both client and server support them).
  • To enable compression it is necessary to specify 'WireCompression=TRUE' (or just 'WireCompression') in the options string.
  • Minor bug fixes and small improvements

New in IBExpert 2019.10.9.1 (Oct 11, 2019)

  • Minor bug fixes and small improvements
  • PSQL Debugger: Support of Trace Into for package routines and stored functions.
  • Support of DECFLOAT and NUMERIC(38, x) variables and parameters (Firebird 4).
  • SQL Editor:
  • Support of DECFLOAT and NUMERIC(38,x) parameters (Firebird 4).
  • Trace and Audit:
  • Analysis of large trace logs is now possible. The main idea is to retrieve only necessary items from a trace log file using the Grid View mode with applied filter criteria.
  • It is also possible to save filtered data as a trace log file.
  • Database Designer:
  • Support of identity columns (GENERATE BY DEFAULT AS IDENTITY and GENERATE ALWAYS BY IDENTITY).
  • Trigger Editor:
  • Fixed bug with missing SQL SECURITY clause in lazy mode (Firebird 4).
  • Grant Manager:
  • Fixed bug with missing USAGE privileges while working with a Firebird 4 database.

New in IBExpert 2019.7.24.1 (Jul 26, 2019)

  • Package Editor:
  • Formatting of package header/body sources implemented.
  • Table Data Comparer:
  • It is now possible to limit the synchronization queue size.
  • It is possible to limit the queue by the number of statements in it or by the memory occupied by the queue. A positive value means limitation by number of statements. A negative value means limitation by memory size (in megabytes). Default value is 0 - no limits.
  • Detailed statistics for comparison and synchronization actions have been implemented.
  • Environment Options / PSQL Debugger
  • Toggle to the Message tab on error/warning/message while debugging option implemented.
  • By default the PSQL Debugger activates the Message tab on every error/warning/message which occurs while debugging. If you don't like the default behaviour turn this option off.
  • BLOB Viewer:
  • Fixed the problem with the display of icon pictures (ico format).
  • Script Executive:
  • Fixed the problem loading BLOB values from BLOB-files when a blob data offset exceeds 2 GB.
  • IBEBlock:
  • ibec_CompareTables: the QueueLimit option has been implemented.
  • A positive value means limitation by number of statements. A negative value means limitation by memory size (in megabytes). Default value is 0 - no limits.
  • Examples:
  • QueueLimit=100 - number of statements in the queue must not exceed 100.
  • QueueLimit=-5 - the queue must not occupy more than 5 megabytes.
  • Minor bug fixes and small improvements

New in IBExpert 2019.04.07 (Apr 9, 2019)

  • Code editors:
  • Support of Firebird 4 functions in parameters tip
  • PSQL object editors:
  • Support of Firebird 4 syntax extensions
  • Database backup:
  • Support of backup to local machine - Backup to client side option. If this option is ON the backup file will be created on the client side instead of the server side
  • Database restore:
  • Support of restore from a local backup to a remote server - Restore from client side option. If this option is ON the local backup file will be used while restoring a database
  • PSQL debugger:
  • Support of management statements (Firebird 4)
  • Database explorer:
  • For inactive indices IBExpert uses the same color as for inactive triggers (customizable in Options | Environment Options | DB Explorer)
  • Script Executive:
  • Support of case-sensitive user and role names (FB 3, FB 4) in CREATE DATABASE and CONNECT statements.
  • Case-sensitive names should be quoted with double quotes:
  • CONNECT ..USER "SYSdba" ROLE "Admin_Role" ...;
  • Export data into a script:
  • Support of DECFLOAT values (Firebird 4)
  • Test Data Generator:
  • Support of TIME/TIMESTAMP WITH TIME ZONE columns (Firebird 4)
  • Grant Manager:
  • Support of system privileges (Firebird 4)
  • IBEBlock:
  • ibec_BackupDatabase, BackupToClient option implemented.
  • If specified, the backup file will be created on the client side instead of the server side.
  • ibec_RestoreDatabase, RestoreFromClient option implemented.
  • If specified, the local backup file will be used while restoring a database
  • Other minor bugfixes and small improvements

New in IBExpert 2018.12.15 (Dec 17, 2018)

  • Initial support of time zones (Firebird 4)
  • Support of alternatives for embedding quotes in string literals
  • Support of BINARY/VARBINARY datatypes (Firebird 4)
  • Code Insight - Field descriptions are displayed if they exist.
  • SQL Editor - Now it is possible to start the SQL Editor without an active connection to execute IBEBlocks and to search for queries.
  • Minor bugfixes and small improvements.

New in IBExpert 2018.11.15 (Nov 22, 2018)

  • This version includes important bug fixes for:
  • IBExpert Day Edition: The IBExpert Day Edition is now 24 hours regardless of the date anywhere in the world.
  • Database Compare
  • Data Import

New in IBExpert 2018.11.14 (Nov 15, 2018)

  • This version includes important bug fixes for:
  • IBExpert Day Edition: The IBExpert Day Edition is now 24 hours regardless of the date anywhere in the world.
  • Database Compare
  • Data Import

New in IBExpert 2018.11.13 (Nov 13, 2018)

  • Bug fixes

New in IBExpert 2018.10.28 (Oct 29, 2018)

  • Database Inside:
  • The issue with the incorrect extracting of generator values has been fixed.
  • PSQL Parser, Code Editors:
  • Support for LOCALTIME and LOCALTIMESTAMP context variables has been implemented (Firebird 3.0.4).
  • User Manager:
  • Support for cumulative roles has been implemented (Firebird 4).
  • Support for default roles has been implemented (Firebird 4).
  • Other minor bug fixes and improvements

New in IBExpert 2018.10.18 (Oct 19, 2018)

  • Database Inside:
  • The issue with the incorrect extracting of generator values has been fixed.
  • PSQL Parser, Code Editors:
  • Support for LOCALTIME and LOCALTIMESTAMP context variables has been implemented (Firebird 3.0.4).
  • User Manager:
  • Support for cumulative roles has been implemented (Firebird 4).
  • Support for default roles has been implemented (Firebird 4).
  • Other minor bug fixes and improvements

New in IBExpert 2018.10.02 (Oct 4, 2018)

  • PSQL Debugger:
  • Debugging of FOR SELECT ... AS CURSOR statements implemented.
  • Table data comparer:
  • Synchronizing of internal generators for IDENTITY columns (FB 3, 4) implemented.
  • Extract metadata:
  • Use RECREATE for tables option implemented.
  • If this option is ON IBExpert will use the RECREATE TABLE statement instead of CREATE TABLE.
  • Database Restore:
  • Buffers option has been added to set the default database cache size (in number of database pages) for the database being restored.
  • SQL Editor:
  • Support of the SQL_NULL datatype of query parameters implemented (FB 2.5 and above).
  • It is not possible to set the value of such a parameter, only to change its NULL flag (NULL or NOT NULL).
  • More about the SQL_NULL datatype: https://firebirdsql.org/refdocs/langrefupd25-sqlnull.html
  • DB Explorer:
  • Events log page implemented which contains the log of executed event blocks within the IBExpert session.
  • Double click a log entry to edit the existing event block.
  • Use the context menu to create a new event block or edit an existing one.
  • Event blocks:
  • Process general template event block implemented.
  • This event block is an extension for Options/General templates and is intended for generating new object names, new PSQL object templates etc. For compatibility IBExpert first processes the specified "general template" and then passes it to the event block (if such a block is defined), where you can modify the result or compose it from scratch.
  • See the block template for more details.
  • IBEBlock:
  • ibec_http_xxx functions now support the HTTPS protocol.
  • ibec_ExtractMetadata: UseRecreate option implemented. If this option is specified, the RECREATE TABLE statement will be used instead of CREATE TABLE.
  • Other minor bug fixes and improvements

New in IBExpert 2018.10.01 (Oct 1, 2018)

  • PSQL Debugger:
  • Debugging of FOR SELECT ... AS CURSOR statements implemented.
  • Table data comparer:
  • Synchronizing of internal generators for IDENTITY columns (FB 3, 4) implemenyted.
  • Extract metadata:
  • "Use RECREATE for tables" option implemented.
  • If this option is ON IBExpert will use RECREATE TABLE statement instead of CREATE TABLE.
  • Database Restore:
  • "Buffers" option added to set the default database cache size (in number of database pages) for the database being restored.
  • SQL Editor:
  • Support of SQL_NULL datatype of query parameters implemented (FB 2.5 and above).
  • It is not possible to set the value of such parameter, only change its NULL flag (NULL or NOT NULL). More about SQL_NULL datatype: https://firebirdsql.org/refdocs/langrefupd25-sqlnull.html
  • DB Explorer:
  • "Events log" page implemented which contains the log of executed event blocks within the IBExpert session.
  • Double click a log entry to edit existing event block. Use context menu to create a new event block or edit an existing one.
  • Event blocks:
  • "Process general template" event block implemented.
  • This event block is an extension for Options | General templates and is intended for generating new object names, new PSQL object templates etc. For compatibility IBExpert first processes specified "general template" and then passes it to the event block (if such a block is defined), where you can modify the result or compose it from scratch. See block template for more details.
  • IBEBlock:
  • ibec_http_xxx functions now support the HTTPS protocol.
  • ibec_ExtractMetadata, UseRecreate option implemented.
  • If this option is specified RECREATE TABLE statement will be used instead of CREATE TABLE.
  • Other minor bug fixes and improvements:

New in IBExpert 2018.07.19 (Aug 1, 2018)

  • Query datasets:
  • To reduce number of possible out of memory errors we have redesigned the internal mechanism of storing records fetched from the server If the records buffer is too much to fit in the RAM it will be flushed into a temporary file and the dataset will continue to work with that file instead of RAM In that case the records fetched label above the data grid will change its color from Windows text (usually black) to blue Also it will display the temporary file size, ie Records fetched: 1000000 :: 8366 M
  • PSQL debugger:
  • Possibility to debug procedures/triggers/functions that contain subroutines has been implemented To debug such PSQL objects IBExpert will create a temporary debug package with subroutines declared in PSQL object source Normally that package will be deleted when the debugger window is closed
  • Database Backup:
  • Backup IBEBlock page implemented It contains an autogenerated IBEBlock for the database backup
  • Database Restore:
  • Restore IBEBlock page implemented It contains an autogenerated IBEBlock for the database restore
  • Data grid:
  • OCTETS option (button) implemented If this button is down IBExpert displays CHAR/VARCHAR CHARACTER SET OCTETS strings in a hexadecimal representation If there are no octets fields in a record set the OCTETS button is hidden
  • Metadata Extract:
  • Bugfix: database event triggers were extracted as inactive if Delayed activation of database events and DDL triggers option was deactivated
  • Input parameters form:
  • Compact view style implemented
  • Export data:
  • Bugfix: some symbols of page footer/header were not escaped (ie some symbols need to be replaced with combination of other symbols) when exporting data into XLSX file
  • Bugfix: Open file after export option didn't work with XLSX files
  • Table Data Comparer:
  • Ignore syncronization errors option implemented If this option is ON all INSERT/UPDATE/DELETE errors during online synchronization are ignored allowing an attempt to execute all statements in the synchronization queue
  • IBEBlock:
  • ibec_CompareTables: IgnoreSyncErrors option added
  • ibec_BackupDatabase, ibec_RestoreDatabase:
  • Support of SQL role implemented To use an SQL role specify it in the option string: Role=SOMEROLE
  • Other minor bug fixes and improvements

New in IBExpert 2018.06.03 (Jun 6, 2018)

  • New features include:
  • Query datasets: Redesign of the internal mechanism of storing records to reduce number of possible out of memory errors.
  • PSQL debugger: It is now possible to debug procedures/triggers/functions that contain subroutines.
  • Database Backup and Database Restore: Backup IBEBlock and Restore IBEBlock pages implemented.
  • Data grid: OCTETS option (button) implemented.
  • Table Data Comparer: Ignore syncronization errors option implemented.
  • IBEBlock: New options: ibec_CompareTables, ibec_BackupDatabase, ibec_RestoreDatabase.

New in IBExpert 2018.02.25 (Apr 4, 2018)

  • Import data:
  • Import from *.xlsx files (Microsoft Excel) implemented.
  • Export data:
  • Export into *.xlsx files (Microsoft Excel) implemented.
  • Database comparer:
  • "Alter views" option implemented (for Firebird 2.5 and above)
  • If this option is ON, the Database Comparer will alter modified views instead of dropping and creating them again. The only advantage with this way is the possibility to alter a modified view even if somebody is still using it.
  • Extract metadata:
  • "Delayed activation of database events and DDL triggers" option implemented.
  • If this option is ON, DB event and DDL triggers will be first created as inactive, and activated at the end of the result script.
  • Packages editor:
  • Debugging of package procedures/functions implemented.
  • To debug package routines IBExpert will create a temporary debug package with a modified source. Normally that package will be deleted when the debugger window is closed.
  • Exceptions editor:
  • Converting of exception message to UTF8 implemented to avoid the "malformed string" error.
  • Code formatting:
  • Support of exponential representation of numbers, i.e. 1.24E-5
  • Support of comparison operators: ~= , ^= , !> , ~> , ^> , !< , ~< , ^<
  • IBEBlock:
  • ibec_ImportData function now supports import from XLSX files (Microsoft Excel).
  • You can specify the sheet number (zero based) which you want to process, using the Sheet option for this, i.e.: Sheet=2. If the Sheet option is not specified the first sheet will be processed.
  • ibec_ExportDataset and SELECT .. AS EXPORT INTO
  • Now exports data into XLSX format if XLS or XLSX export type is specified. There is no difference between XLS and XLSX export types.
  • ibec_CompareMetadata: AlterViews option implemented.
  • ibec_ExtractMetadata: DelayedTriggerActivation option implemented.
  • Minor bug fixes and improvements

New in IBExpert 2013.9.24.1 (Sep 27, 2013)

  • SQL Editor:
  • Added the possibility to delete all queries of the current query set simultaneously.
  • IBEBlock:
  • ibec_FormatDateTime function implemented.
  • Syntax:
  • function ibec_FormatDateTime(Format: string; DateTime : variant): string;
  • ibec_FormatDateTime formats the timestamp, date or time value given by DateTime using the format given by Format.
  • Implemented support of OPEN/FETCH/CLOSE operators for SQL cursors.
  • Code Formatter:
  • Added formatting rules for JOIN ... ON and MERGE ... ON expressions.
  • Export as INSERT:
  • Export blob values as hex strings implemented. If this option is ON, blob values will be written directly into VALUES clause of INSERT statements as hex strings like the following:
  • ... VALUES (..., X'0A66756E6374696F6E2024242873297B72', ...)
  • This representation is supported in Firebird 2.5. Unfortunately the length of DML/DDL statements in Firebird/InterBase® is limited to 64 kilobytes, so it is very easy to get statements with length > 64 Kb using this method, and they cannot be executed by the server.
  • Database Inside:
  • In this version we introduce a new feature - Database Inside. It is available in the Tools menu in the full version of IBExpert.
  • Database Inside reads the database file directly, without a server. This allows extraction of data/metadata from corrupted databases even if it is impossible to do this using a normal connection to the database. The result depends on how heavily the database is corrupted.
  • Database Inside processes files in read-only mode so files remain unchanged.
  • The All pages page displays a list of database pages in natural order. Page types to be displayed here are customizable on the Options page. Please note that for large databases it is better to disable the display of the index tree, index root and blob data pages in order to optimize memory usage.
  • Suspicious pages (pages marked as allocated with unknown page type or/and wrong checksum) appear highlighted in red.
  • Double click on page or press Enter to open the data page in a separate window.
  • The Statistics page contains some useful statistics related to distribution of pages within the database file. Suspicious data (number of allocated pages with undefined/unknown page type and/or wrong checksum) appears highlighted in red.
  • The Header page contains the database header data.
  • The PIPs (pointer inventory pages) page contains list of all PIPs in the database file and information about the allocation of pages.
  • The TIPs (transaction inventory pages) page contains list of all TIPs in the database.
  • The Pointer pages page contains list of all pointer pages for each relation in the database.
  • On the Options page you can select the types of pages to be listed in "All pages" page.
  • The Extract Data/Metadata page allows you to extract data and/or metadata directly from the database file. Metadata/data can be extracted into a set of SQL script files or into a new database (a working server instance is necessary in this case).
  • You can select/unselect all data tables simultaneously from the context menu of the data tables list.
  • Current limitations:
  • only single-file databases are supported at the moment.
  • InterBase® databases with object names’ length > 31 chars are not supported yet.
  • the Database Inside feature has been tested with Firebird 1.5-2.5 databases created with Firebird 32-bit for Windows.
  • Minor bug fixes and small improvements

New in IBExpert 2013.02.15 (Sep 27, 2013)

  • Copy database object / Copy Table:
  • Fixed problem with the incorrect copying of COMPUTED BY fields.
  • Database Statistics:
  • Added the possibility to get statistics for specified tables only.
  • To get statistics for certain tables just drag them from the DB Explorer into the Database Statistics window.
  • An alternative way is to use the DB Explorer context menu, Get statistics for selected tables.
  • Code Editors:
  • It’s now possible to format selected text using the Editor’s context menu. Note that IBExpert supports the formatting of PSQL blocks and separate DML statements only.
  • SQL Editor:
  • Snapshot RO (snapshot read-only) and Read Committed RO (read committed read-only) transaction isolation levels added for quick selection.
  • Database Login form:
  • Added the Prevent database/transaction triggers from firing checkbox.
  • This is equal to the isc_dpb_no_db_triggers option in additional connection parameters.
  • Backup/Restore Database:
  • Added the Prevent database/transaction triggers from firing option.
  • IBEBlock:
  • ibec_BackupDatabase/ibec_RestoreDatabase: The NoDBTriggers option has been implemented. This prevents database/transaction triggers from firing during a backup/restore.
  • Improved handling of Int64 (bigint) values, and some critical errors fixed.
  • Minor bug fixes and improvements.

New in IBExpert 2012.12.16.1 (Dec 21, 2012)

  • Fixed the problem causing a slowdown while scrolling/selecting text in code editors and scrolling data in the data grids.
  • Code Formatter:
  • Added support of extended syntax of the [FOR] EXECUTE STATEMENT statement (ON EXTERNAL ...).
  • Autogrant feature:
  • For SELECT statements with a WITH LOCK clause IBExpert now grants an UPDATE privilege on the affected table.
  • Dependencies Frame:
  • Now it is possible to recompile all/selected procedures/triggers listed in the dependencies tree directly from its context menu.
  • Minor bug fixes and improvements.

New in IBExpert 2012.11.15 (Dec 21, 2012)

  • SQL Assistant:
  • The Description page has been added to display and edit the database description which is stored in RDB$DATABASE.RDB$DESCRIPTION.
  • HTML Documentation:
  • The database description will be included into the documentation if the Include descriptions... option is enabled.
  • Code Formatter:
  • Fixed the problem with incorrect formatting of the WITH clause within INSERT and MERGE statements.
  • Database Designer:
  • [Ctrl] + DblClick on a table or view will open the Table/View Editor for the corresponding table/view in the active database.
  • After dropping tables dragged from the Database Explorer, possible references (foreign keys) will be analyzed and added into the database diagram after confirmation.
  • Index Editor, Dependencies Viewer, Table Editor / Indices Page
  • Added support of index dependencies.
  • Script Executive:
  • Added support for Before/After metadata change events. Execution of DDL statements will fire before and after metadata event blocks if they are assigned and the Use current connection option is ON.
  • Options page: Fire event blocks option added, which affects only the current instance of the Script Executive.
  • Options / Environment Options / SQL Script:
  • Added the Fire event blocks option.
  • Import Data:
  • Implemented the missing functionality for import data from text files with fixed column widths.
  • Database Restore:
  • Now IBExpert analyzes and retrieves error messages from the restore log even if the Verbose option is off. If errors are detected they will be placed into the end of the log and the user will be warned about possible problems.
  • Login Dialog:
  • Added the Show password checkbox.
  • Other minor bug fixes and small improvements.

New in IBExpert 2012.09.02 (Dec 21, 2012)

  • Database Explorer:
  • Highlighting of the database folder containing the active database has been implemented. The highlighting color is customizable in Options / Environment options / DB Explorer (Database folder containing active DB).
  • C/Pascal/Basic/JS scripts:
  • Class TdxPageControl not found error fixed.
  • Copy Object, Copy Table:
  • Added additional options which allow data to be copied into an existing table and the alteration of generator values.
  • A few other minor bug fixes and improvements.

New in IBExpert 2012.08.19 (Dec 21, 2012)

  • Trace and Audit Service:
  • Support implemented for the log_sweep option (Firebird 2.5.2).
  • Source/Details window implemented. In Grid mode this allows you to view the source and details of each trace record.
  • Code Formatter:
  • CRLF after UPDATE and Indent before table name options added for the UPDATE statement.
  • Event Blocks:
  • In this version we introduce the Event Blocks feature which allows you to process certain events within IBExpert.
  • The following events are currently available for processing:
  • After IBExpert starts event
  • Before IBExpert stops event
  • Before connect to database event
  • After database connected event
  • Before disconnect from database event
  • After database disconnected event
  • Before metadata change event
  • After metadata changed event
  • Event Blocks are stored in the IBExpert User Database and are available as ordinary IBEBlocks on the Blocks page in the DB Explorer.
  • There are two ways to create an Event Block:
  • Create an ordinary IBEBlock and associate it with the event using the Event page in the Block Editor.
  • Use Create/Edit Event Block in the context menu of the Blocks tree. IBExpert will associate a new block automatically with the selected event.
  • There is a template/example of an Event Block available on the Event page in the Block editor. It lists the actual block input parameters and can also contain some code which illustrates possible actions you wish to perform when processing events.
  • Event blocks start to work straight after you save them - take this into account.
  • The Debug when fires option allows you to start the Block Debugger when the associated event fires. This option takes effect immediately after you turn it on but is only effective during the current session of IBExpert.
  • If you need to process specific events within IBExpert let us know about what you want to process and what results you expect.
  • Default blocks and language files:
  • In this version we have updated all default blocks and most of the language files.
  • Minor bug fixes and small improvements.

New in IBExpert 2012.05.19 (Dec 21, 2012)

  • Bugfix release:
  • Several small bugs are removed

New in IBExpert 2012.05.10 (Dec 21, 2012)

  • Code Formatter:
  • Implemented formatting of IN AUTONOMOUS TRANSACTION statement.
  • Import Data:
  • Trim string values if they are too long option added (General Options tab). If this option is enabled, IBExpert will silently truncate strings if they exceed the target field length.
  • Code Editors / Code Insight / Code Parameters Hint:
  • For stored procedures the parameters’ hint now contains a description of the current input parameter. If there is no description specified for the current parameter – a description of the procedure itself will be displayed, if it exists.
  • For user-defined functions the parameters’ hint displays a UDF description, if it exists.
  • For the VALUES part of INSERT statements the parameters' hint displays a description of the current field or table description.
  • The following options are available under Options / Editor Options / Code Insight allowing you to customize the behavior of the parameters tip:
  • Show current parameter/field description.
  • Show parent object description if there is no description for current parameter/field.
  • Maximum number of description lines to show.
  • Code Editors:
  • Quick Comment feature implemented. Using the [Ctrl] + [/] (Ctrl + Slash) shortcut you can quickly comment/uncomment the current line of code or selected block using the single line comment style (-- at the beginning of the line).
  • Search Metadata:
  • Fixed the problem with searching non-ASCII text when using UTF8 connection charset.
  • IBEBlock:
  • ibec_ImportData: Support of TrimStrings option added.
  • ibec_Decode function implemented. The ibec_Decode function has the functionality of an IF...THEN...ELSE statement.
  • A lot of minor bug fixes and small improvements.