Skip to content

Commit 112d215

Browse files
dreab8Sanne
authored andcommitted
HHH-14249 MultiLineImport fails when script contains blank spaces or tabs at the end of the last sql statement
1 parent 425ee2d commit 112d215

File tree

2 files changed

+52
-11
lines changed

2 files changed

+52
-11
lines changed

hibernate-core/src/main/antlr/sql-script.g

Lines changed: 52 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,16 +57,23 @@ options {
5757
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5858

5959
script
60-
: (newLineToSkip)* (statement)* EOF
60+
: blankSpacesToSkip (statement blankSpacesToSkip)* EOF
6161
;
6262

6363
statement
64-
: { statementStarted(); } (statementPart (afterStatementPartNewline)*)* DELIMITER (newLineToSkip)* { statementEnded(); }
64+
: { statementStarted(); } statementFirstPart (statementPart (afterStatementPartNewline)*)* DELIMITER { statementEnded(); }
65+
;
66+
67+
statementFirstPart
68+
: quotedString
69+
| nonSkippedChar
6570
;
6671

6772
statementPart
6873
: quotedString
6974
| nonSkippedChar
75+
| nonSkippedSpace
76+
| nonSkippedTab
7077
;
7178

7279
quotedString
@@ -75,23 +82,50 @@ quotedString
7582
}
7683
;
7784

85+
blankSpacesToSkip
86+
: (newLineToSkip | spaceToSkip | tabToSkip)*
87+
;
88+
7889
afterStatementPartNewline
79-
: n:NEWLINE {
80-
out( " " );
81-
}
82-
;
90+
: n:NEWLINE {
91+
out( " " );
92+
}
93+
;
8394

8495
newLineToSkip
8596
: NEWLINE {
8697
skip();
8798
}
8899
;
89100

101+
spaceToSkip
102+
: SPACE {
103+
skip();
104+
}
105+
;
106+
107+
tabToSkip
108+
: TAB {
109+
skip();
110+
}
111+
;
112+
113+
nonSkippedSpace
114+
: s:SPACE {
115+
out( s );
116+
}
117+
;
118+
119+
nonSkippedTab
120+
: t:TAB {
121+
out( t );
122+
}
123+
;
90124

91125
nonSkippedChar
92126
: c:CHAR {
93-
out( c );
94-
}
127+
out( c );
128+
}
95129
;
96130

97131

@@ -124,9 +158,16 @@ protected
124158
ESCqs : '\'' '\'' ;
125159

126160
CHAR
127-
: ( ' ' | '\t' ) => ( ' ' | '\t' )
128-
| ~( ';' | '\n' | '\r' )
129-
;
161+
: ~( ';' | '\n' | '\r' | ' ' | '\t')
162+
;
163+
164+
SPACE
165+
: ' '
166+
;
167+
168+
TAB
169+
: '\t'
170+
;
130171

131172
NEWLINE
132173
: ( '\r' | '\n' | '\r''\n' )

0 commit comments

Comments
 (0)