Skip to content

CONNECT operator fails with SQLSTATE=28000 when user name is encoded in UTF-8 and INET or XNET is used to make connection (Windows only) #8861

@pavel-zotov

Description

@pavel-zotov

Following relates to Windows only, system locale = ru_RU.

Consider two scripts from attached .zip
connect-using-non-ascii-username_-_win1251-vs-utf8.zip

File "connect-win1251.sql" was encoded using CP1251, file "connect-utf8.sql" - UTF8.
Run two command window.

cmd-1:

chcp 1251
isql -q -i connect-win1251.sql

Result: script completes without errors (though value of rdb$get_context('SYSTEM', 'CURRENT_USER') contain mojibakes)

Details
C:\FBTESTING\qa\misc>chcp
Текущая кодовая страница: 1251

C:\FBTESTING\qa\misc>isql -q -i connect-win1251.sql
set names win1251;
shell if exist c:\temp\tmp4test.fdb del c:\temp\tmp4test.fdb;

connect 'localhost:employee' user sysdba password 'masterkey';
create or alter user  "Джон О'Хара" password '123';
commit;

create database 'c:\temp\tmp4test.fdb' user "Джон О'Хара";
create or alter view v_info as
select
    m.mon$database_name
    ,mon$creation_date
    ,m.mon$owner
    ,a.mon$attachment_name
    ,a.mon$user
    ,a.mon$remote_protocol
    ,a.mon$client_version
    ,a.mon$auth_method
    ,rdb$get_context('SYSTEM', 'CURRENT_USER') as ctx_current_user
    ,current_user as whoami
from mon$database m
cross join mon$attachments a where a.mon$attachment_id = current_connection;
commit;
select * from v_info;

MON$DATABASE_NAME               C:\TEMP\TMP4TEST.FDB
MON$CREATION_DATE               2026-01-20 10:29:12.0580 GMT
MON$OWNER                       Джон О'Хара
MON$ATTACHMENT_NAME             C:\TEMP\TMP4TEST.FDB
MON$USER                        Джон О'Хара
MON$REMOTE_PROTOCOL             <null>
MON$CLIENT_VERSION              <null>
MON$AUTH_METHOD                 User name in DPB
CTX_CURRENT_USER                Джон О'Хара
WHOAMI                          Джон О'Хара


show database;
Database: c:\temp\tmp4test.fdb
        Owner: Джон О'Хара
...
Embedded connection
Creation date: Jan 20, 2026 13:29:12
Replica mode: NONE
Default Character set: SYSTEM.NONE
Publication: Disabled
commit;
connect 'c:\temp\tmp4test.fdb' user "Джон О'Хара";
select * from v_info;

MON$DATABASE_NAME               C:\TEMP\TMP4TEST.FDB
MON$CREATION_DATE               2026-01-20 10:29:12.0580 GMT
MON$OWNER                       Джон О'Хара
MON$ATTACHMENT_NAME             C:\TEMP\TMP4TEST.FDB
MON$USER                        Джон О'Хара
MON$REMOTE_PROTOCOL             <null>
MON$CLIENT_VERSION              <null>
MON$AUTH_METHOD                 User name in DPB
CTX_CURRENT_USER                Джон О'Хара
WHOAMI                          Джон О'Хара


commit;
connect 'localhost:c:\temp\tmp4test.fdb' user "Джон О'Хара" password '123';
select * from v_info;

MON$DATABASE_NAME               C:\TEMP\TMP4TEST.FDB
MON$CREATION_DATE               2026-01-20 10:29:12.0580 GMT
MON$OWNER                       Джон О'Хара
MON$ATTACHMENT_NAME             C:\TEMP\TMP4TEST.FDB
MON$USER                        Джон О'Хара
MON$REMOTE_PROTOCOL             TCPv6
MON$CLIENT_VERSION              WI-T6.0.0.1394 Firebird 6.0 Initial
MON$AUTH_METHOD                 Srp
CTX_CURRENT_USER                Джон О'Хара
WHOAMI                          Джон О'Хара

commit;

cmd-2:

chcp 65001
isql -q -i connect-utf8.sql

Result: script fails with "SQLSTATE = 28000 / Your user name and password ..."

Details
Microsoft Windows [Version 10.0.19045.3086]
(c) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.

C:\FBTESTING\qa\misc>chcp 65001
Active code page: 65001

C:\FBTESTING\qa\misc>isql -q -i connect-utf8.sql
set names utf8;
shell if exist c:\temp\tmp4test.fdb del c:\temp\tmp4test.fdb;

connect 'localhost:employee' user sysdba password 'masterkey';
create or alter user  "Джон О'Хара" password '123';
commit;

create database 'c:\temp\tmp4test.fdb' user "Джон О'Хара";
create or alter view v_info as
select
    m.mon$database_name
    ,mon$creation_date
    ,m.mon$owner
    ,a.mon$attachment_name
    ,a.mon$user
    ,a.mon$remote_protocol
    ,a.mon$client_version
    ,a.mon$auth_method
    ,rdb$get_context('SYSTEM', 'CURRENT_USER') as ctx_current_user
    ,current_user as whoami
from mon$database m
cross join mon$attachments a where a.mon$attachment_id = current_connection;
commit;
select * from v_info;

MON$DATABASE_NAME               C:\TEMP\TMP4TEST.FDB
MON$CREATION_DATE               2026-01-20 10:23:06.8600 GMT
MON$OWNER                       Джон О'Хара                                                                                                       
MON$ATTACHMENT_NAME             C:\TEMP\TMP4TEST.FDB
MON$USER                        Джон О'Хара                                                                                                       
MON$REMOTE_PROTOCOL             <null>
MON$CLIENT_VERSION              <null>
MON$AUTH_METHOD                 User name in DPB
CTX_CURRENT_USER                Джон О'Хара
WHOAMI                          Джон О'Хара


show database;
Database: c:\temp\tmp4test.fdb
        Owner: Джон О'Хара
PAGE_SIZE 8192
Number of DB pages allocated = 295
Number of DB pages used = 287
Number of DB pages free = 8
Sweep interval = 20000
Forced Writes are ON
Transaction - oldest = 4
Transaction - oldest active = 5
Transaction - oldest snapshot = 5
Transaction - Next = 9
ODS = 14.0
Database not encrypted
Embedded connection
Creation date: Jan 20, 2026 13:23:06
Replica mode: NONE
Default Character set: SYSTEM.NONE
Publication: Disabled
commit;
connect 'c:\temp\tmp4test.fdb' user "Джон О'Хара";
select * from v_info;

MON$DATABASE_NAME               C:\TEMP\TMP4TEST.FDB
MON$CREATION_DATE               2026-01-20 10:23:06.8600 GMT
MON$OWNER                       Джон О'Хара                                                                                                       
MON$ATTACHMENT_NAME             C:\TEMP\TMP4TEST.FDB
MON$USER                        Джон О'Хара                                                                                                       
MON$REMOTE_PROTOCOL             <null>
MON$CLIENT_VERSION              <null>
MON$AUTH_METHOD                 User name in DPB
CTX_CURRENT_USER                Джон О'Хара
WHOAMI                          Джон О'Хара


commit;
connect 'localhost:c:\temp\tmp4test.fdb' user "Джон О'Хара" password '123';
Statement failed, SQLSTATE = 28000
Your user name and password are not defined. Ask your database administrator to set up a Firebird login.
After line 32 in file connect-utf8.sql

C:\FBTESTING\qa\misc>

PS.
Same if we try to specify inet:// or xnet:// instead of 'localhost:' in last statement.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions