Re: Fwd: [firebird-support] Re: Firebird 3.0.4 unicode_ci_ai index problems

2018-10-17 Thread Luis Forra luis.fo...@gmail.com [firebird-support]
nonomura nono181...@yahoo.co.jp [firebird-support] <
firebird-support@yahoogroups.com> escreveu no dia terça, 16/10/2018 à(s)
15:14:

>
>
> Analitico and all,
>
> I found that if  I add the a extra field in the index like the pk and make
> the index unique it works fine.
>
>
> Many of those collation problems seem to relate to unicode_ci and
> unicode_ci_ai,
> and this relates to the usage of ICU functions.
>
> FB seems to set collation strength properly only where it relates to
> unique index.
> Otherwise the strength is left default, i.e. equivalent of collate
> unicode, for unicode_ci and unicode_ci_ai.
> This is my guess after tested and observed many cases.
>
> If a sorting was ordered by a single column with collate UNICODE,
> the result could be shared with collate UNICODE_CI or UNICODE_CI_AI.
> But when it comes to ordering by multiple columns, it should be a
> different story.
>


The biggest problem that I have now is with foreign keys, even if can make
some indexes unique with most foreign keys its impossible,

example of the problem:

CREATE TABLE M_UNICODE (
S1  VARCHAR(10) NOT NULL COLLATE UNICODE,
S2  VARCHAR(10) NOT NULL COLLATE UNICODE
);
CREATE TABLE D_UNICODE (
S1  VARCHAR(10) NOT NULL COLLATE UNICODE,
S2  VARCHAR(10) NOT NULL COLLATE UNICODE
);
CREATE TABLE M_CI_AI (
S1  VARCHAR(10) NOT NULL COLLATE UNICODE_CI_AI,
S2  VARCHAR(10) NOT NULL COLLATE UNICODE_CI_AI
);

CREATE TABLE D_CI_AI (
S1  VARCHAR(10) NOT NULL COLLATE UNICODE_CI_AI,
S2  VARCHAR(10) NOT NULL COLLATE UNICODE_CI_AI
);
INSERT INTO M_UNICODE (S1, S2) VALUES ('A', 'A');
INSERT INTO M_UNICODE (S1, S2) VALUES ('A', 'B');

INSERT INTO M_CI_AI (S1, S2) VALUES ('A', 'A');
INSERT INTO M_CI_AI (S1, S2) VALUES ('A', 'B');

set term ^ ;

execute block
as
  declare variable i bigint = 1000;
begin
 while (i > 0) do
 begin
   insert into d_unicode (s1,s2) values ('A','A');
   insert into d_ci_ai (s1,s2) values ('A','A');
   i = i-1;
 end
 insert into d_unicode (s1,s2) values ('A','B');
 insert into d_ci_ai (s1,s2) values ('A','B');
end^

set term ; ^

ALTER TABLE M_UNICODE ADD CONSTRAINT M_U PRIMARY KEY (S1, S2);
ALTER TABLE M_CI_AI ADD CONSTRAINT M_CI_AI PRIMARY KEY (S1, S2);
commit work;

ALTER TABLE D_UNICODE ADD CONSTRAINT D_U FOREIGN KEY (S1, S2) REFERENCES
M_UNICODE (S1, S2) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE D_CI_AI ADD CONSTRAINT D_CI_AI FOREIGN KEY (S1, S2) REFERENCES
M_CI_AI (S1, S2) ON DELETE CASCADE ON UPDATE CASCADE;
commit work;

Query

 update m_ci_ai set s2 = 'C' where s1 = 'A' and s2 = 'B';

Operations

Read   : 9
Writes : 0
Fetches: 2 070
Marks  : 6


Enchanced Info:
+---+---+---+-+-+-+-+--+--+--+
|  Table Name   |  Records  |  Indexed  | Non-Indexed |
Updates | Deletes | Inserts | Backouts |  Purges  | Expunges |
|   |   Total   |   reads   |reads|
 | | |  |  |  |
+---+---+---+-+-+-+-+--+--+--+
|D_CI_AI| 0 |  2002 |   0 |
   1 |   0 |   0 |0 |0 |0 |
|M_CI_AI| 0 | 2 |   0 |
   1 |   0 |   0 |0 |0 |0 |
+---+---+---+-+-+-+-+--+--+--+

Query

 update m_unicode set s2 = 'C' where s1 = 'A' and s2 = 'B';
Operations

Read   : 0
Writes : 0
Fetches: 43
Marks  : 8


Enchanced Info:
+---+---+---+-+-+-+-+--+--+--+
|  Table Name   |  Records  |  Indexed  | Non-Indexed |
Updates | Deletes | Inserts | Backouts |  Purges  | Expunges |
|   |   Total   |   reads   |reads|
 | | |  |  |  |
+---+---+---+-+-+-+-+--+--+--+
|D_UNICODE  | 0 | 2 |   0 |
   1 |   0 |   0 |0 |0 |0 |
|M_UNICODE  | 0 | 2 |   0 |
   1 |   0 |   0 |0 |0 |0 |
+---+---+---+-+-+-+-+--+--+--+

I made the biggest mistake, I assumed, but I believed that the utf8
colations in firebird where mature.

Thank you

regards

Luis Forra
---

>


Re: Re: Fwd: [firebird-support] Re: Firebird 3.0.4 unicode_ci_ai index problems

2018-10-17 Thread g...@liconic.com [firebird-support]
I'm out of the office till the 18th of October with a limited access to my 
emails.

With the best wishes,
Georgiy Kovalov




Re: [firebird-support] Re: Firebird 3.0.4 unicode_ci_ai index problems

2018-10-17 Thread Luis Forra luis.fo...@gmail.com [firebird-support]
hv...@users.sourceforge.net [firebird-support] <
firebird-support@yahoogroups.com> escreveu no dia terça, 16/10/2018 à(s)
08:19:

>
>
> ---In firebird-support@yahoogroups.com,  wrote :
>
> > I found that if  I add the a extra field in the index like the pk and
> make the index unique it works fine.
>
>   Ok.
>
> > Is expected to work fine even with the bug that you refer ?
>
>   Not sure what is "fine" here. In any case - test it and if you'll found
> a problem, report it
>

The CORE-2457  is marked as fixed, I believed that I was doing that,
reporting a problem.


>
> Regards,
> Vlad
>
> PS your messages is duplicated in this list, fix it please
>
> __._,_.__
>

I'am sorry

Regards

Luis Forra
---