summaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/preproc
diff options
context:
space:
mode:
authorMichael Meskes <meskes@postgresql.org>2017-08-25 15:15:03 +0200
committerMichael Meskes <meskes@postgresql.org>2017-08-25 15:17:29 +0200
commitd22e9d530516f7c9c56d00eff53cf19e45ef348c (patch)
tree8d3d247aa4b7bc3d274343a5a83a0b1904084125 /src/interfaces/ecpg/preproc
parent3f4c7917b3bc8b421c0c85cb9995974c55e7232b (diff)
Implement DO CONTINUE action for ECPG WHENEVER statement.
Author: Vinayak Pokale Reviewed-By: Masahiko Sawada
Diffstat (limited to 'src/interfaces/ecpg/preproc')
-rw-r--r--src/interfaces/ecpg/preproc/ecpg.trailer6
-rw-r--r--src/interfaces/ecpg/preproc/output.c3
2 files changed, 9 insertions, 0 deletions
diff --git a/src/interfaces/ecpg/preproc/ecpg.trailer b/src/interfaces/ecpg/preproc/ecpg.trailer
index d273070dabf..f60a62099d4 100644
--- a/src/interfaces/ecpg/preproc/ecpg.trailer
+++ b/src/interfaces/ecpg/preproc/ecpg.trailer
@@ -1454,6 +1454,12 @@ action : CONTINUE_P
$<action>$.command = NULL;
$<action>$.str = mm_strdup("break");
}
+ | DO CONTINUE_P
+ {
+ $<action>$.code = W_CONTINUE;
+ $<action>$.command = NULL;
+ $<action>$.str = mm_strdup("continue");
+ }
| SQL_CALL name '(' c_args ')'
{
$<action>$.code = W_DO;
diff --git a/src/interfaces/ecpg/preproc/output.c b/src/interfaces/ecpg/preproc/output.c
index 0479c93c991..a55bf2b06a7 100644
--- a/src/interfaces/ecpg/preproc/output.c
+++ b/src/interfaces/ecpg/preproc/output.c
@@ -51,6 +51,9 @@ print_action(struct when *w)
case W_BREAK:
fprintf(base_yyout, "break;");
break;
+ case W_CONTINUE:
+ fprintf(base_yyout, "continue;");
+ break;
default:
fprintf(base_yyout, "{/* %d not implemented yet */}", w->code);
break;