MCPcopy Create free account
hub / github.com/questdb/questdb / parseInsert

Method parseInsert

core/src/main/java/io/questdb/griffin/SqlParser.java:3333–3436  ·  view source on GitHub ↗
(
            GenericLexer lexer,
            SqlParserCallback sqlParserCallback,
            @Nullable LowerCaseCharSequenceObjHashMap<ExpressionNode> decls
    )

Source from the content-addressed store, hash-verified

3331 }
3332
3333 private ExecutionModel parseInsert(
3334 GenericLexer lexer,
3335 SqlParserCallback sqlParserCallback,
3336 @Nullable LowerCaseCharSequenceObjHashMap<ExpressionNode> decls
3337 ) throws SqlException {
3338 final InsertModel model = insertModelPool.next();
3339 CharSequence tok = tok(lexer, "atomic or into or batch");
3340 model.setBatchSize(configuration.getInsertModelBatchSize());
3341 boolean atomicSpecified = false;
3342
3343 if (isAtomicKeyword(tok)) {
3344 atomicSpecified = true;
3345 model.setBatchSize(-1);
3346 tok = tok(lexer, "into");
3347 }
3348
3349 if (isBatchKeyword(tok)) {
3350 long val = expectLong(lexer);
3351 if (val > 0) {
3352 model.setBatchSize(val);
3353 } else {
3354 throw SqlException.$(lexer.lastTokenPosition(), "batch size must be positive integer");
3355 }
3356
3357 tok = tok(lexer, "into or o3MaxLag");
3358 if (isO3MaxLagKeyword(tok)) {
3359 int pos = lexer.getPosition();
3360 model.setO3MaxLag(SqlUtil.expectMicros(tok(lexer, "lag value"), pos));
3361 tok = tok(lexer, "into");
3362 }
3363 }
3364
3365 if (!isIntoKeyword(tok)) {
3366 throw SqlException.$(lexer.lastTokenPosition(), "'into' expected");
3367 }
3368
3369 tok = tok(lexer, "table name");
3370 tok = sansPublicSchema(tok, lexer);
3371 assertNameIsQuotedOrNotAKeyword(tok, lexer.lastTokenPosition());
3372 model.setTableName(nextLiteral(assertNoDotsAndSlashes(unquote(tok), lexer.lastTokenPosition()), lexer.lastTokenPosition()));
3373
3374 tok = tok(lexer, "'(' or 'select'");
3375
3376 if (Chars.equals(tok, '(')) {
3377 do {
3378 tok = tok(lexer, "column");
3379 if (Chars.equals(tok, ')')) {
3380 throw err(lexer, tok, "missing column name");
3381 }
3382
3383 assertNameIsQuotedOrNotAKeyword(tok, lexer.lastTokenPosition());
3384 model.addColumn(unquote(tok), lexer.lastTokenPosition());
3385 } while (Chars.equals((tok = tok(lexer, "','")), ','));
3386
3387 expectTok(tok, lexer.lastTokenPosition(), ')');
3388 tok = optTok(lexer);
3389 }
3390

Callers 3

parseExplainMethod · 0.95
parseWithMethod · 0.95
parseMethod · 0.95

Calls 15

tokMethod · 0.95
setBatchSizeMethod · 0.95
expectLongMethod · 0.95
$Method · 0.95
setO3MaxLagMethod · 0.95
expectMicrosMethod · 0.95
sansPublicSchemaMethod · 0.95
setTableNameMethod · 0.95
nextLiteralMethod · 0.95
equalsMethod · 0.95
errMethod · 0.95
addColumnMethod · 0.95

Tested by

no test coverage detected