Currently Firebird returns True for SupportsMixedCaseIdentifiers, but I *think* it should be false? Btw, thanks Jan for your recent updates on using Firebird embedded. I had been meaning to look into this for an internal project and your wiki page helped (although I'm just on windows for it.)
-Mark
Firebird and SupportsMixedCaseIdentifiers
-
- Platinum Boarder
- Posts: 1956
- Joined: 17.01.2011, 14:17
Re: Firebird and SupportsMixedCaseIdentifiers
Hello Mark,
Firebird does support mixed case identifiers. >select * from "table1"< is not the same as >select * from "TABLE1"< which is different from >select * from "TaBlE1". This is why I changed the Interbase/Firebird driver to return True for SupportsMixedCaseIdentifiers.
Best regards,
Jan
Firebird does support mixed case identifiers. >select * from "table1"< is not the same as >select * from "TABLE1"< which is different from >select * from "TaBlE1". This is why I changed the Interbase/Firebird driver to return True for SupportsMixedCaseIdentifiers.
The howto was more focussed on getting Firebird to work on Android - to help people get started there with Zeos. Regarding Firebird Embedded on Windows you might want to take a look at the Firebird 4 Migration Guide because it has information on the minimum configuration for Firebird 4.0 Embedded on Windows.
Best regards,
Jan
Re: Firebird and SupportsMixedCaseIdentifiers
Hi Jan,
I believe the value for SupportsMixedCaseIdentifiers is specifically for unquoted identifiers. The only database I use where this value is true is MySQL 5.7 on Linux with Get_lower_case_table_names = 0. This value correctly defaults to False in ZDbcMetadata.
Here's the help for it from ZDbcMetadata:
/// <summary>Does the database treat mixed case unquoted SQL identifiers as
/// case sensitive and as a result store them in mixed case?
/// <returns><c>true</c> if so; <c>false</c> otherwise.</returns>
function SupportsMixedCaseIdentifiers: Boolean; virtual;
As far as double quoted identifiers go, I thought that SupportsMixedCaseQuotedIdentifiers was for that (and probably always true, though I don't use all the protocols in Zeos.) This value correctly defaults to True in ZDbcMetadata.
/// <summary>Does the database treat mixed case quoted SQL identifiers as
/// case sensitive and as a result store them in mixed case?</summary>
/// <returns><c>true</c> if so; <c>false</c> otherwise.</returns>
function SupportsMixedCaseQuotedIdentifiers: Boolean; virtual;
So I *think* that SupportsMixedCaseIdentifiers should be False for Firebird, unless unquoted identifiers are case sensitive sometimes, as with MySQL? I do use Firebird both on Windows and Linux and I haven't seen anything case sensitive with unquoted idents.
-Mark
P.S. Yes on the embedded stuff! I got it working without any problems, I was just showing appreciation for your wiki page post. Thanks as always!
I believe the value for SupportsMixedCaseIdentifiers is specifically for unquoted identifiers. The only database I use where this value is true is MySQL 5.7 on Linux with Get_lower_case_table_names = 0. This value correctly defaults to False in ZDbcMetadata.
Here's the help for it from ZDbcMetadata:
/// <summary>Does the database treat mixed case unquoted SQL identifiers as
/// case sensitive and as a result store them in mixed case?
/// <returns><c>true</c> if so; <c>false</c> otherwise.</returns>
function SupportsMixedCaseIdentifiers: Boolean; virtual;
As far as double quoted identifiers go, I thought that SupportsMixedCaseQuotedIdentifiers was for that (and probably always true, though I don't use all the protocols in Zeos.) This value correctly defaults to True in ZDbcMetadata.
/// <summary>Does the database treat mixed case quoted SQL identifiers as
/// case sensitive and as a result store them in mixed case?</summary>
/// <returns><c>true</c> if so; <c>false</c> otherwise.</returns>
function SupportsMixedCaseQuotedIdentifiers: Boolean; virtual;
So I *think* that SupportsMixedCaseIdentifiers should be False for Firebird, unless unquoted identifiers are case sensitive sometimes, as with MySQL? I do use Firebird both on Windows and Linux and I haven't seen anything case sensitive with unquoted idents.
-Mark
P.S. Yes on the embedded stuff! I got it working without any problems, I was just showing appreciation for your wiki page post. Thanks as always!
-
- Platinum Boarder
- Posts: 1956
- Joined: 17.01.2011, 14:17
Re: Firebird and SupportsMixedCaseIdentifiers
You are right. Firebird handles all mixed case identifiers as if they were uppercase identifiers.
As a side note: This value can be true for MS SQL Server - and maybe Sybase ASE - depending on the default collation of the database.
For MySQL with lower_case_table_names = 0 this function cannot return the truth because there are different rules for different identifiers then. For MySQL we would have to extend the funtion to tell it what kind of identifier wie are talking about (table name vs. colulmn name vs. ...) and only then it could tell us the truth. Otherwise it is guesswork...
-
- Platinum Boarder
- Posts: 1956
- Joined: 17.01.2011, 14:17
Re: Firebird and SupportsMixedCaseIdentifiers
I changed this for all versions in SVN back to 6.6.
Re: Firebird and SupportsMixedCaseIdentifiers
Thanks!
-Mark
-Mark