From 64c91a28268319db5f8adc414f05e63c16e4727d Mon Sep 17 00:00:00 2001 From: Alexander Zubkov <41280743+alexander-zubkov@users.noreply.github.com> Date: Tue, 2 Jul 2019 20:30:39 +0500 Subject: [PATCH 1/2] Update SelectTests.cs Add test of procedure for firebird --- QueryBuilder.Tests/SelectTests.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/QueryBuilder.Tests/SelectTests.cs b/QueryBuilder.Tests/SelectTests.cs index 92b2ea59..7b7a328a 100644 --- a/QueryBuilder.Tests/SelectTests.cs +++ b/QueryBuilder.Tests/SelectTests.cs @@ -19,6 +19,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 BasicSelectWhereBindingIsEmptyOrNull() From 5da901da142a80765f01c5d83748a50b6ed01ef6 Mon Sep 17 00:00:00 2001 From: Alexander Zubkov <41280743+alexander-zubkov@users.noreply.github.com> Date: Tue, 2 Jul 2019 20:34:31 +0500 Subject: [PATCH 2/2] Update FirebirdCompiler.cs Fix query from procedure --- QueryBuilder/Compilers/FirebirdCompiler.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/QueryBuilder/Compilers/FirebirdCompiler.cs b/QueryBuilder/Compilers/FirebirdCompiler.cs index 9dc48cd6..df33745c 100644 --- a/QueryBuilder/Compilers/FirebirdCompiler.cs +++ b/QueryBuilder/Compilers/FirebirdCompiler.cs @@ -103,7 +103,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()