using jdbc-8.0-313 against 8.0.4,
the driver gets confused when parsing rule definition statements with
embedded semicolons such as :
"create rule r1 as on insert to foo do (delete from bar; insert into
bar select * from foo; );  "
the following patch shows a possible quick fix for
QueryExecutorImpl.parseQuery() in org/postgresql/core/v3/
QueryExecutorImpl.java
69d68
<       int inParen = 0;
77,82d75
<             case '(':
<               if (!inSingleQuotes && !inDoubleQuotes) inParen++;
<               break;
<             case ')':
<               if (!inSingleQuotes && !inDoubleQuotes) inParen--;
<               break;
105c98
<                 if (!inSingleQuotes && !inDoubleQuotes && inParen
== 0)
---
 >                 if (!inSingleQuotes && !inDoubleQuotes)