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
216 stars 66 forks source link

Problems after creating derived collation and using it as default collation #260

Closed ron90 closed 2 years ago

ron90 commented 2 years ago

Platform

Flamerobin: Version 0.9.3 - e6015349 (64 bit) OS: Windows 10 - (64 bit) FireBird: Version 4.0.1.2692 (64 bit) - This problem is also with FireBird 3.0.9

Description

When a new (derived) collation is created from existing collation and it is set as a default collation for a character set then FlameRobin has problems.

Steps to reproduce

1) Create a database with default character set as ISO8859_1 1

2) Creating a case-insensitive collation based on an already existing collation in the database _CREATE COLLATION EN_US_CI_AI FOR ISO8859_1 FROM ENUS NO PAD CASE INSENSITIVE ACCENT INSENSITIVE;

3) Set created collation as default for ISO8859_1 _ALTER CHARACTER SET ISO8859_1 SET DEFAULT COLLATION EN_US_CIAI;

4) Create a table normally CREATE TABLE Contacts ( ContactPK INT not null, ContactName VARCHAR(20) not null );

Problems

Column Data Types are not displayed in Tree View, Properties page & DDL. Instead of column data type, RDB$1 / RDB$2 is displayed.

2

3

4

5

Select query and Browse Data does not work on System Tables. Flamerobin hangs/crashes after selecting Yes or No on the error message box.

6 7

8

Workaround Solution

While connecting to database if UTF8 is selected in character set then above problems are not found.

9

arvanus commented 2 years ago

I believe this is a Firebird bug, as IBExpert have a strange behavior too Posted a thread at Firebird-support https://groups.google.com/g/firebird-support/c/0r4Platf5fI

arvanus commented 2 years ago

@ron90 Looks like to me, that the option NO PAD are affecting RDB$ tables too, can't say 100% that this is a expected behavior for RDB$ files too

Also, I simplified the error step:

CREATE TABLE Contacts
(
ContactPK INT not null,
ContactName VARCHAR(20) not null
);
--Run SQL (2 results, OK):
select * from rdb$fields f
join rdb$relation_fields r
  on f.rdb$field_name=r.rdb$field_source
where r.rdb$relation_name = 'CONTACTS';

CREATE COLLATION EN_US_CI_AI
FOR ISO8859_1
FROM EN_US
NO PAD
CASE INSENSITIVE
ACCENT INSENSITIVE;

ALTER CHARACTER SET ISO8859_1 SET DEFAULT COLLATION EN_US_CI_AI;

--Run SQL (no result, not OK?):
select * from rdb$fields f
join rdb$relation_fields r
  on f.rdb$field_name=r.rdb$field_source
where r.rdb$relation_name = 'CONTACTS';
ron90 commented 2 years ago

Thankyou @arvanus and others for looking into this and taking it forward to the Firebird support team.

As per your reply, I also checked and found that NO PAD could be creating this problem. I am unaware of the internals so the developers and Firebird people are the best judge.

I tried creating the collation without specifying NO PAD clause as well as with PAD SPACE option. In both cases there are no issues, everything works ok.

arvanus commented 2 years ago

Please, try this snapshot https://github.com/mariuz/flamerobin/releases/tag/0.9.3.12 Ad close the issue if everything is OK

ron90 commented 2 years ago

Hello, I tried with the new snapshot.

Still there are two issues I found: 1) The system tables query you mentioned does not return any rows yet.

select * from rdb$fields f
join rdb$relation_fields r
  on f.rdb$field_name=r.rdb$field_source
where r.rdb$relation_name = 'CONTACTS';

No runtime error now in selecting from other system tables.

2) Field properties page now shows data type of the column in Domain instead of Datatype. FieldProperties

ron90 commented 2 years ago

The problem is still present in https://github.com/mariuz/flamerobin/releases/tag/0.9.3.12 Will the deea0f4 committed update be available in next release of snapshot?