File tree Expand file tree Collapse file tree 1 file changed +7
-3
lines changed
src/query/service/src/sql/planner Expand file tree Collapse file tree 1 file changed +7
-3
lines changed Original file line number Diff line number Diff line change @@ -75,10 +75,14 @@ impl Planner {
75
75
. and_then ( |token| Some ( token. as_ref ( ) . ok ( ) ?. kind ) )
76
76
== Some ( TokenKind :: INSERT ) ;
77
77
// Only tokenize the beginning tokens for `INSERT INTO` statement because it's unnecessary to tokenize tokens for values.
78
+ //
79
+ // Stop the tokenizer on unrecognized token because some values inputs (e.g. CSV) may not be recognized by the tokenizer.
80
+ // See also: https://github.com/datafuselabs/databend/issues/6669
78
81
let mut tokens: Vec < Token > = if is_insert_stmt {
79
82
( & mut tokenizer)
80
83
. take ( PROBE_INSERT_INITIAL_TOKENS )
81
- . collect :: < Result < _ > > ( ) ?
84
+ . take_while ( |token| token. is_ok ( ) )
85
+ . collect :: < Result < _ > > ( ) . unwrap ( )
82
86
} else {
83
87
( & mut tokenizer) . collect :: < Result < _ > > ( ) ?
84
88
} ;
@@ -115,8 +119,8 @@ impl Planner {
115
119
&& matches ! ( tokenizer. peek( ) , Some ( Ok ( _) ) )
116
120
{
117
121
// Tokenize more and try again.
118
- for token in ( & mut tokenizer) . take ( tokens. len ( ) * 2 ) {
119
- tokens. push ( token? ) ;
122
+ for token in ( & mut tokenizer) . take ( tokens. len ( ) * 2 ) . take_while ( |token| token . is_ok ( ) ) {
123
+ tokens. push ( token. unwrap ( ) ) ;
120
124
}
121
125
} else {
122
126
return res;
You can’t perform that action at this time.
0 commit comments