From 60223c1696a3b307cf3c566f031528faa2e2ab6e Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 27 Oct 2015 18:57:27 +0200 Subject: Recognize /*CALL*/ hint in SELECT statements that call stored procedures --- odb/relational/processor.cxx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/odb/relational/processor.cxx b/odb/relational/processor.cxx index cf0a776..508a5ee 100644 --- a/odb/relational/processor.cxx +++ b/odb/relational/processor.cxx @@ -1187,6 +1187,15 @@ namespace relational q.compare (0, 5, "CALL ") == 0 || q.compare (0, 8, "EXECUTE ") == 0) vq.kind = view_query::complete_execute; + // + // Hint for databases that use SELECT for stored procedure + // calls (e.g., PostgreSQL). + // + else if (q.compare (0, 8, "/*CALL*/") == 0) + { + vq.literal = string (vq.literal, q[8] == ' ' ? 9 : 8); + vq.kind = view_query::complete_execute; + } else vq.kind = view_query::condition; } @@ -1207,6 +1216,12 @@ namespace relational q.compare (0, 5, "CALL ") == 0 || q == "CALL" || q.compare (0, 8, "EXECUTE ") == 0 || q == "EXECUTE") vq.kind = view_query::complete_execute; + else if (q.compare (0, 8, "/*CALL*/") == 0) + { + vq.expr.front ().literal = + string (vq.expr.front ().literal, q[8] == ' ' ? 9 : 8); + vq.kind = view_query::complete_execute; + } else vq.kind = view_query::condition; } -- cgit v1.1