Class FirebirdMemberTranslator
- Namespace
- LinqToDB.Internal.DataProvider.Firebird.Translation
- Assembly
- linq2db.dll
public class FirebirdMemberTranslator : ProviderMemberTranslatorDefault, IMemberTranslator
- Inheritance
-
objectFirebirdMemberTranslator
- Implements
- Derived
- Inherited Members
- Extension Methods
Methods
CreateDateMemberTranslator()
protected override IMemberTranslator CreateDateMemberTranslator()
Returns
CreateGuidMemberTranslator()
protected override IMemberTranslator CreateGuidMemberTranslator()
Returns
CreateSqlTypesTranslator()
protected override IMemberTranslator CreateSqlTypesTranslator()
Returns
CreateStringMemberTranslator()
protected override IMemberTranslator CreateStringMemberTranslator()
Returns
CreateWindowFunctionsMemberTranslator()
protected override IMemberTranslator? CreateWindowFunctionsMemberTranslator()
Returns
TranslateGuidToString(ISqlExpression, ISqlExpressionFactory)
Builds the Firebird Cast(Lower(UUID_TO_CHAR({0})) as VarChar(36)) shape for a Guid → string conversion.
Shared by the Guid.ToString() member translator and the cast(guid as string) path in
FirebirdSqlExpressionConvertVisitor so both emit identical SQL.
public static ISqlExpression TranslateGuidToString(ISqlExpression guidExpr, ISqlExpressionFactory factory)
Parameters
guidExprISqlExpressionfactoryISqlExpressionFactory
Returns
Remarks
Firebird's native UUID_TO_CHAR returns CHAR(36) — a fixed-width type that pads shorter
values with trailing spaces. The inner function is typed as CHAR(36) to match that database
semantic; the outer CAST then forces the result to VARCHAR(36) so a composing
COALESCE(..., '') doesn't promote the whole expression to CHAR(36) and pad the
empty-string branch to 36 spaces. Without the explicit CHAR typing on the inner function the optimizer
(see SqlExpressionOptimizerVisitor.VisitSqlCastExpression) would treat the CAST as a no-op and
elide it. Matches PostgreSQL / Sybase / SqlServer / MySql / SqlCe / SapHana Guid translators which all
converge on a VARCHAR(36) result.
TranslateNewGuidMethod(ITranslationContext, TranslationFlags)
protected override ISqlExpression? TranslateNewGuidMethod(ITranslationContext translationContext, TranslationFlags translationFlags)
Parameters
translationContextITranslationContexttranslationFlagsTranslationFlags