-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Closed
Description
I found these code in Prepared
public boolean needRecompile() {
Database db = session.getDatabase();
if (db == null) {
throw DbException.get(ErrorCode.CONNECTION_BROKEN_1, "database closed");
}
// parser: currently, compiling every create/drop/... twice
// because needRecompile return true even for the first execution
return prepareAlways ||
modificationMetaId < db.getModificationMetaId() ||
db.getSettings().recompileAlways;
}
if modificationMetaId changed between prepared and execute.
show columns from table will change to
SELECT C.COLUMN_NAME FIELD,
DATA_TYPE_SQL(?2, ?1, 'TABLE', C.DTD_IDENTIFIER) TYPE,
C.IS_NULLABLE "NULL",
CASE (SELECT MAX(I.INDEX_TYPE_NAME)
FROM INFORMATION_SCHEMA.INDEXES I
JOIN INFORMATION_SCHEMA.INDEX_COLUMNS IC
WHERE I.TABLE_SCHEMA = C.TABLE_SCHEMA
AND I.TABLE_NAME = C.TABLE_NAME
AND IC.TABLE_SCHEMA = C.TABLE_SCHEMA
AND IC.TABLE_NAME = C.TABLE_NAME
AND IC.INDEX_SCHEMA = I.INDEX_SCHEMA
AND IC.INDEX_NAME = I.INDEX_NAME
AND IC.COLUMN_NAME = C.COLUMN_NAME)
WHEN 'PRIMARY KEY' THEN 'PRI'
WHEN 'UNIQUE INDEX' THEN 'UNI'
ELSE '' END `KEY`,
COALESCE(COLUMN_DEFAULT, 'NULL') `DEFAULT`
FROM INFORMATION_SCHEMA.COLUMNS C
WHERE C.TABLE_NAME = ?1
AND C.TABLE_SCHEMA = ?2
ORDER BY C.ORDINAL_POSITION
but recompile has no parameters. Then errors occured like this.
Caused by: java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:659)
at java.util.ArrayList.get(ArrayList.java:435)
at org.h2.command.Parser.readParameter(Parser.java:4877)
at org.h2.command.Parser.readTermWithoutIdentifier(Parser.java:4950)
at org.h2.command.Parser.readTerm(Parser.java:4901)
at org.h2.command.Parser.readFactor(Parser.java:3398)
at org.h2.command.Parser.readSum(Parser.java:3385)
at org.h2.command.Parser.readConcat(Parser.java:3350)
at org.h2.command.Parser.readCondition(Parser.java:3132)
at org.h2.command.Parser.readExpression(Parser.java:3053)
at org.h2.command.Parser.readBuiltinFunctionIf(Parser.java:4391)
at org.h2.command.Parser.readFunction(Parser.java:3829)
at org.h2.command.Parser.readTermWithIdentifier(Parser.java:5211)
at org.h2.command.Parser.readTerm(Parser.java:4901)
at org.h2.command.Parser.readFactor(Parser.java:3398)
at org.h2.command.Parser.readSum(Parser.java:3385)
at org.h2.command.Parser.readConcat(Parser.java:3350)
at org.h2.command.Parser.readCondition(Parser.java:3132)
at org.h2.command.Parser.readExpression(Parser.java:3053)
at org.h2.command.Parser.parseSelectExpressions(Parser.java:2853)
at org.h2.command.Parser.parseSelect(Parser.java:2871)
at org.h2.command.Parser.parseQueryPrimary(Parser.java:2762)
at org.h2.command.Parser.parseQueryTerm(Parser.java:2633)
at org.h2.command.Parser.parseQueryExpressionBody(Parser.java:2612)
at org.h2.command.Parser.parseQueryExpressionBodyAndEndOfQuery(Parser.java:2605)
at org.h2.command.Parser.parseQueryExpression(Parser.java:2598)
at org.h2.command.Parser.parseQuery(Parser.java:2567)
at org.h2.command.Parser.parsePrepared(Parser.java:724)
at org.h2.command.Parser.parse(Parser.java:689)
at org.h2.command.Parser.parse(Parser.java:661)
at org.h2.command.CommandContainer.recompileIfRequired(CommandContainer.java:146)
at org.h2.command.CommandContainer.query(CommandContainer.java:247)
at org.h2.command.Command.executeQuery(Command.java:190)
Metadata
Metadata
Assignees
Labels
No labels