aboutsummaryrefslogtreecommitdiff
path: root/odb/relational/processor.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/relational/processor.cxx')
-rw-r--r--odb/relational/processor.cxx15
1 files changed, 15 insertions, 0 deletions
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;
}