mariuz / flamerobin

FlameRobin is a database administration tool for Firebird RDBMS. Our goal is to build a tool that is: lightweight (small footprint, fast execution) cross-platform (Linux, Windows, Mac OS X, FreeBSD) dependent only on other Open Source software
http://flamerobin.org
MIT License
211 stars 64 forks source link

Properties pane for an object gets stuck on Dependencies #378

Open Wolf-SO opened 1 month ago

Wolf-SO commented 1 month ago

I'm using FlameRobin 0.9.10 with fbclient.dll version 2.1.7.18553 to connect with a Firebird 1.0.3 server. After upgrading from FlameRobin 0.9.2, I didn't check all features, but all I checked worked until I reached the Dependencies.

When I click on Dependencies in the properties window, I get the error message show below and then (after clicking the OK button) the properties view for that object displays Please wait while the data is being loaded... (until closing and reopening this tab):

[Window Title]
Unhandled Error in FlameRobin

[Content]
*** IBPP::SQLException ***
Context: Statement::Prepare( select t1.*, f2.rdb$field_position from ( 
 select RDB$DEPENDED_ON_TYPE, RDB$DEPENDED_ON_NAME, RDB$FIELD_NAME 
  from RDB$DEPENDENCIES 
  where RDB$DEPENDENT_TYPE in (?,?) and RDB$DEPENDENT_NAME = ? 
  union  
 SELECT DISTINCT d.rdb$depended_on_type, d.rdb$depended_on_name, d.rdb$field_name 
 FROM rdb$relation_fields f 
 LEFT JOIN rdb$dependencies d ON d.rdb$dependent_name = f.rdb$field_source 
 WHERE d.rdb$dependent_type = 3 AND f.rdb$relation_name = ? 
 ) t1 
 left join RDB$RELATION_FIELDS f2 
     on f2.RDB$FIELD_NAME = t1.RDB$FIELD_NAME 
     and f2.RDB$RELATION_NAME = ? 
  order by 1, 2, 3 )
Message: isc_dsql_prepare failed

SQL Message : -104
can't format message 13:896 -- message file C:\Program Files\firebird.msg not found

Engine Code    : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -104
Token unknown - line 2, column 2
select

[OK]

Seemingly the SQL uses a sub select, this feature requires Firebird version 2+. This moves the lower bound of Firebird versions compatible with FlameRobin to 2.0. This is especially unfortunate because for the client library they state that

The Firebird API is backwardly compatible with the InterBase API.