diff --git a/QueryBuilder.Tests/SelectTests.cs b/QueryBuilder.Tests/SelectTests.cs index 8341bf1f..b49eb84a 100644 --- a/QueryBuilder.Tests/SelectTests.cs +++ b/QueryBuilder.Tests/SelectTests.cs @@ -21,6 +21,15 @@ public void BasicSelect() Assert.Equal("SELECT \"ID\", \"NAME\" FROM \"USERS\"", c[EngineCodes.Firebird]); Assert.Equal("SELECT \"id\", \"name\" FROM \"users\"", c[EngineCodes.Oracle]); } + + [Fact] + public void BasicSelectFromProcedure() + { + var q = new Query().From("users(5)"); + var c = Compile(q); + + Assert.Equal("SELECT * FROM \"USERS\"(5)", c[EngineCodes.Firebird]); + } [Fact] public void BasicSelectEnumerable() diff --git a/QueryBuilder/Compilers/FirebirdCompiler.cs b/QueryBuilder/Compilers/FirebirdCompiler.cs index 98702dbf..bdc23e47 100644 --- a/QueryBuilder/Compilers/FirebirdCompiler.cs +++ b/QueryBuilder/Compilers/FirebirdCompiler.cs @@ -104,7 +104,13 @@ protected override string CompileBasicDateCondition(SqlResult ctx, BasicDateCond public override string WrapValue(string value) { - return base.WrapValue(value).ToUpperInvariant(); + if (value == "*") return value; + + var opening = this.OpeningIdentifier; + var closing = this.ClosingIdentifier; + + return Regex.Replace(value.Replace(closing, closing + closing), @"^(?[\w]+)(?(\(.+))*$", + p => opening + p.Groups["a1"].Value.ToUpperInvariant() + closing + p.Groups["a2"].Value); } public override string CompileTrue()