From 3dabad0478bebd52c5f75a430fa918f3e336903a Mon Sep 17 00:00:00 2001 From: Luca Garulli Date: Mon, 3 Jul 2023 15:02:58 -0400 Subject: [PATCH] Vector model - implementation preview (#1148) * feat: refactoring of schema api using a builder for types Fixed issue 1102 * fix: SQLSCRIPT commit command with retry Fixed issue #1097 * First version of VectorBuilder to hold parameters to build the vector index * First implementation (not tested yet) of HnswIndex derived from an optimized for RAM implementation * chore: removed unused properties * feat: optimized support for arrays of numbers They are not stored as List with dynamic type for each item, but rather as array of element of the same type. This saves much more space and it is much faster because avoid java autoboxing by using literals * feat: first working version of importer + index. * feat: completed 1st impl of RAM+Database HSNW Index * feat: vector test now select a random word * test: vector test run, removed delay and converted output into logs to see the timestamp * First draft of create index command for vectors * Merge branch 'main' into vector-model * feat: implemented ArcadeDB's Index interface on HnswVectorIndex * feat: major refactoring to support vector indexes * test: removed initial count of words * Fixed compilation issue * Merge branch 'main' into vector-model * feat: vector index now is correctly saved and loaded in/from the database * Fixed compilation issues after merge * Added support for Chebyshev by @gramian * Moved ChebyshevDistance into ArcadeDB project * fix: hnsw -> init level connections under the control of maxM0 and maxM Applied the PR from https://github.com/jelmerk/hnswlib/pull/54 * feat: added statistics to the vector demo * integrated Word2Vec and GloVe format into the importer https://github.com/ArcadeData/arcadedb/discussions/995 * fix: automatically saved the vector index upon creation * feat: sql -> added `vectorNeighbors()` function * fix: compilation warning * feat: supported arrays in Types + auto create type and properties + some refactoring * chore: refactoring with names * chore: fixed typos * test: fixed broken tests * test: fixed broken test --- .../java/com/arcadedb/console/Console.java | 6 +- engine/pom.xml | 8 +- engine/src/main/grammar/SQLGrammar.jjt | 300 +- .../java/com/arcadedb/database/Database.java | 4 +- .../arcadedb/database/DatabaseComparator.java | 2 +- .../arcadedb/database/DatabaseContext.java | 8 + .../arcadedb/database/DatabaseFactory.java | 8 +- .../arcadedb/database/DatabaseInternal.java | 10 +- .../arcadedb/database/DocumentIndexer.java | 2 +- .../arcadedb/database/EmbeddedDatabase.java | 50 +- .../arcadedb/database/ImmutableDocument.java | 10 +- .../arcadedb/database/MutableDocument.java | 14 +- .../arcadedb/database/TransactionContext.java | 26 +- .../async/DatabaseAsyncExecutorImpl.java | 6 +- .../main/java/com/arcadedb/engine/Bucket.java | 54 +- .../com/arcadedb/engine/BucketIterator.java | 12 +- .../java/com/arcadedb/engine/Component.java | 81 + ...nentFactory.java => ComponentFactory.java} | 10 +- .../com/arcadedb/engine/ComponentFile.java | 159 + .../com/arcadedb/engine/DatabaseChecker.java | 4 +- .../java/com/arcadedb/engine/Dictionary.java | 8 +- .../java/com/arcadedb/engine/FileManager.java | 46 +- .../java/com/arcadedb/engine/PageManager.java | 4 +- .../arcadedb/engine/PaginatedComponent.java | 71 +- ...dFile.java => PaginatedComponentFile.java} | 99 +- .../arcadedb/engine/TransactionManager.java | 8 +- .../arcadedb/graph/EdgeIteratorFilter.java | 4 +- .../java/com/arcadedb/graph/GraphEngine.java | 2 +- .../java/com/arcadedb/index/IndexFactory.java | 12 +- .../arcadedb/index/IndexFactoryHandler.java | 8 +- .../com/arcadedb/index/IndexInternal.java | 6 +- .../java/com/arcadedb/index/TypeIndex.java | 10 +- .../index/lsm/LSMTreeFullTextIndex.java | 32 +- .../com/arcadedb/index/lsm/LSMTreeIndex.java | 42 +- .../index/lsm/LSMTreeIndexAbstract.java | 10 +- .../index/lsm/LSMTreeIndexCompacted.java | 6 +- .../index/lsm/LSMTreeIndexMutable.java | 38 +- .../index/vector/HnswVectorIndex.java | 1054 +++ .../index/vector/HnswVectorIndexRAM.java | 1047 +++ .../arcadedb/index/vector/VectorUtils.java | 98 + .../vector/distance/ChebyshevDistance.java | 69 + .../distance/DistanceFunctionFactory.java | 71 + .../sql/executor/CheckClusterTypeStep.java | 4 +- .../executor/CreateEdgeExecutionPlanner.java | 2 +- .../executor/DeleteEdgeExecutionPlanner.java | 2 +- .../executor/FetchFromClassExecutionStep.java | 6 +- .../sql/executor/FilterByClustersStep.java | 2 +- .../sql/executor/InsertExecutionPlanner.java | 2 +- .../sql/executor/MatchEdgeTraverser.java | 2 +- .../sql/executor/MatchExecutionPlanner.java | 2 +- .../sql/executor/SelectExecutionPlanner.java | 20 +- .../executor/TraverseExecutionPlanner.java | 4 +- .../function/DefaultSQLFunctionFactory.java | 4 + .../vector/SQLFunctionVectorNeighbors.java | 75 + .../sql/parser/CreateBucketStatement.java | 2 +- .../sql/parser/CreateIndexStatement.java | 24 +- .../query/sql/parser/DropBucketStatement.java | 2 +- .../query/sql/parser/ParseException.java | 55 +- .../arcadedb/query/sql/parser/SqlParser.java | 6804 +++++++++-------- .../query/sql/parser/SqlParserConstants.java | 307 +- .../sql/parser/SqlParserTokenManager.java | 3545 ++++----- .../com/arcadedb/schema/DocumentType.java | 12 +- .../com/arcadedb/schema/EmbeddedSchema.java | 98 +- .../com/arcadedb/schema/IndexBuilder.java | 92 +- .../arcadedb/schema/ManualIndexBuilder.java | 10 +- .../main/java/com/arcadedb/schema/Schema.java | 10 +- .../main/java/com/arcadedb/schema/Type.java | 28 +- .../com/arcadedb/schema/TypeIndexBuilder.java | 36 +- .../arcadedb/schema/VectorIndexBuilder.java | 281 + .../arcadedb/serializer/BinarySerializer.java | 82 +- .../com/arcadedb/serializer/BinaryTypes.java | 44 +- .../java/com/arcadedb/utility/DateUtils.java | 27 + .../java/com/arcadedb/utility/FileUtils.java | 10 +- .../java/com/arcadedb/utility/JVMUtils.java | 2 +- .../test/java/com/arcadedb/TestHelper.java | 6 +- .../com/arcadedb/database/BucketSQLTest.java | 8 +- .../arcadedb/database/CheckDatabaseTest.java | 2 +- .../com/arcadedb/index/DropIndexTest.java | 4 +- .../sql/MatchStatementExecutionTest.java | 12 +- .../sql/executor/ScriptExecutionTest.java | 5 +- .../SelectStatementExecutionTest.java | 6 +- .../UpdateStatementExecutionTest.java | 5 +- .../collection/SQLMethodTransformTest.java | 6 +- ...tAbstract.java => AbstractParserTest.java} | 7 +- ...> AlterBucketStatementTestParserTest.java} | 2 +- ...AlterDatabaseStatementTestParserTest.java} | 2 +- ...AlterPropertyStatementTestParserTest.java} | 2 +- ...ackupDatabaseStatementTestParserTest.java} | 2 +- ...java => BeginParserTestStatementTest.java} | 2 +- ...CheckDatabaseStatementTestParserTest.java} | 2 +- ...ava => CommitParserTestStatementTest.java} | 2 +- ... CreateBucketStatementTestParserTest.java} | 2 +- ...> CreateIndexStatementTestParserTest.java} | 6 +- ...reatePropertyStatementTestParserTest.java} | 2 +- ...=> CreateTypeStatementTestParserTest.java} | 2 +- ...efineFunctionStatementTestParserTest.java} | 2 +- ...=> DropBucketStatementTestParserTest.java} | 2 +- ... => DropIndexStatementTestParserTest.java} | 2 +- ... DropPropertyStatementTestParserTest.java} | 2 +- ...a => DropTypeStatementTestParserTest.java} | 2 +- ...va => ExplainParserTestStatementTest.java} | 2 +- ...xportDatabaseStatementTestParserTest.java} | 2 +- ...st.java => IfParserTestStatementTest.java} | 2 +- ...mportDatabaseStatementTestParserTest.java} | 2 +- ...t.java => LetParserTestStatementTest.java} | 2 +- ...rnTest.java => PatternTestParserTest.java} | 2 +- ...va => ProfileParserTestStatementTest.java} | 2 +- ... RebuildIndexStatementTestParserTest.java} | 2 +- ...ava => ReturnParserTestStatementTest.java} | 2 +- ...a => RollbackParserTestStatementTest.java} | 2 +- ...java => SleepParserTestStatementTest.java} | 2 +- ...runcateBucketStatementTestParserTest.java} | 2 +- ...runcateRecordStatementTestParserTest.java} | 2 +- ... TruncateTypeStatementTestParserTest.java} | 2 +- .../com/arcadedb/schema/DropTypeTest.java | 4 +- .../arcadedb/serializer/SerializerTest.java | 55 + .../PerformanceIndexCompaction.java | 4 +- .../PerformanceVertexIndexTest.java | 4 +- .../exporter/GraphMLExporterIT.java | 4 +- .../exporter/GraphSONExporterIT.java | 4 +- .../backup/format/FullBackupFormat.java | 10 +- .../importer/AbstractImporter.java | 49 +- .../integration/importer/Importer.java | 6 +- .../integration/importer/SourceDiscovery.java | 110 +- .../importer/format/FormatImporter.java | 58 +- .../importer/format/GloVeImporterFormat.java | 75 + .../format/Word2VecImporterFormat.java | 77 + .../importer/vector/TextDoublesEmbedding.java | 56 + .../vector/TextEmbeddingsImporter.java | 288 + .../importer/vector/TextFloatsEmbedding.java | 56 + .../vector/TextIntegersEmbedding.java | 56 + .../importer/vector/TextLongsEmbedding.java | 56 + .../importer/vector/TextShortsEmbedding.java | 56 + .../integration/backup/FullBackupIT.java | 12 +- .../integration/importer/GloVeImporterIT.java | 55 + .../integration/importer/JSONImporterIT.java | 2 +- .../importer/OrientDBImporterIT.java | 2 +- .../importer/Word2VecImporterIT.java | 54 + .../importer/vector/FastTextDatabase.java | 170 + .../importer/vector/GloVeTest.java | 179 + .../src/test/resources/importer-glove.txt | 10 + .../src/test/resources/importer-word2vec.txt | 11 + .../com/arcadedb/server/ArcadeDBServer.java | 14 +- .../com/arcadedb/server/ServerDatabase.java | 8 +- .../ha/Replica2LeaderNetworkExecutor.java | 4 +- .../server/ha/ReplicatedDatabase.java | 20 +- .../ha/message/CommandForwardResponse.java | 2 +- .../ha/message/DatabaseAlignRequest.java | 4 +- .../DatabaseChangeStructureRequest.java | 6 +- .../ha/message/DatabaseStructureRequest.java | 4 +- .../server/ha/message/FileContentRequest.java | 48 +- .../ha/message/FileContentResponse.java | 47 +- .../arcadedb/server/ha/message/TxRequest.java | 4 +- .../http/handler/AbstractQueryHandler.java | 2 +- .../http/handler/DatabaseAbstractHandler.java | 6 +- .../http/handler/GetDatabasesHandler.java | 4 +- .../handler/PostCreateDatabaseHandler.java | 4 +- .../handler/PostCreateDocumentHandler.java | 2 +- .../http/handler/PostCreateUserHandler.java | 2 +- .../handler/PostServerCommandHandler.java | 4 +- .../server/http/ssl/KeystoreType.java | 2 +- .../arcadedb/server/http/ssl/SslUtils.java | 11 +- .../http/ws/WebSocketReceiveListener.java | 4 +- .../security/SecurityGroupFileRepository.java | 4 +- .../server/security/ServerSecurity.java | 4 +- .../security/ServerSecurityDatabaseUser.java | 4 +- .../server/security/ServerSecurityUser.java | 2 +- .../server/ServerDefaultDatabasesIT.java | 4 +- .../server/ServerReadOnlyDatabasesIT.java | 2 +- .../server/ha/IndexOperations3ServersIT.java | 2 +- .../server/ha/ReplicationChangeSchemaIT.java | 6 +- .../server/security/ServerProfilingIT.java | 6 +- .../server/security/ServerSecurityIT.java | 2 +- 173 files changed, 10757 insertions(+), 6244 deletions(-) create mode 100644 engine/src/main/java/com/arcadedb/engine/Component.java rename engine/src/main/java/com/arcadedb/engine/{PaginatedComponentFactory.java => ComponentFactory.java} (78%) create mode 100644 engine/src/main/java/com/arcadedb/engine/ComponentFile.java rename engine/src/main/java/com/arcadedb/engine/{PaginatedFile.java => PaginatedComponentFile.java} (73%) create mode 100644 engine/src/main/java/com/arcadedb/index/vector/HnswVectorIndex.java create mode 100644 engine/src/main/java/com/arcadedb/index/vector/HnswVectorIndexRAM.java create mode 100644 engine/src/main/java/com/arcadedb/index/vector/VectorUtils.java create mode 100644 engine/src/main/java/com/arcadedb/index/vector/distance/ChebyshevDistance.java create mode 100644 engine/src/main/java/com/arcadedb/index/vector/distance/DistanceFunctionFactory.java create mode 100644 engine/src/main/java/com/arcadedb/query/sql/function/vector/SQLFunctionVectorNeighbors.java create mode 100644 engine/src/main/java/com/arcadedb/schema/VectorIndexBuilder.java rename engine/src/test/java/com/arcadedb/query/sql/parser/{ParserTestAbstract.java => AbstractParserTest.java} (93%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{AlterBucketStatementTest.java => AlterBucketStatementTestParserTest.java} (93%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{AlterDatabaseStatementTest.java => AlterDatabaseStatementTestParserTest.java} (94%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{AlterPropertyStatementTest.java => AlterPropertyStatementTestParserTest.java} (92%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{BackupDatabaseStatementTest.java => BackupDatabaseStatementTestParserTest.java} (94%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{BeginStatementTest.java => BeginParserTestStatementTest.java} (93%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{CheckDatabaseStatementTest.java => CheckDatabaseStatementTestParserTest.java} (94%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{CommitStatementTest.java => CommitParserTestStatementTest.java} (97%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{CreateBucketStatementTest.java => CreateBucketStatementTestParserTest.java} (93%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{CreateIndexStatementTest.java => CreateIndexStatementTestParserTest.java} (81%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{CreatePropertyStatementTest.java => CreatePropertyStatementTestParserTest.java} (95%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{CreateTypeStatementTest.java => CreateTypeStatementTestParserTest.java} (95%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{DefineFunctionStatementTest.java => DefineFunctionStatementTestParserTest.java} (88%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{DropBucketStatementTest.java => DropBucketStatementTestParserTest.java} (94%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{DropIndexStatementTest.java => DropIndexStatementTestParserTest.java} (94%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{DropPropertyStatementTest.java => DropPropertyStatementTestParserTest.java} (95%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{DropTypeStatementTest.java => DropTypeStatementTestParserTest.java} (95%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{ExplainStatementTest.java => ExplainParserTestStatementTest.java} (93%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{ExportDatabaseStatementTest.java => ExportDatabaseStatementTestParserTest.java} (94%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{IfStatementTest.java => IfParserTestStatementTest.java} (95%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{ImportDatabaseStatementTest.java => ImportDatabaseStatementTestParserTest.java} (94%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{LetStatementTest.java => LetParserTestStatementTest.java} (95%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{PatternTest.java => PatternTestParserTest.java} (98%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{ProfileStatementTest.java => ProfileParserTestStatementTest.java} (94%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{RebuildIndexStatementTest.java => RebuildIndexStatementTestParserTest.java} (94%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{ReturnStatementTest.java => ReturnParserTestStatementTest.java} (94%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{RollbackStatementTest.java => RollbackParserTestStatementTest.java} (92%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{SleepStatementTest.java => SleepParserTestStatementTest.java} (93%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{TruncateBucketStatementTest.java => TruncateBucketStatementTestParserTest.java} (93%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{TruncateRecordStatementTest.java => TruncateRecordStatementTestParserTest.java} (93%) rename engine/src/test/java/com/arcadedb/query/sql/parser/{TruncateTypeStatementTest.java => TruncateTypeStatementTestParserTest.java} (95%) create mode 100644 integration/src/main/java/com/arcadedb/integration/importer/format/GloVeImporterFormat.java create mode 100644 integration/src/main/java/com/arcadedb/integration/importer/format/Word2VecImporterFormat.java create mode 100644 integration/src/main/java/com/arcadedb/integration/importer/vector/TextDoublesEmbedding.java create mode 100644 integration/src/main/java/com/arcadedb/integration/importer/vector/TextEmbeddingsImporter.java create mode 100644 integration/src/main/java/com/arcadedb/integration/importer/vector/TextFloatsEmbedding.java create mode 100644 integration/src/main/java/com/arcadedb/integration/importer/vector/TextIntegersEmbedding.java create mode 100644 integration/src/main/java/com/arcadedb/integration/importer/vector/TextLongsEmbedding.java create mode 100644 integration/src/main/java/com/arcadedb/integration/importer/vector/TextShortsEmbedding.java create mode 100644 integration/src/test/java/com/arcadedb/integration/importer/GloVeImporterIT.java create mode 100644 integration/src/test/java/com/arcadedb/integration/importer/Word2VecImporterIT.java create mode 100644 integration/src/test/java/com/arcadedb/integration/importer/vector/FastTextDatabase.java create mode 100644 integration/src/test/java/com/arcadedb/integration/importer/vector/GloVeTest.java create mode 100644 integration/src/test/resources/importer-glove.txt create mode 100644 integration/src/test/resources/importer-word2vec.txt diff --git a/console/src/main/java/com/arcadedb/console/Console.java b/console/src/main/java/com/arcadedb/console/Console.java index c869f5319..9207d8d38 100644 --- a/console/src/main/java/com/arcadedb/console/Console.java +++ b/console/src/main/java/com/arcadedb/console/Console.java @@ -28,7 +28,7 @@ import com.arcadedb.database.Document; import com.arcadedb.database.TransactionContext; import com.arcadedb.database.async.AsyncResultsetCallback; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.graph.Edge; import com.arcadedb.graph.Vertex; import com.arcadedb.integration.misc.IntegrationUtils; @@ -409,9 +409,9 @@ private void executeConnect(final String url) { checkDatabaseIsLocked(localUrl); - PaginatedFile.MODE mode = PaginatedFile.MODE.READ_WRITE; + ComponentFile.MODE mode = ComponentFile.MODE.READ_WRITE; if (urlParts.length > 1) - mode = PaginatedFile.MODE.valueOf(urlParts[1].toUpperCase()); + mode = ComponentFile.MODE.valueOf(urlParts[1].toUpperCase()); databaseFactory = new DatabaseFactory(localUrl); databaseProxy = databaseFactory.setAutoTransaction(true).open(mode); diff --git a/engine/pom.xml b/engine/pom.xml index 333283234..1c15e72e1 100644 --- a/engine/pom.xml +++ b/engine/pom.xml @@ -39,6 +39,7 @@ 1.8.0 8.11.2 22.3.2 + 1.1.0 @@ -131,7 +132,11 @@ com.google.code.gson gson ${gson.version} - compile + + + com.github.jelmerk + hnswlib-core + ${hnswlib.version} org.graalvm.sdk @@ -145,5 +150,4 @@ runtime - diff --git a/engine/src/main/grammar/SQLGrammar.jjt b/engine/src/main/grammar/SQLGrammar.jjt index e4c248322..b0e293199 100644 --- a/engine/src/main/grammar/SQLGrammar.jjt +++ b/engine/src/main/grammar/SQLGrammar.jjt @@ -29,9 +29,8 @@ PARSER_BEGIN(SqlParser) package com.arcadedb.query.sql.parser; -import java.io.InputStream; -import java.util.List; -import java.util.ArrayList; +import java.io.*; +import java.util.*; import javax.annotation.processing.Generated; import com.arcadedb.database.Database; import com.arcadedb.exception.CommandParsingException; @@ -43,6 +42,12 @@ public class SqlParser { private int inputParamCount = 0; private Database database; + private String command; + + public SqlParser(final Database database, final String command) { + this(database, new ByteArrayInputStream(command.getBytes())); + this.command = command; + } public SqlParser(final Database database, final InputStream stream) { this(new JavaCharStream(stream)); @@ -276,6 +281,8 @@ TOKEN: | < ENGINE: ("E"|"e")("N"|"n")("G"|"g")("I"|"i")("N"|"n")("E"|"e")> | + < METADATA: ("M"|"m")("E"|"e")("T"|"t")("A"|"a")("D"|"d")("A"|"a")("T"|"t")("A"|"a")> + | < REBUILD: ("R"|"r")("E"|"e")("B"|"b")("U"|"u")("I"|"i")("L"|"l")("D"|"d")> | < FORMAT: ("F"|"f")("O"|"o")("R"|"r")("M"|"m")("A"|"a")("T"|"t") > @@ -804,12 +811,12 @@ Identifier Identifier(): | token = | - token = - | token = | token = | + token = + | token = | token = @@ -2856,7 +2863,6 @@ BooleanExpression MatchesCondition(): | ( jjtThis.rightParam = InputParameter() ) ) - {return jjtThis;} } @@ -3025,7 +3031,6 @@ java.lang.Number Wait(): { return val.getValue(); } } - java.lang.Number Retry(): { PInteger val; } { @@ -3033,19 +3038,12 @@ java.lang.Number Retry(): { return val.getValue(); } } - - - - - - PCollection PCollection(): { Expression lastExpression; } { ( - [ lastExpression = Expression() { jjtThis.expressions.add(lastExpression); } @@ -3197,45 +3195,43 @@ MatchPathItem MultiMatchPathItemArrows(): MatchPathItem nextItem = null; } { + + ( - - ( - ( - LOOKAHEAD( OutPathItemOpt() ) - nextItem = OutPathItemOpt() { jjtThis.items.add(nextItem); } - | - LOOKAHEAD( InPathItemOpt() ) - nextItem = InPathItemOpt() { jjtThis.items.add(nextItem); } - | - LOOKAHEAD( BothPathItemOpt() ) - nextItem = BothPathItemOpt() { jjtThis.items.add(nextItem); } - ){ - if(prevItem !=null && prevItem.filter == null){ - throw new CommandParsingException("MATCH sub-pattern with no square brackets"); - } - prevItem = nextItem; + LOOKAHEAD( OutPathItemOpt() ) + nextItem = OutPathItemOpt() { jjtThis.items.add(nextItem); } + | + LOOKAHEAD( InPathItemOpt() ) + nextItem = InPathItemOpt() { jjtThis.items.add(nextItem); } + | + LOOKAHEAD( BothPathItemOpt() ) + nextItem = BothPathItemOpt() { jjtThis.items.add(nextItem); } + ){ + if(prevItem !=null && prevItem.filter == null){ + throw new CommandParsingException("MATCH sub-pattern with no square brackets"); } - )+ - - [ jjtThis.filter = MatchFilter() ] - ){ return jjtThis; } + prevItem = nextItem; + } + )+ + + [ jjtThis.filter = MatchFilter() ] + { return jjtThis; } } MatchFilter MatchFilter(): { MatchFilterItem lastItem = null; } { - ( - - [ + + [ + lastItem = MatchFilterItem() { jjtThis.items.add(lastItem); } + ( + lastItem = MatchFilterItem() { jjtThis.items.add(lastItem); } - ( - - lastItem = MatchFilterItem() { jjtThis.items.add(lastItem); } - )* - ] - - ) { return jjtThis; } + )* + ] + + { return jjtThis; } } MatchFilterItem MatchFilterItem(): @@ -3534,25 +3530,23 @@ CreateDocumentTypeStatement CreateDocumentTypeStatement(): } { - ( - jjtThis.name = Identifier() - [ { jjtThis.ifNotExists = true; }] - [ - lastIdentifier = Identifier() { jjtThis.supertypes = new ArrayList(); jjtThis.supertypes.add(lastIdentifier); } - ( - - lastIdentifier = Identifier() { jjtThis.supertypes.add(lastIdentifier); } - )* - ] - [ - lastBucket = BucketIdentifier() { jjtThis.buckets = new ArrayList(); jjtThis.buckets.add(lastBucket); } - ( - - lastBucket = BucketIdentifier() { jjtThis.buckets.add(lastBucket); } - )* - ] - [ jjtThis.totalBucketNo = PInteger() ] - ) + jjtThis.name = Identifier() + [ { jjtThis.ifNotExists = true; } ] + [ + lastIdentifier = Identifier() { jjtThis.supertypes = new ArrayList(); jjtThis.supertypes.add(lastIdentifier); } + ( + + lastIdentifier = Identifier() { jjtThis.supertypes.add(lastIdentifier); } + )* + ] + [ + lastBucket = BucketIdentifier() { jjtThis.buckets = new ArrayList(); jjtThis.buckets.add(lastBucket); } + ( + + lastBucket = BucketIdentifier() { jjtThis.buckets.add(lastBucket); } + )* + ] + [ jjtThis.totalBucketNo = PInteger() ] { return jjtThis; } } @@ -3563,25 +3557,23 @@ CreateVertexTypeStatement CreateVertexTypeStatement(): } { - ( - jjtThis.name = Identifier() - [ { jjtThis.ifNotExists = true; }] - [ - lastIdentifier = Identifier() { jjtThis.supertypes = new ArrayList(); jjtThis.supertypes.add(lastIdentifier); } - ( - - lastIdentifier = Identifier() { jjtThis.supertypes.add(lastIdentifier); } - )* - ] - [ - lastBucket = BucketIdentifier() { jjtThis.buckets = new ArrayList(); jjtThis.buckets.add(lastBucket); } - ( - - lastBucket = BucketIdentifier() { jjtThis.buckets.add(lastBucket); } - )* - ] - [ jjtThis.totalBucketNo = PInteger() ] - ) + jjtThis.name = Identifier() + [ { jjtThis.ifNotExists = true; } ] + [ + lastIdentifier = Identifier() { jjtThis.supertypes = new ArrayList(); jjtThis.supertypes.add(lastIdentifier); } + ( + + lastIdentifier = Identifier() { jjtThis.supertypes.add(lastIdentifier); } + )* + ] + [ + lastBucket = BucketIdentifier() { jjtThis.buckets = new ArrayList(); jjtThis.buckets.add(lastBucket); } + ( + + lastBucket = BucketIdentifier() { jjtThis.buckets.add(lastBucket); } + )* + ] + [ jjtThis.totalBucketNo = PInteger() ] { return jjtThis; } } @@ -3592,25 +3584,23 @@ CreateEdgeTypeStatement CreateEdgeTypeStatement(): } { - ( - jjtThis.name = Identifier() - [ { jjtThis.ifNotExists = true; }] - [ - lastIdentifier = Identifier() { jjtThis.supertypes = new ArrayList(); jjtThis.supertypes.add(lastIdentifier); } - ( - - lastIdentifier = Identifier() { jjtThis.supertypes.add(lastIdentifier); } - )* - ] - [ - lastBucket = BucketIdentifier() { jjtThis.buckets = new ArrayList(); jjtThis.buckets.add(lastBucket); } - ( - - lastBucket = BucketIdentifier() { jjtThis.buckets.add(lastBucket); } - )* - ] - [ jjtThis.totalBucketNo = PInteger() ] - ) + jjtThis.name = Identifier() + [ { jjtThis.ifNotExists = true; } ] + [ + lastIdentifier = Identifier() { jjtThis.supertypes = new ArrayList(); jjtThis.supertypes.add(lastIdentifier); } + ( + + lastIdentifier = Identifier() { jjtThis.supertypes.add(lastIdentifier); } + )* + ] + [ + lastBucket = BucketIdentifier() { jjtThis.buckets = new ArrayList(); jjtThis.buckets.add(lastBucket); } + ( + + lastBucket = BucketIdentifier() { jjtThis.buckets.add(lastBucket); } + )* + ] + [ jjtThis.totalBucketNo = PInteger() ] { return jjtThis; } } @@ -3870,7 +3860,7 @@ CreateIndexStatement CreateIndexStatement(): [ LOOKAHEAD(2) ( - jjtThis.schema = Json() + jjtThis.metadata = Json() ) | ( @@ -3878,14 +3868,14 @@ CreateIndexStatement CreateIndexStatement(): ( lastIdentifier = Identifier() {jjtThis.keyTypes.add(lastIdentifier);} )* - [ jjtThis.schema = Json() ] + [ jjtThis.metadata = Json() ] ) ] | [ LOOKAHEAD(2) ( - jjtThis.schema = Json() + jjtThis.metadata = Json() ) | ( @@ -3893,7 +3883,7 @@ CreateIndexStatement CreateIndexStatement(): ( lastIdentifier = Identifier() {jjtThis.keyTypes.add(lastIdentifier);} )* - [ jjtThis.schema = Json() ] + [ jjtThis.metadata = Json() ] ) ] ) @@ -3928,6 +3918,14 @@ RebuildIndexStatement RebuildIndexStatement(): )* ] ) + [ + + jjtThis.key = Expression() jjtThis.value = Expression() { jjtThis.settings.put( jjtThis.key, jjtThis.value ); } + ( + + jjtThis.key = Expression() jjtThis.value = Expression() { jjtThis.settings.put( jjtThis.key, jjtThis.value ); } + )* + ] { return jjtThis; } } @@ -4051,7 +4049,7 @@ CommitStatement CommitStatement(): ] ) | - ( ( { jjtThis.elseFail = false; } ) | ( { jjtThis.elseFail = true; } ) ) + ( { jjtThis.elseFail = false; } ) | ( { jjtThis.elseFail = true; } ) ) ] ] @@ -4223,9 +4221,7 @@ Url Url(): BackupDatabaseStatement BackupDatabaseStatement(): { } { - ( - [ jjtThis.url = Url() ] - ) + [ jjtThis.url = Url() ] {return jjtThis; } } @@ -4236,19 +4232,17 @@ CheckDatabaseStatement CheckDatabaseStatement(): } { - ( - [ - lastType = Identifier() { jjtThis.types.add(lastType); } - ( lastType = Identifier() { jjtThis.types.add(lastType); } )* - ] - [ lastBucket = BucketIdentifier() { jjtThis.buckets.add(lastBucket); } - ( - - lastBucket = BucketIdentifier() { jjtThis.buckets.add(lastBucket); } - )* - ] - [ { jjtThis.fix = true; } ] - ) + [ + lastType = Identifier() { jjtThis.types.add(lastType); } + ( lastType = Identifier() { jjtThis.types.add(lastType); } )* + ] + [ lastBucket = BucketIdentifier() { jjtThis.buckets.add(lastBucket); } + ( + + lastBucket = BucketIdentifier() { jjtThis.buckets.add(lastBucket); } + )* + ] + [ { jjtThis.fix = true; } ] {return jjtThis; } } @@ -4258,9 +4252,7 @@ AlignDatabaseStatement AlignDatabaseStatement(): String lastType; } { - ( - - ) + {return jjtThis; } } @@ -4270,33 +4262,31 @@ DefineFunctionStatement DefineFunctionStatement(): Identifier lastIdentifier; } { + + jjtThis.libraryName = Identifier() + + jjtThis.functionName = Identifier() ( - - jjtThis.libraryName = Identifier() - - jjtThis.functionName = Identifier() - ( - jjtThis.codeQuoted = PString() - { jjtThis.code = jjtThis.codeQuoted.substring(1, jjtThis.codeQuoted.length() -1); } - ) - [ - - - lastIdentifier = Identifier() { - jjtThis.parameters = new ArrayList(); - jjtThis.parameters.add(lastIdentifier); - } - ( - - lastIdentifier = Identifier() { jjtThis.parameters.add(lastIdentifier); } - )* - - ] - [ - - jjtThis.language = Identifier() - ] + jjtThis.codeQuoted = PString() + { jjtThis.code = jjtThis.codeQuoted.substring(1, jjtThis.codeQuoted.length() -1); } ) + [ + + + lastIdentifier = Identifier() { + jjtThis.parameters = new ArrayList(); + jjtThis.parameters.add(lastIdentifier); + } + ( + + lastIdentifier = Identifier() { jjtThis.parameters.add(lastIdentifier); } + )* + + ] + [ + + jjtThis.language = Identifier() + ] { return jjtThis; } } @@ -4306,11 +4296,9 @@ DeleteFunctionStatement DeleteFunctionStatement(): Identifier lastIdentifier; } { - ( - - jjtThis.libraryName = Identifier() - - jjtThis.functionName = Identifier() - ) + + jjtThis.libraryName = Identifier() + + jjtThis.functionName = Identifier() { return jjtThis; } } diff --git a/engine/src/main/java/com/arcadedb/database/Database.java b/engine/src/main/java/com/arcadedb/database/Database.java index 756218c1a..7d9ef6799 100644 --- a/engine/src/main/java/com/arcadedb/database/Database.java +++ b/engine/src/main/java/com/arcadedb/database/Database.java @@ -21,8 +21,8 @@ import com.arcadedb.ContextConfiguration; import com.arcadedb.database.async.DatabaseAsyncExecutor; import com.arcadedb.database.async.NewEdgeCallback; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.engine.ErrorRecordCallback; -import com.arcadedb.engine.PaginatedFile; import com.arcadedb.engine.WALFile; import com.arcadedb.graph.Edge; import com.arcadedb.graph.Vertex; @@ -41,7 +41,7 @@ enum TRANSACTION_ISOLATION_LEVEL { ContextConfiguration getConfiguration(); - PaginatedFile.MODE getMode(); + ComponentFile.MODE getMode(); DatabaseAsyncExecutor async(); diff --git a/engine/src/main/java/com/arcadedb/database/DatabaseComparator.java b/engine/src/main/java/com/arcadedb/database/DatabaseComparator.java index c76089851..edd40408e 100644 --- a/engine/src/main/java/com/arcadedb/database/DatabaseComparator.java +++ b/engine/src/main/java/com/arcadedb/database/DatabaseComparator.java @@ -81,7 +81,7 @@ public void compareBuckets(final DatabaseInternal db1, final DatabaseInternal db // AT THIS POINT BOTH BUCKETS HAVE THE SAME PAGES final int pageSize = bucket1.getPageSize(); for (int i = 0; i < bucket1.getTotalPages(); ++i) { - final PageId pageId = new PageId(bucket1.getId(), i); + final PageId pageId = new PageId(bucket1.getFileId(), i); final ImmutablePage page1; final ImmutablePage page2; diff --git a/engine/src/main/java/com/arcadedb/database/DatabaseContext.java b/engine/src/main/java/com/arcadedb/database/DatabaseContext.java index bffe81191..5e93ee6c9 100644 --- a/engine/src/main/java/com/arcadedb/database/DatabaseContext.java +++ b/engine/src/main/java/com/arcadedb/database/DatabaseContext.java @@ -18,6 +18,7 @@ */ package com.arcadedb.database; +import com.arcadedb.exception.DatabaseOperationException; import com.arcadedb.exception.TransactionException; import com.arcadedb.security.SecurityDatabaseUser; @@ -70,6 +71,13 @@ public DatabaseContextTL init(final DatabaseInternal database, final Transaction } public DatabaseContextTL getContext(final String name) { + final DatabaseContextTL ctx = getContextIfExists(name); + if (ctx == null) + throw new DatabaseOperationException("Transaction context not found on current thread"); + return ctx; + } + + public DatabaseContextTL getContextIfExists(final String name) { final Map map = get(); return map != null ? map.get(name) : null; } diff --git a/engine/src/main/java/com/arcadedb/database/DatabaseFactory.java b/engine/src/main/java/com/arcadedb/database/DatabaseFactory.java index cc8c40416..806c76178 100644 --- a/engine/src/main/java/com/arcadedb/database/DatabaseFactory.java +++ b/engine/src/main/java/com/arcadedb/database/DatabaseFactory.java @@ -19,7 +19,7 @@ package com.arcadedb.database; import com.arcadedb.ContextConfiguration; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.exception.DatabaseOperationException; import com.arcadedb.schema.EmbeddedSchema; import com.arcadedb.security.SecurityManager; @@ -65,10 +65,10 @@ public String getDatabasePath() { } public Database open() { - return open(PaginatedFile.MODE.READ_WRITE); + return open(ComponentFile.MODE.READ_WRITE); } - public synchronized Database open(final PaginatedFile.MODE mode) { + public synchronized Database open(final ComponentFile.MODE mode) { checkForActiveInstance(databasePath); final EmbeddedDatabase database = new EmbeddedDatabase(databasePath, mode, contextConfiguration, security, callbacks); @@ -83,7 +83,7 @@ public synchronized Database open(final PaginatedFile.MODE mode) { public synchronized Database create() { checkForActiveInstance(databasePath); - final EmbeddedDatabase database = new EmbeddedDatabase(databasePath, PaginatedFile.MODE.READ_WRITE, contextConfiguration, security, callbacks); + final EmbeddedDatabase database = new EmbeddedDatabase(databasePath, ComponentFile.MODE.READ_WRITE, contextConfiguration, security, callbacks); database.setAutoTransaction(autoTransaction); database.create(); diff --git a/engine/src/main/java/com/arcadedb/database/DatabaseInternal.java b/engine/src/main/java/com/arcadedb/database/DatabaseInternal.java index bc4aa15c6..d05f0d002 100644 --- a/engine/src/main/java/com/arcadedb/database/DatabaseInternal.java +++ b/engine/src/main/java/com/arcadedb/database/DatabaseInternal.java @@ -22,6 +22,7 @@ import com.arcadedb.engine.PageManager; import com.arcadedb.engine.TransactionManager; import com.arcadedb.engine.WALFileFactory; +import com.arcadedb.exception.TransactionException; import com.arcadedb.graph.GraphEngine; import com.arcadedb.query.sql.parser.ExecutionPlanCache; import com.arcadedb.query.sql.parser.StatementCache; @@ -40,7 +41,14 @@ enum CALLBACK_EVENT { TX_AFTER_WAL_WRITE, DB_NOT_CLOSED } - TransactionContext getTransaction(); + default TransactionContext getTransaction() { + final TransactionContext tx = getTransactionIfExists(); + if (tx == null) + throw new TransactionException("Transaction not started on current thread"); + return tx; + } + + TransactionContext getTransactionIfExists(); MutableEmbeddedDocument newEmbeddedDocument(EmbeddedModifier modifier, String typeName); diff --git a/engine/src/main/java/com/arcadedb/database/DocumentIndexer.java b/engine/src/main/java/com/arcadedb/database/DocumentIndexer.java index 0b1cd7cb8..5fc2fcf68 100644 --- a/engine/src/main/java/com/arcadedb/database/DocumentIndexer.java +++ b/engine/src/main/java/com/arcadedb/database/DocumentIndexer.java @@ -55,7 +55,7 @@ public void createDocument(final Document record, final DocumentType type, final throw new IllegalArgumentException("Cannot index a non persistent record"); // INDEX THE RECORD - final List metadata = type.getPolymorphicBucketIndexByBucketId(bucket.getId(), null); + final List metadata = type.getPolymorphicBucketIndexByBucketId(bucket.getFileId(), null); for (final Index entry : metadata) addToIndex(entry, rid, record); } diff --git a/engine/src/main/java/com/arcadedb/database/EmbeddedDatabase.java b/engine/src/main/java/com/arcadedb/database/EmbeddedDatabase.java index 0cd3e6812..03f531de5 100644 --- a/engine/src/main/java/com/arcadedb/database/EmbeddedDatabase.java +++ b/engine/src/main/java/com/arcadedb/database/EmbeddedDatabase.java @@ -26,11 +26,11 @@ import com.arcadedb.database.async.ErrorCallback; import com.arcadedb.database.async.OkCallback; import com.arcadedb.engine.Bucket; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.engine.Dictionary; import com.arcadedb.engine.ErrorRecordCallback; import com.arcadedb.engine.FileManager; import com.arcadedb.engine.PageManager; -import com.arcadedb.engine.PaginatedFile; import com.arcadedb.engine.TransactionManager; import com.arcadedb.engine.WALFile; import com.arcadedb.engine.WALFileFactory; @@ -56,6 +56,7 @@ import com.arcadedb.index.TypeIndex; import com.arcadedb.index.lsm.LSMTreeIndexCompacted; import com.arcadedb.index.lsm.LSMTreeIndexMutable; +import com.arcadedb.index.vector.HnswVectorIndex; import com.arcadedb.log.LogManager; import com.arcadedb.query.QueryEngine; import com.arcadedb.query.QueryEngineManager; @@ -89,10 +90,10 @@ public class EmbeddedDatabase extends RWLockContext implements DatabaseInternal public static final int MAX_RECOMMENDED_EDGE_LIST_CHUNK_SIZE = 8192; private static final Set SUPPORTED_FILE_EXT = Set.of(Dictionary.DICT_EXT, Bucket.BUCKET_EXT, LSMTreeIndexMutable.NOTUNIQUE_INDEX_EXT, LSMTreeIndexMutable.UNIQUE_INDEX_EXT, LSMTreeIndexCompacted.NOTUNIQUE_INDEX_EXT, - LSMTreeIndexCompacted.UNIQUE_INDEX_EXT); + LSMTreeIndexCompacted.UNIQUE_INDEX_EXT, HnswVectorIndex.FILE_EXT); public final AtomicLong indexCompactions = new AtomicLong(); protected final String name; - protected final PaginatedFile.MODE mode; + protected final ComponentFile.MODE mode; protected final ContextConfiguration configuration; protected final String databasePath; protected final BinarySerializer serializer; @@ -127,7 +128,7 @@ public class EmbeddedDatabase extends RWLockContext implements DatabaseInternal private final ConcurrentHashMap reusableQueryEngines = new ConcurrentHashMap<>(); private TRANSACTION_ISOLATION_LEVEL transactionIsolationLevel = TRANSACTION_ISOLATION_LEVEL.READ_COMMITTED; - protected EmbeddedDatabase(final String path, final PaginatedFile.MODE mode, final ContextConfiguration configuration, final SecurityManager security, + protected EmbeddedDatabase(final String path, final ComponentFile.MODE mode, final ContextConfiguration configuration, final SecurityManager security, final Map>> callbacks) { try { this.mode = mode; @@ -135,7 +136,7 @@ protected EmbeddedDatabase(final String path, final PaginatedFile.MODE mode, fin this.security = security; this.callbacks = callbacks; this.serializer = new BinarySerializer(configuration); - this.walFactory = mode == PaginatedFile.MODE.READ_WRITE ? new WALFileFactoryEmbedded() : null; + this.walFactory = mode == ComponentFile.MODE.READ_WRITE ? new WALFileFactoryEmbedded() : null; this.statementCache = new StatementCache(this, configuration.getValueAsInteger(GlobalConfiguration.SQL_STATEMENT_CACHE)); this.executionPlanCache = new ExecutionPlanCache(this, configuration.getValueAsInteger(GlobalConfiguration.SQL_STATEMENT_CACHE)); @@ -172,7 +173,7 @@ protected void open() { if (configurationFile.exists()) { try { - final String content = FileUtils.readFileAsString(configurationFile, "UTF8"); + final String content = FileUtils.readFileAsString(configurationFile); configuration.reset(); configuration.fromJSON(content); } catch (final IOException e) { @@ -209,7 +210,7 @@ public void drop() { if (isTransactionActive()) throw new SchemaException("Cannot drop the database in transaction"); - if (mode == PaginatedFile.MODE.READ_ONLY) + if (mode == ComponentFile.MODE.READ_ONLY) throw new DatabaseIsReadOnlyException("Cannot drop database"); internalClose(true); @@ -290,15 +291,15 @@ public String getDatabasePath() { @Override public String getCurrentUserName() { - final DatabaseContext.DatabaseContextTL dbContext = DatabaseContext.INSTANCE.getContext(databasePath); + final DatabaseContext.DatabaseContextTL dbContext = DatabaseContext.INSTANCE.getContextIfExists(databasePath); if (dbContext == null) return null; final SecurityDatabaseUser user = dbContext.getCurrentUser(); return user != null ? user.getName() : null; } - public TransactionContext getTransaction() { - final DatabaseContext.DatabaseContextTL dbContext = DatabaseContext.INSTANCE.getContext(databasePath); + public TransactionContext getTransactionIfExists() { + final DatabaseContext.DatabaseContextTL dbContext = DatabaseContext.INSTANCE.getContextIfExists(databasePath); if (dbContext != null) { final TransactionContext tx = dbContext.getLastTransaction(); if (tx != null) { @@ -318,6 +319,7 @@ public TransactionContext getTransaction() { return tx; } } + return null; } @@ -489,7 +491,7 @@ public void scanBucket(final String bucketName, final RecordCallback callback, f checkDatabaseIsOpen(); - final String typeName = schema.getTypeNameByBucketId(schema.getBucketByName(bucketName).getId()); + final String typeName = schema.getTypeNameByBucketId(schema.getBucketByName(bucketName).getFileId()); schema.getBucketByName(bucketName).scan((rid, view) -> { final Record record = recordFactory.newImmutableRecord(wrappedDatabaseInstance, schema.getType(typeName), rid, view, null); return callback.onRecord(record); @@ -541,7 +543,7 @@ public void checkPermissionsOnDatabase(final SecurityDatabaseUser.DATABASE_ACCES if (security == null) return; - final DatabaseContext.DatabaseContextTL dbContext = DatabaseContext.INSTANCE.getContext(databasePath); + final DatabaseContext.DatabaseContextTL dbContext = DatabaseContext.INSTANCE.getContextIfExists(databasePath); if (dbContext == null) return; final SecurityDatabaseUser user = dbContext.getCurrentUser(); @@ -559,7 +561,7 @@ public void checkPermissionsOnFile(final int fileId, final SecurityDatabaseUser. if (security == null) return; - final DatabaseContext.DatabaseContextTL dbContext = DatabaseContext.INSTANCE.getContext(databasePath); + final DatabaseContext.DatabaseContextTL dbContext = DatabaseContext.INSTANCE.getContextIfExists(databasePath); if (dbContext == null) return; final SecurityDatabaseUser user = dbContext.getCurrentUser(); @@ -582,7 +584,7 @@ public long getResultSetLimit() { if (security == null) return -1L; - final DatabaseContext.DatabaseContextTL dbContext = DatabaseContext.INSTANCE.getContext(databasePath); + final DatabaseContext.DatabaseContextTL dbContext = DatabaseContext.INSTANCE.getContextIfExists(databasePath); if (dbContext == null) return -1L; final SecurityDatabaseUser user = dbContext.getCurrentUser(); @@ -597,7 +599,7 @@ public long getReadTimeout() { if (security == null) return -1L; - final DatabaseContext.DatabaseContextTL dbContext = DatabaseContext.INSTANCE.getContext(databasePath); + final DatabaseContext.DatabaseContextTL dbContext = DatabaseContext.INSTANCE.getContextIfExists(databasePath); if (dbContext == null) return -1L; final SecurityDatabaseUser user = dbContext.getCurrentUser(); @@ -778,7 +780,7 @@ public void createRecordNoLock(final Record record, final String bucketName, fin if (record.getIdentity() != null) throw new IllegalArgumentException("Cannot create record " + record.getIdentity() + " because it is already persistent"); - if (mode == PaginatedFile.MODE.READ_ONLY) + if (mode == ComponentFile.MODE.READ_ONLY) throw new DatabaseIsReadOnlyException("Cannot create a new record"); setDefaultValues(record); @@ -836,7 +838,7 @@ public void updateRecord(final Record record) { if (record.getIdentity() == null) throw new IllegalArgumentException("Cannot update the record because it is not persistent"); - if (mode == PaginatedFile.MODE.READ_ONLY) + if (mode == ComponentFile.MODE.READ_ONLY) throw new DatabaseIsReadOnlyException("Cannot update a record"); if (record instanceof MutableDocument) @@ -936,7 +938,7 @@ public void deleteRecordNoLock(final Record record) { if (record.getIdentity() == null) throw new IllegalArgumentException("Cannot delete a non persistent record"); - if (mode == PaginatedFile.MODE.READ_ONLY) + if (mode == ComponentFile.MODE.READ_ONLY) throw new DatabaseIsReadOnlyException("Cannot delete record " + record.getIdentity()); // INVOKE EVENT CALLBACKS @@ -981,7 +983,7 @@ public void deleteRecordNoLock(final Record record) { @Override public boolean isTransactionActive() { - final Transaction tx = getTransaction(); + final Transaction tx = getTransactionIfExists(); return tx != null && tx.isActive(); } @@ -1226,7 +1228,7 @@ public String getName() { } @Override - public PaginatedFile.MODE getMode() { + public ComponentFile.MODE getMode() { return mode; } @@ -1664,14 +1666,14 @@ private void checkForRecovery() throws IOException { // RECOVERY LogManager.instance().log(this, Level.WARNING, "Database '%s' was not closed properly last time", null, name); - if (mode == PaginatedFile.MODE.READ_ONLY) + if (mode == ComponentFile.MODE.READ_ONLY) throw new DatabaseMetadataException("Database needs recovery but has been open in read only mode"); executeCallbacks(CALLBACK_EVENT.DB_NOT_CLOSED); transactionManager.checkIntegrity(); } else { - if (mode == PaginatedFile.MODE.READ_WRITE) { + if (mode == ComponentFile.MODE.READ_WRITE) { lockFile.createNewFile(); lockDatabase(); } else @@ -1700,7 +1702,7 @@ private void openInternal() { serializer.setDateImplementation(configuration.getValue(GlobalConfiguration.DATE_IMPLEMENTATION)); serializer.setDateTimeImplementation(configuration.getValue(GlobalConfiguration.DATE_TIME_IMPLEMENTATION)); - if (mode == PaginatedFile.MODE.READ_WRITE) + if (mode == ComponentFile.MODE.READ_WRITE) checkForRecovery(); if (security != null) @@ -1730,7 +1732,7 @@ private void openInternal() { protected void checkDatabaseIsOpen() { if (!open) throw new DatabaseIsClosedException(name); - if (DatabaseContext.INSTANCE.getContext(databasePath) == null) + if (DatabaseContext.INSTANCE.getContextIfExists(databasePath) == null) DatabaseContext.INSTANCE.init(this); } diff --git a/engine/src/main/java/com/arcadedb/database/ImmutableDocument.java b/engine/src/main/java/com/arcadedb/database/ImmutableDocument.java index 2f69aa2c1..ad4a9d6a2 100644 --- a/engine/src/main/java/com/arcadedb/database/ImmutableDocument.java +++ b/engine/src/main/java/com/arcadedb/database/ImmutableDocument.java @@ -22,6 +22,7 @@ import com.arcadedb.schema.DocumentType; import com.arcadedb.serializer.json.JSONObject; +import java.lang.reflect.*; import java.util.*; /** @@ -128,7 +129,14 @@ public synchronized String toString() { output.append(entry.getKey()); output.append('='); - output.append(entry.getValue()); + + final Object v = entry.getValue(); + if (v != null && v.getClass().isArray()) { + output.append('['); + output.append(Array.getLength(v)); + output.append(']'); + } else + output.append(v); i++; } } diff --git a/engine/src/main/java/com/arcadedb/database/MutableDocument.java b/engine/src/main/java/com/arcadedb/database/MutableDocument.java index 7bbdbc89e..163847cf6 100644 --- a/engine/src/main/java/com/arcadedb/database/MutableDocument.java +++ b/engine/src/main/java/com/arcadedb/database/MutableDocument.java @@ -24,6 +24,7 @@ import com.arcadedb.schema.Type; import com.arcadedb.serializer.json.JSONObject; +import java.lang.reflect.*; import java.util.*; /** @@ -64,7 +65,7 @@ public synchronized void setBuffer(final Binary buffer) { @Override public synchronized void unsetDirty() { - map = null; + //map = null; dirty = false; } @@ -292,7 +293,7 @@ public synchronized MutableDocument save(final String bucketName) { dirty = true; if (rid != null) { // UPDATE - if (rid.bucketId != database.getSchema().getBucketByName(bucketName).getId()) + if (rid.bucketId != database.getSchema().getBucketByName(bucketName).getFileId()) throw new IllegalStateException("Cannot update a record in a custom bucket"); database.updateRecord(this); @@ -327,7 +328,14 @@ public synchronized String toString() { result.append(entry.getKey()); result.append('='); - result.append(entry.getValue()); + + final Object v = entry.getValue(); + if (v != null && v.getClass().isArray()) { + result.append('['); + result.append(Array.getLength(v)); + result.append(']'); + } else + result.append(v); i++; } } diff --git a/engine/src/main/java/com/arcadedb/database/TransactionContext.java b/engine/src/main/java/com/arcadedb/database/TransactionContext.java index af97e6b26..aa57d9359 100644 --- a/engine/src/main/java/com/arcadedb/database/TransactionContext.java +++ b/engine/src/main/java/com/arcadedb/database/TransactionContext.java @@ -21,12 +21,13 @@ import com.arcadedb.GlobalConfiguration; import com.arcadedb.engine.BasePage; import com.arcadedb.engine.Bucket; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.engine.ImmutablePage; import com.arcadedb.engine.MutablePage; import com.arcadedb.engine.PageId; import com.arcadedb.engine.PageManager; import com.arcadedb.engine.PaginatedComponent; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.PaginatedComponentFile; import com.arcadedb.engine.WALFile; import com.arcadedb.exception.ConcurrentModificationException; import com.arcadedb.exception.DuplicatedKeyException; @@ -198,7 +199,7 @@ public void rollback() { if (database.isOpen() && database.getSchema().getDictionary() != null) { if (modifiedPages != null) { - final int dictionaryId = database.getSchema().getDictionary().getId(); + final int dictionaryId = database.getSchema().getDictionary().getFileId(); for (final PageId pageId : modifiedPages.keySet()) { if (dictionaryId == pageId.getFileId()) { @@ -269,7 +270,7 @@ public BasePage getPage(final PageId pageId, final int size) throws IOException case READ_COMMITTED: break; case REPEATABLE_READ: - final PaginatedFile file = database.getFileManager().getFile(pageId.getFileId()); + final PaginatedComponentFile file = (PaginatedComponentFile) database.getFileManager().getFile(pageId.getFileId()); final boolean isNewPage = pageId.getPageNumber() >= file.getTotalPages(); if (!isNewPage) // CACHE THE IMMUTABLE PAGE ONLY IF IT IS NOT NEW @@ -349,7 +350,7 @@ public MutablePage addPage(final PageId pageId, final int pageSize) { public long getFileSize(final int fileId) throws IOException { final Integer lastPage = newPageCounters.get(fileId); if (lastPage != null) - return (long) (lastPage + 1) * database.getFileManager().getFile(fileId).getPageSize(); + return (long) (lastPage + 1) * ((PaginatedComponentFile) database.getFileManager().getFile(fileId)).getPageSize(); return database.getFileManager().getVirtualFileSize(fileId); } @@ -430,11 +431,11 @@ public void commitFromReplica(final WALFile.WALTransaction buffer, indexChanges.setKeys(keysTx); indexChanges.addFilesToLock(modifiedFiles); - final int dictionaryFileId = database.getSchema().getDictionary().getId(); + final int dictionaryFileId = database.getSchema().getDictionary().getFileId(); boolean dictionaryModified = false; for (final WALFile.WALPage p : buffer.pages) { - final PaginatedFile file = database.getFileManager().getFile(p.fileId); + final PaginatedComponentFile file = (PaginatedComponentFile) database.getFileManager().getFile(p.fileId); final int pageSize = file.getPageSize(); final PageId pageId = new PageId(p.fileId, p.pageNumber); @@ -562,7 +563,7 @@ public void commit2ndPhase(final TransactionContext.TransactionPhase1 changes) { if (changes == null) return; - if (database.getMode() == PaginatedFile.MODE.READ_ONLY) + if (database.getMode() == ComponentFile.MODE.READ_ONLY) throw new TransactionException("Cannot commit changes because the database is open in read-only mode"); if (status != STATUS.COMMIT_1ST_PHASE) @@ -583,9 +584,10 @@ public void commit2ndPhase(final TransactionContext.TransactionPhase1 changes) { if (newPages != null) { for (final Map.Entry entry : newPageCounters.entrySet()) { - database.getSchema().getFileById(entry.getKey()).setPageCount(entry.getValue()); - database.getFileManager() - .setVirtualFileSize(entry.getKey(), (long) entry.getValue() * database.getFileManager().getFile(entry.getKey()).getPageSize()); + final PaginatedComponent component = (PaginatedComponent) database.getSchema().getFileById(entry.getKey()); + component.setPageCount(entry.getValue()); + database.getFileManager().setVirtualFileSize(entry.getKey(), + (long) entry.getValue() * ((PaginatedComponentFile) database.getFileManager().getFile(entry.getKey())).getPageSize()); } } @@ -593,7 +595,7 @@ public void commit2ndPhase(final TransactionContext.TransactionPhase1 changes) { ((RecordInternal) r).unsetDirty(); for (final int fileId : lockedFiles) { - final PaginatedComponent file = database.getSchema().getFileByIdIfExists(fileId); + final PaginatedComponent file = (PaginatedComponent) database.getSchema().getFileByIdIfExists(fileId); if (file != null) // THE FILE COULD BE NULL IN CASE OF INDEX COMPACTION file.onAfterCommit(); @@ -661,7 +663,7 @@ public void removePagesOfFile(final int fileId) { if (lockedFiles != null) lockedFiles.remove(fileId); - final PaginatedComponent component = database.getSchema().getFileByIdIfExists(fileId); + final PaginatedComponent component = (PaginatedComponent) database.getSchema().getFileByIdIfExists(fileId); if (component instanceof LSMTreeIndexAbstract) indexChanges.removeIndex(component.getName()); } diff --git a/engine/src/main/java/com/arcadedb/database/async/DatabaseAsyncExecutorImpl.java b/engine/src/main/java/com/arcadedb/database/async/DatabaseAsyncExecutorImpl.java index 447f87b77..c1b3d950e 100644 --- a/engine/src/main/java/com/arcadedb/database/async/DatabaseAsyncExecutorImpl.java +++ b/engine/src/main/java/com/arcadedb/database/async/DatabaseAsyncExecutorImpl.java @@ -355,7 +355,7 @@ public void scanType(final String typeName, final boolean polymorphic, final Doc final CountDownLatch semaphore = new CountDownLatch(buckets.size()); for (final Bucket b : buckets) { - final int slot = getSlot(b.getId()); + final int slot = getSlot(b.getFileId()); scheduleTask(slot, new DatabaseAsyncScanBucket(semaphore, callback, errorRecordCallback, b), true, backPressurePercentage); } @@ -398,7 +398,7 @@ public void createRecord(final MutableDocument record, final NewRecordCallback n if (record.getIdentity() == null) { // NEW final Bucket bucket = type.getBucketIdByRecord(record, false); - final int slot = getSlot(bucket.getId()); + final int slot = getSlot(bucket.getFileId()); scheduleTask(slot, new DatabaseAsyncCreateRecord(record, bucket, newRecordCallback, errorCallback), true, backPressurePercentage); @@ -414,7 +414,7 @@ public void createRecord(final Record record, final String bucketName, final New @Override public void createRecord(final Record record, final String bucketName, final NewRecordCallback newRecordCallback, final ErrorCallback errorCallback) { final Bucket bucket = database.getSchema().getBucketByName(bucketName); - final int slot = getSlot(bucket.getId()); + final int slot = getSlot(bucket.getFileId()); if (record.getIdentity() == null) // NEW diff --git a/engine/src/main/java/com/arcadedb/engine/Bucket.java b/engine/src/main/java/com/arcadedb/engine/Bucket.java index aa4d745a6..f696c96b5 100644 --- a/engine/src/main/java/com/arcadedb/engine/Bucket.java +++ b/engine/src/main/java/com/arcadedb/engine/Bucket.java @@ -75,10 +75,10 @@ private static class AvailableSpace { public boolean createNewPage = false; } - public static class PaginatedComponentFactoryHandler implements PaginatedComponentFactory.PaginatedComponentFactoryHandler { + public static class PaginatedComponentFactoryHandler implements ComponentFactory.PaginatedComponentFactoryHandler { @Override public PaginatedComponent createOnLoad(final DatabaseInternal database, final String name, final String filePath, final int id, - final PaginatedFile.MODE mode, final int pageSize, final int version) throws IOException { + final ComponentFile.MODE mode, final int pageSize, final int version) throws IOException { return new Bucket(database, name, filePath, id, mode, pageSize, version); } } @@ -86,7 +86,7 @@ public PaginatedComponent createOnLoad(final DatabaseInternal database, final St /** * Called at creation time. */ - public Bucket(final DatabaseInternal database, final String name, final String filePath, final PaginatedFile.MODE mode, final int pageSize, final int version) + public Bucket(final DatabaseInternal database, final String name, final String filePath, final ComponentFile.MODE mode, final int pageSize, final int version) throws IOException { super(database, name, filePath, BUCKET_EXT, mode, pageSize, version); contentHeaderSize = PAGE_RECORD_TABLE_OFFSET + (maxRecordsInPage * INT_SERIALIZED_SIZE); @@ -95,7 +95,7 @@ public Bucket(final DatabaseInternal database, final String name, final String f /** * Called at load time. */ - public Bucket(final DatabaseInternal database, final String name, final String filePath, final int id, final PaginatedFile.MODE mode, final int pageSize, + public Bucket(final DatabaseInternal database, final String name, final String filePath, final int id, final ComponentFile.MODE mode, final int pageSize, final int version) throws IOException { super(database, name, filePath, id, mode, pageSize, version); contentHeaderSize = PAGE_RECORD_TABLE_OFFSET + (maxRecordsInPage * INT_SERIALIZED_SIZE); @@ -106,17 +106,17 @@ public int getMaxRecordsInPage() { } public RID createRecord(final Record record, final boolean discardRecordAfter) { - database.checkPermissionsOnFile(id, SecurityDatabaseUser.ACCESS.CREATE_RECORD); + database.checkPermissionsOnFile(fileId, SecurityDatabaseUser.ACCESS.CREATE_RECORD); return createRecordInternal(record, false, discardRecordAfter); } public void updateRecord(final Record record, final boolean discardRecordAfter) { - database.checkPermissionsOnFile(id, SecurityDatabaseUser.ACCESS.UPDATE_RECORD); + database.checkPermissionsOnFile(fileId, SecurityDatabaseUser.ACCESS.UPDATE_RECORD); updateRecordInternal(record, record.getIdentity(), false, discardRecordAfter); } public Binary getRecord(final RID rid) { - database.checkPermissionsOnFile(id, SecurityDatabaseUser.ACCESS.READ_RECORD); + database.checkPermissionsOnFile(fileId, SecurityDatabaseUser.ACCESS.READ_RECORD); final Binary rec = getRecordInternal(rid, false); if (rec == null) @@ -126,7 +126,7 @@ public Binary getRecord(final RID rid) { } public boolean existsRecord(final RID rid) { - database.checkPermissionsOnFile(id, SecurityDatabaseUser.ACCESS.READ_RECORD); + database.checkPermissionsOnFile(fileId, SecurityDatabaseUser.ACCESS.READ_RECORD); final int pageId = (int) (rid.getPosition() / maxRecordsInPage); final int positionInPage = (int) (rid.getPosition() % maxRecordsInPage); @@ -159,12 +159,12 @@ public boolean existsRecord(final RID rid) { } public void deleteRecord(final RID rid) { - database.checkPermissionsOnFile(id, SecurityDatabaseUser.ACCESS.DELETE_RECORD); + database.checkPermissionsOnFile(fileId, SecurityDatabaseUser.ACCESS.DELETE_RECORD); deleteRecordInternal(rid, false, false); } public void scan(final RawRecordCallback callback, final ErrorRecordCallback errorRecordCallback) { - database.checkPermissionsOnFile(id, SecurityDatabaseUser.ACCESS.READ_RECORD); + database.checkPermissionsOnFile(fileId, SecurityDatabaseUser.ACCESS.READ_RECORD); final int txPageCount = getTotalPages(); @@ -175,7 +175,7 @@ public void scan(final RawRecordCallback callback, final ErrorRecordCallback err if (recordCountInPage > 0) { for (int recordIdInPage = 0; recordIdInPage < recordCountInPage; ++recordIdInPage) { - final RID rid = new RID(database, id, ((long) pageId) * maxRecordsInPage + recordIdInPage); + final RID rid = new RID(database, fileId, ((long) pageId) * maxRecordsInPage + recordIdInPage); try { final int recordPositionInPage = (int) page.readUnsignedInt(PAGE_RECORD_TABLE_OFFSET + recordIdInPage * INT_SERIALIZED_SIZE); @@ -196,7 +196,7 @@ public void scan(final RawRecordCallback callback, final ErrorRecordCallback err } else if (recordSize[0] == RECORD_PLACEHOLDER_POINTER) { // LOAD PLACEHOLDER CONTENT - final RID placeHolderPointer = new RID(database, id, page.readLong((int) (recordPositionInPage + recordSize[1]))); + final RID placeHolderPointer = new RID(database, fileId, page.readLong((int) (recordPositionInPage + recordSize[1]))); final Binary view = getRecordInternal(placeHolderPointer, true); if (view != null && !callback.onRecord(rid, view)) return; @@ -219,7 +219,7 @@ else if (!errorRecordCallback.onErrorLoading(rid, e)) } } } catch (final IOException e) { - throw new DatabaseOperationException("Cannot scan bucket '" + name + "'", e); + throw new DatabaseOperationException("Cannot scan bucket '" + componentName + "'", e); } } @@ -242,17 +242,17 @@ public void fetchPageInTransaction(final RID rid) throws IOException { } public Iterator iterator() { - database.checkPermissionsOnFile(id, SecurityDatabaseUser.ACCESS.READ_RECORD); + database.checkPermissionsOnFile(fileId, SecurityDatabaseUser.ACCESS.READ_RECORD); return new BucketIterator(this, database); } - public int getId() { - return id; + public int getFileId() { + return fileId; } @Override public String toString() { - return name; + return componentName; } @Override @@ -260,16 +260,16 @@ public boolean equals(final Object obj) { if (!(obj instanceof Bucket)) return false; - return ((Bucket) obj).id == this.id; + return ((Bucket) obj).fileId == this.fileId; } @Override public int hashCode() { - return id; + return fileId; } public long count() { - database.checkPermissionsOnFile(id, SecurityDatabaseUser.ACCESS.READ_RECORD); + database.checkPermissionsOnFile(fileId, SecurityDatabaseUser.ACCESS.READ_RECORD); long total = 0; @@ -296,7 +296,7 @@ public long count() { } } } catch (final IOException e) { - throw new DatabaseOperationException("Cannot count bucket '" + name + "'", e); + throw new DatabaseOperationException("Cannot count bucket '" + componentName + "'", e); } return total; } @@ -307,7 +307,7 @@ protected Map check(final int verboseLevel, final boolean fix) { final int totalPages = getTotalPages(); if (verboseLevel > 1) - LogManager.instance().log(this, Level.INFO, "- Checking bucket '%s' (totalPages=%d spaceOnDisk=%s pageSize=%s)...", name, totalPages, + LogManager.instance().log(this, Level.INFO, "- Checking bucket '%s' (totalPages=%d spaceOnDisk=%s pageSize=%s)...", componentName, totalPages, FileUtils.getSizeAsString((long) totalPages * pageSize), FileUtils.getSizeAsString(pageSize)); long totalAllocatedRecords = 0L; @@ -453,7 +453,7 @@ protected Map check(final int verboseLevel, final boolean fix) { stats.put("totalDeletedRecords", totalDeletedRecords); stats.put("totalMaxOffset", totalMaxOffset); - final DocumentType type = database.getSchema().getTypeByBucketId(id); + final DocumentType type = database.getSchema().getTypeByBucketId(fileId); if (type instanceof VertexType) { stats.put("totalAllocatedVertices", totalAllocatedRecords); stats.put("totalActiveVertices", totalActiveRecords); @@ -594,7 +594,7 @@ private RID createRecordInternal(final Record record, final boolean isPlaceHolde return rid; } catch (final IOException e) { - throw new DatabaseOperationException("Cannot add a new record to the bucket '" + name + "'", e); + throw new DatabaseOperationException("Cannot add a new record to the bucket '" + componentName + "'", e); } } @@ -636,7 +636,7 @@ private boolean updateRecordInternal(final Record record, final RID rid, final b if (recordSize[0] == RECORD_PLACEHOLDER_POINTER) { // FOUND A RECORD POINTED FROM A PLACEHOLDER - final RID placeHolderContentRID = new RID(database, id, page.readLong((int) (recordPositionInPage + recordSize[1]))); + final RID placeHolderContentRID = new RID(database, fileId, page.readLong((int) (recordPositionInPage + recordSize[1]))); if (updateRecordInternal(record, placeHolderContentRID, true, discardRecordAfter)) { // UPDATE PLACEHOLDER CONTENT, THE PLACEHOLDER POINTER STAY THE SAME if (!discardRecordAfter) @@ -798,7 +798,7 @@ private void deleteRecordInternal(final RID rid, final boolean deletePlaceholder if (recordSize[0] == RECORD_PLACEHOLDER_POINTER) { // FOUND PLACEHOLDER POINTER: DELETE THE PLACEHOLDER CONTENT FIRST - final RID placeHolderContentRID = new RID(database, id, page.readLong((int) (recordPositionInPage + recordSize[1]))); + final RID placeHolderContentRID = new RID(database, fileId, page.readLong((int) (recordPositionInPage + recordSize[1]))); deleteRecordInternal(placeHolderContentRID, true, false); } else if (recordSize[0] == FIRST_CHUNK) { @@ -822,7 +822,7 @@ private void deleteRecordInternal(final RID rid, final boolean deletePlaceholder if (recordSize[0] != NEXT_CHUNK) throw new DatabaseOperationException("Error on fetching multi page record " + rid + " chunk " + chunkId); - deleteRecordInternal(new RID(database, id, nextChunkPointer), false, true); + deleteRecordInternal(new RID(database, fileId, nextChunkPointer), false, true); } } else if (recordSize[0] == NEXT_CHUNK) { diff --git a/engine/src/main/java/com/arcadedb/engine/BucketIterator.java b/engine/src/main/java/com/arcadedb/engine/BucketIterator.java index 5bb0c53a8..d99f9bda1 100644 --- a/engine/src/main/java/com/arcadedb/engine/BucketIterator.java +++ b/engine/src/main/java/com/arcadedb/engine/BucketIterator.java @@ -47,13 +47,13 @@ public class BucketIterator implements Iterator { final long limit; BucketIterator(final Bucket bucket, final Database db) { - ((DatabaseInternal) db).checkPermissionsOnFile(bucket.id, SecurityDatabaseUser.ACCESS.READ_RECORD); + ((DatabaseInternal) db).checkPermissionsOnFile(bucket.fileId, SecurityDatabaseUser.ACCESS.READ_RECORD); this.database = (DatabaseInternal) db; this.bucket = bucket; this.totalPages = bucket.pageCount.get(); - final Integer txPageCounter = database.getTransaction().getPageCounter(bucket.id); + final Integer txPageCounter = database.getTransaction().getPageCounter(bucket.fileId); if (txPageCounter != null && txPageCounter > totalPages) this.totalPages = txPageCounter; @@ -91,7 +91,7 @@ private void fetchNext() { final long[] recordSize = currentPage.readNumberAndSize(recordPositionInPage); if (recordSize[0] > 0 || recordSize[0] == Bucket.FIRST_CHUNK) { // NOT DELETED - final RID rid = new RID(database, bucket.id, ((long) nextPageNumber) * bucket.getMaxRecordsInPage() + currentRecordInPage); + final RID rid = new RID(database, bucket.fileId, ((long) nextPageNumber) * bucket.getMaxRecordsInPage() + currentRecordInPage); if (!bucket.existsRecord(rid)) continue; @@ -101,9 +101,9 @@ private void fetchNext() { } else if (recordSize[0] == Bucket.RECORD_PLACEHOLDER_POINTER) { // PLACEHOLDER - final RID rid = new RID(database, bucket.id, ((long) nextPageNumber) * bucket.getMaxRecordsInPage() + currentRecordInPage); + final RID rid = new RID(database, bucket.fileId, ((long) nextPageNumber) * bucket.getMaxRecordsInPage() + currentRecordInPage); - final Binary view = bucket.getRecordInternal(new RID(database, bucket.id, currentPage.readLong((int) (recordPositionInPage + recordSize[1]))), + final Binary view = bucket.getRecordInternal(new RID(database, bucket.fileId, currentPage.readLong((int) (recordPositionInPage + recordSize[1]))), true); if (view == null) @@ -151,7 +151,7 @@ public Record next() { try { fetchNext(); } catch (final Exception e) { - throw new DatabaseOperationException("Cannot scan bucket '" + bucket.name + "'", e); + throw new DatabaseOperationException("Cannot scan bucket '" + bucket.componentName + "'", e); } } } diff --git a/engine/src/main/java/com/arcadedb/engine/Component.java b/engine/src/main/java/com/arcadedb/engine/Component.java new file mode 100644 index 000000000..1dbf88d95 --- /dev/null +++ b/engine/src/main/java/com/arcadedb/engine/Component.java @@ -0,0 +1,81 @@ +/* + * Copyright © 2021-present Arcade Data Ltd (info@arcadedata.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-FileCopyrightText: 2021-present Arcade Data Ltd (info@arcadedata.com) + * SPDX-License-Identifier: Apache-2.0 + */ +package com.arcadedb.engine; + +import com.arcadedb.database.DatabaseInternal; + +/** + * Basic abstract File Component. + * + * @author Luca Garulli (l.garulli@arcadedata.com) + */ +public abstract class Component { + protected final DatabaseInternal database; + protected final String componentName; + protected final int fileId; + protected final int version; + protected final String filePath; + + protected Component(final DatabaseInternal database, final String componentName, final int id, final int version, final String filePath) { + if (id < 0) + throw new IllegalArgumentException("Invalid file id " + id); + if (componentName == null || componentName.isEmpty()) + throw new IllegalArgumentException("Invalid file name " + componentName); + + this.database = database; + this.componentName = componentName; + this.fileId = id; + this.version = version; + this.filePath = filePath; + } + + public abstract void close(); + + public Object getMainComponent() { + return this; + } + + public void onAfterLoad() { + // NO ACTIONS + } + + public void onAfterCommit() { + // NO ACTIONS + } + + public void onAfterSchemaLoad() { + // NO ACTIONS + } + + public String getName() { + return componentName; + } + + public int getFileId() { + return fileId; + } + + public int getVersion() { + return version; + } + + public DatabaseInternal getDatabase() { + return database; + } +} diff --git a/engine/src/main/java/com/arcadedb/engine/PaginatedComponentFactory.java b/engine/src/main/java/com/arcadedb/engine/ComponentFactory.java similarity index 78% rename from engine/src/main/java/com/arcadedb/engine/PaginatedComponentFactory.java rename to engine/src/main/java/com/arcadedb/engine/ComponentFactory.java index 5f302f202..42cb89f11 100644 --- a/engine/src/main/java/com/arcadedb/engine/PaginatedComponentFactory.java +++ b/engine/src/main/java/com/arcadedb/engine/ComponentFactory.java @@ -23,16 +23,16 @@ import java.io.*; import java.util.*; -public class PaginatedComponentFactory { +public class ComponentFactory { private final Map map = new HashMap<>(); private final DatabaseInternal database; public interface PaginatedComponentFactoryHandler { - PaginatedComponent createOnLoad(final DatabaseInternal database, final String name, final String filePath, final int id, final PaginatedFile.MODE mode, + Component createOnLoad(final DatabaseInternal database, final String name, final String filePath, final int id, final ComponentFile.MODE mode, final int pageSize, final int version) throws IOException; } - public PaginatedComponentFactory(final DatabaseInternal database) { + public ComponentFactory(final DatabaseInternal database) { this.database = database; } @@ -40,11 +40,11 @@ public void registerComponent(final String fileExt, final PaginatedComponentFact map.put(fileExt, handler); } - public PaginatedComponent createComponent(final PaginatedFile file, final PaginatedFile.MODE mode) throws IOException { + public Component createComponent(final ComponentFile file, final ComponentFile.MODE mode) throws IOException { final String fileName = file.getComponentName(); final int fileId = file.getFileId(); final String fileExt = file.getFileExtension(); - final int pageSize = file.getPageSize(); + final int pageSize = file instanceof PaginatedComponentFile ? ((PaginatedComponentFile) file).getPageSize() : 0; final int version = file.getVersion(); final PaginatedComponentFactoryHandler handler = map.get(fileExt); diff --git a/engine/src/main/java/com/arcadedb/engine/ComponentFile.java b/engine/src/main/java/com/arcadedb/engine/ComponentFile.java new file mode 100644 index 000000000..5a6e893a7 --- /dev/null +++ b/engine/src/main/java/com/arcadedb/engine/ComponentFile.java @@ -0,0 +1,159 @@ +/* + * Copyright © 2021-present Arcade Data Ltd (info@arcadedata.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-FileCopyrightText: 2021-present Arcade Data Ltd (info@arcadedata.com) + * SPDX-License-Identifier: Apache-2.0 + */ +package com.arcadedb.engine; + +import com.arcadedb.log.LogManager; +import com.arcadedb.utility.FileUtils; + +import java.io.*; +import java.nio.file.*; +import java.util.logging.*; +import java.util.zip.*; + +public class ComponentFile { + public enum MODE { + READ_ONLY, READ_WRITE + } + + protected final MODE mode; + protected String filePath; + protected String fileName; + protected File osFile; + protected int fileId; + protected int version = 0; // STARTING FROM 21.10.2 COMPONENTS HAVE VERSION IN THE FILE NAME + protected String componentName; + protected String fileExtension; + protected boolean open; + + public ComponentFile() { + this.mode = MODE.READ_ONLY; + } + + protected ComponentFile(final String filePath, final MODE mode) throws FileNotFoundException { + this.mode = mode; + open(filePath, mode); + } + + public void close() { + } + + public long getSize() throws IOException { + return osFile.length(); + } + + protected void open(final String filePath, final MODE mode) throws FileNotFoundException { + this.filePath = filePath; + + final int lastDotPos = filePath.lastIndexOf("."); + String filePrefix = filePath.substring(0, lastDotPos); + this.fileExtension = filePath.substring(lastDotPos + 1); + + final int versionPos = filePrefix.lastIndexOf("."); + if (filePrefix.charAt(versionPos + 1) == 'v') { + // STARTING FROM 21.10.2 COMPONENTS HAVE VERSION IN THE FILE NAME + version = Integer.parseInt(filePrefix.substring(versionPos + 2)); + filePrefix = filePrefix.substring(0, versionPos); + } + + final int fileIdPos = filePrefix.lastIndexOf("."); + if (fileIdPos > -1) { + fileId = Integer.parseInt(filePrefix.substring(fileIdPos + 1)); + final int pos = filePrefix.lastIndexOf(File.separator); + componentName = filePrefix.substring(pos + 1, filePrefix.lastIndexOf(".")); + } else { + fileId = -1; + final int pos = filePrefix.lastIndexOf(File.separator); + componentName = filePrefix.substring(pos + 1); + } + + final int lastSlash = filePath.lastIndexOf(File.separator); + if (lastSlash > -1) + fileName = filePath.substring(lastSlash + 1); + else + fileName = filePath; + + this.osFile = new File(filePath); + this.open = true; + } + + public void rename(final String newFileName) throws IOException { + close(); + LogManager.instance().log(this, Level.FINE, "Renaming file %s (id=%d) to %s...", null, filePath, fileId, newFileName); + final File newFile = new File(newFileName); + new File(filePath).renameTo(newFile); + open(newFile.getAbsolutePath(), mode); + } + + public void drop() throws IOException { + close(); + LogManager.instance().log(this, Level.FINE, "Deleting file %s (id=%d) to %s...", null, filePath, fileId); + Files.delete(Paths.get(getFilePath())); + } + + public void flush() throws IOException { + } + + public String getFileName() { + return fileName; + } + + public boolean isOpen() { + return open; + } + + public String getFilePath() { + return filePath; + } + + public String getComponentName() { + return componentName; + } + + public String getFileExtension() { + return fileExtension; + } + + public int getFileId() { + return fileId; + } + + public File getOSFile() { + return osFile; + } + + public void setFileId(final int fileId) { + this.fileId = fileId; + } + + public int getVersion() { + return version; + } + + public long calculateChecksum() throws IOException { + final CRC32 crc = new CRC32(); + final String fileContent = FileUtils.readFileAsString(osFile); + crc.update(fileContent.getBytes()); + return crc.getValue(); + } + + @Override + public String toString() { + return filePath; + } +} diff --git a/engine/src/main/java/com/arcadedb/engine/DatabaseChecker.java b/engine/src/main/java/com/arcadedb/engine/DatabaseChecker.java index fc27757b4..ad51a705b 100644 --- a/engine/src/main/java/com/arcadedb/engine/DatabaseChecker.java +++ b/engine/src/main/java/com/arcadedb/engine/DatabaseChecker.java @@ -183,11 +183,11 @@ private void checkBuckets(final Map result) { for (final Bucket bucket : database.getSchema().getBuckets()) { if (buckets != null && !buckets.isEmpty()) - if (!buckets.contains(bucket.name)) + if (!buckets.contains(bucket.componentName)) continue; if (types != null && !types.isEmpty()) { - final DocumentType type = database.getSchema().getTypeByBucketId(bucket.id); + final DocumentType type = database.getSchema().getTypeByBucketId(bucket.fileId); if (type == null || !types.contains(type.getName())) continue; } diff --git a/engine/src/main/java/com/arcadedb/engine/Dictionary.java b/engine/src/main/java/com/arcadedb/engine/Dictionary.java index 5a9ddbdb0..7999458b4 100644 --- a/engine/src/main/java/com/arcadedb/engine/Dictionary.java +++ b/engine/src/main/java/com/arcadedb/engine/Dictionary.java @@ -45,10 +45,10 @@ public class Dictionary extends PaginatedComponent { // THIS IS LEGACY BECAUSE THE NUMBER OF ITEMS WAS STORED IN THE HEADER. NOW THE DICTIONARY IS POPULATED FROM THE ACTUAL CONTENT IN THE PAGES private static final int DICTIONARY_HEADER_SIZE = Binary.INT_SERIALIZED_SIZE; - public static class PaginatedComponentFactoryHandler implements PaginatedComponentFactory.PaginatedComponentFactoryHandler { + public static class PaginatedComponentFactoryHandler implements ComponentFactory.PaginatedComponentFactoryHandler { @Override public PaginatedComponent createOnLoad(final DatabaseInternal database, final String name, final String filePath, final int fileId, - final PaginatedFile.MODE mode, final int pageSize, final int version) throws IOException { + final ComponentFile.MODE mode, final int pageSize, final int version) throws IOException { return new Dictionary(database, name, filePath, fileId, mode, pageSize, version); } } @@ -56,7 +56,7 @@ public PaginatedComponent createOnLoad(final DatabaseInternal database, final St /** * Called at creation time. */ - public Dictionary(final DatabaseInternal database, final String name, final String filePath, final PaginatedFile.MODE mode, final int pageSize) + public Dictionary(final DatabaseInternal database, final String name, final String filePath, final ComponentFile.MODE mode, final int pageSize) throws IOException { super(database, name, filePath, DICT_EXT, mode, pageSize, CURRENT_VERSION); if (file.getSize() == 0) { @@ -69,7 +69,7 @@ public Dictionary(final DatabaseInternal database, final String name, final Stri /** * Called at load time. */ - public Dictionary(final DatabaseInternal database, final String name, final String filePath, final int id, final PaginatedFile.MODE mode, final int pageSize, + public Dictionary(final DatabaseInternal database, final String name, final String filePath, final int id, final ComponentFile.MODE mode, final int pageSize, final int version) throws IOException { super(database, name, filePath, id, mode, pageSize, version); reload(); diff --git a/engine/src/main/java/com/arcadedb/engine/FileManager.java b/engine/src/main/java/com/arcadedb/engine/FileManager.java index f807f1096..13ea5eb99 100644 --- a/engine/src/main/java/com/arcadedb/engine/FileManager.java +++ b/engine/src/main/java/com/arcadedb/engine/FileManager.java @@ -18,6 +18,7 @@ */ package com.arcadedb.engine; +import com.arcadedb.index.vector.HnswVectorIndex; import com.arcadedb.log.LogManager; import java.io.*; @@ -27,14 +28,14 @@ import java.util.logging.*; public class FileManager { - private final PaginatedFile.MODE mode; - private final List files = new ArrayList<>(); - private final ConcurrentHashMap fileNameMap = new ConcurrentHashMap<>(); - private final ConcurrentHashMap fileIdMap = new ConcurrentHashMap<>(); + private final ComponentFile.MODE mode; + private final List files = new ArrayList<>(); + private final ConcurrentHashMap fileNameMap = new ConcurrentHashMap<>(); + private final ConcurrentHashMap fileIdMap = new ConcurrentHashMap<>(); private final ConcurrentHashMap fileVirtualSize = new ConcurrentHashMap<>(); private final AtomicLong maxFilesOpened = new AtomicLong(); private List recordedChanges = null; - private final static PaginatedFile RESERVED_SLOT = new PaginatedFile(); + private final static PaginatedComponentFile RESERVED_SLOT = new PaginatedComponentFile(); public static class FileChange { public final boolean create; @@ -68,7 +69,7 @@ public static class FileManagerStats { public long totalOpenFiles; } - public FileManager(final String path, final PaginatedFile.MODE mode, final Set supportedFileExt) { + public FileManager(final String path, final ComponentFile.MODE mode, final Set supportedFileExt) { this.mode = mode; final File dbDirectory = new File(path); @@ -81,7 +82,12 @@ public FileManager(final String path, final PaginatedFile.MODE mode, final Set getFiles() { + public List getFiles() { return Collections.unmodifiableList(files); } @@ -166,20 +172,20 @@ public boolean existsFile(final int fileId) { return fileIdMap.containsKey(fileId); } - public PaginatedFile getFile(final int fileId) { - final PaginatedFile f = fileIdMap.get(fileId); + public ComponentFile getFile(final int fileId) { + final ComponentFile f = fileIdMap.get(fileId); if (f == null) throw new IllegalArgumentException("File with id " + fileId + " was not found"); return f; } - public PaginatedFile getOrCreateFile(final String fileName, final String filePath, final PaginatedFile.MODE mode) throws IOException { - PaginatedFile file = fileNameMap.get(fileName); + public ComponentFile getOrCreateFile(final String fileName, final String filePath, final ComponentFile.MODE mode) throws IOException { + ComponentFile file = fileNameMap.get(fileName); if (file != null) return file; - file = new PaginatedFile(filePath, mode); + file = new PaginatedComponentFile(filePath, mode); registerFile(file); if (recordedChanges != null) @@ -188,10 +194,10 @@ public PaginatedFile getOrCreateFile(final String fileName, final String filePat return file; } - public PaginatedFile getOrCreateFile(final int fileId, final String filePath) throws IOException { - PaginatedFile file = fileIdMap.get(fileId); + public ComponentFile getOrCreateFile(final int fileId, final String filePath) throws IOException { + ComponentFile file = fileIdMap.get(fileId); if (file == null) { - file = new PaginatedFile(filePath, mode); + file = new PaginatedComponentFile(filePath, mode); registerFile(file); if (recordedChanges != null) @@ -214,11 +220,11 @@ public synchronized int newFileId() { return files.size() - 1; } - private void registerFile(final PaginatedFile file) { + private void registerFile(final ComponentFile file) { final int pos = file.getFileId(); while (files.size() < pos + 1) files.add(null); - final PaginatedFile prev = files.get(pos); + final ComponentFile prev = files.get(pos); if (prev != null && prev != RESERVED_SLOT) throw new IllegalArgumentException("Cannot register file '" + file + "' at position " + pos + " because already occupied by file '" + prev + "'"); diff --git a/engine/src/main/java/com/arcadedb/engine/PageManager.java b/engine/src/main/java/com/arcadedb/engine/PageManager.java index e01473e91..ce3053a83 100644 --- a/engine/src/main/java/com/arcadedb/engine/PageManager.java +++ b/engine/src/main/java/com/arcadedb/engine/PageManager.java @@ -300,7 +300,7 @@ public void writePages(final List updatedPages, final boolean async protected void flushPage(final MutablePage page) throws IOException { if (fileManager.existsFile(page.pageId.getFileId())) { - final PaginatedFile file = fileManager.getFile(page.pageId.getFileId()); + final PaginatedComponentFile file = (PaginatedComponentFile) fileManager.getFile(page.pageId.getFileId()); if (!file.isOpen()) throw new DatabaseMetadataException("Cannot flush pages on disk because file '" + file.getFileName() + "' is closed"); @@ -322,7 +322,7 @@ protected void flushPage(final MutablePage page) throws IOException { } private CachedPage loadPage(final PageId pageId, final int size, final boolean createIfNotExists, final boolean cache) throws IOException { - final PaginatedFile file = fileManager.getFile(pageId.getFileId()); + final PaginatedComponentFile file = (PaginatedComponentFile) fileManager.getFile(pageId.getFileId()); final boolean isNewPage = pageId.getPageNumber() >= file.getTotalPages(); if (!createIfNotExists && isNewPage) diff --git a/engine/src/main/java/com/arcadedb/engine/PaginatedComponent.java b/engine/src/main/java/com/arcadedb/engine/PaginatedComponent.java index 16d27e671..3db1053f6 100644 --- a/engine/src/main/java/com/arcadedb/engine/PaginatedComponent.java +++ b/engine/src/main/java/com/arcadedb/engine/PaginatedComponent.java @@ -26,43 +26,35 @@ import java.util.concurrent.atomic.*; /** + * Extends a FileComponent by supporting pages. + *

* HEADER = [recordCount(int:4)] CONTENT-PAGES = [version(long:8),recordCountInPage(short:2),recordOffsetsInPage(512*ushort=2048)] + * + * @author Luca Garulli (l.garulli@arcadedata.com) */ -public abstract class PaginatedComponent { - protected final DatabaseInternal database; - protected final String name; - protected final PaginatedFile file; - protected final int id; - protected final int pageSize; - protected final int version; - protected final AtomicInteger pageCount = new AtomicInteger(); +public abstract class PaginatedComponent extends Component { + protected final PaginatedComponentFile file; + protected final int pageSize; + protected final AtomicInteger pageCount = new AtomicInteger(); - protected PaginatedComponent(final DatabaseInternal database, final String name, final String filePath, final String ext, final PaginatedFile.MODE mode, + protected PaginatedComponent(final DatabaseInternal database, final String name, final String filePath, final String ext, final ComponentFile.MODE mode, final int pageSize, final int version) throws IOException { this(database, name, filePath, ext, database.getFileManager().newFileId(), mode, pageSize, version); } private PaginatedComponent(final DatabaseInternal database, final String name, final String filePath, final String ext, final int id, - final PaginatedFile.MODE mode, final int pageSize, final int version) throws IOException { + final ComponentFile.MODE mode, final int pageSize, final int version) throws IOException { this(database, name, filePath + "." + id + "." + pageSize + ".v" + version + "." + ext, id, mode, pageSize, version); } - protected PaginatedComponent(final DatabaseInternal database, final String name, final String filePath, final int id, final PaginatedFile.MODE mode, + protected PaginatedComponent(final DatabaseInternal database, final String name, final String filePath, final int id, final ComponentFile.MODE mode, final int pageSize, final int version) throws IOException { + super(database, name, id, version, filePath); if (pageSize <= 0) throw new IllegalArgumentException("Invalid page size " + pageSize); - if (id < 0) - throw new IllegalArgumentException("Invalid file id " + id); - if (name == null || name.isEmpty()) - throw new IllegalArgumentException("Invalid file name " + name); - this.database = database; - this.name = name; - this.id = id; this.pageSize = pageSize; - this.version = version; - - this.file = database.getFileManager().getOrCreateFile(name, filePath, mode); + this.file = (PaginatedComponentFile) database.getFileManager().getOrCreateFile(name, filePath, mode); if (file.getSize() == 0) // NEW FILE, CREATE HEADER PAGE @@ -71,16 +63,12 @@ protected PaginatedComponent(final DatabaseInternal database, final String name, pageCount.set((int) (file.getSize() / getPageSize())); } - public File getOSFile() { - return file.getOSFile(); + public PaginatedComponentFile getComponentFile() { + return file; } - public void onAfterLoad() { - // NO ACTIONS - } - - public void onAfterCommit() { - // NO ACTIONS + public File getOSFile() { + return file.getOSFile(); } public int getPageSize() { @@ -89,26 +77,11 @@ public int getPageSize() { public void setPageCount(final int value) { if (value <= pageCount.get()) - throw new ConcurrentModificationException("Unable to update page count for component '" + name + "' (" + value + "<=" + pageCount.get() + ")"); + throw new ConcurrentModificationException("Unable to update page count for component '" + componentName + "' (" + value + "<=" + pageCount.get() + ")"); pageCount.set(value); } - public String getName() { - return name; - } - - public int getId() { - return id; - } - - public int getVersion() { - return version; - } - - public DatabaseInternal getDatabase() { - return database; - } - + @Override public void close() { if (file != null) file.close(); @@ -117,14 +90,10 @@ public void close() { public int getTotalPages() { final TransactionContext tx = database.getTransaction(); if (tx != null) { - final Integer txPageCounter = tx.getPageCounter(id); + final Integer txPageCounter = tx.getPageCounter(fileId); if (txPageCounter != null) return txPageCounter; } return pageCount.get(); } - - public Object getMainComponent() { - return this; - } } diff --git a/engine/src/main/java/com/arcadedb/engine/PaginatedFile.java b/engine/src/main/java/com/arcadedb/engine/PaginatedComponentFile.java similarity index 73% rename from engine/src/main/java/com/arcadedb/engine/PaginatedFile.java rename to engine/src/main/java/com/arcadedb/engine/PaginatedComponentFile.java index 5ca726399..7c2efa544 100644 --- a/engine/src/main/java/com/arcadedb/engine/PaginatedFile.java +++ b/engine/src/main/java/com/arcadedb/engine/PaginatedComponentFile.java @@ -23,37 +23,23 @@ import java.io.*; import java.nio.*; import java.nio.channels.*; -import java.nio.file.*; import java.util.logging.*; import java.util.zip.*; -public class PaginatedFile { - public enum MODE { - READ_ONLY, READ_WRITE - } +public class PaginatedComponentFile extends ComponentFile { + + private RandomAccessFile file; + private FileChannel channel; + private int pageSize; - private RandomAccessFile file; - private final MODE mode; - private String filePath; - private String fileName; - private File osFile; - private FileChannel channel; - private int fileId; - private int pageSize; - private int version = 0; // STARTING FROM 21.10.2 COMPONENTS HAVE VERSION IN THE FILE NAME - private String componentName; - private String fileExtension; - private boolean open; - - public PaginatedFile() { - this.mode = MODE.READ_ONLY; + public PaginatedComponentFile() { } - protected PaginatedFile(final String filePath, final MODE mode) throws FileNotFoundException { - this.mode = mode; - open(filePath, mode); + protected PaginatedComponentFile(final String filePath, final MODE mode) throws FileNotFoundException { + super(filePath, mode); } + @Override public void close() { try { LogManager.instance().log(this, Level.FINE, "Closing file %s (id=%d)...", null, filePath, fileId); @@ -74,34 +60,18 @@ public void close() { this.open = false; } - public void rename(final String newFileName) throws IOException { - close(); - LogManager.instance().log(this, Level.FINE, "Renaming file %s (id=%d) to %s...", null, filePath, fileId, newFileName); - final File newFile = new File(newFileName); - new File(filePath).renameTo(newFile); - open(newFile.getAbsolutePath(), mode); - } - - public void drop() throws IOException { - close(); - LogManager.instance().log(this, Level.FINE, "Deleting file %s (id=%d) to %s...", null, filePath, fileId); - Files.delete(Paths.get(getFilePath())); - } - + @Override public long getSize() throws IOException { return channel.size(); } - public long getTotalPages() throws IOException { - return channel.size() / pageSize; - } - + @Override public void flush() throws IOException { channel.force(true); } - public String getFileName() { - return fileName; + public long getTotalPages() throws IOException { + return channel.size() / pageSize; } public long calculateChecksum() throws IOException { @@ -187,52 +157,17 @@ public void read(final CachedPage page) throws IOException { } } - public boolean isOpen() { - return open; - } - - public String getFilePath() { - return filePath; - } - - public String getComponentName() { - return componentName; - } - - public String getFileExtension() { - return fileExtension; - } - - public int getFileId() { - return fileId; - } - - public File getOSFile() { - return osFile; - } - - public void setFileId(final int fileId) { - this.fileId = fileId; - } - public int getPageSize() { return pageSize; } - public int getVersion() { - return version; - } - @Override - public String toString() { - return filePath; - } - - private void open(final String filePath, final MODE mode) throws FileNotFoundException { + protected void open(final String filePath, final MODE mode) throws FileNotFoundException { this.filePath = filePath; - String filePrefix = filePath.substring(0, filePath.lastIndexOf(".")); - this.fileExtension = filePath.substring(filePath.lastIndexOf(".") + 1); + final int lastDotPos = filePath.lastIndexOf("."); + String filePrefix = filePath.substring(0, lastDotPos); + this.fileExtension = filePath.substring(lastDotPos + 1); final int versionPos = filePrefix.lastIndexOf("."); if (filePrefix.charAt(versionPos + 1) == 'v') { diff --git a/engine/src/main/java/com/arcadedb/engine/TransactionManager.java b/engine/src/main/java/com/arcadedb/engine/TransactionManager.java index f26282e86..803ac4c96 100644 --- a/engine/src/main/java/com/arcadedb/engine/TransactionManager.java +++ b/engine/src/main/java/com/arcadedb/engine/TransactionManager.java @@ -54,7 +54,7 @@ public TransactionManager(final DatabaseInternal database) { this.logContext = LogManager.instance().getContext(); - if (database.getMode() == PaginatedFile.MODE.READ_WRITE) { + if (database.getMode() == ComponentFile.MODE.READ_WRITE) { createWALFilePool(); task = new Timer("ArcadeDB TransactionManager " + database.getName()); @@ -276,7 +276,7 @@ public boolean applyChanges(final WALFile.WALTransaction tx, final boolean ignor LogManager.instance().log(this, Level.FINE, "- applying changes from txId=%d", null, tx.txId); for (final WALFile.WALPage txPage : tx.pages) { - final PaginatedFile file; + final PaginatedComponentFile file; final PageId pageId = new PageId(txPage.fileId, txPage.pageNumber); @@ -289,7 +289,7 @@ public boolean applyChanges(final WALFile.WALTransaction tx, final boolean ignor } try { - file = database.getFileManager().getFile(txPage.fileId); + file = (PaginatedComponentFile) database.getFileManager().getFile(txPage.fileId); } catch (final Exception e) { LogManager.instance().log(this, Level.SEVERE, "Error on applying tx changes for page %s", e, txPage); throw e; @@ -339,7 +339,7 @@ public boolean applyChanges(final WALFile.WALTransaction tx, final boolean ignor database.getPageManager().removePageFromCache(modifiedPage.pageId); - final PaginatedComponent component = database.getSchema().getFileById(txPage.fileId); + final PaginatedComponent component = (PaginatedComponent) database.getSchema().getFileById(txPage.fileId); if (component != null) { final int newPageCount = (int) (file.getSize() / file.getPageSize()); if (newPageCount > component.pageCount.get()) diff --git a/engine/src/main/java/com/arcadedb/graph/EdgeIteratorFilter.java b/engine/src/main/java/com/arcadedb/graph/EdgeIteratorFilter.java index 8ab50f7b5..b3bc67eb5 100644 --- a/engine/src/main/java/com/arcadedb/graph/EdgeIteratorFilter.java +++ b/engine/src/main/java/com/arcadedb/graph/EdgeIteratorFilter.java @@ -20,7 +20,7 @@ import com.arcadedb.database.DatabaseInternal; import com.arcadedb.database.RID; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.exception.RecordNotFoundException; import com.arcadedb.exception.SchemaException; import com.arcadedb.log.LogManager; @@ -87,7 +87,7 @@ public Edge next() { @Override protected void handleCorruption(final Exception e, final RID edge, final RID vertex) { if ((e instanceof RecordNotFoundException || e instanceof SchemaException) &&// - database.getMode() == PaginatedFile.MODE.READ_WRITE) { + database.getMode() == ComponentFile.MODE.READ_WRITE) { LogManager.instance().log(this, Level.WARNING, "Error on loading edge %s %s. Fixing it...", e, edge, vertex != null ? "vertex " + vertex : ""); diff --git a/engine/src/main/java/com/arcadedb/graph/GraphEngine.java b/engine/src/main/java/com/arcadedb/graph/GraphEngine.java index 0a5104715..a69771a85 100644 --- a/engine/src/main/java/com/arcadedb/graph/GraphEngine.java +++ b/engine/src/main/java/com/arcadedb/graph/GraphEngine.java @@ -558,7 +558,7 @@ public boolean isVertexConnectedTo(final VertexInternal vertex, final Identifiab if (edgeType == null) throw new IllegalArgumentException("Edge type is null"); - final int[] bucketFilter = vertex.getDatabase().getSchema().getType(edgeType).getBuckets(true).stream().mapToInt(x -> x.getId()).toArray(); + final int[] bucketFilter = vertex.getDatabase().getSchema().getType(edgeType).getBuckets(true).stream().mapToInt(x -> x.getFileId()).toArray(); if (direction == Vertex.DIRECTION.OUT || direction == Vertex.DIRECTION.BOTH) { final EdgeLinkedList outEdges = getEdgeHeadChunk(vertex, Vertex.DIRECTION.OUT); diff --git a/engine/src/main/java/com/arcadedb/index/IndexFactory.java b/engine/src/main/java/com/arcadedb/index/IndexFactory.java index 1d19ca461..b39b3d40f 100644 --- a/engine/src/main/java/com/arcadedb/index/IndexFactory.java +++ b/engine/src/main/java/com/arcadedb/index/IndexFactory.java @@ -18,10 +18,7 @@ */ package com.arcadedb.index; -import com.arcadedb.database.DatabaseInternal; -import com.arcadedb.engine.PaginatedFile; -import com.arcadedb.index.lsm.LSMTreeIndexAbstract; -import com.arcadedb.schema.Type; +import com.arcadedb.schema.IndexBuilder; import java.util.*; @@ -32,14 +29,13 @@ public void register(final String type, final IndexFactoryHandler handler) { map.put(type, handler); } - public IndexInternal createIndex(final String indexType, final DatabaseInternal database, final String indexName, final boolean unique, final String filePath, - final PaginatedFile.MODE mode, final Type[] keyTypes, final int pageSize, final LSMTreeIndexAbstract.NULL_STRATEGY nullStrategy, - final Index.BuildIndexCallback callback) { + public IndexInternal createIndex(final IndexBuilder builder) { + final String indexType = builder.getIndexType().name(); final IndexFactoryHandler handler = map.get(indexType); if (handler == null) throw new IllegalArgumentException("Cannot create index of type '" + indexType + "'"); - return handler.create(database, indexName, unique, filePath, mode, keyTypes, pageSize, nullStrategy, callback); + return handler.create(builder); } } diff --git a/engine/src/main/java/com/arcadedb/index/IndexFactoryHandler.java b/engine/src/main/java/com/arcadedb/index/IndexFactoryHandler.java index 31311f240..ce568f141 100644 --- a/engine/src/main/java/com/arcadedb/index/IndexFactoryHandler.java +++ b/engine/src/main/java/com/arcadedb/index/IndexFactoryHandler.java @@ -18,12 +18,8 @@ */ package com.arcadedb.index; -import com.arcadedb.database.DatabaseInternal; -import com.arcadedb.engine.PaginatedFile; -import com.arcadedb.index.lsm.LSMTreeIndexAbstract; -import com.arcadedb.schema.Type; +import com.arcadedb.schema.IndexBuilder; public interface IndexFactoryHandler { - IndexInternal create(DatabaseInternal database, String name, boolean unique, String filePath, PaginatedFile.MODE mode, Type[] keyTypes, int pageSize, - LSMTreeIndexAbstract.NULL_STRATEGY nullStrategy, Index.BuildIndexCallback callback); + IndexInternal create(IndexBuilder builder); } diff --git a/engine/src/main/java/com/arcadedb/index/IndexInternal.java b/engine/src/main/java/com/arcadedb/index/IndexInternal.java index b204ba563..a1ddb4601 100644 --- a/engine/src/main/java/com/arcadedb/index/IndexInternal.java +++ b/engine/src/main/java/com/arcadedb/index/IndexInternal.java @@ -18,7 +18,7 @@ */ package com.arcadedb.index; -import com.arcadedb.engine.PaginatedComponent; +import com.arcadedb.engine.Component; import com.arcadedb.schema.Type; import com.arcadedb.serializer.json.JSONObject; @@ -29,7 +29,7 @@ * Internal Index interface. */ public interface IndexInternal extends Index { - long build(int batchSize, BuildIndexCallback callback); + long build(int buildIndexBatchSize, BuildIndexCallback callback); boolean compact() throws IOException, InterruptedException; @@ -43,7 +43,7 @@ public interface IndexInternal extends Index { int getFileId(); - PaginatedComponent getPaginatedComponent(); + Component getComponent(); Type[] getKeyTypes(); diff --git a/engine/src/main/java/com/arcadedb/index/TypeIndex.java b/engine/src/main/java/com/arcadedb/index/TypeIndex.java index 13a52f08d..13b712e58 100644 --- a/engine/src/main/java/com/arcadedb/index/TypeIndex.java +++ b/engine/src/main/java/com/arcadedb/index/TypeIndex.java @@ -295,11 +295,11 @@ public int getPageSize() { } @Override - public long build(final int batchSize, final BuildIndexCallback callback) { + public long build(final int buildIndexBatchSize, final BuildIndexCallback callback) { checkIsValid(); long total = 0; for (final IndexInternal index : indexesOnBuckets) - total += index.build(batchSize, callback); + total += index.build(buildIndexBatchSize, callback); return total; } @@ -366,7 +366,7 @@ public int getFileId() { } @Override - public PaginatedComponent getPaginatedComponent() { + public PaginatedComponent getComponent() { throw new UnsupportedOperationException("getPaginatedComponent"); } @@ -436,7 +436,7 @@ public List getIndexesByKeys(final Object[] keys) { // USE THE SHARDED INDEX final List propNames = getPropertyNames(); - List polymorphicIndexesOnKeys = type.getPolymorphicBucketIndexByBucketId(type.getBuckets(false).get(bucketIndex).getId(), propNames); + List polymorphicIndexesOnKeys = type.getPolymorphicBucketIndexByBucketId(type.getBuckets(false).get(bucketIndex).getFileId(), propNames); final List subTypes = type.getSubTypes(); if (!subTypes.isEmpty()) { @@ -444,7 +444,7 @@ public List getIndexesByKeys(final Object[] keys) { polymorphicIndexesOnKeys = new ArrayList<>(polymorphicIndexesOnKeys); for (DocumentType s : subTypes) { - final List subIndexes = s.getPolymorphicBucketIndexByBucketId(s.getBuckets(false).get(bucketIndex).getId(), propNames); + final List subIndexes = s.getPolymorphicBucketIndexByBucketId(s.getBuckets(false).get(bucketIndex).getFileId(), propNames); polymorphicIndexesOnKeys.addAll(subIndexes); } diff --git a/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeFullTextIndex.java b/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeFullTextIndex.java index 722f40667..4fbf5318f 100644 --- a/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeFullTextIndex.java +++ b/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeFullTextIndex.java @@ -21,9 +21,9 @@ import com.arcadedb.database.DatabaseInternal; import com.arcadedb.database.Identifiable; import com.arcadedb.database.RID; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.engine.PaginatedComponent; -import com.arcadedb.engine.PaginatedComponentFactory; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFactory; import com.arcadedb.index.Index; import com.arcadedb.index.IndexCursor; import com.arcadedb.index.IndexCursorEntry; @@ -32,13 +32,14 @@ import com.arcadedb.index.TempIndexCursor; import com.arcadedb.index.TypeIndex; import com.arcadedb.schema.EmbeddedSchema; +import com.arcadedb.schema.IndexBuilder; import com.arcadedb.schema.Schema; import com.arcadedb.schema.Type; +import com.arcadedb.serializer.json.JSONObject; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; -import com.arcadedb.serializer.json.JSONObject; import java.io.*; import java.util.*; @@ -70,18 +71,19 @@ public class LSMTreeFullTextIndex implements Index, IndexInternal { public static class IndexFactoryHandler implements com.arcadedb.index.IndexFactoryHandler { @Override - public IndexInternal create(final DatabaseInternal database, final String name, final boolean unique, final String filePath, final PaginatedFile.MODE mode, - final Type[] keyTypes, final int pageSize, final LSMTreeIndexAbstract.NULL_STRATEGY nullStrategy, final BuildIndexCallback callback) { - if (unique) + public IndexInternal create(final IndexBuilder builder) { + if (builder.isUnique()) throw new IllegalArgumentException("Full text index cannot be unique"); - return new LSMTreeFullTextIndex(database, name, filePath, mode, pageSize, nullStrategy); + + return new LSMTreeFullTextIndex(builder.getDatabase(), builder.getIndexName(), builder.getFilePath(), ComponentFile.MODE.READ_WRITE, builder.getPageSize(), + builder.getNullStrategy()); } } - public static class PaginatedComponentFactoryHandlerNotUnique implements PaginatedComponentFactory.PaginatedComponentFactoryHandler { + public static class PaginatedComponentFactoryHandlerNotUnique implements ComponentFactory.PaginatedComponentFactoryHandler { @Override public PaginatedComponent createOnLoad(final DatabaseInternal database, final String name, final String filePath, final int id, - final PaginatedFile.MODE mode, final int pageSize, final int version) { + final ComponentFile.MODE mode, final int pageSize, final int version) { final LSMTreeFullTextIndex mainIndex = new LSMTreeFullTextIndex(database, name, filePath, id, mode, pageSize, version); return mainIndex.underlyingIndex.mutable; } @@ -90,7 +92,7 @@ public PaginatedComponent createOnLoad(final DatabaseInternal database, final St /** * Creation time. */ - public LSMTreeFullTextIndex(final DatabaseInternal database, final String name, final String filePath, final PaginatedFile.MODE mode, final int pageSize, + public LSMTreeFullTextIndex(final DatabaseInternal database, final String name, final String filePath, final ComponentFile.MODE mode, final int pageSize, final LSMTreeIndexAbstract.NULL_STRATEGY nullStrategy) { analyzer = new StandardAnalyzer(); underlyingIndex = new LSMTreeIndex(database, name, false, filePath, mode, new Type[] { Type.STRING }, pageSize, nullStrategy); @@ -99,7 +101,7 @@ public LSMTreeFullTextIndex(final DatabaseInternal database, final String name, /** * Loading time. */ - public LSMTreeFullTextIndex(final DatabaseInternal database, final String name, final String filePath, final int fileId, final PaginatedFile.MODE mode, + public LSMTreeFullTextIndex(final DatabaseInternal database, final String name, final String filePath, final int fileId, final ComponentFile.MODE mode, final int pageSize, final int version) { try { underlyingIndex = new LSMTreeIndex(database, name, false, filePath, fileId, mode, pageSize, version); @@ -262,8 +264,8 @@ public boolean isUnique() { } @Override - public PaginatedComponent getPaginatedComponent() { - return underlyingIndex.getPaginatedComponent(); + public PaginatedComponent getComponent() { + return underlyingIndex.getComponent(); } @Override @@ -312,8 +314,8 @@ public TypeIndex getTypeIndex() { } @Override - public long build(final int batchSize, final BuildIndexCallback callback) { - return underlyingIndex.build(batchSize, callback); + public long build(final int buildIndexBatchSize, final BuildIndexCallback callback) { + return underlyingIndex.build(buildIndexBatchSize, callback); } @Override diff --git a/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeIndex.java b/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeIndex.java index 65ff7254e..754d9e1df 100644 --- a/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeIndex.java +++ b/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeIndex.java @@ -25,11 +25,11 @@ import com.arcadedb.database.TransactionContext; import com.arcadedb.database.TransactionIndexContext; import com.arcadedb.engine.BasePage; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.engine.MutablePage; import com.arcadedb.engine.PageId; import com.arcadedb.engine.PaginatedComponent; -import com.arcadedb.engine.PaginatedComponentFactory; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFactory; import com.arcadedb.exception.DatabaseIsReadOnlyException; import com.arcadedb.exception.NeedRetryException; import com.arcadedb.exception.TimeoutException; @@ -43,11 +43,13 @@ import com.arcadedb.index.TypeIndex; import com.arcadedb.log.LogManager; import com.arcadedb.schema.EmbeddedSchema; +import com.arcadedb.schema.IndexBuilder; import com.arcadedb.schema.Schema; import com.arcadedb.schema.Type; import com.arcadedb.serializer.BinaryComparator; import com.arcadedb.serializer.BinaryTypes; import com.arcadedb.serializer.json.JSONObject; +import com.arcadedb.utility.FileUtils; import com.arcadedb.utility.LockManager; import com.arcadedb.utility.RWLockContext; @@ -76,16 +78,16 @@ public enum INDEX_STATUS {UNAVAILABLE, AVAILABLE, COMPACTION_SCHEDULED, COMPACTI public static class IndexFactoryHandler implements com.arcadedb.index.IndexFactoryHandler { @Override - public IndexInternal create(final DatabaseInternal database, final String name, final boolean unique, final String filePath, final PaginatedFile.MODE mode, - final Type[] keyTypes, final int pageSize, final LSMTreeIndexAbstract.NULL_STRATEGY nullStrategy, final BuildIndexCallback callback) { - return new LSMTreeIndex(database, name, unique, filePath, mode, keyTypes, pageSize, nullStrategy); + public IndexInternal create(final IndexBuilder builder) { + return new LSMTreeIndex(builder.getDatabase(), builder.getIndexName(), builder.isUnique(), builder.getFilePath(), ComponentFile.MODE.READ_WRITE, + builder.getKeyTypes(), builder.getPageSize(), builder.getNullStrategy()); } } - public static class PaginatedComponentFactoryHandlerUnique implements PaginatedComponentFactory.PaginatedComponentFactoryHandler { + public static class PaginatedComponentFactoryHandlerUnique implements ComponentFactory.PaginatedComponentFactoryHandler { @Override public PaginatedComponent createOnLoad(final DatabaseInternal database, final String name, final String filePath, final int id, - final PaginatedFile.MODE mode, final int pageSize, final int version) throws IOException { + final ComponentFile.MODE mode, final int pageSize, final int version) throws IOException { if (filePath.endsWith(LSMTreeIndexCompacted.UNIQUE_INDEX_EXT)) return new LSMTreeIndexCompacted(null, database, name, true, filePath, id, mode, pageSize, version); @@ -93,10 +95,10 @@ public PaginatedComponent createOnLoad(final DatabaseInternal database, final St } } - public static class PaginatedComponentFactoryHandlerNotUnique implements PaginatedComponentFactory.PaginatedComponentFactoryHandler { + public static class PaginatedComponentFactoryHandlerNotUnique implements ComponentFactory.PaginatedComponentFactoryHandler { @Override public PaginatedComponent createOnLoad(final DatabaseInternal database, final String name, final String filePath, final int id, - final PaginatedFile.MODE mode, final int pageSize, final int version) throws IOException { + final ComponentFile.MODE mode, final int pageSize, final int version) throws IOException { if (filePath.endsWith(LSMTreeIndexCompacted.UNIQUE_INDEX_EXT)) return new LSMTreeIndexCompacted(null, database, name, false, filePath, id, mode, pageSize, version); @@ -107,10 +109,10 @@ public PaginatedComponent createOnLoad(final DatabaseInternal database, final St /** * Called at creation time. */ - public LSMTreeIndex(final DatabaseInternal database, final String name, final boolean unique, final String filePath, final PaginatedFile.MODE mode, + public LSMTreeIndex(final DatabaseInternal database, final String name, final boolean unique, final String filePath, final ComponentFile.MODE mode, final Type[] keyTypes, final int pageSize, final LSMTreeIndexAbstract.NULL_STRATEGY nullStrategy) { try { - this.name = name; + this.name = FileUtils.encode(name, database.getSchema().getEncoding()); this.mutable = new LSMTreeIndexMutable(this, database, name, unique, filePath, mode, keyTypes, pageSize, nullStrategy); } catch (final IOException e) { throw new IndexException("Error on creating index '" + name + "'", e); @@ -121,8 +123,8 @@ public LSMTreeIndex(final DatabaseInternal database, final String name, final bo * Called at load time (1st page only). */ public LSMTreeIndex(final DatabaseInternal database, final String name, final boolean unique, final String filePath, final int id, - final PaginatedFile.MODE mode, final int pageSize, final int version) throws IOException { - this.name = name; + final ComponentFile.MODE mode, final int pageSize, final int version) throws IOException { + this.name = FileUtils.encode(name, database.getSchema().getEncoding()); this.mutable = new LSMTreeIndexMutable(this, database, name, unique, filePath, id, mode, pageSize, version); } @@ -216,7 +218,7 @@ public List getPropertyNames() { @Override public boolean compact() throws IOException, InterruptedException { checkIsValid(); - if (getDatabase().getMode() == PaginatedFile.MODE.READ_ONLY) + if (getDatabase().getMode() == ComponentFile.MODE.READ_ONLY) throw new DatabaseIsReadOnlyException("Cannot update the index '" + getName() + "'"); if (getDatabase().getPageManager().isPageFlushingSuspended()) @@ -475,7 +477,7 @@ public LSMTreeIndexMutable getMutableIndex() { } @Override - public PaginatedComponent getPaginatedComponent() { + public PaginatedComponent getComponent() { return mutable; } @@ -573,7 +575,7 @@ protected LSMTreeIndexMutable splitIndex(final int startingFromPage, final LSMTr } } - public long build(final int batchSize, final BuildIndexCallback callback) { + public long build(final int buildIndexBatchSize, final BuildIndexCallback callback) { checkIsValid(); final AtomicLong total = new AtomicLong(); @@ -588,15 +590,15 @@ public long build(final int batchSize, final BuildIndexCallback callback) { db.getIndexer().addToIndex(LSMTreeIndex.this, record.getIdentity(), (Document) record); total.incrementAndGet(); - if (callback != null) - callback.onDocumentIndexed((Document) record, total.get()); - - if (total.get() % batchSize == 0) { + if (total.get() % buildIndexBatchSize == 0) { // CHUNK OF 100K db.getWrappedDatabaseInstance().commit(); db.getWrappedDatabaseInstance().begin(); } + if (callback != null) + callback.onDocumentIndexed((Document) record, total.get()); + return true; }); diff --git a/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeIndexAbstract.java b/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeIndexAbstract.java index cd368f8f6..80c579be2 100644 --- a/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeIndexAbstract.java +++ b/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeIndexAbstract.java @@ -23,9 +23,9 @@ import com.arcadedb.database.DatabaseInternal; import com.arcadedb.database.RID; import com.arcadedb.engine.BasePage; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.engine.MutablePage; import com.arcadedb.engine.PaginatedComponent; -import com.arcadedb.engine.PaginatedFile; import com.arcadedb.index.IndexCursorEntry; import com.arcadedb.index.IndexException; import com.arcadedb.log.LogManager; @@ -92,7 +92,7 @@ public LookupResult(final boolean found, final boolean outside, final int keyInd * Called at creation time. */ protected LSMTreeIndexAbstract(final LSMTreeIndex mainIndex, final DatabaseInternal database, final String name, final boolean unique, final String filePath, - final String ext, final PaginatedFile.MODE mode, final Type[] keyTypes, final int pageSize, final int version, final NULL_STRATEGY nullStrategy) + final String ext, final ComponentFile.MODE mode, final Type[] keyTypes, final int pageSize, final int version, final NULL_STRATEGY nullStrategy) throws IOException { super(database, name, filePath, ext, mode, pageSize, version); @@ -118,7 +118,7 @@ protected LSMTreeIndexAbstract(final LSMTreeIndex mainIndex, final DatabaseInter */ protected LSMTreeIndexAbstract(final LSMTreeIndex mainIndex, final DatabaseInternal database, final String name, final boolean unique, final String filePath, final String ext, final Type[] keyTypes, final byte[] binaryKeyTypes, final int pageSize, final int version) throws IOException { - super(database, name, filePath, TEMP_EXT + ext, PaginatedFile.MODE.READ_WRITE, pageSize, version); + super(database, name, filePath, TEMP_EXT + ext, ComponentFile.MODE.READ_WRITE, pageSize, version); this.mainIndex = mainIndex; this.serializer = database.getSerializer(); this.comparator = serializer.getComparator(); @@ -132,7 +132,7 @@ protected LSMTreeIndexAbstract(final LSMTreeIndex mainIndex, final DatabaseInter * Called at load time (1st page only). */ protected LSMTreeIndexAbstract(final LSMTreeIndex mainIndex, final DatabaseInternal database, final String name, final boolean unique, final String filePath, - final int id, final PaginatedFile.MODE mode, final int pageSize, final int version) throws IOException { + final int id, final ComponentFile.MODE mode, final int pageSize, final int version) throws IOException { super(database, name, filePath, id, mode, pageSize, version); this.mainIndex = mainIndex; this.serializer = database.getSerializer(); @@ -165,7 +165,7 @@ public NULL_STRATEGY getNullStrategy() { @Override public String toString() { - return name + "(" + getFileId() + ")"; + return componentName + "(" + getFileId() + ")"; } public Type[] getKeyTypes() { diff --git a/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeIndexCompacted.java b/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeIndexCompacted.java index f3d8eb88f..dc1dab981 100644 --- a/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeIndexCompacted.java +++ b/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeIndexCompacted.java @@ -23,9 +23,9 @@ import com.arcadedb.database.RID; import com.arcadedb.database.TrackableBinary; import com.arcadedb.engine.BasePage; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.engine.MutablePage; import com.arcadedb.engine.PageId; -import com.arcadedb.engine.PaginatedFile; import com.arcadedb.exception.DatabaseOperationException; import com.arcadedb.index.IndexCursorEntry; import com.arcadedb.log.LogManager; @@ -58,7 +58,7 @@ public LSMTreeIndexCompacted(final LSMTreeIndex mainIndex, final DatabaseInterna * Called at load time (1st page only). */ protected LSMTreeIndexCompacted(final LSMTreeIndex mainIndex, final DatabaseInternal database, final String name, final boolean unique, final String filePath, - final int id, final PaginatedFile.MODE mode, final int pageSize, final int version) throws IOException { + final int id, final ComponentFile.MODE mode, final int pageSize, final int version) throws IOException { super(mainIndex, database, name, unique, filePath, id, mode, pageSize, version); } @@ -80,7 +80,7 @@ public Set get(final Object[] keys, final int limit) { return set; } catch (final IOException e) { - throw new DatabaseOperationException("Cannot lookup key '" + Arrays.toString(keys) + "' in index '" + name + "'", e); + throw new DatabaseOperationException("Cannot lookup key '" + Arrays.toString(keys) + "' in index '" + componentName + "'", e); } } diff --git a/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeIndexMutable.java b/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeIndexMutable.java index 03afa619d..fdc7813ef 100644 --- a/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeIndexMutable.java +++ b/engine/src/main/java/com/arcadedb/index/lsm/LSMTreeIndexMutable.java @@ -26,9 +26,9 @@ import com.arcadedb.database.TrackableBinary; import com.arcadedb.database.async.DatabaseAsyncExecutorImpl; import com.arcadedb.engine.BasePage; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.engine.MutablePage; import com.arcadedb.engine.PageId; -import com.arcadedb.engine.PaginatedFile; import com.arcadedb.exception.DatabaseIsReadOnlyException; import com.arcadedb.exception.DatabaseOperationException; import com.arcadedb.index.IndexCursor; @@ -59,7 +59,7 @@ public class LSMTreeIndexMutable extends LSMTreeIndexAbstract { * Called at creation time. */ protected LSMTreeIndexMutable(final LSMTreeIndex mainIndex, final DatabaseInternal database, final String name, final boolean unique, final String filePath, - final PaginatedFile.MODE mode, final Type[] keyTypes, final int pageSize, final NULL_STRATEGY nullStrategy) throws IOException { + final ComponentFile.MODE mode, final Type[] keyTypes, final int pageSize, final NULL_STRATEGY nullStrategy) throws IOException { super(mainIndex, database, name, unique, filePath, unique ? UNIQUE_INDEX_EXT : NOTUNIQUE_INDEX_EXT, mode, keyTypes, pageSize, CURRENT_VERSION, nullStrategy); database.checkTransactionIsActive(database.isAutoTransaction()); @@ -81,7 +81,7 @@ protected LSMTreeIndexMutable(final LSMTreeIndex mainIndex, final DatabaseIntern * Called at load time (1st page only). */ protected LSMTreeIndexMutable(final LSMTreeIndex mainIndex, final DatabaseInternal database, final String name, final boolean unique, final String filePath, - final int id, final PaginatedFile.MODE mode, final int pageSize, final int version) throws IOException { + final int id, final ComponentFile.MODE mode, final int pageSize, final int version) throws IOException { super(mainIndex, database, name, unique, filePath, id, mode, pageSize, version); onAfterLoad(); } @@ -127,9 +127,9 @@ public void onAfterLoad() { } catch (final Exception e) { LogManager.instance().log(this, Level.SEVERE, "Invalid sub-index for index '%s', ignoring it. WARNING: This could lead on using partial indexes. Please recreate the index from scratch (error=%s)", - null, name, e.getMessage()); + null, componentName, e.getMessage()); - database.getSchema().dropIndex(name); + database.getSchema().dropIndex(componentName); } } @@ -137,7 +137,7 @@ public void onAfterLoad() { public void onAfterCommit() { if (minPagesToScheduleACompaction > 0 && currentMutablePages >= minPagesToScheduleACompaction) { LogManager.instance() - .log(this, Level.FINE, "Scheduled compaction of index '%s' (currentMutablePages=%d totalPages=%d)", null, name, currentMutablePages, getTotalPages()); + .log(this, Level.FINE, "Scheduled compaction of index '%s' (currentMutablePages=%d totalPages=%d)", null, componentName, currentMutablePages, getTotalPages()); ((DatabaseAsyncExecutorImpl) database.async()).compact(mainIndex); } } @@ -158,8 +158,8 @@ public void remove(final Object[] keys, final Identifiable rid) { } public LSMTreeIndexCompacted createNewForCompaction() throws IOException { - final int last_ = name.lastIndexOf('_'); - final String newName = name.substring(0, last_) + "_" + System.nanoTime(); + final int last_ = componentName.lastIndexOf('_'); + final String newName = componentName.substring(0, last_) + "_" + System.nanoTime(); return new LSMTreeIndexCompacted(mainIndex, database, newName, unique, database.getDatabasePath() + File.separator + newName, keyTypes, binaryKeyTypes, pageSize); @@ -371,7 +371,7 @@ protected MutablePage createNewPage() throws IOException { pos += INT_SERIALIZED_SIZE; if (txPageCounter == 0) { - currentPage.writeInt(pos, subIndex != null ? subIndex.getId() : -1); // SUB-INDEX FILE ID + currentPage.writeInt(pos, subIndex != null ? subIndex.getFileId() : -1); // SUB-INDEX FILE ID pos += INT_SERIALIZED_SIZE; currentPage.writeByte(pos++, (byte) binaryKeyTypes.length); @@ -410,8 +410,8 @@ protected void internalPut(final Object[] keys, final RID[] rids) { if (keys == null) throw new IllegalArgumentException("Keys parameter is null"); - if (database.getMode() == PaginatedFile.MODE.READ_ONLY) - throw new DatabaseIsReadOnlyException("Cannot update the index '" + name + "'"); + if (database.getMode() == ComponentFile.MODE.READ_ONLY) + throw new DatabaseIsReadOnlyException("Cannot update the index '" + componentName + "'"); if (keys.length != binaryKeyTypes.length) throw new IllegalArgumentException("Cannot put an entry in the index with a partial key"); @@ -427,7 +427,7 @@ protected void internalPut(final Object[] keys, final RID[] rids) { final int txPageCounter = getTotalPages(); if (txPageCounter < 1) - throw new IllegalArgumentException("Cannot update the index '" + name + "' because the file is invalid"); + throw new IllegalArgumentException("Cannot update the index '" + componentName + "' because the file is invalid"); int pageNum = txPageCounter - 1; @@ -489,11 +489,11 @@ protected void internalPut(final Object[] keys, final RID[] rids) { if (LogManager.instance().isDebugEnabled()) LogManager.instance() .log(this, Level.FINE, "Put entry %s=%s in index '%s' (page=%s countInPage=%d newPage=%s thread=%d)", Arrays.toString(keys), Arrays.toString(rids), - name, currentPage.getPageId(), count + 1, newPage, Thread.currentThread().getId()); + componentName, currentPage.getPageId(), count + 1, newPage, Thread.currentThread().getId()); } catch (final IOException e) { throw new DatabaseOperationException( - "Cannot index key '" + Arrays.toString(keys) + "' with value '" + Arrays.toString(rids) + "' in index '" + name + "'", e); + "Cannot index key '" + Arrays.toString(keys) + "' with value '" + Arrays.toString(rids) + "' in index '" + componentName + "'", e); } } @@ -501,8 +501,8 @@ protected void internalRemove(final Object[] keys, final Identifiable rid) { if (keys == null) throw new IllegalArgumentException("Keys parameter is null"); - if (database.getMode() == PaginatedFile.MODE.READ_ONLY) - throw new DatabaseIsReadOnlyException("Cannot update the index '" + name + "'"); + if (database.getMode() == ComponentFile.MODE.READ_ONLY) + throw new DatabaseIsReadOnlyException("Cannot update the index '" + componentName + "'"); if (keys.length != binaryKeyTypes.length) throw new IllegalArgumentException("Cannot remove an entry in the index with a partial key"); @@ -518,7 +518,7 @@ protected void internalRemove(final Object[] keys, final Identifiable rid) { final int txPageCounter = getTotalPages(); if (txPageCounter < 1) - throw new IllegalArgumentException("Cannot update the index '" + name + "' because the file is invalid"); + throw new IllegalArgumentException("Cannot update the index '" + componentName + "' because the file is invalid"); int pageNum = txPageCounter - 1; @@ -610,10 +610,10 @@ protected void internalRemove(final Object[] keys, final Identifiable rid) { if (LogManager.instance().isDebugEnabled()) LogManager.instance() .log(this, Level.FINE, "Put removed entry %s=%s (original=%s) in index '%s' (page=%s countInPage=%d newPage=%s)", null, Arrays.toString(keys), - removedRID, rid, name, currentPage.getPageId(), count + 1, newPage); + removedRID, rid, componentName, currentPage.getPageId(), count + 1, newPage); } catch (final IOException e) { - throw new DatabaseOperationException("Cannot index key '" + Arrays.toString(keys) + "' with value '" + rid + "' in index '" + name + "'", e); + throw new DatabaseOperationException("Cannot index key '" + Arrays.toString(keys) + "' with value '" + rid + "' in index '" + componentName + "'", e); } } diff --git a/engine/src/main/java/com/arcadedb/index/vector/HnswVectorIndex.java b/engine/src/main/java/com/arcadedb/index/vector/HnswVectorIndex.java new file mode 100644 index 000000000..0349de8a2 --- /dev/null +++ b/engine/src/main/java/com/arcadedb/index/vector/HnswVectorIndex.java @@ -0,0 +1,1054 @@ +/* + * Copyright 2023 Arcade Data Ltd + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package com.arcadedb.index.vector; + +import com.arcadedb.database.DatabaseInternal; +import com.arcadedb.database.Identifiable; +import com.arcadedb.database.RID; +import com.arcadedb.engine.Component; +import com.arcadedb.engine.ComponentFactory; +import com.arcadedb.engine.ComponentFile; +import com.arcadedb.graph.MutableVertex; +import com.arcadedb.graph.Vertex; +import com.arcadedb.index.IndexCursor; +import com.arcadedb.index.IndexException; +import com.arcadedb.index.IndexInternal; +import com.arcadedb.index.TypeIndex; +import com.arcadedb.index.lsm.LSMTreeIndexAbstract; +import com.arcadedb.index.vector.distance.DistanceFunctionFactory; +import com.arcadedb.schema.EmbeddedSchema; +import com.arcadedb.schema.IndexBuilder; +import com.arcadedb.schema.Schema; +import com.arcadedb.schema.Type; +import com.arcadedb.schema.VectorIndexBuilder; +import com.arcadedb.serializer.json.JSONObject; +import com.arcadedb.utility.FileUtils; +import com.arcadedb.utility.Pair; +import com.github.jelmerk.knn.DistanceFunction; +import com.github.jelmerk.knn.Index; +import com.github.jelmerk.knn.SearchResult; +import com.github.jelmerk.knn.util.Murmur3; +import org.eclipse.collections.api.list.primitive.MutableIntList; + +import java.io.*; +import java.lang.reflect.*; +import java.util.*; +import java.util.concurrent.locks.*; +import java.util.stream.*; + +/** + * This work is derived from the excellent work made by Jelmer Kuperus on https://github.com/jelmerk/hnswlib. + *

+ * Implementation of {@link Index} that implements the hnsw algorithm. + * + * @author Luca Garulli (l.garulli@arcadedata.com) + * @see + * Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs + */ +public class HnswVectorIndex extends Component implements com.arcadedb.index.Index, IndexInternal { + public static final String FILE_EXT = "hnswidx"; + public static final int CURRENT_VERSION = 0; + + private final DistanceFunction distanceFunction; + private final Comparator distanceComparator; + private final MaxValueComparator maxValueDistanceComparator; + private final int dimensions; + private final int maxItemCount; + private final int m; + private final int maxM; + private final int maxM0; + private final double levelLambda; + private int ef; + private final int efConstruction; + public volatile Vertex entryPoint; + + private TypeIndex underlyingIndex; + private final ReentrantLock globalLock; + private final Set excludedCandidates = new HashSet<>(); + private final String vertexType; + private final String edgeType; + private final String vectorPropertyName; + private final String idPropertyName; + private final Map cache; + private String indexName; + + public static class IndexFactoryHandler implements com.arcadedb.index.IndexFactoryHandler { + @Override + public IndexInternal create(final IndexBuilder builder) { + if (!(builder instanceof VectorIndexBuilder)) + throw new IndexException("Expected VectorIndexBuilder but received " + builder); + + return new HnswVectorIndex<>((VectorIndexBuilder) builder); + } + } + + public static class PaginatedComponentFactoryHandlerUnique implements ComponentFactory.PaginatedComponentFactoryHandler { + @Override + public Component createOnLoad(final DatabaseInternal database, final String name, final String filePath, final int id, final ComponentFile.MODE mode, + final int pageSize, final int version) throws IOException { + return new HnswVectorIndex(database, name, filePath, id, version); + } + } + + protected HnswVectorIndex(final VectorIndexBuilder builder) { + super(builder.getDatabase(), builder.getFilePath(), builder.getDatabase().getFileManager().newFileId(), CURRENT_VERSION, builder.getFilePath()); + + this.dimensions = builder.getDimensions(); + this.maxItemCount = builder.getMaxItemCount(); + this.distanceFunction = builder.getDistanceFunction(); + this.distanceComparator = builder.getDistanceComparator(); + this.maxValueDistanceComparator = new MaxValueComparator<>(this.distanceComparator); + + this.m = builder.getM(); + this.maxM = m; + this.maxM0 = m * 2; + this.levelLambda = 1 / Math.log(this.m); + this.efConstruction = Math.max(builder.getEfConstruction(), m); + this.ef = builder.getEf(); + + this.vertexType = builder.getVertexType(); + this.edgeType = builder.getEdgeType(); + this.vectorPropertyName = builder.getVectorPropertyName(); + this.idPropertyName = builder.getIdPropertyName(); + + this.cache = builder.getCache(); + + this.underlyingIndex = builder.getDatabase().getSchema().buildTypeIndex(builder.getVertexType(), new String[] { idPropertyName }).withUnique(true) + .withIgnoreIfExists(true).withType(Schema.INDEX_TYPE.LSM_TREE).create(); + + this.globalLock = new ReentrantLock(); + this.indexName = vertexType + "[" + idPropertyName + "," + vectorPropertyName + "]"; + } + + /** + * Load time. + */ + protected HnswVectorIndex(final DatabaseInternal database, final String indexName, final String filePath, final int id, final int version) + throws IOException { + super(database, indexName, id, version, filePath); + + final String fileContent = FileUtils.readFileAsString(new File(filePath)); + + final JSONObject json = new JSONObject(fileContent); + + this.distanceFunction = DistanceFunctionFactory.getImplementationByClassName(json.getString("distanceFunction")); + if (distanceFunction == null) + throw new IllegalArgumentException("distance function '" + json.getString("distanceFunction") + "' not supported"); + + this.dimensions = json.getInt("dimensions"); + this.distanceComparator = (Comparator) Comparator.naturalOrder(); + this.maxValueDistanceComparator = new MaxValueComparator<>(this.distanceComparator); + this.maxItemCount = json.getInt("maxItemCount"); + this.m = json.getInt("m"); + this.maxM = json.getInt("maxM"); + this.maxM0 = json.getInt("maxM0"); + this.levelLambda = json.getDouble("levelLambda"); + this.ef = json.getInt("ef"); + this.efConstruction = json.getInt("efConstruction"); + + if (json.getString("entryPoint").length() > 0) { + this.entryPoint = new RID(database, json.getString("entryPoint")).asVertex(); + } else + this.entryPoint = null; + + this.vertexType = json.getString("vertexType"); + this.edgeType = json.getString("edgeType"); + this.idPropertyName = json.getString("idPropertyName"); + this.vectorPropertyName = json.getString("vectorPropertyName"); + + this.globalLock = new ReentrantLock(); + this.cache = null; + this.indexName = vertexType + "[" + idPropertyName + "," + vectorPropertyName + "]"; + } + + @Override + public void onAfterSchemaLoad() { + this.underlyingIndex = database.getSchema().buildTypeIndex(vertexType, new String[] { idPropertyName }).withIgnoreIfExists(true).withUnique(true) + .withType(Schema.INDEX_TYPE.LSM_TREE).create(); + } + + @Override + public String getName() { + return indexName; + } + + public List> findNeighbors(final TId id, final int k) { + final Vertex start = get(id); + if (start == null) + return Collections.emptyList(); + + final List> neighbors = findNearest(getVectorFromVertex(start), k + 1).stream() + .filter(result -> !getIdFromVertex(result.item()).equals(id)).limit(k).collect(Collectors.toList()); + + final List> result = new ArrayList<>(neighbors.size()); + for (SearchResult neighbor : neighbors) + result.add(new Pair(neighbor.item(), neighbor.distance())); + return result; + + } + + public boolean add(Vertex vertex) { + final TVector vertexVector = getVectorFromVertex(vertex); + if (Array.getLength(vertexVector) != dimensions) + throw new IllegalArgumentException("Item does not have dimensionality of " + dimensions); + + final TId vertexId = getIdFromVertex(vertex); + final int vertexMaxLevel = getMaxLevelFromVertex(vertex); + + final int randomLevel = assignLevel(vertexId, this.levelLambda); + + final ArrayList[] connections = new ArrayList[randomLevel + 1]; + + for (int level = 0; level <= randomLevel; level++) { + final int levelM = level == 0 ? maxM0 : maxM; + connections[level] = new ArrayList<>(levelM); + } + + globalLock.lock(); + try { + + final long totalEdges = vertex.countEdges(Vertex.DIRECTION.OUT, getEdgeType(0)); + if (totalEdges > 0) + // ALREADY INSERTED + return true; + + vertex = vertex.modify().set("vectorMaxLevel", randomLevel).save(); + if (cache != null) + cache.put(vertex.getIdentity(), vertex); + + final RID vertexRID = vertex.getIdentity(); + synchronized (excludedCandidates) { + excludedCandidates.add(vertexRID); + } + + final Vertex entryPointCopy = entryPoint; + try { + if (entryPoint != null && randomLevel <= getMaxLevelFromVertex(entryPoint)) { + globalLock.unlock(); + } + + Vertex currObj = entryPointCopy; + final int entryPointCopyMaxLevel = getMaxLevelFromVertex(entryPointCopy); + + if (currObj != null) { + if (vertexMaxLevel < entryPointCopyMaxLevel) { + TDistance curDist = distanceFunction.distance(vertexVector, getVectorFromVertex(currObj)); + for (int activeLevel = entryPointCopyMaxLevel; activeLevel > vertexMaxLevel; activeLevel--) { + boolean changed = true; + + while (changed) { + changed = false; + + synchronized (currObj) { + final Iterator candidateConnections = getConnectionsFromVertex(currObj, activeLevel); + while (candidateConnections.hasNext()) { + final Vertex candidateNode = candidateConnections.next(); + final TDistance candidateDistance = distanceFunction.distance(vertexVector, getVectorFromVertex(candidateNode)); + + if (lt(candidateDistance, curDist)) { + curDist = candidateDistance; + currObj = candidateNode; + changed = true; + } + } + } + } + } + } + + for (int level = Math.min(randomLevel, entryPointCopyMaxLevel); level >= 0; level--) { + final PriorityQueue> topCandidates = searchBaseLayer(currObj, vertexVector, efConstruction, level); + + // TODO: MANAGE DELETE OF ENTRYPOINT +// if (entryPointCopy.deleted) { +// TDistance distance = distanceFunction.distance(vertex.vector(), entryPointCopy.item.vector()); +// topCandidates.add(new NodeIdAndDistance<>(entryPointCopy.id, distance, maxValueDistanceComparator)); +// +// if (topCandidates.size() > efConstruction) { +// topCandidates.poll(); +// } +// } + + mutuallyConnectNewElement(vertex, topCandidates, level); + + } + } + + // zoom out to the highest level + if (entryPoint == null || vertexMaxLevel > entryPointCopyMaxLevel) + // this is thread safe because we get the global lock when we add a level + this.entryPoint = vertex; + + return true; + + } finally { + synchronized (excludedCandidates) { + excludedCandidates.remove(vertexRID); + } + } + } finally { + if (globalLock.isHeldByCurrentThread()) { + globalLock.unlock(); + } + } + } + + private Iterator getConnectionsFromVertex(final Vertex vertex, final int level) { + return vertex.getVertices(Vertex.DIRECTION.OUT, edgeType + level).iterator(); + } + + private int countConnectionsFromVertex(final Vertex vertex, final int level) { + return (int) vertex.countEdges(Vertex.DIRECTION.OUT, edgeType + level); + } + + private int getMaxLevelFromVertex(final Vertex vertex) { + if (vertex == null) + return 0; + final Integer vectorMaxLevel = vertex.getInteger("vectorMaxLevel"); + return vectorMaxLevel != null ? vectorMaxLevel : 0; + } + + private Vertex loadVertexFromRID(final Identifiable rid) { + if (rid instanceof Vertex) + return (Vertex) rid; + + Vertex vertex = null; + if (cache != null) + vertex = cache.get(rid); + if (vertex == null) + vertex = rid.asVertex(); + return vertex; + } + + private void mutuallyConnectNewElement(final Vertex newNode, final PriorityQueue> topCandidates, final int level) { + final int bestN = level == 0 ? this.maxM0 : this.maxM; + final RID newNodeId = newNode.getIdentity(); + final TVector newItemVector = getVectorFromVertex(newNode); + + getNeighborsByHeuristic2(topCandidates, m); + + while (!topCandidates.isEmpty()) { + final RID selectedNeighbourId = topCandidates.poll().nodeId; + synchronized (excludedCandidates) { + if (excludedCandidates.contains(selectedNeighbourId)) { + continue; + } + } + + // CREATE THE EDGE TYPE IF NOT PRESENT + final String edgeTypeName = getEdgeType(level); + database.getSchema().getOrCreateEdgeType(edgeTypeName); + + newNode.newEdge(edgeTypeName, selectedNeighbourId, false); + + final Vertex neighbourNode = loadVertexFromRID(selectedNeighbourId); + final TVector neighbourVector = getVectorFromVertex(neighbourNode); + final int neighbourConnectionsAtLevelTotal = countConnectionsFromVertex(neighbourNode, level); + final Iterator neighbourConnectionsAtLevel = getConnectionsFromVertex(neighbourNode, level); + + if (neighbourConnectionsAtLevelTotal < bestN) { + neighbourNode.newEdge(edgeTypeName, newNode, false); + } else { + // finding the "weakest" element to replace it with the new one + final TDistance dMax = distanceFunction.distance(newItemVector, neighbourVector); + final Comparator> comparator = Comparator.>naturalOrder().reversed(); + final PriorityQueue> candidates = new PriorityQueue<>(comparator); + candidates.add(new NodeIdAndDistance<>(newNodeId, dMax, maxValueDistanceComparator)); + + neighbourConnectionsAtLevel.forEachRemaining(neighbourConnection -> { + final TDistance dist = distanceFunction.distance(neighbourVector, getVectorFromVertex(neighbourConnection)); + candidates.add(new NodeIdAndDistance<>(neighbourConnection.getIdentity(), dist, maxValueDistanceComparator)); + }); + + getNeighborsByHeuristic2(candidates, bestN); + + while (!candidates.isEmpty()) { + neighbourNode.newEdge(edgeTypeName, candidates.poll().nodeId, false); + } + } + } + } + + private void getNeighborsByHeuristic2(final PriorityQueue> topCandidates, final int m) { + if (topCandidates.size() < m) + return; + + final PriorityQueue> queueClosest = new PriorityQueue<>(); + final List> returnList = new ArrayList<>(); + + while (!topCandidates.isEmpty()) { + queueClosest.add(topCandidates.poll()); + } + + while (!queueClosest.isEmpty()) { + if (returnList.size() >= m) + break; + + final NodeIdAndDistance currentPair = queueClosest.poll(); + final TDistance distToQuery = currentPair.distance; + + boolean good = true; + for (NodeIdAndDistance secondPair : returnList) { + + final TDistance curdist = distanceFunction.distance(// + getVectorFromVertex(loadVertexFromRID(secondPair.nodeId)),// + getVectorFromVertex(loadVertexFromRID(currentPair.nodeId))); + + if (lt(curdist, distToQuery)) { + good = false; + break; + } + + } + if (good) { + returnList.add(currentPair); + } + } + + topCandidates.addAll(returnList); + } + + public List> findNearest(final TVector destination, final int k) { + if (entryPoint == null) + return Collections.emptyList(); + + final Vertex entryPointCopy = entryPoint; + Vertex currObj = entryPointCopy; + + TDistance curDist = distanceFunction.distance(destination, getVectorFromVertex(currObj)); + + for (int activeLevel = getMaxLevelFromVertex(entryPointCopy); activeLevel > 0; activeLevel--) { + boolean changed = true; + while (changed) { + changed = false; + + final Iterator candidateConnections = getConnectionsFromVertex(currObj, activeLevel); + + while (candidateConnections.hasNext()) { + final Vertex candidateNode = candidateConnections.next(); + + TDistance candidateDistance = distanceFunction.distance(destination, getVectorFromVertex(candidateNode)); + if (lt(candidateDistance, curDist)) { + curDist = candidateDistance; + currObj = candidateNode; + changed = true; + } + } + + } + } + + final PriorityQueue> topCandidates = searchBaseLayer(currObj, destination, Math.max(ef, k), 0); + + while (topCandidates.size() > k) { + topCandidates.poll(); + } + + List> results = new ArrayList<>(topCandidates.size()); + while (!topCandidates.isEmpty()) { + NodeIdAndDistance pair = topCandidates.poll(); + results.add(0, new SearchResult<>(loadVertexFromRID(pair.nodeId), pair.distance, maxValueDistanceComparator)); + } + + return results; + } + + private PriorityQueue> searchBaseLayer(final Vertex entryPointNode, final TVector destination, final int k, final int layer) { + final Set visitedNodes = new HashSet<>(); + + final PriorityQueue> topCandidates = new PriorityQueue<>(Comparator.>naturalOrder().reversed()); + final PriorityQueue> candidateSet = new PriorityQueue<>(); + + TDistance lowerBound; + + final TVector entryPointVector = getVectorFromVertex(entryPointNode); + + final TDistance distance = distanceFunction.distance(destination, entryPointVector); + final NodeIdAndDistance pair = new NodeIdAndDistance<>(entryPointNode.getIdentity(), distance, maxValueDistanceComparator); + + topCandidates.add(pair); + lowerBound = distance; + candidateSet.add(pair); + + // TODO: MANAGE WHEN ENTRY POINT WAS DELETED +// lowerBound = MaxValueComparator.maxValue(); +// NodeIdAndDistance pair = new NodeIdAndDistance<>(entryPointNode.id, lowerBound, maxValueDistanceComparator); +// candidateSet.add(pair); + + visitedNodes.add(entryPointNode.getIdentity()); + + while (!candidateSet.isEmpty()) { + final NodeIdAndDistance currentPair = candidateSet.poll(); + + if (gt(currentPair.distance, lowerBound)) + break; + + final Vertex node = loadVertexFromRID(currentPair.nodeId); + + final Iterator candidates = getConnectionsFromVertex(node, layer); + while (candidates.hasNext()) { + final Vertex candidateNode = candidates.next(); + + if (!visitedNodes.contains(candidateNode.getIdentity())) { + visitedNodes.add(candidateNode.getIdentity()); + + final TDistance candidateDistance = distanceFunction.distance(destination, getVectorFromVertex(candidateNode)); + if (topCandidates.size() < k || gt(lowerBound, candidateDistance)) { + final NodeIdAndDistance candidatePair = new NodeIdAndDistance<>(candidateNode.getIdentity(), candidateDistance, + maxValueDistanceComparator); + + candidateSet.add(candidatePair); + topCandidates.add(candidatePair); + + if (topCandidates.size() > k) + topCandidates.poll(); + + if (!topCandidates.isEmpty()) + lowerBound = topCandidates.peek().distance; + } + } + } + } + + return topCandidates; + } + + /** + * Returns the dimensionality of the items stored in this index. + * + * @return the dimensionality of the items stored in this index + */ + public int getDimensions() { + return dimensions; + } + + /** + * Returns the number of bi-directional links created for every new element during construction. + * + * @return the number of bi-directional links created for every new element during construction + */ + public int getM() { + return m; + } + + /** + * The size of the dynamic list for the nearest neighbors (used during the search) + * + * @return The size of the dynamic list for the nearest neighbors + */ + public int getEf() { + return ef; + } + + /** + * Set the size of the dynamic list for the nearest neighbors (used during the search) + * + * @param ef The size of the dynamic list for the nearest neighbors + */ + public void setEf(int ef) { + this.ef = ef; + } + + /** + * Returns the parameter has the same meaning as ef, but controls the index time / index precision. + * + * @return the parameter has the same meaning as ef, but controls the index time / index precision + */ + public int getEfConstruction() { + return efConstruction; + } + + /** + * Returns the distance function. + * + * @return the distance function + */ + public DistanceFunction getDistanceFunction() { + return distanceFunction; + } + + /** + * Returns the comparator used to compare distances. + * + * @return the comparator used to compare distance + */ + public Comparator getDistanceComparator() { + return distanceComparator; + } + + /** + * Returns the maximum number of items the index can hold. + * + * @return the maximum number of items the index can hold + */ + public int getMaxItemCount() { + return maxItemCount; + } + + public void save(OutputStream out) throws IOException { + try (ObjectOutputStream oos = new ObjectOutputStream(out)) { + oos.writeObject(this); + } + } + + private int assignLevel(final TId value, final double lambda) { + // by relying on the external id to come up with the level, the graph construction should be a lot more stable + // see : https://github.com/nmslib/hnswlib/issues/28 + final int hashCode = value.hashCode(); + final byte[] bytes = new byte[] { (byte) (hashCode >> 24), (byte) (hashCode >> 16), (byte) (hashCode >> 8), (byte) hashCode }; + final double random = Math.abs((double) Murmur3.hash32(bytes) / (double) Integer.MAX_VALUE); + final double r = -Math.log(random) * lambda; + return (int) r; + } + + private boolean lt(final TDistance x, final TDistance y) { + return maxValueDistanceComparator.compare(x, y) < 0; + } + + private boolean gt(final TDistance x, final TDistance y) { + return maxValueDistanceComparator.compare(x, y) > 0; + } + + public TId getIdFromVertex(final Vertex vertex) { + return (TId) vertex.get(idPropertyName); + } + + public TVector getVectorFromVertex(final Vertex vertex) { + return (TVector) vertex.get(vectorPropertyName); + } + + public int getDimensionFromVertex(final Vertex vertex) { + return Array.getLength(getVectorFromVertex(vertex)); + } + + public String getEdgeType(final int level) { + return edgeType + level; + } + + static class NodeIdAndDistance implements Comparable> { + final RID nodeId; + final TDistance distance; + final Comparator distanceComparator; + + NodeIdAndDistance(final RID nodeId, final TDistance distance, final Comparator distanceComparator) { + this.nodeId = nodeId; + this.distance = distance; + this.distanceComparator = distanceComparator; + } + + @Override + public int compareTo(NodeIdAndDistance o) { + return distanceComparator.compare(distance, o.distance); + } + } + + static class MaxValueComparator implements Comparator, Serializable { + + private static final long serialVersionUID = 1L; + + private final Comparator delegate; + + MaxValueComparator(Comparator delegate) { + this.delegate = delegate; + } + + @Override + public int compare(final TDistance o1, final TDistance o2) { + return o1 == null ? o2 == null ? 0 : 1 : o2 == null ? -1 : delegate.compare(o1, o2); + } + + static TDistance maxValue() { + return null; + } + } + + public void save() throws IOException { + FileUtils.writeFile(new File(filePath), toJSON().toString()); + } + + @Override + public JSONObject toJSON() { + final JSONObject json = new JSONObject(); + json.put("indexName", getName()); + json.put("version", CURRENT_VERSION); + json.put("dimensions", dimensions); + json.put("distanceFunction", distanceFunction.getClass().getSimpleName()); + json.put("distanceComparator", distanceComparator.getClass().getSimpleName()); + json.put("maxItemCount", maxItemCount); + json.put("m", m); + json.put("maxM", maxM); + json.put("maxM0", maxM0); + json.put("levelLambda", levelLambda); + json.put("ef", ef); + json.put("efConstruction", efConstruction); + json.put("levelLambda", levelLambda); + json.put("entryPoint", entryPoint == null ? "" : entryPoint.getIdentity().toString()); + + json.put("vertexType", vertexType); + json.put("edgeType", edgeType); + json.put("idPropertyName", idPropertyName); + json.put("vectorPropertyName", vectorPropertyName); + return json; + } + + @Override + public void drop() { + underlyingIndex.drop(); + } + + @Override + public Map getStats() { + return underlyingIndex.getStats(); + } + + @Override + public LSMTreeIndexAbstract.NULL_STRATEGY getNullStrategy() { + return underlyingIndex.getNullStrategy(); + } + + @Override + public void setNullStrategy(final LSMTreeIndexAbstract.NULL_STRATEGY nullStrategy) { + underlyingIndex.setNullStrategy(nullStrategy); + } + + @Override + public boolean isUnique() { + return underlyingIndex.isUnique(); + } + + @Override + public boolean supportsOrderedIterations() { + return underlyingIndex.supportsOrderedIterations(); + } + + @Override + public boolean isAutomatic() { + return underlyingIndex.isAutomatic(); + } + + @Override + public int getPageSize() { + return underlyingIndex.getPageSize(); + } + + @Override + public long build(final int buildIndexBatchSize, final BuildIndexCallback callback) { + return underlyingIndex.build(buildIndexBatchSize, callback); + } + + public long build(final HnswVectorIndexRAM origin, final int buildIndexBatchSize, final BuildIndexCallback vertexCreationCallback, + final BuildIndexCallback edgeCallback) { + if (origin != null) { + // IMPORT FROM RAM Index + final RID[] pointersToRIDMapping = new RID[origin.size()]; + + database.begin(); + + // SAVE ALL THE NODES AS VERTICES AND KEEP AN ARRAY OF RIDS TO BUILD EDGES LATER + int maxLevel = 0; + HnswVectorIndexRAM.ItemIterator iter = origin.iterateNodes(); + for (int totalVertices = 0; iter.hasNext(); ++totalVertices) { + final HnswVectorIndexRAM.Node node = iter.next(); + + final int nodeMaxLevel = node.maxLevel(); + if (nodeMaxLevel > maxLevel) + maxLevel = nodeMaxLevel; + + final MutableVertex vertex = database.newVertex(vertexType).set(idPropertyName, node.item.id()).set(vectorPropertyName, node.item.vector()); + if (nodeMaxLevel > 0) + // SAVE MAX LEVEL INTO THE VERTEX. IF NOT PRESENT, MEANS 0 + vertex.set("vectorMaxLevel", nodeMaxLevel); + + vertex.save(); + + if (vertexCreationCallback != null) + vertexCreationCallback.onDocumentIndexed(vertex, totalVertices); + + pointersToRIDMapping[node.id] = vertex.getIdentity(); + + if (totalVertices % buildIndexBatchSize == 0) { + database.commit(); + database.begin(); + } + } + + database.commit(); + + final Integer entryPoint = origin.getEntryPoint(); + if (entryPoint != null) + this.entryPoint = pointersToRIDMapping[entryPoint].asVertex(); + + // BUILD ALL EDGE TYPES (ONE PER LEVEL) + for (int level = 0; level <= maxLevel; level++) { + // ASSURE THE EDGE TYPE IS CREATED IN THE DATABASE + database.getSchema().getOrCreateEdgeType(getEdgeType(level)); + } + + database.begin(); + + // BUILD THE EDGES + long totalVertices = 0L; + long totalEdges = 0L; + iter = origin.iterateNodes(); + for (int txCounter = 0; iter.hasNext(); ++txCounter) { + final HnswVectorIndexRAM.Node node = iter.next(); + + final Vertex source = pointersToRIDMapping[node.id].asVertex(); + ++totalVertices; + + final MutableIntList[] connections = node.connections(); + for (int level = 0; level < connections.length; level++) { + final String edgeTypeLevel = getEdgeType(level); + + final MutableIntList pointers = connections[level]; + for (int i = 0; i < pointers.size(); i++) { + final int pointer = pointers.get(i); + + final RID destination = pointersToRIDMapping[pointer]; + source.newEdge(edgeTypeLevel, destination, false); + ++totalEdges; + } + } + + if (txCounter % buildIndexBatchSize == 0) { + database.commit(); + database.begin(); + } + + if (edgeCallback != null) + edgeCallback.onDocumentIndexed(source, totalEdges); + } + + database.commit(); + return totalVertices; + } + + // TODO: NOT SUPPORTED WITHOUT RAM INDEX + return 0L; + } + + @Override + public boolean equals(final Object obj) { + if (!(obj instanceof HnswVectorIndex)) + return false; + return componentName.equals(((HnswVectorIndex) obj).componentName) && underlyingIndex.equals(obj); + } + + public List getSubIndexes() { + return underlyingIndex.getSubIndexes(); + } + + @Override + public int hashCode() { + return Objects.hash(componentName, underlyingIndex.hashCode()); + } + + @Override + public String toString() { + final String baseIndex = underlyingIndex.toString(); + return baseIndex.substring(0, baseIndex.length() - 1) + "," + vectorPropertyName + "]"; + } + + @Override + public void setMetadata(final String name, final String[] propertyNames, final int associatedBucketId) { + underlyingIndex.setMetadata(name, propertyNames, associatedBucketId); + } + + @Override + public Component getComponent() { + return this; + } + + @Override + public Type[] getKeyTypes() { + return underlyingIndex.getKeyTypes(); + } + + @Override + public byte[] getBinaryKeyTypes() { + return underlyingIndex.getBinaryKeyTypes(); + } + + @Override + public List getFileIds() { + return underlyingIndex.getFileIds(); + } + + @Override + public void setTypeIndex(final TypeIndex typeIndex) { + underlyingIndex.setTypeIndex(typeIndex); + } + + @Override + public TypeIndex getTypeIndex() { + return underlyingIndex.getTypeIndex(); + } + + @Override + public int getAssociatedBucketId() { + return underlyingIndex.getAssociatedBucketId(); + } + + public void addIndexOnBucket(final IndexInternal index) { + underlyingIndex.addIndexOnBucket(index); + } + + public void removeIndexOnBucket(final IndexInternal index) { + underlyingIndex.removeIndexOnBucket(index); + } + + public IndexInternal[] getIndexesOnBuckets() { + return underlyingIndex.getIndexesOnBuckets(); + } + + public List getIndexesByKeys(final Object[] keys) { + return underlyingIndex.getIndexesByKeys(keys); + } + + public IndexCursor iterator(final boolean ascendingOrder) { + return underlyingIndex.iterator(ascendingOrder); + } + + public IndexCursor iterator(final boolean ascendingOrder, final Object[] fromKeys, final boolean inclusive) { + return underlyingIndex.iterator(ascendingOrder, fromKeys, inclusive); + } + + public IndexCursor range(final boolean ascending, final Object[] beginKeys, final boolean beginKeysInclusive, final Object[] endKeys, + boolean endKeysInclusive) { + return underlyingIndex.range(ascending, beginKeys, beginKeysInclusive, endKeys, endKeysInclusive); + } + + @Override + public IndexCursor get(final Object[] keys) { + return underlyingIndex.get(keys); + } + + @Override + public IndexCursor get(final Object[] keys, final int limit) { + return underlyingIndex.get(keys, limit); + } + + @Override + public void put(final Object[] keys, RID[] rid) { + underlyingIndex.put(keys, rid); + } + + @Override + public void remove(final Object[] keys) { + globalLock.lock(); + try { + final IndexCursor cursor = underlyingIndex.get(keys); + if (!cursor.hasNext()) + return; + + final Vertex vertex = loadVertexFromRID(cursor.next()); + if (vertex.equals(entryPoint)) { + // TODO: CHANGE THE ENTRYPOINT + } + + vertex.delete(); + } finally { + globalLock.unlock(); + } + } + + @Override + public void remove(final Object[] keys, final Identifiable rid) { + globalLock.lock(); + try { + final IndexCursor cursor = underlyingIndex.get(keys); + if (!cursor.hasNext()) + return; + + final Identifiable itemRID = cursor.next(); + if (!itemRID.equals(rid)) + return; + + final Vertex vertex = loadVertexFromRID(itemRID); + if (vertex.equals(entryPoint)) { + // TODO: CHANGE THE ENTRYPOINT + } + + vertex.delete(); + } finally { + globalLock.unlock(); + } + } + + @Override + public long countEntries() { + return underlyingIndex.countEntries(); + } + + @Override + public boolean compact() throws IOException, InterruptedException { + return underlyingIndex.compact(); + } + + @Override + public boolean isCompacting() { + return underlyingIndex.isCompacting(); + } + + @Override + public boolean scheduleCompaction() { + return underlyingIndex.scheduleCompaction(); + } + + @Override + public String getMostRecentFileName() { + return underlyingIndex.getMostRecentFileName(); + } + + @Override + public EmbeddedSchema.INDEX_TYPE getType() { + return EmbeddedSchema.INDEX_TYPE.HSNW; + } + + @Override + public String getTypeName() { + return vertexType; + } + + @Override + public List getPropertyNames() { + return List.of(idPropertyName, vectorPropertyName); + } + + @Override + public void close() { + underlyingIndex.close(); + } + + private Vertex get(final Object id) { + globalLock.lock(); + try { + final IndexCursor cursor = underlyingIndex.get(new Object[] { id }); + if (!cursor.hasNext()) + return null; + + return loadVertexFromRID(cursor.next()); + } finally { + globalLock.unlock(); + } + } +} diff --git a/engine/src/main/java/com/arcadedb/index/vector/HnswVectorIndexRAM.java b/engine/src/main/java/com/arcadedb/index/vector/HnswVectorIndexRAM.java new file mode 100644 index 000000000..f4e32a464 --- /dev/null +++ b/engine/src/main/java/com/arcadedb/index/vector/HnswVectorIndexRAM.java @@ -0,0 +1,1047 @@ +package com.arcadedb.index.vector; + +import com.arcadedb.database.Database; +import com.arcadedb.schema.VectorIndexBuilder; +import com.github.jelmerk.knn.DistanceFunction; +import com.github.jelmerk.knn.Index; +import com.github.jelmerk.knn.Item; +import com.github.jelmerk.knn.SearchResult; +import com.github.jelmerk.knn.hnsw.SizeLimitExceededException; +import com.github.jelmerk.knn.util.ArrayBitSet; +import com.github.jelmerk.knn.util.ClassLoaderObjectInputStream; +import com.github.jelmerk.knn.util.GenericObjectPool; +import com.github.jelmerk.knn.util.Murmur3; +import org.eclipse.collections.api.list.primitive.MutableIntList; +import org.eclipse.collections.api.map.primitive.MutableObjectIntMap; +import org.eclipse.collections.api.map.primitive.MutableObjectLongMap; +import org.eclipse.collections.impl.list.mutable.primitive.IntArrayList; +import org.eclipse.collections.impl.map.mutable.primitive.ObjectIntHashMap; +import org.eclipse.collections.impl.map.mutable.primitive.ObjectLongHashMap; + +import java.io.*; +import java.nio.file.*; +import java.util.*; +import java.util.concurrent.atomic.*; +import java.util.concurrent.locks.*; + +/** + * This work is derived from the excellent work made by Jelmer Kuperus on https://github.com/jelmerk/hnswlib. We forked the entire class only because it was + * not extensible (private members). + *

+ * Implementation of {@link Index} that implements the hnsw algorithm. + * + * @param Type of the external identifier of an item + * @param Type of the vector to perform distance calculation on + * @param Type of items stored in the index + * @param Type of distance between items (expect any numeric type: float, double, int, ..) + * + * @see + * Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs + */ +public class HnswVectorIndexRAM, TDistance> implements Index { + + private static final byte VERSION_1 = 0x01; + + private static final long serialVersionUID = 1L; + + private static final int NO_NODE_ID = -1; + + private DistanceFunction distanceFunction; + private Comparator distanceComparator; + private MaxValueComparator maxValueDistanceComparator; + + private int dimensions; + private int maxItemCount; + private int m; + private int maxM; + private int maxM0; + private double levelLambda; + private int ef; + private int efConstruction; + + private int nodeCount; + + protected volatile Node entryPoint; + + private AtomicReferenceArray> nodes; + private MutableObjectIntMap lookup; + private MutableObjectLongMap deletedItemVersions; + private Map locks; + + private ReentrantLock globalLock; + + private GenericObjectPool visitedBitSetPool; + + private ArrayBitSet excludedCandidates; + + private HnswVectorIndexRAM(final Builder builder) { + this.dimensions = builder.dimensions; + this.maxItemCount = builder.maxItemCount; + this.distanceFunction = builder.distanceFunction; + this.distanceComparator = builder.distanceComparator; + this.maxValueDistanceComparator = new MaxValueComparator<>(this.distanceComparator); + + this.m = builder.m; + this.maxM = builder.m; + this.maxM0 = builder.m * 2; + this.levelLambda = 1 / Math.log(this.m); + this.efConstruction = Math.max(builder.efConstruction, m); + this.ef = builder.ef; + + this.nodes = new AtomicReferenceArray<>(this.maxItemCount); + + this.lookup = new ObjectIntHashMap<>(); + this.deletedItemVersions = new ObjectLongHashMap<>(); + this.locks = new HashMap<>(); + + this.globalLock = new ReentrantLock(); + + this.visitedBitSetPool = new GenericObjectPool<>(() -> new ArrayBitSet(this.maxItemCount), Runtime.getRuntime().availableProcessors()); + + this.excludedCandidates = new ArrayBitSet(this.maxItemCount); + } + + /** + * {@inheritDoc} + */ + @Override + public int size() { + globalLock.lock(); + try { + return lookup.size(); + } finally { + globalLock.unlock(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public Optional get(TId id) { + globalLock.lock(); + try { + int nodeId = lookup.getIfAbsent(id, NO_NODE_ID); + + if (nodeId == NO_NODE_ID) { + return Optional.empty(); + } else { + return Optional.of(nodes.get(nodeId).item); + } + } finally { + globalLock.unlock(); + } + } + + @Override + public Collection items() { + globalLock.lock(); + try { + List results = new ArrayList<>(size()); + + Iterator iter = new HnswVectorIndexRAM.ItemIterator(); + + while (iter.hasNext()) { + results.add(iter.next()); + } + + return results; + } finally { + globalLock.unlock(); + } + } + + public ItemIterator iterateNodes() { + return new HnswVectorIndexRAM.ItemIterator(); + } + + /** + * {@inheritDoc} + */ + @Override + public boolean remove(TId id, long version) { + globalLock.lock(); + try { + int internalNodeId = lookup.getIfAbsent(id, NO_NODE_ID); + + if (internalNodeId == NO_NODE_ID) { + return false; + } + + Node node = nodes.get(internalNodeId); + + if (version < node.item.version()) { + return false; + } + + node.deleted = true; + + lookup.remove(id); + + deletedItemVersions.put(id, version); + + return true; + } finally { + globalLock.unlock(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public boolean add(TItem item) { + if (item.dimensions() != dimensions) + throw new IllegalArgumentException("Item has dimensionality of " + item.dimensions() + " instead of " + dimensions); + + final int randomLevel = assignLevel(item.id(), this.levelLambda); + + IntArrayList[] connections = new IntArrayList[randomLevel + 1]; + + for (int level = 0; level <= randomLevel; level++) { + int levelM = level == 0 ? maxM0 : maxM; + connections[level] = new IntArrayList(levelM); + } + + globalLock.lock(); + + try { + int existingNodeId = lookup.getIfAbsent(item.id(), NO_NODE_ID); + + if (existingNodeId != NO_NODE_ID) { + Node node = nodes.get(existingNodeId); + + if (item.version() < node.item.version()) { + return false; + } + + if (Objects.deepEquals(node.item.vector(), item.vector())) { + node.item = item; + return true; + } else { + remove(item.id(), item.version()); + } + + } else if (item.version() < deletedItemVersions.getIfAbsent(item.id(), -1)) { + return false; + } + + if (nodeCount >= this.maxItemCount) { + throw new SizeLimitExceededException("The number of elements exceeds the specified limit."); + } + + int newNodeId = nodeCount++; + + synchronized (excludedCandidates) { + excludedCandidates.add(newNodeId); + } + + Node newNode = new Node<>(newNodeId, connections, item, false); + + nodes.set(newNodeId, newNode); + lookup.put(item.id(), newNodeId); + deletedItemVersions.remove(item.id()); + + Object lock = locks.computeIfAbsent(item.id(), k -> new Object()); + + Node entryPointCopy = entryPoint; + + try { + synchronized (lock) { + synchronized (newNode) { + + if (entryPoint != null && randomLevel <= entryPoint.maxLevel()) { + globalLock.unlock(); + } + + Node currObj = entryPointCopy; + + if (currObj != null) { + + if (newNode.maxLevel() < entryPointCopy.maxLevel()) { + + TDistance curDist = distanceFunction.distance(item.vector(), currObj.item.vector()); + + for (int activeLevel = entryPointCopy.maxLevel(); activeLevel > newNode.maxLevel(); activeLevel--) { + + boolean changed = true; + + while (changed) { + changed = false; + + synchronized (currObj) { + MutableIntList candidateConnections = currObj.connections[activeLevel]; + + for (int i = 0; i < candidateConnections.size(); i++) { + + int candidateId = candidateConnections.get(i); + + Node candidateNode = nodes.get(candidateId); + + TDistance candidateDistance = distanceFunction.distance(item.vector(), candidateNode.item.vector()); + + if (lt(candidateDistance, curDist)) { + curDist = candidateDistance; + currObj = candidateNode; + changed = true; + } + } + } + } + } + } + + for (int level = Math.min(randomLevel, entryPointCopy.maxLevel()); level >= 0; level--) { + PriorityQueue> topCandidates = searchBaseLayer(currObj, item.vector(), efConstruction, level); + + if (entryPointCopy.deleted) { + TDistance distance = distanceFunction.distance(item.vector(), entryPointCopy.item.vector()); + topCandidates.add(new NodeIdAndDistance<>(entryPointCopy.id, distance, maxValueDistanceComparator)); + + if (topCandidates.size() > efConstruction) { + topCandidates.poll(); + } + } + + mutuallyConnectNewElement(newNode, topCandidates, level); + + } + } + + // zoom out to the highest level + if (entryPoint == null || newNode.maxLevel() > entryPointCopy.maxLevel()) { + // this is thread safe because we get the global lock when we add a level + this.entryPoint = newNode; + } + + return true; + } + } + } finally { + synchronized (excludedCandidates) { + excludedCandidates.remove(newNodeId); + } + } + } finally { + if (globalLock.isHeldByCurrentThread()) { + globalLock.unlock(); + } + } + } + + private void mutuallyConnectNewElement(Node newNode, PriorityQueue> topCandidates, int level) { + + int bestN = level == 0 ? this.maxM0 : this.maxM; + + int newNodeId = newNode.id; + TVector newItemVector = newNode.item.vector(); + MutableIntList newItemConnections = newNode.connections[level]; + + getNeighborsByHeuristic2(topCandidates, m); + + while (!topCandidates.isEmpty()) { + int selectedNeighbourId = topCandidates.poll().nodeId; + + synchronized (excludedCandidates) { + if (excludedCandidates.contains(selectedNeighbourId)) { + continue; + } + } + + newItemConnections.add(selectedNeighbourId); + + Node neighbourNode = nodes.get(selectedNeighbourId); + + synchronized (neighbourNode) { + + TVector neighbourVector = neighbourNode.item.vector(); + + MutableIntList neighbourConnectionsAtLevel = neighbourNode.connections[level]; + + if (neighbourConnectionsAtLevel.size() < bestN) { + neighbourConnectionsAtLevel.add(newNodeId); + } else { + // finding the "weakest" element to replace it with the new one + + TDistance dMax = distanceFunction.distance(newItemVector, neighbourNode.item.vector()); + + Comparator> comparator = Comparator.>naturalOrder().reversed(); + + PriorityQueue> candidates = new PriorityQueue<>(comparator); + candidates.add(new NodeIdAndDistance<>(newNodeId, dMax, maxValueDistanceComparator)); + + neighbourConnectionsAtLevel.forEach(id -> { + TDistance dist = distanceFunction.distance(neighbourVector, nodes.get(id).item.vector()); + + candidates.add(new NodeIdAndDistance<>(id, dist, maxValueDistanceComparator)); + }); + + getNeighborsByHeuristic2(candidates, bestN); + + neighbourConnectionsAtLevel.clear(); + + while (!candidates.isEmpty()) { + neighbourConnectionsAtLevel.add(candidates.poll().nodeId); + } + } + } + } + } + + private void getNeighborsByHeuristic2(PriorityQueue> topCandidates, int m) { + + if (topCandidates.size() < m) { + return; + } + + PriorityQueue> queueClosest = new PriorityQueue<>(); + List> returnList = new ArrayList<>(); + + while (!topCandidates.isEmpty()) { + queueClosest.add(topCandidates.poll()); + } + + while (!queueClosest.isEmpty()) { + if (returnList.size() >= m) { + break; + } + + NodeIdAndDistance currentPair = queueClosest.poll(); + + TDistance distToQuery = currentPair.distance; + + boolean good = true; + for (NodeIdAndDistance secondPair : returnList) { + + TDistance curdist = distanceFunction.distance(nodes.get(secondPair.nodeId).item.vector(), nodes.get(currentPair.nodeId).item.vector()); + + if (lt(curdist, distToQuery)) { + good = false; + break; + } + + } + if (good) { + returnList.add(currentPair); + } + } + + topCandidates.addAll(returnList); + } + + /** + * {@inheritDoc} + */ + @Override + public List> findNearest(TVector destination, int k) { + + if (entryPoint == null) { + return Collections.emptyList(); + } + + Node entryPointCopy = entryPoint; + + Node currObj = entryPointCopy; + + TDistance curDist = distanceFunction.distance(destination, currObj.item.vector()); + + for (int activeLevel = entryPointCopy.maxLevel(); activeLevel > 0; activeLevel--) { + + boolean changed = true; + + while (changed) { + changed = false; + + synchronized (currObj) { + MutableIntList candidateConnections = currObj.connections[activeLevel]; + + for (int i = 0; i < candidateConnections.size(); i++) { + + int candidateId = candidateConnections.get(i); + + TDistance candidateDistance = distanceFunction.distance(destination, nodes.get(candidateId).item.vector()); + if (lt(candidateDistance, curDist)) { + curDist = candidateDistance; + currObj = nodes.get(candidateId); + changed = true; + } + } + } + + } + } + + PriorityQueue> topCandidates = searchBaseLayer(currObj, destination, Math.max(ef, k), 0); + + while (topCandidates.size() > k) { + topCandidates.poll(); + } + + List> results = new ArrayList<>(topCandidates.size()); + while (!topCandidates.isEmpty()) { + NodeIdAndDistance pair = topCandidates.poll(); + results.add(0, new SearchResult<>(nodes.get(pair.nodeId).item, pair.distance, maxValueDistanceComparator)); + } + + return results; + } + + /** + * Changes the maximum capacity of the index. + * + * @param newSize new size of the index + */ + public void resize(int newSize) { + globalLock.lock(); + try { + this.maxItemCount = newSize; + + this.visitedBitSetPool = new GenericObjectPool<>(() -> new ArrayBitSet(this.maxItemCount), Runtime.getRuntime().availableProcessors()); + + AtomicReferenceArray> newNodes = new AtomicReferenceArray<>(newSize); + for (int i = 0; i < this.nodes.length(); i++) { + newNodes.set(i, this.nodes.get(i)); + } + this.nodes = newNodes; + + this.excludedCandidates = new ArrayBitSet(this.excludedCandidates, newSize); + } finally { + globalLock.unlock(); + } + } + + private PriorityQueue> searchBaseLayer(Node entryPointNode, TVector destination, int k, int layer) { + + ArrayBitSet visitedBitSet = visitedBitSetPool.borrowObject(); + + try { + PriorityQueue> topCandidates = new PriorityQueue<>(Comparator.>naturalOrder().reversed()); + PriorityQueue> candidateSet = new PriorityQueue<>(); + + TDistance lowerBound; + + if (!entryPointNode.deleted) { + TDistance distance = distanceFunction.distance(destination, entryPointNode.item.vector()); + NodeIdAndDistance pair = new NodeIdAndDistance<>(entryPointNode.id, distance, maxValueDistanceComparator); + + topCandidates.add(pair); + lowerBound = distance; + candidateSet.add(pair); + + } else { + lowerBound = MaxValueComparator.maxValue(); + NodeIdAndDistance pair = new NodeIdAndDistance<>(entryPointNode.id, lowerBound, maxValueDistanceComparator); + candidateSet.add(pair); + } + + visitedBitSet.add(entryPointNode.id); + + while (!candidateSet.isEmpty()) { + + NodeIdAndDistance currentPair = candidateSet.poll(); + + if (gt(currentPair.distance, lowerBound)) { + break; + } + + Node node = nodes.get(currentPair.nodeId); + + synchronized (node) { + + MutableIntList candidates = node.connections[layer]; + + for (int i = 0; i < candidates.size(); i++) { + + int candidateId = candidates.get(i); + + if (!visitedBitSet.contains(candidateId)) { + + visitedBitSet.add(candidateId); + + Node candidateNode = nodes.get(candidateId); + + TDistance candidateDistance = distanceFunction.distance(destination, candidateNode.item.vector()); + + if (topCandidates.size() < k || gt(lowerBound, candidateDistance)) { + + NodeIdAndDistance candidatePair = new NodeIdAndDistance<>(candidateId, candidateDistance, maxValueDistanceComparator); + + candidateSet.add(candidatePair); + + if (!candidateNode.deleted) { + topCandidates.add(candidatePair); + } + + if (topCandidates.size() > k) { + topCandidates.poll(); + } + + if (!topCandidates.isEmpty()) { + lowerBound = topCandidates.peek().distance; + } + } + } + } + + } + } + + return topCandidates; + } finally { + visitedBitSet.clear(); + visitedBitSetPool.returnObject(visitedBitSet); + } + } + + /** + * Returns the dimensionality of the items stored in this index. + * + * @return the dimensionality of the items stored in this index + */ + public int getDimensions() { + return dimensions; + } + + /** + * Returns the number of bi-directional links created for every new element during construction. + * + * @return the number of bi-directional links created for every new element during construction + */ + public int getM() { + return m; + } + + /** + * The size of the dynamic list for the nearest neighbors (used during the search) + * + * @return The size of the dynamic list for the nearest neighbors + */ + public int getEf() { + return ef; + } + + /** + * Set the size of the dynamic list for the nearest neighbors (used during the search) + * + * @param ef The size of the dynamic list for the nearest neighbors + */ + public void setEf(int ef) { + this.ef = ef; + } + + /** + * Returns the parameter has the same meaning as ef, but controls the index time / index precision. + * + * @return the parameter has the same meaning as ef, but controls the index time / index precision + */ + public int getEfConstruction() { + return efConstruction; + } + + /** + * Returns the distance function. + * + * @return the distance function + */ + public DistanceFunction getDistanceFunction() { + return distanceFunction; + } + + /** + * Returns the comparator used to compare distances. + * + * @return the comparator used to compare distance + */ + public Comparator getDistanceComparator() { + return distanceComparator; + } + + /** + * Returns the maximum number of items the index can hold. + * + * @return the maximum number of items the index can hold + */ + public int getMaxItemCount() { + return maxItemCount; + } + + /** + * {@inheritDoc} + */ + @Override + public void save(OutputStream out) throws IOException { + try (ObjectOutputStream oos = new ObjectOutputStream(out)) { + oos.writeObject(this); + } + } + + /** + * Restores a {@link HnswVectorIndexRAM} from a File. + * + * @param file File to restore the index from + * @param Type of the external identifier of an item + * @param Type of the vector to perform distance calculation on + * @param Type of items stored in the index + * @param Type of distance between items (expect any numeric type: float, double, int, ..) + * + * @return The restored index + * + * @throws IOException in case of an I/O exception + */ + public static , TDistance> HnswVectorIndexRAM load(File file) + throws IOException { + return load(new FileInputStream(file)); + } + + /** + * Restores a {@link HnswVectorIndexRAM} from a File. + * + * @param file File to restore the index from + * @param classLoader the classloader to use + * @param Type of the external identifier of an item + * @param Type of the vector to perform distance calculation on + * @param Type of items stored in the index + * @param Type of distance between items (expect any numeric type: float, double, int, ..) + * + * @return The restored index + * + * @throws IOException in case of an I/O exception + */ + public static , TDistance> HnswVectorIndexRAM load(File file, + ClassLoader classLoader) throws IOException { + return load(new FileInputStream(file), classLoader); + } + + /** + * Restores a {@link HnswVectorIndexRAM} from a Path. + * + * @param path Path to restore the index from + * @param Type of the external identifier of an item + * @param Type of the vector to perform distance calculation on + * @param Type of items stored in the index + * @param Type of distance between items (expect any numeric type: float, double, int, ..) + * + * @return The restored index + * + * @throws IOException in case of an I/O exception + */ + public static , TDistance> HnswVectorIndexRAM load(Path path) + throws IOException { + return load(Files.newInputStream(path)); + } + + /** + * Restores a {@link HnswVectorIndexRAM} from a Path. + * + * @param path Path to restore the index from + * @param classLoader the classloader to use + * @param Type of the external identifier of an item + * @param Type of the vector to perform distance calculation on + * @param Type of items stored in the index + * @param Type of distance between items (expect any numeric type: float, double, int, ..) + * + * @return The restored index + * + * @throws IOException in case of an I/O exception + */ + public static , TDistance> HnswVectorIndexRAM load(Path path, + ClassLoader classLoader) throws IOException { + return load(Files.newInputStream(path), classLoader); + } + + /** + * Restores a {@link HnswVectorIndexRAM} from an InputStream. + * + * @param inputStream InputStream to restore the index from + * @param Type of the external identifier of an item + * @param Type of the vector to perform distance calculation on + * @param Type of items stored in the index + * @param Type of distance between items (expect any numeric type: float, double, int, ...). + * + * @return The restored index + * + * @throws IOException in case of an I/O exception + * @throws IllegalArgumentException in case the file cannot be read + */ + public static , TDistance> HnswVectorIndexRAM load(InputStream inputStream) + throws IOException { + return load(inputStream, Thread.currentThread().getContextClassLoader()); + } + + /** + * Restores a {@link HnswVectorIndexRAM} from an InputStream. + * + * @param inputStream InputStream to restore the index from + * @param classLoader the classloader to use + * @param Type of the external identifier of an item + * @param Type of the vector to perform distance calculation on + * @param Type of items stored in the index + * @param Type of distance between items (expect any numeric type: float, double, int, ...). + * + * @return The restored index + * + * @throws IOException in case of an I/O exception + * @throws IllegalArgumentException in case the file cannot be read + */ + @SuppressWarnings("unchecked") + public static , TDistance> HnswVectorIndexRAM load(InputStream inputStream, + ClassLoader classLoader) throws IOException { + + try (ObjectInputStream ois = new ClassLoaderObjectInputStream(classLoader, inputStream)) { + return (HnswVectorIndexRAM) ois.readObject(); + } catch (ClassNotFoundException e) { + throw new IllegalArgumentException("Could not read input file.", e); + } + } + + /** + * Start the process of building a new HNSW index. + * + * @param dimensions the dimensionality of the vectors stored in the index + * @param distanceFunction the distance function + * @param maxItemCount maximum number of items the index can hold + * @param Type of the vector to perform distance calculation on + * @param Type of distance between items (expect any numeric type: float, double, int, ..) + * + * @return a builder + */ + public static , TDistance extends Comparable> Builder newBuilder( + int dimensions, DistanceFunction distanceFunction, int maxItemCount) { + + Comparator distanceComparator = Comparator.naturalOrder(); + + return new Builder<>(dimensions, distanceFunction, distanceComparator, maxItemCount); + } + + /** + * Start the process of building a new HNSW index. + * + * @param dimensions the dimensionality of the vectors stored in the index + * @param distanceFunction the distance function + * @param distanceComparator used to compare distances + * @param maxItemCount maximum number of items the index can hold + * @param Type of the vector to perform distance calculation on + * @param Type of distance between items (expect any numeric type: float, double, int, ..) + * + * @return a builder + */ + public static , TDistance> Builder newBuilder(final int dimensions, + final DistanceFunction distanceFunction, final Comparator distanceComparator, final int maxItemCount) { + + return new Builder<>(dimensions, distanceFunction, distanceComparator, maxItemCount); + } + + private int assignLevel(final TId value, final double lambda) { + // by relying on the external id to come up with the level, the graph construction should be a lot mor stable + // see : https://github.com/nmslib/hnswlib/issues/28 + int hashCode = value.hashCode(); + + byte[] bytes = new byte[] { (byte) (hashCode >> 24), (byte) (hashCode >> 16), (byte) (hashCode >> 8), (byte) hashCode }; + + double random = Math.abs((double) Murmur3.hash32(bytes) / (double) Integer.MAX_VALUE); + + double r = -Math.log(random) * lambda; + return (int) r; + } + + private boolean lt(TDistance x, TDistance y) { + return maxValueDistanceComparator.compare(x, y) < 0; + } + + private boolean gt(TDistance x, TDistance y) { + return maxValueDistanceComparator.compare(x, y) > 0; + } + + public VectorIndexBuilder createPersistentIndex(final Database database) { + return new VectorIndexBuilder(database, this); + } + + public Integer getEntryPoint() { + return entryPoint != null ? entryPoint.id : null; + } + + public class ItemIterator implements Iterator> { + + private int done = 0; + private int index = 0; + + @Override + public boolean hasNext() { + return done < HnswVectorIndexRAM.this.size(); + } + + @Override + public Node next() { + HnswVectorIndexRAM.Node node; + + do { + node = HnswVectorIndexRAM.this.nodes.get(index++); + } while (node == null || node.deleted); + + done++; + + return node; + } + } + + public static class Node implements Serializable { + + private static final long serialVersionUID = 1L; + + public final int id; + + final MutableIntList[] connections; + + public volatile TItem item; + + volatile boolean deleted; + + Node(int id, MutableIntList[] connections, TItem item, boolean deleted) { + this.id = id; + this.connections = connections; + this.item = item; + this.deleted = deleted; + } + + public int maxLevel() { + return this.connections.length - 1; + } + + public MutableIntList[] connections() { + return connections; + } + } + + static class NodeIdAndDistance implements Comparable> { + + final int nodeId; + final TDistance distance; + final Comparator distanceComparator; + + NodeIdAndDistance(int nodeId, TDistance distance, Comparator distanceComparator) { + this.nodeId = nodeId; + this.distance = distance; + this.distanceComparator = distanceComparator; + } + + @Override + public int compareTo(NodeIdAndDistance o) { + return distanceComparator.compare(distance, o.distance); + } + } + + static class MaxValueComparator implements Comparator, Serializable { + + private static final long serialVersionUID = 1L; + + private final Comparator delegate; + + MaxValueComparator(Comparator delegate) { + this.delegate = delegate; + } + + @Override + public int compare(TDistance o1, TDistance o2) { + return o1 == null ? o2 == null ? 0 : 1 : o2 == null ? -1 : delegate.compare(o1, o2); + } + + static TDistance maxValue() { + return null; + } + } + + /** + * Builder for initializing an {@link HnswVectorIndexRAM} instance. + * + * @param Type of the vector to perform distance calculation on + * @param Type of distance between items (expect any numeric type: float, double, int, ..) + */ + public static class Builder, TDistance> { + + public static final int DEFAULT_M = 10; + public static final int DEFAULT_EF = 10; + public static final int DEFAULT_EF_CONSTRUCTION = 200; + public static final boolean DEFAULT_REMOVE_ENABLED = false; + + int dimensions; + DistanceFunction distanceFunction; + Comparator distanceComparator; + int maxItemCount; + int m = DEFAULT_M; + int ef = DEFAULT_EF; + int efConstruction = DEFAULT_EF_CONSTRUCTION; + + /** + * Constructs a new {@link Builder} instance. + * + * @param dimensions the dimensionality of the vectors stored in the index + * @param distanceFunction the distance function + * @param maxItemCount the maximum number of elements in the index + */ + Builder(int dimensions, DistanceFunction distanceFunction, Comparator distanceComparator, int maxItemCount) { + this.dimensions = dimensions; + this.distanceFunction = distanceFunction; + this.distanceComparator = distanceComparator; + this.maxItemCount = maxItemCount; + } + + /** + * Sets the number of bi-directional links created for every new element during construction. Reasonable range + * for m is 2-100. Higher m work better on datasets with high intrinsic dimensionality and/or high recall, + * while low m work better for datasets with low intrinsic dimensionality and/or low recalls. The parameter + * also determines the algorithm's memory consumption. + * As an example for d = 4 random vectors optimal m for search is somewhere around 6, while for high dimensional + * datasets (word embeddings, good face descriptors), higher M are required (e.g. m = 48, 64) for optimal + * performance at high recall. The range mM = 12-48 is ok for the most of the use cases. When m is changed one + * has to update the other parameters. Nonetheless, ef and efConstruction parameters can be roughly estimated by + * assuming that m efConstruction is a constant. + * + * @param m the number of bi-directional links created for every new element during construction + * + * @return the builder. + */ + public Builder withM(int m) { + this.m = m; + return this; + } + + /** + * ` + * The parameter has the same meaning as ef, but controls the index time / index precision. Bigger efConstruction + * leads to longer construction, but better index quality. At some point, increasing efConstruction does not + * improve the quality of the index. One way to check if the selection of ef_construction was ok is to measure + * a recall for M nearest neighbor search when ef = efConstruction: if the recall is lower than 0.9, then + * there is room for improvement. + * + * @param efConstruction controls the index time / index precision + * + * @return the builder + */ + public Builder withEfConstruction(int efConstruction) { + this.efConstruction = efConstruction; + return this; + } + + /** + * The size of the dynamic list for the nearest neighbors (used during the search). Higher ef leads to more + * accurate but slower search. The value ef of can be anything between k and the size of the dataset. + * + * @param ef size of the dynamic list for the nearest neighbors + * + * @return the builder + */ + public Builder withEf(int ef) { + this.ef = ef; + return this; + } + + /** + * Build the index. + * + * @return the hnsw index instance + */ + public HnswVectorIndexRAM build() { + return new HnswVectorIndexRAM<>(this); + } + } +} diff --git a/engine/src/main/java/com/arcadedb/index/vector/VectorUtils.java b/engine/src/main/java/com/arcadedb/index/vector/VectorUtils.java new file mode 100644 index 000000000..2eb4bceec --- /dev/null +++ b/engine/src/main/java/com/arcadedb/index/vector/VectorUtils.java @@ -0,0 +1,98 @@ +/* + * Copyright 2023 Arcade Data Ltd + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package com.arcadedb.index.vector; + +/** + * This work is derived from the excellent work made by Jelmer Kuperus on https://github.com/jelmerk/hnswlib. + *

+ * Misc utility methods for dealing with vectors. + */ +public final class VectorUtils { + + private VectorUtils() { + } + + /** + * Calculates the magnitude of the vector. + * + * @param vector The vector to calculate magnitude for. + * + * @return The magnitude. + */ + public static double magnitude(final double[] vector) { + double magnitude = 0.0f; + for (double aDouble : vector) { + magnitude += aDouble * aDouble; + } + return Math.sqrt(magnitude); + } + + /** + * Turns vector to unit vector. + * + * @param vector The vector to normalize. + * + * @return the input vector as a unit vector + */ + public static double[] normalize(final double[] vector) { + + final double[] result = new double[vector.length]; + + final double normFactor = 1 / magnitude(vector); + for (int i = 0; i < vector.length; i++) { + result[i] = vector[i] * normFactor; + } + return result; + } + + /** + * Calculates the magnitude of the vector. + * + * @param vector The vector to calculate magnitude for. + * + * @return The magnitude. + */ + public static float magnitude(final float[] vector) { + float magnitude = 0.0f; + for (float aFloat : vector) { + magnitude += aFloat * aFloat; + } + return (float) Math.sqrt(magnitude); + } + + /** + * Turns vector to unit vector. + * + * @param vector The vector to normalize. + * + * @return the input vector as a unit vector + */ + public static float[] normalize(final float[] vector) { + final float[] result = new float[vector.length]; + + final float normFactor = 1 / magnitude(vector); + for (int i = 0; i < vector.length; i++) { + result[i] = vector[i] * normFactor; + } + return result; + } +} diff --git a/engine/src/main/java/com/arcadedb/index/vector/distance/ChebyshevDistance.java b/engine/src/main/java/com/arcadedb/index/vector/distance/ChebyshevDistance.java new file mode 100644 index 000000000..19cec437b --- /dev/null +++ b/engine/src/main/java/com/arcadedb/index/vector/distance/ChebyshevDistance.java @@ -0,0 +1,69 @@ +/* + * Copyright 2023 Arcade Data Ltd + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package com.arcadedb.index.vector.distance; + +import com.github.jelmerk.knn.DistanceFunction; + +/** + * Implementation of {@link DistanceFunction} that calculates the chebyshev distance. + * + * @author @gramian + */ +public class ChebyshevDistance { + public static class FloatChebyshevDistance implements DistanceFunction { + /** + * Calculates the chebyshev distance. + * + * @param u Left vector. + * @param v Right vector. + * + * @return Chebyshev distance between u and v. + */ + @Override + public Float distance(final float[] u, final float[] v) { + float max = 0.0F; + for (int i = 0; i < u.length; i++) { + max = Math.max(max, Math.abs(u[i] - v[i])); + } + return max; + } + } + + public static class DoubleChebyshevDistance implements DistanceFunction { + /** + * Calculates the chebyshev distance. + * + * @param u Left vector. + * @param v Right vector. + * + * @return Chebyshev distance between u and v. + */ + @Override + public Double distance(final double[] u, final double[] v) { + double max = 0.0D; + for (int i = 0; i < u.length; i++) { + max = Math.max(max, Math.abs(u[i] - v[i])); + } + return max; + } + } +} diff --git a/engine/src/main/java/com/arcadedb/index/vector/distance/DistanceFunctionFactory.java b/engine/src/main/java/com/arcadedb/index/vector/distance/DistanceFunctionFactory.java new file mode 100644 index 000000000..927e60e40 --- /dev/null +++ b/engine/src/main/java/com/arcadedb/index/vector/distance/DistanceFunctionFactory.java @@ -0,0 +1,71 @@ +/* + * Copyright 2023 Arcade Data Ltd + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package com.arcadedb.index.vector.distance; + +import com.github.jelmerk.knn.DistanceFunction; +import com.github.jelmerk.knn.DistanceFunctions; + +import java.util.*; + +/** + * Factory for distance functions. + * + * @author Luca Garulli (l.garulli@arcadedata.com) + */ +public class DistanceFunctionFactory { + private static final Map implementationsByName = new HashMap<>(); + private static final Map implementationsByClassName = new HashMap<>(); + + static { + registerImplementation("FloatCosine", DistanceFunctions.FLOAT_COSINE_DISTANCE); + registerImplementation("FloatInnerProduct", DistanceFunctions.FLOAT_INNER_PRODUCT); + registerImplementation("FloatEuclidean", DistanceFunctions.FLOAT_EUCLIDEAN_DISTANCE); + registerImplementation("FloatCanberra", DistanceFunctions.FLOAT_CANBERRA_DISTANCE); + registerImplementation("FloatBrayCurtis", DistanceFunctions.FLOAT_BRAY_CURTIS_DISTANCE); + registerImplementation("FloatCorrelation", DistanceFunctions.FLOAT_CORRELATION_DISTANCE); + registerImplementation("FloatManhattan", DistanceFunctions.FLOAT_MANHATTAN_DISTANCE); + registerImplementation("FloatChebyshev", new ChebyshevDistance.FloatChebyshevDistance()); + registerImplementation("DoubleCosine", DistanceFunctions.DOUBLE_COSINE_DISTANCE); + registerImplementation("DoubleInnerProduct", DistanceFunctions.DOUBLE_INNER_PRODUCT); + registerImplementation("DoubleEuclidean", DistanceFunctions.DOUBLE_EUCLIDEAN_DISTANCE); + registerImplementation("DoubleCanberra", DistanceFunctions.DOUBLE_CANBERRA_DISTANCE); + registerImplementation("DoubleBrayCurtis", DistanceFunctions.DOUBLE_BRAY_CURTIS_DISTANCE); + registerImplementation("DoubleCorrelation", DistanceFunctions.DOUBLE_CORRELATION_DISTANCE); + registerImplementation("DoubleManhattan", DistanceFunctions.DOUBLE_MANHATTAN_DISTANCE); + registerImplementation("DoubleChebyshev", new ChebyshevDistance.DoubleChebyshevDistance()); + registerImplementation("FloatSparseVectorInnerProduct", DistanceFunctions.FLOAT_SPARSE_VECTOR_INNER_PRODUCT); + registerImplementation("DoubleSparseVectorInnerProduct", DistanceFunctions.DOUBLE_SPARSE_VECTOR_INNER_PRODUCT); + } + + public static DistanceFunction getImplementationByName(final String name) { + return implementationsByName.get(name); + } + + public static DistanceFunction getImplementationByClassName(final String name) { + return implementationsByClassName.get(name); + } + + public static void registerImplementation(final String name, final DistanceFunction impl) { + implementationsByName.put(name, impl); + implementationsByClassName.put(impl.getClass().getSimpleName(), impl); + } +} diff --git a/engine/src/main/java/com/arcadedb/query/sql/executor/CheckClusterTypeStep.java b/engine/src/main/java/com/arcadedb/query/sql/executor/CheckClusterTypeStep.java index 8974c341a..45c0e3982 100644 --- a/engine/src/main/java/com/arcadedb/query/sql/executor/CheckClusterTypeStep.java +++ b/engine/src/main/java/com/arcadedb/query/sql/executor/CheckClusterTypeStep.java @@ -70,13 +70,13 @@ else if (bucket.getBucketName() != null) throw new CommandExecutionException("Type not found: " + targetType); for (final Integer bucketId : typez.getBucketIds(true)) { - if (bucketId == bucketObj.getId()) { + if (bucketId == bucketObj.getFileId()) { found = true; break; } } if (!found) - throw new CommandExecutionException("Bucket " + bucketObj.getId() + " does not belong to the type " + targetType); + throw new CommandExecutionException("Bucket " + bucketObj.getFileId() + " does not belong to the type " + targetType); return new InternalResultSet(); } finally { diff --git a/engine/src/main/java/com/arcadedb/query/sql/executor/CreateEdgeExecutionPlanner.java b/engine/src/main/java/com/arcadedb/query/sql/executor/CreateEdgeExecutionPlanner.java index 84b8dfeb5..a34d0330c 100644 --- a/engine/src/main/java/com/arcadedb/query/sql/executor/CreateEdgeExecutionPlanner.java +++ b/engine/src/main/java/com/arcadedb/query/sql/executor/CreateEdgeExecutionPlanner.java @@ -62,7 +62,7 @@ public InsertExecutionPlan createExecutionPlan(final CommandContext context, fin throw new CommandSQLParsingException("Missing target"); } else { final Database db = context.getDatabase(); - final DocumentType typez = db.getSchema().getTypeByBucketId((db.getSchema().getBucketByName(targetClusterName.getStringValue()).getId())); + final DocumentType typez = db.getSchema().getTypeByBucketId((db.getSchema().getBucketByName(targetClusterName.getStringValue()).getFileId())); if (typez != null) { targetClass = new Identifier(typez.getName()); } else { diff --git a/engine/src/main/java/com/arcadedb/query/sql/executor/DeleteEdgeExecutionPlanner.java b/engine/src/main/java/com/arcadedb/query/sql/executor/DeleteEdgeExecutionPlanner.java index 79330afcd..7ca43fa75 100644 --- a/engine/src/main/java/com/arcadedb/query/sql/executor/DeleteEdgeExecutionPlanner.java +++ b/engine/src/main/java/com/arcadedb/query/sql/executor/DeleteEdgeExecutionPlanner.java @@ -120,7 +120,7 @@ private void handleTargetCluster(final DeleteExecutionPlan result, final Command final boolean profilingEnabled) { if (targetClusterName != null) { final String name = targetClusterName.getStringValue(); - final int bucketId = context.getDatabase().getSchema().getBucketByName(name).getId(); + final int bucketId = context.getDatabase().getSchema().getBucketByName(name).getFileId(); if (bucketId < 0) throw new CommandExecutionException("Cluster not found: " + name); diff --git a/engine/src/main/java/com/arcadedb/query/sql/executor/FetchFromClassExecutionStep.java b/engine/src/main/java/com/arcadedb/query/sql/executor/FetchFromClassExecutionStep.java index 89c771159..2da5fe457 100755 --- a/engine/src/main/java/com/arcadedb/query/sql/executor/FetchFromClassExecutionStep.java +++ b/engine/src/main/java/com/arcadedb/query/sql/executor/FetchFromClassExecutionStep.java @@ -18,7 +18,7 @@ */ package com.arcadedb.query.sql.executor; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.PaginatedComponentFile; import com.arcadedb.exception.CommandExecutionException; import com.arcadedb.exception.TimeoutException; import com.arcadedb.log.LogManager; @@ -75,7 +75,7 @@ public FetchFromClassExecutionStep(final String className, final Set clu throw new CommandExecutionException("Type " + className + " not found"); } - final int[] typeBuckets = type.getBuckets(true).stream().mapToInt(x -> x.getId()).distinct().sorted().toArray(); + final int[] typeBuckets = type.getBuckets(true).stream().mapToInt(x -> x.getFileId()).distinct().sorted().toArray(); final List filteredTypeBuckets = new ArrayList<>(); for (final int bucketId : typeBuckets) { final String bucketName = context.getDatabase().getSchema().getBucketById(bucketId).getName(); @@ -92,7 +92,7 @@ public FetchFromClassExecutionStep(final String className, final Set clu long typeFileSize = 0; for (final int fileId : bucketIds) { if (fileId > -1) { - final PaginatedFile f = context.getDatabase().getFileManager().getFile(fileId); + final PaginatedComponentFile f = (PaginatedComponentFile) context.getDatabase().getFileManager().getFile(fileId); if (f != null) { try { typeFileSize += f.getSize(); diff --git a/engine/src/main/java/com/arcadedb/query/sql/executor/FilterByClustersStep.java b/engine/src/main/java/com/arcadedb/query/sql/executor/FilterByClustersStep.java index 16114d18a..44602ec1d 100755 --- a/engine/src/main/java/com/arcadedb/query/sql/executor/FilterByClustersStep.java +++ b/engine/src/main/java/com/arcadedb/query/sql/executor/FilterByClustersStep.java @@ -43,7 +43,7 @@ public FilterByClustersStep(final Set filterClusters, final CommandConte private void init(final Database db) { if (this.bucketIds == null) { - this.bucketIds = clusters.stream().filter(x -> x != null).map(x -> db.getSchema().getBucketByName(x).getId()).collect(Collectors.toSet()); + this.bucketIds = clusters.stream().filter(x -> x != null).map(x -> db.getSchema().getBucketByName(x).getFileId()).collect(Collectors.toSet()); } } diff --git a/engine/src/main/java/com/arcadedb/query/sql/executor/InsertExecutionPlanner.java b/engine/src/main/java/com/arcadedb/query/sql/executor/InsertExecutionPlanner.java index 1480852a4..821fd5e82 100644 --- a/engine/src/main/java/com/arcadedb/query/sql/executor/InsertExecutionPlanner.java +++ b/engine/src/main/java/com/arcadedb/query/sql/executor/InsertExecutionPlanner.java @@ -130,7 +130,7 @@ private void handleCreateRecord(final InsertExecutionPlan result, final InsertBo if (bucket == null) throw new CommandSQLParsingException("Target not specified"); - targetType = new Identifier(context.getDatabase().getSchema().getTypeNameByBucketId(bucket.getId())); + targetType = new Identifier(context.getDatabase().getSchema().getTypeNameByBucketId(bucket.getFileId())); } result.chain(new CreateRecordStep(targetType.getStringValue(), context, tot, profilingEnabled)); diff --git a/engine/src/main/java/com/arcadedb/query/sql/executor/MatchEdgeTraverser.java b/engine/src/main/java/com/arcadedb/query/sql/executor/MatchEdgeTraverser.java index f803c6f78..b365739e0 100644 --- a/engine/src/main/java/com/arcadedb/query/sql/executor/MatchEdgeTraverser.java +++ b/engine/src/main/java/com/arcadedb/query/sql/executor/MatchEdgeTraverser.java @@ -131,7 +131,7 @@ protected Iterable executeTraversal(final CommandContext iComman className = targetClassName(item, iCommandContext); final String clusterName = targetClusterName(item, iCommandContext); if (clusterName != null) { - clusterId = iCommandContext.getDatabase().getSchema().getBucketByName(clusterName).getId(); + clusterId = iCommandContext.getDatabase().getSchema().getBucketByName(clusterName).getFileId(); } targetRid = targetRid(item, iCommandContext); } diff --git a/engine/src/main/java/com/arcadedb/query/sql/executor/MatchExecutionPlanner.java b/engine/src/main/java/com/arcadedb/query/sql/executor/MatchExecutionPlanner.java index b1aabf630..829fca9cf 100644 --- a/engine/src/main/java/com/arcadedb/query/sql/executor/MatchExecutionPlanner.java +++ b/engine/src/main/java/com/arcadedb/query/sql/executor/MatchExecutionPlanner.java @@ -714,7 +714,7 @@ private Map estimateRootEntries(final Map aliasUse if (db.getSchema().getBucketByName(bucketName) == null) { throw new CommandExecutionException("Bucket '" + bucketName + "' not defined"); } - final int bucketId = db.getSchema().getBucketByName(bucketName).getId(); + final int bucketId = db.getSchema().getBucketByName(bucketName).getFileId(); final DocumentType oClass = db.getSchema().getTypeByBucketId(bucketId); if (oClass != null) { final long upperBound; diff --git a/engine/src/main/java/com/arcadedb/query/sql/executor/SelectExecutionPlanner.java b/engine/src/main/java/com/arcadedb/query/sql/executor/SelectExecutionPlanner.java index 29cdddced..36ec2e8f6 100644 --- a/engine/src/main/java/com/arcadedb/query/sql/executor/SelectExecutionPlanner.java +++ b/engine/src/main/java/com/arcadedb/query/sql/executor/SelectExecutionPlanner.java @@ -835,7 +835,7 @@ public RID next() { } private boolean clusterMatchesRidRange(final String bucketName, final AndBlock ridRangeConditions, final Database database, final CommandContext context) { - final int thisClusterId = database.getSchema().getBucketByName(bucketName).getId(); + final int thisClusterId = database.getSchema().getBucketByName(bucketName).getFileId(); for (final BooleanExpression ridRangeCondition : ridRangeConditions.getSubBlocks()) { if (ridRangeCondition instanceof BinaryCondition) { final BinaryCompareOperator operator = ((BinaryCondition) ridRangeCondition).getOperator(); @@ -1001,7 +1001,7 @@ private void handleIndexAsTarget(final SelectExecutionPlan result, final QueryPl int[] filterClusterIds = null; if (filterClusters != null) { - filterClusterIds = filterClusters.stream().map(name -> context.getDatabase().getSchema().getBucketByName(name).getId()).mapToInt(i -> i).toArray(); + filterClusterIds = filterClusters.stream().map(name -> context.getDatabase().getSchema().getBucketByName(name).getFileId()).mapToInt(i -> i).toArray(); } switch (indexIdentifier.getType()) { @@ -1273,7 +1273,7 @@ private boolean handleClassAsTargetWithIndexedFunction(final SelectExecutionPlan subPlan.chain(step); int[] filterClusterIds = null; if (filterClusters != null) { - filterClusterIds = filterClusters.stream().map(name -> context.getDatabase().getSchema().getBucketByName(name).getId()).mapToInt(i -> i) + filterClusterIds = filterClusters.stream().map(name -> context.getDatabase().getSchema().getBucketByName(name).getFileId()).mapToInt(i -> i) .toArray(); } subPlan.chain(new GetValueFromIndexEntryStep(context, filterClusterIds, profilingEnabled)); @@ -1425,7 +1425,7 @@ private boolean handleClassWithIndexForSortOnly(final SelectExecutionPlan plan, plan.chain(new FetchFromIndexValuesStep((RangeIndex) idx, orderType.equals(OrderByItem.ASC), context, profilingEnabled)); int[] filterClusterIds = null; if (filterClusters != null) { - filterClusterIds = filterClusters.stream().map(name -> context.getDatabase().getSchema().getBucketByName(name).getId()).mapToInt(i -> i).toArray(); + filterClusterIds = filterClusters.stream().map(name -> context.getDatabase().getSchema().getBucketByName(name).getFileId()).mapToInt(i -> i).toArray(); } plan.chain(new GetValueFromIndexEntryStep(context, filterClusterIds, profilingEnabled)); info.orderApplied = true; @@ -1594,7 +1594,7 @@ private List handleClassAsTargetWithIndex(final String ta new FetchFromIndexStep(desc.idx, desc.keyCondition, desc.additionalRangeCondition, !Boolean.FALSE.equals(orderAsc), context, profilingEnabled)); int[] filterClusterIds = null; if (filterClusters != null) { - filterClusterIds = filterClusters.stream().map(name -> context.getDatabase().getSchema().getBucketByName(name).getId()).mapToInt(i -> i).toArray(); + filterClusterIds = filterClusters.stream().map(name -> context.getDatabase().getSchema().getBucketByName(name).getFileId()).mapToInt(i -> i).toArray(); } result.add(new GetValueFromIndexEntryStep(context, filterClusterIds, profilingEnabled)); if (requiresMultipleIndexLookups(desc.keyCondition)) { @@ -1711,7 +1711,7 @@ private ExecutionStepInternal createParallelIndexFetch(final List context.getDatabase().getSchema().getBucketByName(name).getId()).mapToInt(i -> i).toArray(); + filterClusterIds = filterClusters.stream().map(name -> context.getDatabase().getSchema().getBucketByName(name).getFileId()).mapToInt(i -> i).toArray(); } subPlan.chain(new GetValueFromIndexEntryStep(context, filterClusterIds, profilingEnabled)); if (requiresMultipleIndexLookups(desc.keyCondition)) { @@ -2157,7 +2157,7 @@ private void handleClustersAsTarget(final SelectExecutionPlan plan, final QueryP if (bucketId == null) { final com.arcadedb.engine.Bucket bucket = db.getSchema().getBucketByName(name); if (bucket != null) - bucketId = bucket.getId(); + bucketId = bucket.getFileId(); } if (name != null) { @@ -2208,7 +2208,7 @@ private void handleClustersAsTarget(final SelectExecutionPlan plan, final QueryP if (bucketId == null) { final com.arcadedb.engine.Bucket bucket = db.getSchema().getBucketByName(parserBucket.getBucketName()); if (bucket != null) - bucketId = bucket.getId(); + bucketId = bucket.getFileId(); } if (bucketId == null) @@ -2229,7 +2229,7 @@ else if (Boolean.FALSE.equals(orderByRidAsc)) if (bucketId == null) { final com.arcadedb.engine.Bucket bucket = db.getSchema().getBucketByName(parserBucket.getBucketName()); if (bucket != null) - bucketId = bucket.getId(); + bucketId = bucket.getFileId(); } if (bucketId == null) { @@ -2390,7 +2390,7 @@ private Set calculateTargetBuckets(final QueryPlanningInfo info, final C } else { final String className = item.getIdentifier().getStringValue(); final DocumentType typez = db.getSchema().getType(className); - final int[] bucketIds = typez.getBuckets(true).stream().mapToInt(com.arcadedb.engine.Bucket::getId).toArray(); + final int[] bucketIds = typez.getBuckets(true).stream().mapToInt(com.arcadedb.engine.Bucket::getFileId).toArray(); for (final int bucketId : bucketIds) { final String bucketName = db.getSchema().getBucketById(bucketId).getName(); if (bucketName != null) { diff --git a/engine/src/main/java/com/arcadedb/query/sql/executor/TraverseExecutionPlanner.java b/engine/src/main/java/com/arcadedb/query/sql/executor/TraverseExecutionPlanner.java index 5435a2982..409a5b3f6 100644 --- a/engine/src/main/java/com/arcadedb/query/sql/executor/TraverseExecutionPlanner.java +++ b/engine/src/main/java/com/arcadedb/query/sql/executor/TraverseExecutionPlanner.java @@ -244,7 +244,7 @@ private void handleClustersAsTarget(final SelectExecutionPlan plan, final List> neighbors = vIndex.findNeighbors(key, limit); + + final ArrayList result = new ArrayList<>(neighbors.size()); + for (Pair n : neighbors) + result.add(Map.of("vertex", n.getFirst(), "distance", n.getSecond())); + return result; + } + + public String getSyntax() { + return "vectorNeighbors(, , )"; + } +} diff --git a/engine/src/main/java/com/arcadedb/query/sql/parser/CreateBucketStatement.java b/engine/src/main/java/com/arcadedb/query/sql/parser/CreateBucketStatement.java index 183eaaa6d..4d87c0608 100644 --- a/engine/src/main/java/com/arcadedb/query/sql/parser/CreateBucketStatement.java +++ b/engine/src/main/java/com/arcadedb/query/sql/parser/CreateBucketStatement.java @@ -53,7 +53,7 @@ public ResultSet executeDDL(final CommandContext context) { final ResultInternal result = new ResultInternal(); result.setProperty("operation", "create bucket"); result.setProperty("bucketName", bucketName); - result.setProperty("bucketId", bucket.getId()); + result.setProperty("bucketId", bucket.getFileId()); final InternalResultSet rs = new InternalResultSet(); rs.add(result); diff --git a/engine/src/main/java/com/arcadedb/query/sql/parser/CreateIndexStatement.java b/engine/src/main/java/com/arcadedb/query/sql/parser/CreateIndexStatement.java index 766d6b6d1..857ab89f6 100644 --- a/engine/src/main/java/com/arcadedb/query/sql/parser/CreateIndexStatement.java +++ b/engine/src/main/java/com/arcadedb/query/sql/parser/CreateIndexStatement.java @@ -41,11 +41,11 @@ public class CreateIndexStatement extends DDLStatement { protected Identifier typeName; protected List propertyList = new ArrayList(); protected Identifier type; + protected boolean ifNotExists = false; protected Identifier engine; + protected Json metadata; protected LSMTreeIndexAbstract.NULL_STRATEGY nullStrategy = LSMTreeIndexAbstract.NULL_STRATEGY.SKIP; protected List keyTypes = new ArrayList(); - protected Json schema; - protected boolean ifNotExists = false; public CreateIndexStatement(final int id) { super(id); @@ -93,7 +93,9 @@ else if (typeAsString.equalsIgnoreCase("UNIQUE")) { unique = true; } else if (typeAsString.equalsIgnoreCase("NOTUNIQUE")) { indexType = Schema.INDEX_TYPE.LSM_TREE; - unique = false; + } else if (typeAsString.equalsIgnoreCase("HSNW")) { + indexType = Schema.INDEX_TYPE.HSNW; + unique = true; } else throw new CommandSQLParsingException("Index type '" + typeAsString + "' is not supported"); @@ -168,10 +170,16 @@ public void toString(final Map params, final StringBuilder build } builder.append(" "); type.toString(params, builder); + if (engine != null) { builder.append(" ENGINE "); engine.toString(params, builder); } + if (metadata != null) { + builder.append(" METADATA "); + metadata.toString(params, builder); + } + if (nullStrategy != null) { builder.append(" NULL_STRATEGY "); builder.append(nullStrategy); @@ -187,10 +195,6 @@ public void toString(final Map params, final StringBuilder build first = false; } } - if (schema != null) { - builder.append(" METADATA "); - schema.toString(params, builder); - } } @Override @@ -200,16 +204,16 @@ public CreateIndexStatement copy() { result.typeName = typeName == null ? null : typeName.copy(); result.propertyList = propertyList == null ? null : propertyList.stream().map(x -> x.copy()).collect(Collectors.toList()); result.type = type == null ? null : type.copy(); - result.engine = engine == null ? null : engine.copy(); result.nullStrategy = nullStrategy == null ? null : nullStrategy; result.keyTypes = keyTypes == null ? null : keyTypes.stream().map(x -> x.copy()).collect(Collectors.toList()); - result.schema = schema == null ? null : schema.copy(); + result.engine = engine == null ? null : engine.copy(); + result.metadata = metadata == null ? null : metadata.copy(); return result; } @Override protected Object[] getIdentityElements() { - return new Object[] { name, typeName, propertyList, type, engine, nullStrategy, keyTypes, schema }; + return new Object[] { name, typeName, propertyList, type, nullStrategy, keyTypes, engine, metadata }; } public static class Property { diff --git a/engine/src/main/java/com/arcadedb/query/sql/parser/DropBucketStatement.java b/engine/src/main/java/com/arcadedb/query/sql/parser/DropBucketStatement.java index dd497011a..b22324ec9 100644 --- a/engine/src/main/java/com/arcadedb/query/sql/parser/DropBucketStatement.java +++ b/engine/src/main/java/com/arcadedb/query/sql/parser/DropBucketStatement.java @@ -45,7 +45,7 @@ public ResultSet executeDDL(final CommandContext context) { if (id != null) { bucketId = id.getValue().intValue(); } else { - bucketId = database.getSchema().getBucketByName(name.getStringValue()).getId(); + bucketId = database.getSchema().getBucketByName(name.getStringValue()).getFileId(); if (bucketId < 0) { if (ifExists) { return new InternalResultSet(); diff --git a/engine/src/main/java/com/arcadedb/query/sql/parser/ParseException.java b/engine/src/main/java/com/arcadedb/query/sql/parser/ParseException.java index 84c35dd47..257e500fe 100644 --- a/engine/src/main/java/com/arcadedb/query/sql/parser/ParseException.java +++ b/engine/src/main/java/com/arcadedb/query/sql/parser/ParseException.java @@ -59,6 +59,19 @@ public class ParseException extends Exception { */ private static final long serialVersionUID = 1L; + /** + * This constructor is used by the method "generateParseException" + * in the generated parser. Calling this constructor generates + * a new object of this type with the fields "currentToken", + * "expectedTokenSequences", and "tokenImage" set. + */ + public ParseException(final String command, final Token currentTokenVal, final int[][] expectedTokenSequencesVal, final String[] tokenImageVal) { + super(initialise(command, currentTokenVal, expectedTokenSequencesVal, tokenImageVal)); + currentToken = currentTokenVal; + expectedTokenSequences = expectedTokenSequencesVal; + tokenImage = tokenImageVal; + } + /** * This constructor is used by the method "generateParseException" * in the generated parser. Calling this constructor generates @@ -66,7 +79,7 @@ public class ParseException extends Exception { * "expectedTokenSequences", and "tokenImage" set. */ public ParseException(final Token currentTokenVal, final int[][] expectedTokenSequencesVal, final String[] tokenImageVal) { - super(initialise(currentTokenVal, expectedTokenSequencesVal, tokenImageVal)); + super(initialise(null, currentTokenVal, expectedTokenSequencesVal, tokenImageVal)); currentToken = currentTokenVal; expectedTokenSequences = expectedTokenSequencesVal; tokenImage = tokenImageVal; @@ -93,6 +106,14 @@ public ParseException(final String message) { super(message); } + public String toString(final String command) { + return initialise(command, currentToken, expectedTokenSequences, tokenImage); + } + + private static String initialise(final Token currentToken, final int[][] expectedTokenSequences, final String[] tokenImage) { + return initialise(null, currentToken, expectedTokenSequences, tokenImage); + } + /** * It uses "currentToken" and "expectedTokenSequences" to generate a parse * error message and returns it. If this object has been created @@ -100,10 +121,10 @@ public ParseException(final String message) { * from the parser) the correct error message * gets displayed. */ - private static String initialise(final Token currentToken, final int[][] expectedTokenSequences, final String[] tokenImage) { + private static String initialise(final String command, final Token currentToken, final int[][] expectedTokenSequences, final String[] tokenImage) { final String eol = System.getProperty("line.separator", "\n"); final StringBuilder expected = new StringBuilder(); - int maxSize = 0; + int maxSize = 1; for (int i = 0; i < expectedTokenSequences.length; i++) { if (maxSize < expectedTokenSequences[i].length) { maxSize = expectedTokenSequences[i].length; @@ -116,7 +137,7 @@ private static String initialise(final Token currentToken, final int[][] expecte } expected.append(eol).append(" "); } - String retval = "Encountered \""; + String retval = "Encountered "; Token tok = currentToken.next; for (int i = 0; i < maxSize; i++) { if (i != 0) @@ -125,20 +146,30 @@ private static String initialise(final Token currentToken, final int[][] expecte retval += tokenImage[0]; break; } - retval += " " + tokenImage[tok.kind]; + retval += tokenImage[tok.kind]; retval += " \""; retval += add_escapes(tok.image); - retval += " \""; + retval += "\""; tok = tok.next; } - retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn; + retval += " at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn; retval += "." + eol; - if (expectedTokenSequences.length == 1) { - retval += "Was expecting:" + eol + " "; - } else { - retval += "Was expecting one of:" + eol + " "; + + if (command != null) { + retval += command + eol; + for (int i = 0; i < currentToken.next.beginColumn - 1; ++i) + retval += '-'; + retval += '^' + eol; + } + + if (expected.length() > 0) { + if (expectedTokenSequences.length == 1) { + retval += "Was expecting:" + eol + " "; + } else { + retval += "Was expecting one of:" + eol + " "; + } + retval += expected.toString(); } - retval += expected.toString(); return retval; } diff --git a/engine/src/main/java/com/arcadedb/query/sql/parser/SqlParser.java b/engine/src/main/java/com/arcadedb/query/sql/parser/SqlParser.java index 51de3208c..aac00cabb 100644 --- a/engine/src/main/java/com/arcadedb/query/sql/parser/SqlParser.java +++ b/engine/src/main/java/com/arcadedb/query/sql/parser/SqlParser.java @@ -2,9 +2,8 @@ /* Generated By:JJTree&JavaCC: Do not edit this line. SqlParser.java */ package com.arcadedb.query.sql.parser; -import java.io.InputStream; -import java.util.List; -import java.util.ArrayList; +import java.io.*; +import java.util.*; import javax.annotation.processing.Generated; import com.arcadedb.database.Database; import com.arcadedb.exception.CommandParsingException; @@ -16,6 +15,12 @@ public class SqlParser/*@bgen(jjtree)*/implements SqlParserTreeConstants, SqlPar protected JJTSqlParserState jjtree = new JJTSqlParserState(); private int inputParamCount = 0; private Database database; + private String command; + + public SqlParser(final Database database, final String command) { + this(database, new ByteArrayInputStream(command.getBytes())); + this.command = command; + } public SqlParser(final Database database, final InputStream stream) { this(new JavaCharStream(stream)); @@ -38,7 +43,7 @@ final public Rid Rid() throws ParseException {/*@bgen(jjtree) Rid */ jjtn000.jjtSetFirstToken(getToken(1)); try { if (jj_2_1(4)) { - jj_consume_token(250); + jj_consume_token(251); jjtn000.bucket = PInteger(); jj_consume_token(COLON); jjtn000.position = PInteger(); @@ -154,9 +159,9 @@ final public BucketIdentifier BucketIdentifier() throws ParseException {/*@bgen( case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -400,9 +405,9 @@ final public List ParseScript() throws ParseException {/*@bgen(jjtree case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -464,7 +469,7 @@ final public List ParseScript() throws ParseException {/*@bgen(jjtree case KEY: case IDENTIFIER: case QUOTED_IDENTIFIER: - case 250:{ + case 251:{ ; break; } @@ -732,10 +737,6 @@ final public Identifier Identifier() throws ParseException {/*@bgen(jjtree) Iden token = jj_consume_token(FORCE); break; } - case SCHEMA:{ - token = jj_consume_token(SCHEMA); - break; - } case INDEX:{ token = jj_consume_token(INDEX); break; @@ -744,6 +745,10 @@ final public Identifier Identifier() throws ParseException {/*@bgen(jjtree) Iden token = jj_consume_token(ENGINE); break; } + case METADATA:{ + token = jj_consume_token(METADATA); + break; + } case REBUILD:{ token = jj_consume_token(REBUILD); break; @@ -1120,9 +1125,9 @@ final public Statement StatementSemicolon() throws ParseException {/*@bgen(jjtre case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -1182,7 +1187,7 @@ final public Statement StatementSemicolon() throws ParseException {/*@bgen(jjtre case KEY: case IDENTIFIER: case QUOTED_IDENTIFIER: - case 250:{ + case 251:{ result = ExpressionStatement(); break; } @@ -1658,9 +1663,9 @@ final public SelectStatement SelectStatement() throws ParseException {/*@bgen(jj case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -1721,7 +1726,7 @@ final public SelectStatement SelectStatement() throws ParseException {/*@bgen(jj case KEY: case IDENTIFIER: case QUOTED_IDENTIFIER: - case 250:{ + case 251:{ jjtn000.projection = Projection(); break; } @@ -1903,9 +1908,9 @@ final public TraverseStatement TraverseStatement() throws ParseException {/*@bge case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -2401,7 +2406,7 @@ final public DeleteEdgeStatement DeleteEdgeByRidStatement() throws ParseExceptio case INTEGER_LITERAL: case LBRACE: case MINUS: - case 250:{ + case 251:{ jjtn000.rid = Rid(); break; } @@ -2411,7 +2416,7 @@ final public DeleteEdgeStatement DeleteEdgeByRidStatement() throws ParseExceptio case INTEGER_LITERAL: case LBRACE: case MINUS: - case 250:{ + case 251:{ lastRid = Rid(); jjtn000.rids = new ArrayList(); jjtn000.rids.add(lastRid); @@ -2517,9 +2522,9 @@ final public DeleteEdgeStatement DeleteEdgeFromToStatement() throws ParseExcepti case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -2786,9 +2791,9 @@ final public DeleteEdgeStatement DeleteEdgeWhereStatement() throws ParseExceptio case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -2982,9 +2987,9 @@ final public UpdateEdgeStatement UpdateEdgeStatement() throws ParseException {/* case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -3045,7 +3050,7 @@ final public UpdateEdgeStatement UpdateEdgeStatement() throws ParseException {/* case KEY: case IDENTIFIER: case QUOTED_IDENTIFIER: - case 250:{ + case 251:{ jjtn000.returnProjection = Projection(); break; } @@ -3216,9 +3221,9 @@ final public UpdateStatement UpdateStatement() throws ParseException {/*@bgen(jj case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -3279,7 +3284,7 @@ final public UpdateStatement UpdateStatement() throws ParseException {/*@bgen(jj case KEY: case IDENTIFIER: case QUOTED_IDENTIFIER: - case 250:{ + case 251:{ jjtn000.returnProjection = Projection(); break; } @@ -3800,9 +3805,9 @@ final public InsertStatement InsertStatement() throws ParseException {/*@bgen(jj case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -4366,9 +4371,9 @@ final public CreateEdgeStatement CreateEdgeStatement() throws ParseException {/* case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -4615,9 +4620,9 @@ final public NamedParameter NamedParameter() throws ParseException {/*@bgen(jjtr case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -4974,9 +4979,9 @@ final public NestedProjectionItem NestedProjectionItem() throws ParseException { case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -5036,7 +5041,7 @@ final public NestedProjectionItem NestedProjectionItem() throws ParseException { case KEY: case IDENTIFIER: case QUOTED_IDENTIFIER: - case 250:{ + case 251:{ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case BANG:{ jj_consume_token(BANG); @@ -5426,9 +5431,9 @@ final public FunctionCall FunctionCall() throws ParseException {/*@bgen(jjtree) case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -5524,9 +5529,9 @@ final public FunctionCall FunctionCall() throws ParseException {/*@bgen(jjtree) case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -5586,7 +5591,7 @@ final public FunctionCall FunctionCall() throws ParseException {/*@bgen(jjtree) case KEY: case IDENTIFIER: case QUOTED_IDENTIFIER: - case 250:{ + case 251:{ lastExpression = Expression(); jjtn000.params.add(lastExpression); label_21: @@ -5686,9 +5691,9 @@ final public MethodCall MethodCall() throws ParseException {/*@bgen(jjtree) Meth case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -5748,7 +5753,7 @@ final public MethodCall MethodCall() throws ParseException {/*@bgen(jjtree) Meth case KEY: case IDENTIFIER: case QUOTED_IDENTIFIER: - case 250:{ + case 251:{ lastExpression = Expression(); jjtn000.params.add(lastExpression); label_22: @@ -6420,9 +6425,9 @@ final public MathExpression ParenthesisExpression() throws ParseException {/*@bg case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -6482,7 +6487,7 @@ final public MathExpression ParenthesisExpression() throws ParseException {/*@bg case KEY: case IDENTIFIER: case QUOTED_IDENTIFIER: - case 250:{ + case 251:{ jjtn000.expression = Expression(); break; } @@ -6574,9 +6579,9 @@ final public BaseExpression BaseExpression() throws ParseException {/*@bgen(jjtr case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -6854,7 +6859,7 @@ final public FromItem FromItem() throws ParseException {/*@bgen(jjtree) FromItem case INTEGER_LITERAL: case LBRACE: case MINUS: - case 250:{ + case 251:{ lastRid = Rid(); jjtn000.rids.add(lastRid); break; @@ -7017,9 +7022,9 @@ final public FromItem FromItem() throws ParseException {/*@bgen(jjtree) FromItem case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -7190,9 +7195,9 @@ final public BucketList BucketList() throws ParseException {/*@bgen(jjtree) Buck case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -7571,9 +7576,9 @@ final public NotBlock NotBlock() throws ParseException {/*@bgen(jjtree) NotBlock case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -7633,7 +7638,7 @@ final public NotBlock NotBlock() throws ParseException {/*@bgen(jjtree) NotBlock case KEY: case IDENTIFIER: case QUOTED_IDENTIFIER: - case 250:{ + case 251:{ if (jj_2_96(2147483647)) { jjtn000.sub = ConditionBlock(); } else if (jj_2_97(2147483647)) { @@ -8387,9 +8392,9 @@ final public BooleanExpression InstanceofCondition() throws ParseException {/*@b case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -8542,9 +8547,9 @@ final public BooleanExpression IndexMatchCondition() throws ParseException {/*@b case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -8604,7 +8609,7 @@ final public BooleanExpression IndexMatchCondition() throws ParseException {/*@b case KEY: case IDENTIFIER: case QUOTED_IDENTIFIER: - case 250:{ + case 251:{ lastExpression = Expression(); jjtn000.leftExpressions.add(lastExpression); label_31: @@ -8674,9 +8679,9 @@ final public BooleanExpression IndexMatchCondition() throws ParseException {/*@b case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -8736,7 +8741,7 @@ final public BooleanExpression IndexMatchCondition() throws ParseException {/*@b case KEY: case IDENTIFIER: case QUOTED_IDENTIFIER: - case 250:{ + case 251:{ lastExpression = Expression(); jjtn000.leftExpressions.add(lastExpression); label_32: @@ -8802,9 +8807,9 @@ final public BooleanExpression IndexMatchCondition() throws ParseException {/*@b case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -8864,7 +8869,7 @@ final public BooleanExpression IndexMatchCondition() throws ParseException {/*@b case KEY: case IDENTIFIER: case QUOTED_IDENTIFIER: - case 250:{ + case 251:{ lastExpression = Expression(); jjtn000.rightExpressions.add(lastExpression); label_33: @@ -9241,9 +9246,9 @@ final public BooleanExpression InCondition() throws ParseException {/*@bgen(jjtr case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -9406,9 +9411,9 @@ final public BooleanExpression NotInCondition() throws ParseException {/*@bgen(j case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -9736,9 +9741,9 @@ final public OrderBy OrderBy() throws ParseException {/*@bgen(jjtree) OrderBy */ case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -9822,9 +9827,9 @@ final public OrderBy OrderBy() throws ParseException {/*@bgen(jjtree) OrderBy */ case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -9961,9 +9966,9 @@ final public OrderBy OrderBy() throws ParseException {/*@bgen(jjtree) OrderBy */ case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -10114,9 +10119,9 @@ final public OrderBy OrderBy() throws ParseException {/*@bgen(jjtree) OrderBy */ case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -10200,9 +10205,9 @@ final public OrderBy OrderBy() throws ParseException {/*@bgen(jjtree) OrderBy */ case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -10339,9 +10344,9 @@ final public OrderBy OrderBy() throws ParseException {/*@bgen(jjtree) OrderBy */ case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -10878,9 +10883,9 @@ final public PCollection PCollection() throws ParseException {/*@bgen(jjtree) PC case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -10940,7 +10945,7 @@ final public PCollection PCollection() throws ParseException {/*@bgen(jjtree) PC case KEY: case IDENTIFIER: case QUOTED_IDENTIFIER: - case 250:{ + case 251:{ lastExpression = Expression(); jjtn000.expressions.add(lastExpression); label_37: @@ -11077,9 +11082,9 @@ final public Json Json() throws ParseException {/*@bgen(jjtree) Json */ case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -11165,9 +11170,9 @@ final public Json Json() throws ParseException {/*@bgen(jjtree) Json */ case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -11288,9 +11293,9 @@ final public Json Json() throws ParseException {/*@bgen(jjtree) Json */ case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -11689,9 +11694,9 @@ final public MatchPathItem MultiMatchPathItemArrows() throws ParseException {/*@ throw new ParseException(); } if(prevItem !=null && prevItem.filter == null){ - {if (true) throw new CommandParsingException("MATCH sub-pattern with no square brackets");} - } - prevItem = nextItem; + {if (true) throw new CommandParsingException("MATCH sub-pattern with no square brackets");} + } + prevItem = nextItem; switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case LT: case DECR: @@ -11715,8 +11720,8 @@ final public MatchPathItem MultiMatchPathItemArrows() throws ParseException {/*@ ; } jjtree.closeNodeScope(jjtn000, true); - jjtc000 = false; - jjtn000.jjtSetLastToken(getToken(0)); + jjtc000 = false; + jjtn000.jjtSetLastToken(getToken(0)); {if ("" != null) return jjtn000;} } catch (Throwable jjte000) { if (jjtc000) { @@ -11787,8 +11792,8 @@ final public MatchFilter MatchFilter() throws ParseException {/*@bgen(jjtree) Ma } jj_consume_token(RBRACE); jjtree.closeNodeScope(jjtn000, true); - jjtc000 = false; - jjtn000.jjtSetLastToken(getToken(0)); + jjtc000 = false; + jjtn000.jjtSetLastToken(getToken(0)); {if ("" != null) return jjtn000;} } catch (Throwable jjte000) { if (jjtc000) { @@ -11873,9 +11878,9 @@ final public MatchFilterItem MatchFilterItem() throws ParseException {/*@bgen(jj case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -12099,9 +12104,9 @@ final public MatchPathItem OutPathItem() throws ParseException {/*@bgen(jjtree) case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -12248,9 +12253,9 @@ final public MatchPathItem InPathItem() throws ParseException {/*@bgen(jjtree) I case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -12395,9 +12400,9 @@ final public MatchPathItem BothPathItem() throws ParseException {/*@bgen(jjtree) case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -12542,9 +12547,9 @@ final public MatchPathItem OutPathItemOpt() throws ParseException {/*@bgen(jjtre case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -12699,9 +12704,9 @@ final public MatchPathItem InPathItemOpt() throws ParseException {/*@bgen(jjtree case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -12854,9 +12859,9 @@ final public MatchPathItem BothPathItemOpt() throws ParseException {/*@bgen(jjtr case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -13064,9 +13069,9 @@ final public TruncateBucketStatement TruncateBucketStatement() throws ParseExcep case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -13171,7 +13176,7 @@ final public TruncateRecordStatement TruncateRecordStatement() throws ParseExcep case INTEGER_LITERAL: case LBRACE: case MINUS: - case 250:{ + case 251:{ jjtn000.record = Rid(); break; } @@ -13182,7 +13187,7 @@ final public TruncateRecordStatement TruncateRecordStatement() throws ParseExcep case INTEGER_LITERAL: case LBRACE: case MINUS: - case 250:{ + case 251:{ lastRecord = Rid(); jjtn000.records.add(lastRecord); label_43: @@ -13809,9 +13814,9 @@ final public DropTypeStatement DropTypeStatement() throws ParseException {/*@bge case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -14087,9 +14092,9 @@ final public AlterPropertyStatement AlterPropertyStatement() throws ParseExcepti case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -14292,9 +14297,9 @@ final public CreateIndexStatement CreateIndexStatement() throws ParseException { case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -14430,9 +14435,9 @@ final public CreateIndexStatement CreateIndexStatement() throws ParseException { case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -14559,9 +14564,9 @@ final public CreateIndexStatement CreateIndexStatement() throws ParseException { case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -14658,9 +14663,9 @@ final public CreateIndexStatement CreateIndexStatement() throws ParseException { case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -14753,9 +14758,9 @@ final public CreateIndexStatement CreateIndexStatement() throws ParseException { case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -14799,8 +14804,8 @@ final public CreateIndexStatement CreateIndexStatement() throws ParseException { case IDENTIFIER: case QUOTED_IDENTIFIER:{ if (jj_2_142(2)) { - jj_consume_token(SCHEMA); - jjtn000.schema = Json(); + jj_consume_token(METADATA); + jjtn000.metadata = Json(); } else { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case ALIGN: @@ -14840,9 +14845,9 @@ final public CreateIndexStatement CreateIndexStatement() throws ParseException { case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -14903,9 +14908,9 @@ final public CreateIndexStatement CreateIndexStatement() throws ParseException { jjtn000.keyTypes.add(lastIdentifier); } switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { - case SCHEMA:{ - jj_consume_token(SCHEMA); - jjtn000.schema = Json(); + case METADATA:{ + jj_consume_token(METADATA); + jjtn000.metadata = Json(); break; } default: @@ -14965,9 +14970,9 @@ final public CreateIndexStatement CreateIndexStatement() throws ParseException { case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -15011,8 +15016,8 @@ final public CreateIndexStatement CreateIndexStatement() throws ParseException { case IDENTIFIER: case QUOTED_IDENTIFIER:{ if (jj_2_143(2)) { - jj_consume_token(SCHEMA); - jjtn000.schema = Json(); + jj_consume_token(METADATA); + jjtn000.metadata = Json(); } else { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case ALIGN: @@ -15052,9 +15057,9 @@ final public CreateIndexStatement CreateIndexStatement() throws ParseException { case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -15115,9 +15120,9 @@ final public CreateIndexStatement CreateIndexStatement() throws ParseException { jjtn000.keyTypes.add(lastIdentifier); } switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { - case SCHEMA:{ - jj_consume_token(SCHEMA); - jjtn000.schema = Json(); + case METADATA:{ + jj_consume_token(METADATA); + jjtn000.metadata = Json(); break; } default: @@ -15237,9 +15242,9 @@ final public RebuildIndexStatement RebuildIndexStatement() throws ParseException case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -15325,6 +15330,36 @@ final public RebuildIndexStatement RebuildIndexStatement() throws ParseException jj_la1[325] = jj_gen; ; } + switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { + case WITH:{ + jj_consume_token(WITH); + jjtn000.key = Expression(); + jj_consume_token(EQ); + jjtn000.value = Expression(); +jjtn000.settings.put( jjtn000.key, jjtn000.value ); + label_57: + while (true) { + switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { + case COMMA:{ + ; + break; + } + default: + jj_la1[326] = jj_gen; + break label_57; + } + jj_consume_token(COMMA); + jjtn000.key = Expression(); + jj_consume_token(EQ); + jjtn000.value = Expression(); +jjtn000.settings.put( jjtn000.key, jjtn000.value ); + } + break; + } + default: + jj_la1[327] = jj_gen; + ; + } jjtree.closeNodeScope(jjtn000, true); jjtc000 = false; jjtn000.jjtSetLastToken(getToken(0)); @@ -15398,9 +15433,9 @@ final public DropIndexStatement DropIndexStatement() throws ParseException {/*@b case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -15452,7 +15487,7 @@ final public DropIndexStatement DropIndexStatement() throws ParseException {/*@b break; } default: - jj_la1[326] = jj_gen; + jj_la1[328] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -15464,7 +15499,7 @@ final public DropIndexStatement DropIndexStatement() throws ParseException {/*@b break; } default: - jj_la1[327] = jj_gen; + jj_la1[329] = jj_gen; ; } jjtree.closeNodeScope(jjtn000, true); @@ -15512,7 +15547,7 @@ final public CreateBucketStatement CreateBucketStatement() throws ParseException break; } default: - jj_la1[328] = jj_gen; + jj_la1[330] = jj_gen; ; } jjtree.closeNodeScope(jjtn000, true); @@ -15558,7 +15593,7 @@ final public AlterBucketStatement AlterBucketStatement() throws ParseException { break; } default: - jj_la1[329] = jj_gen; + jj_la1[331] = jj_gen; ; } jjtn000.attributeName = Identifier(); @@ -15636,9 +15671,9 @@ final public DropBucketStatement DropBucketStatement() throws ParseException {/* case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -15690,7 +15725,7 @@ final public DropBucketStatement DropBucketStatement() throws ParseException {/* break; } default: - jj_la1[330] = jj_gen; + jj_la1[332] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -15702,7 +15737,7 @@ final public DropBucketStatement DropBucketStatement() throws ParseException {/* break; } default: - jj_la1[331] = jj_gen; + jj_la1[333] = jj_gen; ; } jjtree.closeNodeScope(jjtn000, true); @@ -15897,7 +15932,7 @@ final public BeginStatement BeginStatement() throws ParseException {/*@bgen(jjtr break; } default: - jj_la1[332] = jj_gen; + jj_la1[334] = jj_gen; ; } jjtree.closeNodeScope(jjtn000, true); @@ -15945,7 +15980,7 @@ final public CommitStatement CommitStatement() throws ParseException {/*@bgen(jj case LBRACE:{ jjtn000.elseStatements = new ArrayList(); jj_consume_token(LBRACE); - label_57: + label_58: while (true) { last = StatementInternal(); jjtn000.addElse(last); @@ -15981,8 +16016,8 @@ final public CommitStatement CommitStatement() throws ParseException {/*@bgen(jj break; } default: - jj_la1[333] = jj_gen; - break label_57; + jj_la1[335] = jj_gen; + break label_58; } } jj_consume_token(RBRACE); @@ -16001,53 +16036,43 @@ final public CommitStatement CommitStatement() throws ParseException {/*@bgen(jj break; } default: - jj_la1[334] = jj_gen; + jj_la1[336] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; } default: - jj_la1[335] = jj_gen; + jj_la1[337] = jj_gen; ; } break; } - case CONTINUE: - case FAIL:{ - switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { - case CONTINUE:{ - jj_consume_token(CONTINUE); + case CONTINUE:{ + jj_consume_token(CONTINUE); jjtn000.elseFail = false; - break; - } - case FAIL:{ - jj_consume_token(FAIL); -jjtn000.elseFail = true; - break; - } - default: - jj_la1[336] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); + break; } + case FAIL:{ + jj_consume_token(FAIL); +jjtn000.elseFail = true; break; } default: - jj_la1[337] = jj_gen; + jj_la1[338] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; } default: - jj_la1[338] = jj_gen; + jj_la1[339] = jj_gen; ; } break; } default: - jj_la1[339] = jj_gen; + jj_la1[340] = jj_gen; ; } jjtree.closeNodeScope(jjtn000, true); @@ -16143,9 +16168,9 @@ final public ReturnStatement ReturnStatement() throws ParseException {/*@bgen(jj case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -16205,12 +16230,12 @@ final public ReturnStatement ReturnStatement() throws ParseException {/*@bgen(jj case KEY: case IDENTIFIER: case QUOTED_IDENTIFIER: - case 250:{ + case 251:{ jjtn000.expression = Expression(); break; } default: - jj_la1[340] = jj_gen; + jj_la1[341] = jj_gen; ; } jjtree.closeNodeScope(jjtn000, true); @@ -16251,7 +16276,7 @@ final public IfStatement IfStatement() throws ParseException {/*@bgen(jjtree) If jjtn000.expression = OrBlock(); jj_consume_token(RPAREN); jj_consume_token(LBRACE); - label_58: + label_59: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case ALIGN: @@ -16304,9 +16329,9 @@ final public IfStatement IfStatement() throws ParseException {/*@bgen(jjtree) If case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -16368,13 +16393,13 @@ final public IfStatement IfStatement() throws ParseException {/*@bgen(jjtree) If case KEY: case IDENTIFIER: case QUOTED_IDENTIFIER: - case 250:{ + case 251:{ ; break; } default: - jj_la1[341] = jj_gen; - break label_58; + jj_la1[342] = jj_gen; + break label_59; } if (jj_2_147(2147483647)) { last = StatementSemicolon(); @@ -16401,7 +16426,7 @@ final public IfStatement IfStatement() throws ParseException {/*@bgen(jjtree) If break; } default: - jj_la1[342] = jj_gen; + jj_la1[343] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -16520,7 +16545,7 @@ final public ForEachBlock ForEachBlock() throws ParseException {/*@bgen(jjtree) jjtn000.loopValues = Expression(); jj_consume_token(RPAREN); jj_consume_token(LBRACE); - label_59: + label_60: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case ALIGN: @@ -16573,9 +16598,9 @@ final public ForEachBlock ForEachBlock() throws ParseException {/*@bgen(jjtree) case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -16637,13 +16662,13 @@ final public ForEachBlock ForEachBlock() throws ParseException {/*@bgen(jjtree) case KEY: case IDENTIFIER: case QUOTED_IDENTIFIER: - case 250:{ + case 251:{ ; break; } default: - jj_la1[343] = jj_gen; - break label_59; + jj_la1[344] = jj_gen; + break label_60; } if (jj_2_148(2147483647)) { last = StatementSemicolon(); @@ -16670,7 +16695,7 @@ final public ForEachBlock ForEachBlock() throws ParseException {/*@bgen(jjtree) break; } default: - jj_la1[344] = jj_gen; + jj_la1[345] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -16715,7 +16740,7 @@ final public WhileBlock WhileBlock() throws ParseException {/*@bgen(jjtree) Whil jjtn000.condition = OrBlock(); jj_consume_token(RPAREN); jj_consume_token(LBRACE); - label_60: + label_61: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case ALIGN: @@ -16768,9 +16793,9 @@ final public WhileBlock WhileBlock() throws ParseException {/*@bgen(jjtree) Whil case DROP: case PROPERTY: case FORCE: - case SCHEMA: case INDEX: case ENGINE: + case METADATA: case REBUILD: case FORMAT: case EXPORT: @@ -16832,13 +16857,13 @@ final public WhileBlock WhileBlock() throws ParseException {/*@bgen(jjtree) Whil case KEY: case IDENTIFIER: case QUOTED_IDENTIFIER: - case 250:{ + case 251:{ ; break; } default: - jj_la1[345] = jj_gen; - break label_60; + jj_la1[346] = jj_gen; + break label_61; } if (jj_2_149(2147483647)) { last = StatementSemicolon(); @@ -16865,7 +16890,7 @@ final public WhileBlock WhileBlock() throws ParseException {/*@bgen(jjtree) Whil break; } default: - jj_la1[346] = jj_gen; + jj_la1[347] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -16916,7 +16941,7 @@ final public ImportDatabaseStatement ImportDatabaseStatement() throws ParseExcep break; } default: - jj_la1[347] = jj_gen; + jj_la1[348] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { @@ -16926,7 +16951,7 @@ final public ImportDatabaseStatement ImportDatabaseStatement() throws ParseExcep jj_consume_token(EQ); jjtn000.value = Expression(); jjtn000.settings.put( jjtn000.key, jjtn000.value ); - label_61: + label_62: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case COMMA:{ @@ -16934,8 +16959,8 @@ final public ImportDatabaseStatement ImportDatabaseStatement() throws ParseExcep break; } default: - jj_la1[348] = jj_gen; - break label_61; + jj_la1[349] = jj_gen; + break label_62; } jj_consume_token(COMMA); jjtn000.key = Expression(); @@ -16946,7 +16971,7 @@ final public ImportDatabaseStatement ImportDatabaseStatement() throws ParseExcep break; } default: - jj_la1[349] = jj_gen; + jj_la1[350] = jj_gen; ; } jjtree.closeNodeScope(jjtn000, true); @@ -16993,7 +17018,7 @@ final public ExportDatabaseStatement ExportDatabaseStatement() throws ParseExcep break; } default: - jj_la1[350] = jj_gen; + jj_la1[351] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { @@ -17003,7 +17028,7 @@ final public ExportDatabaseStatement ExportDatabaseStatement() throws ParseExcep break; } default: - jj_la1[351] = jj_gen; + jj_la1[352] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { @@ -17021,14 +17046,14 @@ final public ExportDatabaseStatement ExportDatabaseStatement() throws ParseExcep break; } default: - jj_la1[352] = jj_gen; + jj_la1[353] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; } default: - jj_la1[353] = jj_gen; + jj_la1[354] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { @@ -17038,7 +17063,7 @@ final public ExportDatabaseStatement ExportDatabaseStatement() throws ParseExcep jj_consume_token(EQ); jjtn000.value = Expression(); jjtn000.settings.put( jjtn000.key, jjtn000.value ); - label_62: + label_63: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case COMMA:{ @@ -17046,8 +17071,8 @@ final public ExportDatabaseStatement ExportDatabaseStatement() throws ParseExcep break; } default: - jj_la1[354] = jj_gen; - break label_62; + jj_la1[355] = jj_gen; + break label_63; } jj_consume_token(COMMA); jjtn000.key = Expression(); @@ -17058,7 +17083,7 @@ final public ExportDatabaseStatement ExportDatabaseStatement() throws ParseExcep break; } default: - jj_la1[355] = jj_gen; + jj_la1[356] = jj_gen; ; } jjtree.closeNodeScope(jjtn000, true); @@ -17116,7 +17141,7 @@ final public Url Url() throws ParseException {/*@bgen(jjtree) Url */ break; } default: - jj_la1[356] = jj_gen; + jj_la1[357] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -17150,7 +17175,7 @@ final public BackupDatabaseStatement BackupDatabaseStatement() throws ParseExcep break; } default: - jj_la1[357] = jj_gen; + jj_la1[358] = jj_gen; ; } jjtree.closeNodeScope(jjtn000, true); @@ -17194,7 +17219,7 @@ final public CheckDatabaseStatement CheckDatabaseStatement() throws ParseExcepti jj_consume_token(TYPE); lastType = Identifier(); jjtn000.types.add(lastType); - label_63: + label_64: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case COMMA:{ @@ -17202,8 +17227,8 @@ final public CheckDatabaseStatement CheckDatabaseStatement() throws ParseExcepti break; } default: - jj_la1[358] = jj_gen; - break label_63; + jj_la1[359] = jj_gen; + break label_64; } jj_consume_token(COMMA); lastType = Identifier(); @@ -17212,7 +17237,7 @@ final public CheckDatabaseStatement CheckDatabaseStatement() throws ParseExcepti break; } default: - jj_la1[359] = jj_gen; + jj_la1[360] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { @@ -17220,7 +17245,7 @@ final public CheckDatabaseStatement CheckDatabaseStatement() throws ParseExcepti jj_consume_token(BUCKET); lastBucket = BucketIdentifier(); jjtn000.buckets.add(lastBucket); - label_64: + label_65: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case COMMA:{ @@ -17228,8 +17253,8 @@ final public CheckDatabaseStatement CheckDatabaseStatement() throws ParseExcepti break; } default: - jj_la1[360] = jj_gen; - break label_64; + jj_la1[361] = jj_gen; + break label_65; } jj_consume_token(COMMA); lastBucket = BucketIdentifier(); @@ -17238,7 +17263,7 @@ final public CheckDatabaseStatement CheckDatabaseStatement() throws ParseExcepti break; } default: - jj_la1[361] = jj_gen; + jj_la1[362] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { @@ -17248,7 +17273,7 @@ final public CheckDatabaseStatement CheckDatabaseStatement() throws ParseExcepti break; } default: - jj_la1[362] = jj_gen; + jj_la1[363] = jj_gen; ; } jjtree.closeNodeScope(jjtn000, true); @@ -17320,8 +17345,8 @@ final public DefineFunctionStatement DefineFunctionStatement() throws ParseExcep jj_consume_token(LBRACKET); lastIdentifier = Identifier(); jjtn000.parameters = new ArrayList(); - jjtn000.parameters.add(lastIdentifier); - label_65: + jjtn000.parameters.add(lastIdentifier); + label_66: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case COMMA:{ @@ -17329,8 +17354,8 @@ final public DefineFunctionStatement DefineFunctionStatement() throws ParseExcep break; } default: - jj_la1[363] = jj_gen; - break label_65; + jj_la1[364] = jj_gen; + break label_66; } jj_consume_token(COMMA); lastIdentifier = Identifier(); @@ -17340,7 +17365,7 @@ final public DefineFunctionStatement DefineFunctionStatement() throws ParseExcep break; } default: - jj_la1[364] = jj_gen; + jj_la1[365] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { @@ -17350,7 +17375,7 @@ final public DefineFunctionStatement DefineFunctionStatement() throws ParseExcep break; } default: - jj_la1[365] = jj_gen; + jj_la1[366] = jj_gen; ; } jjtree.closeNodeScope(jjtn000, true); @@ -18611,1116 +18636,1081 @@ private boolean jj_2_149(int xla) finally { jj_save(148, xla); } } - private boolean jj_3R_InsertStatement_1529_5_571() - { - if (jj_scan_token(RETURN)) return true; - if (jj_3R_Projection_1758_3_419()) return true; - return false; - } - - private boolean jj_3R_TraverseProjectionItem_3065_3_696() + private boolean jj_3R_TraverseProjectionItem_3063_3_698() { - if (jj_3R_BaseIdentifier_1989_3_482()) return true; + if (jj_3R_BaseIdentifier_1996_3_483()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_TraverseProjectionItem_3067_7_842()) jj_scanpos = xsp; - return false; - } - - private boolean jj_3R_InsertStatement_1528_5_570() - { - if (jj_3R_InsertBody_1565_3_137()) return true; - return false; - } - - private boolean jj_3R_UpdateRemoveItem_1498_33_751() - { - if (jj_scan_token(EQ)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_TraverseProjectionItem_3065_7_844()) jj_scanpos = xsp; return false; } - private boolean jj_3R_InsertStatement_1526_5_569() + private boolean jj_3R_InsertStatement_1528_1_272() { - if (jj_3R_Bucket_2320_3_142()) return true; - return false; - } - - private boolean jj_3R_InsertStatement_1524_5_568() - { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(INSERT)) return true; + if (jj_scan_token(INTO)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_InsertStatement_1524_40_693()) jj_scanpos = xsp; + if (jj_3R_InsertStatement_1531_5_569()) { + jj_scanpos = xsp; + if (jj_3R_InsertStatement_1533_5_570()) return true; + } + xsp = jj_scanpos; + if (jj_3R_InsertStatement_1535_5_571()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_InsertStatement_1536_5_572()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_InsertStatement_1538_5_573()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_InsertStatement_1561_5_574()) jj_scanpos = xsp; return false; } - private boolean jj_3R_PCollection_3053_9_461() + private boolean jj_3R_PCollection_3051_9_462() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_PCollection_3051_7_324() + private boolean jj_3R_PCollection_3049_7_325() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_PCollection_3053_9_461()) { jj_scanpos = xsp; break; } + if (jj_3R_PCollection_3051_9_462()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_InsertStatement_1521_1_271() + private boolean jj_3R_UpdatePutItem_1512_3_656() { - if (jj_scan_token(INSERT)) return true; - if (jj_scan_token(INTO)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_InsertStatement_1524_5_568()) { - jj_scanpos = xsp; - if (jj_3R_InsertStatement_1526_5_569()) return true; - } - xsp = jj_scanpos; - if (jj_3R_InsertStatement_1528_5_570()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_InsertStatement_1529_5_571()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_InsertStatement_1531_5_572()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_InsertStatement_1554_5_573()) jj_scanpos = xsp; + if (jj_3R_Identifier_733_1_141()) return true; + if (jj_scan_token(EQ)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_PCollection_3047_3_147() + private boolean jj_3R_PCollection_3046_3_148() { if (jj_scan_token(LBRACKET)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_PCollection_3051_7_324()) jj_scanpos = xsp; + if (jj_3R_PCollection_3049_7_325()) jj_scanpos = xsp; if (jj_scan_token(RBRACKET)) return true; return false; } - private boolean jj_3R_UpdatePutItem_1505_3_654() + private boolean jj_3R_UpdateRemoveItem_1505_3_664() { - if (jj_3R_Identifier_726_1_140()) return true; - if (jj_scan_token(EQ)) return true; - if (jj_3R_Expression_2037_3_131()) return true; - if (jj_scan_token(COMMA)) return true; - if (jj_3R_Expression_2037_3_131()) return true; - return false; - } - - private boolean jj_3R_UpdateRemoveItem_1498_3_662() - { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_UpdateRemoveItem_1498_33_751()) jj_scanpos = xsp; + if (jj_3R_UpdateRemoveItem_1505_33_754()) jj_scanpos = xsp; return false; } - private boolean jj_3R_Retry_3032_3_421() + private boolean jj_3R_Retry_3037_3_422() { if (jj_scan_token(RETRY)) return true; - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_3R_PInteger_914_3_67()) return true; return false; } - private boolean jj_3R_UpdateIncrementItem_1489_5_750() + private boolean jj_3R_UpdateIncrementItem_1496_5_753() { - if (jj_3R_Modifier_2002_3_156()) return true; + if (jj_3R_Modifier_2009_3_157()) return true; return false; } - private boolean jj_3R_Wait_3024_3_422() + private boolean jj_3R_UpdateIncrementItem_1495_3_662() { - if (jj_scan_token(WAIT)) return true; - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_3R_Identifier_733_1_141()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_UpdateIncrementItem_1496_5_753()) jj_scanpos = xsp; + if (jj_scan_token(EQ)) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_UpdateIncrementItem_1488_3_660() + private boolean jj_3R_Wait_3030_3_423() { - if (jj_3R_Identifier_726_1_140()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_UpdateIncrementItem_1489_5_750()) jj_scanpos = xsp; - if (jj_scan_token(EQ)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_scan_token(WAIT)) return true; + if (jj_3R_PInteger_914_3_67()) return true; return false; } - private boolean jj_3R_UpdateStatement_1396_93_432() + private boolean jj_3R_UpdateStatement_1403_93_433() { if (jj_scan_token(COUNT)) return true; return false; } - private boolean jj_3R_Timeout_3016_5_665() + private boolean jj_3R_Timeout_3022_5_667() { if (jj_scan_token(EXCEPTION)) return true; return false; } - private boolean jj_3R_UpdateItem_1479_5_749() + private boolean jj_3R_UpdateItem_1486_5_752() { if (jj_scan_token(SLASHASSIGN)) return true; return false; } - private boolean jj_3R_Timeout_3014_5_664() + private boolean jj_3R_Timeout_3020_5_666() { if (jj_scan_token(RETURN)) return true; return false; } - private boolean jj_3R_Timeout_3014_5_538() + private boolean jj_3R_Timeout_3020_5_539() { Token xsp; xsp = jj_scanpos; - if (jj_3R_Timeout_3014_5_664()) { + if (jj_3R_Timeout_3020_5_666()) { jj_scanpos = xsp; - if (jj_3R_Timeout_3016_5_665()) return true; + if (jj_3R_Timeout_3022_5_667()) return true; } return false; } - private boolean jj_3R_UpdateItem_1477_5_748() + private boolean jj_3R_UpdateItem_1484_5_751() { if (jj_scan_token(STARASSIGN)) return true; return false; } - private boolean jj_3R_UpdateItem_1475_5_747() + private boolean jj_3R_UpdateItem_1482_5_750() { if (jj_scan_token(MINUSASSIGN)) return true; return false; } - private boolean jj_3R_Timeout_3011_3_429() + private boolean jj_3R_UpdateItem_1480_5_749() { - if (jj_scan_token(TIMEOUT)) return true; - if (jj_3R_PInteger_907_3_66()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_Timeout_3014_5_538()) jj_scanpos = xsp; + if (jj_scan_token(PLUSASSIGN)) return true; return false; } - private boolean jj_3R_UpdateItem_1473_5_746() + private boolean jj_3R_Timeout_3017_3_430() { - if (jj_scan_token(PLUSASSIGN)) return true; + if (jj_scan_token(TIMEOUT)) return true; + if (jj_3R_PInteger_914_3_67()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_Timeout_3020_5_539()) jj_scanpos = xsp; return false; } - private boolean jj_3R_Skip_3002_9_767() + private boolean jj_3R_UpdateItem_1478_5_748() { - if (jj_3R_InputParameter_1710_3_145()) return true; + if (jj_scan_token(EQ)) return true; return false; } - private boolean jj_3R_UpdateItem_1471_5_745() + private boolean jj_3R_Skip_3008_9_770() { - if (jj_scan_token(EQ)) return true; + if (jj_3R_InputParameter_1717_3_146()) return true; return false; } - private boolean jj_3R_Skip_3000_9_766() + private boolean jj_3R_UpdateItem_1476_5_747() { - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_3R_Modifier_2009_3_157()) return true; return false; } - private boolean jj_3R_UpdateItem_1469_5_744() + private boolean jj_3R_Skip_3006_9_769() { - if (jj_3R_Modifier_2002_3_156()) return true; + if (jj_3R_PInteger_914_3_67()) return true; return false; } - private boolean jj_3R_UpdateItem_1468_3_652() + private boolean jj_3R_UpdateItem_1475_3_654() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_UpdateItem_1469_5_744()) jj_scanpos = xsp; + if (jj_3R_UpdateItem_1476_5_747()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_UpdateItem_1471_5_745()) { + if (jj_3R_UpdateItem_1478_5_748()) { jj_scanpos = xsp; - if (jj_3R_UpdateItem_1473_5_746()) { + if (jj_3R_UpdateItem_1480_5_749()) { jj_scanpos = xsp; - if (jj_3R_UpdateItem_1475_5_747()) { + if (jj_3R_UpdateItem_1482_5_750()) { jj_scanpos = xsp; - if (jj_3R_UpdateItem_1477_5_748()) { + if (jj_3R_UpdateItem_1484_5_751()) { jj_scanpos = xsp; - if (jj_3R_UpdateItem_1479_5_749()) return true; + if (jj_3R_UpdateItem_1486_5_752()) return true; } } } } - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_Skip_2993_9_765() + private boolean jj_3R_Skip_2999_9_768() { - if (jj_3R_InputParameter_1710_3_145()) return true; + if (jj_3R_InputParameter_1717_3_146()) return true; return false; } - private boolean jj_3R_Skip_2997_5_679() + private boolean jj_3R_Skip_3003_5_681() { if (jj_scan_token(OFFSET)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_Skip_3000_9_766()) { + if (jj_3R_Skip_3006_9_769()) { jj_scanpos = xsp; - if (jj_3R_Skip_3002_9_767()) return true; + if (jj_3R_Skip_3008_9_770()) return true; } return false; } - private boolean jj_3R_UpdateOperations_1457_9_663() + private boolean jj_3R_UpdateOperations_1464_9_665() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_UpdateRemoveItem_1498_3_662()) return true; + if (jj_3R_UpdateRemoveItem_1505_3_664()) return true; return false; } - private boolean jj_3R_Skip_2991_9_764() + private boolean jj_3R_Skip_2997_9_767() { - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_3R_PInteger_914_3_67()) return true; return false; } - private boolean jj_3R_OrderBy_2942_57_817() + private boolean jj_3R_OrderBy_2948_57_821() { if (jj_scan_token(ASC)) return true; return false; } - private boolean jj_3R_UpdateOperations_1453_6_535() + private boolean jj_3R_UpdateOperations_1460_6_536() { if (jj_scan_token(REMOVE)) return true; - if (jj_3R_UpdateRemoveItem_1498_3_662()) return true; + if (jj_3R_UpdateRemoveItem_1505_3_664()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_UpdateOperations_1457_9_663()) { jj_scanpos = xsp; break; } + if (jj_3R_UpdateOperations_1464_9_665()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_Skip_2988_5_678() + private boolean jj_3R_UpdateOperations_1456_9_663() + { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_UpdateIncrementItem_1495_3_662()) return true; + return false; + } + + private boolean jj_3R_Skip_2994_5_680() { if (jj_scan_token(SKIP2)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_Skip_2991_9_764()) { + if (jj_3R_Skip_2997_9_767()) { jj_scanpos = xsp; - if (jj_3R_Skip_2993_9_765()) return true; + if (jj_3R_Skip_2999_9_768()) return true; } return false; } - private boolean jj_3R_UpdateOperations_1449_9_661() + private boolean jj_3R_UpdateOperations_1452_9_661() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_UpdateIncrementItem_1488_3_660()) return true; + if (jj_scan_token(ADD)) return true; return false; } - private boolean jj_3R_Skip_2987_3_552() + private boolean jj_3R_Skip_2993_3_553() { Token xsp; xsp = jj_scanpos; - if (jj_3R_Skip_2988_5_678()) { + if (jj_3R_Skip_2994_5_680()) { jj_scanpos = xsp; - if (jj_3R_Skip_2997_5_679()) return true; + if (jj_3R_Skip_3003_5_681()) return true; } return false; } - private boolean jj_3R_UpdateOperations_1445_9_659() - { - if (jj_scan_token(ADD)) return true; - return false; - } - - private boolean jj_3R_UpdateOperations_1443_9_658() + private boolean jj_3R_UpdateOperations_1450_9_660() { if (jj_scan_token(INCREMENT)) return true; return false; } - private boolean jj_3R_Limit_2979_5_537() + private boolean jj_3R_Limit_2985_5_538() { - if (jj_3R_InputParameter_1710_3_145()) return true; + if (jj_3R_InputParameter_1717_3_146()) return true; return false; } - private boolean jj_3R_OrderBy_2925_57_814() + private boolean jj_3R_UpdateStatement_1403_51_432() { - if (jj_scan_token(ASC)) return true; + if (jj_scan_token(AFTER)) return true; return false; } - private boolean jj_3R_Limit_2977_5_536() + private boolean jj_3R_OrderBy_2931_57_818() { - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_scan_token(ASC)) return true; return false; } - private boolean jj_3R_UpdateStatement_1396_51_431() + private boolean jj_3R_Limit_2983_5_537() { - if (jj_scan_token(AFTER)) return true; + if (jj_3R_PInteger_914_3_67()) return true; return false; } - private boolean jj_3R_UpdateOperations_1441_5_534() + private boolean jj_3R_UpdateOperations_1448_5_535() { Token xsp; xsp = jj_scanpos; - if (jj_3R_UpdateOperations_1443_9_658()) { + if (jj_3R_UpdateOperations_1450_9_660()) { jj_scanpos = xsp; - if (jj_3R_UpdateOperations_1445_9_659()) return true; + if (jj_3R_UpdateOperations_1452_9_661()) return true; } - if (jj_3R_UpdateIncrementItem_1488_3_660()) return true; + if (jj_3R_UpdateIncrementItem_1495_3_662()) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_UpdateOperations_1449_9_661()) { jj_scanpos = xsp; break; } + if (jj_3R_UpdateOperations_1456_9_663()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_UpdateOperations_1436_9_657() + private boolean jj_3R_UpdateOperations_1443_9_659() { if (jj_scan_token(CONTENT)) return true; return false; } - private boolean jj_3R_UpdateOperations_1434_9_656() + private boolean jj_3R_UpdateOperations_1441_9_658() { if (jj_scan_token(MERGE)) return true; return false; } - private boolean jj_3R_Limit_2975_3_428() + private boolean jj_3R_Limit_2981_3_429() { if (jj_scan_token(LIMIT)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_Limit_2977_5_536()) { + if (jj_3R_Limit_2983_5_537()) { jj_scanpos = xsp; - if (jj_3R_Limit_2979_5_537()) return true; + if (jj_3R_Limit_2985_5_538()) return true; } return false; } - private boolean jj_3R_UpdateOperations_1428_9_655() + private boolean jj_3R_UpdateOperations_1435_9_657() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_UpdatePutItem_1505_3_654()) return true; + if (jj_3R_UpdatePutItem_1512_3_656()) return true; return false; } - private boolean jj_3R_UpdateOperations_1432_5_533() + private boolean jj_3R_UpdateOperations_1439_5_534() { Token xsp; xsp = jj_scanpos; - if (jj_3R_UpdateOperations_1434_9_656()) { + if (jj_3R_UpdateOperations_1441_9_658()) { jj_scanpos = xsp; - if (jj_3R_UpdateOperations_1436_9_657()) return true; + if (jj_3R_UpdateOperations_1443_9_659()) return true; } - if (jj_3R_Json_3078_3_211()) return true; + if (jj_3R_Json_3076_3_212()) return true; return false; } - private boolean jj_3R_Unwind_2966_5_551() + private boolean jj_3R_Unwind_2972_5_552() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_Unwind_2964_3_447() + private boolean jj_3R_Unwind_2970_3_448() { if (jj_scan_token(UNWIND)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_Unwind_2966_5_551()) { jj_scanpos = xsp; break; } + if (jj_3R_Unwind_2972_5_552()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_UpdateOperations_1420_9_653() + private boolean jj_3R_UpdateOperations_1427_9_655() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_UpdateItem_1468_3_652()) return true; + if (jj_3R_UpdateItem_1475_3_654()) return true; return false; } - private boolean jj_3R_UpdateOperations_1424_5_532() + private boolean jj_3R_UpdateOperations_1431_5_533() { if (jj_scan_token(PUT)) return true; - if (jj_3R_UpdatePutItem_1505_3_654()) return true; + if (jj_3R_UpdatePutItem_1512_3_656()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_UpdateOperations_1428_9_655()) { jj_scanpos = xsp; break; } + if (jj_3R_UpdateOperations_1435_9_657()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_OrderBy_2905_55_757() + private boolean jj_3R_UpdateEdgeStatement_1381_51_427() { - if (jj_scan_token(ASC)) return true; + if (jj_scan_token(AFTER)) return true; return false; } - private boolean jj_3R_GroupBy_2955_5_547() + private boolean jj_3R_OrderBy_2911_55_760() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_scan_token(ASC)) return true; return false; } - private boolean jj_3R_UpdateEdgeStatement_1374_51_426() + private boolean jj_3R_GroupBy_2961_5_548() { - if (jj_scan_token(AFTER)) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_UpdateOperations_1416_5_531() + private boolean jj_3R_UpdateOperations_1423_5_532() { if (jj_scan_token(SET)) return true; - if (jj_3R_UpdateItem_1468_3_652()) return true; + if (jj_3R_UpdateItem_1475_3_654()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_UpdateOperations_1420_9_653()) { jj_scanpos = xsp; break; } + if (jj_3R_UpdateOperations_1427_9_655()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_GroupBy_2953_3_445() + private boolean jj_3R_GroupBy_2959_3_446() { if (jj_scan_token(GROUP_BY)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_GroupBy_2955_5_547()) { jj_scanpos = xsp; break; } + if (jj_3R_GroupBy_2961_5_548()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_OrderBy_2942_11_816() - { - if (jj_scan_token(DESC)) return true; - return false; - } - - private boolean jj_3R_OrderBy_2942_11_763() + private boolean jj_3R_UpdateOperations_1422_3_425() { Token xsp; xsp = jj_scanpos; - if (jj_3R_OrderBy_2942_11_816()) { + if (jj_3R_UpdateOperations_1423_5_532()) { + jj_scanpos = xsp; + if (jj_3R_UpdateOperations_1431_5_533()) { jj_scanpos = xsp; - if (jj_3R_OrderBy_2942_57_817()) return true; + if (jj_3R_UpdateOperations_1439_5_534()) { + jj_scanpos = xsp; + if (jj_3R_UpdateOperations_1448_5_535()) { + jj_scanpos = xsp; + if (jj_3R_UpdateOperations_1460_6_536()) return true; + } + } } + } + return false; + } + + private boolean jj_3R_OrderBy_2948_11_820() + { + if (jj_scan_token(DESC)) return true; return false; } - private boolean jj_3R_UpdateOperations_1415_3_424() + private boolean jj_3R_OrderBy_2948_11_766() { Token xsp; xsp = jj_scanpos; - if (jj_3R_UpdateOperations_1416_5_531()) { - jj_scanpos = xsp; - if (jj_3R_UpdateOperations_1424_5_532()) { - jj_scanpos = xsp; - if (jj_3R_UpdateOperations_1432_5_533()) { + if (jj_3R_OrderBy_2948_11_820()) { jj_scanpos = xsp; - if (jj_3R_UpdateOperations_1441_5_534()) { - jj_scanpos = xsp; - if (jj_3R_UpdateOperations_1453_6_535()) return true; - } - } - } + if (jj_3R_OrderBy_2948_57_821()) return true; } return false; } - private boolean jj_3R_OrderBy_2937_15_815() + private boolean jj_3R_OrderBy_2943_15_819() { - if (jj_3R_Modifier_2002_3_156()) return true; + if (jj_3R_Modifier_2009_3_157()) return true; return false; } - private boolean jj_3R_OrderBy_2940_11_762() + private boolean jj_3R_OrderBy_2946_11_765() { if (jj_scan_token(RECORD_ATTRIBUTE)) return true; return false; } - private boolean jj_3R_OrderBy_2935_11_761() + private boolean jj_3R_OrderBy_2941_11_764() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_OrderBy_2937_15_815()) jj_scanpos = xsp; + if (jj_3R_OrderBy_2943_15_819()) jj_scanpos = xsp; return false; } - private boolean jj_3R_OrderBy_2888_55_754() + private boolean jj_3R_UpdateStatement_1410_5_248() { - if (jj_scan_token(ASC)) return true; + if (jj_3R_Timeout_3017_3_430()) return true; return false; } - private boolean jj_3R_UpdateStatement_1403_5_247() + private boolean jj_3R_OrderBy_2894_55_757() { - if (jj_3R_Timeout_3011_3_429()) return true; + if (jj_scan_token(ASC)) return true; return false; } - private boolean jj_3R_UpdateStatement_1402_5_246() + private boolean jj_3R_UpdateStatement_1409_5_247() { - if (jj_3R_Limit_2975_3_428()) return true; + if (jj_3R_Limit_2981_3_429()) return true; return false; } - private boolean jj_3R_UpdateStatement_1401_5_245() + private boolean jj_3R_UpdateStatement_1408_5_246() { if (jj_scan_token(WHERE)) return true; - if (jj_3R_WhereClause_2378_3_158()) return true; + if (jj_3R_WhereClause_2385_3_159()) return true; return false; } - private boolean jj_3R_UpdateStatement_1398_7_433() + private boolean jj_3R_UpdateStatement_1405_7_434() { - if (jj_3R_Projection_1758_3_419()) return true; + if (jj_3R_Projection_1765_3_420()) return true; return false; } - private boolean jj_3R_UpdateStatement_1396_7_430() + private boolean jj_3R_UpdateStatement_1403_7_431() { if (jj_scan_token(BEFORE)) return true; return false; } - private boolean jj_3R_OrderBy_2925_11_813() + private boolean jj_3R_OrderBy_2931_11_817() { if (jj_scan_token(DESC)) return true; return false; } - private boolean jj_3R_OrderBy_2925_11_760() + private boolean jj_3R_OrderBy_2931_11_763() { Token xsp; xsp = jj_scanpos; - if (jj_3R_OrderBy_2925_11_813()) { + if (jj_3R_OrderBy_2931_11_817()) { jj_scanpos = xsp; - if (jj_3R_OrderBy_2925_57_814()) return true; + if (jj_3R_OrderBy_2931_57_818()) return true; } return false; } - private boolean jj_3R_OrderBy_2920_15_812() - { - if (jj_3R_Modifier_2002_3_156()) return true; - return false; - } - - private boolean jj_3R_OrderBy_2928_7_677() + private boolean jj_3R_UpdateStatement_1402_5_245() { - if (jj_scan_token(LPAREN)) return true; + if (jj_scan_token(RETURN)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_OrderBy_2935_11_761()) { + if (jj_3R_UpdateStatement_1403_7_431()) { jj_scanpos = xsp; - if (jj_3R_OrderBy_2940_11_762()) return true; + if (jj_3R_UpdateStatement_1403_51_432()) { + jj_scanpos = xsp; + if (jj_3R_UpdateStatement_1403_93_433()) return true; + } } xsp = jj_scanpos; - if (jj_3R_OrderBy_2942_11_763()) jj_scanpos = xsp; - if (jj_scan_token(RPAREN)) return true; + if (jj_3R_UpdateStatement_1405_7_434()) jj_scanpos = xsp; return false; } - private boolean jj_3R_UpdateStatement_1395_5_244() + private boolean jj_3R_OrderBy_2926_15_816() { - if (jj_scan_token(RETURN)) return true; + if (jj_3R_Modifier_2009_3_157()) return true; + return false; + } + + private boolean jj_3R_OrderBy_2934_7_679() + { + if (jj_scan_token(LPAREN)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_UpdateStatement_1396_7_430()) { - jj_scanpos = xsp; - if (jj_3R_UpdateStatement_1396_51_431()) { + if (jj_3R_OrderBy_2941_11_764()) { jj_scanpos = xsp; - if (jj_3R_UpdateStatement_1396_93_432()) return true; - } + if (jj_3R_OrderBy_2946_11_765()) return true; } xsp = jj_scanpos; - if (jj_3R_UpdateStatement_1398_7_433()) jj_scanpos = xsp; + if (jj_3R_OrderBy_2948_11_766()) jj_scanpos = xsp; + if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_OrderBy_2923_11_759() + private boolean jj_3R_OrderBy_2929_11_762() { if (jj_scan_token(RECORD_ATTRIBUTE)) return true; return false; } - private boolean jj_3R_UpdateStatement_1393_5_243() + private boolean jj_3R_UpdateStatement_1400_5_244() { if (jj_scan_token(UPSERT)) return true; return false; } - private boolean jj_3R_UpdateStatement_1392_5_242() + private boolean jj_3R_UpdateStatement_1399_5_243() { - if (jj_3R_UpdateOperations_1415_3_424()) return true; + if (jj_3R_UpdateOperations_1422_3_425()) return true; return false; } - private boolean jj_3R_OrderBy_2918_11_758() + private boolean jj_3R_OrderBy_2924_11_761() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_OrderBy_2920_15_812()) jj_scanpos = xsp; + if (jj_3R_OrderBy_2926_15_816()) jj_scanpos = xsp; return false; } - private boolean jj_3R_UpdateStatement_1390_3_84() + private boolean jj_3R_UpdateStatement_1397_3_85() { if (jj_scan_token(UPDATE)) return true; - if (jj_3R_FromClause_2215_3_235()) return true; + if (jj_3R_FromClause_2222_3_236()) return true; Token xsp; - if (jj_3R_UpdateStatement_1392_5_242()) return true; + if (jj_3R_UpdateStatement_1399_5_243()) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_UpdateStatement_1392_5_242()) { jj_scanpos = xsp; break; } + if (jj_3R_UpdateStatement_1399_5_243()) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3R_UpdateStatement_1393_5_243()) jj_scanpos = xsp; + if (jj_3R_UpdateStatement_1400_5_244()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_UpdateStatement_1395_5_244()) jj_scanpos = xsp; + if (jj_3R_UpdateStatement_1402_5_245()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_UpdateStatement_1401_5_245()) jj_scanpos = xsp; + if (jj_3R_UpdateStatement_1408_5_246()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_UpdateStatement_1402_5_246()) jj_scanpos = xsp; + if (jj_3R_UpdateStatement_1409_5_247()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_UpdateStatement_1403_5_247()) jj_scanpos = xsp; + if (jj_3R_UpdateStatement_1410_5_248()) jj_scanpos = xsp; return false; } - private boolean jj_3R_UpdateEdgeStatement_1381_5_241() + private boolean jj_3R_UpdateEdgeStatement_1388_5_242() { - if (jj_3R_Timeout_3011_3_429()) return true; + if (jj_3R_Timeout_3017_3_430()) return true; return false; } - private boolean jj_3R_UpdateEdgeStatement_1380_5_240() + private boolean jj_3R_UpdateEdgeStatement_1387_5_241() { - if (jj_3R_Limit_2975_3_428()) return true; + if (jj_3R_Limit_2981_3_429()) return true; return false; } - private boolean jj_3R_OrderBy_2912_7_676() + private boolean jj_3R_UpdateEdgeStatement_1386_5_240() + { + if (jj_scan_token(WHERE)) return true; + if (jj_3R_WhereClause_2385_3_159()) return true; + return false; + } + + private boolean jj_3R_OrderBy_2918_7_678() { Token xsp; xsp = jj_scanpos; - if (jj_3R_OrderBy_2918_11_758()) { + if (jj_3R_OrderBy_2924_11_761()) { jj_scanpos = xsp; - if (jj_3R_OrderBy_2923_11_759()) return true; + if (jj_3R_OrderBy_2929_11_762()) return true; } xsp = jj_scanpos; - if (jj_3R_OrderBy_2925_11_760()) jj_scanpos = xsp; - return false; - } - - private boolean jj_3R_UpdateEdgeStatement_1379_5_239() - { - if (jj_scan_token(WHERE)) return true; - if (jj_3R_WhereClause_2378_3_158()) return true; + if (jj_3R_OrderBy_2931_11_763()) jj_scanpos = xsp; return false; } - private boolean jj_3R_UpdateEdgeStatement_1376_7_427() + private boolean jj_3R_UpdateEdgeStatement_1383_7_428() { - if (jj_3R_Projection_1758_3_419()) return true; + if (jj_3R_Projection_1765_3_420()) return true; return false; } - private boolean jj_3R_UpdateEdgeStatement_1374_7_425() + private boolean jj_3R_UpdateEdgeStatement_1381_7_426() { if (jj_scan_token(BEFORE)) return true; return false; } - private boolean jj_3R_OrderBy_2910_5_550() + private boolean jj_3R_OrderBy_2916_5_551() { if (jj_scan_token(COMMA)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_OrderBy_2912_7_676()) { + if (jj_3R_OrderBy_2918_7_678()) { jj_scanpos = xsp; - if (jj_3R_OrderBy_2928_7_677()) return true; + if (jj_3R_OrderBy_2934_7_679()) return true; } return false; } - private boolean jj_3R_OrderBy_2905_9_756() + private boolean jj_3R_OrderBy_2911_9_759() { if (jj_scan_token(DESC)) return true; return false; } - private boolean jj_3R_OrderBy_2905_9_675() + private boolean jj_3R_OrderBy_2911_9_677() { Token xsp; xsp = jj_scanpos; - if (jj_3R_OrderBy_2905_9_756()) { + if (jj_3R_OrderBy_2911_9_759()) { jj_scanpos = xsp; - if (jj_3R_OrderBy_2905_55_757()) return true; + if (jj_3R_OrderBy_2911_55_760()) return true; } return false; } - private boolean jj_3R_OrderBy_2900_13_755() - { - if (jj_3R_Modifier_2002_3_156()) return true; - return false; - } - - private boolean jj_3R_UpdateEdgeStatement_1373_5_238() + private boolean jj_3R_UpdateEdgeStatement_1380_5_239() { if (jj_scan_token(RETURN)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_UpdateEdgeStatement_1374_7_425()) { + if (jj_3R_UpdateEdgeStatement_1381_7_426()) { jj_scanpos = xsp; - if (jj_3R_UpdateEdgeStatement_1374_51_426()) return true; + if (jj_3R_UpdateEdgeStatement_1381_51_427()) return true; } xsp = jj_scanpos; - if (jj_3R_UpdateEdgeStatement_1376_7_427()) jj_scanpos = xsp; + if (jj_3R_UpdateEdgeStatement_1383_7_428()) jj_scanpos = xsp; + return false; + } + + private boolean jj_3R_OrderBy_2906_13_758() + { + if (jj_3R_Modifier_2009_3_157()) return true; return false; } - private boolean jj_3R_OrderBy_2903_9_674() + private boolean jj_3R_OrderBy_2909_9_676() { if (jj_scan_token(RECORD_ATTRIBUTE)) return true; return false; } - private boolean jj_3R_UpdateEdgeStatement_1371_5_237() + private boolean jj_3R_UpdateEdgeStatement_1378_5_238() { if (jj_scan_token(UPSERT)) return true; return false; } - private boolean jj_3R_UpdateEdgeStatement_1370_5_236() + private boolean jj_3R_UpdateEdgeStatement_1377_5_237() { - if (jj_3R_UpdateOperations_1415_3_424()) return true; + if (jj_3R_UpdateOperations_1422_3_425()) return true; return false; } - private boolean jj_3R_OrderBy_2898_9_673() + private boolean jj_3R_OrderBy_2904_9_675() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_OrderBy_2900_13_755()) jj_scanpos = xsp; + if (jj_3R_OrderBy_2906_13_758()) jj_scanpos = xsp; return false; } - private boolean jj_3R_UpdateEdgeStatement_1368_3_83() + private boolean jj_3R_UpdateEdgeStatement_1375_3_84() { if (jj_scan_token(UPDATE)) return true; if (jj_scan_token(EDGE)) return true; - if (jj_3R_FromClause_2215_3_235()) return true; + if (jj_3R_FromClause_2222_3_236()) return true; Token xsp; - if (jj_3R_UpdateEdgeStatement_1370_5_236()) return true; + if (jj_3R_UpdateEdgeStatement_1377_5_237()) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_UpdateEdgeStatement_1370_5_236()) { jj_scanpos = xsp; break; } + if (jj_3R_UpdateEdgeStatement_1377_5_237()) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3R_UpdateEdgeStatement_1371_5_237()) jj_scanpos = xsp; + if (jj_3R_UpdateEdgeStatement_1378_5_238()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_UpdateEdgeStatement_1373_5_238()) jj_scanpos = xsp; + if (jj_3R_UpdateEdgeStatement_1380_5_239()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_UpdateEdgeStatement_1379_5_239()) jj_scanpos = xsp; + if (jj_3R_UpdateEdgeStatement_1386_5_240()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_UpdateEdgeStatement_1380_5_240()) jj_scanpos = xsp; + if (jj_3R_UpdateEdgeStatement_1387_5_241()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_UpdateEdgeStatement_1381_5_241()) jj_scanpos = xsp; + if (jj_3R_UpdateEdgeStatement_1388_5_242()) jj_scanpos = xsp; return false; } - private boolean jj_3R_DeleteEdgeWhereStatement_1360_5_310() + private boolean jj_3R_DeleteEdgeWhereStatement_1367_5_311() { - if (jj_3R_Limit_2975_3_428()) return true; + if (jj_3R_Limit_2981_3_429()) return true; return false; } - private boolean jj_3R_DeleteEdgeWhereStatement_1359_5_309() + private boolean jj_3R_DeleteEdgeWhereStatement_1366_5_310() { if (jj_scan_token(WHERE)) return true; - if (jj_3R_WhereClause_2378_3_158()) return true; + if (jj_3R_WhereClause_2385_3_159()) return true; return false; } - private boolean jj_3R_DeleteEdgeWhereStatement_1358_5_308() + private boolean jj_3R_DeleteEdgeWhereStatement_1365_5_309() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_OrderBy_2888_9_753() + private boolean jj_3R_OrderBy_2894_9_756() { if (jj_scan_token(DESC)) return true; return false; } - private boolean jj_3R_OrderBy_2888_9_672() + private boolean jj_3R_OrderBy_2894_9_674() { Token xsp; xsp = jj_scanpos; - if (jj_3R_OrderBy_2888_9_753()) { + if (jj_3R_OrderBy_2894_9_756()) { jj_scanpos = xsp; - if (jj_3R_OrderBy_2888_55_754()) return true; + if (jj_3R_OrderBy_2894_55_757()) return true; } return false; } - private boolean jj_3R_OrderBy_2883_13_752() + private boolean jj_3R_OrderBy_2889_13_755() { - if (jj_3R_Modifier_2002_3_156()) return true; + if (jj_3R_Modifier_2009_3_157()) return true; return false; } - private boolean jj_3R_OrderBy_2891_5_549() + private boolean jj_3R_OrderBy_2897_5_550() { if (jj_scan_token(LPAREN)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_OrderBy_2898_9_673()) { + if (jj_3R_OrderBy_2904_9_675()) { jj_scanpos = xsp; - if (jj_3R_OrderBy_2903_9_674()) return true; + if (jj_3R_OrderBy_2909_9_676()) return true; } xsp = jj_scanpos; - if (jj_3R_OrderBy_2905_9_675()) jj_scanpos = xsp; + if (jj_3R_OrderBy_2911_9_677()) jj_scanpos = xsp; if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_OrderBy_2886_9_671() - { - if (jj_scan_token(RECORD_ATTRIBUTE)) return true; - return false; - } - - private boolean jj_3R_DeleteEdgeWhereStatement_1357_3_136() + private boolean jj_3R_DeleteEdgeWhereStatement_1364_3_137() { if (jj_scan_token(DELETE)) return true; if (jj_scan_token(EDGE)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_DeleteEdgeWhereStatement_1358_5_308()) jj_scanpos = xsp; + if (jj_3R_DeleteEdgeWhereStatement_1365_5_309()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_DeleteEdgeWhereStatement_1359_5_309()) jj_scanpos = xsp; + if (jj_3R_DeleteEdgeWhereStatement_1366_5_310()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_DeleteEdgeWhereStatement_1360_5_310()) jj_scanpos = xsp; + if (jj_3R_DeleteEdgeWhereStatement_1367_5_311()) jj_scanpos = xsp; return false; } - private boolean jj_3R_OrderBy_2881_9_670() + private boolean jj_3R_OrderBy_2892_9_673() { - if (jj_3R_Identifier_726_1_140()) return true; - Token xsp; + if (jj_scan_token(RECORD_ATTRIBUTE)) return true; + return false; + } + + private boolean jj_3R_OrderBy_2887_9_672() + { + if (jj_3R_Identifier_733_1_141()) return true; + Token xsp; xsp = jj_scanpos; - if (jj_3R_OrderBy_2883_13_752()) jj_scanpos = xsp; + if (jj_3R_OrderBy_2889_13_755()) jj_scanpos = xsp; return false; } - private boolean jj_3R_DeleteEdgeVToStatement_1348_5_305() + private boolean jj_3R_DeleteEdgeVToStatement_1355_5_306() { - if (jj_3R_Limit_2975_3_428()) return true; + if (jj_3R_Limit_2981_3_429()) return true; return false; } - private boolean jj_3R_DeleteEdgeVToStatement_1347_5_304() + private boolean jj_3R_DeleteEdgeVToStatement_1354_5_305() { if (jj_scan_token(WHERE)) return true; - if (jj_3R_WhereClause_2378_3_158()) return true; + if (jj_3R_WhereClause_2385_3_159()) return true; return false; } - private boolean jj_3R_DeleteEdgeVToStatement_1345_3_134() + private boolean jj_3R_DeleteEdgeVToStatement_1352_3_135() { if (jj_scan_token(DELETE)) return true; if (jj_scan_token(EDGE)) return true; if (jj_scan_token(TO)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_DeleteEdgeVToStatement_1347_5_304()) jj_scanpos = xsp; + if (jj_3R_DeleteEdgeVToStatement_1354_5_305()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_DeleteEdgeVToStatement_1348_5_305()) jj_scanpos = xsp; + if (jj_3R_DeleteEdgeVToStatement_1355_5_306()) jj_scanpos = xsp; return false; } - private boolean jj_3R_OrderBy_2875_5_548() + private boolean jj_3R_OrderBy_2881_5_549() { Token xsp; xsp = jj_scanpos; - if (jj_3R_OrderBy_2881_9_670()) { + if (jj_3R_OrderBy_2887_9_672()) { jj_scanpos = xsp; - if (jj_3R_OrderBy_2886_9_671()) return true; + if (jj_3R_OrderBy_2892_9_673()) return true; } xsp = jj_scanpos; - if (jj_3R_OrderBy_2888_9_672()) jj_scanpos = xsp; + if (jj_3R_OrderBy_2894_9_674()) jj_scanpos = xsp; return false; } - private boolean jj_3R_DeleteEdgeToStatement_1336_5_307() + private boolean jj_3R_DeleteEdgeToStatement_1343_5_308() { - if (jj_3R_Limit_2975_3_428()) return true; + if (jj_3R_Limit_2981_3_429()) return true; return false; } - private boolean jj_3R_DeleteEdgeToStatement_1335_5_306() + private boolean jj_3R_DeleteEdgeToStatement_1342_5_307() { if (jj_scan_token(WHERE)) return true; - if (jj_3R_WhereClause_2378_3_158()) return true; + if (jj_3R_WhereClause_2385_3_159()) return true; return false; } - private boolean jj_3R_OrderBy_2872_1_446() + private boolean jj_3R_OrderBy_2878_1_447() { if (jj_scan_token(ORDER_BY)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_OrderBy_2875_5_548()) { + if (jj_3R_OrderBy_2881_5_549()) { jj_scanpos = xsp; - if (jj_3R_OrderBy_2891_5_549()) return true; + if (jj_3R_OrderBy_2897_5_550()) return true; } while (true) { xsp = jj_scanpos; - if (jj_3R_OrderBy_2910_5_550()) { jj_scanpos = xsp; break; } + if (jj_3R_OrderBy_2916_5_551()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_DeleteEdgeToStatement_1331_3_135() + private boolean jj_3R_DeleteEdgeToStatement_1338_3_136() { if (jj_scan_token(DELETE)) return true; if (jj_scan_token(EDGE)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; if (jj_scan_token(TO)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_DeleteEdgeToStatement_1335_5_306()) jj_scanpos = xsp; + if (jj_3R_DeleteEdgeToStatement_1342_5_307()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_DeleteEdgeToStatement_1336_5_307()) jj_scanpos = xsp; + if (jj_3R_DeleteEdgeToStatement_1343_5_308()) jj_scanpos = xsp; return false; } private boolean jj_3_128() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_DeleteEdgeFromToStatement_1322_5_303() + private boolean jj_3R_DeleteEdgeFromToStatement_1329_5_304() { - if (jj_3R_Limit_2975_3_428()) return true; + if (jj_3R_Limit_2981_3_429()) return true; return false; } - private boolean jj_3R_MatchesCondition_2857_5_393() + private boolean jj_3R_MatchesCondition_2864_5_394() { - if (jj_3R_InputParameter_1710_3_145()) return true; + if (jj_3R_InputParameter_1717_3_146()) return true; return false; } - private boolean jj_3R_DeleteEdgeFromToStatement_1321_5_302() + private boolean jj_3R_DeleteEdgeFromToStatement_1328_5_303() { if (jj_scan_token(WHERE)) return true; - if (jj_3R_WhereClause_2378_3_158()) return true; + if (jj_3R_WhereClause_2385_3_159()) return true; return false; } - private boolean jj_3R_MatchesCondition_2855_5_392() + private boolean jj_3R_MatchesCondition_2862_5_393() { if (jj_scan_token(CHARACTER_LITERAL)) return true; return false; } - private boolean jj_3R_DeleteEdgeFromToStatement_1318_5_301() + private boolean jj_3R_DeleteEdgeFromToStatement_1325_5_302() { if (jj_scan_token(TO)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_MatchesCondition_2853_5_391() + private boolean jj_3R_MatchesCondition_2860_5_392() { - if (jj_3R_PString_712_3_248()) return true; + if (jj_3R_PString_719_3_249()) return true; return false; } - private boolean jj_3R_DeleteEdgeFromToStatement_1315_5_300() + private boolean jj_3R_DeleteEdgeFromToStatement_1322_5_301() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_MatchesCondition_2850_5_390() + private boolean jj_3R_MatchesCondition_2857_5_391() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_DeleteEdgeFromToStatement_1314_3_133() + private boolean jj_3R_DeleteEdgeFromToStatement_1321_3_134() { if (jj_scan_token(DELETE)) return true; if (jj_scan_token(EDGE)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_DeleteEdgeFromToStatement_1315_5_300()) jj_scanpos = xsp; + if (jj_3R_DeleteEdgeFromToStatement_1322_5_301()) jj_scanpos = xsp; if (jj_scan_token(FROM)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; xsp = jj_scanpos; - if (jj_3R_DeleteEdgeFromToStatement_1318_5_301()) jj_scanpos = xsp; + if (jj_3R_DeleteEdgeFromToStatement_1325_5_302()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_DeleteEdgeFromToStatement_1321_5_302()) jj_scanpos = xsp; + if (jj_3R_DeleteEdgeFromToStatement_1328_5_303()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_DeleteEdgeFromToStatement_1322_5_303()) jj_scanpos = xsp; + if (jj_3R_DeleteEdgeFromToStatement_1329_5_304()) jj_scanpos = xsp; return false; } - private boolean jj_3R_MatchesCondition_2848_3_191() + private boolean jj_3R_MatchesCondition_2855_3_192() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; if (jj_scan_token(MATCHES)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_MatchesCondition_2850_5_390()) { + if (jj_3R_MatchesCondition_2857_5_391()) { jj_scanpos = xsp; - if (jj_3R_MatchesCondition_2853_5_391()) { + if (jj_3R_MatchesCondition_2860_5_392()) { jj_scanpos = xsp; - if (jj_3R_MatchesCondition_2855_5_392()) { + if (jj_3R_MatchesCondition_2862_5_393()) { jj_scanpos = xsp; - if (jj_3R_MatchesCondition_2857_5_393()) return true; + if (jj_3R_MatchesCondition_2864_5_394()) return true; } } } @@ -19729,218 +19719,218 @@ private boolean jj_3R_MatchesCondition_2848_3_191() private boolean jj_3_127() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_DeleteEdgeByRidStatement_1300_11_556() + private boolean jj_3R_DeleteEdgeByRidStatement_1307_11_557() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_Rid_624_3_144()) return true; + if (jj_3R_Rid_631_3_145()) return true; return false; } - private boolean jj_3R_ContainsTextCondition_2841_3_190() + private boolean jj_3R_ContainsTextCondition_2848_3_191() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; if (jj_scan_token(CONTAINSTEXT)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_DeleteEdgeByRidStatement_1294_9_450() + private boolean jj_3R_DeleteEdgeByRidStatement_1301_9_451() { - if (jj_3R_Rid_624_3_144()) return true; + if (jj_3R_Rid_631_3_145()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_DeleteEdgeByRidStatement_1300_11_556()) { jj_scanpos = xsp; break; } + if (jj_3R_DeleteEdgeByRidStatement_1307_11_557()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_ContainsAnyCondition_2832_5_389() + private boolean jj_3R_ContainsAnyCondition_2839_5_390() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } private boolean jj_3_126() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_OrBlock_2385_3_153()) return true; + if (jj_3R_OrBlock_2392_3_154()) return true; if (jj_scan_token(RPAREN)) return true; return false; } private boolean jj_3_125() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_DeleteEdgeByRidStatement_1291_5_299() + private boolean jj_3R_DeleteEdgeByRidStatement_1298_5_300() { if (jj_scan_token(LBRACKET)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_DeleteEdgeByRidStatement_1294_9_450()) jj_scanpos = xsp; + if (jj_3R_DeleteEdgeByRidStatement_1301_9_451()) jj_scanpos = xsp; if (jj_scan_token(RBRACKET)) return true; return false; } - private boolean jj_3R_DeleteEdgeByRidStatement_1289_5_298() + private boolean jj_3R_DeleteEdgeByRidStatement_1296_5_299() { - if (jj_3R_Rid_624_3_144()) return true; + if (jj_3R_Rid_631_3_145()) return true; return false; } - private boolean jj_3R_ContainsAnyCondition_2826_3_189() + private boolean jj_3R_ContainsAnyCondition_2833_3_190() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; if (jj_scan_token(CONTAINSANY)) return true; Token xsp; xsp = jj_scanpos; if (jj_3_126()) { jj_scanpos = xsp; - if (jj_3R_ContainsAnyCondition_2832_5_389()) return true; + if (jj_3R_ContainsAnyCondition_2839_5_390()) return true; } return false; } private boolean jj_3_44() { - if (jj_3R_DeleteEdgeWhereStatement_1357_3_136()) return true; + if (jj_3R_DeleteEdgeWhereStatement_1364_3_137()) return true; return false; } - private boolean jj_3R_DeleteEdgeByRidStatement_1287_3_132() + private boolean jj_3R_DeleteEdgeByRidStatement_1294_3_133() { if (jj_scan_token(DELETE)) return true; if (jj_scan_token(EDGE)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_DeleteEdgeByRidStatement_1289_5_298()) { + if (jj_3R_DeleteEdgeByRidStatement_1296_5_299()) { jj_scanpos = xsp; - if (jj_3R_DeleteEdgeByRidStatement_1291_5_299()) return true; + if (jj_3R_DeleteEdgeByRidStatement_1298_5_300()) return true; } return false; } private boolean jj_3_43() { - if (jj_3R_DeleteEdgeToStatement_1331_3_135()) return true; + if (jj_3R_DeleteEdgeToStatement_1338_3_136()) return true; return false; } - private boolean jj_3R_ContainsAllCondition_2817_5_388() + private boolean jj_3R_ContainsAllCondition_2824_5_389() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } private boolean jj_3_42() { - if (jj_3R_DeleteEdgeVToStatement_1345_3_134()) return true; + if (jj_3R_DeleteEdgeVToStatement_1352_3_135()) return true; return false; } private boolean jj_3_124() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_OrBlock_2385_3_153()) return true; + if (jj_3R_OrBlock_2392_3_154()) return true; if (jj_scan_token(RPAREN)) return true; return false; } private boolean jj_3_41() { - if (jj_3R_DeleteEdgeFromToStatement_1314_3_133()) return true; + if (jj_3R_DeleteEdgeFromToStatement_1321_3_134()) return true; return false; } - private boolean jj_3R_DeleteEdgeStatement_1276_5_224() + private boolean jj_3R_DeleteEdgeStatement_1283_5_225() { - if (jj_3R_DeleteEdgeWhereStatement_1357_3_136()) return true; + if (jj_3R_DeleteEdgeWhereStatement_1364_3_137()) return true; return false; } private boolean jj_3_40() { - if (jj_3R_DeleteEdgeByRidStatement_1287_3_132()) return true; + if (jj_3R_DeleteEdgeByRidStatement_1294_3_133()) return true; return false; } - private boolean jj_3R_ContainsAllCondition_2811_3_188() + private boolean jj_3R_ContainsAllCondition_2818_3_189() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; if (jj_scan_token(CONTAINSALL)) return true; Token xsp; xsp = jj_scanpos; if (jj_3_124()) { jj_scanpos = xsp; - if (jj_3R_ContainsAllCondition_2817_5_388()) return true; + if (jj_3R_ContainsAllCondition_2824_5_389()) return true; } return false; } - private boolean jj_3R_DeleteEdgeStatement_1273_5_223() + private boolean jj_3R_DeleteEdgeStatement_1280_5_224() { - if (jj_3R_DeleteEdgeToStatement_1331_3_135()) return true; + if (jj_3R_DeleteEdgeToStatement_1338_3_136()) return true; return false; } - private boolean jj_3R_DeleteEdgeStatement_1270_5_222() + private boolean jj_3R_DeleteEdgeStatement_1277_5_223() { - if (jj_3R_DeleteEdgeVToStatement_1345_3_134()) return true; + if (jj_3R_DeleteEdgeVToStatement_1352_3_135()) return true; return false; } private boolean jj_3_121() { - if (jj_3R_SelectStatement_1142_3_130()) return true; + if (jj_3R_SelectStatement_1149_3_131()) return true; return false; } - private boolean jj_3R_NotInCondition_2803_5_383() + private boolean jj_3R_NotInCondition_2810_5_384() { - if (jj_3R_MathExpression_2107_3_159()) return true; + if (jj_3R_MathExpression_2114_3_160()) return true; return false; } - private boolean jj_3R_DeleteEdgeStatement_1267_5_221() + private boolean jj_3R_DeleteEdgeStatement_1274_5_222() { - if (jj_3R_DeleteEdgeFromToStatement_1314_3_133()) return true; + if (jj_3R_DeleteEdgeFromToStatement_1321_3_134()) return true; return false; } private boolean jj_3_123() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_InputParameter_1710_3_145()) return true; + if (jj_3R_InputParameter_1717_3_146()) return true; if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_DeleteEdgeStatement_1264_5_220() + private boolean jj_3R_DeleteEdgeStatement_1271_5_221() { - if (jj_3R_DeleteEdgeByRidStatement_1287_3_132()) return true; + if (jj_3R_DeleteEdgeByRidStatement_1294_3_133()) return true; return false; } - private boolean jj_3R_DeleteEdgeStatement_1263_3_71() + private boolean jj_3R_DeleteEdgeStatement_1270_3_72() { Token xsp; xsp = jj_scanpos; - if (jj_3R_DeleteEdgeStatement_1264_5_220()) { + if (jj_3R_DeleteEdgeStatement_1271_5_221()) { jj_scanpos = xsp; - if (jj_3R_DeleteEdgeStatement_1267_5_221()) { + if (jj_3R_DeleteEdgeStatement_1274_5_222()) { jj_scanpos = xsp; - if (jj_3R_DeleteEdgeStatement_1270_5_222()) { + if (jj_3R_DeleteEdgeStatement_1277_5_223()) { jj_scanpos = xsp; - if (jj_3R_DeleteEdgeStatement_1273_5_223()) { + if (jj_3R_DeleteEdgeStatement_1280_5_224()) { jj_scanpos = xsp; - if (jj_3R_DeleteEdgeStatement_1276_5_224()) return true; + if (jj_3R_DeleteEdgeStatement_1283_5_225()) return true; } } } @@ -19948,27 +19938,27 @@ private boolean jj_3R_DeleteEdgeStatement_1263_3_71() return false; } - private boolean jj_3R_NotInCondition_2795_5_197() + private boolean jj_3R_NotInCondition_2802_5_198() { - if (jj_3R_SelectWithoutTargetStatement_1121_3_312()) return true; + if (jj_3R_SelectWithoutTargetStatement_1128_3_313()) return true; return false; } - private boolean jj_3R_NotInCondition_2793_5_196() + private boolean jj_3R_NotInCondition_2800_5_197() { - if (jj_3R_SelectStatement_1142_3_130()) return true; + if (jj_3R_SelectStatement_1149_3_131()) return true; return false; } - private boolean jj_3R_DeleteStatement_1256_5_601() + private boolean jj_3R_DeleteStatement_1263_5_602() { if (jj_scan_token(UNSAFE)) return true; return false; } - private boolean jj_3R_DeleteStatement_1255_5_600() + private boolean jj_3R_DeleteStatement_1262_5_601() { - if (jj_3R_Limit_2975_3_428()) return true; + if (jj_3R_Limit_2981_3_429()) return true; return false; } @@ -19977,158 +19967,148 @@ private boolean jj_3_122() if (jj_scan_token(LPAREN)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_NotInCondition_2793_5_196()) { + if (jj_3R_NotInCondition_2800_5_197()) { jj_scanpos = xsp; - if (jj_3R_NotInCondition_2795_5_197()) return true; + if (jj_3R_NotInCondition_2802_5_198()) return true; } if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_DeleteStatement_1254_5_599() + private boolean jj_3R_DeleteStatement_1261_5_600() { if (jj_scan_token(WHERE)) return true; - if (jj_3R_WhereClause_2378_3_158()) return true; + if (jj_3R_WhereClause_2385_3_159()) return true; return false; } - private boolean jj_3R_DeleteStatement_1253_5_598() + private boolean jj_3R_DeleteStatement_1260_5_599() { if (jj_scan_token(RETURN)) return true; if (jj_scan_token(BEFORE)) return true; return false; } - private boolean jj_3R_NotInCondition_2788_3_183() + private boolean jj_3R_NotInCondition_2795_3_184() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; if (jj_scan_token(NOT)) return true; - if (jj_3R_InOperator_2753_3_381()) return true; + if (jj_3R_InOperator_2760_3_382()) return true; Token xsp; xsp = jj_scanpos; if (jj_3_122()) { jj_scanpos = xsp; if (jj_3_123()) { jj_scanpos = xsp; - if (jj_3R_NotInCondition_2803_5_383()) return true; + if (jj_3R_NotInCondition_2810_5_384()) return true; } } return false; } - private boolean jj_3R_DeleteStatement_1250_3_70() + private boolean jj_3R_DeleteStatement_1257_3_71() { if (jj_scan_token(DELETE)) return true; Token xsp; xsp = jj_scanpos; if (jj_scan_token(21)) jj_scanpos = xsp; if (jj_scan_token(FROM)) return true; - if (jj_3R_FromClause_2215_3_235()) return true; + if (jj_3R_FromClause_2222_3_236()) return true; xsp = jj_scanpos; - if (jj_3R_DeleteStatement_1253_5_598()) jj_scanpos = xsp; + if (jj_3R_DeleteStatement_1260_5_599()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_DeleteStatement_1254_5_599()) jj_scanpos = xsp; + if (jj_3R_DeleteStatement_1261_5_600()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_DeleteStatement_1255_5_600()) jj_scanpos = xsp; + if (jj_3R_DeleteStatement_1262_5_601()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_DeleteStatement_1256_5_601()) jj_scanpos = xsp; + if (jj_3R_DeleteStatement_1263_5_602()) jj_scanpos = xsp; return false; } private boolean jj_3_118() { - if (jj_3R_SelectStatement_1142_3_130()) return true; + if (jj_3R_SelectStatement_1149_3_131()) return true; return false; } - private boolean jj_3R_MatchStatement_1243_7_786() + private boolean jj_3R_MatchStatement_1250_7_789() { - if (jj_3R_Limit_2975_3_428()) return true; + if (jj_3R_Limit_2981_3_429()) return true; return false; } - private boolean jj_3R_MatchStatement_1242_7_785() + private boolean jj_3R_MatchStatement_1249_7_788() { - if (jj_3R_Skip_2987_3_552()) return true; + if (jj_3R_Skip_2993_3_553()) return true; return false; } - private boolean jj_3R_MatchStatement_1241_7_784() + private boolean jj_3R_MatchStatement_1248_7_787() { - if (jj_3R_Unwind_2964_3_447()) return true; + if (jj_3R_Unwind_2970_3_448()) return true; return false; } - private boolean jj_3R_InCondition_2778_5_382() + private boolean jj_3R_InCondition_2785_5_383() { - if (jj_3R_MathExpression_2107_3_159()) return true; + if (jj_3R_MathExpression_2114_3_160()) return true; return false; } - private boolean jj_3R_MatchStatement_1240_7_783() + private boolean jj_3R_MatchStatement_1247_7_786() { - if (jj_3R_OrderBy_2872_1_446()) return true; + if (jj_3R_OrderBy_2878_1_447()) return true; return false; } - private boolean jj_3R_MatchStatement_1239_7_782() + private boolean jj_3R_MatchStatement_1246_7_785() { - if (jj_3R_GroupBy_2953_3_445()) return true; + if (jj_3R_GroupBy_2959_3_446()) return true; return false; } private boolean jj_3_120() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_InputParameter_1710_3_145()) return true; + if (jj_3R_InputParameter_1717_3_146()) return true; if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_InCondition_2770_8_195() - { - if (jj_3R_SelectWithoutTargetStatement_1121_3_312()) return true; - return false; - } - - private boolean jj_3R_DeleteFunctionStatement_4309_3_86() + private boolean jj_3R_InCondition_2777_8_196() { - if (jj_scan_token(DELETE)) return true; - if (jj_scan_token(FUNCTION)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - if (jj_scan_token(DOT)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_SelectWithoutTargetStatement_1128_3_313()) return true; return false; } - private boolean jj_3R_InCondition_2768_8_194() + private boolean jj_3R_InCondition_2775_8_195() { - if (jj_3R_SelectStatement_1142_3_130()) return true; + if (jj_3R_SelectStatement_1149_3_131()) return true; return false; } - private boolean jj_3R_MatchStatement_1231_9_827() + private boolean jj_3R_MatchStatement_1238_9_831() { if (jj_scan_token(AS)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_MatchStatement_1230_9_826() + private boolean jj_3R_MatchStatement_1237_9_830() { - if (jj_3R_NestedProjection_1788_3_456()) return true; + if (jj_3R_NestedProjection_1795_3_457()) return true; return false; } - private boolean jj_3R_MatchStatement_1228_7_781() + private boolean jj_3R_MatchStatement_1235_7_784() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_MatchStatement_1230_9_826()) jj_scanpos = xsp; + if (jj_3R_MatchStatement_1237_9_830()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_MatchStatement_1231_9_827()) jj_scanpos = xsp; + if (jj_3R_MatchStatement_1238_9_831()) jj_scanpos = xsp; return false; } @@ -20137,9 +20117,9 @@ private boolean jj_3_119() if (jj_scan_token(LPAREN)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_InCondition_2768_8_194()) { + if (jj_3R_InCondition_2775_8_195()) { jj_scanpos = xsp; - if (jj_3R_InCondition_2770_8_195()) return true; + if (jj_3R_InCondition_2777_8_196()) return true; } if (jj_scan_token(RPAREN)) return true; return false; @@ -20147,1270 +20127,1254 @@ private boolean jj_3_119() private boolean jj_3_39() { - if (jj_3R_Expression_2037_3_131()) return true; - return false; - } - - private boolean jj_3R_DefineFunctionStatement_4296_7_250() - { - if (jj_scan_token(LANGUAGE)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_InCondition_2762_3_182() + private boolean jj_3R_InCondition_2769_3_183() { - if (jj_3R_Expression_2037_3_131()) return true; - if (jj_3R_InOperator_2753_3_381()) return true; + if (jj_3R_Expression_2044_3_132()) return true; + if (jj_3R_InOperator_2760_3_382()) return true; Token xsp; xsp = jj_scanpos; if (jj_3_119()) { jj_scanpos = xsp; if (jj_3_120()) { jj_scanpos = xsp; - if (jj_3R_InCondition_2778_5_382()) return true; + if (jj_3R_InCondition_2785_5_383()) return true; } } return false; } - private boolean jj_3R_DefineFunctionStatement_4290_9_434() + private boolean jj_3R_MatchStatement_1225_9_829() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_NestedProjection_1795_3_457()) return true; return false; } - private boolean jj_3R_MatchStatement_1218_9_825() + private boolean jj_3R_MatchStatement_1227_7_783() { - if (jj_3R_NestedProjection_1788_3_456()) return true; + if (jj_scan_token(AS)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_MatchStatement_1220_7_780() + private boolean jj_3_117() { - if (jj_scan_token(AS)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3_117() + private boolean jj_3R_DeleteFunctionStatement_4299_3_87() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_scan_token(DELETE)) return true; + if (jj_scan_token(FUNCTION)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + if (jj_scan_token(DOT)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_MatchStatement_1214_9_824() + private boolean jj_3R_MatchStatement_1221_9_828() { - if (jj_3R_NestedProjection_1788_3_456()) return true; + if (jj_3R_NestedProjection_1795_3_457()) return true; return false; } - private boolean jj_3R_MatchStatement_1216_7_779() + private boolean jj_3R_MatchStatement_1223_7_782() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_MatchStatement_1218_9_825()) jj_scanpos = xsp; + if (jj_3R_MatchStatement_1225_9_829()) jj_scanpos = xsp; return false; } - private boolean jj_3R_InOperator_2753_3_381() + private boolean jj_3R_InOperator_2760_3_382() { if (jj_scan_token(IN)) return true; return false; } - private boolean jj_3R_DefineFunctionStatement_4283_7_249() + private boolean jj_3_38() { - if (jj_scan_token(PARAMETERS)) return true; - if (jj_scan_token(LBRACKET)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(DISTINCT)) return true; + if (jj_3R_Expression_2044_3_132()) return true; Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_DefineFunctionStatement_4290_9_434()) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(RBRACKET)) return true; + xsp = jj_scanpos; + if (jj_3R_MatchStatement_1221_9_828()) jj_scanpos = xsp; return false; } - private boolean jj_3_38() + private boolean jj_3R_DefineFunctionStatement_4287_5_251() { - if (jj_scan_token(DISTINCT)) return true; - if (jj_3R_Expression_2037_3_131()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_MatchStatement_1214_9_824()) jj_scanpos = xsp; + if (jj_scan_token(LANGUAGE)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_MatchStatement_1204_10_823() + private boolean jj_3R_MatchStatement_1211_10_827() { if (jj_scan_token(NOT)) return true; - if (jj_3R_MatchExpression_3119_3_579()) return true; + if (jj_3R_MatchExpression_3117_3_580()) return true; return false; } - private boolean jj_3R_ContainsCondition_2744_5_385() + private boolean jj_3R_ContainsCondition_2751_5_386() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_MatchStatement_1202_10_822() + private boolean jj_3R_MatchStatement_1209_10_826() { - if (jj_3R_MatchExpression_3119_3_579()) return true; + if (jj_3R_MatchExpression_3117_3_580()) return true; + return false; + } + + private boolean jj_3R_DefineFunctionStatement_4281_7_435() + { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } private boolean jj_3_116() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_OrBlock_2385_3_153()) return true; + if (jj_3R_OrBlock_2392_3_154()) return true; if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_MatchStatement_1200_7_778() + private boolean jj_3R_MatchStatement_1207_7_781() { if (jj_scan_token(COMMA)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_MatchStatement_1202_10_822()) { + if (jj_3R_MatchStatement_1209_10_826()) { jj_scanpos = xsp; - if (jj_3R_MatchStatement_1204_10_823()) return true; + if (jj_3R_MatchStatement_1211_10_827()) return true; } return false; } - private boolean jj_3R_ContainsCondition_2739_3_186() + private boolean jj_3R_ContainsCondition_2746_3_187() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; if (jj_scan_token(CONTAINS)) return true; Token xsp; xsp = jj_scanpos; if (jj_3_116()) { jj_scanpos = xsp; - if (jj_3R_ContainsCondition_2744_5_385()) return true; + if (jj_3R_ContainsCondition_2751_5_386()) return true; } return false; } - private boolean jj_3R_DefineFunctionStatement_4273_3_85() + private boolean jj_3R_DefineFunctionStatement_4274_5_250() { - if (jj_scan_token(DEFINE)) return true; - if (jj_scan_token(FUNCTION)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - if (jj_scan_token(DOT)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - if (jj_3R_PString_712_3_248()) return true; + if (jj_scan_token(PARAMETERS)) return true; + if (jj_scan_token(LBRACKET)) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; - xsp = jj_scanpos; - if (jj_3R_DefineFunctionStatement_4283_7_249()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_DefineFunctionStatement_4296_7_250()) jj_scanpos = xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_DefineFunctionStatement_4281_7_435()) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(RBRACKET)) return true; return false; } - private boolean jj_3R_IsNotDefinedCondition_2732_3_180() + private boolean jj_3R_IsNotDefinedCondition_2739_3_181() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; if (jj_scan_token(IS)) return true; if (jj_scan_token(NOT)) return true; if (jj_scan_token(DEFINED)) return true; return false; } - private boolean jj_3R_ExportDatabaseStatement_4194_75_737() - { - if (jj_scan_token(FALSE)) return true; - return false; - } - - private boolean jj_3R_MatchStatement_1196_3_489() + private boolean jj_3R_MatchStatement_1203_3_490() { if (jj_scan_token(MATCH)) return true; - if (jj_3R_MatchExpression_3119_3_579()) return true; + if (jj_3R_MatchExpression_3117_3_580()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_MatchStatement_1200_7_778()) { jj_scanpos = xsp; break; } + if (jj_3R_MatchStatement_1207_7_781()) { jj_scanpos = xsp; break; } } if (jj_scan_token(RETURN)) return true; xsp = jj_scanpos; if (jj_3_38()) { jj_scanpos = xsp; - if (jj_3R_MatchStatement_1216_7_779()) return true; + if (jj_3R_MatchStatement_1223_7_782()) return true; } xsp = jj_scanpos; - if (jj_3R_MatchStatement_1220_7_780()) jj_scanpos = xsp; + if (jj_3R_MatchStatement_1227_7_783()) jj_scanpos = xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_MatchStatement_1228_7_781()) { jj_scanpos = xsp; break; } + if (jj_3R_MatchStatement_1235_7_784()) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3R_MatchStatement_1239_7_782()) jj_scanpos = xsp; + if (jj_3R_MatchStatement_1246_7_785()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_MatchStatement_1240_7_783()) jj_scanpos = xsp; + if (jj_3R_MatchStatement_1247_7_786()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_MatchStatement_1241_7_784()) jj_scanpos = xsp; + if (jj_3R_MatchStatement_1248_7_787()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_MatchStatement_1242_7_785()) jj_scanpos = xsp; + if (jj_3R_MatchStatement_1249_7_788()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_MatchStatement_1243_7_786()) jj_scanpos = xsp; + if (jj_3R_MatchStatement_1250_7_789()) jj_scanpos = xsp; return false; } - private boolean jj_3R_AlignDatabaseStatement_4261_3_283() + private boolean jj_3R_IsDefinedCondition_2732_3_182() { - if (jj_scan_token(ALIGN)) return true; - if (jj_scan_token(DATABASE)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + if (jj_scan_token(IS)) return true; + if (jj_scan_token(DEFINED)) return true; return false; } - private boolean jj_3R_IsDefinedCondition_2725_3_181() + private boolean jj_3R_DefineFunctionStatement_4265_3_86() { - if (jj_3R_Expression_2037_3_131()) return true; - if (jj_scan_token(IS)) return true; - if (jj_scan_token(DEFINED)) return true; + if (jj_scan_token(DEFINE)) return true; + if (jj_scan_token(FUNCTION)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + if (jj_scan_token(DOT)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + if (jj_3R_PString_719_3_249()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_DefineFunctionStatement_4274_5_250()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_DefineFunctionStatement_4287_5_251()) jj_scanpos = xsp; return false; } - private boolean jj_3R_SelectStatement_1155_33_554() + private boolean jj_3R_ExportDatabaseStatement_4192_75_740() { - if (jj_3R_Skip_2987_3_552()) return true; + if (jj_scan_token(FALSE)) return true; return false; } - private boolean jj_3R_TraverseStatement_1182_5_820() + private boolean jj_3R_SelectStatement_1162_33_555() { - if (jj_scan_token(BREADTH_FIRST)) return true; + if (jj_3R_Skip_2993_3_553()) return true; return false; } - private boolean jj_3R_CheckDatabaseStatement_4250_7_640() + private boolean jj_3R_TraverseStatement_1189_5_824() { - if (jj_scan_token(FIX)) return true; + if (jj_scan_token(BREADTH_FIRST)) return true; return false; } - private boolean jj_3R_IsNotNullCondition_2718_3_178() + private boolean jj_3R_IsNotNullCondition_2725_3_179() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; if (jj_scan_token(IS)) return true; if (jj_scan_token(NOT)) return true; if (jj_scan_token(NULL)) return true; return false; } - private boolean jj_3R_TraverseStatement_1180_5_819() + private boolean jj_3R_TraverseStatement_1187_5_823() { if (jj_scan_token(DEPTH_FIRST)) return true; return false; } - private boolean jj_3R_CheckDatabaseStatement_4246_9_740() - { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_BucketIdentifier_654_3_716()) return true; - return false; - } - - private boolean jj_3R_BackupDatabaseStatement_4227_27_637() - { - if (jj_3R_Url_4211_3_734()) return true; - return false; - } - - private boolean jj_3R_SelectStatement_1153_31_553() + private boolean jj_3R_SelectStatement_1160_31_554() { - if (jj_3R_Limit_2975_3_428()) return true; + if (jj_3R_Limit_2981_3_429()) return true; return false; } - private boolean jj_3R_TraverseStatement_1178_5_777() + private boolean jj_3R_TraverseStatement_1185_5_780() { if (jj_scan_token(STRATEGY)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_TraverseStatement_1180_5_819()) { + if (jj_3R_TraverseStatement_1187_5_823()) { jj_scanpos = xsp; - if (jj_3R_TraverseStatement_1182_5_820()) return true; + if (jj_3R_TraverseStatement_1189_5_824()) return true; } return false; } - private boolean jj_3R_TraverseStatement_1177_5_776() + private boolean jj_3R_TraverseStatement_1184_5_779() { - if (jj_3R_Limit_2975_3_428()) return true; + if (jj_3R_Limit_2981_3_429()) return true; return false; } - private boolean jj_3R_TraverseStatement_1176_5_775() + private boolean jj_3R_TraverseStatement_1183_5_778() { if (jj_scan_token(WHILE)) return true; - if (jj_3R_WhereClause_2378_3_158()) return true; - return false; - } - - private boolean jj_3R_CheckDatabaseStatement_4242_9_739() - { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_WhereClause_2385_3_159()) return true; return false; } - private boolean jj_3R_CheckDatabaseStatement_4244_7_639() + private boolean jj_3R_AlignDatabaseStatement_4255_3_284() { - if (jj_scan_token(BUCKET)) return true; - if (jj_3R_BucketIdentifier_654_3_716()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_CheckDatabaseStatement_4246_9_740()) { jj_scanpos = xsp; break; } - } + if (jj_scan_token(ALIGN)) return true; + if (jj_scan_token(DATABASE)) return true; return false; } - private boolean jj_3R_TraverseStatement_1175_5_774() + private boolean jj_3R_TraverseStatement_1182_5_777() { if (jj_scan_token(MAXDEPTH)) return true; - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_3R_PInteger_914_3_67()) return true; return false; } - private boolean jj_3R_IsNullCondition_2711_3_179() + private boolean jj_3R_IsNullCondition_2718_3_180() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; if (jj_scan_token(IS)) return true; if (jj_scan_token(NULL)) return true; return false; } - private boolean jj_3R_TraverseStatement_1171_7_818() + private boolean jj_3R_TraverseStatement_1178_7_822() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_TraverseProjectionItem_3065_3_696()) return true; + if (jj_3R_TraverseProjectionItem_3063_3_698()) return true; return false; } - private boolean jj_3R_CheckDatabaseStatement_4240_7_638() + private boolean jj_3R_TraverseStatement_1177_5_579() { - if (jj_scan_token(TYPE)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_TraverseProjectionItem_3063_3_698()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_CheckDatabaseStatement_4242_9_739()) { jj_scanpos = xsp; break; } + if (jj_3R_TraverseStatement_1178_7_822()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_TraverseStatement_1170_5_578() + private boolean jj_3R_CheckDatabaseStatement_4245_5_642() { - if (jj_3R_TraverseProjectionItem_3065_3_696()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_TraverseStatement_1171_7_818()) { jj_scanpos = xsp; break; } - } + if (jj_scan_token(FIX)) return true; + return false; + } + + private boolean jj_3R_BackupDatabaseStatement_4224_25_639() + { + if (jj_3R_Url_4209_3_737()) return true; + return false; + } + + private boolean jj_3R_CheckDatabaseStatement_4241_7_743() + { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_BucketIdentifier_661_3_718()) return true; return false; } - private boolean jj_3R_TraverseStatement_1168_3_488() + private boolean jj_3R_TraverseStatement_1175_3_489() { if (jj_scan_token(TRAVERSE)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_TraverseStatement_1170_5_578()) jj_scanpos = xsp; + if (jj_3R_TraverseStatement_1177_5_579()) jj_scanpos = xsp; if (jj_scan_token(FROM)) return true; - if (jj_3R_FromClause_2215_3_235()) return true; + if (jj_3R_FromClause_2222_3_236()) return true; xsp = jj_scanpos; - if (jj_3R_TraverseStatement_1175_5_774()) jj_scanpos = xsp; + if (jj_3R_TraverseStatement_1182_5_777()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_TraverseStatement_1176_5_775()) jj_scanpos = xsp; + if (jj_3R_TraverseStatement_1183_5_778()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_TraverseStatement_1177_5_776()) jj_scanpos = xsp; + if (jj_3R_TraverseStatement_1184_5_779()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_TraverseStatement_1178_5_777()) jj_scanpos = xsp; + if (jj_3R_TraverseStatement_1185_5_780()) jj_scanpos = xsp; return false; } - private boolean jj_3R_CheckDatabaseStatement_4238_3_282() + private boolean jj_3R_BetweenCondition_2709_3_186() { - if (jj_scan_token(CHECK)) return true; - if (jj_scan_token(DATABASE)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + if (jj_scan_token(BETWEEN)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + if (jj_scan_token(AND)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + return false; + } + + private boolean jj_3R_CheckDatabaseStatement_4237_7_742() + { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + return false; + } + + private boolean jj_3R_CheckDatabaseStatement_4239_5_641() + { + if (jj_scan_token(BUCKET)) return true; + if (jj_3R_BucketIdentifier_661_3_718()) return true; Token xsp; - xsp = jj_scanpos; - if (jj_3R_CheckDatabaseStatement_4240_7_638()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_CheckDatabaseStatement_4244_7_639()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_CheckDatabaseStatement_4250_7_640()) jj_scanpos = xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_CheckDatabaseStatement_4241_7_743()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_BetweenCondition_2702_3_185() + private boolean jj_3R_SelectStatement_1164_7_292() { - if (jj_3R_Expression_2037_3_131()) return true; - if (jj_scan_token(BETWEEN)) return true; - if (jj_3R_Expression_2037_3_131()) return true; - if (jj_scan_token(AND)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Timeout_3017_3_430()) return true; return false; } - private boolean jj_3R_SelectStatement_1157_7_291() + private boolean jj_3R_CheckDatabaseStatement_4235_5_640() { - if (jj_3R_Timeout_3011_3_429()) return true; + if (jj_scan_token(TYPE)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_CheckDatabaseStatement_4237_7_742()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_SelectWithoutTargetStatement_1129_33_829() + private boolean jj_3R_SelectWithoutTargetStatement_1136_33_833() { - if (jj_3R_Skip_2987_3_552()) return true; + if (jj_3R_Skip_2993_3_553()) return true; return false; } - private boolean jj_3R_SelectStatement_1155_7_449() + private boolean jj_3R_SelectStatement_1162_7_450() { - if (jj_3R_Limit_2975_3_428()) return true; + if (jj_3R_Limit_2981_3_429()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_SelectStatement_1155_33_554()) jj_scanpos = xsp; + if (jj_3R_SelectStatement_1162_33_555()) jj_scanpos = xsp; return false; } - private boolean jj_3R_IndexMatchCondition_2690_5_595() + private boolean jj_3R_IndexMatchCondition_2697_5_596() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_SelectStatement_1153_7_448() + private boolean jj_3R_SelectStatement_1160_7_449() { - if (jj_3R_Skip_2987_3_552()) return true; + if (jj_3R_Skip_2993_3_553()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_SelectStatement_1153_31_553()) jj_scanpos = xsp; + if (jj_3R_SelectStatement_1160_31_554()) jj_scanpos = xsp; return false; } - private boolean jj_3R_SelectStatement_1153_7_290() + private boolean jj_3R_SelectStatement_1160_7_291() { Token xsp; xsp = jj_scanpos; - if (jj_3R_SelectStatement_1153_7_448()) { + if (jj_3R_SelectStatement_1160_7_449()) { jj_scanpos = xsp; - if (jj_3R_SelectStatement_1155_7_449()) return true; + if (jj_3R_SelectStatement_1162_7_450()) return true; } return false; } - private boolean jj_3R_BackupDatabaseStatement_4226_3_281() + private boolean jj_3R_CheckDatabaseStatement_4234_3_283() { - if (jj_scan_token(BACKUP)) return true; + if (jj_scan_token(CHECK)) return true; if (jj_scan_token(DATABASE)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_BackupDatabaseStatement_4227_27_637()) jj_scanpos = xsp; + if (jj_3R_CheckDatabaseStatement_4235_5_640()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_CheckDatabaseStatement_4239_5_641()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_CheckDatabaseStatement_4245_5_642()) jj_scanpos = xsp; return false; } - private boolean jj_3R_SelectWithoutTargetStatement_1127_31_828() + private boolean jj_3R_SelectWithoutTargetStatement_1134_31_832() { - if (jj_3R_Limit_2975_3_428()) return true; + if (jj_3R_Limit_2981_3_429()) return true; return false; } - private boolean jj_3R_IndexMatchCondition_2688_5_508() + private boolean jj_3R_IndexMatchCondition_2695_5_509() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_IndexMatchCondition_2690_5_595()) { jj_scanpos = xsp; break; } + if (jj_3R_IndexMatchCondition_2697_5_596()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_SelectStatement_1151_7_289() + private boolean jj_3R_SelectStatement_1158_7_290() { - if (jj_3R_Unwind_2964_3_447()) return true; + if (jj_3R_Unwind_2970_3_448()) return true; return false; } - private boolean jj_3R_SelectStatement_1150_7_288() + private boolean jj_3R_SelectStatement_1157_7_289() { - if (jj_3R_OrderBy_2872_1_446()) return true; + if (jj_3R_OrderBy_2878_1_447()) return true; return false; } - private boolean jj_3R_SelectStatement_1149_7_287() + private boolean jj_3R_SelectStatement_1156_7_288() { - if (jj_3R_GroupBy_2953_3_445()) return true; + if (jj_3R_GroupBy_2959_3_446()) return true; return false; } - private boolean jj_3R_SelectStatement_1148_7_286() + private boolean jj_3R_SelectStatement_1155_7_287() { if (jj_scan_token(WHERE)) return true; - if (jj_3R_WhereClause_2378_3_158()) return true; + if (jj_3R_WhereClause_2385_3_159()) return true; return false; } - private boolean jj_3R_SelectStatement_1147_7_285() + private boolean jj_3R_SelectStatement_1154_7_286() { - if (jj_3R_LetClause_2224_3_444()) return true; + if (jj_3R_LetClause_2231_3_445()) return true; return false; } - private boolean jj_3R_IndexMatchCondition_2682_5_594() + private boolean jj_3R_IndexMatchCondition_2689_5_595() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_Url_4218_3_810() + private boolean jj_3R_SelectStatement_1151_7_285() { - if (jj_scan_token(CLASSPATH_URL)) return true; - return false; - } - - private boolean jj_3R_SelectStatement_1144_7_284() - { - if (jj_3R_Projection_1758_3_419()) return true; + if (jj_3R_Projection_1765_3_420()) return true; return false; } - private boolean jj_3R_IndexMatchCondition_2680_5_507() + private boolean jj_3R_IndexMatchCondition_2687_5_508() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_IndexMatchCondition_2682_5_594()) { jj_scanpos = xsp; break; } + if (jj_3R_IndexMatchCondition_2689_5_595()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_Url_4216_3_809() - { - if (jj_scan_token(FILE_URL)) return true; - return false; - } - - private boolean jj_3R_Url_4214_3_808() + private boolean jj_3R_BackupDatabaseStatement_4224_3_282() { - if (jj_scan_token(HTTPS_URL)) return true; + if (jj_scan_token(BACKUP)) return true; + if (jj_scan_token(DATABASE)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_BackupDatabaseStatement_4224_25_639()) jj_scanpos = xsp; return false; } - private boolean jj_3R_IndexMatchCondition_2677_5_395() + private boolean jj_3R_IndexMatchCondition_2684_5_396() { if (jj_scan_token(BETWEEN)) return true; if (jj_scan_token(LBRACKET)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_IndexMatchCondition_2680_5_507()) jj_scanpos = xsp; + if (jj_3R_IndexMatchCondition_2687_5_508()) jj_scanpos = xsp; if (jj_scan_token(RBRACKET)) return true; if (jj_scan_token(AND)) return true; if (jj_scan_token(LBRACKET)) return true; xsp = jj_scanpos; - if (jj_3R_IndexMatchCondition_2688_5_508()) jj_scanpos = xsp; + if (jj_3R_IndexMatchCondition_2695_5_509()) jj_scanpos = xsp; if (jj_scan_token(RBRACKET)) return true; return false; } - private boolean jj_3R_Url_4212_3_807() - { - if (jj_scan_token(HTTP_URL)) return true; - return false; - } - - private boolean jj_3R_SelectStatement_1142_3_130() + private boolean jj_3R_SelectStatement_1149_3_131() { if (jj_scan_token(SELECT)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_SelectStatement_1144_7_284()) jj_scanpos = xsp; + if (jj_3R_SelectStatement_1151_7_285()) jj_scanpos = xsp; if (jj_scan_token(FROM)) return true; - if (jj_3R_FromClause_2215_3_235()) return true; + if (jj_3R_FromClause_2222_3_236()) return true; xsp = jj_scanpos; - if (jj_3R_SelectStatement_1147_7_285()) jj_scanpos = xsp; + if (jj_3R_SelectStatement_1154_7_286()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_SelectStatement_1148_7_286()) jj_scanpos = xsp; + if (jj_3R_SelectStatement_1155_7_287()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_SelectStatement_1149_7_287()) jj_scanpos = xsp; + if (jj_3R_SelectStatement_1156_7_288()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_SelectStatement_1150_7_288()) jj_scanpos = xsp; + if (jj_3R_SelectStatement_1157_7_289()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_SelectStatement_1151_7_289()) jj_scanpos = xsp; + if (jj_3R_SelectStatement_1158_7_290()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_SelectStatement_1153_7_290()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_SelectStatement_1157_7_291()) jj_scanpos = xsp; - return false; - } - - private boolean jj_3R_Url_4211_3_734() - { - Token xsp; + if (jj_3R_SelectStatement_1160_7_291()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_Url_4212_3_807()) { - jj_scanpos = xsp; - if (jj_3R_Url_4214_3_808()) { - jj_scanpos = xsp; - if (jj_3R_Url_4216_3_809()) { - jj_scanpos = xsp; - if (jj_3R_Url_4218_3_810()) return true; - } - } - } + if (jj_3R_SelectStatement_1164_7_292()) jj_scanpos = xsp; return false; } - private boolean jj_3R_IndexMatchCondition_2670_9_593() + private boolean jj_3R_IndexMatchCondition_2677_9_594() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_ExportDatabaseStatement_4194_19_736() + private boolean jj_3R_Url_4216_3_814() { - if (jj_scan_token(TRUE)) return true; + if (jj_scan_token(CLASSPATH_URL)) return true; return false; } - private boolean jj_3R_IndexMatchCondition_2669_7_506() + private boolean jj_3R_IndexMatchCondition_2676_7_507() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_IndexMatchCondition_2670_9_593()) { jj_scanpos = xsp; break; } + if (jj_3R_IndexMatchCondition_2677_9_594()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_SelectWithoutTargetStatement_1131_7_700() + private boolean jj_3R_Url_4214_3_813() { - if (jj_3R_Timeout_3011_3_429()) return true; + if (jj_scan_token(FILE_URL)) return true; return false; } - private boolean jj_3R_SelectWithoutTargetStatement_1129_7_790() + private boolean jj_3R_Url_4212_3_812() { - if (jj_3R_Limit_2975_3_428()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_SelectWithoutTargetStatement_1129_33_829()) jj_scanpos = xsp; + if (jj_scan_token(HTTPS_URL)) return true; return false; } - private boolean jj_3R_ExportDatabaseStatement_4199_7_738() + private boolean jj_3R_SelectWithoutTargetStatement_1138_7_702() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_Expression_2037_3_131()) return true; - if (jj_scan_token(EQ)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Timeout_3017_3_430()) return true; return false; } - private boolean jj_3R_IndexMatchCondition_2666_5_394() + private boolean jj_3R_Url_4210_3_811() { - if (jj_3R_CompareOperator_2493_1_384()) return true; - if (jj_scan_token(LBRACKET)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_IndexMatchCondition_2669_7_506()) jj_scanpos = xsp; - if (jj_scan_token(RBRACKET)) return true; + if (jj_scan_token(HTTP_URL)) return true; return false; } - private boolean jj_3R_SelectWithoutTargetStatement_1127_7_789() + private boolean jj_3R_SelectWithoutTargetStatement_1136_7_793() { - if (jj_3R_Skip_2987_3_552()) return true; + if (jj_3R_Limit_2981_3_429()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_SelectWithoutTargetStatement_1127_31_828()) jj_scanpos = xsp; + if (jj_3R_SelectWithoutTargetStatement_1136_33_833()) jj_scanpos = xsp; return false; } - private boolean jj_3R_SelectWithoutTargetStatement_1127_7_699() + private boolean jj_3R_IndexMatchCondition_2673_5_395() { + if (jj_3R_CompareOperator_2500_1_385()) return true; + if (jj_scan_token(LBRACKET)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_SelectWithoutTargetStatement_1127_7_789()) { - jj_scanpos = xsp; - if (jj_3R_SelectWithoutTargetStatement_1129_7_790()) return true; - } + if (jj_3R_IndexMatchCondition_2676_7_507()) jj_scanpos = xsp; + if (jj_scan_token(RBRACKET)) return true; return false; } - private boolean jj_3R_SelectWithoutTargetStatement_1125_7_698() + private boolean jj_3R_Url_4209_3_737() { - if (jj_3R_Unwind_2964_3_447()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_Url_4210_3_811()) { + jj_scanpos = xsp; + if (jj_3R_Url_4212_3_812()) { + jj_scanpos = xsp; + if (jj_3R_Url_4214_3_813()) { + jj_scanpos = xsp; + if (jj_3R_Url_4216_3_814()) return true; + } + } + } return false; } - private boolean jj_3R_IndexMatchCondition_2664_3_192() + private boolean jj_3R_SelectWithoutTargetStatement_1134_7_792() { - if (jj_scan_token(KEY)) return true; + if (jj_3R_Skip_2993_3_553()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_IndexMatchCondition_2666_5_394()) { - jj_scanpos = xsp; - if (jj_3R_IndexMatchCondition_2677_5_395()) return true; - } + if (jj_3R_SelectWithoutTargetStatement_1134_31_832()) jj_scanpos = xsp; return false; } - private boolean jj_3R_SelectWithoutTargetStatement_1124_7_697() + private boolean jj_3R_ExportDatabaseStatement_4192_19_739() { - if (jj_3R_LetClause_2224_3_444()) return true; + if (jj_scan_token(TRUE)) return true; return false; } - private boolean jj_3R_ExportDatabaseStatement_4196_5_636() + private boolean jj_3R_SelectWithoutTargetStatement_1134_7_701() { - if (jj_scan_token(WITH)) return true; - if (jj_3R_Expression_2037_3_131()) return true; - if (jj_scan_token(EQ)) return true; - if (jj_3R_Expression_2037_3_131()) return true; Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_ExportDatabaseStatement_4199_7_738()) { jj_scanpos = xsp; break; } + xsp = jj_scanpos; + if (jj_3R_SelectWithoutTargetStatement_1134_7_792()) { + jj_scanpos = xsp; + if (jj_3R_SelectWithoutTargetStatement_1136_7_793()) return true; } return false; } - private boolean jj_3R_ExportDatabaseStatement_4194_5_635() + private boolean jj_3R_SelectWithoutTargetStatement_1132_7_700() { - if (jj_scan_token(OVERWRITE)) return true; + if (jj_3R_Unwind_2970_3_448()) return true; + return false; + } + + private boolean jj_3R_IndexMatchCondition_2671_3_193() + { + if (jj_scan_token(KEY)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_ExportDatabaseStatement_4194_19_736()) { + if (jj_3R_IndexMatchCondition_2673_5_395()) { jj_scanpos = xsp; - if (jj_3R_ExportDatabaseStatement_4194_75_737()) return true; + if (jj_3R_IndexMatchCondition_2684_5_396()) return true; } return false; } - private boolean jj_3R_ExportDatabaseStatement_4193_5_634() + private boolean jj_3R_SelectWithoutTargetStatement_1131_7_699() { - if (jj_scan_token(FORMAT)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_LetClause_2231_3_445()) return true; return false; } - private boolean jj_3R_ExportDatabaseStatement_4192_5_633() + private boolean jj_3R_ExportDatabaseStatement_4197_7_741() { - if (jj_3R_Url_4211_3_734()) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + if (jj_scan_token(EQ)) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_SelectWithoutTargetStatement_1121_3_312() + private boolean jj_3R_SelectWithoutTargetStatement_1128_3_313() { if (jj_scan_token(SELECT)) return true; - if (jj_3R_Projection_1758_3_419()) return true; + if (jj_3R_Projection_1765_3_420()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_SelectWithoutTargetStatement_1124_7_697()) jj_scanpos = xsp; + if (jj_3R_SelectWithoutTargetStatement_1131_7_699()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_SelectWithoutTargetStatement_1125_7_698()) jj_scanpos = xsp; + if (jj_3R_SelectWithoutTargetStatement_1132_7_700()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_SelectWithoutTargetStatement_1127_7_699()) jj_scanpos = xsp; + if (jj_3R_SelectWithoutTargetStatement_1134_7_701()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_SelectWithoutTargetStatement_1131_7_700()) jj_scanpos = xsp; + if (jj_3R_SelectWithoutTargetStatement_1138_7_702()) jj_scanpos = xsp; return false; } - private boolean jj_3R_ExportDatabaseStatement_4191_3_280() + private boolean jj_3_37() { - if (jj_scan_token(EXPORT)) return true; - if (jj_scan_token(DATABASE)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_ExportDatabaseStatement_4192_5_633()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_ExportDatabaseStatement_4193_5_634()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_ExportDatabaseStatement_4194_5_635()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_ExportDatabaseStatement_4196_5_636()) jj_scanpos = xsp; + if (jj_3R_SelectStatement_1149_3_131()) return true; return false; } - private boolean jj_3_37() + private boolean jj_3R_ExportDatabaseStatement_4194_5_638() { - if (jj_3R_SelectStatement_1142_3_130()) return true; + if (jj_scan_token(WITH)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + if (jj_scan_token(EQ)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_ExportDatabaseStatement_4197_7_741()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_InstanceofCondition_2652_4_398() + private boolean jj_3R_InstanceofCondition_2659_4_399() { if (jj_scan_token(CHARACTER_LITERAL)) return true; return false; } - private boolean jj_3R_QueryStatement_1114_5_359() + private boolean jj_3R_ExportDatabaseStatement_4192_5_637() + { + if (jj_scan_token(OVERWRITE)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_ExportDatabaseStatement_4192_19_739()) { + jj_scanpos = xsp; + if (jj_3R_ExportDatabaseStatement_4192_75_740()) return true; + } + return false; + } + + private boolean jj_3R_ExportDatabaseStatement_4191_5_636() { - if (jj_3R_MatchStatement_1196_3_489()) return true; + if (jj_scan_token(FORMAT)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_InstanceofCondition_2650_4_397() + private boolean jj_3R_QueryStatement_1121_5_360() { - if (jj_3R_PString_712_3_248()) return true; + if (jj_3R_MatchStatement_1203_3_490()) return true; return false; } - private boolean jj_3R_ImportDatabaseStatement_4181_7_735() + private boolean jj_3R_InstanceofCondition_2657_4_398() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_Expression_2037_3_131()) return true; - if (jj_scan_token(EQ)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_PString_719_3_249()) return true; + return false; + } + + private boolean jj_3R_ExportDatabaseStatement_4190_5_635() + { + if (jj_3R_Url_4209_3_737()) return true; return false; } private boolean jj_3_115() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_QueryStatement_1112_5_358() + private boolean jj_3R_QueryStatement_1119_5_359() { - if (jj_3R_TraverseStatement_1168_3_488()) return true; + if (jj_3R_TraverseStatement_1175_3_489()) return true; return false; } - private boolean jj_3R_InstanceofCondition_2648_4_396() + private boolean jj_3R_InstanceofCondition_2655_4_397() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_QueryStatement_1110_5_357() + private boolean jj_3R_QueryStatement_1117_5_358() { - if (jj_3R_SelectWithoutTargetStatement_1121_3_312()) return true; + if (jj_3R_SelectWithoutTargetStatement_1128_3_313()) return true; return false; } - private boolean jj_3R_InstanceofCondition_2647_3_193() + private boolean jj_3R_InstanceofCondition_2654_3_194() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; if (jj_scan_token(INSTANCEOF)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_InstanceofCondition_2648_4_396()) { + if (jj_3R_InstanceofCondition_2655_4_397()) { jj_scanpos = xsp; - if (jj_3R_InstanceofCondition_2650_4_397()) { + if (jj_3R_InstanceofCondition_2657_4_398()) { jj_scanpos = xsp; - if (jj_3R_InstanceofCondition_2652_4_398()) return true; + if (jj_3R_InstanceofCondition_2659_4_399()) return true; } } return false; } - private boolean jj_3R_ImportDatabaseStatement_4178_5_632() + private boolean jj_3R_ExportDatabaseStatement_4189_3_281() { - if (jj_scan_token(WITH)) return true; - if (jj_3R_Expression_2037_3_131()) return true; - if (jj_scan_token(EQ)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_scan_token(EXPORT)) return true; + if (jj_scan_token(DATABASE)) return true; Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_ImportDatabaseStatement_4181_7_735()) { jj_scanpos = xsp; break; } - } + xsp = jj_scanpos; + if (jj_3R_ExportDatabaseStatement_4190_5_635()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_ExportDatabaseStatement_4191_5_636()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_ExportDatabaseStatement_4192_5_637()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_ExportDatabaseStatement_4194_5_638()) jj_scanpos = xsp; return false; } - private boolean jj_3R_QueryStatement_1107_5_356() + private boolean jj_3R_QueryStatement_1114_5_357() { - if (jj_3R_SelectStatement_1142_3_130()) return true; + if (jj_3R_SelectStatement_1149_3_131()) return true; return false; } - private boolean jj_3R_ImportDatabaseStatement_4176_5_631() + private boolean jj_3R_ImportDatabaseStatement_4179_7_738() { - if (jj_3R_Url_4211_3_734()) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + if (jj_scan_token(EQ)) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_QueryStatement_1106_3_174() + private boolean jj_3R_QueryStatement_1113_3_175() { Token xsp; xsp = jj_scanpos; - if (jj_3R_QueryStatement_1107_5_356()) { + if (jj_3R_QueryStatement_1114_5_357()) { jj_scanpos = xsp; - if (jj_3R_QueryStatement_1110_5_357()) { + if (jj_3R_QueryStatement_1117_5_358()) { jj_scanpos = xsp; - if (jj_3R_QueryStatement_1112_5_358()) { + if (jj_3R_QueryStatement_1119_5_359()) { jj_scanpos = xsp; - if (jj_3R_QueryStatement_1114_5_359()) return true; + if (jj_3R_QueryStatement_1121_5_360()) return true; } } } return false; } - private boolean jj_3R_ImportDatabaseStatement_4175_3_279() + private boolean jj_3R_ContainsValueCondition_2644_5_388() { - if (jj_scan_token(IMPORT)) return true; - if (jj_scan_token(DATABASE)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_ImportDatabaseStatement_4176_5_631()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_ImportDatabaseStatement_4178_5_632()) jj_scanpos = xsp; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_ContainsValueCondition_2637_5_387() + private boolean jj_3_36() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_ProfileStatement_4001_3_130()) return true; return false; } - private boolean jj_3_36() + private boolean jj_3R_ImportDatabaseStatement_4176_5_634() { - if (jj_3R_ProfileStatement_4003_3_129()) return true; + if (jj_scan_token(WITH)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + if (jj_scan_token(EQ)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_ImportDatabaseStatement_4179_7_738()) { jj_scanpos = xsp; break; } + } return false; } private boolean jj_3_114() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_OrBlock_2385_3_153()) return true; + if (jj_3R_OrBlock_2392_3_154()) return true; if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3_149() + private boolean jj_3R_ImportDatabaseStatement_4174_5_633() { - if (jj_3R_StatementSemicolon_948_3_67()) return true; + if (jj_3R_Url_4209_3_737()) return true; return false; } - private boolean jj_3R_StatementInternal_1094_5_219() + private boolean jj_3R_StatementInternal_1101_5_220() { - if (jj_3R_LetStatement_4011_3_417()) return true; + if (jj_3R_LetStatement_4009_3_418()) return true; return false; } - private boolean jj_3R_ContainsValueCondition_2631_3_187() + private boolean jj_3R_ContainsValueCondition_2638_3_188() { - if (jj_3R_Expression_2037_3_131()) return true; - if (jj_3R_ContainsValueOperator_2581_3_386()) return true; + if (jj_3R_Expression_2044_3_132()) return true; + if (jj_3R_ContainsValueOperator_2588_3_387()) return true; Token xsp; xsp = jj_scanpos; if (jj_3_114()) { jj_scanpos = xsp; - if (jj_3R_ContainsValueCondition_2637_5_387()) return true; + if (jj_3R_ContainsValueCondition_2644_5_388()) return true; } return false; } - private boolean jj_3R_WhileBlock_4162_5_852() + private boolean jj_3R_ImportDatabaseStatement_4173_3_280() { - if (jj_3R_WhileBlock_4150_3_805()) return true; + if (jj_scan_token(IMPORT)) return true; + if (jj_scan_token(DATABASE)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_ImportDatabaseStatement_4174_5_633()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_ImportDatabaseStatement_4176_5_634()) jj_scanpos = xsp; return false; } - private boolean jj_3R_StatementInternal_1091_5_218() + private boolean jj_3R_StatementInternal_1098_5_219() { - if (jj_3R_ProfileStatement_4003_3_129()) return true; + if (jj_3R_ProfileStatement_4001_3_130()) return true; return false; } - private boolean jj_3R_WhileBlock_4160_5_851() + private boolean jj_3R_StatementInternal_1092_9_129() { - if (jj_3R_ForEachBlock_4123_3_806()) return true; + if (jj_3R_AlignDatabaseStatement_4255_3_284()) return true; return false; } - private boolean jj_3R_StatementInternal_1085_9_128() + private boolean jj_3R_StatementInternal_1096_5_218() { - if (jj_3R_AlignDatabaseStatement_4261_3_283()) return true; + if (jj_3R_ExplainStatement_3993_3_417()) return true; return false; } - private boolean jj_3R_StatementInternal_1089_5_217() + private boolean jj_3R_StatementInternal_1090_9_128() { - if (jj_3R_ExplainStatement_3995_3_416()) return true; + if (jj_3R_CheckDatabaseStatement_4234_3_283()) return true; return false; } - private boolean jj_3R_WhileBlock_4158_5_850() + private boolean jj_3_149() { - if (jj_3R_IfStatement_4081_3_278()) return true; + if (jj_3R_StatementSemicolon_955_3_68()) return true; return false; } - private boolean jj_3R_StatementInternal_1083_9_127() + private boolean jj_3R_StatementInternal_1088_9_127() { - if (jj_3R_CheckDatabaseStatement_4238_3_282()) return true; + if (jj_3R_BackupDatabaseStatement_4224_3_282()) return true; return false; } - private boolean jj_3R_WhileBlock_4155_5_849() + private boolean jj_3R_BinaryCondition_2629_3_185() { - if (jj_3R_StatementSemicolon_948_3_67()) return true; + if (jj_3R_Expression_2044_3_132()) return true; + if (jj_3R_CompareOperator_2500_1_385()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_WhileBlock_4155_5_840() + private boolean jj_3R_WhileBlock_4160_5_854() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_WhileBlock_4155_5_849()) { - jj_scanpos = xsp; - if (jj_3R_WhileBlock_4158_5_850()) { - jj_scanpos = xsp; - if (jj_3R_WhileBlock_4160_5_851()) { - jj_scanpos = xsp; - if (jj_3R_WhileBlock_4162_5_852()) { - jj_scanpos = xsp; - if (jj_scan_token(171)) return true; - } - } - } - } + if (jj_3R_WhileBlock_4148_3_809()) return true; return false; } - private boolean jj_3R_StatementInternal_1081_9_126() + private boolean jj_3R_StatementInternal_1086_9_126() { - if (jj_3R_BackupDatabaseStatement_4226_3_281()) return true; + if (jj_3R_ExportDatabaseStatement_4189_3_281()) return true; return false; } - private boolean jj_3R_BinaryCondition_2622_3_184() + private boolean jj_3R_WhileBlock_4158_5_853() { - if (jj_3R_Expression_2037_3_131()) return true; - if (jj_3R_CompareOperator_2493_1_384()) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_ForEachBlock_4121_3_810()) return true; return false; } - private boolean jj_3R_StatementInternal_1079_9_125() + private boolean jj_3R_StatementInternal_1084_9_125() { - if (jj_3R_ExportDatabaseStatement_4191_3_280()) return true; + if (jj_3R_ImportDatabaseStatement_4173_3_280()) return true; return false; } - private boolean jj_3R_StatementInternal_1077_9_124() + private boolean jj_3R_WhileBlock_4156_5_852() { - if (jj_3R_ImportDatabaseStatement_4175_3_279()) return true; + if (jj_3R_IfStatement_4079_3_279()) return true; return false; } - private boolean jj_3R_RightBinaryCondition_2611_8_462() + private boolean jj_3R_RightBinaryCondition_2618_8_463() { if (jj_scan_token(NOT)) return true; return false; } - private boolean jj_3R_StatementInternal_1075_9_123() + private boolean jj_3R_StatementInternal_1082_9_124() { - if (jj_3R_IfStatement_4081_3_278()) return true; + if (jj_3R_IfStatement_4079_3_279()) return true; return false; } - private boolean jj_3R_WhileBlock_4150_3_805() + private boolean jj_3R_StatementInternal_1080_9_123() { - if (jj_scan_token(WHILE)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_OrBlock_2385_3_153()) return true; - if (jj_scan_token(RPAREN)) return true; - if (jj_scan_token(LBRACE)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_WhileBlock_4155_5_840()) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(RBRACE)) return true; + if (jj_3R_SleepStatement_4101_3_278()) return true; return false; } - private boolean jj_3R_StatementInternal_1073_9_122() + private boolean jj_3R_WhileBlock_4153_5_851() { - if (jj_3R_SleepStatement_4103_3_277()) return true; + if (jj_3R_StatementSemicolon_955_3_68()) return true; return false; } - private boolean jj_3R_RightBinaryCondition_2610_6_332() + private boolean jj_3R_WhileBlock_4153_5_842() { Token xsp; xsp = jj_scanpos; - if (jj_3R_RightBinaryCondition_2611_8_462()) jj_scanpos = xsp; - if (jj_3R_InOperator_2753_3_381()) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_WhileBlock_4153_5_851()) { + jj_scanpos = xsp; + if (jj_3R_WhileBlock_4156_5_852()) { + jj_scanpos = xsp; + if (jj_3R_WhileBlock_4158_5_853()) { + jj_scanpos = xsp; + if (jj_3R_WhileBlock_4160_5_854()) { + jj_scanpos = xsp; + if (jj_scan_token(172)) return true; + } + } + } + } return false; } - private boolean jj_3R_StatementInternal_1071_9_121() + private boolean jj_3R_RightBinaryCondition_2617_6_333() { - if (jj_3R_ReturnStatement_4071_3_276()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_RightBinaryCondition_2618_8_463()) jj_scanpos = xsp; + if (jj_3R_InOperator_2760_3_382()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_StatementInternal_1069_9_120() + private boolean jj_3R_StatementInternal_1078_9_122() { - if (jj_3R_RollbackStatement_4064_3_275()) return true; + if (jj_3R_ReturnStatement_4069_3_277()) return true; return false; } - private boolean jj_3R_StatementInternal_1067_9_119() + private boolean jj_3R_StatementInternal_1076_9_121() { - if (jj_3R_CommitStatement_4035_3_274()) return true; + if (jj_3R_RollbackStatement_4062_3_276()) return true; return false; } - private boolean jj_3R_RightBinaryCondition_2605_6_331() + private boolean jj_3R_StatementInternal_1074_9_120() { - if (jj_3R_CompareOperator_2493_1_384()) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_CommitStatement_4033_3_275()) return true; return false; } - private boolean jj_3_32() + private boolean jj_3R_RightBinaryCondition_2612_6_332() { - if (jj_3R_AlterBucketStatement_3960_3_95()) return true; + if (jj_3R_CompareOperator_2500_1_385()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3_148() + private boolean jj_3_32() { - if (jj_3R_StatementSemicolon_948_3_67()) return true; + if (jj_3R_AlterBucketStatement_3958_3_96()) return true; return false; } - private boolean jj_3R_StatementInternal_1065_9_118() + private boolean jj_3R_WhileBlock_4148_3_809() { - if (jj_3R_BeginStatement_4027_3_273()) return true; + if (jj_scan_token(WHILE)) return true; + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_OrBlock_2392_3_154()) return true; + if (jj_scan_token(RPAREN)) return true; + if (jj_scan_token(LBRACE)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_WhileBlock_4153_5_842()) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(RBRACE)) return true; return false; } - private boolean jj_3R_ForEachBlock_4137_5_856() + private boolean jj_3R_StatementInternal_1072_9_119() { - if (jj_3R_WhileBlock_4150_3_805()) return true; + if (jj_3R_BeginStatement_4025_3_274()) return true; return false; } - private boolean jj_3R_RightBinaryCondition_2604_3_151() + private boolean jj_3R_RightBinaryCondition_2611_3_152() { Token xsp; xsp = jj_scanpos; - if (jj_3R_RightBinaryCondition_2605_6_331()) { + if (jj_3R_RightBinaryCondition_2612_6_332()) { jj_scanpos = xsp; - if (jj_3R_RightBinaryCondition_2610_6_332()) return true; + if (jj_3R_RightBinaryCondition_2617_6_333()) return true; } return false; } private boolean jj_3_34() { - if (jj_3R_AlterDatabaseStatement_3986_3_97()) return true; + if (jj_3R_AlterDatabaseStatement_3984_3_98()) return true; return false; } - private boolean jj_3R_ForEachBlock_4135_5_855() + private boolean jj_3_33() { - if (jj_3R_ForEachBlock_4123_3_806()) return true; + if (jj_3R_DropBucketStatement_3971_3_97()) return true; return false; } - private boolean jj_3R_ForEachBlock_4133_5_854() + private boolean jj_3_30() { - if (jj_3R_IfStatement_4081_3_278()) return true; + if (jj_3R_DropPropertyStatement_3771_3_94()) return true; return false; } - private boolean jj_3_33() + private boolean jj_3_148() { - if (jj_3R_DropBucketStatement_3973_3_96()) return true; + if (jj_3R_StatementSemicolon_955_3_68()) return true; return false; } - private boolean jj_3_30() + private boolean jj_3R_StatementInternal_1063_9_118() { - if (jj_3R_DropPropertyStatement_3781_3_93()) return true; + if (jj_3R_AlterBucketStatement_3958_3_96()) return true; return false; } - private boolean jj_3R_ForEachBlock_4130_5_853() + private boolean jj_3R_NullSafeEqualsCompareOperator_2604_2_582() { - if (jj_3R_StatementSemicolon_948_3_67()) return true; + if (jj_scan_token(NSEQ)) return true; return false; } - private boolean jj_3R_ForEachBlock_4130_5_841() + private boolean jj_3_29() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_ForEachBlock_4130_5_853()) { - jj_scanpos = xsp; - if (jj_3R_ForEachBlock_4133_5_854()) { - jj_scanpos = xsp; - if (jj_3R_ForEachBlock_4135_5_855()) { - jj_scanpos = xsp; - if (jj_3R_ForEachBlock_4137_5_856()) { - jj_scanpos = xsp; - if (jj_scan_token(171)) return true; - } - } - } - } + if (jj_3R_AlterPropertyStatement_3747_3_93()) return true; return false; } - private boolean jj_3R_StatementInternal_1056_9_117() + private boolean jj_3R_ForEachBlock_4135_5_858() { - if (jj_3R_AlterBucketStatement_3960_3_95()) return true; + if (jj_3R_WhileBlock_4148_3_809()) return true; return false; } - private boolean jj_3R_NullSafeEqualsCompareOperator_2597_2_581() + private boolean jj_3_31() { - if (jj_scan_token(NSEQ)) return true; + if (jj_3R_DropIndexStatement_3935_3_95()) return true; return false; } - private boolean jj_3_29() + private boolean jj_3R_ForEachBlock_4133_5_857() { - if (jj_3R_AlterPropertyStatement_3757_3_92()) return true; + if (jj_3R_ForEachBlock_4121_3_810()) return true; return false; } - private boolean jj_3_31() + private boolean jj_3_28() { - if (jj_3R_DropIndexStatement_3937_3_94()) return true; + if (jj_3R_DropTypeStatement_3699_3_92()) return true; return false; } - private boolean jj_3_28() + private boolean jj_3R_StatementInternal_1058_9_117() { - if (jj_3R_DropTypeStatement_3709_3_91()) return true; + if (jj_3R_RebuildIndexStatement_3905_3_273()) return true; return false; } - private boolean jj_3R_StatementInternal_1051_9_116() + private boolean jj_3R_ForEachBlock_4131_5_856() { - if (jj_3R_RebuildIndexStatement_3915_3_272()) return true; + if (jj_3R_IfStatement_4079_3_279()) return true; return false; } - private boolean jj_3R_EqualsCompareOperator_2590_3_702() + private boolean jj_3R_EqualsCompareOperator_2597_3_704() { if (jj_scan_token(EQEQ)) return true; return false; @@ -21418,35 +21382,43 @@ private boolean jj_3R_EqualsCompareOperator_2590_3_702() private boolean jj_3_27() { - if (jj_3R_AlterTypeStatement_3624_3_90()) return true; + if (jj_3R_AlterTypeStatement_3614_3_91()) return true; return false; } - private boolean jj_3R_StatementInternal_1048_9_115() + private boolean jj_3R_StatementInternal_1055_9_116() { - if (jj_3R_DropPropertyStatement_3781_3_93()) return true; + if (jj_3R_DropPropertyStatement_3771_3_94()) return true; return false; } - private boolean jj_3R_ForEachBlock_4123_3_806() + private boolean jj_3R_ForEachBlock_4128_5_855() + { + if (jj_3R_StatementSemicolon_955_3_68()) return true; + return false; + } + + private boolean jj_3R_ForEachBlock_4128_5_843() { - if (jj_scan_token(FOREACH)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - if (jj_scan_token(IN)) return true; - if (jj_3R_Expression_2037_3_131()) return true; - if (jj_scan_token(RPAREN)) return true; - if (jj_scan_token(LBRACE)) return true; Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_ForEachBlock_4130_5_841()) { jj_scanpos = xsp; break; } + xsp = jj_scanpos; + if (jj_3R_ForEachBlock_4128_5_855()) { + jj_scanpos = xsp; + if (jj_3R_ForEachBlock_4131_5_856()) { + jj_scanpos = xsp; + if (jj_3R_ForEachBlock_4133_5_857()) { + jj_scanpos = xsp; + if (jj_3R_ForEachBlock_4135_5_858()) { + jj_scanpos = xsp; + if (jj_scan_token(172)) return true; + } + } + } } - if (jj_scan_token(RBRACE)) return true; return false; } - private boolean jj_3R_EqualsCompareOperator_2588_3_701() + private boolean jj_3R_EqualsCompareOperator_2595_3_703() { if (jj_scan_token(EQ)) return true; return false; @@ -21454,76 +21426,88 @@ private boolean jj_3R_EqualsCompareOperator_2588_3_701() private boolean jj_3_26() { - if (jj_3R_TruncateRecordStatement_3511_3_89()) return true; + if (jj_3R_TruncateRecordStatement_3507_3_90()) return true; return false; } - private boolean jj_3R_StatementInternal_1045_9_114() + private boolean jj_3R_StatementInternal_1052_9_115() { - if (jj_3R_AlterPropertyStatement_3757_3_92()) return true; + if (jj_3R_AlterPropertyStatement_3747_3_93()) return true; return false; } - private boolean jj_3R_EqualsCompareOperator_2587_1_580() + private boolean jj_3R_EqualsCompareOperator_2594_1_581() { Token xsp; xsp = jj_scanpos; - if (jj_3R_EqualsCompareOperator_2588_3_701()) { + if (jj_3R_EqualsCompareOperator_2595_3_703()) { jj_scanpos = xsp; - if (jj_3R_EqualsCompareOperator_2590_3_702()) return true; + if (jj_3R_EqualsCompareOperator_2597_3_704()) return true; } return false; } private boolean jj_3_25() { - if (jj_3R_TruncateBucketStatement_3498_3_88()) return true; + if (jj_3R_TruncateBucketStatement_3494_3_89()) return true; return false; } - private boolean jj_3R_StatementInternal_1042_9_113() + private boolean jj_3R_StatementInternal_1049_9_114() { - if (jj_3R_DropTypeStatement_3709_3_91()) return true; + if (jj_3R_DropTypeStatement_3699_3_92()) return true; return false; } private boolean jj_3_24() { - if (jj_3R_TruncateTypeStatement_3488_3_87()) return true; + if (jj_3R_TruncateTypeStatement_3484_3_88()) return true; return false; } - private boolean jj_3R_ContainsValueOperator_2581_3_386() + private boolean jj_3R_ContainsValueOperator_2588_3_387() { if (jj_scan_token(CONTAINSVALUE)) return true; return false; } - private boolean jj_3R_CommitStatement_4050_68_848() + private boolean jj_3R_StatementInternal_1046_9_113() { - if (jj_scan_token(FAIL)) return true; + if (jj_3R_AlterTypeStatement_3614_3_91()) return true; return false; } - private boolean jj_3R_StatementInternal_1039_9_112() + private boolean jj_3R_ForEachBlock_4121_3_810() { - if (jj_3R_AlterTypeStatement_3624_3_90()) return true; + if (jj_scan_token(FOREACH)) return true; + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + if (jj_scan_token(IN)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + if (jj_scan_token(RPAREN)) return true; + if (jj_scan_token(LBRACE)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_ForEachBlock_4128_5_843()) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(RBRACE)) return true; return false; } private boolean jj_3_23() { - if (jj_3R_DeleteFunctionStatement_4309_3_86()) return true; + if (jj_3R_DeleteFunctionStatement_4299_3_87()) return true; return false; } - private boolean jj_3R_StatementInternal_1036_9_111() + private boolean jj_3R_StatementInternal_1043_9_112() { - if (jj_3R_TruncateRecordStatement_3511_3_89()) return true; + if (jj_3R_TruncateRecordStatement_3507_3_90()) return true; return false; } - private boolean jj_3R_ContainsKeyOperator_2575_3_590() + private boolean jj_3R_ContainsKeyOperator_2582_3_591() { if (jj_scan_token(CONTAINSKEY)) return true; return false; @@ -21531,35 +21515,35 @@ private boolean jj_3R_ContainsKeyOperator_2575_3_590() private boolean jj_3_22() { - if (jj_3R_DefineFunctionStatement_4273_3_85()) return true; + if (jj_3R_DefineFunctionStatement_4265_3_86()) return true; return false; } - private boolean jj_3R_CommitStatement_4054_58_839() + private boolean jj_3R_StatementInternal_1040_9_111() { - if (jj_scan_token(FAIL)) return true; + if (jj_3R_TruncateBucketStatement_3494_3_89()) return true; return false; } - private boolean jj_3R_StatementInternal_1033_9_110() + private boolean jj_3_21() { - if (jj_3R_TruncateBucketStatement_3498_3_88()) return true; + if (jj_3R_UpdateStatement_1397_3_85()) return true; return false; } - private boolean jj_3_21() + private boolean jj_3R_CommitStatement_4048_68_850() { - if (jj_3R_UpdateStatement_1390_3_84()) return true; + if (jj_scan_token(FAIL)) return true; return false; } - private boolean jj_3R_StatementInternal_1030_9_109() + private boolean jj_3R_StatementInternal_1037_9_110() { - if (jj_3R_TruncateTypeStatement_3488_3_87()) return true; + if (jj_3R_TruncateTypeStatement_3484_3_88()) return true; return false; } - private boolean jj_3R_WithinOperator_2569_3_592() + private boolean jj_3R_WithinOperator_2576_3_593() { if (jj_scan_token(WITHIN)) return true; return false; @@ -21567,36 +21551,35 @@ private boolean jj_3R_WithinOperator_2569_3_592() private boolean jj_3_20() { - if (jj_3R_UpdateEdgeStatement_1368_3_83()) return true; + if (jj_3R_UpdateEdgeStatement_1375_3_84()) return true; return false; } - private boolean jj_3R_StatementInternal_1027_9_108() + private boolean jj_3R_StatementInternal_1034_9_109() { - if (jj_3R_DeleteFunctionStatement_4309_3_86()) return true; + if (jj_3R_DeleteFunctionStatement_4299_3_87()) return true; return false; } - private boolean jj_3R_SleepStatement_4103_3_277() + private boolean jj_3_19() { - if (jj_scan_token(SLEEP)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_CreateEdgeStatement_1697_3_83()) return true; return false; } - private boolean jj_3_19() + private boolean jj_3R_StatementInternal_1031_9_108() { - if (jj_3R_CreateEdgeStatement_1690_3_82()) return true; + if (jj_3R_DefineFunctionStatement_4265_3_86()) return true; return false; } - private boolean jj_3R_StatementInternal_1024_9_107() + private boolean jj_3R_CommitStatement_4052_56_808() { - if (jj_3R_DefineFunctionStatement_4273_3_85()) return true; + if (jj_scan_token(FAIL)) return true; return false; } - private boolean jj_3R_NearOperator_2563_3_591() + private boolean jj_3R_NearOperator_2570_3_592() { if (jj_scan_token(NEAR)) return true; return false; @@ -21604,167 +21587,152 @@ private boolean jj_3R_NearOperator_2563_3_591() private boolean jj_3_18() { - if (jj_3R_CreateVertexStatementEmptyNoTarget_1640_3_81()) return true; - return false; - } - - private boolean jj_3R_StatementInternal_1021_9_106() - { - if (jj_3R_UpdateStatement_1390_3_84()) return true; + if (jj_3R_CreateVertexStatementEmptyNoTarget_1647_3_82()) return true; return false; } - private boolean jj_3_147() + private boolean jj_3R_StatementInternal_1028_9_107() { - if (jj_3R_StatementSemicolon_948_3_67()) return true; + if (jj_3R_UpdateStatement_1397_3_85()) return true; return false; } private boolean jj_3_17() { - if (jj_3R_CreateVertexStatementEmpty_1647_3_80()) return true; + if (jj_3R_CreateVertexStatementEmpty_1654_3_81()) return true; return false; } - private boolean jj_3R_IfStatement_4092_5_733() + private boolean jj_3R_StatementInternal_1025_9_106() { - if (jj_3R_ForEachBlock_4123_3_806()) return true; + if (jj_3R_UpdateEdgeStatement_1375_3_84()) return true; return false; } - private boolean jj_3R_StatementInternal_1018_9_105() + private boolean jj_3R_SleepStatement_4101_3_278() { - if (jj_3R_UpdateEdgeStatement_1368_3_83()) return true; + if (jj_scan_token(SLEEP)) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_IfStatement_4090_5_732() + private boolean jj_3R_ILikeOperator_2564_3_590() { - if (jj_3R_WhileBlock_4150_3_805()) return true; + if (jj_scan_token(ILIKE)) return true; return false; } - private boolean jj_3R_ILikeOperator_2557_3_589() + private boolean jj_3_16() { - if (jj_scan_token(ILIKE)) return true; + if (jj_3R_CreateVertexStatement_1666_3_80()) return true; return false; } - private boolean jj_3_16() + private boolean jj_3R_StatementInternal_1022_9_105() { - if (jj_3R_CreateVertexStatement_1659_3_79()) return true; + if (jj_3R_CreateEdgeStatement_1697_3_83()) return true; return false; } - private boolean jj_3R_StatementInternal_1015_9_104() + private boolean jj_3_15() { - if (jj_3R_CreateEdgeStatement_1690_3_82()) return true; + if (jj_3R_CreateVertexStatementNoTarget_1687_3_79()) return true; return false; } - private boolean jj_3R_IfStatement_4088_5_731() + private boolean jj_3R_StatementInternal_1019_9_104() { - if (jj_3R_IfStatement_4081_3_278()) return true; + if (jj_3R_CreateVertexStatementEmptyNoTarget_1647_3_82()) return true; return false; } - private boolean jj_3_15() + private boolean jj_3_147() { - if (jj_3R_CreateVertexStatementNoTarget_1680_3_78()) return true; + if (jj_3R_StatementSemicolon_955_3_68()) return true; return false; } - private boolean jj_3R_StatementInternal_1012_9_103() + private boolean jj_3R_LikeOperator_2558_3_589() { - if (jj_3R_CreateVertexStatementEmptyNoTarget_1640_3_81()) return true; + if (jj_scan_token(LIKE)) return true; return false; } - private boolean jj_3R_IfStatement_4085_5_730() + private boolean jj_3R_IfStatement_4090_5_736() { - if (jj_3R_StatementSemicolon_948_3_67()) return true; + if (jj_3R_ForEachBlock_4121_3_810()) return true; return false; } - private boolean jj_3R_IfStatement_4085_5_630() + private boolean jj_3R_StatementInternal_1016_9_103() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_IfStatement_4085_5_730()) { - jj_scanpos = xsp; - if (jj_3R_IfStatement_4088_5_731()) { - jj_scanpos = xsp; - if (jj_3R_IfStatement_4090_5_732()) { - jj_scanpos = xsp; - if (jj_3R_IfStatement_4092_5_733()) { - jj_scanpos = xsp; - if (jj_scan_token(171)) return true; - } - } - } - } + if (jj_3R_CreateVertexStatementEmpty_1654_3_81()) return true; return false; } - private boolean jj_3R_LikeOperator_2551_3_588() + private boolean jj_3R_IfStatement_4088_5_735() { - if (jj_scan_token(LIKE)) return true; + if (jj_3R_WhileBlock_4148_3_809()) return true; return false; } - private boolean jj_3R_StatementInternal_1009_9_102() + private boolean jj_3R_StatementInternal_1013_9_102() { - if (jj_3R_CreateVertexStatementEmpty_1647_3_80()) return true; + if (jj_3R_CreateVertexStatement_1666_3_80()) return true; return false; } - private boolean jj_3R_StatementInternal_1006_9_101() + private boolean jj_3R_IfStatement_4086_5_734() { - if (jj_3R_CreateVertexStatement_1659_3_79()) return true; + if (jj_3R_IfStatement_4079_3_279()) return true; return false; } - private boolean jj_3R_IfStatement_4081_3_278() + private boolean jj_3R_LeOperator_2552_3_588() { - if (jj_scan_token(IF)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_OrBlock_2385_3_153()) return true; - if (jj_scan_token(RPAREN)) return true; - if (jj_scan_token(LBRACE)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_IfStatement_4085_5_630()) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(RBRACE)) return true; + if (jj_scan_token(LE)) return true; return false; } - private boolean jj_3R_LeOperator_2545_3_587() + private boolean jj_3R_StatementInternal_1010_9_101() { - if (jj_scan_token(LE)) return true; + if (jj_3R_CreateVertexStatementNoTarget_1687_3_79()) return true; return false; } - private boolean jj_3R_StatementInternal_1003_9_100() + private boolean jj_3R_IfStatement_4083_5_733() { - if (jj_3R_CreateVertexStatementNoTarget_1680_3_78()) return true; + if (jj_3R_StatementSemicolon_955_3_68()) return true; return false; } - private boolean jj_3_14() + private boolean jj_3R_IfStatement_4083_5_632() { - if (jj_3R_CreateBucketStatement_3951_3_77()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_IfStatement_4083_5_733()) { + jj_scanpos = xsp; + if (jj_3R_IfStatement_4086_5_734()) { + jj_scanpos = xsp; + if (jj_3R_IfStatement_4088_5_735()) { + jj_scanpos = xsp; + if (jj_3R_IfStatement_4090_5_736()) { + jj_scanpos = xsp; + if (jj_scan_token(172)) return true; + } + } + } + } return false; } - private boolean jj_3R_ReturnStatement_4073_5_443() + private boolean jj_3_14() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_CreateBucketStatement_3949_3_78()) return true; return false; } - private boolean jj_3R_GeOperator_2539_3_586() + private boolean jj_3R_GeOperator_2546_3_587() { if (jj_scan_token(GE)) return true; return false; @@ -21772,151 +21740,147 @@ private boolean jj_3R_GeOperator_2539_3_586() private boolean jj_3_13() { - if (jj_3R_CreateIndexStatement_3797_3_76()) return true; + if (jj_3R_CreateIndexStatement_3787_3_77()) return true; return false; } - private boolean jj_3R_ReturnStatement_4071_3_276() + private boolean jj_3R_IfStatement_4079_3_279() { - if (jj_scan_token(RETURN)) return true; + if (jj_scan_token(IF)) return true; + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_OrBlock_2392_3_154()) return true; + if (jj_scan_token(RPAREN)) return true; + if (jj_scan_token(LBRACE)) return true; Token xsp; - xsp = jj_scanpos; - if (jj_3R_ReturnStatement_4073_5_443()) jj_scanpos = xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_IfStatement_4083_5_632()) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(RBRACE)) return true; return false; } private boolean jj_3_12() { - if (jj_3R_CreatePropertyStatement_3725_3_75()) return true; + if (jj_3R_CreatePropertyStatement_3715_3_76()) return true; return false; } - private boolean jj_3R_CommitStatement_4050_21_847() + private boolean jj_3R_NeqOperator_2540_3_586() { - if (jj_scan_token(CONTINUE)) return true; + if (jj_scan_token(NEQ)) return true; return false; } - private boolean jj_3R_NeqOperator_2533_3_585() + private boolean jj_3_11() { - if (jj_scan_token(NEQ)) return true; + if (jj_3R_CreateEdgeTypeStatement_3586_3_75()) return true; return false; } - private boolean jj_3_11() + private boolean jj_3R_ReturnStatement_4071_5_444() { - if (jj_3R_CreateEdgeTypeStatement_3594_3_74()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } private boolean jj_3_10() { - if (jj_3R_CreateVertexTypeStatement_3565_3_73()) return true; + if (jj_3R_CreateVertexTypeStatement_3559_3_74()) return true; return false; } - private boolean jj_3R_RollbackStatement_4064_3_275() + private boolean jj_3R_NeOperator_2534_3_585() { - if (jj_scan_token(ROLLBACK)) return true; + if (jj_scan_token(NE)) return true; return false; } - private boolean jj_3R_CommitStatement_4054_11_838() + private boolean jj_3R_ReturnStatement_4069_3_277() { - if (jj_scan_token(CONTINUE)) return true; + if (jj_scan_token(RETURN)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_ReturnStatement_4071_5_444()) jj_scanpos = xsp; return false; } - private boolean jj_3R_NeOperator_2527_3_584() + private boolean jj_3_9() { - if (jj_scan_token(NE)) return true; + if (jj_3R_CreateDocumentTypeStatement_3532_3_73()) return true; return false; } - private boolean jj_3_9() + private boolean jj_3R_CommitStatement_4048_21_849() { - if (jj_3R_CreateDocumentTypeStatement_3536_3_72()) return true; + if (jj_scan_token(CONTINUE)) return true; return false; } - private boolean jj_3R_CommitStatement_4050_13_837() + private boolean jj_3R_StatementInternal_990_9_100() { - if (jj_scan_token(AND)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_CommitStatement_4050_21_847()) { - jj_scanpos = xsp; - if (jj_3R_CommitStatement_4050_68_848()) return true; - } + if (jj_3R_InsertStatement_1528_1_272()) return true; return false; } - private boolean jj_3R_CommitStatement_4054_9_804() + private boolean jj_3R_GtOperator_2528_3_584() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_CommitStatement_4054_11_838()) { - jj_scanpos = xsp; - if (jj_3R_CommitStatement_4054_58_839()) return true; - } + if (jj_scan_token(GT)) return true; return false; } - private boolean jj_3R_StatementInternal_983_9_99() + private boolean jj_3_8() { - if (jj_3R_InsertStatement_1521_1_271()) return true; + if (jj_3R_DeleteEdgeStatement_1270_3_72()) return true; return false; } - private boolean jj_3R_GtOperator_2521_3_583() + private boolean jj_3R_RollbackStatement_4062_3_276() { - if (jj_scan_token(GT)) return true; + if (jj_scan_token(ROLLBACK)) return true; return false; } - private boolean jj_3_8() + private boolean jj_3_7() { - if (jj_3R_DeleteEdgeStatement_1263_3_71()) return true; + if (jj_3R_DeleteStatement_1257_3_71()) return true; return false; } - private boolean jj_3R_CommitStatement_4045_13_836() + private boolean jj_3R_CommitStatement_4048_13_841() { - if (jj_3R_StatementInternal_971_3_69()) return true; - if (jj_scan_token(SEMICOLON)) return true; + if (jj_scan_token(AND)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_CommitStatement_4048_21_849()) { + jj_scanpos = xsp; + if (jj_3R_CommitStatement_4048_68_850()) return true; + } return false; } - private boolean jj_3_7() + private boolean jj_3R_CommitStatement_4052_9_807() { - if (jj_3R_DeleteStatement_1250_3_70()) return true; + if (jj_scan_token(CONTINUE)) return true; return false; } - private boolean jj_3R_StatementInternal_975_9_98() + private boolean jj_3R_StatementInternal_982_9_99() { - if (jj_3R_QueryStatement_1106_3_174()) return true; + if (jj_3R_QueryStatement_1113_3_175()) return true; return false; } - private boolean jj_3R_LtOperator_2515_3_582() + private boolean jj_3R_LtOperator_2522_3_583() { if (jj_scan_token(LT)) return true; return false; } - private boolean jj_3R_CommitStatement_4041_9_803() + private boolean jj_3R_CommitStatement_4043_13_840() { - if (jj_scan_token(LBRACE)) return true; - Token xsp; - if (jj_3R_CommitStatement_4045_13_836()) return true; - while (true) { - xsp = jj_scanpos; - if (jj_3R_CommitStatement_4045_13_836()) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(RBRACE)) return true; - xsp = jj_scanpos; - if (jj_3R_CommitStatement_4050_13_837()) jj_scanpos = xsp; + if (jj_3R_StatementInternal_978_3_70()) return true; + if (jj_scan_token(SEMICOLON)) return true; return false; } @@ -21924,13 +21888,13 @@ private boolean jj_3_35() { Token xsp; xsp = jj_scanpos; - if (jj_3R_StatementInternal_975_9_98()) { + if (jj_3R_StatementInternal_982_9_99()) { jj_scanpos = xsp; if (jj_3_7()) { jj_scanpos = xsp; if (jj_3_8()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_983_9_99()) { + if (jj_3R_StatementInternal_990_9_100()) { jj_scanpos = xsp; if (jj_3_9()) { jj_scanpos = xsp; @@ -21944,70 +21908,69 @@ private boolean jj_3_35() jj_scanpos = xsp; if (jj_3_14()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1003_9_100()) { + if (jj_3R_StatementInternal_1010_9_101()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1006_9_101()) { + if (jj_3R_StatementInternal_1013_9_102()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1009_9_102()) { + if (jj_3R_StatementInternal_1016_9_103()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1012_9_103()) { + if (jj_3R_StatementInternal_1019_9_104()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1015_9_104()) { + if (jj_3R_StatementInternal_1022_9_105()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1018_9_105()) { + if (jj_3R_StatementInternal_1025_9_106()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1021_9_106()) { + if (jj_3R_StatementInternal_1028_9_107()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1024_9_107()) { + if (jj_3R_StatementInternal_1031_9_108()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1027_9_108()) { + if (jj_3R_StatementInternal_1034_9_109()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1030_9_109()) { + if (jj_3R_StatementInternal_1037_9_110()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1033_9_110()) { + if (jj_3R_StatementInternal_1040_9_111()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1036_9_111()) { + if (jj_3R_StatementInternal_1043_9_112()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1039_9_112()) { + if (jj_3R_StatementInternal_1046_9_113()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1042_9_113()) { + if (jj_3R_StatementInternal_1049_9_114()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1045_9_114()) { + if (jj_3R_StatementInternal_1052_9_115()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1048_9_115()) { + if (jj_3R_StatementInternal_1055_9_116()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1051_9_116()) { + if (jj_3R_StatementInternal_1058_9_117()) { jj_scanpos = xsp; if (jj_3_31()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1056_9_117()) { + if (jj_3R_StatementInternal_1063_9_118()) { jj_scanpos = xsp; if (jj_3_33()) { jj_scanpos = xsp; if (jj_3_34()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1065_9_118()) { + if (jj_3R_StatementInternal_1072_9_119()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1067_9_119()) { + if (jj_3R_StatementInternal_1074_9_120()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1069_9_120()) { + if (jj_3R_StatementInternal_1076_9_121()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1071_9_121()) { + if (jj_3R_StatementInternal_1078_9_122()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1073_9_122()) { + if (jj_3R_StatementInternal_1080_9_123()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1075_9_123()) { + if (jj_3R_StatementInternal_1082_9_124()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1077_9_124()) { + if (jj_3R_StatementInternal_1084_9_125()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1079_9_125()) { + if (jj_3R_StatementInternal_1086_9_126()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1081_9_126()) { + if (jj_3R_StatementInternal_1088_9_127()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1083_9_127()) { + if (jj_3R_StatementInternal_1090_9_128()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1085_9_128()) return true; - } + if (jj_3R_StatementInternal_1092_9_129()) return true; } } } @@ -22048,204 +22011,186 @@ private boolean jj_3_35() } } } - return false; - } - - private boolean jj_3R_CommitStatement_4039_7_729() - { - if (jj_scan_token(ELSE)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_CommitStatement_4041_9_803()) { - jj_scanpos = xsp; - if (jj_3R_CommitStatement_4054_9_804()) return true; } return false; } - private boolean jj_3R_CompareOperator_2506_5_505() + private boolean jj_3R_CompareOperator_2513_5_506() { - if (jj_3R_WithinOperator_2569_3_592()) return true; + if (jj_3R_WithinOperator_2576_3_593()) return true; return false; } - private boolean jj_3R_CompareOperator_2505_5_504() + private boolean jj_3R_CompareOperator_2512_5_505() { - if (jj_3R_NearOperator_2563_3_591()) return true; + if (jj_3R_NearOperator_2570_3_592()) return true; return false; } - private boolean jj_3R_CompareOperator_2504_5_503() + private boolean jj_3R_CompareOperator_2511_5_504() { - if (jj_3R_ContainsKeyOperator_2575_3_590()) return true; + if (jj_3R_ContainsKeyOperator_2582_3_591()) return true; return false; } - private boolean jj_3R_StatementInternal_971_3_69() + private boolean jj_3R_StatementInternal_978_3_70() { Token xsp; xsp = jj_scanpos; if (jj_3_35()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1089_5_217()) { + if (jj_3R_StatementInternal_1096_5_218()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1091_5_218()) { + if (jj_3R_StatementInternal_1098_5_219()) { jj_scanpos = xsp; - if (jj_3R_StatementInternal_1094_5_219()) return true; + if (jj_3R_StatementInternal_1101_5_220()) return true; } } } return false; } - private boolean jj_3R_CompareOperator_2503_5_502() + private boolean jj_3R_CompareOperator_2510_5_503() { - if (jj_3R_ILikeOperator_2557_3_589()) return true; + if (jj_3R_ILikeOperator_2564_3_590()) return true; return false; } - private boolean jj_3R_CompareOperator_2502_5_501() + private boolean jj_3R_CompareOperator_2509_5_502() { - if (jj_3R_LikeOperator_2551_3_588()) return true; + if (jj_3R_LikeOperator_2558_3_589()) return true; return false; } - private boolean jj_3R_CommitStatement_4037_5_442() + private boolean jj_3R_CommitStatement_4039_9_806() { - if (jj_scan_token(RETRY)) return true; - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_scan_token(LBRACE)) return true; Token xsp; + if (jj_3R_CommitStatement_4043_13_840()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3R_CommitStatement_4043_13_840()) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(RBRACE)) return true; xsp = jj_scanpos; - if (jj_3R_CommitStatement_4039_7_729()) jj_scanpos = xsp; + if (jj_3R_CommitStatement_4048_13_841()) jj_scanpos = xsp; return false; } - private boolean jj_3R_CompareOperator_2501_5_500() + private boolean jj_3R_CompareOperator_2508_5_501() { - if (jj_3R_LeOperator_2545_3_587()) return true; + if (jj_3R_LeOperator_2552_3_588()) return true; return false; } - private boolean jj_3R_CompareOperator_2500_5_499() + private boolean jj_3R_CompareOperator_2507_5_500() { - if (jj_3R_GeOperator_2539_3_586()) return true; + if (jj_3R_GeOperator_2546_3_587()) return true; return false; } - private boolean jj_3R_CompareOperator_2499_5_498() + private boolean jj_3R_CompareOperator_2506_5_499() { - if (jj_3R_NeqOperator_2533_3_585()) return true; + if (jj_3R_NeqOperator_2540_3_586()) return true; return false; } - private boolean jj_3R_CompareOperator_2498_5_497() + private boolean jj_3R_CompareOperator_2505_5_498() { - if (jj_3R_NeOperator_2527_3_584()) return true; + if (jj_3R_NeOperator_2534_3_585()) return true; return false; } - private boolean jj_3R_CommitStatement_4035_3_274() + private boolean jj_3R_CommitStatement_4037_7_732() { - if (jj_scan_token(COMMIT)) return true; + if (jj_scan_token(ELSE)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_CommitStatement_4037_5_442()) jj_scanpos = xsp; + if (jj_3R_CommitStatement_4039_9_806()) { + jj_scanpos = xsp; + if (jj_3R_CommitStatement_4052_9_807()) { + jj_scanpos = xsp; + if (jj_3R_CommitStatement_4052_56_808()) return true; + } + } return false; } - private boolean jj_3R_CompareOperator_2497_5_496() + private boolean jj_3R_CompareOperator_2504_5_497() { - if (jj_3R_GtOperator_2521_3_583()) return true; + if (jj_3R_GtOperator_2528_3_584()) return true; return false; } - private boolean jj_3R_CompareOperator_2496_5_495() + private boolean jj_3R_CompareOperator_2503_5_496() { - if (jj_3R_LtOperator_2515_3_582()) return true; + if (jj_3R_LtOperator_2522_3_583()) return true; return false; } - private boolean jj_3R_CompareOperator_2495_5_494() + private boolean jj_3R_CompareOperator_2502_5_495() { - if (jj_3R_NullSafeEqualsCompareOperator_2597_2_581()) return true; + if (jj_3R_NullSafeEqualsCompareOperator_2604_2_582()) return true; return false; } - private boolean jj_3R_ExpressionStatement_961_3_415() + private boolean jj_3R_ExpressionStatement_968_3_416() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } private boolean jj_3_6() { - if (jj_3R_StatementInternal_971_3_69()) return true; + if (jj_3R_StatementInternal_978_3_70()) return true; return false; } - private boolean jj_3R_BeginStatement_4028_5_441() + private boolean jj_3R_CommitStatement_4035_5_443() { - if (jj_scan_token(ISOLATION)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - return false; - } - - private boolean jj_3_146() - { - if (jj_3R_Expression_2037_3_131()) return true; - return false; - } - - private boolean jj_3R_CompareOperator_2494_3_493() - { - if (jj_3R_EqualsCompareOperator_2587_1_580()) return true; - return false; - } - - private boolean jj_3_145() - { - if (jj_3R_Statement_940_3_212()) return true; + if (jj_scan_token(RETRY)) return true; + if (jj_3R_PInteger_914_3_67()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_CommitStatement_4037_7_732()) jj_scanpos = xsp; return false; } - private boolean jj_3R_BeginStatement_4027_3_273() + private boolean jj_3R_CompareOperator_2501_3_494() { - if (jj_scan_token(BEGIN)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_BeginStatement_4028_5_441()) jj_scanpos = xsp; + if (jj_3R_EqualsCompareOperator_2594_1_581()) return true; return false; } - private boolean jj_3R_CompareOperator_2493_1_384() + private boolean jj_3R_CompareOperator_2500_1_385() { Token xsp; xsp = jj_scanpos; - if (jj_3R_CompareOperator_2494_3_493()) { + if (jj_3R_CompareOperator_2501_3_494()) { jj_scanpos = xsp; - if (jj_3R_CompareOperator_2495_5_494()) { + if (jj_3R_CompareOperator_2502_5_495()) { jj_scanpos = xsp; - if (jj_3R_CompareOperator_2496_5_495()) { + if (jj_3R_CompareOperator_2503_5_496()) { jj_scanpos = xsp; - if (jj_3R_CompareOperator_2497_5_496()) { + if (jj_3R_CompareOperator_2504_5_497()) { jj_scanpos = xsp; - if (jj_3R_CompareOperator_2498_5_497()) { + if (jj_3R_CompareOperator_2505_5_498()) { jj_scanpos = xsp; - if (jj_3R_CompareOperator_2499_5_498()) { + if (jj_3R_CompareOperator_2506_5_499()) { jj_scanpos = xsp; - if (jj_3R_CompareOperator_2500_5_499()) { + if (jj_3R_CompareOperator_2507_5_500()) { jj_scanpos = xsp; - if (jj_3R_CompareOperator_2501_5_500()) { + if (jj_3R_CompareOperator_2508_5_501()) { jj_scanpos = xsp; - if (jj_3R_CompareOperator_2502_5_501()) { + if (jj_3R_CompareOperator_2509_5_502()) { jj_scanpos = xsp; - if (jj_3R_CompareOperator_2503_5_502()) { + if (jj_3R_CompareOperator_2510_5_503()) { jj_scanpos = xsp; - if (jj_3R_CompareOperator_2504_5_503()) { + if (jj_3R_CompareOperator_2511_5_504()) { jj_scanpos = xsp; - if (jj_3R_CompareOperator_2505_5_504()) { + if (jj_3R_CompareOperator_2512_5_505()) { jj_scanpos = xsp; - if (jj_3R_CompareOperator_2506_5_505()) return true; + if (jj_3R_CompareOperator_2513_5_506()) return true; } } } @@ -22261,73 +22206,98 @@ private boolean jj_3R_CompareOperator_2493_1_384() return false; } + private boolean jj_3R_CommitStatement_4033_3_275() + { + if (jj_scan_token(COMMIT)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_CommitStatement_4035_5_443()) jj_scanpos = xsp; + return false; + } + private boolean jj_3_113() { - if (jj_3R_InstanceofCondition_2647_3_193()) return true; + if (jj_3R_InstanceofCondition_2654_3_194()) return true; return false; } - private boolean jj_3R_StatementSemicolon_952_5_215() + private boolean jj_3R_StatementSemicolon_959_5_216() { - if (jj_3R_ExpressionStatement_961_3_415()) return true; + if (jj_3R_ExpressionStatement_968_3_416()) return true; return false; } private boolean jj_3_112() { - if (jj_3R_IndexMatchCondition_2664_3_192()) return true; + if (jj_3R_IndexMatchCondition_2671_3_193()) return true; + return false; + } + + private boolean jj_3R_BeginStatement_4026_5_442() + { + if (jj_scan_token(ISOLATION)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_StatementSemicolon_949_5_214() + private boolean jj_3R_StatementSemicolon_956_5_215() { - if (jj_3R_StatementInternal_971_3_69()) return true; + if (jj_3R_StatementInternal_978_3_70()) return true; return false; } - private boolean jj_3R_ConditionBlock_2486_3_380() + private boolean jj_3R_ConditionBlock_2493_3_381() { if (jj_scan_token(NULL)) return true; return false; } - private boolean jj_3R_LetStatement_4018_5_519() + private boolean jj_3_146() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } private boolean jj_3_111() { - if (jj_3R_MatchesCondition_2848_3_191()) return true; + if (jj_3R_MatchesCondition_2855_3_192()) return true; return false; } - private boolean jj_3R_ConditionBlock_2484_3_379() + private boolean jj_3R_ConditionBlock_2491_3_380() { if (jj_scan_token(FALSE)) return true; return false; } - private boolean jj_3R_StatementSemicolon_948_3_67() + private boolean jj_3R_StatementSemicolon_955_3_68() { Token xsp; xsp = jj_scanpos; - if (jj_3R_StatementSemicolon_949_5_214()) { + if (jj_3R_StatementSemicolon_956_5_215()) { jj_scanpos = xsp; - if (jj_3R_StatementSemicolon_952_5_215()) return true; + if (jj_3R_StatementSemicolon_959_5_216()) return true; } if (jj_scan_token(SEMICOLON)) return true; return false; } - private boolean jj_3R_LetStatement_4015_5_518() + private boolean jj_3_145() + { + if (jj_3R_Statement_947_3_213()) return true; + return false; + } + + private boolean jj_3R_BeginStatement_4025_3_274() { - if (jj_3R_StatementInternal_971_3_69()) return true; + if (jj_scan_token(BEGIN)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_BeginStatement_4026_5_442()) jj_scanpos = xsp; return false; } - private boolean jj_3R_ConditionBlock_2482_3_378() + private boolean jj_3R_ConditionBlock_2489_3_379() { if (jj_scan_token(TRUE)) return true; return false; @@ -22335,173 +22305,178 @@ private boolean jj_3R_ConditionBlock_2482_3_378() private boolean jj_3_110() { - if (jj_3R_ContainsTextCondition_2841_3_190()) return true; + if (jj_3R_ContainsTextCondition_2848_3_191()) return true; return false; } private boolean jj_3_5() { - if (jj_3R_FloatingPoint_920_3_68()) return true; + if (jj_3R_FloatingPoint_927_3_69()) return true; return false; } - private boolean jj_3R_ConditionBlock_2479_3_377() + private boolean jj_3R_ConditionBlock_2486_3_378() { - if (jj_3R_InstanceofCondition_2647_3_193()) return true; + if (jj_3R_InstanceofCondition_2654_3_194()) return true; return false; } private boolean jj_3_109() { - if (jj_3R_ContainsAnyCondition_2826_3_189()) return true; + if (jj_3R_ContainsAnyCondition_2833_3_190()) return true; return false; } - private boolean jj_3R_LetStatement_4011_3_417() + private boolean jj_3R_LetStatement_4016_5_520() { - if (jj_scan_token(LET)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - if (jj_scan_token(EQ)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_LetStatement_4015_5_518()) { - jj_scanpos = xsp; - if (jj_3R_LetStatement_4018_5_519()) return true; - } + if (jj_3R_Expression_2044_3_132()) return true; return false; } private boolean jj_3_4() { - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_3R_PInteger_914_3_67()) return true; return false; } - private boolean jj_3R_ConditionBlock_2476_3_376() + private boolean jj_3R_ConditionBlock_2483_3_377() { - if (jj_3R_IndexMatchCondition_2664_3_192()) return true; + if (jj_3R_IndexMatchCondition_2671_3_193()) return true; return false; } - private boolean jj_3R_Statement_940_3_212() + private boolean jj_3R_Statement_947_3_213() { - if (jj_3R_StatementInternal_971_3_69()) return true; + if (jj_3R_StatementInternal_978_3_70()) return true; Token xsp; xsp = jj_scanpos; - if (jj_scan_token(171)) jj_scanpos = xsp; + if (jj_scan_token(172)) jj_scanpos = xsp; return false; } private boolean jj_3_108() { - if (jj_3R_ContainsAllCondition_2811_3_188()) return true; + if (jj_3R_ContainsAllCondition_2818_3_189()) return true; return false; } - private boolean jj_3R_ConditionBlock_2473_3_375() + private boolean jj_3R_LetStatement_4013_5_519() { - if (jj_3R_MatchesCondition_2848_3_191()) return true; + if (jj_3R_StatementInternal_978_3_70()) return true; + return false; + } + + private boolean jj_3R_ConditionBlock_2480_3_376() + { + if (jj_3R_MatchesCondition_2855_3_192()) return true; return false; } private boolean jj_3_107() { - if (jj_3R_ContainsValueCondition_2631_3_187()) return true; + if (jj_3R_ContainsValueCondition_2638_3_188()) return true; return false; } - private boolean jj_3R_ConditionBlock_2470_3_374() + private boolean jj_3R_ConditionBlock_2477_3_375() { - if (jj_3R_ContainsTextCondition_2841_3_190()) return true; + if (jj_3R_ContainsTextCondition_2848_3_191()) return true; return false; } private boolean jj_3_106() { - if (jj_3R_ContainsCondition_2739_3_186()) return true; + if (jj_3R_ContainsCondition_2746_3_187()) return true; return false; } - private boolean jj_3R_PNumber_931_5_575() + private boolean jj_3R_PNumber_938_5_576() { - if (jj_3R_FloatingPoint_920_3_68()) return true; + if (jj_3R_FloatingPoint_927_3_69()) return true; return false; } - private boolean jj_3R_ProfileStatement_4003_3_129() + private boolean jj_3R_LetStatement_4009_3_418() { - if (jj_scan_token(PROFILE)) return true; - if (jj_3R_StatementInternal_971_3_69()) return true; + if (jj_scan_token(LET)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + if (jj_scan_token(EQ)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_LetStatement_4013_5_519()) { + jj_scanpos = xsp; + if (jj_3R_LetStatement_4016_5_520()) return true; + } return false; } - private boolean jj_3R_ConditionBlock_2467_3_373() + private boolean jj_3R_ConditionBlock_2474_3_374() { - if (jj_3R_ContainsAnyCondition_2826_3_189()) return true; + if (jj_3R_ContainsAnyCondition_2833_3_190()) return true; return false; } private boolean jj_3_105() { - if (jj_3R_BetweenCondition_2702_3_185()) return true; + if (jj_3R_BetweenCondition_2709_3_186()) return true; return false; } - private boolean jj_3R_PNumber_928_5_574() + private boolean jj_3R_PNumber_935_5_575() { - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_3R_PInteger_914_3_67()) return true; return false; } - private boolean jj_3R_ConditionBlock_2464_3_372() + private boolean jj_3R_ConditionBlock_2471_3_373() { - if (jj_3R_ContainsAllCondition_2811_3_188()) return true; + if (jj_3R_ContainsAllCondition_2818_3_189()) return true; return false; } private boolean jj_3_104() { - if (jj_3R_BinaryCondition_2622_3_184()) return true; + if (jj_3R_BinaryCondition_2629_3_185()) return true; return false; } - private boolean jj_3R_PNumber_927_3_481() + private boolean jj_3R_PNumber_934_3_482() { Token xsp; xsp = jj_scanpos; - if (jj_3R_PNumber_928_5_574()) { + if (jj_3R_PNumber_935_5_575()) { jj_scanpos = xsp; - if (jj_3R_PNumber_931_5_575()) return true; + if (jj_3R_PNumber_938_5_576()) return true; } return false; } - private boolean jj_3R_ConditionBlock_2461_3_371() + private boolean jj_3R_ConditionBlock_2468_3_372() { - if (jj_3R_ContainsValueCondition_2631_3_187()) return true; + if (jj_3R_ContainsValueCondition_2638_3_188()) return true; return false; } - private boolean jj_3R_ExplainStatement_3995_3_416() + private boolean jj_3_103() { - if (jj_scan_token(EXPLAIN)) return true; - if (jj_3R_StatementInternal_971_3_69()) return true; + if (jj_3R_NotInCondition_2795_3_184()) return true; return false; } - private boolean jj_3_103() + private boolean jj_3R_ProfileStatement_4001_3_130() { - if (jj_3R_NotInCondition_2788_3_183()) return true; + if (jj_scan_token(PROFILE)) return true; + if (jj_3R_StatementInternal_978_3_70()) return true; return false; } - private boolean jj_3R_ConditionBlock_2458_3_370() + private boolean jj_3R_ConditionBlock_2465_3_371() { - if (jj_3R_ContainsCondition_2739_3_186()) return true; + if (jj_3R_ContainsCondition_2746_3_187()) return true; return false; } - private boolean jj_3R_FloatingPoint_920_5_216() + private boolean jj_3R_FloatingPoint_927_5_217() { if (jj_scan_token(MINUS)) return true; return false; @@ -22509,190 +22484,182 @@ private boolean jj_3R_FloatingPoint_920_5_216() private boolean jj_3_102() { - if (jj_3R_InCondition_2762_3_182()) return true; + if (jj_3R_InCondition_2769_3_183()) return true; return false; } - private boolean jj_3R_FloatingPoint_920_3_68() + private boolean jj_3R_FloatingPoint_927_3_69() { Token xsp; xsp = jj_scanpos; - if (jj_3R_FloatingPoint_920_5_216()) jj_scanpos = xsp; + if (jj_3R_FloatingPoint_927_5_217()) jj_scanpos = xsp; if (jj_scan_token(FLOATING_POINT_LITERAL)) return true; return false; } - private boolean jj_3R_ConditionBlock_2455_3_369() + private boolean jj_3R_ConditionBlock_2462_3_370() { - if (jj_3R_BetweenCondition_2702_3_185()) return true; + if (jj_3R_BetweenCondition_2709_3_186()) return true; return false; } private boolean jj_3_101() { - if (jj_3R_IsDefinedCondition_2725_3_181()) return true; + if (jj_3R_IsDefinedCondition_2732_3_182()) return true; return false; } - private boolean jj_3R_ConditionBlock_2452_3_368() + private boolean jj_3R_ConditionBlock_2459_3_369() { - if (jj_3R_BinaryCondition_2622_3_184()) return true; + if (jj_3R_BinaryCondition_2629_3_185()) return true; return false; } - private boolean jj_3_100() + private boolean jj_3R_ExplainStatement_3993_3_417() { - if (jj_3R_IsNotDefinedCondition_2732_3_180()) return true; + if (jj_scan_token(EXPLAIN)) return true; + if (jj_3R_StatementInternal_978_3_70()) return true; return false; } - private boolean jj_3R_AlterDatabaseStatement_3986_3_97() + private boolean jj_3_100() { - if (jj_scan_token(ALTER)) return true; - if (jj_scan_token(DATABASE)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_IsNotDefinedCondition_2739_3_181()) return true; return false; } - private boolean jj_3R_ConditionBlock_2449_3_367() + private boolean jj_3R_ConditionBlock_2456_3_368() { - if (jj_3R_NotInCondition_2788_3_183()) return true; + if (jj_3R_NotInCondition_2795_3_184()) return true; return false; } private boolean jj_3_99() { - if (jj_3R_IsNullCondition_2711_3_179()) return true; + if (jj_3R_IsNullCondition_2718_3_180()) return true; return false; } - private boolean jj_3R_DropBucketStatement_3979_5_629() + private boolean jj_3R_ConditionBlock_2453_3_367() { - if (jj_scan_token(IF)) return true; - if (jj_scan_token(EXISTS)) return true; + if (jj_3R_InCondition_2769_3_183()) return true; return false; } - private boolean jj_3R_ConditionBlock_2446_3_366() + private boolean jj_3_98() { - if (jj_3R_InCondition_2762_3_182()) return true; + if (jj_3R_IsNotNullCondition_2725_3_179()) return true; return false; } - private boolean jj_3_98() + private boolean jj_3R_PInteger_914_5_214() { - if (jj_3R_IsNotNullCondition_2718_3_178()) return true; + if (jj_scan_token(MINUS)) return true; return false; } - private boolean jj_3R_DropBucketStatement_3977_5_628() + private boolean jj_3R_ConditionBlock_2450_3_366() { - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_3R_IsDefinedCondition_2732_3_182()) return true; return false; } - private boolean jj_3R_PInteger_907_5_213() + private boolean jj_3R_PInteger_914_3_67() { - if (jj_scan_token(MINUS)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_PInteger_914_5_214()) jj_scanpos = xsp; + if (jj_scan_token(INTEGER_LITERAL)) return true; return false; } - private boolean jj_3R_ConditionBlock_2443_3_365() + private boolean jj_3R_AlterDatabaseStatement_3984_3_98() { - if (jj_3R_IsDefinedCondition_2725_3_181()) return true; + if (jj_scan_token(ALTER)) return true; + if (jj_scan_token(DATABASE)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_DropBucketStatement_3975_5_627() + private boolean jj_3R_ConditionBlock_2447_3_365() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_IsNotDefinedCondition_2739_3_181()) return true; return false; } - private boolean jj_3R_PInteger_907_3_66() + private boolean jj_3R_DropBucketStatement_3977_5_631() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_PInteger_907_5_213()) jj_scanpos = xsp; - if (jj_scan_token(INTEGER_LITERAL)) return true; + if (jj_scan_token(IF)) return true; + if (jj_scan_token(EXISTS)) return true; return false; } - private boolean jj_3R_ConditionBlock_2440_3_364() + private boolean jj_3R_ConditionBlock_2444_3_364() { - if (jj_3R_IsNotDefinedCondition_2732_3_180()) return true; + if (jj_3R_IsNullCondition_2718_3_180()) return true; return false; } - private boolean jj_3R_DropBucketStatement_3973_3_96() + private boolean jj_3R_DropBucketStatement_3975_5_630() { - if (jj_scan_token(DROP)) return true; - if (jj_scan_token(BUCKET)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_DropBucketStatement_3975_5_627()) { - jj_scanpos = xsp; - if (jj_3R_DropBucketStatement_3977_5_628()) return true; - } - xsp = jj_scanpos; - if (jj_3R_DropBucketStatement_3979_5_629()) jj_scanpos = xsp; + if (jj_3R_PInteger_914_3_67()) return true; return false; } - private boolean jj_3R_ConditionBlock_2437_3_363() + private boolean jj_3R_ConditionBlock_2441_3_363() { - if (jj_3R_IsNullCondition_2711_3_179()) return true; + if (jj_3R_IsNotNullCondition_2725_3_179()) return true; return false; } - private boolean jj_3R_ConditionBlock_2434_3_362() + private boolean jj_3R_DropBucketStatement_3973_5_629() { - if (jj_3R_IsNotNullCondition_2718_3_178()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_ConditionBlock_2433_1_176() + private boolean jj_3R_ConditionBlock_2440_1_177() { Token xsp; xsp = jj_scanpos; - if (jj_3R_ConditionBlock_2434_3_362()) { + if (jj_3R_ConditionBlock_2441_3_363()) { jj_scanpos = xsp; - if (jj_3R_ConditionBlock_2437_3_363()) { + if (jj_3R_ConditionBlock_2444_3_364()) { jj_scanpos = xsp; - if (jj_3R_ConditionBlock_2440_3_364()) { + if (jj_3R_ConditionBlock_2447_3_365()) { jj_scanpos = xsp; - if (jj_3R_ConditionBlock_2443_3_365()) { + if (jj_3R_ConditionBlock_2450_3_366()) { jj_scanpos = xsp; - if (jj_3R_ConditionBlock_2446_3_366()) { + if (jj_3R_ConditionBlock_2453_3_367()) { jj_scanpos = xsp; - if (jj_3R_ConditionBlock_2449_3_367()) { + if (jj_3R_ConditionBlock_2456_3_368()) { jj_scanpos = xsp; - if (jj_3R_ConditionBlock_2452_3_368()) { + if (jj_3R_ConditionBlock_2459_3_369()) { jj_scanpos = xsp; - if (jj_3R_ConditionBlock_2455_3_369()) { + if (jj_3R_ConditionBlock_2462_3_370()) { jj_scanpos = xsp; - if (jj_3R_ConditionBlock_2458_3_370()) { + if (jj_3R_ConditionBlock_2465_3_371()) { jj_scanpos = xsp; - if (jj_3R_ConditionBlock_2461_3_371()) { + if (jj_3R_ConditionBlock_2468_3_372()) { jj_scanpos = xsp; - if (jj_3R_ConditionBlock_2464_3_372()) { + if (jj_3R_ConditionBlock_2471_3_373()) { jj_scanpos = xsp; - if (jj_3R_ConditionBlock_2467_3_373()) { + if (jj_3R_ConditionBlock_2474_3_374()) { jj_scanpos = xsp; - if (jj_3R_ConditionBlock_2470_3_374()) { + if (jj_3R_ConditionBlock_2477_3_375()) { jj_scanpos = xsp; - if (jj_3R_ConditionBlock_2473_3_375()) { + if (jj_3R_ConditionBlock_2480_3_376()) { jj_scanpos = xsp; - if (jj_3R_ConditionBlock_2476_3_376()) { + if (jj_3R_ConditionBlock_2483_3_377()) { jj_scanpos = xsp; - if (jj_3R_ConditionBlock_2479_3_377()) { + if (jj_3R_ConditionBlock_2486_3_378()) { jj_scanpos = xsp; - if (jj_3R_ConditionBlock_2482_3_378()) { + if (jj_3R_ConditionBlock_2489_3_379()) { jj_scanpos = xsp; - if (jj_3R_ConditionBlock_2484_3_379()) { + if (jj_3R_ConditionBlock_2491_3_380()) { jj_scanpos = xsp; - if (jj_3R_ConditionBlock_2486_3_380()) return true; + if (jj_3R_ConditionBlock_2493_3_381()) return true; } } } @@ -22714,854 +22681,838 @@ private boolean jj_3R_ConditionBlock_2433_1_176() return false; } - private boolean jj_3R_AlterBucketStatement_3964_5_270() + private boolean jj_3_97() { - if (jj_scan_token(STAR)) return true; + if (jj_3R_ParenthesisBlock_2433_3_178()) return true; return false; } - private boolean jj_3_97() + private boolean jj_3R_DropBucketStatement_3971_3_97() { - if (jj_3R_ParenthesisBlock_2426_3_177()) return true; + if (jj_scan_token(DROP)) return true; + if (jj_scan_token(BUCKET)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_DropBucketStatement_3973_5_629()) { + jj_scanpos = xsp; + if (jj_3R_DropBucketStatement_3975_5_630()) return true; + } + xsp = jj_scanpos; + if (jj_3R_DropBucketStatement_3977_5_631()) jj_scanpos = xsp; return false; } private boolean jj_3_96() { - if (jj_3R_ConditionBlock_2433_1_176()) return true; + if (jj_3R_ConditionBlock_2440_1_177()) return true; return false; } - private boolean jj_3R_ParenthesisBlock_2426_3_177() + private boolean jj_3R_ParenthesisBlock_2433_3_178() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_OrBlock_2385_3_153()) return true; + if (jj_3R_OrBlock_2392_3_154()) return true; if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_AlterBucketStatement_3960_3_95() - { - if (jj_scan_token(ALTER)) return true; - if (jj_scan_token(BUCKET)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_AlterBucketStatement_3964_5_270()) jj_scanpos = xsp; - if (jj_3R_Identifier_726_1_140()) return true; - if (jj_3R_Expression_2037_3_131()) return true; - return false; - } - private boolean jj_3_95() { - if (jj_3R_ParenthesisBlock_2426_3_177()) return true; + if (jj_3R_ParenthesisBlock_2433_3_178()) return true; return false; } - private boolean jj_3R_CreateBucketStatement_3953_5_620() + private boolean jj_3R_AlterBucketStatement_3962_5_271() { - if (jj_scan_token(IF)) return true; - if (jj_scan_token(NOT)) return true; - if (jj_scan_token(EXISTS)) return true; + if (jj_scan_token(STAR)) return true; return false; } private boolean jj_3_94() { - if (jj_3R_ConditionBlock_2433_1_176()) return true; + if (jj_3R_ConditionBlock_2440_1_177()) return true; return false; } - private boolean jj_3R_NotBlock_2417_5_692() + private boolean jj_3R_NotBlock_2424_5_694() { - if (jj_3R_ParenthesisBlock_2426_3_177()) return true; + if (jj_3R_ParenthesisBlock_2433_3_178()) return true; return false; } - private boolean jj_3R_NotBlock_2414_5_691() + private boolean jj_3R_NotBlock_2421_5_693() { - if (jj_3R_ConditionBlock_2433_1_176()) return true; + if (jj_3R_ConditionBlock_2440_1_177()) return true; return false; } - private boolean jj_3R_CreateBucketStatement_3951_3_77() + private boolean jj_3R_AlterBucketStatement_3958_3_96() { - if (jj_scan_token(CREATE)) return true; + if (jj_scan_token(ALTER)) return true; if (jj_scan_token(BUCKET)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_CreateBucketStatement_3953_5_620()) jj_scanpos = xsp; + if (jj_3R_AlterBucketStatement_3962_5_271()) jj_scanpos = xsp; + if (jj_3R_Identifier_733_1_141()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_NotBlock_2413_3_567() + private boolean jj_3R_NotBlock_2420_3_568() { Token xsp; xsp = jj_scanpos; - if (jj_3R_NotBlock_2414_5_691()) { + if (jj_3R_NotBlock_2421_5_693()) { jj_scanpos = xsp; - if (jj_3R_NotBlock_2417_5_692()) return true; + if (jj_3R_NotBlock_2424_5_694()) return true; } return false; } - private boolean jj_3R_NotBlock_2408_7_690() + private boolean jj_3R_NotBlock_2415_7_692() { - if (jj_3R_ParenthesisBlock_2426_3_177()) return true; + if (jj_3R_ParenthesisBlock_2433_3_178()) return true; return false; } - private boolean jj_3R_DropIndexStatement_3943_5_626() + private boolean jj_3R_CreateBucketStatement_3951_5_621() { if (jj_scan_token(IF)) return true; + if (jj_scan_token(NOT)) return true; if (jj_scan_token(EXISTS)) return true; return false; } - private boolean jj_3R_NotBlock_2405_7_689() - { - if (jj_3R_ConditionBlock_2433_1_176()) return true; - return false; - } - - private boolean jj_3R_DropIndexStatement_3941_5_625() + private boolean jj_3R_NotBlock_2412_7_691() { - if (jj_scan_token(STAR)) return true; + if (jj_3R_ConditionBlock_2440_1_177()) return true; return false; } - private boolean jj_3R_DropIndexStatement_3939_5_624() + private boolean jj_3R_CreateBucketStatement_3949_3_78() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(CREATE)) return true; + if (jj_scan_token(BUCKET)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_CreateBucketStatement_3951_5_621()) jj_scanpos = xsp; return false; } - private boolean jj_3R_NotBlock_2402_3_566() + private boolean jj_3R_NotBlock_2409_3_567() { if (jj_scan_token(NOT)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_NotBlock_2405_7_689()) { + if (jj_3R_NotBlock_2412_7_691()) { jj_scanpos = xsp; - if (jj_3R_NotBlock_2408_7_690()) return true; + if (jj_3R_NotBlock_2415_7_692()) return true; } return false; } - private boolean jj_3R_DropIndexStatement_3937_3_94() + private boolean jj_3R_DropIndexStatement_3941_5_628() { - if (jj_scan_token(DROP)) return true; - if (jj_scan_token(INDEX)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_DropIndexStatement_3939_5_624()) { - jj_scanpos = xsp; - if (jj_3R_DropIndexStatement_3941_5_625()) return true; - } - xsp = jj_scanpos; - if (jj_3R_DropIndexStatement_3943_5_626()) jj_scanpos = xsp; + if (jj_scan_token(IF)) return true; + if (jj_scan_token(EXISTS)) return true; + return false; + } + + private boolean jj_3R_DropIndexStatement_3939_5_627() + { + if (jj_scan_token(STAR)) return true; return false; } - private boolean jj_3R_NotBlock_2401_1_466() + private boolean jj_3R_NotBlock_2408_1_467() { Token xsp; xsp = jj_scanpos; - if (jj_3R_NotBlock_2402_3_566()) { + if (jj_3R_NotBlock_2409_3_567()) { jj_scanpos = xsp; - if (jj_3R_NotBlock_2413_3_567()) return true; + if (jj_3R_NotBlock_2420_3_568()) return true; } return false; } - private boolean jj_3R_RebuildIndexStatement_3926_9_728() + private boolean jj_3R_DropIndexStatement_3937_5_626() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_Expression_2037_3_131()) return true; - if (jj_scan_token(EQ)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_AndBlock_2394_5_467() + private boolean jj_3R_AndBlock_2401_5_468() { if (jj_scan_token(AND)) return true; - if (jj_3R_NotBlock_2401_1_466()) return true; + if (jj_3R_NotBlock_2408_1_467()) return true; return false; } - private boolean jj_3R_AndBlock_2393_3_336() + private boolean jj_3R_AndBlock_2400_3_337() { - if (jj_3R_NotBlock_2401_1_466()) return true; + if (jj_3R_NotBlock_2408_1_467()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_AndBlock_2394_5_467()) { jj_scanpos = xsp; break; } + if (jj_3R_AndBlock_2401_5_468()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_RebuildIndexStatement_3923_7_623() + private boolean jj_3R_DropIndexStatement_3935_3_95() { - if (jj_scan_token(WITH)) return true; - if (jj_3R_Expression_2037_3_131()) return true; - if (jj_scan_token(EQ)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_scan_token(DROP)) return true; + if (jj_scan_token(INDEX)) return true; Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_RebuildIndexStatement_3926_9_728()) { jj_scanpos = xsp; break; } + xsp = jj_scanpos; + if (jj_3R_DropIndexStatement_3937_5_626()) { + jj_scanpos = xsp; + if (jj_3R_DropIndexStatement_3939_5_627()) return true; } + xsp = jj_scanpos; + if (jj_3R_DropIndexStatement_3941_5_628()) jj_scanpos = xsp; return false; } - private boolean jj_3R_RebuildIndexStatement_3920_7_622() - { - if (jj_scan_token(STAR)) return true; - return false; - } - - private boolean jj_3R_OrBlock_2386_5_337() + private boolean jj_3R_OrBlock_2393_5_338() { if (jj_scan_token(OR)) return true; - if (jj_3R_AndBlock_2393_3_336()) return true; + if (jj_3R_AndBlock_2400_3_337()) return true; return false; } - private boolean jj_3R_RebuildIndexStatement_3918_7_621() + private boolean jj_3R_RebuildIndexStatement_3925_7_731() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + if (jj_scan_token(EQ)) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_OrBlock_2385_3_153() + private boolean jj_3R_OrBlock_2392_3_154() { - if (jj_3R_AndBlock_2393_3_336()) return true; + if (jj_3R_AndBlock_2400_3_337()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_OrBlock_2386_5_337()) { jj_scanpos = xsp; break; } + if (jj_3R_OrBlock_2393_5_338()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_RebuildIndexStatement_3915_3_272() + private boolean jj_3R_RebuildIndexStatement_3922_5_625() { - if (jj_scan_token(REBUILD)) return true; - if (jj_scan_token(INDEX)) return true; + if (jj_scan_token(WITH)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + if (jj_scan_token(EQ)) return true; + if (jj_3R_Expression_2044_3_132()) return true; Token xsp; - xsp = jj_scanpos; - if (jj_3R_RebuildIndexStatement_3918_7_621()) { - jj_scanpos = xsp; - if (jj_3R_RebuildIndexStatement_3920_7_622()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3R_RebuildIndexStatement_3925_7_731()) { jj_scanpos = xsp; break; } } - xsp = jj_scanpos; - if (jj_3R_RebuildIndexStatement_3923_7_623()) jj_scanpos = xsp; return false; } - private boolean jj_3R_WhereClause_2378_3_158() + private boolean jj_3R_RebuildIndexStatement_3916_9_730() { - if (jj_3R_OrBlock_2385_3_153()) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + if (jj_scan_token(EQ)) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3905_9_727() + private boolean jj_3R_WhereClause_2385_3_159() { - if (jj_scan_token(ERROR2)) return true; + if (jj_3R_OrBlock_2392_3_154()) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3903_9_726() + private boolean jj_3R_RebuildIndexStatement_3913_7_624() { - if (jj_scan_token(SKIP2)) return true; + if (jj_scan_token(WITH)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + if (jj_scan_token(EQ)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_RebuildIndexStatement_3916_9_730()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_CreateIndexStatement_3896_13_835() + private boolean jj_3R_RebuildIndexStatement_3910_7_623() { - if (jj_scan_token(SCHEMA)) return true; - if (jj_3R_Json_3078_3_211()) return true; + if (jj_scan_token(STAR)) return true; return false; } - private boolean jj_3R_IndexIdentifier_2365_9_492() + private boolean jj_3R_IndexIdentifier_2372_9_493() { if (jj_scan_token(INDEXVALUESDESC_IDENTIFIER)) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3901_7_619() - { - if (jj_scan_token(NULL_STRATEGY)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_CreateIndexStatement_3903_9_726()) { - jj_scanpos = xsp; - if (jj_3R_CreateIndexStatement_3905_9_727()) return true; - } - return false; - } - - private boolean jj_3R_CreateIndexStatement_3894_13_834() + private boolean jj_3R_RebuildIndexStatement_3908_7_622() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_IndexIdentifier_2363_9_491() + private boolean jj_3R_IndexIdentifier_2370_9_492() { if (jj_scan_token(INDEXVALUESASC_IDENTIFIER)) return true; return false; } - private boolean jj_3R_IndexIdentifier_2361_9_490() + private boolean jj_3R_IndexIdentifier_2368_9_491() { if (jj_scan_token(INDEXVALUES_IDENTIFIER)) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3891_9_802() + private boolean jj_3R_RebuildIndexStatement_3905_3_273() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(REBUILD)) return true; + if (jj_scan_token(INDEX)) return true; Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_CreateIndexStatement_3894_13_834()) { jj_scanpos = xsp; break; } + xsp = jj_scanpos; + if (jj_3R_RebuildIndexStatement_3908_7_622()) { + jj_scanpos = xsp; + if (jj_3R_RebuildIndexStatement_3910_7_623()) return true; } xsp = jj_scanpos; - if (jj_3R_CreateIndexStatement_3896_13_835()) jj_scanpos = xsp; + if (jj_3R_RebuildIndexStatement_3913_7_624()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_RebuildIndexStatement_3922_5_625()) jj_scanpos = xsp; return false; } - private boolean jj_3R_IndexIdentifier_2359_5_361() + private boolean jj_3R_IndexIdentifier_2366_5_362() { Token xsp; xsp = jj_scanpos; - if (jj_3R_IndexIdentifier_2361_9_490()) { + if (jj_3R_IndexIdentifier_2368_9_491()) { jj_scanpos = xsp; - if (jj_3R_IndexIdentifier_2363_9_491()) { + if (jj_3R_IndexIdentifier_2370_9_492()) { jj_scanpos = xsp; - if (jj_3R_IndexIdentifier_2365_9_492()) return true; + if (jj_3R_IndexIdentifier_2372_9_493()) return true; } } return false; } - private boolean jj_3R_CreateIndexStatement_3886_9_725() - { - Token xsp; - xsp = jj_scanpos; - if (jj_3_143()) { - jj_scanpos = xsp; - if (jj_3R_CreateIndexStatement_3891_9_802()) return true; - } - return false; - } - - private boolean jj_3_143() + private boolean jj_3R_CreateIndexStatement_3895_9_729() { - if (jj_scan_token(SCHEMA)) return true; - if (jj_3R_Json_3078_3_211()) return true; + if (jj_scan_token(ERROR2)) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3881_13_833() + private boolean jj_3R_CreateIndexStatement_3893_9_728() { - if (jj_scan_token(SCHEMA)) return true; - if (jj_3R_Json_3078_3_211()) return true; + if (jj_scan_token(SKIP2)) return true; return false; } - private boolean jj_3R_IndexIdentifier_2354_5_360() + private boolean jj_3R_IndexIdentifier_2361_5_361() { if (jj_scan_token(INDEX_COLON)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3879_13_832() + private boolean jj_3R_CreateIndexStatement_3886_13_839() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(METADATA)) return true; + if (jj_3R_Json_3076_3_212()) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3885_7_618() + private boolean jj_3R_CreateIndexStatement_3891_7_620() { + if (jj_scan_token(NULL_STRATEGY)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_CreateIndexStatement_3886_9_725()) jj_scanpos = xsp; + if (jj_3R_CreateIndexStatement_3893_9_728()) { + jj_scanpos = xsp; + if (jj_3R_CreateIndexStatement_3895_9_729()) return true; + } return false; } - private boolean jj_3R_IndexIdentifier_2353_3_175() + private boolean jj_3R_IndexIdentifier_2360_3_176() { Token xsp; xsp = jj_scanpos; - if (jj_3R_IndexIdentifier_2354_5_360()) { + if (jj_3R_IndexIdentifier_2361_5_361()) { jj_scanpos = xsp; - if (jj_3R_IndexIdentifier_2359_5_361()) return true; + if (jj_3R_IndexIdentifier_2366_5_362()) return true; } return false; } - private boolean jj_3R_CreateIndexStatement_3876_9_801() + private boolean jj_3R_CreateIndexStatement_3884_13_838() + { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + return false; + } + + private boolean jj_3R_CreateIndexStatement_3881_9_805() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_CreateIndexStatement_3879_13_832()) { jj_scanpos = xsp; break; } + if (jj_3R_CreateIndexStatement_3884_13_838()) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3R_CreateIndexStatement_3881_13_833()) jj_scanpos = xsp; + if (jj_3R_CreateIndexStatement_3886_13_839()) jj_scanpos = xsp; return false; } - private boolean jj_3R_SchemaIdentifier_2344_3_648() + private boolean jj_3R_SchemaIdentifier_2351_3_650() { if (jj_scan_token(SCHEMA_IDENTIFIER)) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3871_9_724() + private boolean jj_3R_CreateIndexStatement_3876_9_727() { Token xsp; xsp = jj_scanpos; - if (jj_3_142()) { + if (jj_3_143()) { jj_scanpos = xsp; - if (jj_3R_CreateIndexStatement_3876_9_801()) return true; + if (jj_3R_CreateIndexStatement_3881_9_805()) return true; } return false; } - private boolean jj_3_142() + private boolean jj_3_143() + { + if (jj_scan_token(METADATA)) return true; + if (jj_3R_Json_3076_3_212()) return true; + return false; + } + + private boolean jj_3R_CreateIndexStatement_3871_13_837() { - if (jj_scan_token(SCHEMA)) return true; - if (jj_3R_Json_3078_3_211()) return true; + if (jj_scan_token(METADATA)) return true; + if (jj_3R_Json_3076_3_212()) return true; return false; } - private boolean jj_3R_BucketList_2335_6_811() + private boolean jj_3R_BucketList_2342_6_815() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3_144() + private boolean jj_3R_CreateIndexStatement_3869_13_836() { - if (jj_scan_token(ENGINE)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_CreateIndexStatement_3871_9_724()) jj_scanpos = xsp; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3865_9_617() + private boolean jj_3R_CreateIndexStatement_3875_7_619() { - if (jj_3R_Identifier_726_1_140()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_CreateIndexStatement_3876_9_727()) jj_scanpos = xsp; return false; } - private boolean jj_3R_BucketList_2334_4_743() + private boolean jj_3R_BucketList_2341_4_746() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_BucketList_2335_6_811()) { jj_scanpos = xsp; break; } + if (jj_3R_BucketList_2342_6_815()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_BucketList_2332_3_647() + private boolean jj_3R_BucketList_2339_3_649() { if (jj_scan_token(BUCKET)) return true; if (jj_scan_token(COLON)) return true; if (jj_scan_token(LBRACKET)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_BucketList_2334_4_743()) jj_scanpos = xsp; + if (jj_3R_BucketList_2341_4_746()) jj_scanpos = xsp; if (jj_scan_token(RBRACKET)) return true; return false; } - private boolean jj_3_141() + private boolean jj_3R_CreateIndexStatement_3866_9_804() { - if (jj_scan_token(IF)) return true; - if (jj_scan_token(NOT)) return true; - if (jj_scan_token(EXISTS)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_CreateIndexStatement_3869_13_836()) { jj_scanpos = xsp; break; } + } + xsp = jj_scanpos; + if (jj_3R_CreateIndexStatement_3871_13_837()) jj_scanpos = xsp; return false; } - private boolean jj_3_90() + private boolean jj_3R_CreateIndexStatement_3861_9_726() { - if (jj_3R_Modifier_2002_3_156()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_142()) { + jj_scanpos = xsp; + if (jj_3R_CreateIndexStatement_3866_9_804()) return true; + } return false; } - private boolean jj_3R_Bucket_2323_5_314() + private boolean jj_3_90() { - if (jj_scan_token(BUCKET_NUMBER_IDENTIFIER)) return true; + if (jj_3R_Modifier_2009_3_157()) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3847_15_831() + private boolean jj_3R_Bucket_2330_5_315() { - if (jj_scan_token(VALUE)) return true; + if (jj_scan_token(BUCKET_NUMBER_IDENTIFIER)) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3854_7_616() + private boolean jj_3_142() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(METADATA)) return true; + if (jj_3R_Json_3076_3_212()) return true; return false; } - private boolean jj_3R_Bucket_2321_5_313() + private boolean jj_3R_Bucket_2328_5_314() { if (jj_scan_token(BUCKET_IDENTIFIER)) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3845_15_830() - { - if (jj_scan_token(KEY)) return true; - return false; - } - - private boolean jj_3R_Bucket_2320_3_142() + private boolean jj_3R_Bucket_2327_3_143() { Token xsp; xsp = jj_scanpos; - if (jj_3R_Bucket_2321_5_313()) { + if (jj_3R_Bucket_2328_5_314()) { jj_scanpos = xsp; - if (jj_3R_Bucket_2323_5_314()) return true; + if (jj_3R_Bucket_2330_5_315()) return true; } return false; } - private boolean jj_3R_CreateIndexStatement_3843_13_800() + private boolean jj_3_144() { - if (jj_scan_token(BY)) return true; + if (jj_scan_token(ENGINE)) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_CreateIndexStatement_3845_15_830()) { - jj_scanpos = xsp; - if (jj_3R_CreateIndexStatement_3847_15_831()) return true; - } + if (jj_3R_CreateIndexStatement_3861_9_726()) jj_scanpos = xsp; + return false; + } + + private boolean jj_3R_CreateIndexStatement_3855_9_618() + { + if (jj_3R_Identifier_733_1_141()) return true; return false; } private boolean jj_3_89() { - if (jj_3R_Modifier_2002_3_156()) return true; + if (jj_3R_Modifier_2009_3_157()) return true; return false; } - private boolean jj_3R_FromItem_2308_9_651() + private boolean jj_3R_FromItem_2315_9_653() { - if (jj_3R_Modifier_2002_3_156()) return true; + if (jj_3R_Modifier_2009_3_157()) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3836_13_414() + private boolean jj_3_141() { - if (jj_3R_RecordAttribute_1920_3_148()) return true; + if (jj_scan_token(IF)) return true; + if (jj_scan_token(NOT)) return true; + if (jj_scan_token(EXISTS)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } private boolean jj_3_88() { - if (jj_3R_Modifier_2002_3_156()) return true; + if (jj_3R_Modifier_2009_3_157()) return true; + return false; + } + + private boolean jj_3R_CreateIndexStatement_3837_15_835() + { + if (jj_scan_token(VALUE)) return true; return false; } - private boolean jj_3R_FromItem_2305_5_530() + private boolean jj_3R_FromItem_2312_5_531() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_FromItem_2308_9_651()) jj_scanpos = xsp; + if (jj_3R_FromItem_2315_9_653()) jj_scanpos = xsp; return false; } - private boolean jj_3R_FromItem_2301_7_650() + private boolean jj_3R_CreateIndexStatement_3844_7_617() { - if (jj_3R_Modifier_2002_3_156()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3830_13_413() + private boolean jj_3R_CreateIndexStatement_3835_15_834() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(KEY)) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3828_11_210() + private boolean jj_3R_FromItem_2308_7_652() { - if (jj_scan_token(COMMA)) return true; + if (jj_3R_Modifier_2009_3_157()) return true; + return false; + } + + private boolean jj_3R_CreateIndexStatement_3833_13_803() + { + if (jj_scan_token(BY)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_CreateIndexStatement_3830_13_413()) { + if (jj_3R_CreateIndexStatement_3835_15_834()) { jj_scanpos = xsp; - if (jj_3R_CreateIndexStatement_3836_13_414()) return true; + if (jj_3R_CreateIndexStatement_3837_15_835()) return true; } - xsp = jj_scanpos; - if (jj_3R_CreateIndexStatement_3843_13_800()) jj_scanpos = xsp; return false; } private boolean jj_3_93() { - if (jj_3R_FunctionCall_1929_3_146()) return true; + if (jj_3R_FunctionCall_1936_3_147()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_FromItem_2301_7_650()) jj_scanpos = xsp; + if (jj_3R_FromItem_2308_7_652()) jj_scanpos = xsp; return false; } - private boolean jj_3R_CreateIndexStatement_3824_13_412() + private boolean jj_3R_FromItem_2303_5_530() { - if (jj_scan_token(VALUE)) return true; + if (jj_3R_InputParameter_1717_3_146()) return true; return false; } - private boolean jj_3R_FromItem_2296_5_529() + private boolean jj_3R_FromItem_2298_9_651() { - if (jj_3R_InputParameter_1710_3_145()) return true; + if (jj_3R_Modifier_2009_3_157()) return true; return false; } - private boolean jj_3R_FromItem_2291_9_649() + private boolean jj_3_92() { - if (jj_3R_Modifier_2002_3_156()) return true; + if (jj_3R_IndexIdentifier_2360_3_176()) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3822_13_411() + private boolean jj_3R_CreateIndexStatement_3826_13_415() { - if (jj_scan_token(KEY)) return true; + if (jj_3R_RecordAttribute_1927_3_149()) return true; return false; } - private boolean jj_3_92() + private boolean jj_3R_FromItem_2295_5_529() { - if (jj_3R_IndexIdentifier_2353_3_175()) return true; + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_QueryStatement_1113_3_175()) return true; + if (jj_scan_token(RPAREN)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_FromItem_2298_9_651()) jj_scanpos = xsp; return false; } - private boolean jj_3R_CreateIndexStatement_3820_11_209() + private boolean jj_3R_FromItem_2293_5_528() { - if (jj_scan_token(BY)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_CreateIndexStatement_3822_13_411()) { - jj_scanpos = xsp; - if (jj_3R_CreateIndexStatement_3824_13_412()) return true; - } + if (jj_3R_SchemaIdentifier_2351_3_650()) return true; return false; } - private boolean jj_3R_FromItem_2288_5_528() + private boolean jj_3R_CreateIndexStatement_3820_13_414() { - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_QueryStatement_1106_3_174()) return true; - if (jj_scan_token(RPAREN)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_FromItem_2291_9_649()) jj_scanpos = xsp; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_FromItem_2286_5_527() + private boolean jj_3R_LetClause_2231_65_547() { - if (jj_3R_SchemaIdentifier_2344_3_648()) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_LetItem_2238_3_546()) return true; return false; } - private boolean jj_3R_LetClause_2224_65_546() + private boolean jj_3R_FromItem_2290_5_527() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_LetItem_2231_3_545()) return true; + if (jj_3R_IndexIdentifier_2360_3_176()) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3813_11_208() + private boolean jj_3R_CreateIndexStatement_3818_11_211() { - if (jj_3R_RecordAttribute_1920_3_148()) return true; + if (jj_scan_token(COMMA)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_CreateIndexStatement_3820_13_414()) { + jj_scanpos = xsp; + if (jj_3R_CreateIndexStatement_3826_13_415()) return true; + } + xsp = jj_scanpos; + if (jj_3R_CreateIndexStatement_3833_13_803()) jj_scanpos = xsp; return false; } - private boolean jj_3R_FromItem_2283_5_526() + private boolean jj_3R_FromItem_2288_5_526() { - if (jj_3R_IndexIdentifier_2353_3_175()) return true; + if (jj_3R_BucketList_2339_3_649()) return true; return false; } - private boolean jj_3R_FromItem_2281_5_525() + private boolean jj_3R_CreateIndexStatement_3814_13_413() { - if (jj_3R_BucketList_2332_3_647()) return true; + if (jj_scan_token(VALUE)) return true; return false; } - private boolean jj_3R_FromItem_2275_9_742() + private boolean jj_3R_FromItem_2282_9_745() { - if (jj_3R_NamedParameter_1735_3_459()) return true; + if (jj_3R_NamedParameter_1742_3_460()) return true; return false; } - private boolean jj_3R_FromItem_2279_5_524() + private boolean jj_3R_FromItem_2286_5_525() { - if (jj_3R_Bucket_2320_3_142()) return true; + if (jj_3R_Bucket_2327_3_143()) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3807_11_207() + private boolean jj_3R_CreateIndexStatement_3812_13_412() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(KEY)) return true; return false; } - private boolean jj_3R_FromItem_2272_9_741() + private boolean jj_3R_FromItem_2279_9_744() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_PositionalParameter_1721_3_458()) return true; + if (jj_3R_PositionalParameter_1728_3_459()) return true; return false; } - private boolean jj_3R_FromItem_2272_9_646() + private boolean jj_3R_FromItem_2279_9_648() { Token xsp; xsp = jj_scanpos; - if (jj_3R_FromItem_2272_9_741()) { + if (jj_3R_FromItem_2279_9_744()) { jj_scanpos = xsp; - if (jj_3R_FromItem_2275_9_742()) return true; + if (jj_3R_FromItem_2282_9_745()) return true; } return false; } - private boolean jj_3R_FromItem_2269_9_645() + private boolean jj_3R_CreateIndexStatement_3810_11_210() { - if (jj_3R_NamedParameter_1735_3_459()) return true; + if (jj_scan_token(BY)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_CreateIndexStatement_3812_13_412()) { + jj_scanpos = xsp; + if (jj_3R_CreateIndexStatement_3814_13_413()) return true; + } return false; } - private boolean jj_3R_CreateIndexStatement_3802_10_206() + private boolean jj_3R_FromItem_2276_9_647() { - if (jj_scan_token(IF)) return true; - if (jj_scan_token(NOT)) return true; - if (jj_scan_token(EXISTS)) return true; + if (jj_3R_NamedParameter_1742_3_460()) return true; return false; } - private boolean jj_3R_FromItem_2267_9_644() + private boolean jj_3R_FromItem_2274_9_646() { - if (jj_3R_PositionalParameter_1721_3_458()) return true; + if (jj_3R_PositionalParameter_1728_3_459()) return true; return false; } - private boolean jj_3_140() + private boolean jj_3R_CreateIndexStatement_3803_11_209() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_CreateIndexStatement_3802_10_206()) jj_scanpos = xsp; - if (jj_scan_token(ON)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - if (jj_scan_token(LPAREN)) return true; - xsp = jj_scanpos; - if (jj_3R_CreateIndexStatement_3807_11_207()) { - jj_scanpos = xsp; - if (jj_3R_CreateIndexStatement_3813_11_208()) return true; - } - xsp = jj_scanpos; - if (jj_3R_CreateIndexStatement_3820_11_209()) jj_scanpos = xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_CreateIndexStatement_3828_11_210()) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(RPAREN)) return true; + if (jj_3R_RecordAttribute_1927_3_149()) return true; return false; } - private boolean jj_3R_FromItem_2264_5_523() + private boolean jj_3R_FromItem_2271_5_524() { if (jj_scan_token(LBRACKET)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_FromItem_2267_9_644()) { + if (jj_3R_FromItem_2274_9_646()) { jj_scanpos = xsp; - if (jj_3R_FromItem_2269_9_645()) return true; + if (jj_3R_FromItem_2276_9_647()) return true; } while (true) { xsp = jj_scanpos; - if (jj_3R_FromItem_2272_9_646()) { jj_scanpos = xsp; break; } + if (jj_3R_FromItem_2279_9_648()) { jj_scanpos = xsp; break; } } if (jj_scan_token(RBRACKET)) return true; return false; } - private boolean jj_3R_FromItem_2261_7_643() + private boolean jj_3R_FromItem_2268_7_645() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_Rid_624_3_144()) return true; + if (jj_3R_Rid_631_3_145()) return true; return false; } - private boolean jj_3R_CreateIndexStatement_3797_3_76() + private boolean jj_3R_CreateIndexStatement_3797_11_208() { - if (jj_scan_token(CREATE)) return true; - if (jj_scan_token(INDEX)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_140()) { - jj_scanpos = xsp; - if (jj_3R_CreateIndexStatement_3854_7_616()) return true; - } - xsp = jj_scanpos; - if (jj_3_141()) { - jj_scanpos = xsp; - if (jj_3R_CreateIndexStatement_3865_9_617()) return true; - } - xsp = jj_scanpos; - if (jj_3_144()) { - jj_scanpos = xsp; - if (jj_3R_CreateIndexStatement_3885_7_618()) return true; - } - xsp = jj_scanpos; - if (jj_3R_CreateIndexStatement_3901_7_619()) jj_scanpos = xsp; + if (jj_3R_Identifier_733_1_141()) return true; return false; } private boolean jj_3_91() { if (jj_scan_token(LBRACKET)) return true; - if (jj_3R_Rid_624_3_144()) return true; + if (jj_3R_Rid_631_3_145()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_FromItem_2261_7_643()) { jj_scanpos = xsp; break; } + if (jj_3R_FromItem_2268_7_645()) { jj_scanpos = xsp; break; } } if (jj_scan_token(RBRACKET)) return true; return false; } - private boolean jj_3R_Identifier_726_1_140() + private boolean jj_3R_Identifier_733_1_141() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(235)) { + if (jj_scan_token(236)) { jj_scanpos = xsp; if (jj_scan_token(12)) { jj_scanpos = xsp; - if (jj_scan_token(220)) { + if (jj_scan_token(221)) { jj_scanpos = xsp; if (jj_scan_token(32)) { jj_scanpos = xsp; @@ -23575,7 +23526,7 @@ private boolean jj_3R_Identifier_726_1_140() jj_scanpos = xsp; if (jj_scan_token(36)) { jj_scanpos = xsp; - if (jj_scan_token(232)) { + if (jj_scan_token(233)) { jj_scanpos = xsp; if (jj_scan_token(50)) { jj_scanpos = xsp; @@ -23637,8 +23588,6 @@ private boolean jj_3R_Identifier_726_1_140() jj_scanpos = xsp; if (jj_scan_token(93)) { jj_scanpos = xsp; - if (jj_scan_token(94)) { - jj_scanpos = xsp; if (jj_scan_token(95)) { jj_scanpos = xsp; if (jj_scan_token(97)) { @@ -23647,7 +23596,7 @@ private boolean jj_3R_Identifier_726_1_140() jj_scanpos = xsp; if (jj_scan_token(99)) { jj_scanpos = xsp; - if (jj_scan_token(101)) { + if (jj_scan_token(100)) { jj_scanpos = xsp; if (jj_scan_token(102)) { jj_scanpos = xsp; @@ -23675,12 +23624,12 @@ private boolean jj_3R_Identifier_726_1_140() jj_scanpos = xsp; if (jj_scan_token(114)) { jj_scanpos = xsp; - if (jj_scan_token(116)) { - jj_scanpos = xsp; if (jj_scan_token(115)) { jj_scanpos = xsp; if (jj_scan_token(117)) { jj_scanpos = xsp; + if (jj_scan_token(116)) { + jj_scanpos = xsp; if (jj_scan_token(118)) { jj_scanpos = xsp; if (jj_scan_token(119)) { @@ -23693,7 +23642,7 @@ private boolean jj_3R_Identifier_726_1_140() jj_scanpos = xsp; if (jj_scan_token(123)) { jj_scanpos = xsp; - if (jj_scan_token(125)) { + if (jj_scan_token(124)) { jj_scanpos = xsp; if (jj_scan_token(126)) { jj_scanpos = xsp; @@ -23705,9 +23654,9 @@ private boolean jj_3R_Identifier_726_1_140() jj_scanpos = xsp; if (jj_scan_token(130)) { jj_scanpos = xsp; - if (jj_scan_token(132)) { + if (jj_scan_token(131)) { jj_scanpos = xsp; - if (jj_scan_token(134)) { + if (jj_scan_token(133)) { jj_scanpos = xsp; if (jj_scan_token(135)) { jj_scanpos = xsp; @@ -23719,7 +23668,9 @@ private boolean jj_3R_Identifier_726_1_140() jj_scanpos = xsp; if (jj_scan_token(139)) { jj_scanpos = xsp; - if (jj_scan_token(236)) return true; + if (jj_scan_token(140)) { + jj_scanpos = xsp; + if (jj_scan_token(237)) return true; } } } @@ -23804,37 +23755,45 @@ private boolean jj_3R_Identifier_726_1_140() return false; } - private boolean jj_3R_FromItem_2256_5_522() + private boolean jj_3R_FromItem_2263_5_523() + { + if (jj_3R_Rid_631_3_145()) return true; + return false; + } + + private boolean jj_3R_CreateIndexStatement_3792_10_207() { - if (jj_3R_Rid_624_3_144()) return true; + if (jj_scan_token(IF)) return true; + if (jj_scan_token(NOT)) return true; + if (jj_scan_token(EXISTS)) return true; return false; } - private boolean jj_3R_FromItem_2255_3_423() + private boolean jj_3R_FromItem_2262_3_424() { Token xsp; xsp = jj_scanpos; - if (jj_3R_FromItem_2256_5_522()) { + if (jj_3R_FromItem_2263_5_523()) { jj_scanpos = xsp; if (jj_3_91()) { jj_scanpos = xsp; - if (jj_3R_FromItem_2264_5_523()) { + if (jj_3R_FromItem_2271_5_524()) { jj_scanpos = xsp; - if (jj_3R_FromItem_2279_5_524()) { + if (jj_3R_FromItem_2286_5_525()) { jj_scanpos = xsp; - if (jj_3R_FromItem_2281_5_525()) { + if (jj_3R_FromItem_2288_5_526()) { jj_scanpos = xsp; - if (jj_3R_FromItem_2283_5_526()) { + if (jj_3R_FromItem_2290_5_527()) { jj_scanpos = xsp; - if (jj_3R_FromItem_2286_5_527()) { + if (jj_3R_FromItem_2293_5_528()) { jj_scanpos = xsp; - if (jj_3R_FromItem_2288_5_528()) { + if (jj_3R_FromItem_2295_5_529()) { jj_scanpos = xsp; - if (jj_3R_FromItem_2296_5_529()) { + if (jj_3R_FromItem_2303_5_530()) { jj_scanpos = xsp; if (jj_3_93()) { jj_scanpos = xsp; - if (jj_3R_FromItem_2305_5_530()) return true; + if (jj_3R_FromItem_2312_5_531()) return true; } } } @@ -23848,339 +23807,352 @@ private boolean jj_3R_FromItem_2255_3_423() return false; } - private boolean jj_3R_DropPropertyStatement_3786_5_269() - { - if (jj_scan_token(FORCE)) return true; - return false; - } - - private boolean jj_3R_DropPropertyStatement_3785_5_268() + private boolean jj_3_140() { - if (jj_scan_token(IF)) return true; - if (jj_scan_token(EXISTS)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_CreateIndexStatement_3792_10_207()) jj_scanpos = xsp; + if (jj_scan_token(ON)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + if (jj_scan_token(LPAREN)) return true; + xsp = jj_scanpos; + if (jj_3R_CreateIndexStatement_3797_11_208()) { + jj_scanpos = xsp; + if (jj_3R_CreateIndexStatement_3803_11_209()) return true; + } + xsp = jj_scanpos; + if (jj_3R_CreateIndexStatement_3810_11_210()) jj_scanpos = xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_CreateIndexStatement_3818_11_211()) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_PString_712_3_248() + private boolean jj_3R_PString_719_3_249() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(160)) { + if (jj_scan_token(161)) { jj_scanpos = xsp; - if (jj_scan_token(143)) return true; + if (jj_scan_token(144)) return true; } return false; } private boolean jj_3_87() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_DropPropertyStatement_3781_3_93() + private boolean jj_3R_CreateIndexStatement_3787_3_77() { - if (jj_scan_token(DROP)) return true; - if (jj_scan_token(PROPERTY)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - if (jj_scan_token(DOT)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(CREATE)) return true; + if (jj_scan_token(INDEX)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_DropPropertyStatement_3785_5_268()) jj_scanpos = xsp; + if (jj_3_140()) { + jj_scanpos = xsp; + if (jj_3R_CreateIndexStatement_3844_7_617()) return true; + } + xsp = jj_scanpos; + if (jj_3_141()) { + jj_scanpos = xsp; + if (jj_3R_CreateIndexStatement_3855_9_618()) return true; + } + xsp = jj_scanpos; + if (jj_3_144()) { + jj_scanpos = xsp; + if (jj_3R_CreateIndexStatement_3875_7_619()) return true; + } xsp = jj_scanpos; - if (jj_3R_DropPropertyStatement_3786_5_269()) jj_scanpos = xsp; + if (jj_3R_CreateIndexStatement_3891_7_620()) jj_scanpos = xsp; return false; } - private boolean jj_3R_LetItem_2236_5_669() + private boolean jj_3R_LetItem_2243_5_671() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_QueryStatement_1106_3_174()) return true; + if (jj_3R_QueryStatement_1113_3_175()) return true; if (jj_scan_token(RPAREN)) return true; return false; } private boolean jj_3_3() { - if (jj_3R_StatementSemicolon_948_3_67()) return true; + if (jj_3R_StatementSemicolon_955_3_68()) return true; + return false; + } + + private boolean jj_3R_DropPropertyStatement_3776_5_270() + { + if (jj_scan_token(FORCE)) return true; return false; } - private boolean jj_3R_AlterPropertyStatement_3770_5_267() + private boolean jj_3R_LetItem_2240_5_670() { - if (jj_3R_Identifier_726_1_140()) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_LetItem_2233_5_668() + private boolean jj_3R_DropPropertyStatement_3775_5_269() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_scan_token(IF)) return true; + if (jj_scan_token(EXISTS)) return true; return false; } - private boolean jj_3R_LetItem_2231_3_545() + private boolean jj_3R_LetItem_2238_3_546() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; if (jj_scan_token(EQ)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_LetItem_2233_5_668()) { + if (jj_3R_LetItem_2240_5_670()) { jj_scanpos = xsp; - if (jj_3R_LetItem_2236_5_669()) return true; + if (jj_3R_LetItem_2243_5_671()) return true; } return false; } - private boolean jj_3_139() + private boolean jj_3R_DropPropertyStatement_3771_3_94() { - if (jj_scan_token(CUSTOM)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - if (jj_scan_token(EQ)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_scan_token(DROP)) return true; + if (jj_scan_token(PROPERTY)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + if (jj_scan_token(DOT)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_DropPropertyStatement_3775_5_269()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_DropPropertyStatement_3776_5_270()) jj_scanpos = xsp; return false; } - private boolean jj_3R_LetClause_2224_3_444() + private boolean jj_3R_LetClause_2231_3_445() { if (jj_scan_token(LET)) return true; - if (jj_3R_LetItem_2231_3_545()) return true; + if (jj_3R_LetItem_2238_3_546()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_LetClause_2224_65_546()) { jj_scanpos = xsp; break; } + if (jj_3R_LetClause_2231_65_547()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_AlterPropertyStatement_3757_3_92() + private boolean jj_3R_AlterPropertyStatement_3760_5_268() { - if (jj_scan_token(ALTER)) return true; - if (jj_scan_token(PROPERTY)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - if (jj_scan_token(DOT)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_139()) { - jj_scanpos = xsp; - if (jj_3R_AlterPropertyStatement_3770_5_267()) return true; - } + if (jj_3R_Identifier_733_1_141()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } private boolean jj_3_86() { - if (jj_3R_Modifier_2002_3_156()) return true; - return false; - } - - private boolean jj_3R_FromClause_2215_3_235() - { - if (jj_3R_FromItem_2255_3_423()) return true; + if (jj_3R_Modifier_2009_3_157()) return true; return false; } - private boolean jj_3R_CreatePropertyAttributeStatement_3746_6_799() + private boolean jj_3R_FromClause_2222_3_236() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_FromItem_2262_3_424()) return true; return false; } - private boolean jj_3R_CreatePropertyAttributeStatement_3744_3_722() + private boolean jj_3_139() { - if (jj_3R_Identifier_726_1_140()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_CreatePropertyAttributeStatement_3746_6_799()) jj_scanpos = xsp; + if (jj_scan_token(CUSTOM)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + if (jj_scan_token(EQ)) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_BaseExpression_2207_5_355() + private boolean jj_3R_BaseExpression_2214_5_356() { if (jj_scan_token(NULL)) return true; return false; } - private boolean jj_3R_BaseExpression_2202_9_487() + private boolean jj_3R_BaseExpression_2209_9_488() { - if (jj_3R_Modifier_2002_3_156()) return true; + if (jj_3R_Modifier_2009_3_157()) return true; return false; } private boolean jj_3_85() { - if (jj_3R_Modifier_2002_3_156()) return true; + if (jj_3R_Modifier_2009_3_157()) return true; return false; } - private boolean jj_3R_BaseExpression_2199_9_486() + private boolean jj_3R_BaseExpression_2206_9_487() { if (jj_scan_token(CHARACTER_LITERAL)) return true; return false; } - private boolean jj_3R_BaseExpression_2197_9_485() + private boolean jj_3R_AlterPropertyStatement_3747_3_93() { - if (jj_3R_PString_712_3_248()) return true; + if (jj_scan_token(ALTER)) return true; + if (jj_scan_token(PROPERTY)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + if (jj_scan_token(DOT)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_139()) { + jj_scanpos = xsp; + if (jj_3R_AlterPropertyStatement_3760_5_268()) return true; + } return false; } - private boolean jj_3R_CreatePropertyStatement_3734_6_723() + private boolean jj_3R_BaseExpression_2204_9_486() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_CreatePropertyAttributeStatement_3744_3_722()) return true; + if (jj_3R_PString_719_3_249()) return true; return false; } - private boolean jj_3R_CreatePropertyStatement_3732_5_615() + private boolean jj_3_84() { - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_CreatePropertyAttributeStatement_3744_3_722()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_CreatePropertyStatement_3734_6_723()) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(RPAREN)) return true; + if (jj_3R_Modifier_2009_3_157()) return true; return false; } - private boolean jj_3_84() + private boolean jj_3R_CreatePropertyAttributeStatement_3736_6_802() { - if (jj_3R_Modifier_2002_3_156()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_BaseExpression_2195_5_354() + private boolean jj_3R_BaseExpression_2202_5_355() { Token xsp; xsp = jj_scanpos; - if (jj_3R_BaseExpression_2197_9_485()) { + if (jj_3R_BaseExpression_2204_9_486()) { jj_scanpos = xsp; - if (jj_3R_BaseExpression_2199_9_486()) return true; + if (jj_3R_BaseExpression_2206_9_487()) return true; } xsp = jj_scanpos; - if (jj_3R_BaseExpression_2202_9_487()) jj_scanpos = xsp; - return false; - } - - private boolean jj_3R_CreatePropertyStatement_3729_5_614() - { - if (jj_scan_token(IF)) return true; - if (jj_scan_token(NOT)) return true; - if (jj_scan_token(EXISTS)) return true; + if (jj_3R_BaseExpression_2209_9_488()) jj_scanpos = xsp; return false; } - private boolean jj_3R_BaseExpression_2190_9_484() + private boolean jj_3R_BaseExpression_2197_9_485() { - if (jj_3R_Modifier_2002_3_156()) return true; + if (jj_3R_Modifier_2009_3_157()) return true; return false; } - private boolean jj_3R_BucketIdentifier_657_5_798() + private boolean jj_3R_BucketIdentifier_664_5_801() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_BucketIdentifier_655_5_797() + private boolean jj_3R_BucketIdentifier_662_5_800() { - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_3R_PInteger_914_3_67()) return true; return false; } - private boolean jj_3R_CreatePropertyStatement_3725_3_75() + private boolean jj_3R_CreatePropertyAttributeStatement_3734_3_724() { - if (jj_scan_token(CREATE)) return true; - if (jj_scan_token(PROPERTY)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - if (jj_scan_token(DOT)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_CreatePropertyStatement_3729_5_614()) jj_scanpos = xsp; - if (jj_3R_Identifier_726_1_140()) return true; - xsp = jj_scanpos; - if (jj_3R_CreatePropertyStatement_3732_5_615()) jj_scanpos = xsp; + if (jj_3R_CreatePropertyAttributeStatement_3736_6_802()) jj_scanpos = xsp; return false; } - private boolean jj_3R_BucketIdentifier_654_3_716() + private boolean jj_3R_BucketIdentifier_661_3_718() { Token xsp; xsp = jj_scanpos; - if (jj_3R_BucketIdentifier_655_5_797()) { + if (jj_3R_BucketIdentifier_662_5_800()) { jj_scanpos = xsp; - if (jj_3R_BucketIdentifier_657_5_798()) return true; + if (jj_3R_BucketIdentifier_664_5_801()) return true; } return false; } - private boolean jj_3R_BaseExpression_2187_5_353() + private boolean jj_3R_BaseExpression_2194_5_354() { - if (jj_3R_InputParameter_1710_3_145()) return true; + if (jj_3R_InputParameter_1717_3_146()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_BaseExpression_2190_9_484()) jj_scanpos = xsp; + if (jj_3R_BaseExpression_2197_9_485()) jj_scanpos = xsp; return false; } - private boolean jj_3R_BaseExpression_2182_9_483() + private boolean jj_3R_BaseExpression_2189_9_484() { - if (jj_3R_Modifier_2002_3_156()) return true; + if (jj_3R_Modifier_2009_3_157()) return true; return false; } - private boolean jj_3R_DropTypeStatement_3716_5_266() + private boolean jj_3R_CreatePropertyStatement_3724_6_725() { - if (jj_scan_token(UNSAFE)) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_CreatePropertyAttributeStatement_3734_3_724()) return true; return false; } - private boolean jj_3R_DropTypeStatement_3715_5_265() + private boolean jj_3R_CreatePropertyStatement_3722_5_616() { - if (jj_scan_token(IF)) return true; - if (jj_scan_token(EXISTS)) return true; + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_CreatePropertyAttributeStatement_3734_3_724()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_CreatePropertyStatement_3724_6_725()) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_BaseExpression_2179_5_352() + private boolean jj_3R_BaseExpression_2186_5_353() { - if (jj_3R_BaseIdentifier_1989_3_482()) return true; + if (jj_3R_BaseIdentifier_1996_3_483()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_BaseExpression_2182_9_483()) jj_scanpos = xsp; + if (jj_3R_BaseExpression_2189_9_484()) jj_scanpos = xsp; return false; } - private boolean jj_3R_BaseExpression_2177_5_351() + private boolean jj_3R_CreatePropertyStatement_3719_5_615() { - if (jj_3R_PNumber_927_3_481()) return true; + if (jj_scan_token(IF)) return true; + if (jj_scan_token(NOT)) return true; + if (jj_scan_token(EXISTS)) return true; return false; } - private boolean jj_3R_DropTypeStatement_3713_3_264() + private boolean jj_3R_BaseExpression_2184_5_352() { - if (jj_3R_InputParameter_1710_3_145()) return true; + if (jj_3R_PNumber_934_3_482()) return true; return false; } - private boolean jj_3R_BaseExpression_2176_3_173() + private boolean jj_3R_BaseExpression_2183_3_174() { Token xsp; xsp = jj_scanpos; - if (jj_3R_BaseExpression_2177_5_351()) { + if (jj_3R_BaseExpression_2184_5_352()) { jj_scanpos = xsp; - if (jj_3R_BaseExpression_2179_5_352()) { + if (jj_3R_BaseExpression_2186_5_353()) { jj_scanpos = xsp; - if (jj_3R_BaseExpression_2187_5_353()) { + if (jj_3R_BaseExpression_2194_5_354()) { jj_scanpos = xsp; - if (jj_3R_BaseExpression_2195_5_354()) { + if (jj_3R_BaseExpression_2202_5_355()) { jj_scanpos = xsp; - if (jj_3R_BaseExpression_2207_5_355()) return true; + if (jj_3R_BaseExpression_2214_5_356()) return true; } } } @@ -24188,130 +24160,120 @@ private boolean jj_3R_BaseExpression_2176_3_173() return false; } - private boolean jj_3R_DropTypeStatement_3711_3_263() - { - if (jj_3R_Identifier_726_1_140()) return true; - return false; - } - - private boolean jj_3R_DropTypeStatement_3709_3_91() + private boolean jj_3R_CreatePropertyStatement_3715_3_76() { - if (jj_scan_token(DROP)) return true; - if (jj_scan_token(TYPE)) return true; + if (jj_scan_token(CREATE)) return true; + if (jj_scan_token(PROPERTY)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + if (jj_scan_token(DOT)) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_DropTypeStatement_3711_3_263()) { - jj_scanpos = xsp; - if (jj_3R_DropTypeStatement_3713_3_264()) return true; - } - xsp = jj_scanpos; - if (jj_3R_DropTypeStatement_3715_5_265()) jj_scanpos = xsp; + if (jj_3R_CreatePropertyStatement_3719_5_615()) jj_scanpos = xsp; + if (jj_3R_Identifier_733_1_141()) return true; xsp = jj_scanpos; - if (jj_3R_DropTypeStatement_3716_5_266()) jj_scanpos = xsp; + if (jj_3R_CreatePropertyStatement_3722_5_616()) jj_scanpos = xsp; return false; } - private boolean jj_3R_Rid_633_5_318() + private boolean jj_3R_Rid_640_5_319() { if (jj_scan_token(LBRACE)) return true; Token xsp; xsp = jj_scanpos; - if (jj_scan_token(142)) { + if (jj_scan_token(143)) { jj_scanpos = xsp; - if (jj_scan_token(143)) return true; + if (jj_scan_token(144)) return true; } if (jj_scan_token(COLON)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; if (jj_scan_token(RBRACE)) return true; return false; } - private boolean jj_3R_ParenthesisExpression_2167_5_350() + private boolean jj_3R_ParenthesisExpression_2174_5_351() { - if (jj_3R_InsertStatement_1521_1_271()) return true; + if (jj_3R_InsertStatement_1528_1_272()) return true; return false; } - private boolean jj_3R_ParenthesisExpression_2165_5_349() + private boolean jj_3R_ParenthesisExpression_2172_5_350() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } private boolean jj_3_2() { - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_3R_PInteger_914_3_67()) return true; if (jj_scan_token(COLON)) return true; - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_3R_PInteger_914_3_67()) return true; return false; } - private boolean jj_3_82() + private boolean jj_3R_DropTypeStatement_3706_5_267() { - if (jj_3R_BaseExpression_2176_3_173()) return true; + if (jj_scan_token(UNSAFE)) return true; return false; } - private boolean jj_3_83() + private boolean jj_3R_DropTypeStatement_3705_5_266() + { + if (jj_scan_token(IF)) return true; + if (jj_scan_token(EXISTS)) return true; + return false; + } + + private boolean jj_3_82() { - if (jj_3R_QueryStatement_1106_3_174()) return true; + if (jj_3R_BaseExpression_2183_3_174()) return true; return false; } - private boolean jj_3R_AlterTypeStatement_3696_5_262() + private boolean jj_3_83() { - if (jj_scan_token(CUSTOM)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - if (jj_scan_token(EQ)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_QueryStatement_1113_3_175()) return true; return false; } private boolean jj_3_1() { - if (jj_scan_token(250)) return true; - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_scan_token(251)) return true; + if (jj_3R_PInteger_914_3_67()) return true; if (jj_scan_token(COLON)) return true; - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_3R_PInteger_914_3_67()) return true; return false; } private boolean jj_3_81() { - if (jj_3R_ParenthesisExpression_2160_3_172()) return true; + if (jj_3R_ParenthesisExpression_2167_3_173()) return true; return false; } - private boolean jj_3R_AlterTypeStatement_3694_5_261() + private boolean jj_3R_DropTypeStatement_3703_3_265() { - if (jj_scan_token(BUCKETSELECTIONSTRATEGY)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_InputParameter_1717_3_146()) return true; return false; } - private boolean jj_3R_ParenthesisExpression_2160_3_172() + private boolean jj_3R_ParenthesisExpression_2167_3_173() { if (jj_scan_token(LPAREN)) return true; Token xsp; xsp = jj_scanpos; if (jj_3_83()) { jj_scanpos = xsp; - if (jj_3R_ParenthesisExpression_2165_5_349()) { + if (jj_3R_ParenthesisExpression_2172_5_350()) { jj_scanpos = xsp; - if (jj_3R_ParenthesisExpression_2167_5_350()) return true; + if (jj_3R_ParenthesisExpression_2174_5_351()) return true; } } if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_AlterTypeStatement_3686_11_544() - { - if (jj_scan_token(MINUS)) return true; - return false; - } - - private boolean jj_3R_Rid_624_3_144() + private boolean jj_3R_Rid_631_3_145() { Token xsp; xsp = jj_scanpos; @@ -24319,187 +24281,207 @@ private boolean jj_3R_Rid_624_3_144() jj_scanpos = xsp; if (jj_3_2()) { jj_scanpos = xsp; - if (jj_3R_Rid_633_5_318()) return true; + if (jj_3R_Rid_640_5_319()) return true; } } return false; } - private boolean jj_3R_AlterTypeStatement_3682_11_543() - { - if (jj_scan_token(PLUS)) return true; - return false; - } - - private boolean jj_3R_FirstLevelExpression_2151_5_348() + private boolean jj_3R_DropTypeStatement_3701_3_264() { - if (jj_3R_BaseExpression_2176_3_173()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_AlterTypeStatement_3680_9_440() + private boolean jj_3R_DropTypeStatement_3699_3_92() { - if (jj_scan_token(COMMA)) return true; + if (jj_scan_token(DROP)) return true; + if (jj_scan_token(TYPE)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_AlterTypeStatement_3682_11_543()) { + if (jj_3R_DropTypeStatement_3701_3_264()) { jj_scanpos = xsp; - if (jj_3R_AlterTypeStatement_3686_11_544()) return true; + if (jj_3R_DropTypeStatement_3703_3_265()) return true; } - if (jj_3R_Identifier_726_1_140()) return true; + xsp = jj_scanpos; + if (jj_3R_DropTypeStatement_3705_5_266()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_DropTypeStatement_3706_5_267()) jj_scanpos = xsp; return false; } - private boolean jj_3R_FirstLevelExpression_2148_5_347() + private boolean jj_3R_FirstLevelExpression_2158_5_349() { - if (jj_3R_ParenthesisExpression_2160_3_172()) return true; + if (jj_3R_BaseExpression_2183_3_174()) return true; return false; } - private boolean jj_3R_FirstLevelExpression_2147_3_171() + private boolean jj_3R_FirstLevelExpression_2155_5_348() { - Token xsp; + if (jj_3R_ParenthesisExpression_2167_3_173()) return true; + return false; + } + + private boolean jj_3R_FirstLevelExpression_2154_3_172() + { + Token xsp; xsp = jj_scanpos; - if (jj_3R_FirstLevelExpression_2148_5_347()) { + if (jj_3R_FirstLevelExpression_2155_5_348()) { jj_scanpos = xsp; - if (jj_3R_FirstLevelExpression_2151_5_348()) return true; + if (jj_3R_FirstLevelExpression_2158_5_349()) return true; } return false; } - private boolean jj_3R_AlterTypeStatement_3674_9_439() + private boolean jj_3R_AlterTypeStatement_3686_5_263() { - if (jj_scan_token(MINUS)) return true; + if (jj_scan_token(CUSTOM)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + if (jj_scan_token(EQ)) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_AlterTypeStatement_3670_9_438() + private boolean jj_3R_AlterTypeStatement_3684_5_262() { - if (jj_scan_token(PLUS)) return true; + if (jj_scan_token(BUCKETSELECTIONSTRATEGY)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_MathExpression_2131_7_170() + private boolean jj_3R_AlterTypeStatement_3676_11_545() { - if (jj_scan_token(XOR)) return true; + if (jj_scan_token(MINUS)) return true; return false; } - private boolean jj_3R_AlterTypeStatement_3663_9_437() + private boolean jj_3R_AlterTypeStatement_3672_11_544() { - if (jj_scan_token(NULL)) return true; + if (jj_scan_token(PLUS)) return true; return false; } - private boolean jj_3R_AlterTypeStatement_3667_5_260() + private boolean jj_3R_MathExpression_2138_7_171() { - if (jj_scan_token(BUCKET)) return true; + if (jj_scan_token(XOR)) return true; + return false; + } + + private boolean jj_3R_AlterTypeStatement_3670_9_441() + { + if (jj_scan_token(COMMA)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_AlterTypeStatement_3670_9_438()) { + if (jj_3R_AlterTypeStatement_3672_11_544()) { jj_scanpos = xsp; - if (jj_3R_AlterTypeStatement_3674_9_439()) return true; - } - if (jj_3R_Identifier_726_1_140()) return true; - while (true) { - xsp = jj_scanpos; - if (jj_3R_AlterTypeStatement_3680_9_440()) { jj_scanpos = xsp; break; } + if (jj_3R_AlterTypeStatement_3676_11_545()) return true; } + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_MathExpression_2129_7_169() + private boolean jj_3R_MathExpression_2136_7_170() { if (jj_scan_token(BIT_OR)) return true; return false; } - private boolean jj_3R_AlterTypeStatement_3655_15_667() - { - if (jj_scan_token(MINUS)) return true; - return false; - } - - private boolean jj_3R_MathExpression_2127_7_168() + private boolean jj_3R_MathExpression_2134_7_169() { if (jj_scan_token(BIT_AND)) return true; return false; } - private boolean jj_3R_MathExpression_2125_7_167() + private boolean jj_3R_MathExpression_2132_7_168() { if (jj_scan_token(RUNSIGNEDSHIFT)) return true; return false; } - private boolean jj_3R_AlterTypeStatement_3651_15_666() + private boolean jj_3R_AlterTypeStatement_3664_9_440() { - if (jj_scan_token(PLUS)) return true; + if (jj_scan_token(MINUS)) return true; return false; } - private boolean jj_3R_MathExpression_2123_7_166() + private boolean jj_3R_MathExpression_2130_7_167() { if (jj_scan_token(RSHIFT)) return true; return false; } - private boolean jj_3R_MathExpression_2121_7_165() + private boolean jj_3R_MathExpression_2128_7_166() { if (jj_scan_token(LSHIFT)) return true; return false; } - private boolean jj_3R_AlterTypeStatement_3649_13_542() + private boolean jj_3R_AlterTypeStatement_3660_9_439() { - if (jj_scan_token(COMMA)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_AlterTypeStatement_3651_15_666()) { - jj_scanpos = xsp; - if (jj_3R_AlterTypeStatement_3655_15_667()) return true; - } - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(PLUS)) return true; return false; } - private boolean jj_3R_MathExpression_2119_7_164() + private boolean jj_3R_MathExpression_2126_7_165() { if (jj_scan_token(MINUS)) return true; return false; } - private boolean jj_3R_MathExpression_2117_7_163() + private boolean jj_3R_MathExpression_2124_7_164() { if (jj_scan_token(PLUS)) return true; return false; } - private boolean jj_3R_MathExpression_2115_7_162() + private boolean jj_3R_MathExpression_2122_7_163() { if (jj_scan_token(REM)) return true; return false; } - private boolean jj_3R_AlterTypeStatement_3643_13_541() + private boolean jj_3R_AlterTypeStatement_3653_9_438() { - if (jj_scan_token(MINUS)) return true; + if (jj_scan_token(NULL)) return true; return false; } - private boolean jj_3R_MathExpression_2113_7_161() + private boolean jj_3R_MathExpression_2120_7_162() { if (jj_scan_token(SLASH)) return true; return false; } - private boolean jj_3R_MathExpression_2111_7_160() + private boolean jj_3R_AlterTypeStatement_3657_5_261() + { + if (jj_scan_token(BUCKET)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_AlterTypeStatement_3660_9_439()) { + jj_scanpos = xsp; + if (jj_3R_AlterTypeStatement_3664_9_440()) return true; + } + if (jj_3R_Identifier_733_1_141()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3R_AlterTypeStatement_3670_9_441()) { jj_scanpos = xsp; break; } + } + return false; + } + + private boolean jj_3R_AlterTypeStatement_3645_15_669() + { + if (jj_scan_token(MINUS)) return true; + return false; + } + + private boolean jj_3R_MathExpression_2118_7_161() { if (jj_scan_token(STAR)) return true; return false; } - private boolean jj_3R_AlterTypeStatement_3639_13_540() + private boolean jj_3R_AlterTypeStatement_3641_15_668() { if (jj_scan_token(PLUS)) return true; return false; @@ -24509,27 +24491,27 @@ private boolean jj_3_80() { Token xsp; xsp = jj_scanpos; - if (jj_3R_MathExpression_2111_7_160()) { + if (jj_3R_MathExpression_2118_7_161()) { jj_scanpos = xsp; - if (jj_3R_MathExpression_2113_7_161()) { + if (jj_3R_MathExpression_2120_7_162()) { jj_scanpos = xsp; - if (jj_3R_MathExpression_2115_7_162()) { + if (jj_3R_MathExpression_2122_7_163()) { jj_scanpos = xsp; - if (jj_3R_MathExpression_2117_7_163()) { + if (jj_3R_MathExpression_2124_7_164()) { jj_scanpos = xsp; - if (jj_3R_MathExpression_2119_7_164()) { + if (jj_3R_MathExpression_2126_7_165()) { jj_scanpos = xsp; - if (jj_3R_MathExpression_2121_7_165()) { + if (jj_3R_MathExpression_2128_7_166()) { jj_scanpos = xsp; - if (jj_3R_MathExpression_2123_7_166()) { + if (jj_3R_MathExpression_2130_7_167()) { jj_scanpos = xsp; - if (jj_3R_MathExpression_2125_7_167()) { + if (jj_3R_MathExpression_2132_7_168()) { jj_scanpos = xsp; - if (jj_3R_MathExpression_2127_7_168()) { + if (jj_3R_MathExpression_2134_7_169()) { jj_scanpos = xsp; - if (jj_3R_MathExpression_2129_7_169()) { + if (jj_3R_MathExpression_2136_7_170()) { jj_scanpos = xsp; - if (jj_3R_MathExpression_2131_7_170()) return true; + if (jj_3R_MathExpression_2138_7_171()) return true; } } } @@ -24540,29 +24522,26 @@ private boolean jj_3_80() } } } - if (jj_3R_FirstLevelExpression_2147_3_171()) return true; + if (jj_3R_FirstLevelExpression_2154_3_172()) return true; return false; } - private boolean jj_3R_AlterTypeStatement_3637_9_436() + private boolean jj_3R_AlterTypeStatement_3639_13_543() { + if (jj_scan_token(COMMA)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_AlterTypeStatement_3639_13_540()) { + if (jj_3R_AlterTypeStatement_3641_15_668()) { jj_scanpos = xsp; - if (jj_3R_AlterTypeStatement_3643_13_541()) return true; - } - if (jj_3R_Identifier_726_1_140()) return true; - while (true) { - xsp = jj_scanpos; - if (jj_3R_AlterTypeStatement_3649_13_542()) { jj_scanpos = xsp; break; } + if (jj_3R_AlterTypeStatement_3645_15_669()) return true; } + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_MathExpression_2107_3_159() + private boolean jj_3R_MathExpression_2114_3_160() { - if (jj_3R_FirstLevelExpression_2147_3_171()) return true; + if (jj_3R_FirstLevelExpression_2154_3_172()) return true; Token xsp; while (true) { xsp = jj_scanpos; @@ -24573,83 +24552,69 @@ private boolean jj_3R_MathExpression_2107_3_159() private boolean jj_3_79() { - if (jj_3R_MathExpression_2107_3_159()) return true; + if (jj_3R_MathExpression_2114_3_160()) return true; return false; } private boolean jj_3_78() { - if (jj_3R_Rid_624_3_144()) return true; - return false; - } - - private boolean jj_3R_AlterTypeStatement_3632_5_259() - { - if (jj_scan_token(SUPERTYPE)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_AlterTypeStatement_3637_9_436()) { - jj_scanpos = xsp; - if (jj_3R_AlterTypeStatement_3663_9_437()) return true; - } + if (jj_3R_Rid_631_3_145()) return true; return false; } - private boolean jj_3R_ArrayConcatExpressionElement_2095_5_480() + private boolean jj_3R_AlterTypeStatement_3633_13_542() { - if (jj_3R_Json_3078_3_211()) return true; + if (jj_scan_token(MINUS)) return true; return false; } - private boolean jj_3R_ArrayConcatExpressionElement_2092_5_479() + private boolean jj_3R_AlterTypeStatement_3629_13_541() { - if (jj_3R_MathExpression_2107_3_159()) return true; + if (jj_scan_token(PLUS)) return true; return false; } - private boolean jj_3R_AlterTypeStatement_3627_5_258() + private boolean jj_3R_ArrayConcatExpressionElement_2102_5_481() { - if (jj_scan_token(NAME)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Json_3076_3_212()) return true; return false; } - private boolean jj_3R_ArrayConcatExpressionElement_2089_5_478() + private boolean jj_3R_ArrayConcatExpressionElement_2099_5_480() { - if (jj_3R_Rid_624_3_144()) return true; + if (jj_3R_MathExpression_2114_3_160()) return true; return false; } - private boolean jj_3R_ArrayConcatExpressionElement_2087_5_477() + private boolean jj_3R_ArrayConcatExpressionElement_2096_5_479() { - if (jj_scan_token(FALSE)) return true; + if (jj_3R_Rid_631_3_145()) return true; return false; } - private boolean jj_3R_AlterTypeStatement_3624_3_90() + private boolean jj_3R_AlterTypeStatement_3627_9_437() { - if (jj_scan_token(ALTER)) return true; - if (jj_scan_token(TYPE)) return true; - if (jj_3R_Identifier_726_1_140()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_AlterTypeStatement_3627_5_258()) { - jj_scanpos = xsp; - if (jj_3R_AlterTypeStatement_3632_5_259()) { + if (jj_3R_AlterTypeStatement_3629_13_541()) { jj_scanpos = xsp; - if (jj_3R_AlterTypeStatement_3667_5_260()) { - jj_scanpos = xsp; - if (jj_3R_AlterTypeStatement_3694_5_261()) { - jj_scanpos = xsp; - if (jj_3R_AlterTypeStatement_3696_5_262()) return true; - } - } + if (jj_3R_AlterTypeStatement_3633_13_542()) return true; } + if (jj_3R_Identifier_733_1_141()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3R_AlterTypeStatement_3639_13_543()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_ArrayConcatExpressionElement_2085_5_476() + private boolean jj_3R_ArrayConcatExpressionElement_2094_5_478() + { + if (jj_scan_token(FALSE)) return true; + return false; + } + + private boolean jj_3R_ArrayConcatExpressionElement_2092_5_477() { if (jj_scan_token(TRUE)) return true; return false; @@ -24661,21 +24626,21 @@ private boolean jj_3_77() return false; } - private boolean jj_3R_ArrayConcatExpressionElement_2082_3_345() + private boolean jj_3R_ArrayConcatExpressionElement_2089_3_346() { Token xsp; xsp = jj_scanpos; if (jj_3_77()) { jj_scanpos = xsp; - if (jj_3R_ArrayConcatExpressionElement_2085_5_476()) { + if (jj_3R_ArrayConcatExpressionElement_2092_5_477()) { jj_scanpos = xsp; - if (jj_3R_ArrayConcatExpressionElement_2087_5_477()) { + if (jj_3R_ArrayConcatExpressionElement_2094_5_478()) { jj_scanpos = xsp; - if (jj_3R_ArrayConcatExpressionElement_2089_5_478()) { + if (jj_3R_ArrayConcatExpressionElement_2096_5_479()) { jj_scanpos = xsp; - if (jj_3R_ArrayConcatExpressionElement_2092_5_479()) { + if (jj_3R_ArrayConcatExpressionElement_2099_5_480()) { jj_scanpos = xsp; - if (jj_3R_ArrayConcatExpressionElement_2095_5_480()) return true; + if (jj_3R_ArrayConcatExpressionElement_2102_5_481()) return true; } } } @@ -24684,182 +24649,191 @@ private boolean jj_3R_ArrayConcatExpressionElement_2082_3_345() return false; } - private boolean jj_3R_CreateEdgeTypeStatement_3612_7_613() - { - if (jj_scan_token(BUCKETS)) return true; - if (jj_3R_PInteger_907_3_66()) return true; - return false; - } - - private boolean jj_3R_CreateEdgeTypeStatement_3608_9_721() - { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_BucketIdentifier_654_3_716()) return true; - return false; - } - - private boolean jj_3R_CreateEdgeTypeStatement_3606_7_612() + private boolean jj_3R_AlterTypeStatement_3622_5_260() { - if (jj_scan_token(BUCKET)) return true; - if (jj_3R_BucketIdentifier_654_3_716()) return true; + if (jj_scan_token(SUPERTYPE)) return true; Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_CreateEdgeTypeStatement_3608_9_721()) { jj_scanpos = xsp; break; } + xsp = jj_scanpos; + if (jj_3R_AlterTypeStatement_3627_9_437()) { + jj_scanpos = xsp; + if (jj_3R_AlterTypeStatement_3653_9_438()) return true; } return false; } - private boolean jj_3R_ArrayConcatExpression_2071_5_346() + private boolean jj_3R_AlterTypeStatement_3617_5_259() { - if (jj_scan_token(SC_OR)) return true; - if (jj_3R_ArrayConcatExpressionElement_2082_3_345()) return true; + if (jj_scan_token(NAME)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_CreateEdgeTypeStatement_3601_9_720() + private boolean jj_3R_ArrayConcatExpression_2078_5_347() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(SC_OR)) return true; + if (jj_3R_ArrayConcatExpressionElement_2089_3_346()) return true; return false; } - private boolean jj_3R_ArrayConcatExpression_2069_3_157() + private boolean jj_3R_AlterTypeStatement_3614_3_91() { - if (jj_3R_ArrayConcatExpressionElement_2082_3_345()) return true; + if (jj_scan_token(ALTER)) return true; + if (jj_scan_token(TYPE)) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; - if (jj_3R_ArrayConcatExpression_2071_5_346()) return true; - while (true) { - xsp = jj_scanpos; - if (jj_3R_ArrayConcatExpression_2071_5_346()) { jj_scanpos = xsp; break; } + xsp = jj_scanpos; + if (jj_3R_AlterTypeStatement_3617_5_259()) { + jj_scanpos = xsp; + if (jj_3R_AlterTypeStatement_3622_5_260()) { + jj_scanpos = xsp; + if (jj_3R_AlterTypeStatement_3657_5_261()) { + jj_scanpos = xsp; + if (jj_3R_AlterTypeStatement_3684_5_262()) { + jj_scanpos = xsp; + if (jj_3R_AlterTypeStatement_3686_5_263()) return true; + } + } + } } return false; } - private boolean jj_3R_CreateEdgeTypeStatement_3599_7_611() + private boolean jj_3R_ArrayConcatExpression_2076_3_158() { - if (jj_scan_token(EXTENDS)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_ArrayConcatExpressionElement_2089_3_346()) return true; Token xsp; + if (jj_3R_ArrayConcatExpression_2078_5_347()) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_CreateEdgeTypeStatement_3601_9_720()) { jj_scanpos = xsp; break; } + if (jj_3R_ArrayConcatExpression_2078_5_347()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3_76() { - if (jj_3R_MathExpression_2107_3_159()) return true; + if (jj_3R_MathExpression_2114_3_160()) return true; return false; } - private boolean jj_3R_CreateEdgeTypeStatement_3597_7_610() + private boolean jj_3R_CreateEdgeTypeStatement_3603_5_614() { - if (jj_scan_token(IF)) return true; - if (jj_scan_token(NOT)) return true; - if (jj_scan_token(EXISTS)) return true; + if (jj_scan_token(BUCKETS)) return true; + if (jj_3R_PInteger_914_3_67()) return true; + return false; + } + + private boolean jj_3R_CreateEdgeTypeStatement_3599_7_723() + { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_BucketIdentifier_661_3_718()) return true; return false; } private boolean jj_3_74() { - if (jj_3R_Rid_624_3_144()) return true; + if (jj_3R_Rid_631_3_145()) return true; return false; } - private boolean jj_3R_Expression_2058_5_297() + private boolean jj_3R_Expression_2065_5_298() { - if (jj_3R_Json_3078_3_211()) return true; + if (jj_3R_Json_3076_3_212()) return true; return false; } - private boolean jj_3R_CreateEdgeTypeStatement_3594_3_74() + private boolean jj_3R_CreateEdgeTypeStatement_3597_5_613() { - if (jj_scan_token(CREATE)) return true; - if (jj_scan_token(EDGE)) return true; - if (jj_scan_token(TYPE)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(BUCKET)) return true; + if (jj_3R_BucketIdentifier_661_3_718()) return true; Token xsp; - xsp = jj_scanpos; - if (jj_3R_CreateEdgeTypeStatement_3597_7_610()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_CreateEdgeTypeStatement_3599_7_611()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_CreateEdgeTypeStatement_3606_7_612()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_CreateEdgeTypeStatement_3612_7_613()) jj_scanpos = xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_CreateEdgeTypeStatement_3599_7_723()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_Expression_2055_5_296() + private boolean jj_3R_Expression_2062_5_297() { - if (jj_3R_MathExpression_2107_3_159()) return true; + if (jj_3R_MathExpression_2114_3_160()) return true; return false; } - private boolean jj_3R_CreateVertexTypeStatement_3583_7_609() + private boolean jj_3R_CreateEdgeTypeStatement_3592_7_722() { - if (jj_scan_token(BUCKETS)) return true; - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } private boolean jj_3_75() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_WhereClause_2378_3_158()) return true; + if (jj_3R_WhereClause_2385_3_159()) return true; if (jj_scan_token(RPAREN)) return true; return false; } private boolean jj_3_72() { - if (jj_3R_ArrayConcatExpression_2069_3_157()) return true; + if (jj_3R_ArrayConcatExpression_2076_3_158()) return true; return false; } - private boolean jj_3R_CreateVertexTypeStatement_3579_9_719() + private boolean jj_3R_CreateEdgeTypeStatement_3590_5_612() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_BucketIdentifier_654_3_716()) return true; + if (jj_scan_token(EXTENDS)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_CreateEdgeTypeStatement_3592_7_722()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_Expression_2047_5_295() + private boolean jj_3R_Expression_2054_5_296() { - if (jj_3R_Rid_624_3_144()) return true; + if (jj_3R_Rid_631_3_145()) return true; return false; } - private boolean jj_3R_Expression_2045_5_294() + private boolean jj_3R_CreateEdgeTypeStatement_3588_5_611() { - if (jj_scan_token(FALSE)) return true; + if (jj_scan_token(IF)) return true; + if (jj_scan_token(NOT)) return true; + if (jj_scan_token(EXISTS)) return true; return false; } - private boolean jj_3R_CreateVertexTypeStatement_3577_7_608() + private boolean jj_3R_Expression_2052_5_295() { - if (jj_scan_token(BUCKET)) return true; - if (jj_3R_BucketIdentifier_654_3_716()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_CreateVertexTypeStatement_3579_9_719()) { jj_scanpos = xsp; break; } - } + if (jj_scan_token(FALSE)) return true; return false; } - private boolean jj_3R_Expression_2043_5_293() + private boolean jj_3R_Expression_2050_5_294() { if (jj_scan_token(TRUE)) return true; return false; } - private boolean jj_3R_CreateVertexTypeStatement_3572_9_718() + private boolean jj_3R_CreateEdgeTypeStatement_3586_3_75() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(CREATE)) return true; + if (jj_scan_token(EDGE)) return true; + if (jj_scan_token(TYPE)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_CreateEdgeTypeStatement_3588_5_611()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_CreateEdgeTypeStatement_3590_5_612()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_CreateEdgeTypeStatement_3597_5_613()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_CreateEdgeTypeStatement_3603_5_614()) jj_scanpos = xsp; return false; } @@ -24871,61 +24845,41 @@ private boolean jj_3_73() private boolean jj_3_71() { - if (jj_3R_Modifier_2002_3_156()) return true; - return false; - } - - private boolean jj_3R_Expression_2038_5_292() - { - if (jj_3R_ArrayConcatExpression_2069_3_157()) return true; + if (jj_3R_Modifier_2009_3_157()) return true; return false; } - private boolean jj_3R_CreateVertexTypeStatement_3570_7_607() + private boolean jj_3R_Expression_2045_5_293() { - if (jj_scan_token(EXTENDS)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_CreateVertexTypeStatement_3572_9_718()) { jj_scanpos = xsp; break; } - } + if (jj_3R_ArrayConcatExpression_2076_3_158()) return true; return false; } private boolean jj_3_70() { - if (jj_3R_MethodCall_1947_3_155()) return true; + if (jj_3R_MethodCall_1954_3_156()) return true; return false; } - private boolean jj_3R_CreateVertexTypeStatement_3568_7_606() - { - if (jj_scan_token(IF)) return true; - if (jj_scan_token(NOT)) return true; - if (jj_scan_token(EXISTS)) return true; - return false; - } - - private boolean jj_3R_Expression_2037_3_131() + private boolean jj_3R_Expression_2044_3_132() { Token xsp; xsp = jj_scanpos; - if (jj_3R_Expression_2038_5_292()) { + if (jj_3R_Expression_2045_5_293()) { jj_scanpos = xsp; if (jj_3_73()) { jj_scanpos = xsp; - if (jj_3R_Expression_2043_5_293()) { + if (jj_3R_Expression_2050_5_294()) { jj_scanpos = xsp; - if (jj_3R_Expression_2045_5_294()) { + if (jj_3R_Expression_2052_5_295()) { jj_scanpos = xsp; - if (jj_3R_Expression_2047_5_295()) { + if (jj_3R_Expression_2054_5_296()) { jj_scanpos = xsp; if (jj_3_75()) { jj_scanpos = xsp; - if (jj_3R_Expression_2055_5_296()) { + if (jj_3R_Expression_2062_5_297()) { jj_scanpos = xsp; - if (jj_3R_Expression_2058_5_297()) return true; + if (jj_3R_Expression_2065_5_298()) return true; } } } @@ -24936,169 +24890,183 @@ private boolean jj_3R_Expression_2037_3_131() return false; } - private boolean jj_3_69() + private boolean jj_3R_CreateVertexTypeStatement_3576_5_610() { - if (jj_3R_ArraySingleValuesSelector_1862_3_154()) return true; + if (jj_scan_token(BUCKETS)) return true; + if (jj_3R_PInteger_914_3_67()) return true; return false; } - private boolean jj_3R_Modifier_2028_5_344() + private boolean jj_3R_CreateVertexTypeStatement_3572_7_721() { - if (jj_3R_Modifier_2002_3_156()) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_BucketIdentifier_661_3_718()) return true; return false; } - private boolean jj_3R_CreateVertexTypeStatement_3565_3_73() + private boolean jj_3_69() { - if (jj_scan_token(CREATE)) return true; - if (jj_scan_token(VERTEX)) return true; - if (jj_scan_token(TYPE)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_ArraySingleValuesSelector_1869_3_155()) return true; + return false; + } + + private boolean jj_3R_CreateVertexTypeStatement_3570_5_609() + { + if (jj_scan_token(BUCKET)) return true; + if (jj_3R_BucketIdentifier_661_3_718()) return true; Token xsp; - xsp = jj_scanpos; - if (jj_3R_CreateVertexTypeStatement_3568_7_606()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_CreateVertexTypeStatement_3570_7_607()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_CreateVertexTypeStatement_3577_7_608()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_CreateVertexTypeStatement_3583_7_609()) jj_scanpos = xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_CreateVertexTypeStatement_3572_7_721()) { jj_scanpos = xsp; break; } + } + return false; + } + + private boolean jj_3R_Modifier_2035_5_345() + { + if (jj_3R_Modifier_2009_3_157()) return true; return false; } private boolean jj_3_68() { - if (jj_3R_OrBlock_2385_3_153()) return true; + if (jj_3R_OrBlock_2392_3_154()) return true; return false; } - private boolean jj_3R_Modifier_2022_8_342() + private boolean jj_3R_CreateVertexTypeStatement_3565_7_720() { - if (jj_3R_MethodCall_1947_3_155()) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_Modifier_2025_5_343() + private boolean jj_3R_Modifier_2029_8_343() { - if (jj_scan_token(DOT)) return true; - if (jj_3R_SuffixIdentifier_1973_3_150()) return true; + if (jj_3R_MethodCall_1954_3_156()) return true; return false; } - private boolean jj_3_67() + private boolean jj_3R_Modifier_2032_5_344() { - if (jj_3R_ArrayRangeSelector_1870_3_152()) return true; + if (jj_scan_token(DOT)) return true; + if (jj_3R_SuffixIdentifier_1980_3_151()) return true; return false; } - private boolean jj_3R_CreateDocumentTypeStatement_3554_7_605() + private boolean jj_3_67() { - if (jj_scan_token(BUCKETS)) return true; - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_3R_ArrayRangeSelector_1877_3_153()) return true; return false; } - private boolean jj_3_66() + private boolean jj_3R_CreateVertexTypeStatement_3563_5_608() { - if (jj_3R_RightBinaryCondition_2604_3_151()) return true; + if (jj_scan_token(EXTENDS)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_CreateVertexTypeStatement_3565_7_720()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_CreateDocumentTypeStatement_3550_9_717() + private boolean jj_3_66() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_BucketIdentifier_654_3_716()) return true; + if (jj_3R_RightBinaryCondition_2611_3_152()) return true; return false; } - private boolean jj_3R_Modifier_2015_9_475() + private boolean jj_3R_CreateVertexTypeStatement_3561_5_607() { - if (jj_3R_ArraySingleValuesSelector_1862_3_154()) return true; + if (jj_scan_token(IF)) return true; + if (jj_scan_token(NOT)) return true; + if (jj_scan_token(EXISTS)) return true; return false; } - private boolean jj_3R_Modifier_2012_9_474() + private boolean jj_3R_Modifier_2022_9_476() { - if (jj_3R_OrBlock_2385_3_153()) return true; + if (jj_3R_ArraySingleValuesSelector_1869_3_155()) return true; return false; } - private boolean jj_3R_CreateDocumentTypeStatement_3548_7_604() + private boolean jj_3R_Modifier_2019_9_475() { - if (jj_scan_token(BUCKET)) return true; - if (jj_3R_BucketIdentifier_654_3_716()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_CreateDocumentTypeStatement_3550_9_717()) { jj_scanpos = xsp; break; } - } + if (jj_3R_OrBlock_2392_3_154()) return true; return false; } - private boolean jj_3R_Modifier_2009_9_473() + private boolean jj_3R_CreateVertexTypeStatement_3559_3_74() { - if (jj_3R_ArrayRangeSelector_1870_3_152()) return true; + if (jj_scan_token(CREATE)) return true; + if (jj_scan_token(VERTEX)) return true; + if (jj_scan_token(TYPE)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_CreateVertexTypeStatement_3561_5_607()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_CreateVertexTypeStatement_3563_5_608()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_CreateVertexTypeStatement_3570_5_609()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_CreateVertexTypeStatement_3576_5_610()) jj_scanpos = xsp; return false; } - private boolean jj_3R_CreateDocumentTypeStatement_3543_9_715() + private boolean jj_3R_Modifier_2016_9_474() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_ArrayRangeSelector_1877_3_153()) return true; return false; } - private boolean jj_3R_Modifier_2006_9_472() + private boolean jj_3R_Modifier_2013_9_473() { - if (jj_3R_RightBinaryCondition_2604_3_151()) return true; + if (jj_3R_RightBinaryCondition_2611_3_152()) return true; return false; } - private boolean jj_3R_FunctionCall_1937_77_460() + private boolean jj_3R_FunctionCall_1944_77_461() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_CreateDocumentTypeStatement_3541_7_603() + private boolean jj_3R_CreateDocumentTypeStatement_3549_5_606() { - if (jj_scan_token(EXTENDS)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_CreateDocumentTypeStatement_3543_9_715()) { jj_scanpos = xsp; break; } - } + if (jj_scan_token(BUCKETS)) return true; + if (jj_3R_PInteger_914_3_67()) return true; return false; } - private boolean jj_3R_CreateDocumentTypeStatement_3539_7_602() + private boolean jj_3R_CreateDocumentTypeStatement_3545_7_719() { - if (jj_scan_token(IF)) return true; - if (jj_scan_token(NOT)) return true; - if (jj_scan_token(EXISTS)) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_BucketIdentifier_661_3_718()) return true; return false; } private boolean jj_3_65() { - if (jj_3R_SuffixIdentifier_1973_3_150()) return true; + if (jj_3R_SuffixIdentifier_1980_3_151()) return true; return false; } - private boolean jj_3R_Modifier_2003_5_341() + private boolean jj_3R_Modifier_2010_5_342() { if (jj_scan_token(LBRACKET)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_Modifier_2006_9_472()) { + if (jj_3R_Modifier_2013_9_473()) { jj_scanpos = xsp; - if (jj_3R_Modifier_2009_9_473()) { + if (jj_3R_Modifier_2016_9_474()) { jj_scanpos = xsp; - if (jj_3R_Modifier_2012_9_474()) { + if (jj_3R_Modifier_2019_9_475()) { jj_scanpos = xsp; - if (jj_3R_Modifier_2015_9_475()) return true; + if (jj_3R_Modifier_2022_9_476()) return true; } } } @@ -25106,161 +25074,171 @@ private boolean jj_3R_Modifier_2003_5_341() return false; } + private boolean jj_3R_CreateDocumentTypeStatement_3543_5_605() + { + if (jj_scan_token(BUCKET)) return true; + if (jj_3R_BucketIdentifier_661_3_718()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_CreateDocumentTypeStatement_3545_7_719()) { jj_scanpos = xsp; break; } + } + return false; + } + private boolean jj_3_64() { - if (jj_3R_LevelZeroIdentifier_1958_3_149()) return true; + if (jj_3R_LevelZeroIdentifier_1965_3_150()) return true; return false; } - private boolean jj_3R_Modifier_2002_3_156() + private boolean jj_3R_Modifier_2009_3_157() { Token xsp; xsp = jj_scanpos; - if (jj_3R_Modifier_2003_5_341()) { + if (jj_3R_Modifier_2010_5_342()) { jj_scanpos = xsp; - if (jj_3R_Modifier_2022_8_342()) { + if (jj_3R_Modifier_2029_8_343()) { jj_scanpos = xsp; - if (jj_3R_Modifier_2025_5_343()) return true; + if (jj_3R_Modifier_2032_5_344()) return true; } } xsp = jj_scanpos; - if (jj_3R_Modifier_2028_5_344()) jj_scanpos = xsp; + if (jj_3R_Modifier_2035_5_345()) jj_scanpos = xsp; return false; } - private boolean jj_3R_CreateDocumentTypeStatement_3536_3_72() + private boolean jj_3R_CreateDocumentTypeStatement_3538_7_717() { - if (jj_scan_token(CREATE)) return true; - if (jj_scan_token(DOCUMENT)) return true; - if (jj_scan_token(TYPE)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + return false; + } + + private boolean jj_3R_CreateDocumentTypeStatement_3536_5_604() + { + if (jj_scan_token(EXTENDS)) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; - xsp = jj_scanpos; - if (jj_3R_CreateDocumentTypeStatement_3539_7_602()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_CreateDocumentTypeStatement_3541_7_603()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_CreateDocumentTypeStatement_3548_7_604()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_CreateDocumentTypeStatement_3554_7_605()) jj_scanpos = xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_CreateDocumentTypeStatement_3538_7_717()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_BaseIdentifier_1993_5_577() + private boolean jj_3R_BaseIdentifier_2000_5_578() { - if (jj_3R_SuffixIdentifier_1973_3_150()) return true; + if (jj_3R_SuffixIdentifier_1980_3_151()) return true; return false; } - private boolean jj_3R_TruncateRecordStatement_3520_11_539() + private boolean jj_3R_CreateDocumentTypeStatement_3534_5_603() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_Rid_624_3_144()) return true; + if (jj_scan_token(IF)) return true; + if (jj_scan_token(NOT)) return true; + if (jj_scan_token(EXISTS)) return true; return false; } - private boolean jj_3R_BaseIdentifier_1990_5_576() + private boolean jj_3R_BaseIdentifier_1997_5_577() { - if (jj_3R_LevelZeroIdentifier_1958_3_149()) return true; + if (jj_3R_LevelZeroIdentifier_1965_3_150()) return true; return false; } private boolean jj_3_63() { - if (jj_3R_RecordAttribute_1920_3_148()) return true; + if (jj_3R_RecordAttribute_1927_3_149()) return true; return false; } - private boolean jj_3R_BaseIdentifier_1989_3_482() + private boolean jj_3R_CreateDocumentTypeStatement_3532_3_73() { + if (jj_scan_token(CREATE)) return true; + if (jj_scan_token(DOCUMENT)) return true; + if (jj_scan_token(TYPE)) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_BaseIdentifier_1990_5_576()) { - jj_scanpos = xsp; - if (jj_3R_BaseIdentifier_1993_5_577()) return true; - } + if (jj_3R_CreateDocumentTypeStatement_3534_5_603()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_CreateDocumentTypeStatement_3536_5_604()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_CreateDocumentTypeStatement_3543_5_605()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_CreateDocumentTypeStatement_3549_5_606()) jj_scanpos = xsp; return false; } - private boolean jj_3R_TruncateRecordStatement_3518_9_435() + private boolean jj_3R_BaseIdentifier_1996_3_483() { - if (jj_3R_Rid_624_3_144()) return true; Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_TruncateRecordStatement_3520_11_539()) { jj_scanpos = xsp; break; } + xsp = jj_scanpos; + if (jj_3R_BaseIdentifier_1997_5_577()) { + jj_scanpos = xsp; + if (jj_3R_BaseIdentifier_2000_5_578()) return true; } return false; } private boolean jj_3_62() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_SuffixIdentifier_1980_5_330() + private boolean jj_3R_TruncateRecordStatement_3516_11_540() { - if (jj_scan_token(STAR)) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_Rid_631_3_145()) return true; return false; } - private boolean jj_3R_TruncateRecordStatement_3515_5_257() + private boolean jj_3R_SuffixIdentifier_1987_5_331() { - if (jj_scan_token(LBRACKET)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_TruncateRecordStatement_3518_9_435()) jj_scanpos = xsp; - if (jj_scan_token(RBRACKET)) return true; + if (jj_scan_token(STAR)) return true; return false; } - private boolean jj_3R_TruncateRecordStatement_3513_5_256() + private boolean jj_3R_SuffixIdentifier_1984_5_330() { - if (jj_3R_Rid_624_3_144()) return true; + if (jj_3R_RecordAttribute_1927_3_149()) return true; return false; } - private boolean jj_3R_SuffixIdentifier_1977_5_329() + private boolean jj_3R_TruncateRecordStatement_3514_9_436() { - if (jj_3R_RecordAttribute_1920_3_148()) return true; + if (jj_3R_Rid_631_3_145()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_TruncateRecordStatement_3516_11_540()) { jj_scanpos = xsp; break; } + } return false; } private boolean jj_3_61() { - if (jj_3R_PCollection_3047_3_147()) return true; - return false; - } - - private boolean jj_3R_SuffixIdentifier_1974_5_328() - { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_PCollection_3046_3_148()) return true; return false; } - private boolean jj_3R_TruncateRecordStatement_3511_3_89() + private boolean jj_3R_SuffixIdentifier_1981_5_329() { - if (jj_scan_token(TRUNCATE)) return true; - if (jj_scan_token(RECORD)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_TruncateRecordStatement_3513_5_256()) { - jj_scanpos = xsp; - if (jj_3R_TruncateRecordStatement_3515_5_257()) return true; - } + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_SuffixIdentifier_1973_3_150() + private boolean jj_3R_SuffixIdentifier_1980_3_151() { Token xsp; xsp = jj_scanpos; - if (jj_3R_SuffixIdentifier_1974_5_328()) { + if (jj_3R_SuffixIdentifier_1981_5_329()) { jj_scanpos = xsp; - if (jj_3R_SuffixIdentifier_1977_5_329()) { + if (jj_3R_SuffixIdentifier_1984_5_330()) { jj_scanpos = xsp; - if (jj_3R_SuffixIdentifier_1980_5_330()) return true; + if (jj_3R_SuffixIdentifier_1987_5_331()) return true; } } return false; @@ -25268,945 +25246,1000 @@ private boolean jj_3R_SuffixIdentifier_1973_3_150() private boolean jj_3_60() { - if (jj_3R_FunctionCall_1929_3_146()) return true; + if (jj_3R_FunctionCall_1936_3_147()) return true; return false; } - private boolean jj_3R_TruncateBucketStatement_3504_5_255() + private boolean jj_3R_TruncateRecordStatement_3511_5_258() { - if (jj_scan_token(UNSAFE)) return true; + if (jj_scan_token(LBRACKET)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_TruncateRecordStatement_3514_9_436()) jj_scanpos = xsp; + if (jj_scan_token(RBRACKET)) return true; return false; } - private boolean jj_3R_TruncateBucketStatement_3502_5_254() + private boolean jj_3R_TruncateRecordStatement_3509_5_257() { - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_3R_Rid_631_3_145()) return true; return false; } - private boolean jj_3R_TruncateBucketStatement_3500_5_253() + private boolean jj_3R_LevelZeroIdentifier_1971_5_328() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_PCollection_3046_3_148()) return true; return false; } - private boolean jj_3R_LevelZeroIdentifier_1964_5_327() + private boolean jj_3R_TruncateRecordStatement_3507_3_90() { - if (jj_3R_PCollection_3047_3_147()) return true; + if (jj_scan_token(TRUNCATE)) return true; + if (jj_scan_token(RECORD)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_TruncateRecordStatement_3509_5_257()) { + jj_scanpos = xsp; + if (jj_3R_TruncateRecordStatement_3511_5_258()) return true; + } return false; } - private boolean jj_3R_LevelZeroIdentifier_1962_5_326() + private boolean jj_3R_LevelZeroIdentifier_1969_5_327() { if (jj_scan_token(THIS)) return true; return false; } - private boolean jj_3R_TruncateBucketStatement_3498_3_88() + private boolean jj_3R_LevelZeroIdentifier_1966_5_326() { - if (jj_scan_token(TRUNCATE)) return true; - if (jj_scan_token(BUCKET)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_TruncateBucketStatement_3500_5_253()) { - jj_scanpos = xsp; - if (jj_3R_TruncateBucketStatement_3502_5_254()) return true; - } - xsp = jj_scanpos; - if (jj_3R_TruncateBucketStatement_3504_5_255()) jj_scanpos = xsp; + if (jj_3R_FunctionCall_1936_3_147()) return true; return false; } - private boolean jj_3R_LevelZeroIdentifier_1959_5_325() + private boolean jj_3R_TruncateBucketStatement_3500_5_256() { - if (jj_3R_FunctionCall_1929_3_146()) return true; + if (jj_scan_token(UNSAFE)) return true; return false; } - private boolean jj_3R_LevelZeroIdentifier_1958_3_149() + private boolean jj_3R_LevelZeroIdentifier_1965_3_150() { Token xsp; xsp = jj_scanpos; - if (jj_3R_LevelZeroIdentifier_1959_5_325()) { + if (jj_3R_LevelZeroIdentifier_1966_5_326()) { jj_scanpos = xsp; - if (jj_3R_LevelZeroIdentifier_1962_5_326()) { + if (jj_3R_LevelZeroIdentifier_1969_5_327()) { jj_scanpos = xsp; - if (jj_3R_LevelZeroIdentifier_1964_5_327()) return true; + if (jj_3R_LevelZeroIdentifier_1971_5_328()) return true; } } return false; } - private boolean jj_3R_TruncateTypeStatement_3491_5_252() + private boolean jj_3R_TruncateBucketStatement_3498_5_255() { - if (jj_scan_token(UNSAFE)) return true; + if (jj_3R_PInteger_914_3_67()) return true; return false; } - private boolean jj_3R_TruncateTypeStatement_3490_5_251() + private boolean jj_3R_TruncateBucketStatement_3496_5_254() { - if (jj_scan_token(POLYMORPHIC)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_MethodCall_1950_7_471() + private boolean jj_3R_MethodCall_1957_7_472() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_TruncateTypeStatement_3488_3_87() + private boolean jj_3R_TruncateBucketStatement_3494_3_89() { if (jj_scan_token(TRUNCATE)) return true; - if (jj_scan_token(TYPE)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(BUCKET)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_TruncateTypeStatement_3490_5_251()) jj_scanpos = xsp; + if (jj_3R_TruncateBucketStatement_3496_5_254()) { + jj_scanpos = xsp; + if (jj_3R_TruncateBucketStatement_3498_5_255()) return true; + } xsp = jj_scanpos; - if (jj_3R_TruncateTypeStatement_3491_5_252()) jj_scanpos = xsp; + if (jj_3R_TruncateBucketStatement_3500_5_256()) jj_scanpos = xsp; return false; } - private boolean jj_3R_MethodCall_1949_5_340() + private boolean jj_3R_MethodCall_1956_5_341() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_MethodCall_1950_7_471()) { jj_scanpos = xsp; break; } + if (jj_3R_MethodCall_1957_7_472()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_MethodCall_1947_3_155() + private boolean jj_3R_MethodCall_1954_3_156() { if (jj_scan_token(DOT)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; if (jj_scan_token(LPAREN)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_MethodCall_1949_5_340()) jj_scanpos = xsp; + if (jj_3R_MethodCall_1956_5_341()) jj_scanpos = xsp; if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_FunctionCall_1937_7_323() + private boolean jj_3R_TruncateTypeStatement_3487_5_253() { - if (jj_3R_Expression_2037_3_131()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_FunctionCall_1937_77_460()) { jj_scanpos = xsp; break; } - } + if (jj_scan_token(UNSAFE)) return true; return false; } - private boolean jj_3R_BothPathItemOpt_3470_6_410() + private boolean jj_3R_TruncateTypeStatement_3486_5_252() { - if (jj_3R_MatchFilter_3228_3_402()) return true; + if (jj_scan_token(POLYMORPHIC)) return true; return false; } - private boolean jj_3R_BothPathItemOpt_3464_10_517() + private boolean jj_3R_TruncateTypeStatement_3484_3_88() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(TRUNCATE)) return true; + if (jj_scan_token(TYPE)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_TruncateTypeStatement_3486_5_252()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_TruncateTypeStatement_3487_5_253()) jj_scanpos = xsp; return false; } - private boolean jj_3R_FunctionCall_1932_5_322() + private boolean jj_3R_FunctionCall_1944_7_324() { - if (jj_scan_token(DISTINCT)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_FunctionCall_1944_77_461()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_FunctionCall_1930_5_321() + private boolean jj_3R_FunctionCall_1939_5_323() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(DISTINCT)) return true; return false; } - private boolean jj_3R_BothPathItemOpt_3462_7_409() + private boolean jj_3R_FunctionCall_1937_5_322() { - if (jj_scan_token(MINUS)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_BothPathItemOpt_3464_10_517()) jj_scanpos = xsp; - if (jj_scan_token(MINUS)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_FunctionCall_1929_3_146() + private boolean jj_3R_FunctionCall_1936_3_147() { Token xsp; xsp = jj_scanpos; - if (jj_3R_FunctionCall_1930_5_321()) { + if (jj_3R_FunctionCall_1937_5_322()) { jj_scanpos = xsp; - if (jj_3R_FunctionCall_1932_5_322()) return true; + if (jj_3R_FunctionCall_1939_5_323()) return true; } if (jj_scan_token(LPAREN)) return true; xsp = jj_scanpos; - if (jj_3R_FunctionCall_1937_7_323()) jj_scanpos = xsp; + if (jj_3R_FunctionCall_1944_7_324()) jj_scanpos = xsp; if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_BothPathItemOpt_3461_5_205() + private boolean jj_3R_BothPathItemOpt_3466_6_411() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_BothPathItemOpt_3462_7_409()) { - jj_scanpos = xsp; - if (jj_scan_token(193)) return true; - } - xsp = jj_scanpos; - if (jj_3R_BothPathItemOpt_3470_6_410()) jj_scanpos = xsp; + if (jj_3R_MatchFilter_3225_3_403()) return true; return false; } - private boolean jj_3R_RecordAttribute_1920_3_148() + private boolean jj_3R_BothPathItemOpt_3460_10_518() + { + if (jj_3R_Identifier_733_1_141()) return true; + return false; + } + + private boolean jj_3R_RecordAttribute_1927_3_149() { if (jj_scan_token(RECORD_ATTRIBUTE)) return true; return false; } - private boolean jj_3R_Alias_1913_3_457() + private boolean jj_3R_BothPathItemOpt_3458_7_410() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(MINUS)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_BothPathItemOpt_3460_10_518()) jj_scanpos = xsp; + if (jj_scan_token(MINUS)) return true; return false; } - private boolean jj_3R_InPathItemOpt_3443_6_408() + private boolean jj_3R_BothPathItemOpt_3457_5_206() { - if (jj_3R_MatchFilter_3228_3_402()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_BothPathItemOpt_3458_7_410()) { + jj_scanpos = xsp; + if (jj_scan_token(194)) return true; + } + xsp = jj_scanpos; + if (jj_3R_BothPathItemOpt_3466_6_411()) jj_scanpos = xsp; return false; } - private boolean jj_3R_InPathItemOpt_3437_10_516() + private boolean jj_3R_Alias_1920_3_458() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_ArrayRangeSelector_1899_9_465() + private boolean jj_3R_ArrayRangeSelector_1906_9_466() { if (jj_scan_token(ELLIPSIS)) return true; return false; } - private boolean jj_3R_InPathItemOpt_3435_7_407() + private boolean jj_3R_ArrayRangeSelector_1904_9_465() { - if (jj_scan_token(MINUS)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_InPathItemOpt_3437_10_516()) jj_scanpos = xsp; - if (jj_scan_token(MINUS)) return true; + if (jj_scan_token(RANGE)) return true; return false; } - private boolean jj_3R_ArrayRangeSelector_1897_9_464() + private boolean jj_3R_InPathItemOpt_3439_6_409() { - if (jj_scan_token(RANGE)) return true; + if (jj_3R_MatchFilter_3225_3_403()) return true; return false; } - private boolean jj_3R_InPathItemOpt_3433_5_204() + private boolean jj_3R_InPathItemOpt_3433_10_517() { - if (jj_scan_token(LT)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_InPathItemOpt_3435_7_407()) { - jj_scanpos = xsp; - if (jj_scan_token(193)) return true; - } - xsp = jj_scanpos; - if (jj_3R_InPathItemOpt_3443_6_408()) jj_scanpos = xsp; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_ArrayRangeSelector_1894_5_335() + private boolean jj_3R_ArrayRangeSelector_1901_5_336() { - if (jj_3R_ArrayNumberSelector_1849_3_463()) return true; + if (jj_3R_ArrayNumberSelector_1856_3_464()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_ArrayRangeSelector_1897_9_464()) { + if (jj_3R_ArrayRangeSelector_1904_9_465()) { jj_scanpos = xsp; - if (jj_3R_ArrayRangeSelector_1899_9_465()) return true; + if (jj_3R_ArrayRangeSelector_1906_9_466()) return true; } - if (jj_3R_ArrayNumberSelector_1849_3_463()) return true; + if (jj_3R_ArrayNumberSelector_1856_3_464()) return true; return false; } - private boolean jj_3R_ArrayRangeSelector_1882_5_334() + private boolean jj_3R_InPathItemOpt_3431_7_408() { - if (jj_scan_token(ELLIPSIS_INTEGER_RANGE)) return true; + if (jj_scan_token(MINUS)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_InPathItemOpt_3433_10_517()) jj_scanpos = xsp; + if (jj_scan_token(MINUS)) return true; return false; } - private boolean jj_3R_OutPathItemOpt_3415_6_406() + private boolean jj_3R_InPathItemOpt_3429_5_205() { - if (jj_3R_MatchFilter_3228_3_402()) return true; + if (jj_scan_token(LT)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_InPathItemOpt_3431_7_408()) { + jj_scanpos = xsp; + if (jj_scan_token(194)) return true; + } + xsp = jj_scanpos; + if (jj_3R_InPathItemOpt_3439_6_409()) jj_scanpos = xsp; return false; } - private boolean jj_3R_OutPathItemOpt_3408_10_515() + private boolean jj_3R_ArrayRangeSelector_1889_5_335() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(ELLIPSIS_INTEGER_RANGE)) return true; return false; } - private boolean jj_3R_OutPathItemOpt_3406_7_405() + private boolean jj_3R_ArrayRangeSelector_1878_5_334() { - if (jj_scan_token(MINUS)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_OutPathItemOpt_3408_10_515()) jj_scanpos = xsp; - if (jj_scan_token(MINUS)) return true; + if (jj_scan_token(INTEGER_RANGE)) return true; return false; } - private boolean jj_3R_ArrayRangeSelector_1871_5_333() + private boolean jj_3R_OutPathItemOpt_3411_6_407() { - if (jj_scan_token(INTEGER_RANGE)) return true; + if (jj_3R_MatchFilter_3225_3_403()) return true; return false; } - private boolean jj_3R_OutPathItemOpt_3405_5_203() + private boolean jj_3R_ArrayRangeSelector_1877_3_153() { Token xsp; xsp = jj_scanpos; - if (jj_3R_OutPathItemOpt_3406_7_405()) { + if (jj_3R_ArrayRangeSelector_1878_5_334()) { + jj_scanpos = xsp; + if (jj_3R_ArrayRangeSelector_1889_5_335()) { jj_scanpos = xsp; - if (jj_scan_token(193)) return true; + if (jj_3R_ArrayRangeSelector_1901_5_336()) return true; + } } - if (jj_scan_token(GT)) return true; - xsp = jj_scanpos; - if (jj_3R_OutPathItemOpt_3415_6_406()) jj_scanpos = xsp; return false; } - private boolean jj_3R_ArrayRangeSelector_1870_3_152() + private boolean jj_3R_OutPathItemOpt_3404_10_516() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_ArrayRangeSelector_1871_5_333()) { - jj_scanpos = xsp; - if (jj_3R_ArrayRangeSelector_1882_5_334()) { - jj_scanpos = xsp; - if (jj_3R_ArrayRangeSelector_1894_5_335()) return true; - } - } + if (jj_3R_Identifier_733_1_141()) return true; return false; } private boolean jj_3_59() { - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_3R_PInteger_914_3_67()) return true; return false; } - private boolean jj_3R_ArraySingleValuesSelector_1863_5_339() + private boolean jj_3R_ArraySingleValuesSelector_1870_5_340() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_ArraySelector_1833_3_338()) return true; + if (jj_3R_ArraySelector_1840_3_339()) return true; + return false; + } + + private boolean jj_3R_OutPathItemOpt_3402_7_406() + { + if (jj_scan_token(MINUS)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_OutPathItemOpt_3404_10_516()) jj_scanpos = xsp; + if (jj_scan_token(MINUS)) return true; return false; } private boolean jj_3_58() { - if (jj_3R_InputParameter_1710_3_145()) return true; + if (jj_3R_InputParameter_1717_3_146()) return true; return false; } - private boolean jj_3R_ArraySingleValuesSelector_1862_3_154() + private boolean jj_3R_ArraySingleValuesSelector_1869_3_155() { - if (jj_3R_ArraySelector_1833_3_338()) return true; + if (jj_3R_ArraySelector_1840_3_339()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_ArraySingleValuesSelector_1863_5_339()) { jj_scanpos = xsp; break; } + if (jj_3R_ArraySingleValuesSelector_1870_5_340()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_ArrayNumberSelector_1853_5_565() + private boolean jj_3R_OutPathItemOpt_3401_5_204() { - if (jj_scan_token(INTEGER_LITERAL)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_OutPathItemOpt_3402_7_406()) { + jj_scanpos = xsp; + if (jj_scan_token(194)) return true; + } + if (jj_scan_token(GT)) return true; + xsp = jj_scanpos; + if (jj_3R_OutPathItemOpt_3411_6_407()) jj_scanpos = xsp; return false; } - private boolean jj_3_57() + private boolean jj_3R_ArrayNumberSelector_1860_5_566() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_scan_token(INTEGER_LITERAL)) return true; return false; } - private boolean jj_3R_ArrayNumberSelector_1850_5_564() + private boolean jj_3_57() { - if (jj_3R_InputParameter_1710_3_145()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_BothPathItem_3380_10_514() + private boolean jj_3R_ArrayNumberSelector_1857_5_565() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_InputParameter_1717_3_146()) return true; return false; } private boolean jj_3_56() { - if (jj_3R_InputParameter_1710_3_145()) return true; + if (jj_3R_InputParameter_1717_3_146()) return true; return false; } - private boolean jj_3R_ArrayNumberSelector_1849_3_463() + private boolean jj_3R_ArrayNumberSelector_1856_3_464() { Token xsp; xsp = jj_scanpos; - if (jj_3R_ArrayNumberSelector_1850_5_564()) { + if (jj_3R_ArrayNumberSelector_1857_5_565()) { jj_scanpos = xsp; - if (jj_3R_ArrayNumberSelector_1853_5_565()) return true; + if (jj_3R_ArrayNumberSelector_1860_5_566()) return true; } return false; } private boolean jj_3_55() { - if (jj_3R_Rid_624_3_144()) return true; + if (jj_3R_Rid_631_3_145()) return true; return false; } - private boolean jj_3R_BothPathItem_3378_7_403() + private boolean jj_3R_ArraySelector_1847_5_471() { - if (jj_scan_token(MINUS)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_BothPathItem_3380_10_514()) jj_scanpos = xsp; - if (jj_scan_token(MINUS)) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_BothPathItem_3377_5_202() + private boolean jj_3R_BothPathItem_3376_10_515() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_BothPathItem_3378_7_403()) { - jj_scanpos = xsp; - if (jj_scan_token(193)) return true; - } - if (jj_3R_MatchFilter_3228_3_402()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_ArraySelector_1840_5_470() + private boolean jj_3R_ArraySelector_1844_5_470() { - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_InputParameter_1717_3_146()) return true; return false; } - private boolean jj_3R_ArraySelector_1837_5_469() + private boolean jj_3R_ArraySelector_1841_5_469() { - if (jj_3R_InputParameter_1710_3_145()) return true; + if (jj_3R_Rid_631_3_145()) return true; return false; } - private boolean jj_3R_ArraySelector_1834_5_468() + private boolean jj_3R_BothPathItem_3374_7_404() { - if (jj_3R_Rid_624_3_144()) return true; + if (jj_scan_token(MINUS)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_BothPathItem_3376_10_515()) jj_scanpos = xsp; + if (jj_scan_token(MINUS)) return true; return false; } - private boolean jj_3R_ArraySelector_1833_3_338() + private boolean jj_3R_ArraySelector_1840_3_339() { Token xsp; xsp = jj_scanpos; - if (jj_3R_ArraySelector_1834_5_468()) { + if (jj_3R_ArraySelector_1841_5_469()) { jj_scanpos = xsp; - if (jj_3R_ArraySelector_1837_5_469()) { + if (jj_3R_ArraySelector_1844_5_470()) { jj_scanpos = xsp; - if (jj_3R_ArraySelector_1840_5_470()) return true; + if (jj_3R_ArraySelector_1847_5_471()) return true; } } return false; } - private boolean jj_3R_NestedProjectionItem_1827_4_688() + private boolean jj_3R_BothPathItem_3373_5_203() { - if (jj_scan_token(AS)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_BothPathItem_3374_7_404()) { + jj_scanpos = xsp; + if (jj_scan_token(194)) return true; + } + if (jj_3R_MatchFilter_3225_3_403()) return true; return false; } - private boolean jj_3R_NestedProjectionItem_1826_4_687() + private boolean jj_3R_NestedProjectionItem_1834_4_690() { - if (jj_3R_NestedProjection_1788_3_456()) return true; + if (jj_scan_token(AS)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_NestedProjectionItem_1823_6_773() + private boolean jj_3R_NestedProjectionItem_1833_4_689() { - if (jj_scan_token(STAR)) return true; + if (jj_3R_NestedProjection_1795_3_457()) return true; return false; } - private boolean jj_3R_InPathItem_3353_10_865() + private boolean jj_3R_NestedProjectionItem_1830_6_776() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(STAR)) return true; return false; } - private boolean jj_3R_NestedProjectionItem_1821_6_772() + private boolean jj_3R_NestedProjectionItem_1828_6_775() { if (jj_scan_token(BANG)) return true; return false; } - private boolean jj_3R_NestedProjectionItem_1820_5_686() + private boolean jj_3R_NestedProjectionItem_1827_5_688() { Token xsp; xsp = jj_scanpos; - if (jj_3R_NestedProjectionItem_1821_6_772()) jj_scanpos = xsp; - if (jj_3R_Expression_2037_3_131()) return true; - xsp = jj_scanpos; - if (jj_3R_NestedProjectionItem_1823_6_773()) jj_scanpos = xsp; - return false; - } - - private boolean jj_3R_InPathItem_3351_7_862() - { - if (jj_scan_token(MINUS)) return true; - Token xsp; + if (jj_3R_NestedProjectionItem_1828_6_775()) jj_scanpos = xsp; + if (jj_3R_Expression_2044_3_132()) return true; xsp = jj_scanpos; - if (jj_3R_InPathItem_3353_10_865()) jj_scanpos = xsp; - if (jj_scan_token(MINUS)) return true; + if (jj_3R_NestedProjectionItem_1830_6_776()) jj_scanpos = xsp; return false; } - private boolean jj_3R_Projection_1764_59_642() + private boolean jj_3R_Projection_1771_59_644() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_ProjectionItem_1776_3_143()) return true; + if (jj_3R_ProjectionItem_1783_3_144()) return true; return false; } - private boolean jj_3R_NestedProjectionItem_1817_5_685() + private boolean jj_3R_NestedProjectionItem_1824_5_687() { if (jj_scan_token(STAR)) return true; return false; } - private boolean jj_3R_InPathItem_3349_5_857() - { - if (jj_scan_token(LT)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_InPathItem_3351_7_862()) { - jj_scanpos = xsp; - if (jj_scan_token(193)) return true; - } - if (jj_3R_MatchFilter_3228_3_402()) return true; - return false; - } - - private boolean jj_3R_NestedProjectionItem_1816_3_558() + private boolean jj_3R_NestedProjectionItem_1823_3_559() { Token xsp; xsp = jj_scanpos; - if (jj_3R_NestedProjectionItem_1817_5_685()) { + if (jj_3R_NestedProjectionItem_1824_5_687()) { jj_scanpos = xsp; - if (jj_3R_NestedProjectionItem_1820_5_686()) return true; + if (jj_3R_NestedProjectionItem_1827_5_688()) return true; } xsp = jj_scanpos; - if (jj_3R_NestedProjectionItem_1826_4_687()) jj_scanpos = xsp; + if (jj_3R_NestedProjectionItem_1833_4_689()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_NestedProjectionItem_1827_4_688()) jj_scanpos = xsp; + if (jj_3R_NestedProjectionItem_1834_4_690()) jj_scanpos = xsp; return false; } - private boolean jj_3R_Projection_1760_57_641() + private boolean jj_3R_InPathItem_3349_10_867() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_ProjectionItem_1776_3_143()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_NestedProjection_1799_5_559() + private boolean jj_3R_Projection_1767_57_643() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_NestedProjectionItem_1816_3_558()) return true; + if (jj_3R_ProjectionItem_1783_3_144()) return true; return false; } - private boolean jj_3R_OutPathItem_3324_10_512() + private boolean jj_3R_InPathItem_3347_7_864() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(MINUS)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_InPathItem_3349_10_867()) jj_scanpos = xsp; + if (jj_scan_token(MINUS)) return true; return false; } - private boolean jj_3R_OutPathItem_3322_7_401() + private boolean jj_3R_InPathItem_3345_5_859() { - if (jj_scan_token(MINUS)) return true; + if (jj_scan_token(LT)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_OutPathItem_3324_10_512()) jj_scanpos = xsp; - if (jj_scan_token(MINUS)) return true; + if (jj_3R_InPathItem_3347_7_864()) { + jj_scanpos = xsp; + if (jj_scan_token(194)) return true; + } + if (jj_3R_MatchFilter_3225_3_403()) return true; + return false; + } + + private boolean jj_3R_NestedProjection_1806_5_560() + { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_NestedProjectionItem_1823_3_559()) return true; return false; } - private boolean jj_3R_NestedProjection_1788_3_456() + private boolean jj_3R_NestedProjection_1795_3_457() { if (jj_scan_token(COLON)) return true; if (jj_scan_token(LBRACE)) return true; - if (jj_3R_NestedProjectionItem_1816_3_558()) return true; + if (jj_3R_NestedProjectionItem_1823_3_559()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_NestedProjection_1799_5_559()) { jj_scanpos = xsp; break; } + if (jj_3R_NestedProjection_1806_5_560()) { jj_scanpos = xsp; break; } } if (jj_scan_token(RBRACE)) return true; return false; } - private boolean jj_3R_OutPathItem_3321_5_201() + private boolean jj_3R_OutPathItem_3320_10_513() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_OutPathItem_3322_7_401()) { - jj_scanpos = xsp; - if (jj_scan_token(193)) return true; - } - if (jj_scan_token(GT)) return true; - if (jj_3R_MatchFilter_3228_3_402()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_ProjectionItem_1779_5_317() + private boolean jj_3R_ProjectionItem_1786_5_318() { if (jj_scan_token(AS)) return true; - if (jj_3R_Alias_1913_3_457()) return true; + if (jj_3R_Alias_1920_3_458()) return true; return false; } - private boolean jj_3R_ProjectionItem_1778_5_316() + private boolean jj_3R_ProjectionItem_1785_5_317() { - if (jj_3R_NestedProjection_1788_3_456()) return true; + if (jj_3R_NestedProjection_1795_3_457()) return true; return false; } - private boolean jj_3R_MatchFilterItem_3311_5_714() + private boolean jj_3R_OutPathItem_3318_7_402() { - if (jj_scan_token(PATH_ALIAS)) return true; - if (jj_scan_token(COLON)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(MINUS)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_OutPathItem_3320_10_513()) jj_scanpos = xsp; + if (jj_scan_token(MINUS)) return true; return false; } - private boolean jj_3R_ProjectionItem_1776_4_315() + private boolean jj_3R_ProjectionItem_1783_4_316() { if (jj_scan_token(BANG)) return true; return false; } - private boolean jj_3R_ProjectionItem_1776_3_143() + private boolean jj_3R_OutPathItem_3317_5_202() { Token xsp; xsp = jj_scanpos; - if (jj_3R_ProjectionItem_1776_4_315()) jj_scanpos = xsp; - if (jj_3R_Expression_2037_3_131()) return true; - xsp = jj_scanpos; - if (jj_3R_ProjectionItem_1778_5_316()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_ProjectionItem_1779_5_317()) jj_scanpos = xsp; + if (jj_3R_OutPathItem_3318_7_402()) { + jj_scanpos = xsp; + if (jj_scan_token(194)) return true; + } + if (jj_scan_token(GT)) return true; + if (jj_3R_MatchFilter_3225_3_403()) return true; return false; } - private boolean jj_3R_MatchFilterItem_3303_9_796() + private boolean jj_3R_ProjectionItem_1783_3_144() { - if (jj_scan_token(FALSE)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_ProjectionItem_1783_4_316()) jj_scanpos = xsp; + if (jj_3R_Expression_2044_3_132()) return true; + xsp = jj_scanpos; + if (jj_3R_ProjectionItem_1785_5_317()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_ProjectionItem_1786_5_318()) jj_scanpos = xsp; return false; } - private boolean jj_3R_MatchFilterItem_3307_5_713() + private boolean jj_3_54() { - if (jj_scan_token(DEPTH_ALIAS)) return true; - if (jj_scan_token(COLON)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_ProjectionItem_1783_3_144()) return true; return false; } - private boolean jj_3R_MatchFilterItem_3301_9_795() + private boolean jj_3R_MatchFilterItem_3307_5_716() { - if (jj_scan_token(TRUE)) return true; + if (jj_scan_token(PATH_ALIAS)) return true; + if (jj_scan_token(COLON)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3_54() + private boolean jj_3R_Projection_1769_5_522() { - if (jj_3R_ProjectionItem_1776_3_143()) return true; - return false; - } - - private boolean jj_3R_MatchFilterItem_3298_5_712() - { - if (jj_scan_token(OPTIONAL)) return true; - if (jj_scan_token(COLON)) return true; + if (jj_scan_token(DISTINCT)) return true; + if (jj_3R_ProjectionItem_1783_3_144()) return true; Token xsp; - xsp = jj_scanpos; - if (jj_3R_MatchFilterItem_3301_9_795()) { - jj_scanpos = xsp; - if (jj_3R_MatchFilterItem_3303_9_796()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3R_Projection_1771_59_644()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_Projection_1762_5_521() + private boolean jj_3R_MatchFilterItem_3299_9_799() { - if (jj_scan_token(DISTINCT)) return true; - if (jj_3R_ProjectionItem_1776_3_143()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_Projection_1764_59_642()) { jj_scanpos = xsp; break; } - } + if (jj_scan_token(FALSE)) return true; return false; } - private boolean jj_3R_MatchFilterItem_3294_5_711() + private boolean jj_3R_MatchFilterItem_3303_5_715() { - if (jj_scan_token(MAXDEPTH)) return true; + if (jj_scan_token(DEPTH_ALIAS)) return true; if (jj_scan_token(COLON)) return true; - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_3R_Identifier_733_1_141()) return true; + return false; + } + + private boolean jj_3R_MatchFilterItem_3297_9_798() + { + if (jj_scan_token(TRUE)) return true; return false; } - private boolean jj_3R_Projection_1759_5_520() + private boolean jj_3R_Projection_1766_5_521() { - if (jj_3R_ProjectionItem_1776_3_143()) return true; + if (jj_3R_ProjectionItem_1783_3_144()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_Projection_1760_57_641()) { jj_scanpos = xsp; break; } + if (jj_3R_Projection_1767_57_643()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_Projection_1758_3_419() + private boolean jj_3R_Projection_1765_3_420() { Token xsp; xsp = jj_scanpos; - if (jj_3R_Projection_1759_5_520()) { + if (jj_3R_Projection_1766_5_521()) { jj_scanpos = xsp; - if (jj_3R_Projection_1762_5_521()) return true; + if (jj_3R_Projection_1769_5_522()) return true; } return false; } - private boolean jj_3R_MatchFilterItem_3286_5_710() + private boolean jj_3R_MatchFilterItem_3294_5_714() { - if (jj_scan_token(WHILE)) return true; + if (jj_scan_token(OPTIONAL)) return true; if (jj_scan_token(COLON)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_WhereClause_2378_3_158()) return true; - if (jj_scan_token(RPAREN)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_MatchFilterItem_3297_9_798()) { + jj_scanpos = xsp; + if (jj_3R_MatchFilterItem_3299_9_799()) return true; + } return false; } - private boolean jj_3R_MatchFilterItem_3278_5_709() + private boolean jj_3R_MatchFilterItem_3290_5_713() { - if (jj_scan_token(WHERE)) return true; + if (jj_scan_token(MAXDEPTH)) return true; if (jj_scan_token(COLON)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_WhereClause_2378_3_158()) return true; - if (jj_scan_token(RPAREN)) return true; + if (jj_3R_PInteger_914_3_67()) return true; return false; } - private boolean jj_3R_NamedParameter_1743_5_563() + private boolean jj_3R_NamedParameter_1750_5_564() { if (jj_scan_token(FROM)) return true; return false; } - private boolean jj_3R_NamedParameter_1741_5_562() + private boolean jj_3R_NamedParameter_1748_5_563() { if (jj_scan_token(LIMIT)) return true; return false; } - private boolean jj_3R_MatchFilterItem_3274_5_708() + private boolean jj_3R_MatchFilterItem_3282_5_712() { - if (jj_scan_token(AS)) return true; + if (jj_scan_token(WHILE)) return true; if (jj_scan_token(COLON)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_WhereClause_2385_3_159()) return true; + if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_NamedParameter_1739_5_561() + private boolean jj_3R_NamedParameter_1746_5_562() { if (jj_scan_token(SKIP2)) return true; return false; } - private boolean jj_3R_NamedParameter_1737_5_560() + private boolean jj_3R_NamedParameter_1744_5_561() + { + if (jj_3R_Identifier_733_1_141()) return true; + return false; + } + + private boolean jj_3R_NamedParameter_1742_3_460() + { + if (jj_scan_token(COLON)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_NamedParameter_1744_5_561()) { + jj_scanpos = xsp; + if (jj_3R_NamedParameter_1746_5_562()) { + jj_scanpos = xsp; + if (jj_3R_NamedParameter_1748_5_563()) { + jj_scanpos = xsp; + if (jj_3R_NamedParameter_1750_5_564()) return true; + } + } + } + return false; + } + + private boolean jj_3R_MatchFilterItem_3274_5_711() + { + if (jj_scan_token(WHERE)) return true; + if (jj_scan_token(COLON)) return true; + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_WhereClause_2385_3_159()) return true; + if (jj_scan_token(RPAREN)) return true; + return false; + } + + private boolean jj_3R_MatchFilterItem_3270_5_710() + { + if (jj_scan_token(AS)) return true; + if (jj_scan_token(COLON)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + return false; + } + + private boolean jj_3R_CreateEdgeStatement_1698_40_421() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(BUCKET)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_MatchFilterItem_3266_9_794() + private boolean jj_3R_MatchFilterItem_3262_9_797() { if (jj_scan_token(BUCKET_NUMBER_IDENTIFIER)) return true; return false; } - private boolean jj_3R_MatchFilterItem_3270_5_707() + private boolean jj_3R_MatchFilterItem_3266_5_709() { if (jj_scan_token(RID)) return true; if (jj_scan_token(COLON)) return true; - if (jj_3R_Rid_624_3_144()) return true; + if (jj_3R_Rid_631_3_145()) return true; return false; } - private boolean jj_3R_MatchFilterItem_3264_9_793() + private boolean jj_3R_MatchFilterItem_3260_9_796() { if (jj_scan_token(BUCKET_IDENTIFIER)) return true; return false; } - private boolean jj_3R_NamedParameter_1735_3_459() + private boolean jj_3R_PositionalParameter_1728_3_459() { - if (jj_scan_token(COLON)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_NamedParameter_1737_5_560()) { - jj_scanpos = xsp; - if (jj_3R_NamedParameter_1739_5_561()) { - jj_scanpos = xsp; - if (jj_3R_NamedParameter_1741_5_562()) { - jj_scanpos = xsp; - if (jj_3R_NamedParameter_1743_5_563()) return true; - } - } - } + if (jj_scan_token(HOOK)) return true; return false; } - private boolean jj_3R_MatchFilterItem_3258_10_792() + private boolean jj_3R_MatchFilterItem_3254_10_795() { - if (jj_3R_PInteger_907_3_66()) return true; + if (jj_3R_PInteger_914_3_67()) return true; return false; } - private boolean jj_3R_MatchFilterItem_3262_5_706() + private boolean jj_3R_MatchFilterItem_3258_5_708() { Token xsp; xsp = jj_scanpos; - if (jj_3R_MatchFilterItem_3264_9_793()) { + if (jj_3R_MatchFilterItem_3260_9_796()) { jj_scanpos = xsp; - if (jj_3R_MatchFilterItem_3266_9_794()) return true; + if (jj_3R_MatchFilterItem_3262_9_797()) return true; } return false; } - private boolean jj_3R_MatchFilterItem_3256_10_791() + private boolean jj_3R_MatchFilterItem_3252_10_794() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_CreateEdgeStatement_1691_40_420() + private boolean jj_3R_InputParameter_1720_5_321() { - if (jj_scan_token(BUCKET)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_NamedParameter_1742_3_460()) return true; return false; } - private boolean jj_3R_PositionalParameter_1721_3_458() + private boolean jj_3R_InputParameter_1718_5_320() { - if (jj_scan_token(HOOK)) return true; + if (jj_3R_PositionalParameter_1728_3_459()) return true; return false; } - private boolean jj_3R_MatchFilterItem_3253_5_705() + private boolean jj_3R_InputParameter_1717_3_146() + { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_InputParameter_1718_5_320()) { + jj_scanpos = xsp; + if (jj_3R_InputParameter_1720_5_321()) return true; + } + return false; + } + + private boolean jj_3R_MatchFilterItem_3249_5_707() { if (jj_scan_token(BUCKET)) return true; if (jj_scan_token(COLON)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_MatchFilterItem_3256_10_791()) { + if (jj_3R_MatchFilterItem_3252_10_794()) { jj_scanpos = xsp; - if (jj_3R_MatchFilterItem_3258_10_792()) return true; + if (jj_3R_MatchFilterItem_3254_10_795()) return true; } return false; } - private boolean jj_3R_MatchFilterItem_3249_5_704() + private boolean jj_3R_MatchFilterItem_3245_5_706() { if (jj_scan_token(TYPES)) return true; if (jj_scan_token(COLON)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_InputParameter_1713_5_320() + private boolean jj_3R_CreateEdgeStatement_1710_5_235() { - if (jj_3R_NamedParameter_1735_3_459()) return true; + if (jj_3R_Wait_3030_3_423()) return true; return false; } - private boolean jj_3R_InputParameter_1711_5_319() + private boolean jj_3R_CreateEdgeStatement_1709_5_234() { - if (jj_3R_PositionalParameter_1721_3_458()) return true; + if (jj_3R_Retry_3037_3_422()) return true; return false; } - private boolean jj_3R_MatchFilterItem_3245_5_703() + private boolean jj_3R_CreateEdgeStatement_1708_5_233() { - if (jj_scan_token(TYPE)) return true; - if (jj_scan_token(COLON)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_InsertBody_1572_3_138()) return true; return false; } - private boolean jj_3R_InputParameter_1710_3_145() + private boolean jj_3R_CreateEdgeStatement_1707_5_232() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_InputParameter_1711_5_319()) { - jj_scanpos = xsp; - if (jj_3R_InputParameter_1713_5_320()) return true; - } + if (jj_scan_token(IF)) return true; + if (jj_scan_token(NOT)) return true; + if (jj_scan_token(EXISTS)) return true; return false; } - private boolean jj_3R_MatchFilterItem_3244_3_596() + private boolean jj_3R_MatchFilterItem_3241_5_705() + { + if (jj_scan_token(TYPE)) return true; + if (jj_scan_token(COLON)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + return false; + } + + private boolean jj_3R_MatchFilterItem_3240_3_597() { Token xsp; xsp = jj_scanpos; - if (jj_3R_MatchFilterItem_3245_5_703()) { + if (jj_3R_MatchFilterItem_3241_5_705()) { jj_scanpos = xsp; - if (jj_3R_MatchFilterItem_3249_5_704()) { + if (jj_3R_MatchFilterItem_3245_5_706()) { jj_scanpos = xsp; - if (jj_3R_MatchFilterItem_3253_5_705()) { + if (jj_3R_MatchFilterItem_3249_5_707()) { jj_scanpos = xsp; - if (jj_3R_MatchFilterItem_3262_5_706()) { + if (jj_3R_MatchFilterItem_3258_5_708()) { jj_scanpos = xsp; - if (jj_3R_MatchFilterItem_3270_5_707()) { + if (jj_3R_MatchFilterItem_3266_5_709()) { jj_scanpos = xsp; - if (jj_3R_MatchFilterItem_3274_5_708()) { + if (jj_3R_MatchFilterItem_3270_5_710()) { jj_scanpos = xsp; - if (jj_3R_MatchFilterItem_3278_5_709()) { + if (jj_3R_MatchFilterItem_3274_5_711()) { jj_scanpos = xsp; - if (jj_3R_MatchFilterItem_3286_5_710()) { + if (jj_3R_MatchFilterItem_3282_5_712()) { jj_scanpos = xsp; - if (jj_3R_MatchFilterItem_3294_5_711()) { + if (jj_3R_MatchFilterItem_3290_5_713()) { jj_scanpos = xsp; - if (jj_3R_MatchFilterItem_3298_5_712()) { + if (jj_3R_MatchFilterItem_3294_5_714()) { jj_scanpos = xsp; - if (jj_3R_MatchFilterItem_3307_5_713()) { + if (jj_3R_MatchFilterItem_3303_5_715()) { jj_scanpos = xsp; - if (jj_3R_MatchFilterItem_3311_5_714()) return true; + if (jj_3R_MatchFilterItem_3307_5_716()) return true; } } } @@ -26221,476 +26254,450 @@ private boolean jj_3R_MatchFilterItem_3244_3_596() return false; } - private boolean jj_3R_MatchFilter_3233_11_597() + private boolean jj_3R_MatchFilter_3229_9_598() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_MatchFilterItem_3244_3_596()) return true; - return false; - } - - private boolean jj_3R_CreateEdgeStatement_1703_5_234() - { - if (jj_3R_Wait_3024_3_422()) return true; + if (jj_3R_MatchFilterItem_3240_3_597()) return true; return false; } - private boolean jj_3R_CreateEdgeStatement_1702_5_233() + private boolean jj_3R_CreateEdgeStatement_1698_5_231() { - if (jj_3R_Retry_3032_3_421()) return true; + if (jj_3R_Identifier_733_1_141()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_CreateEdgeStatement_1698_40_421()) jj_scanpos = xsp; return false; } - private boolean jj_3R_CreateEdgeStatement_1701_5_232() + private boolean jj_3R_CreateEdgeStatement_1697_3_83() { - if (jj_3R_InsertBody_1565_3_137()) return true; + if (jj_scan_token(CREATE)) return true; + if (jj_scan_token(EDGE)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_CreateEdgeStatement_1698_5_231()) jj_scanpos = xsp; + if (jj_scan_token(FROM)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + if (jj_scan_token(TO)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + xsp = jj_scanpos; + if (jj_3R_CreateEdgeStatement_1707_5_232()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_CreateEdgeStatement_1708_5_233()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_CreateEdgeStatement_1709_5_234()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_CreateEdgeStatement_1710_5_235()) jj_scanpos = xsp; return false; } - private boolean jj_3R_MatchFilter_3231_9_513() + private boolean jj_3R_MatchFilter_3227_7_514() { - if (jj_3R_MatchFilterItem_3244_3_596()) return true; + if (jj_3R_MatchFilterItem_3240_3_597()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_MatchFilter_3233_11_597()) { jj_scanpos = xsp; break; } + if (jj_3R_MatchFilter_3229_9_598()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_CreateEdgeStatement_1700_5_231() - { - if (jj_scan_token(IF)) return true; - if (jj_scan_token(NOT)) return true; - if (jj_scan_token(EXISTS)) return true; - return false; - } - - private boolean jj_3R_CreateEdgeStatement_1691_5_230() + private boolean jj_3_53() { - if (jj_3R_Identifier_726_1_140()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_CreateEdgeStatement_1691_40_420()) jj_scanpos = xsp; + if (jj_3R_InsertBody_1572_3_138()) return true; return false; } - private boolean jj_3_138() + private boolean jj_3_52() { - if (jj_3R_BothPathItemOpt_3461_5_205()) return true; + if (jj_3R_Bucket_2327_3_143()) return true; return false; } - private boolean jj_3R_MatchFilter_3228_3_402() + private boolean jj_3R_MatchFilter_3225_3_403() { if (jj_scan_token(LBRACE)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_MatchFilter_3231_9_513()) jj_scanpos = xsp; + if (jj_3R_MatchFilter_3227_7_514()) jj_scanpos = xsp; if (jj_scan_token(RBRACE)) return true; return false; } - private boolean jj_3R_MultiMatchPathItemArrows_3221_7_859() + private boolean jj_3_138() { - if (jj_3R_MatchFilter_3228_3_402()) return true; + if (jj_3R_BothPathItemOpt_3457_5_206()) return true; return false; } - private boolean jj_3R_CreateEdgeStatement_1690_3_82() + private boolean jj_3R_CreateVertexStatementNoTarget_1687_3_79() { if (jj_scan_token(CREATE)) return true; - if (jj_scan_token(EDGE)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_CreateEdgeStatement_1691_5_230()) jj_scanpos = xsp; - if (jj_scan_token(FROM)) return true; - if (jj_3R_Expression_2037_3_131()) return true; - if (jj_scan_token(TO)) return true; - if (jj_3R_Expression_2037_3_131()) return true; - xsp = jj_scanpos; - if (jj_3R_CreateEdgeStatement_1700_5_231()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_CreateEdgeStatement_1701_5_232()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_CreateEdgeStatement_1702_5_233()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_CreateEdgeStatement_1703_5_234()) jj_scanpos = xsp; + if (jj_scan_token(VERTEX)) return true; + if (jj_3R_InsertBody_1572_3_138()) return true; + return false; + } + + private boolean jj_3R_MultiMatchPathItemArrows_3218_5_861() + { + if (jj_3R_MatchFilter_3225_3_403()) return true; return false; } private boolean jj_3_137() { - if (jj_3R_InPathItemOpt_3433_5_204()) return true; + if (jj_3R_InPathItemOpt_3429_5_205()) return true; return false; } - private boolean jj_3_136() + private boolean jj_3R_CreateVertexStatement_1681_5_229() { - if (jj_3R_OutPathItemOpt_3405_5_203()) return true; + if (jj_3R_InsertBody_1572_3_138()) return true; return false; } - private boolean jj_3_53() + private boolean jj_3R_CreateVertexStatement_1680_5_228() { - if (jj_3R_InsertBody_1565_3_137()) return true; + if (jj_scan_token(RETURN)) return true; + if (jj_3R_Projection_1765_3_420()) return true; return false; } - private boolean jj_3_52() + private boolean jj_3_136() { - if (jj_3R_Bucket_2320_3_142()) return true; + if (jj_3R_OutPathItemOpt_3401_5_204()) return true; return false; } - private boolean jj_3R_MultiMatchPathItemArrows_3211_9_511() + private boolean jj_3_51() { - if (jj_3R_BothPathItemOpt_3461_5_205()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_CreateVertexStatementNoTarget_1680_3_78() + private boolean jj_3R_CreateVertexStatement_1677_5_227() { - if (jj_scan_token(CREATE)) return true; - if (jj_scan_token(VERTEX)) return true; - if (jj_3R_InsertBody_1565_3_137()) return true; + if (jj_3R_Bucket_2327_3_143()) return true; return false; } - private boolean jj_3R_MultiMatchPathItemArrows_3208_9_510() + private boolean jj_3R_CreateVertexStatement_1672_9_419() { - if (jj_3R_InPathItemOpt_3433_5_204()) return true; + if (jj_scan_token(BUCKET)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_MultiMatchPathItemArrows_3205_9_509() + private boolean jj_3R_MultiMatchPathItemArrows_3208_7_512() { - if (jj_3R_OutPathItemOpt_3405_5_203()) return true; + if (jj_3R_BothPathItemOpt_3457_5_206()) return true; return false; } - private boolean jj_3R_CreateVertexStatement_1674_5_228() + private boolean jj_3R_MultiMatchPathItemArrows_3205_7_511() { - if (jj_3R_InsertBody_1565_3_137()) return true; + if (jj_3R_InPathItemOpt_3429_5_205()) return true; return false; } - private boolean jj_3R_CreateVertexStatement_1673_5_227() + private boolean jj_3R_MultiMatchPathItemArrows_3202_7_510() { - if (jj_scan_token(RETURN)) return true; - if (jj_3R_Projection_1758_3_419()) return true; + if (jj_3R_OutPathItemOpt_3401_5_204()) return true; return false; } - private boolean jj_3_51() + private boolean jj_3R_CreateVertexStatement_1668_5_226() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_CreateVertexStatement_1672_9_419()) jj_scanpos = xsp; return false; } - private boolean jj_3R_MultiMatchPathItemArrows_3204_7_399() + private boolean jj_3R_MultiMatchPathItemArrows_3201_5_400() { Token xsp; xsp = jj_scanpos; - if (jj_3R_MultiMatchPathItemArrows_3205_9_509()) { + if (jj_3R_MultiMatchPathItemArrows_3202_7_510()) { jj_scanpos = xsp; - if (jj_3R_MultiMatchPathItemArrows_3208_9_510()) { + if (jj_3R_MultiMatchPathItemArrows_3205_7_511()) { jj_scanpos = xsp; - if (jj_3R_MultiMatchPathItemArrows_3211_9_511()) return true; + if (jj_3R_MultiMatchPathItemArrows_3208_7_512()) return true; } } return false; } - private boolean jj_3R_CreateVertexStatement_1670_5_226() - { - if (jj_3R_Bucket_2320_3_142()) return true; - return false; - } - - private boolean jj_3R_CreateVertexStatement_1665_9_418() + private boolean jj_3R_CreateVertexStatement_1666_3_80() { - if (jj_scan_token(BUCKET)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(CREATE)) return true; + if (jj_scan_token(VERTEX)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_CreateVertexStatement_1668_5_226()) { + jj_scanpos = xsp; + if (jj_3R_CreateVertexStatement_1677_5_227()) return true; + } + xsp = jj_scanpos; + if (jj_3R_CreateVertexStatement_1680_5_228()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_CreateVertexStatement_1681_5_229()) jj_scanpos = xsp; return false; } - private boolean jj_3R_MultiMatchPathItemArrows_3200_3_199() + private boolean jj_3R_MultiMatchPathItemArrows_3198_3_200() { if (jj_scan_token(DOT)) return true; if (jj_scan_token(LPAREN)) return true; Token xsp; - if (jj_3R_MultiMatchPathItemArrows_3204_7_399()) return true; + if (jj_3R_MultiMatchPathItemArrows_3201_5_400()) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_MultiMatchPathItemArrows_3204_7_399()) { jj_scanpos = xsp; break; } + if (jj_3R_MultiMatchPathItemArrows_3201_5_400()) { jj_scanpos = xsp; break; } } if (jj_scan_token(RPAREN)) return true; xsp = jj_scanpos; - if (jj_3R_MultiMatchPathItemArrows_3221_7_859()) jj_scanpos = xsp; + if (jj_3R_MultiMatchPathItemArrows_3218_5_861()) jj_scanpos = xsp; return false; } private boolean jj_3_135() { - if (jj_3R_MatchPathItem_3151_3_198()) return true; + if (jj_3R_MatchPathItem_3149_3_199()) return true; return false; } - private boolean jj_3R_CreateVertexStatement_1661_5_225() + private boolean jj_3R_CreateVertexStatementEmpty_1657_5_230() { - if (jj_3R_Identifier_726_1_140()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_CreateVertexStatement_1665_9_418()) jj_scanpos = xsp; + if (jj_scan_token(BUCKET)) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_MultiMatchPathItem_3190_7_861() + private boolean jj_3R_MultiMatchPathItem_3188_7_863() { - if (jj_3R_MatchFilter_3228_3_402()) return true; + if (jj_3R_MatchFilter_3225_3_403()) return true; return false; } - private boolean jj_3R_CreateVertexStatement_1659_3_79() + private boolean jj_3R_CreateVertexStatementEmpty_1654_3_81() { if (jj_scan_token(CREATE)) return true; if (jj_scan_token(VERTEX)) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_CreateVertexStatement_1661_5_225()) { - jj_scanpos = xsp; - if (jj_3R_CreateVertexStatement_1670_5_226()) return true; - } - xsp = jj_scanpos; - if (jj_3R_CreateVertexStatement_1673_5_227()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_CreateVertexStatement_1674_5_228()) jj_scanpos = xsp; + if (jj_3R_CreateVertexStatementEmpty_1657_5_230()) jj_scanpos = xsp; return false; } - private boolean jj_3R_MultiMatchPathItem_3186_7_860() + private boolean jj_3R_MultiMatchPathItem_3184_7_862() { - if (jj_3R_MatchPathItem_3151_3_198()) return true; + if (jj_3R_MatchPathItem_3149_3_199()) return true; return false; } - private boolean jj_3R_CreateVertexStatementEmpty_1650_5_229() + private boolean jj_3R_CreateVertexStatementEmptyNoTarget_1647_3_82() { - if (jj_scan_token(BUCKET)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(CREATE)) return true; + if (jj_scan_token(VERTEX)) return true; return false; } - private boolean jj_3R_CreateVertexStatementEmpty_1647_3_80() + private boolean jj_3R_InsertBody_1636_12_456() { - if (jj_scan_token(CREATE)) return true; - if (jj_scan_token(VERTEX)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_CreateVertexStatementEmpty_1650_5_229()) jj_scanpos = xsp; + if (jj_3R_InputParameter_1717_3_146()) return true; + return false; + } + + private boolean jj_3R_InsertBody_1634_12_455() + { + if (jj_3R_Json_3076_3_212()) return true; return false; } - private boolean jj_3R_MultiMatchPathItem_3179_3_200() + private boolean jj_3R_MultiMatchPathItem_3177_3_201() { if (jj_scan_token(DOT)) return true; if (jj_scan_token(LPAREN)) return true; - if (jj_3R_MatchPathItemFirst_3170_3_400()) return true; + if (jj_3R_MatchPathItemFirst_3168_3_401()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_MultiMatchPathItem_3186_7_860()) { jj_scanpos = xsp; break; } + if (jj_3R_MultiMatchPathItem_3184_7_862()) { jj_scanpos = xsp; break; } } if (jj_scan_token(RPAREN)) return true; xsp = jj_scanpos; - if (jj_3R_MultiMatchPathItem_3190_7_861()) jj_scanpos = xsp; + if (jj_3R_MultiMatchPathItem_3188_7_863()) jj_scanpos = xsp; return false; } - private boolean jj_3R_MatchPathItemFirst_3172_7_864() + private boolean jj_3R_MatchPathItemFirst_3170_7_866() { - if (jj_3R_MatchFilter_3228_3_402()) return true; + if (jj_3R_MatchFilter_3225_3_403()) return true; return false; } - private boolean jj_3R_CreateVertexStatementEmptyNoTarget_1640_3_81() + private boolean jj_3R_InsertBody_1632_7_312() { - if (jj_scan_token(CREATE)) return true; - if (jj_scan_token(VERTEX)) return true; - return false; - } - - private boolean jj_3R_InsertBody_1629_12_455() - { - if (jj_3R_InputParameter_1710_3_145()) return true; + if (jj_scan_token(CONTENT)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_InsertBody_1634_12_455()) { + jj_scanpos = xsp; + if (jj_3R_InsertBody_1636_12_456()) return true; + } return false; } - private boolean jj_3R_InsertBody_1627_12_454() + private boolean jj_3R_MatchPathItemFirst_3168_3_401() { - if (jj_3R_Json_3078_3_211()) return true; + if (jj_3R_FunctionCall_1936_3_147()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_MatchPathItemFirst_3170_7_866()) jj_scanpos = xsp; return false; } - private boolean jj_3R_MatchPathItemFirst_3170_3_400() + private boolean jj_3R_FieldMatchPathItem_3161_7_865() { - if (jj_3R_FunctionCall_1929_3_146()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_MatchPathItemFirst_3172_7_864()) jj_scanpos = xsp; + if (jj_3R_MatchFilter_3225_3_403()) return true; return false; } - private boolean jj_3R_FieldMatchPathItem_3163_7_863() + private boolean jj_3R_InsertBody_1624_9_454() { - if (jj_3R_MatchFilter_3228_3_402()) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + if (jj_scan_token(EQ)) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_InsertBody_1625_7_311() + private boolean jj_3R_FieldMatchPathItem_3158_3_860() { - if (jj_scan_token(CONTENT)) return true; + if (jj_scan_token(DOT)) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_InsertBody_1627_12_454()) { - jj_scanpos = xsp; - if (jj_3R_InsertBody_1629_12_455()) return true; - } + if (jj_3R_FieldMatchPathItem_3161_7_865()) jj_scanpos = xsp; return false; } - private boolean jj_3R_FieldMatchPathItem_3160_3_858() + private boolean jj_3R_MatchPathItem_3151_7_405() { - if (jj_scan_token(DOT)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_FieldMatchPathItem_3163_7_863()) jj_scanpos = xsp; + if (jj_3R_MatchFilter_3225_3_403()) return true; return false; } - private boolean jj_3R_InsertBody_1617_9_453() + private boolean jj_3_50() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(SET)) return true; + if (jj_3R_Identifier_733_1_141()) return true; if (jj_scan_token(EQ)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_InsertBody_1624_9_454()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_MatchPathItem_3153_7_404() + private boolean jj_3R_InsertBody_1608_11_558() { - if (jj_3R_MatchFilter_3228_3_402()) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } private boolean jj_3_134() { - if (jj_3R_BothPathItem_3377_5_202()) return true; + if (jj_3R_BothPathItem_3373_5_203()) return true; return false; } - private boolean jj_3R_MatchPathItem_3151_3_198() + private boolean jj_3R_MatchPathItem_3149_3_199() { - if (jj_3R_MethodCall_1947_3_155()) return true; + if (jj_3R_MethodCall_1954_3_156()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_MatchPathItem_3153_7_404()) jj_scanpos = xsp; + if (jj_3R_MatchPathItem_3151_7_405()) jj_scanpos = xsp; return false; } private boolean jj_3_133() { - if (jj_3R_OutPathItem_3321_5_201()) return true; + if (jj_3R_OutPathItem_3317_5_202()) return true; return false; } - private boolean jj_3R_MatchExpression_3140_9_846() + private boolean jj_3R_MatchExpression_3138_9_848() { - if (jj_3R_FieldMatchPathItem_3160_3_858()) return true; + if (jj_3R_FieldMatchPathItem_3158_3_860()) return true; return false; } - private boolean jj_3_50() + private boolean jj_3R_MatchExpression_3135_9_847() { - if (jj_scan_token(SET)) return true; - if (jj_3R_Identifier_726_1_140()) return true; - if (jj_scan_token(EQ)) return true; - if (jj_3R_Expression_2037_3_131()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_InsertBody_1617_9_453()) { jj_scanpos = xsp; break; } - } + if (jj_3R_BothPathItem_3373_5_203()) return true; return false; } - private boolean jj_3R_InsertBody_1601_11_557() + private boolean jj_3R_InsertBody_1600_9_453() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_Expression_2044_3_132()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_InsertBody_1608_11_558()) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_MatchExpression_3137_9_845() + private boolean jj_3R_MatchExpression_3133_9_846() { - if (jj_3R_BothPathItem_3377_5_202()) return true; + if (jj_3R_InPathItem_3345_5_859()) return true; return false; } - private boolean jj_3R_MatchExpression_3135_9_844() + private boolean jj_3R_MatchExpression_3130_9_845() { - if (jj_3R_InPathItem_3349_5_857()) return true; + if (jj_3R_OutPathItem_3317_5_202()) return true; return false; } - private boolean jj_3R_MatchExpression_3132_9_843() + private boolean jj_3R_InsertBody_1595_9_452() { - if (jj_3R_OutPathItem_3321_5_201()) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } private boolean jj_3_132() { - if (jj_3R_MultiMatchPathItem_3179_3_200()) return true; - return false; - } - - private boolean jj_3R_InsertBody_1593_9_452() - { - if (jj_scan_token(COMMA)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_Expression_2037_3_131()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_InsertBody_1601_11_557()) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(RPAREN)) return true; + if (jj_3R_MultiMatchPathItem_3177_3_201()) return true; return false; } private boolean jj_3_131() { - if (jj_3R_MultiMatchPathItemArrows_3200_3_199()) return true; - return false; - } - - private boolean jj_3R_InsertBody_1588_9_451() - { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_MultiMatchPathItemArrows_3198_3_200()) return true; return false; } private boolean jj_3_130() { - if (jj_3R_MatchPathItem_3151_3_198()) return true; + if (jj_3R_MatchPathItem_3149_3_199()) return true; return false; } - private boolean jj_3R_MatchExpression_3122_7_821() + private boolean jj_3R_MatchExpression_3120_7_825() { Token xsp; xsp = jj_scanpos; @@ -26700,287 +26707,322 @@ private boolean jj_3R_MatchExpression_3122_7_821() jj_scanpos = xsp; if (jj_3_132()) { jj_scanpos = xsp; - if (jj_3R_MatchExpression_3132_9_843()) { + if (jj_3R_MatchExpression_3130_9_845()) { jj_scanpos = xsp; - if (jj_3R_MatchExpression_3135_9_844()) { + if (jj_3R_MatchExpression_3133_9_846()) { jj_scanpos = xsp; - if (jj_3R_MatchExpression_3137_9_845()) { + if (jj_3R_MatchExpression_3135_9_847()) { jj_scanpos = xsp; - if (jj_3R_MatchExpression_3140_9_846()) return true; - } + if (jj_3R_MatchExpression_3138_9_848()) return true; } } } } } - return false; - } - - private boolean jj_3R_MatchExpression_3119_3_579() - { - if (jj_3R_MatchFilter_3228_3_402()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_MatchExpression_3122_7_821()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_InsertBody_1575_9_141() + private boolean jj_3R_InsertBody_1582_9_142() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_Json_3103_11_771() + private boolean jj_3R_MatchExpression_3117_3_580() { - if (jj_scan_token(CHARACTER_LITERAL)) return true; - return false; - } - - private boolean jj_3R_Json_3101_11_770() - { - if (jj_3R_PString_712_3_248()) return true; - return false; - } - - private boolean jj_3R_Json_3099_11_769() - { - if (jj_scan_token(RECORD_ATTRIBUTE)) return true; + if (jj_3R_MatchFilter_3225_3_403()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_MatchExpression_3120_7_825()) { jj_scanpos = xsp; break; } + } return false; } private boolean jj_3_49() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_InsertBody_1575_9_141()) { jj_scanpos = xsp; break; } + if (jj_3R_InsertBody_1582_9_142()) { jj_scanpos = xsp; break; } } if (jj_scan_token(RPAREN)) return true; if (jj_scan_token(VALUES)) return true; if (jj_scan_token(LPAREN)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_InsertBody_1588_9_451()) { jj_scanpos = xsp; break; } + if (jj_3R_InsertBody_1595_9_452()) { jj_scanpos = xsp; break; } } if (jj_scan_token(RPAREN)) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_InsertBody_1593_9_452()) { jj_scanpos = xsp; break; } + if (jj_3R_InsertBody_1600_9_453()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_Json_3097_11_768() + private boolean jj_3R_Json_3101_11_774() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_scan_token(CHARACTER_LITERAL)) return true; return false; } - private boolean jj_3R_Json_3094_9_684() + private boolean jj_3R_Json_3099_11_773() + { + if (jj_3R_PString_719_3_249()) return true; + return false; + } + + private boolean jj_3R_InsertBody_1572_3_138() { - if (jj_scan_token(COMMA)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_Json_3097_11_768()) { - jj_scanpos = xsp; - if (jj_3R_Json_3099_11_769()) { + if (jj_3_49()) { jj_scanpos = xsp; - if (jj_3R_Json_3101_11_770()) { + if (jj_3_50()) { jj_scanpos = xsp; - if (jj_3R_Json_3103_11_771()) return true; - } + if (jj_3R_InsertBody_1632_7_312()) return true; } } - if (jj_scan_token(COLON)) return true; - if (jj_3R_Expression_2037_3_131()) return true; return false; } - private boolean jj_3R_InsertBody_1565_3_137() + private boolean jj_3R_Json_3097_11_772() + { + if (jj_scan_token(RECORD_ATTRIBUTE)) return true; + return false; + } + + private boolean jj_3_47() + { + if (jj_3R_SelectStatement_1149_3_131()) return true; + return false; + } + + private boolean jj_3R_Json_3095_11_771() + { + if (jj_3R_Identifier_733_1_141()) return true; + return false; + } + + private boolean jj_3R_InsertStatement_1531_40_695() + { + if (jj_scan_token(BUCKET)) return true; + if (jj_3R_Identifier_733_1_141()) return true; + return false; + } + + private boolean jj_3R_Json_3092_9_686() { + if (jj_scan_token(COMMA)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_49()) { + if (jj_3R_Json_3095_11_771()) { jj_scanpos = xsp; - if (jj_3_50()) { + if (jj_3R_Json_3097_11_772()) { + jj_scanpos = xsp; + if (jj_3R_Json_3099_11_773()) { jj_scanpos = xsp; - if (jj_3R_InsertBody_1625_7_311()) return true; + if (jj_3R_Json_3101_11_774()) return true; } } + } + if (jj_scan_token(COLON)) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3_47() + private boolean jj_3R_InsertStatement_1561_5_574() { - if (jj_3R_SelectStatement_1142_3_130()) return true; + if (jj_scan_token(UNSAFE)) return true; return false; } - private boolean jj_3R_InsertStatement_1524_40_693() + private boolean jj_3R_InsertStatement_1554_11_140() { - if (jj_scan_token(BUCKET)) return true; - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_SelectWithoutTargetStatement_1128_3_313()) return true; return false; } - private boolean jj_3R_Json_3089_9_683() + private boolean jj_3R_InsertStatement_1551_11_139() { - if (jj_scan_token(CHARACTER_LITERAL)) return true; + if (jj_3R_SelectStatement_1149_3_131()) return true; return false; } - private boolean jj_3R_Json_3087_9_682() + private boolean jj_3_46() { - if (jj_3R_PString_712_3_248()) return true; + if (jj_3R_SelectStatement_1149_3_131()) return true; return false; } - private boolean jj_3R_Json_3085_9_681() + private boolean jj_3R_Json_3087_9_685() { - if (jj_scan_token(RECORD_ATTRIBUTE)) return true; + if (jj_scan_token(CHARACTER_LITERAL)) return true; return false; } - private boolean jj_3R_InsertStatement_1554_5_573() + private boolean jj_3R_Json_3085_9_684() { - if (jj_scan_token(UNSAFE)) return true; + if (jj_3R_PString_719_3_249()) return true; return false; } - private boolean jj_3R_InsertStatement_1547_11_139() + private boolean jj_3R_Json_3083_9_683() { - if (jj_3R_SelectWithoutTargetStatement_1121_3_312()) return true; + if (jj_scan_token(RECORD_ATTRIBUTE)) return true; return false; } - private boolean jj_3R_Json_3083_9_680() + private boolean jj_3R_Json_3081_9_682() { - if (jj_3R_Identifier_726_1_140()) return true; + if (jj_3R_Identifier_733_1_141()) return true; return false; } - private boolean jj_3R_InsertStatement_1544_11_138() + private boolean jj_3_48() + { + if (jj_scan_token(LPAREN)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_InsertStatement_1551_11_139()) { + jj_scanpos = xsp; + if (jj_3R_InsertStatement_1554_11_140()) return true; + } + if (jj_scan_token(RPAREN)) return true; + return false; + } + + private boolean jj_3R_InsertStatement_1544_10_791() { - if (jj_3R_SelectStatement_1142_3_130()) return true; + if (jj_3R_SelectWithoutTargetStatement_1128_3_313()) return true; return false; } - private boolean jj_3_46() + private boolean jj_3R_InsertStatement_1541_10_790() { - if (jj_3R_SelectStatement_1142_3_130()) return true; + if (jj_3R_SelectStatement_1149_3_131()) return true; return false; } - private boolean jj_3R_Json_3081_7_555() + private boolean jj_3R_Json_3079_7_556() { Token xsp; xsp = jj_scanpos; - if (jj_3R_Json_3083_9_680()) { + if (jj_3R_Json_3081_9_682()) { jj_scanpos = xsp; - if (jj_3R_Json_3085_9_681()) { + if (jj_3R_Json_3083_9_683()) { jj_scanpos = xsp; - if (jj_3R_Json_3087_9_682()) { + if (jj_3R_Json_3085_9_684()) { jj_scanpos = xsp; - if (jj_3R_Json_3089_9_683()) return true; + if (jj_3R_Json_3087_9_685()) return true; } } } if (jj_scan_token(COLON)) return true; - if (jj_3R_Expression_2037_3_131()) return true; + if (jj_3R_Expression_2044_3_132()) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_Json_3094_9_684()) { jj_scanpos = xsp; break; } + if (jj_3R_Json_3092_9_686()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3_129() + private boolean jj_3_45() { - if (jj_3R_Modifier_2002_3_156()) return true; + if (jj_3R_InsertBody_1572_3_138()) return true; return false; } - private boolean jj_3_48() + private boolean jj_3R_InsertStatement_1540_8_697() { - if (jj_scan_token(LPAREN)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_InsertStatement_1544_11_138()) { + if (jj_3R_InsertStatement_1541_10_790()) { jj_scanpos = xsp; - if (jj_3R_InsertStatement_1547_11_139()) return true; + if (jj_3R_InsertStatement_1544_10_791()) return true; } - if (jj_scan_token(RPAREN)) return true; return false; } - private boolean jj_3R_InsertStatement_1537_10_788() + private boolean jj_3_129() { - if (jj_3R_SelectWithoutTargetStatement_1121_3_312()) return true; + if (jj_3R_Modifier_2009_3_157()) return true; + return false; + } + + private boolean jj_3R_InsertStatement_1538_7_696() + { + if (jj_scan_token(FROM)) return true; return false; } - private boolean jj_3R_Json_3078_3_211() + private boolean jj_3R_Json_3076_3_212() { if (jj_scan_token(LBRACE)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_Json_3081_7_555()) jj_scanpos = xsp; + if (jj_3R_Json_3079_7_556()) jj_scanpos = xsp; if (jj_scan_token(RBRACE)) return true; return false; } - private boolean jj_3R_InsertStatement_1534_10_787() + private boolean jj_3R_InsertStatement_1538_5_573() { - if (jj_3R_SelectStatement_1142_3_130()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_InsertStatement_1538_7_696()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_InsertStatement_1540_8_697()) { + jj_scanpos = xsp; + if (jj_3_48()) return true; + } return false; } - private boolean jj_3_45() + private boolean jj_3R_InsertStatement_1536_5_572() { - if (jj_3R_InsertBody_1565_3_137()) return true; + if (jj_scan_token(RETURN)) return true; + if (jj_3R_Projection_1765_3_420()) return true; return false; } - private boolean jj_3R_InsertStatement_1533_8_695() + private boolean jj_3R_InsertStatement_1535_5_571() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_InsertStatement_1534_10_787()) { - jj_scanpos = xsp; - if (jj_3R_InsertStatement_1537_10_788()) return true; - } + if (jj_3R_InsertBody_1572_3_138()) return true; return false; } - private boolean jj_3R_TraverseProjectionItem_3067_7_842() + private boolean jj_3R_UpdateRemoveItem_1505_33_754() { - if (jj_3R_Modifier_2002_3_156()) return true; + if (jj_scan_token(EQ)) return true; + if (jj_3R_Expression_2044_3_132()) return true; return false; } - private boolean jj_3R_InsertStatement_1531_7_694() + private boolean jj_3R_InsertStatement_1533_5_570() { - if (jj_scan_token(FROM)) return true; + if (jj_3R_Bucket_2327_3_143()) return true; return false; } - private boolean jj_3R_InsertStatement_1531_5_572() + private boolean jj_3R_TraverseProjectionItem_3065_7_844() { + if (jj_3R_Modifier_2009_3_157()) return true; + return false; + } + + private boolean jj_3R_InsertStatement_1531_5_569() + { + if (jj_3R_Identifier_733_1_141()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_InsertStatement_1531_7_694()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_InsertStatement_1533_8_695()) { - jj_scanpos = xsp; - if (jj_3_48()) return true; - } + if (jj_3R_InsertStatement_1531_40_695()) jj_scanpos = xsp; return false; } @@ -26994,7 +27036,7 @@ private boolean jj_3R_InsertStatement_1531_5_572() private Token jj_scanpos, jj_lastpos; private int jj_la; private int jj_gen; - final private int[] jj_la1 = new int[366]; + final private int[] jj_la1 = new int[367]; static private int[] jj_la1_0; static private int[] jj_la1_1; static private int[] jj_la1_2; @@ -27014,28 +27056,28 @@ private boolean jj_3R_InsertStatement_1531_5_572() jj_la1_init_7(); } private static void jj_la1_init_0() { - jj_la1_0 = new int[] {0x0,0x0,0xc4041000,0xd48ff000,0x10000000,0x0,0xc4041000,0x0,0x0,0x0,0xc4041000,0xe000,0x10000,0x0,0x1000,0x0,0x0,0xe000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x10000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x8000000,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x4000000,0x8000000,0x0,0x8000000,0x0,0x8000000,0x0,0xc4041000,0x8000000,0x0,0x0,0x1000000,0x0,0xc4041000,0x0,0x8000000,0x0,0x0,0x0,0x1000000,0x0,0xc4041000,0x0,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x2000000,0x2000,0x2000,0x2000,0x2002000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x0,0x0,0x0,0x0,0xc6041000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x0,0xc4041000,0x0,0xc4041000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc4051000,0x0,0xc4041000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x0,0xc4041000,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x0,0xc4041000,0x0,0xc4041000,0x0,0xc4041000,0x0,0x2000,0xc4041000,0x2000,0xc4041000,0x0,0x0,0xc4041000,0x0,0x0,0x0,0xc4041000,0x0,0x0,0xc4041000,0x0,0x0,0xc4041000,0x0,0x0,0x0,0xc4041000,0x0,0x0,0xc4041000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc4041000,0xc4041000,0x0,0xc4041000,0xc4041000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18000000,0xc4041000,0x0,0x0,0x18000000,0xc4041000,0x0,0xc4041000,0x0,0xc4041000,0x0,0xc4041000,0x0,0x0,0xc4041000,0x0,0x0,0xc4041000,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0xc4041000,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x0,0x0,0xc4041000,0x40000000,0x0,0x0,0xc4041000,0x40000000,0x0,0xc4041000,0xc4041000,0x0,0x0,0xc4041000,0xc4041000,0x0,0x0,0xc4041000,0xc4041000,0x0,0x0,0xc4041000,0x0,0x0,0xc4041000,0x0,0x0,0x0,0xc4041000,0x0,0x0,0x8bf000,0x0,0x0,0x0,0x0,0x0,0x0,0xc4041000,0xd48ff000,0x10000000,0xd48ff000,0x10000000,0xd48ff000,0x10000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; + jj_la1_0 = new int[] {0x0,0x0,0xc4041000,0xd48ff000,0x10000000,0x0,0xc4041000,0x0,0x0,0x0,0xc4041000,0xe000,0x10000,0x0,0x1000,0x0,0x0,0xe000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x10000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x8000000,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x4000000,0x8000000,0x0,0x8000000,0x0,0x8000000,0x0,0xc4041000,0x8000000,0x0,0x0,0x1000000,0x0,0xc4041000,0x0,0x8000000,0x0,0x0,0x0,0x1000000,0x0,0xc4041000,0x0,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x2000000,0x2000,0x2000,0x2000,0x2002000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x0,0x0,0x0,0x0,0xc6041000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x0,0xc4041000,0x0,0xc4041000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc4051000,0x0,0xc4041000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x0,0xc4041000,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x0,0xc4041000,0x0,0xc4041000,0x0,0xc4041000,0x0,0x2000,0xc4041000,0x2000,0xc4041000,0x0,0x0,0xc4041000,0x0,0x0,0x0,0xc4041000,0x0,0x0,0xc4041000,0x0,0x0,0xc4041000,0x0,0x0,0x0,0xc4041000,0x0,0x0,0xc4041000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc4041000,0xc4041000,0x0,0xc4041000,0xc4041000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18000000,0xc4041000,0x0,0x0,0x18000000,0xc4041000,0x0,0xc4041000,0x0,0xc4041000,0x0,0xc4041000,0x0,0x0,0xc4041000,0x0,0x0,0xc4041000,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0xc4041000,0x0,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x0,0x0,0xc4041000,0x40000000,0x0,0x0,0xc4041000,0x40000000,0x0,0xc4041000,0xc4041000,0x0,0x0,0xc4041000,0xc4041000,0x0,0x0,0xc4041000,0xc4041000,0x0,0x0,0xc4041000,0x0,0x0,0x0,0x0,0xc4041000,0x0,0x0,0x0,0xc4041000,0x0,0x0,0x8bf000,0x0,0x0,0x0,0x0,0x0,0xc4041000,0xd48ff000,0x10000000,0xd48ff000,0x10000000,0xd48ff000,0x10000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } private static void jj_la1_init_1() { - jj_la1_1 = new int[] {0x0,0x0,0x4404003f,0x6484063f,0x0,0x0,0x4404003f,0x0,0x0,0x0,0x4404023f,0x0,0x0,0x0,0x40800000,0x0,0x20000000,0x0,0x20000000,0x0,0x8000,0x50000,0x58000,0x58000,0x80000,0x4404023f,0x20000000,0x0,0x2000,0x1000,0x0,0x8000,0x50000,0x58000,0x58000,0x80000,0x0,0x4404003f,0x0,0x0,0x8000,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x200000,0x2000,0x1000,0x0,0x50000,0x8000,0x0,0x800000,0x0,0x8000,0x80000000,0x0,0x0,0x0,0x4404003f,0x0,0x0,0x8000,0x0,0x8000,0x0,0x8000,0x4404003f,0x0,0x8000,0x7f,0x0,0x3000000,0x4404023f,0x800000,0x0,0x8000,0x80000,0x7f,0x0,0x3000000,0x4404023f,0x800000,0x0,0x8000,0x80000,0x0,0x0,0x18,0x42,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x4404003f,0x800000,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x0,0x800000,0x0,0x4404003f,0x0,0x11,0x10000000,0x8000000,0x0,0x4405803f,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x0,0x4404023f,0x0,0x200000,0x0,0x0,0x0,0x4404003f,0x0,0x4404023f,0x0,0x4404023f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4404023f,0x0,0x4404023f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4404003f,0x0,0x0,0x4404003f,0x0,0x0,0x100,0x80,0x4404023f,0x200,0x0,0x0,0x0,0x0,0x4404003f,0x0,0x4404023f,0x0,0x4404023f,0x0,0x4404023f,0x0,0x0,0x4404023f,0x0,0x4404023f,0x0,0x0,0x4404003f,0x500000,0x500000,0x0,0x4404003f,0x500000,0x500000,0x4404003f,0x0,0x0,0x4404003f,0x500000,0x500000,0x0,0x4404003f,0x500000,0x500000,0x4404003f,0x0,0x0,0x0,0x0,0x0,0x50000,0x800000,0x800000,0x0,0x4404023f,0x4404003f,0x0,0x4404003f,0x4404003f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x4404003f,0x0,0x0,0x200000,0x4404003f,0x0,0x4404003f,0x0,0x4404003f,0x0,0x4404003f,0x0,0x0,0x4404003f,0x0,0x0,0x4404003f,0x0,0x0,0x0,0x80000000,0x4404003f,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x4404003f,0x0,0x80000000,0x0,0x0,0x0,0x4404003f,0x0,0x0,0x0,0x4404003f,0x0,0x4000,0x0,0x4404003f,0x0,0x4000,0x4404003f,0x4404003f,0x0,0x0,0x4404003f,0x4404003f,0x0,0x0,0x4404003f,0x4404003f,0x30000,0x0,0x4404003f,0x0,0x0,0x4404003f,0x0,0x0,0x0,0x4404003f,0x0,0x0,0x60800400,0x0,0x80,0x0,0x0,0x0,0x10000000,0x4404023f,0x6484063f,0x0,0x6484063f,0x0,0x6484063f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; + jj_la1_1 = new int[] {0x0,0x0,0x4404003f,0x6484063f,0x0,0x0,0x4404003f,0x0,0x0,0x0,0x4404023f,0x0,0x0,0x0,0x40800000,0x0,0x20000000,0x0,0x20000000,0x0,0x8000,0x50000,0x58000,0x58000,0x80000,0x4404023f,0x20000000,0x0,0x2000,0x1000,0x0,0x8000,0x50000,0x58000,0x58000,0x80000,0x0,0x4404003f,0x0,0x0,0x8000,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x200000,0x2000,0x1000,0x0,0x50000,0x8000,0x0,0x800000,0x0,0x8000,0x80000000,0x0,0x0,0x0,0x4404003f,0x0,0x0,0x8000,0x0,0x8000,0x0,0x8000,0x4404003f,0x0,0x8000,0x7f,0x0,0x3000000,0x4404023f,0x800000,0x0,0x8000,0x80000,0x7f,0x0,0x3000000,0x4404023f,0x800000,0x0,0x8000,0x80000,0x0,0x0,0x18,0x42,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x4404003f,0x800000,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x0,0x800000,0x0,0x4404003f,0x0,0x11,0x10000000,0x8000000,0x0,0x4405803f,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x0,0x4404023f,0x0,0x200000,0x0,0x0,0x0,0x4404003f,0x0,0x4404023f,0x0,0x4404023f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4404023f,0x0,0x4404023f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4404003f,0x0,0x0,0x4404003f,0x0,0x0,0x100,0x80,0x4404023f,0x200,0x0,0x0,0x0,0x0,0x4404003f,0x0,0x4404023f,0x0,0x4404023f,0x0,0x4404023f,0x0,0x0,0x4404023f,0x0,0x4404023f,0x0,0x0,0x4404003f,0x500000,0x500000,0x0,0x4404003f,0x500000,0x500000,0x4404003f,0x0,0x0,0x4404003f,0x500000,0x500000,0x0,0x4404003f,0x500000,0x500000,0x4404003f,0x0,0x0,0x0,0x0,0x0,0x50000,0x800000,0x800000,0x0,0x4404023f,0x4404003f,0x0,0x4404003f,0x4404003f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x4404003f,0x0,0x0,0x200000,0x4404003f,0x0,0x4404003f,0x0,0x4404003f,0x0,0x4404003f,0x0,0x0,0x4404003f,0x0,0x0,0x4404003f,0x0,0x0,0x0,0x80000000,0x4404003f,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x4404003f,0x0,0x80000000,0x0,0x0,0x0,0x4404003f,0x0,0x0,0x0,0x4404003f,0x0,0x4000,0x0,0x4404003f,0x0,0x4000,0x4404003f,0x4404003f,0x0,0x0,0x4404003f,0x4404003f,0x0,0x0,0x4404003f,0x4404003f,0x30000,0x0,0x4404003f,0x0,0x0,0x0,0x0,0x4404003f,0x0,0x0,0x0,0x4404003f,0x0,0x0,0x60800400,0x0,0x80,0x0,0x0,0x10000000,0x4404023f,0x6484063f,0x0,0x6484063f,0x0,0x6484063f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } private static void jj_la1_init_2() { - jj_la1_2 = new int[] {0x0,0x0,0xffedff38,0xfffdff38,0x0,0x0,0xffedff38,0x0,0x0,0x0,0xffedff38,0x0,0x0,0x0,0x100000,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0xffedff38,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0xffedff38,0x80,0x0,0x0,0x6,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffedff38,0x0,0x0,0x0,0x0,0x0,0xffedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffedff38,0x0,0x0,0x0,0x0,0x0,0xffedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffedff38,0x0,0x0,0x0,0x0,0x0,0xffedff38,0x0,0xffedff38,0x0,0xffedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffedff38,0x0,0xffedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffedff38,0x0,0x0,0xffedff38,0x0,0x0,0x0,0x0,0xffedff38,0x0,0x28,0x0,0x0,0x28,0xffedff38,0x0,0xffedff38,0x0,0xffedff38,0x0,0xffedff38,0x28,0x0,0xffedff38,0x0,0xffedff38,0x0,0x0,0xffedff38,0x0,0x0,0x0,0xffedff38,0x0,0x0,0xffedff38,0x0,0x0,0xffedff38,0x0,0x0,0x0,0xffedff38,0x0,0x0,0xffedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x1000,0x0,0xffedff38,0xffedff38,0x0,0xffedff38,0xffedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa80,0xffedff38,0x0,0x0,0xa80,0xffedff38,0x0,0xffedff38,0x0,0xffedff38,0x0,0xffedff38,0x0,0x0,0xffedff38,0x0,0x0,0xffedff38,0x0,0x0,0x20000,0x0,0xffedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x80000,0x0,0x0,0x200000,0x0,0x0,0x80000,0x0,0x0,0x200000,0x0,0x0,0x80000,0x0,0x0,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1400400,0xffedff38,0x0,0x0,0x0,0x0,0x0,0xffedff38,0x0,0x20000000,0x0,0xffedff38,0x0,0x0,0x0,0xffedff38,0x0,0x0,0xffedff38,0xffedff38,0x0,0x40000000,0xffedff38,0xffedff38,0x0,0x40000000,0xffedff38,0xffedff38,0x0,0x0,0xffedff38,0x0,0x10,0xffedff38,0x0,0x0,0x0,0xffedff38,0x0,0x0,0x8912000,0x0,0x0,0x0,0x0,0x0,0x0,0xffedff38,0xfffdff38,0x0,0xfffdff38,0x0,0xfffdff38,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x0,0x0,}; + jj_la1_2 = new int[] {0x0,0x0,0xbfedff38,0xbffdff38,0x0,0x0,0xbfedff38,0x0,0x0,0x0,0xbfedff38,0x0,0x0,0x0,0x100000,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0xbfedff38,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0xbfedff38,0x80,0x0,0x0,0x6,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xbfedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xbfedff38,0x0,0x0,0x0,0x0,0x0,0xbfedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xbfedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xbfedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xbfedff38,0x0,0x0,0x0,0x0,0x0,0xbfedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xbfedff38,0x0,0x0,0x0,0x0,0x0,0xbfedff38,0x0,0xbfedff38,0x0,0xbfedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xbfedff38,0x0,0xbfedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xbfedff38,0x0,0x0,0xbfedff38,0x0,0x0,0x0,0x0,0xbfedff38,0x0,0x28,0x0,0x0,0x28,0xbfedff38,0x0,0xbfedff38,0x0,0xbfedff38,0x0,0xbfedff38,0x28,0x0,0xbfedff38,0x0,0xbfedff38,0x0,0x0,0xbfedff38,0x0,0x0,0x0,0xbfedff38,0x0,0x0,0xbfedff38,0x0,0x0,0xbfedff38,0x0,0x0,0x0,0xbfedff38,0x0,0x0,0xbfedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x1000,0x0,0xbfedff38,0xbfedff38,0x0,0xbfedff38,0xbfedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa80,0xbfedff38,0x0,0x0,0xa80,0xbfedff38,0x0,0xbfedff38,0x0,0xbfedff38,0x0,0xbfedff38,0x0,0x0,0xbfedff38,0x0,0x0,0xbfedff38,0x0,0x0,0x20000,0x0,0xbfedff38,0x0,0x0,0x0,0x0,0x0,0x0,0x80000,0x0,0x0,0x200000,0x0,0x0,0x80000,0x0,0x0,0x200000,0x0,0x0,0x80000,0x0,0x0,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1400400,0xbfedff38,0x0,0x0,0x0,0x0,0x0,0xbfedff38,0x0,0x20000000,0x0,0xbfedff38,0x0,0x0,0x0,0xbfedff38,0x0,0x0,0xbfedff38,0xbfedff38,0x0,0x0,0xbfedff38,0xbfedff38,0x0,0x0,0xbfedff38,0xbfedff38,0x0,0x0,0xbfedff38,0x0,0x10,0x0,0x10,0xbfedff38,0x0,0x0,0x0,0xbfedff38,0x0,0x0,0x8912000,0x0,0x0,0x0,0x0,0x0,0xbfedff38,0xbffdff38,0x0,0xbffdff38,0x0,0xbffdff38,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x0,0x0,}; } private static void jj_la1_init_3() { - jj_la1_3 = new int[] {0x0,0x0,0xefffffee,0xefffffee,0x1000000,0x0,0xefffffee,0x0,0x0,0x0,0xefffffee,0x0,0x0,0x4,0x41e00060,0x800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xefffffee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xefffffee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xefffffee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xefffffee,0x0,0x0,0x0,0x0,0x0,0xefffffee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xefffffee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xefffffee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xefffffee,0x1000000,0x0,0x0,0x0,0x0,0xefffffee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xefffffee,0x0,0x0,0x0,0x0,0x0,0xefffffee,0x0,0xefffffee,0x0,0xefffffee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xefffffee,0x0,0xefffffee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xefffffee,0x0,0x0,0xefffffee,0x0,0x0,0x0,0x0,0xefffffee,0x0,0x0,0x0,0x0,0x0,0xefffffee,0x0,0xefffffee,0x0,0xefffffee,0x0,0xefffffee,0x0,0x0,0xefffffee,0x0,0xefffffee,0x0,0x0,0xefffffee,0x0,0x0,0x0,0xefffffee,0x0,0x0,0xefffffee,0x0,0x0,0xefffffee,0x0,0x0,0x0,0xefffffee,0x0,0x0,0xefffffee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xefffffee,0xefffffee,0x0,0xefffffee,0xefffffee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xefffffee,0x0,0x0,0x0,0xefffffee,0x0,0xefffffee,0x0,0xefffffee,0x0,0xefffffee,0x0,0x0,0xefffffee,0x0,0x0,0xefffffee,0x0,0x0,0x0,0x0,0xefffffee,0x0,0x0,0x0,0x0,0x1000000,0x0,0x0,0x0,0x0,0x0,0x1000000,0x0,0x0,0x0,0x0,0x0,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xefffffee,0x1000000,0x0,0x1000000,0x0,0x0,0xefffffee,0x1000000,0x0,0x1000000,0xefffffee,0x0,0x0,0x0,0xefffffee,0x0,0x0,0xefffffee,0xefffffee,0x0,0x0,0xefffffee,0xefffffee,0x0,0x0,0xefffffee,0xefffffee,0x0,0x1,0xefffffee,0x0,0x0,0xefffffee,0x1000000,0x1000000,0x0,0xefffffee,0x1000000,0x20000000,0x41e00864,0xc000000,0x0,0xc000000,0xc000000,0x2000000,0x0,0xefffffee,0xefffffee,0x1000000,0xefffffee,0x1000000,0xefffffee,0x1000000,0x0,0x0,0x0,0x0,0x8,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000000,0x0,0x80000,0x100000,}; + jj_la1_3 = new int[] {0x0,0x0,0xdfffffde,0xdfffffde,0x2000000,0x0,0xdfffffde,0x0,0x0,0x0,0xdfffffde,0x0,0x0,0x8,0x83c000c0,0x1000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdfffffde,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdfffffde,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdfffffde,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdfffffde,0x0,0x0,0x0,0x0,0x0,0xdfffffde,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdfffffde,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdfffffde,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdfffffde,0x2000000,0x0,0x0,0x0,0x0,0xdfffffde,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdfffffde,0x0,0x0,0x0,0x0,0x0,0xdfffffde,0x0,0xdfffffde,0x0,0xdfffffde,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdfffffde,0x0,0xdfffffde,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdfffffde,0x0,0x0,0xdfffffde,0x0,0x0,0x0,0x0,0xdfffffde,0x0,0x0,0x0,0x0,0x0,0xdfffffde,0x0,0xdfffffde,0x0,0xdfffffde,0x0,0xdfffffde,0x0,0x0,0xdfffffde,0x0,0xdfffffde,0x0,0x0,0xdfffffde,0x0,0x0,0x0,0xdfffffde,0x0,0x0,0xdfffffde,0x0,0x0,0xdfffffde,0x0,0x0,0x0,0xdfffffde,0x0,0x0,0xdfffffde,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdfffffde,0xdfffffde,0x0,0xdfffffde,0xdfffffde,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdfffffde,0x0,0x0,0x0,0xdfffffde,0x0,0xdfffffde,0x0,0xdfffffde,0x0,0xdfffffde,0x0,0x0,0xdfffffde,0x0,0x0,0xdfffffde,0x0,0x0,0x0,0x0,0xdfffffde,0x0,0x0,0x0,0x0,0x2000000,0x0,0x0,0x0,0x0,0x0,0x2000000,0x0,0x0,0x0,0x0,0x0,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdfffffde,0x2000000,0x0,0x2000000,0x0,0x0,0xdfffffde,0x2000000,0x0,0x2000000,0xdfffffde,0x0,0x0,0x0,0xdfffffde,0x0,0x0,0xdfffffde,0xdfffffde,0x0,0x4,0xdfffffde,0xdfffffde,0x0,0x4,0xdfffffde,0xdfffffde,0x0,0x1,0xdfffffde,0x0,0x0,0x0,0x0,0xdfffffde,0x2000000,0x2000000,0x0,0xdfffffde,0x2000000,0x40000000,0x83c010c8,0x18000000,0x0,0x18000000,0x4000000,0x0,0xdfffffde,0xdfffffde,0x2000000,0xdfffffde,0x2000000,0xdfffffde,0x2000000,0x0,0x0,0x0,0x0,0x10,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x100000,0x200000,}; } private static void jj_la1_init_4() { - jj_la1_4 = new int[] {0xc000,0x0,0x400fd7,0x8440bfff,0x20,0x8000,0xfd7,0x0,0x0,0x0,0x8440bfdf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8440bfdf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3fdf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400000,0x400000,0xfd7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfd7,0x0,0x0,0x0,0x0,0x0,0x8440bfdf,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x8440bfdf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfd7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfd7,0x0,0x0,0x0,0x0,0x0,0xfd7,0x0,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x8440bfdf,0x0,0x0,0x0,0x0,0x400000,0xfdf,0x0,0x8440bfdf,0x0,0x8440bfdf,0x1000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8440bfdf,0x80008000,0x8440bfdf,0x0,0x0,0x0,0x0,0x0,0x0,0x400000,0x0,0x0,0xfd7,0x0,0x0,0xfd7,0x0,0x0,0x0,0x0,0x8440bfdf,0x0,0x0,0x0,0x0,0x0,0x80008fd7,0x0,0x8440bfdf,0x0,0x8440bfdf,0x0,0x8440bfdf,0x0,0x0,0x8440bfdf,0x0,0x8440bfdf,0x80008000,0x0,0x2fd7,0x0,0x0,0x0,0x2fd7,0x0,0x0,0x2fd7,0x0,0x0,0x2fd7,0x0,0x0,0x0,0x2fd7,0x0,0x0,0x2fd7,0x0,0x0,0x400000,0x400000,0x400000,0x0,0x0,0x0,0x0,0x8440bfdf,0x8000afd7,0x0,0x8000afd7,0x8000afd7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x582,0x400fd7,0x0,0x0,0x582,0xfd7,0x0,0xfd7,0x0,0xfd7,0x0,0xfd7,0x0,0x0,0xfd7,0x0,0x0,0xfd7,0x0,0x0,0x0,0x0,0x400fd7,0x0,0x0,0x400000,0x400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfd7,0x0,0x0,0x0,0x0,0x0,0xfd7,0x0,0x0,0x0,0x2fd7,0x0,0x0,0x0,0x2fd7,0x0,0x0,0xfd7,0xfd7,0x0,0x0,0xfd7,0xfd7,0x0,0x0,0xfd7,0xfd7,0x0,0x0,0xfd7,0x0,0x0,0xfd7,0x0,0x0,0x0,0x400fd7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8440bfdf,0x8440bfff,0x20,0x8440bfff,0x20,0x8440bfff,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; + jj_la1_4 = new int[] {0x18000,0x0,0x801faf,0x8817fff,0x40,0x10000,0x1faf,0x0,0x0,0x0,0x8817fbf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8817fbf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7fbf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0x800000,0x1faf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1faf,0x0,0x0,0x0,0x0,0x0,0x8817fbf,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x8817fbf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1faf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1faf,0x0,0x0,0x0,0x0,0x0,0x1faf,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x8817fbf,0x0,0x0,0x0,0x0,0x800000,0x1fbf,0x0,0x8817fbf,0x0,0x8817fbf,0x2000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8817fbf,0x10000,0x8817fbf,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0x0,0x0,0x1faf,0x0,0x0,0x1faf,0x0,0x0,0x0,0x0,0x8817fbf,0x0,0x0,0x0,0x0,0x0,0x11faf,0x0,0x8817fbf,0x0,0x8817fbf,0x0,0x8817fbf,0x0,0x0,0x8817fbf,0x0,0x8817fbf,0x10000,0x0,0x5faf,0x0,0x0,0x0,0x5faf,0x0,0x0,0x5faf,0x0,0x0,0x5faf,0x0,0x0,0x0,0x5faf,0x0,0x0,0x5faf,0x0,0x0,0x800000,0x800000,0x800000,0x0,0x0,0x0,0x0,0x8817fbf,0x15faf,0x0,0x15faf,0x15faf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb04,0x801faf,0x0,0x0,0xb04,0x1faf,0x0,0x1faf,0x0,0x1faf,0x0,0x1faf,0x0,0x0,0x1faf,0x0,0x0,0x1faf,0x0,0x0,0x0,0x0,0x801faf,0x0,0x0,0x800000,0x800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1faf,0x0,0x0,0x0,0x0,0x0,0x1faf,0x0,0x0,0x0,0x5faf,0x0,0x0,0x0,0x5faf,0x0,0x0,0x1faf,0x1faf,0x0,0x0,0x1faf,0x1faf,0x0,0x0,0x1faf,0x1faf,0x0,0x0,0x1faf,0x0,0x0,0x0,0x0,0x1faf,0x0,0x0,0x0,0x801faf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8817fbf,0x8817fff,0x40,0x8817fff,0x40,0x8817fff,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } private static void jj_la1_init_5() { - jj_la1_5 = new int[] {0x0,0x80,0x0,0x3000ab9,0x800,0x1,0x0,0x0,0x0,0x800,0x30002b9,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x34002b9,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x200,0x0,0x0,0x0,0x0,0x0,0x1000,0x80,0x2000000,0x2000000,0x0,0x1000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x80,0x280,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x34002b9,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x34002b9,0x0,0x0,0x0,0x0,0x1000,0x1000,0x0,0x0,0x1000,0x1000,0x0,0x2200,0x20000,0x2200,0x20000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x1000,0x1000,0x1000,0x1000,0x1000,0x3000080,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x3000000,0x0,0x1000,0x1000,0x0,0x400000,0x2000000,0x0,0x1000,0x400000,0x0,0x34002b9,0x2000000,0x0,0x1000,0x0,0x3000006,0x0,0x1000,0x30002b9,0x1000,0x30002b9,0x0,0x0,0x200,0x2000,0x18,0x80,0x40000000,0x18,0x80,0x0,0x30002b9,0x1,0x3000201,0x1000,0x20,0x1000,0x3000000,0x2001000,0x2001000,0x80,0x200,0x3000020,0x0,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x30002b9,0x18,0x3c3e0000,0x60000,0x0,0x3c3e0000,0x1,0x1000,0x30002b9,0x1000,0x30002b9,0x1000,0x30002b9,0x3c3e0000,0x0,0x3000221,0x0,0x3000221,0x3000001,0x2200,0x0,0x0,0x0,0x2200,0x0,0x0,0x0,0x20,0x1000,0x2200,0x0,0x0,0x0,0x2200,0x0,0x0,0x0,0x20,0x1000,0x1000,0x3000000,0x3000000,0x3000000,0x0,0x0,0x0,0x1000,0x30002b9,0x1,0x1000,0x1,0x1,0x102000,0x100000,0x2000,0x80,0x80,0x80,0x80,0x100000,0x80,0x1000,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x1000,0x80,0x280,0x0,0x1000,0x0,0x1000,0x0,0x0,0x0,0x1000,0x0,0x1000,0x0,0x0,0x0,0x1000,0x0,0x1000,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x1000,0x0,0x0,0x3000000,0x0,0x0,0x0,0x1000,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x30002b9,0x3000ab9,0x800,0x3000ab9,0x800,0x3000ab9,0x800,0x0,0x1000,0x0,0x0,0x0,0x18,0x0,0x1000,0x0,0x0,0x0,0x1000,0x0,0x1000,0x0,0x0,0x1000,0x0,0x0,}; + jj_la1_5 = new int[] {0x0,0x100,0x0,0x6001573,0x1000,0x2,0x0,0x0,0x0,0x1000,0x6000573,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6800573,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000,0x400,0x0,0x0,0x0,0x0,0x0,0x2000,0x100,0x4000000,0x4000000,0x0,0x2000,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000,0x100,0x500,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6800573,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6800573,0x0,0x0,0x0,0x0,0x2000,0x2000,0x0,0x0,0x2000,0x2000,0x0,0x4400,0x40000,0x4400,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x2000,0x2000,0x2000,0x2000,0x2000,0x6000100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x6000000,0x0,0x2000,0x2000,0x0,0x800000,0x4000000,0x0,0x2000,0x800000,0x0,0x6800573,0x4000000,0x0,0x2000,0x0,0x600000c,0x0,0x2000,0x6000573,0x2000,0x6000573,0x0,0x0,0x400,0x4000,0x30,0x100,0x80000000,0x30,0x100,0x0,0x6000573,0x3,0x6000403,0x2000,0x40,0x2000,0x6000000,0x4002000,0x4002000,0x100,0x400,0x6000040,0x0,0x0,0x2000,0x0,0x0,0x0,0x0,0x0,0x6000573,0x30,0x787c0000,0xc0000,0x0,0x787c0000,0x3,0x2000,0x6000573,0x2000,0x6000573,0x2000,0x6000573,0x787c0000,0x0,0x6000443,0x0,0x6000443,0x6000003,0x4400,0x0,0x0,0x0,0x4400,0x0,0x0,0x0,0x40,0x2000,0x4400,0x0,0x0,0x0,0x4400,0x0,0x0,0x0,0x40,0x2000,0x2000,0x6000000,0x6000000,0x6000000,0x0,0x0,0x0,0x2000,0x6000573,0x3,0x2000,0x3,0x3,0x204000,0x200000,0x4000,0x100,0x100,0x100,0x100,0x200000,0x100,0x2000,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x2000,0x100,0x500,0x0,0x2000,0x0,0x2000,0x0,0x0,0x0,0x2000,0x0,0x2000,0x0,0x0,0x0,0x2000,0x0,0x2000,0x0,0x0,0x0,0x2000,0x0,0x0,0x0,0x2000,0x0,0x0,0x6000000,0x0,0x0,0x0,0x2000,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000,0x0,0x0,0x0,0x0,0x0,0x2000,0x0,0x0,0x0,0x2000,0x0,0x0,0x0,0x0,0x0,0x0,0x2000,0x0,0x2000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x6000573,0x6001573,0x1000,0x6001573,0x1000,0x6001573,0x1000,0x0,0x2000,0x0,0x0,0x0,0x30,0x0,0x2000,0x0,0x0,0x0,0x2000,0x0,0x2000,0x0,0x0,0x2000,0x0,0x0,}; } private static void jj_la1_init_6() { - jj_la1_6 = new int[] {0x0,0x0,0x10000008,0x10000018,0x0,0x0,0x10000000,0x8,0x8,0x0,0x10000018,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000018,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000010,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x8,0x10000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000000,0x0,0x0,0x0,0x0,0x0,0x10000018,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000018,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf000,0x0,0x0,0x0,0x10000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000000,0x0,0x0,0x0,0x0,0x0,0x10000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x10000018,0x0,0x0,0x0,0x6000000,0x0,0x10000000,0x0,0x10000018,0x0,0x10000018,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1800f7c,0x10000018,0x0,0x10000018,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x0,0x10000000,0x0,0x0,0x10000000,0x0,0x0,0x0,0x0,0x18000018,0x0,0x60000000,0x0,0x8000000,0x78000000,0x10000000,0x0,0x10000018,0x0,0x10000018,0x0,0x10000018,0x60000000,0x0,0x10000018,0x0,0x10000018,0x0,0x0,0x10000000,0x0,0x0,0x0,0x10000000,0x0,0x0,0x10000000,0x0,0x0,0x10000000,0x0,0x0,0x0,0x10000000,0x0,0x0,0x10000000,0x0,0x0,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x10000018,0x10000000,0x0,0x10000000,0x10000000,0xa,0x0,0x0,0x0,0x0,0x0,0x0,0xa,0x0,0x0,0x0,0x10000008,0x0,0x0,0x0,0x10000000,0xa,0x10000000,0xa,0x10000000,0xa,0x10000000,0xa,0x0,0x10000000,0xa,0x0,0x10000000,0xa,0x0,0x0,0x0,0x10000008,0x0,0x0,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc,0x0,0xc,0xc,0xc,0x0,0xc,0x0,0x10000000,0x0,0x0,0x0,0x0,0x0,0x10000000,0x0,0x0,0x0,0x10000000,0x0,0x0,0x0,0x10000000,0x0,0x0,0x10000000,0x10000000,0x0,0x0,0x10000000,0x10000000,0x0,0x0,0x10000000,0x10000000,0x0,0x0,0x10000010,0x0,0x0,0x10000010,0x0,0x0,0x10,0x10000008,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000018,0x10000018,0x0,0x10000018,0x0,0x10000018,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; + jj_la1_6 = new int[] {0x0,0x0,0x20000010,0x20000030,0x0,0x0,0x20000000,0x10,0x10,0x0,0x20000030,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000030,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000020,0x0,0x0,0x0,0x0,0x0,0x0,0x10000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x10,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x20000030,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000030,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1e000,0x0,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20000030,0x0,0x0,0x0,0xc000000,0x0,0x20000000,0x0,0x20000030,0x0,0x20000030,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3001ef8,0x20000030,0x0,0x20000030,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x0,0x20000000,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x30000030,0x0,0xc0000000,0x0,0x10000000,0xf0000000,0x20000000,0x0,0x20000030,0x0,0x20000030,0x0,0x20000030,0xc0000000,0x0,0x20000030,0x0,0x20000030,0x0,0x0,0x20000000,0x0,0x0,0x0,0x20000000,0x0,0x0,0x20000000,0x0,0x0,0x20000000,0x0,0x0,0x0,0x20000000,0x0,0x0,0x20000000,0x0,0x0,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x20000030,0x20000000,0x0,0x20000000,0x20000000,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x20000010,0x0,0x0,0x0,0x20000000,0x14,0x20000000,0x14,0x20000000,0x14,0x20000000,0x14,0x0,0x20000000,0x14,0x0,0x20000000,0x14,0x0,0x0,0x0,0x20000010,0x0,0x0,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x0,0x18,0x18,0x18,0x0,0x18,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x0,0x20000000,0x0,0x0,0x0,0x20000000,0x0,0x0,0x20000000,0x20000000,0x0,0x0,0x20000000,0x20000000,0x0,0x0,0x20000000,0x20000000,0x0,0x0,0x20000020,0x0,0x0,0x0,0x0,0x20000020,0x0,0x0,0x20,0x20000010,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000030,0x20000030,0x0,0x20000030,0x0,0x20000030,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } private static void jj_la1_init_7() { - jj_la1_7 = new int[] {0x0,0x0,0x1900,0x4001900,0x0,0x0,0x1900,0x0,0x0,0x0,0x4001900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4001900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0x4000000,0x1900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1900,0x0,0x0,0x0,0x0,0x0,0x4001900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4001900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400,0x61900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400,0x400,0x0,0x400,0x1900,0x0,0x0,0x0,0x0,0x0,0x1900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4001900,0x0,0x0,0x0,0x0,0x0,0x1900,0x0,0x4001900,0x0,0x4001900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4001900,0x0,0x1900,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0x60400,0x800000,0x1900,0x60000,0x0,0x1900,0x1c000,0x1e000,0x0,0x0,0x4001900,0x0,0x10,0x0,0x0,0x10,0x1900,0x0,0x4001900,0x0,0x4001900,0x0,0x4001900,0x11,0x0,0x1900,0x0,0x1900,0x0,0x0,0x1900,0x0,0x0,0x0,0x1900,0x0,0x0,0x1900,0x0,0x0,0x1900,0x0,0x0,0x0,0x1900,0x0,0x0,0x1900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4001900,0x1900,0x0,0x1900,0x1900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60400,0x1900,0x60000,0x0,0x60400,0x1900,0x0,0x1900,0x0,0x1900,0x0,0x1900,0x0,0x0,0x1900,0x0,0x0,0x1900,0x0,0x0,0x0,0x0,0x1900,0x0,0x0,0x4000000,0x4000000,0x0,0x0,0x0,0x0,0x400,0x0,0x0,0x0,0x0,0x0,0x400,0x0,0x0,0x0,0x0,0x0,0x400,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400,0x1900,0x0,0x0,0x0,0x0,0x0,0x1900,0x0,0x0,0x0,0x1900,0x100,0x0,0x0,0x1900,0x100,0x0,0x1900,0x1900,0x0,0x0,0x1900,0x1900,0x0,0x0,0x1900,0x1900,0x0,0x0,0x1900,0x0,0x0,0x1900,0x0,0x0,0x0,0x1900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4001900,0x4001900,0x0,0x4001900,0x0,0x4001900,0x0,0x780000,0x0,0x0,0x780000,0x0,0x0,0x0,0x0,0x0,0x780000,0x780000,0x0,0x0,0x0,0x400,0x0,0x0,0x0,0x0,}; + jj_la1_7 = new int[] {0x0,0x0,0x3200,0x8003200,0x0,0x0,0x3200,0x0,0x0,0x0,0x8003200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8003200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x8000000,0x3200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3200,0x0,0x0,0x0,0x0,0x0,0x8003200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8003200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0xc3200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x800,0x0,0x800,0x3200,0x0,0x0,0x0,0x0,0x0,0x3200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8003200,0x0,0x0,0x0,0x0,0x0,0x3200,0x0,0x8003200,0x0,0x8003200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8003200,0x0,0x3200,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0xc0800,0x1000000,0x3200,0xc0000,0x0,0x3200,0x38000,0x3c000,0x0,0x0,0x8003200,0x0,0x20,0x0,0x0,0x20,0x3200,0x0,0x8003200,0x0,0x8003200,0x0,0x8003200,0x22,0x0,0x3200,0x0,0x3200,0x0,0x0,0x3200,0x0,0x0,0x0,0x3200,0x0,0x0,0x3200,0x0,0x0,0x3200,0x0,0x0,0x0,0x3200,0x0,0x0,0x3200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8003200,0x3200,0x0,0x3200,0x3200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0800,0x3200,0xc0000,0x0,0xc0800,0x3200,0x0,0x3200,0x0,0x3200,0x0,0x3200,0x0,0x0,0x3200,0x0,0x0,0x3200,0x0,0x0,0x0,0x0,0x3200,0x0,0x0,0x8000000,0x8000000,0x0,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x3200,0x0,0x0,0x0,0x0,0x0,0x3200,0x0,0x0,0x0,0x3200,0x200,0x0,0x0,0x3200,0x200,0x0,0x3200,0x3200,0x0,0x0,0x3200,0x3200,0x0,0x0,0x3200,0x3200,0x0,0x0,0x3200,0x0,0x0,0x0,0x0,0x3200,0x0,0x0,0x0,0x3200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8003200,0x8003200,0x0,0x8003200,0x0,0x8003200,0x0,0xf00000,0x0,0x0,0xf00000,0x0,0x0,0x0,0x0,0x0,0xf00000,0xf00000,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x0,}; } final private JJCalls[] jj_2_rtns = new JJCalls[149]; private boolean jj_rescan = false; @@ -27047,7 +27089,7 @@ public SqlParser(CharStream stream) { token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 366; i++) jj_la1[i] = -1; + for (int i = 0; i < 367; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -27058,7 +27100,7 @@ public void ReInit(CharStream stream) { jj_ntk = -1; jjtree.reset(); jj_gen = 0; - for (int i = 0; i < 366; i++) jj_la1[i] = -1; + for (int i = 0; i < 367; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -27068,7 +27110,7 @@ public SqlParser(SqlParserTokenManager tm) { token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 366; i++) jj_la1[i] = -1; + for (int i = 0; i < 367; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -27079,7 +27121,7 @@ public void ReInit(SqlParserTokenManager tm) { jj_ntk = -1; jjtree.reset(); jj_gen = 0; - for (int i = 0; i < 366; i++) jj_la1[i] = -1; + for (int i = 0; i < 367; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -27210,12 +27252,12 @@ private void jj_add_error_token(int kind, int pos) { /** Generate ParseException. */ public ParseException generateParseException() { jj_expentries.clear(); - boolean[] la1tokens = new boolean[251]; + boolean[] la1tokens = new boolean[252]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; } - for (int i = 0; i < 366; i++) { + for (int i = 0; i < 367; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1<", "", "", + "", "", "", "", diff --git a/engine/src/main/java/com/arcadedb/query/sql/parser/SqlParserTokenManager.java b/engine/src/main/java/com/arcadedb/query/sql/parser/SqlParserTokenManager.java index 306146e4d..e89e94d49 100644 --- a/engine/src/main/java/com/arcadedb/query/sql/parser/SqlParserTokenManager.java +++ b/engine/src/main/java/com/arcadedb/query/sql/parser/SqlParserTokenManager.java @@ -1,9 +1,8 @@ /* SqlParserTokenManager.java */ /* Generated By:JJTree&JavaCC: Do not edit this line. SqlParserTokenManager.java */ package com.arcadedb.query.sql.parser; -import java.io.InputStream; -import java.util.List; -import java.util.ArrayList; +import java.io.*; +import java.util.*; import javax.annotation.processing.Generated; import com.arcadedb.database.Database; import com.arcadedb.exception.CommandParsingException; @@ -21,23 +20,23 @@ private final int jjStopStringLiteralDfa_0(int pos, long active0, long active1, switch (pos) { case 0: - if ((active0 & 0x80L) != 0L || (active3 & 0x8020L) != 0L) + if ((active2 & 0x800000000000L) != 0L) + return 1011; + if ((active0 & 0x80L) != 0L || (active3 & 0x10040L) != 0L) return 2; - if ((active2 & 0x400000000000L) != 0L) - return 1004; - if ((active2 & 0x200000000000L) != 0L || (active3 & 0x6000000L) != 0L) + if ((active2 & 0x400000000000L) != 0L || (active3 & 0xc000000L) != 0L) return 16; - if ((active3 & 0x200aL) != 0L) - return 7; - if ((active2 & 0x800000000000L) != 0L) - return 30; if ((active2 & 0x1000000000000L) != 0L) + return 30; + if ((active3 & 0x4014L) != 0L) + return 7; + if ((active2 & 0x2000000000000L) != 0L) return 36; return -1; case 1: if ((active0 & 0x80L) != 0L) return 0; - if ((active3 & 0x2L) != 0L) + if ((active3 & 0x4L) != 0L) return 4; return -1; default : @@ -57,75 +56,75 @@ private int jjMoveStringLiteralDfa0_0(){ switch(curChar) { case 33: - jjmatchedKind = 182; - return jjMoveStringLiteralDfa1_0(0x0L, 0x1000000000000000L, 0x0L); + jjmatchedKind = 183; + return jjMoveStringLiteralDfa1_0(0x0L, 0x2000000000000000L, 0x0L); case 35: - return jjStopAtPos(0, 250); + return jjStopAtPos(0, 251); case 36: - return jjStartNfaWithStates_0(0, 175, 30); + return jjStartNfaWithStates_0(0, 176, 30); case 37: - jjmatchedKind = 202; - return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x80000L); + jjmatchedKind = 203; + return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x100000L); case 38: - jjmatchedKind = 198; - return jjMoveStringLiteralDfa1_0(0x0L, 0x8000000000000000L, 0x10000L); + jjmatchedKind = 199; + return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x20001L); case 40: - return jjStopAtPos(0, 165); - case 41: return jjStopAtPos(0, 166); + case 41: + return jjStopAtPos(0, 167); case 42: - jjmatchedKind = 196; - return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x4000L); + jjmatchedKind = 197; + return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x8000L); case 43: - jjmatchedKind = 194; - return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x1001L); - case 44: - return jjStopAtPos(0, 172); - case 45: jjmatchedKind = 195; return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x2002L); + case 44: + return jjStopAtPos(0, 173); + case 45: + jjmatchedKind = 196; + return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x4004L); case 46: - jjmatchedKind = 173; - return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x6000000L); + jjmatchedKind = 174; + return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0xc000000L); case 47: - jjmatchedKind = 197; - return jjMoveStringLiteralDfa1_0(0x80L, 0x0L, 0x8000L); + jjmatchedKind = 198; + return jjMoveStringLiteralDfa1_0(0x80L, 0x0L, 0x10000L); case 58: - return jjStopAtPos(0, 185); + return jjStopAtPos(0, 186); case 59: - return jjStopAtPos(0, 171); + return jjStopAtPos(0, 172); case 60: - jjmatchedKind = 180; - return jjMoveStringLiteralDfa1_0(0x0L, 0x2408000000000000L, 0x100800L); + jjmatchedKind = 181; + return jjMoveStringLiteralDfa1_0(0x0L, 0x4810000000000000L, 0x201000L); case 61: - jjmatchedKind = 177; - return jjMoveStringLiteralDfa1_0(0x0L, 0x4000000000000L, 0x0L); + jjmatchedKind = 178; + return jjMoveStringLiteralDfa1_0(0x0L, 0x8000000000000L, 0x0L); case 62: - jjmatchedKind = 181; - return jjMoveStringLiteralDfa1_0(0x0L, 0x800000000000000L, 0x1e00000L); + jjmatchedKind = 182; + return jjMoveStringLiteralDfa1_0(0x0L, 0x1000000000000000L, 0x3c00000L); case 63: - jjmatchedKind = 184; - return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x80L); + jjmatchedKind = 185; + return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x100L); case 64: - return jjStartNfaWithStates_0(0, 174, 1004); + return jjStartNfaWithStates_0(0, 175, 1011); case 91: - return jjStopAtPos(0, 169); - case 93: return jjStopAtPos(0, 170); + case 93: + return jjStopAtPos(0, 171); case 94: - jjmatchedKind = 201; - return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x40000L); + jjmatchedKind = 202; + return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x80000L); case 96: - return jjStartNfaWithStates_0(0, 176, 36); + return jjStartNfaWithStates_0(0, 177, 36); case 123: - return jjStopAtPos(0, 167); + return jjStopAtPos(0, 168); case 124: - jjmatchedKind = 200; - return jjMoveStringLiteralDfa1_0(0x0L, 0x4000000000000000L, 0x20000L); + jjmatchedKind = 201; + return jjMoveStringLiteralDfa1_0(0x0L, 0x8000000000000000L, 0x40000L); case 125: - return jjStopAtPos(0, 168); + return jjStopAtPos(0, 169); case 126: - return jjStopAtPos(0, 183); + return jjStopAtPos(0, 184); default : return jjMoveNfa_0(3, 0); } @@ -139,49 +138,47 @@ private int jjMoveStringLiteralDfa1_0(long active0, long active2, long active3){ switch(curChar) { case 38: - if ((active2 & 0x8000000000000000L) != 0L) - return jjStopAtPos(1, 191); + if ((active3 & 0x1L) != 0L) + return jjStopAtPos(1, 192); break; case 42: if ((active0 & 0x80L) != 0L) return jjStartNfaWithStates_0(1, 7, 0); break; case 43: - if ((active3 & 0x1L) != 0L) - return jjStopAtPos(1, 192); + if ((active3 & 0x2L) != 0L) + return jjStopAtPos(1, 193); break; case 45: - if ((active3 & 0x2L) != 0L) - return jjStartNfaWithStates_0(1, 193, 4); + if ((active3 & 0x4L) != 0L) + return jjStartNfaWithStates_0(1, 194, 4); break; case 46: - if ((active3 & 0x4000000L) != 0L) + if ((active3 & 0x8000000L) != 0L) { - jjmatchedKind = 218; + jjmatchedKind = 219; jjmatchedPos = 1; } - return jjMoveStringLiteralDfa2_0(active0, 0L, active2, 0L, active3, 0x2000000L); + return jjMoveStringLiteralDfa2_0(active0, 0L, active2, 0L, active3, 0x4000000L); case 60: - if ((active3 & 0x800L) != 0L) + if ((active3 & 0x1000L) != 0L) { - jjmatchedKind = 203; + jjmatchedKind = 204; jjmatchedPos = 1; } - return jjMoveStringLiteralDfa2_0(active0, 0L, active2, 0L, active3, 0x100000L); + return jjMoveStringLiteralDfa2_0(active0, 0L, active2, 0L, active3, 0x200000L); case 61: - if ((active2 & 0x4000000000000L) != 0L) - return jjStopAtPos(1, 178); - else if ((active2 & 0x400000000000000L) != 0L) + if ((active2 & 0x8000000000000L) != 0L) + return jjStopAtPos(1, 179); + else if ((active2 & 0x800000000000000L) != 0L) { - jjmatchedKind = 186; + jjmatchedKind = 187; jjmatchedPos = 1; } - else if ((active2 & 0x800000000000000L) != 0L) - return jjStopAtPos(1, 187); else if ((active2 & 0x1000000000000000L) != 0L) return jjStopAtPos(1, 188); - else if ((active3 & 0x1000L) != 0L) - return jjStopAtPos(1, 204); + else if ((active2 & 0x2000000000000000L) != 0L) + return jjStopAtPos(1, 189); else if ((active3 & 0x2000L) != 0L) return jjStopAtPos(1, 205); else if ((active3 & 0x4000L) != 0L) @@ -196,23 +193,25 @@ else if ((active3 & 0x40000L) != 0L) return jjStopAtPos(1, 210); else if ((active3 & 0x80000L) != 0L) return jjStopAtPos(1, 211); - return jjMoveStringLiteralDfa2_0(active0, 0L, active2, 0x8000000000000L, active3, 0L); + else if ((active3 & 0x100000L) != 0L) + return jjStopAtPos(1, 212); + return jjMoveStringLiteralDfa2_0(active0, 0L, active2, 0x10000000000000L, active3, 0L); case 62: - if ((active2 & 0x2000000000000000L) != 0L) - return jjStopAtPos(1, 189); - else if ((active3 & 0x800000L) != 0L) + if ((active2 & 0x4000000000000000L) != 0L) + return jjStopAtPos(1, 190); + else if ((active3 & 0x1000000L) != 0L) { - jjmatchedKind = 215; + jjmatchedKind = 216; jjmatchedPos = 1; } - return jjMoveStringLiteralDfa2_0(active0, 0L, active2, 0L, active3, 0x1600000L); + return jjMoveStringLiteralDfa2_0(active0, 0L, active2, 0L, active3, 0x2c00000L); case 63: - if ((active3 & 0x80L) != 0L) - return jjStopAtPos(1, 199); + if ((active3 & 0x100L) != 0L) + return jjStopAtPos(1, 200); break; case 124: - if ((active2 & 0x4000000000000000L) != 0L) - return jjStopAtPos(1, 190); + if ((active2 & 0x8000000000000000L) != 0L) + return jjStopAtPos(1, 191); break; default : break; @@ -230,24 +229,24 @@ private int jjMoveStringLiteralDfa2_0(long old0, long active0, long old2, long a switch(curChar) { case 46: - if ((active3 & 0x2000000L) != 0L) - return jjStopAtPos(2, 217); + if ((active3 & 0x4000000L) != 0L) + return jjStopAtPos(2, 218); break; case 61: - if ((active3 & 0x100000L) != 0L) - return jjStopAtPos(2, 212); - else if ((active3 & 0x200000L) != 0L) + if ((active3 & 0x200000L) != 0L) return jjStopAtPos(2, 213); + else if ((active3 & 0x400000L) != 0L) + return jjStopAtPos(2, 214); break; case 62: - if ((active2 & 0x8000000000000L) != 0L) - return jjStopAtPos(2, 179); - else if ((active3 & 0x1000000L) != 0L) + if ((active2 & 0x10000000000000L) != 0L) + return jjStopAtPos(2, 180); + else if ((active3 & 0x2000000L) != 0L) { - jjmatchedKind = 216; + jjmatchedKind = 217; jjmatchedPos = 2; } - return jjMoveStringLiteralDfa3_0(active2, 0L, active3, 0x400000L); + return jjMoveStringLiteralDfa3_0(active2, 0L, active3, 0x800000L); default : break; } @@ -264,8 +263,8 @@ private int jjMoveStringLiteralDfa3_0(long old2, long active2, long old3, long a switch(curChar) { case 61: - if ((active3 & 0x400000L) != 0L) - return jjStopAtPos(3, 214); + if ((active3 & 0x800000L) != 0L) + return jjStopAtPos(3, 215); break; default : break; @@ -289,7 +288,7 @@ private int jjStartNfaWithStates_0(int pos, int kind, int state) private int jjMoveNfa_0(int startState, int curPos) { int startsAt = 0; - jjnewStateCnt = 1142; + jjnewStateCnt = 1149; int i = 1; jjstateSet[0] = startState; int kind = 0x7fffffff; @@ -325,8 +324,8 @@ else if (curChar == 39) { jjCheckNAddStates(25, 29); } else if (curChar == 36) { - if (kind > 235) - kind = 235; + if (kind > 236) + kind = 236; { jjCheckNAdd(30); } } else if (curChar == 34) @@ -337,14 +336,14 @@ else if (curChar == 47) jjstateSet[jjnewStateCnt++] = 2; if ((0x3fe000000000000L & l) != 0L) { - if (kind > 150) - kind = 150; + if (kind > 151) + kind = 151; { jjCheckNAddStates(33, 40); } } else if (curChar == 48) { - if (kind > 150) - kind = 150; + if (kind > 151) + kind = 151; { jjCheckNAddStates(41, 53); } } else if (curChar == 34) @@ -391,8 +390,8 @@ else if (curChar == 45) jjstateSet[jjnewStateCnt++] = 7; break; case 13: - if (curChar == 34 && kind > 143) - kind = 143; + if (curChar == 34 && kind > 144) + kind = 144; break; case 14: if (curChar == 34) @@ -405,8 +404,8 @@ else if (curChar == 45) case 16: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 154) - kind = 154; + if (kind > 155) + kind = 155; { jjCheckNAddStates(57, 59); } break; case 18: @@ -416,8 +415,8 @@ else if (curChar == 45) case 19: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 154) - kind = 154; + if (kind > 155) + kind = 155; { jjCheckNAddTwoStates(19, 20); } break; case 21: @@ -433,56 +432,56 @@ else if (curChar == 45) { jjCheckNAddStates(30, 32); } break; case 25: - if (curChar == 34 && kind > 160) - kind = 160; + if (curChar == 34 && kind > 161) + kind = 161; break; case 29: if (curChar != 36) break; - if (kind > 235) - kind = 235; + if (kind > 236) + kind = 236; { jjCheckNAdd(30); } break; case 30: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 235) - kind = 235; + if (kind > 236) + kind = 236; { jjCheckNAdd(30); } break; case 37: if (curChar != 47) break; - if (kind > 245) - kind = 245; + if (kind > 246) + kind = 246; { jjCheckNAddTwoStates(38, 39); } break; case 38: if ((0xf7fffffaffffdbffL & l) == 0L) break; - if (kind > 245) - kind = 245; + if (kind > 246) + kind = 246; { jjCheckNAddTwoStates(38, 39); } break; case 40: if ((0x808400000000L & l) == 0L) break; - if (kind > 245) - kind = 245; + if (kind > 246) + kind = 246; { jjCheckNAddTwoStates(38, 39); } break; case 41: if ((0xff000000000000L & l) == 0L) break; - if (kind > 245) - kind = 245; + if (kind > 246) + kind = 246; { jjCheckNAddStates(60, 62); } break; case 42: if ((0xff000000000000L & l) == 0L) break; - if (kind > 245) - kind = 245; + if (kind > 246) + kind = 246; { jjCheckNAddTwoStates(38, 39); } break; case 43: @@ -504,36 +503,36 @@ else if (curChar == 45) case 51: if (curChar != 47) break; - if (kind > 246) - kind = 246; + if (kind > 247) + kind = 247; { jjCheckNAddTwoStates(52, 53); } break; case 52: if ((0xf7fffffaffffdbffL & l) == 0L) break; - if (kind > 246) - kind = 246; + if (kind > 247) + kind = 247; { jjCheckNAddTwoStates(52, 53); } break; case 54: if ((0x808400000000L & l) == 0L) break; - if (kind > 246) - kind = 246; + if (kind > 247) + kind = 247; { jjCheckNAddTwoStates(52, 53); } break; case 55: if ((0xff000000000000L & l) == 0L) break; - if (kind > 246) - kind = 246; + if (kind > 247) + kind = 247; { jjCheckNAddStates(63, 65); } break; case 56: if ((0xff000000000000L & l) == 0L) break; - if (kind > 246) - kind = 246; + if (kind > 247) + kind = 247; { jjCheckNAddTwoStates(52, 53); } break; case 57: @@ -559,15 +558,15 @@ else if (curChar == 45) case 71: if (curChar != 36) break; - if (kind > 247) - kind = 247; + if (kind > 248) + kind = 248; { jjCheckNAdd(72); } break; case 72: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 247) - kind = 247; + if (kind > 248) + kind = 248; { jjCheckNAdd(72); } break; case 83: @@ -597,8 +596,8 @@ else if (curChar == 45) case 91: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 154) - kind = 154; + if (kind > 155) + kind = 155; { jjCheckNAddTwoStates(91, 20); } break; case 92: @@ -608,15 +607,15 @@ else if (curChar == 45) case 93: if (curChar != 46) break; - if (kind > 154) - kind = 154; + if (kind > 155) + kind = 155; { jjCheckNAddStates(69, 71); } break; case 94: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 154) - kind = 154; + if (kind > 155) + kind = 155; { jjCheckNAddStates(69, 71); } break; case 96: @@ -626,551 +625,551 @@ else if (curChar == 45) case 97: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 154) - kind = 154; + if (kind > 155) + kind = 155; { jjCheckNAddTwoStates(97, 20); } break; - case 304: - if (curChar == 58 && kind > 237) - kind = 237; - break; - case 315: - if (curChar == 58) - { jjAddStates(72, 73); } - break; - case 317: - if (curChar != 36) - break; - if (kind > 238) - kind = 238; - { jjCheckNAddTwoStates(318, 319); } - break; - case 318: - if ((0x3ff000000000000L & l) == 0L) - break; - if (kind > 238) - kind = 238; - { jjCheckNAddTwoStates(318, 319); } - break; - case 319: - if ((0x600000000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 320; - break; - case 320: - if (curChar != 36) - break; - if (kind > 238) - kind = 238; - { jjCheckNAddTwoStates(319, 321); } - break; - case 321: - if ((0x3ff000000000000L & l) == 0L) - break; - if (kind > 238) + case 311: + if (curChar == 58 && kind > 238) kind = 238; - { jjCheckNAddTwoStates(319, 321); } break; - case 350: + case 322: if (curChar == 58) - { jjAddStates(74, 75); } + { jjAddStates(72, 73); } break; - case 352: + case 324: if (curChar != 36) break; if (kind > 239) kind = 239; - { jjCheckNAddTwoStates(353, 354); } + { jjCheckNAddTwoStates(325, 326); } break; - case 353: + case 325: if ((0x3ff000000000000L & l) == 0L) break; if (kind > 239) kind = 239; - { jjCheckNAddTwoStates(353, 354); } + { jjCheckNAddTwoStates(325, 326); } break; - case 354: + case 326: if ((0x600000000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 355; + jjstateSet[jjnewStateCnt++] = 327; break; - case 355: + case 327: if (curChar != 36) break; if (kind > 239) kind = 239; - { jjCheckNAddTwoStates(354, 356); } + { jjCheckNAddTwoStates(326, 328); } break; - case 356: + case 328: if ((0x3ff000000000000L & l) == 0L) break; if (kind > 239) kind = 239; - { jjCheckNAddTwoStates(354, 356); } + { jjCheckNAddTwoStates(326, 328); } break; - case 386: + case 357: if (curChar == 58) - { jjAddStates(76, 77); } + { jjAddStates(74, 75); } break; - case 388: + case 359: if (curChar != 36) break; if (kind > 240) kind = 240; - { jjCheckNAddTwoStates(389, 390); } + { jjCheckNAddTwoStates(360, 361); } break; - case 389: + case 360: if ((0x3ff000000000000L & l) == 0L) break; if (kind > 240) kind = 240; - { jjCheckNAddTwoStates(389, 390); } + { jjCheckNAddTwoStates(360, 361); } break; - case 390: + case 361: if ((0x600000000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 391; + jjstateSet[jjnewStateCnt++] = 362; break; - case 391: + case 362: if (curChar != 36) break; if (kind > 240) kind = 240; - { jjCheckNAddTwoStates(390, 392); } + { jjCheckNAddTwoStates(361, 363); } break; - case 392: + case 363: if ((0x3ff000000000000L & l) == 0L) break; if (kind > 240) kind = 240; - { jjCheckNAddTwoStates(390, 392); } - break; - case 823: - if (curChar == 32) - { jjAddStates(78, 79); } - break; - case 888: - if (curChar == 32) - { jjAddStates(80, 81); } + { jjCheckNAddTwoStates(361, 363); } break; - case 967: + case 393: if (curChar == 58) - jjstateSet[jjnewStateCnt++] = 968; + { jjAddStates(76, 77); } break; - case 968: + case 395: if (curChar != 36) break; if (kind > 241) kind = 241; - { jjCheckNAdd(969); } + { jjCheckNAddTwoStates(396, 397); } break; - case 969: + case 396: if ((0x3ff000000000000L & l) == 0L) break; if (kind > 241) kind = 241; - { jjCheckNAdd(969); } + { jjCheckNAddTwoStates(396, 397); } break; - case 975: - if (curChar == 58) - { jjAddStates(82, 83); } + case 397: + if ((0x600000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 398; break; - case 976: - if ((0x3fe000000000000L & l) == 0L) + case 398: + if (curChar != 36) break; - if (kind > 242) - kind = 242; - { jjCheckNAddTwoStates(977, 978); } + if (kind > 241) + kind = 241; + { jjCheckNAddTwoStates(397, 399); } break; - case 977: + case 399: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 242) - kind = 242; - { jjCheckNAddTwoStates(977, 978); } + if (kind > 241) + kind = 241; + { jjCheckNAddTwoStates(397, 399); } break; - case 979: - if (curChar != 48) + case 830: + if (curChar == 32) + { jjAddStates(78, 79); } + break; + case 895: + if (curChar == 32) + { jjAddStates(80, 81); } + break; + case 974: + if (curChar == 58) + jjstateSet[jjnewStateCnt++] = 975; + break; + case 975: + if (curChar != 36) break; if (kind > 242) kind = 242; - { jjCheckNAddStates(84, 86); } + { jjCheckNAdd(976); } break; - case 981: + case 976: if ((0x3ff000000000000L & l) == 0L) break; if (kind > 242) kind = 242; - { jjCheckNAddTwoStates(981, 978); } + { jjCheckNAdd(976); } break; case 982: - if ((0xff000000000000L & l) == 0L) - break; - if (kind > 242) - kind = 242; - { jjCheckNAddTwoStates(982, 978); } + if (curChar == 58) + { jjAddStates(82, 83); } break; - case 1045: + case 983: if ((0x3fe000000000000L & l) == 0L) break; - if (kind > 150) - kind = 150; - { jjCheckNAddStates(33, 40); } + if (kind > 243) + kind = 243; + { jjCheckNAddTwoStates(984, 985); } break; - case 1046: + case 984: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 150) - kind = 150; - { jjCheckNAddTwoStates(1046, 1047); } - break; - case 1048: - if ((0x3ff000000000000L & l) != 0L) - { jjCheckNAddStates(7, 9); } + if (kind > 243) + kind = 243; + { jjCheckNAddTwoStates(984, 985); } break; - case 1050: - if (curChar == 46) - { jjCheckNAddStates(87, 89); } + case 986: + if (curChar != 48) + break; + if (kind > 243) + kind = 243; + { jjCheckNAddStates(84, 86); } break; - case 1051: - if (curChar == 45) - { jjCheckNAddTwoStates(1052, 1055); } + case 988: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 243) + kind = 243; + { jjCheckNAddTwoStates(988, 985); } + break; + case 989: + if ((0xff000000000000L & l) == 0L) + break; + if (kind > 243) + kind = 243; + { jjCheckNAddTwoStates(989, 985); } break; case 1052: if ((0x3fe000000000000L & l) == 0L) break; - if (kind > 161) - kind = 161; - { jjCheckNAddTwoStates(1053, 1054); } + if (kind > 151) + kind = 151; + { jjCheckNAddStates(33, 40); } break; case 1053: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 161) - kind = 161; + if (kind > 151) + kind = 151; { jjCheckNAddTwoStates(1053, 1054); } break; case 1055: + if ((0x3ff000000000000L & l) != 0L) + { jjCheckNAddStates(7, 9); } + break; + case 1057: + if (curChar == 46) + { jjCheckNAddStates(87, 89); } + break; + case 1058: + if (curChar == 45) + { jjCheckNAddTwoStates(1059, 1062); } + break; + case 1059: + if ((0x3fe000000000000L & l) == 0L) + break; + if (kind > 162) + kind = 162; + { jjCheckNAddTwoStates(1060, 1061); } + break; + case 1060: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 162) + kind = 162; + { jjCheckNAddTwoStates(1060, 1061); } + break; + case 1062: if (curChar != 48) break; - if (kind > 161) - kind = 161; + if (kind > 162) + kind = 162; { jjCheckNAddStates(90, 92); } break; - case 1057: + case 1064: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 161) - kind = 161; - { jjCheckNAddTwoStates(1057, 1054); } + if (kind > 162) + kind = 162; + { jjCheckNAddTwoStates(1064, 1061); } break; - case 1058: + case 1065: if ((0xff000000000000L & l) == 0L) break; - if (kind > 161) - kind = 161; - { jjCheckNAddTwoStates(1058, 1054); } + if (kind > 162) + kind = 162; + { jjCheckNAddTwoStates(1065, 1061); } break; - case 1059: + case 1066: if (curChar == 46) - jjstateSet[jjnewStateCnt++] = 1050; + jjstateSet[jjnewStateCnt++] = 1057; break; - case 1060: + case 1067: if ((0x3ff000000000000L & l) != 0L) { jjCheckNAddStates(0, 2); } break; - case 1062: + case 1069: if (curChar == 46) { jjCheckNAddStates(93, 95); } break; - case 1063: + case 1070: if (curChar == 45) - { jjCheckNAddTwoStates(1064, 1067); } + { jjCheckNAddTwoStates(1071, 1074); } break; - case 1064: + case 1071: if ((0x3fe000000000000L & l) == 0L) break; - if (kind > 162) - kind = 162; - { jjCheckNAddTwoStates(1065, 1066); } + if (kind > 163) + kind = 163; + { jjCheckNAddTwoStates(1072, 1073); } break; - case 1065: + case 1072: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 162) - kind = 162; - { jjCheckNAddTwoStates(1065, 1066); } + if (kind > 163) + kind = 163; + { jjCheckNAddTwoStates(1072, 1073); } break; - case 1067: + case 1074: if (curChar != 48) break; - if (kind > 162) - kind = 162; + if (kind > 163) + kind = 163; { jjCheckNAddStates(96, 98); } break; - case 1069: + case 1076: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 162) - kind = 162; - { jjCheckNAddTwoStates(1069, 1066); } + if (kind > 163) + kind = 163; + { jjCheckNAddTwoStates(1076, 1073); } break; - case 1070: + case 1077: if ((0xff000000000000L & l) == 0L) break; - if (kind > 162) - kind = 162; - { jjCheckNAddTwoStates(1070, 1066); } + if (kind > 163) + kind = 163; + { jjCheckNAddTwoStates(1077, 1073); } break; - case 1071: + case 1078: if (curChar == 46) - jjstateSet[jjnewStateCnt++] = 1062; + jjstateSet[jjnewStateCnt++] = 1069; break; - case 1072: + case 1079: if (curChar == 46) - jjstateSet[jjnewStateCnt++] = 1071; + jjstateSet[jjnewStateCnt++] = 1078; break; - case 1073: + case 1080: if (curChar == 39) { jjCheckNAddStates(25, 29); } break; - case 1074: + case 1081: if ((0xffffff7fffffdbffL & l) != 0L) - { jjCheckNAdd(1075); } + { jjCheckNAdd(1082); } break; - case 1075: - if (curChar == 39 && kind > 159) - kind = 159; + case 1082: + if (curChar == 39 && kind > 160) + kind = 160; break; - case 1077: + case 1084: if ((0x808400000000L & l) != 0L) - { jjCheckNAdd(1075); } + { jjCheckNAdd(1082); } break; - case 1078: + case 1085: if ((0xff000000000000L & l) != 0L) - { jjCheckNAddTwoStates(1079, 1075); } + { jjCheckNAddTwoStates(1086, 1082); } break; - case 1079: + case 1086: if ((0xff000000000000L & l) != 0L) - { jjCheckNAdd(1075); } + { jjCheckNAdd(1082); } break; - case 1080: + case 1087: if ((0xf000000000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1081; + jjstateSet[jjnewStateCnt++] = 1088; break; - case 1081: + case 1088: if ((0xff000000000000L & l) != 0L) - { jjCheckNAdd(1079); } + { jjCheckNAdd(1086); } break; - case 1082: + case 1089: if ((0xffffff7fffffdbffL & l) != 0L) { jjCheckNAddStates(99, 101); } break; - case 1084: + case 1091: if ((0x800080a000000000L & l) != 0L) { jjCheckNAddStates(99, 101); } break; - case 1085: - if (curChar == 39 && kind > 160) - kind = 160; + case 1092: + if (curChar == 39 && kind > 161) + kind = 161; break; - case 1086: + case 1093: if (curChar == 45) { jjAddStates(21, 24); } break; - case 1087: + case 1094: if ((0x3fe000000000000L & l) != 0L) { jjCheckNAddStates(7, 9); } break; - case 1088: + case 1095: if ((0x3fe000000000000L & l) != 0L) { jjCheckNAddStates(0, 2); } break; - case 1089: + case 1096: if (curChar == 48) { jjCheckNAddStates(10, 13); } break; - case 1091: + case 1098: if ((0x3ff000000000000L & l) != 0L) { jjCheckNAddStates(102, 104); } break; - case 1092: + case 1099: if ((0xff000000000000L & l) != 0L) { jjCheckNAddStates(105, 107); } break; - case 1093: + case 1100: if (curChar == 48) { jjCheckNAddStates(3, 6); } break; - case 1095: + case 1102: if ((0x3ff000000000000L & l) != 0L) { jjCheckNAddStates(108, 110); } break; - case 1096: + case 1103: if ((0xff000000000000L & l) != 0L) { jjCheckNAddStates(111, 113); } break; - case 1098: + case 1105: if (curChar != 47) break; - if (kind > 243) - kind = 243; - { jjCheckNAddTwoStates(1099, 1100); } + if (kind > 244) + kind = 244; + { jjCheckNAddTwoStates(1106, 1107); } break; - case 1099: + case 1106: if ((0xf7fffffaffffdbffL & l) == 0L) break; - if (kind > 243) - kind = 243; - { jjCheckNAddTwoStates(1099, 1100); } + if (kind > 244) + kind = 244; + { jjCheckNAddTwoStates(1106, 1107); } break; - case 1101: + case 1108: if ((0x808400000000L & l) == 0L) break; - if (kind > 243) - kind = 243; - { jjCheckNAddTwoStates(1099, 1100); } + if (kind > 244) + kind = 244; + { jjCheckNAddTwoStates(1106, 1107); } break; - case 1102: + case 1109: if ((0xff000000000000L & l) == 0L) break; - if (kind > 243) - kind = 243; + if (kind > 244) + kind = 244; { jjCheckNAddStates(114, 116); } break; - case 1103: + case 1110: if ((0xff000000000000L & l) == 0L) break; - if (kind > 243) - kind = 243; - { jjCheckNAddTwoStates(1099, 1100); } + if (kind > 244) + kind = 244; + { jjCheckNAddTwoStates(1106, 1107); } break; - case 1104: + case 1111: if ((0xf000000000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1105; + jjstateSet[jjnewStateCnt++] = 1112; break; - case 1105: + case 1112: if ((0xff000000000000L & l) != 0L) - { jjCheckNAdd(1103); } + { jjCheckNAdd(1110); } break; - case 1106: + case 1113: if (curChar == 47) - jjstateSet[jjnewStateCnt++] = 1098; + jjstateSet[jjnewStateCnt++] = 1105; break; - case 1107: + case 1114: if (curChar == 58) - jjstateSet[jjnewStateCnt++] = 1106; + jjstateSet[jjnewStateCnt++] = 1113; break; - case 1111: + case 1118: if (curChar != 47) break; - if (kind > 244) - kind = 244; - { jjCheckNAddTwoStates(1112, 1113); } + if (kind > 245) + kind = 245; + { jjCheckNAddTwoStates(1119, 1120); } break; - case 1112: + case 1119: if ((0xf7fffffaffffdbffL & l) == 0L) break; - if (kind > 244) - kind = 244; - { jjCheckNAddTwoStates(1112, 1113); } + if (kind > 245) + kind = 245; + { jjCheckNAddTwoStates(1119, 1120); } break; - case 1114: + case 1121: if ((0x808400000000L & l) == 0L) break; - if (kind > 244) - kind = 244; - { jjCheckNAddTwoStates(1112, 1113); } + if (kind > 245) + kind = 245; + { jjCheckNAddTwoStates(1119, 1120); } break; - case 1115: + case 1122: if ((0xff000000000000L & l) == 0L) break; - if (kind > 244) - kind = 244; + if (kind > 245) + kind = 245; { jjCheckNAddStates(117, 119); } break; - case 1116: + case 1123: if ((0xff000000000000L & l) == 0L) break; - if (kind > 244) - kind = 244; - { jjCheckNAddTwoStates(1112, 1113); } + if (kind > 245) + kind = 245; + { jjCheckNAddTwoStates(1119, 1120); } break; - case 1117: + case 1124: if ((0xf000000000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1118; + jjstateSet[jjnewStateCnt++] = 1125; break; - case 1118: + case 1125: if ((0xff000000000000L & l) != 0L) - { jjCheckNAdd(1116); } + { jjCheckNAdd(1123); } break; - case 1119: + case 1126: if (curChar == 47) - jjstateSet[jjnewStateCnt++] = 1111; + jjstateSet[jjnewStateCnt++] = 1118; break; - case 1120: + case 1127: if (curChar == 58) - jjstateSet[jjnewStateCnt++] = 1119; + jjstateSet[jjnewStateCnt++] = 1126; break; - case 1125: + case 1132: if (curChar != 48) break; - if (kind > 150) - kind = 150; + if (kind > 151) + kind = 151; { jjCheckNAddStates(41, 53); } break; - case 1127: + case 1134: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 150) - kind = 150; - { jjCheckNAddTwoStates(1127, 1047); } + if (kind > 151) + kind = 151; + { jjCheckNAddTwoStates(1134, 1054); } break; - case 1128: + case 1135: if ((0xff000000000000L & l) == 0L) break; - if (kind > 150) - kind = 150; - { jjCheckNAddTwoStates(1128, 1047); } + if (kind > 151) + kind = 151; + { jjCheckNAddTwoStates(1135, 1054); } break; - case 1130: + case 1137: if ((0x3ff000000000000L & l) != 0L) { jjAddStates(120, 121); } break; - case 1131: + case 1138: if (curChar == 46) - { jjCheckNAdd(1132); } + { jjCheckNAdd(1139); } break; - case 1132: + case 1139: if ((0x3ff000000000000L & l) != 0L) - { jjCheckNAddTwoStates(1132, 1133); } + { jjCheckNAddTwoStates(1139, 1140); } break; - case 1134: + case 1141: if ((0x280000000000L & l) != 0L) - { jjCheckNAdd(1135); } + { jjCheckNAdd(1142); } break; - case 1135: + case 1142: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 154) - kind = 154; - { jjCheckNAddTwoStates(1135, 20); } + if (kind > 155) + kind = 155; + { jjCheckNAddTwoStates(1142, 20); } break; - case 1137: + case 1144: if ((0x3ff000000000000L & l) != 0L) { jjCheckNAddStates(122, 124); } break; - case 1138: + case 1145: if (curChar == 46) - { jjCheckNAdd(1139); } + { jjCheckNAdd(1146); } break; - case 1140: + case 1147: if ((0x280000000000L & l) != 0L) - { jjCheckNAdd(1141); } + { jjCheckNAdd(1148); } break; - case 1141: + case 1148: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 154) - kind = 154; - { jjCheckNAddTwoStates(1141, 20); } + if (kind > 155) + kind = 155; + { jjCheckNAddTwoStates(1148, 20); } break; default : break; } @@ -1183,35 +1182,11 @@ else if (curChar < 128) { switch(jjstateSet[--i]) { - case 1004: - if ((0x20000000200L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1044; - else if ((0x800000008000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1041; - else if ((0x4000000040000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1038; - else if ((0x4000000040L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1028; - else if ((0x10000000100000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1012; - if ((0x20000000200L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1036; - else if ((0x800000008000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1033; - else if ((0x4000000040000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1021; - else if ((0x10000000100000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1005; - if ((0x4000000040000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1016; - if ((0x4000000040000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1009; - break; case 3: if ((0x7fffffe87fffffeL & l) != 0L) { - if (kind > 235) - kind = 235; + if (kind > 236) + kind = 236; { jjCheckNAdd(30); } } else if (curChar == 64) @@ -1249,17 +1224,17 @@ else if ((0x800000008L & l) != 0L) else if ((0x20000000200L & l) != 0L) { jjAddStates(239, 254); } else if ((0x200000002000L & l) != 0L) - { jjAddStates(255, 260); } + { jjAddStates(255, 261); } else if ((0x10000000100000L & l) != 0L) - { jjAddStates(261, 267); } + { jjAddStates(262, 268); } else if ((0x8000000080000L & l) != 0L) - { jjAddStates(268, 276); } + { jjAddStates(269, 277); } else if ((0x200000002L & l) != 0L) - { jjAddStates(277, 285); } + { jjAddStates(278, 286); } else if ((0x80000000800L & l) != 0L) jjstateSet[jjnewStateCnt++] = 27; else if (curChar == 104) - { jjAddStates(286, 287); } + { jjAddStates(287, 288); } if (curChar == 73) { jjCheckNAddTwoStates(81, 80); } else if (curChar == 105) @@ -1277,6 +1252,30 @@ else if (curChar == 102) if (curChar == 92) { jjCheckNAdd(33); } break; + case 1011: + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1051; + else if ((0x800000008000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1048; + else if ((0x4000000040000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1045; + else if ((0x4000000040L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1035; + else if ((0x10000000100000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1019; + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1043; + else if ((0x800000008000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1040; + else if ((0x4000000040000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1028; + else if ((0x10000000100000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1012; + if ((0x4000000040000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1023; + if ((0x4000000040000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1016; + break; case 1: if (kind > 6) kind = 6; @@ -1284,7 +1283,7 @@ else if (curChar == 102) case 5: if (kind > 11) kind = 11; - { jjAddStates(288, 289); } + { jjAddStates(289, 290); } break; case 9: if (curChar == 64) @@ -1304,11 +1303,11 @@ else if (curChar == 102) break; case 17: if ((0x2000000020L & l) != 0L) - { jjAddStates(290, 291); } + { jjAddStates(291, 292); } break; case 20: - if ((0x5000000050L & l) != 0L && kind > 154) - kind = 154; + if ((0x5000000050L & l) != 0L && kind > 155) + kind = 155; break; case 22: if ((0xffffffffefffffffL & l) != 0L) @@ -1331,15 +1330,15 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 28; break; case 28: - if ((0x200000002000000L & l) != 0L && kind > 232) - kind = 232; + if ((0x200000002000000L & l) != 0L && kind > 233) + kind = 233; break; case 29: case 30: if ((0x7fffffe87fffffeL & l) == 0L) break; - if (kind > 235) - kind = 235; + if (kind > 236) + kind = 236; { jjCheckNAdd(30); } break; case 31: @@ -1359,25 +1358,25 @@ else if (curChar == 102) { jjCheckNAdd(33); } break; case 35: - if (curChar == 96 && kind > 236) - kind = 236; + if (curChar == 96 && kind > 237) + kind = 237; break; case 38: if ((0xffffffffefffffffL & l) == 0L) break; - if (kind > 245) - kind = 245; + if (kind > 246) + kind = 246; { jjCheckNAddTwoStates(38, 39); } break; case 39: if (curChar == 92) - { jjAddStates(292, 294); } + { jjAddStates(293, 295); } break; case 40: if ((0x14404410000000L & l) == 0L) break; - if (kind > 245) - kind = 245; + if (kind > 246) + kind = 246; { jjCheckNAddTwoStates(38, 39); } break; case 47: @@ -1399,19 +1398,19 @@ else if (curChar == 102) case 52: if ((0xffffffffefffffffL & l) == 0L) break; - if (kind > 246) - kind = 246; + if (kind > 247) + kind = 247; { jjCheckNAddTwoStates(52, 53); } break; case 53: if (curChar == 92) - { jjAddStates(295, 297); } + { jjAddStates(296, 298); } break; case 54: if ((0x14404410000000L & l) == 0L) break; - if (kind > 246) - kind = 246; + if (kind > 247) + kind = 247; { jjCheckNAddTwoStates(52, 53); } break; case 61: @@ -1454,8 +1453,8 @@ else if (curChar == 102) case 72: if ((0x7fffffe87fffffeL & l) == 0L) break; - if (kind > 247) - kind = 247; + if (kind > 248) + kind = 248; { jjCheckNAdd(72); } break; case 73: @@ -1487,12 +1486,12 @@ else if (curChar == 102) { jjCheckNAddTwoStates(80, 81); } break; case 80: - if (curChar == 115 && kind > 223) - kind = 223; + if (curChar == 115 && kind > 224) + kind = 224; break; case 81: - if (curChar == 83 && kind > 223) - kind = 223; + if (curChar == 83 && kind > 224) + kind = 224; break; case 82: if (curChar == 73) @@ -1500,19 +1499,19 @@ else if (curChar == 102) break; case 85: if ((0x2000000020L & l) != 0L) - { jjAddStates(298, 299); } + { jjAddStates(299, 300); } break; case 89: if ((0x2000000020L & l) != 0L) - { jjAddStates(300, 301); } + { jjAddStates(301, 302); } break; case 95: if ((0x2000000020L & l) != 0L) - { jjAddStates(302, 303); } + { jjAddStates(303, 304); } break; case 98: if ((0x200000002L & l) != 0L) - { jjAddStates(277, 285); } + { jjAddStates(278, 286); } break; case 99: if ((0x100000001000L & l) != 0L) @@ -1627,12 +1626,12 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 127; break; case 127: - if ((0x100000001000L & l) != 0L && kind > 112) - kind = 112; + if ((0x100000001000L & l) != 0L && kind > 113) + kind = 113; break; case 128: if ((0x8000000080000L & l) != 0L) - { jjAddStates(268, 276); } + { jjAddStates(269, 277); } break; case 129: if ((0x2000000020L & l) != 0L) @@ -1767,8 +1766,8 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 162; break; case 162: - if ((0x1000000010000L & l) != 0L && kind > 126) - kind = 126; + if ((0x1000000010000L & l) != 0L && kind > 127) + kind = 127; break; case 163: if ((0x10000000100000L & l) != 0L) @@ -1783,8 +1782,8 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 166; break; case 166: - if ((0x10000000100000L & l) != 0L && kind > 128) - kind = 128; + if ((0x10000000100000L & l) != 0L && kind > 129) + kind = 129; break; case 167: if ((0x200000002000000L & l) != 0L) @@ -1803,12 +1802,12 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 171; break; case 171: - if ((0x200000002000L & l) != 0L && kind > 139) - kind = 139; + if ((0x200000002000L & l) != 0L && kind > 140) + kind = 140; break; case 172: if ((0x10000000100000L & l) != 0L) - { jjAddStates(261, 267); } + { jjAddStates(262, 268); } break; case 173: if ((0x4000000040000L & l) != 0L) @@ -1931,12 +1930,12 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 203; break; case 203: - if ((0x2000000020L & l) != 0L && kind > 163) - kind = 163; + if ((0x2000000020L & l) != 0L && kind > 164) + kind = 164; break; case 204: if ((0x200000002000L & l) != 0L) - { jjAddStates(255, 260); } + { jjAddStates(255, 261); } break; case 205: if ((0x200000002L & l) != 0L) @@ -2027,83 +2026,83 @@ else if (curChar == 102) kind = 72; break; case 227: - if ((0x800000008000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 228; break; case 228: - if ((0x40000000400000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 229; break; case 229: - if ((0x2000000020L & l) != 0L && kind > 134) - kind = 134; + if ((0x200000002L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 230; break; case 230: - if ((0x200000002L & l) != 0L) + if ((0x1000000010L & l) != 0L) jjstateSet[jjnewStateCnt++] = 231; break; case 231: - if ((0x10000000100000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 232; break; case 232: - if ((0x800000008L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 233; break; case 233: - if ((0x10000000100L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 234; + if ((0x200000002L & l) != 0L && kind > 98) + kind = 98; break; case 234: - if ((0x2000000020L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 235; break; case 235: - if ((0x8000000080000L & l) != 0L && kind > 231) - kind = 231; + if ((0x40000000400000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 236; break; case 236: - if ((0x20000000200L & l) != 0L) - { jjAddStates(239, 254); } + if ((0x2000000020L & l) != 0L && kind > 135) + kind = 135; break; case 237: - if ((0x400000004000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 238; break; case 238: - if ((0x8000000080000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 239; break; case 239: - if ((0x2000000020L & l) != 0L) + if ((0x800000008L & l) != 0L) jjstateSet[jjnewStateCnt++] = 240; break; case 240: - if ((0x4000000040000L & l) != 0L) + if ((0x10000000100L & l) != 0L) jjstateSet[jjnewStateCnt++] = 241; break; case 241: - if ((0x10000000100000L & l) != 0L && kind > 16) - kind = 16; + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 242; break; case 242: - if ((0x400000004000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 243; + if ((0x8000000080000L & l) != 0L && kind > 232) + kind = 232; break; case 243: - if ((0x10000000100000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 244; + if ((0x20000000200L & l) != 0L) + { jjAddStates(239, 254); } break; case 244: - if ((0x800000008000L & l) != 0L && kind > 29) - kind = 29; + if ((0x400000004000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 245; break; case 245: - if ((0x400000004000L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 246; break; case 246: - if ((0x800000008L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 247; break; case 247: @@ -2111,31 +2110,31 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 248; break; case 248: - if ((0x2000000020L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 249; + if ((0x10000000100000L & l) != 0L && kind > 16) + kind = 16; break; case 249: - if ((0x200000002000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 250; break; case 250: - if ((0x2000000020L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 251; break; case 251: - if ((0x400000004000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 252; + if ((0x800000008000L & l) != 0L && kind > 29) + kind = 29; break; case 252: - if ((0x10000000100000L & l) != 0L && kind > 38) - kind = 38; + if ((0x400000004000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 253; break; case 253: - if ((0x400000004000L & l) != 0L) + if ((0x800000008L & l) != 0L) jjstateSet[jjnewStateCnt++] = 254; break; case 254: - if ((0x1000000010L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 255; break; case 255: @@ -2143,99 +2142,99 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 256; break; case 256: - if ((0x100000001000000L & l) != 0L && kind > 95) - kind = 95; + if ((0x200000002000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 257; break; case 257: - if ((0x200000002000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 258; break; case 258: - if ((0x1000000010000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 259; break; case 259: - if ((0x800000008000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 260; + if ((0x10000000100000L & l) != 0L && kind > 38) + kind = 38; break; case 260: - if ((0x4000000040000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 261; break; case 261: - if ((0x10000000100000L & l) != 0L && kind > 102) - kind = 102; + if ((0x1000000010L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 262; break; case 262: - if ((0x400000004000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 263; break; case 263: - if ((0x40000000400000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 264; + if ((0x100000001000000L & l) != 0L && kind > 95) + kind = 95; break; case 264: - if ((0x2000000020L & l) != 0L) + if ((0x200000002000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 265; break; case 265: - if ((0x4000000040000L & l) != 0L) + if ((0x1000000010000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 266; break; case 266: - if ((0x8000000080000L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 267; break; case 267: - if ((0x2000000020L & l) != 0L && kind > 106) - kind = 106; + if ((0x4000000040000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 268; break; case 268: - if ((0x4000000040L & l) != 0L && kind > 120) - kind = 120; + if ((0x10000000100000L & l) != 0L && kind > 103) + kind = 103; break; case 269: - if ((0x8000000080000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 270; break; case 270: - if ((0x800000008000L & l) != 0L) + if ((0x40000000400000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 271; break; case 271: - if ((0x100000001000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 272; break; case 272: - if ((0x200000002L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 273; break; case 273: - if ((0x10000000100000L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 274; break; case 274: - if ((0x20000000200L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 275; + if ((0x2000000020L & l) != 0L && kind > 107) + kind = 107; break; case 275: - if ((0x800000008000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 276; + if ((0x4000000040L & l) != 0L && kind > 121) + kind = 121; break; case 276: - if ((0x400000004000L & l) != 0L && kind > 125) - kind = 125; + if ((0x8000000080000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 277; break; case 277: - if ((0x1000000010L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 278; break; case 278: - if ((0x2000000020L & l) != 0L) + if ((0x100000001000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 279; break; case 279: - if ((0x400000004000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 280; break; case 280: @@ -2247,27 +2246,27 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 282; break; case 282: - if ((0x4000000040L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 283; break; case 283: - if ((0x20000000200L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 284; + if ((0x400000004000L & l) != 0L && kind > 126) + kind = 126; break; case 284: - if ((0x2000000020L & l) != 0L) + if ((0x1000000010L & l) != 0L) jjstateSet[jjnewStateCnt++] = 285; break; case 285: - if ((0x1000000010L & l) != 0L && kind > 137) - kind = 137; + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 286; break; case 286: - if ((0x400000004000L & l) != 0L && kind > 220) - kind = 220; + if ((0x400000004000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 287; break; case 287: - if ((0x100000001000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 288; break; case 288: @@ -2275,584 +2274,584 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 289; break; case 289: - if ((0x80000000800L & l) != 0L) + if ((0x4000000040L & l) != 0L) jjstateSet[jjnewStateCnt++] = 290; break; case 290: - if ((0x2000000020L & l) != 0L && kind > 222) - kind = 222; + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 291; break; case 291: - if ((0x400000004000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 292; break; case 292: - if ((0x8000000080000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 293; + if ((0x1000000010L & l) != 0L && kind > 138) + kind = 138; break; case 293: - if ((0x10000000100000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 294; + if ((0x400000004000L & l) != 0L && kind > 221) + kind = 221; break; case 294: - if ((0x200000002L & l) != 0L) + if ((0x100000001000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 295; break; case 295: - if ((0x400000004000L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 296; break; case 296: - if ((0x800000008L & l) != 0L) + if ((0x80000000800L & l) != 0L) jjstateSet[jjnewStateCnt++] = 297; break; case 297: - if ((0x2000000020L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 298; + if ((0x2000000020L & l) != 0L && kind > 223) + kind = 223; break; case 298: - if ((0x800000008000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 299; break; case 299: - if ((0x4000000040L & l) != 0L && kind > 233) - kind = 233; + if ((0x8000000080000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 300; break; case 300: - if ((0x400000004000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 301; break; case 301: - if ((0x1000000010L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 302; break; case 302: - if ((0x2000000020L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 303; break; case 303: - if ((0x100000001000000L & l) != 0L) + if ((0x800000008L & l) != 0L) jjstateSet[jjnewStateCnt++] = 304; break; + case 304: + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 305; + break; case 305: - if ((0x400000004000L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 306; break; case 306: - if ((0x1000000010L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 307; + if ((0x4000000040L & l) != 0L && kind > 234) + kind = 234; break; case 307: - if ((0x2000000020L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 308; break; case 308: - if ((0x100000001000000L & l) != 0L) + if ((0x1000000010L & l) != 0L) jjstateSet[jjnewStateCnt++] = 309; break; case 309: - if ((0x40000000400000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 310; break; case 310: - if ((0x200000002L & l) != 0L) + if ((0x100000001000000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 311; break; - case 311: - if ((0x100000001000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 312; - break; case 312: - if ((0x20000000200000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 313; break; case 313: - if ((0x2000000020L & l) != 0L) + if ((0x1000000010L & l) != 0L) jjstateSet[jjnewStateCnt++] = 314; break; case 314: - if ((0x8000000080000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 315; break; + case 315: + if ((0x100000001000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 316; + break; case 316: - if (curChar == 95) + if ((0x40000000400000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 317; break; case 317: - case 318: - if ((0x7fffffe87fffffeL & l) == 0L) - break; - if (kind > 238) - kind = 238; - { jjCheckNAddTwoStates(318, 319); } + if ((0x200000002L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 318; + break; + case 318: + if ((0x100000001000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 319; + break; + case 319: + if ((0x20000000200000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 320; break; case 320: - case 321: - if ((0x7fffffe87fffffeL & l) == 0L) - break; - if (kind > 238) - kind = 238; - { jjCheckNAddTwoStates(319, 321); } + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 321; break; - case 322: - if (curChar == 95) - jjstateSet[jjnewStateCnt++] = 316; + case 321: + if ((0x8000000080000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 322; break; case 323: if (curChar == 95) - jjstateSet[jjnewStateCnt++] = 322; + jjstateSet[jjnewStateCnt++] = 324; break; case 324: - if (curChar == 64) - jjstateSet[jjnewStateCnt++] = 323; - break; case 325: - if (curChar == 112) - jjstateSet[jjnewStateCnt++] = 324; - break; - case 326: - if (curChar == 97) - jjstateSet[jjnewStateCnt++] = 325; + if ((0x7fffffe87fffffeL & l) == 0L) + break; + if (kind > 239) + kind = 239; + { jjCheckNAddTwoStates(325, 326); } break; case 327: - if (curChar == 109) - jjstateSet[jjnewStateCnt++] = 326; - break; case 328: - if (curChar == 100) - jjstateSet[jjnewStateCnt++] = 327; + if ((0x7fffffe87fffffeL & l) == 0L) + break; + if (kind > 239) + kind = 239; + { jjCheckNAddTwoStates(326, 328); } break; case 329: - if (curChar == 114) - jjstateSet[jjnewStateCnt++] = 328; + if (curChar == 95) + jjstateSet[jjnewStateCnt++] = 323; break; case 330: - if (curChar == 111) + if (curChar == 95) jjstateSet[jjnewStateCnt++] = 329; break; case 331: - if (curChar == 99) + if (curChar == 64) jjstateSet[jjnewStateCnt++] = 330; break; case 332: - if (curChar == 101) + if (curChar == 112) jjstateSet[jjnewStateCnt++] = 331; break; case 333: - if (curChar == 114) + if (curChar == 97) jjstateSet[jjnewStateCnt++] = 332; break; case 334: - if (curChar == 64) + if (curChar == 109) jjstateSet[jjnewStateCnt++] = 333; break; case 335: - if (curChar == 95) + if (curChar == 100) jjstateSet[jjnewStateCnt++] = 334; break; case 336: - if (curChar == 95) + if (curChar == 114) jjstateSet[jjnewStateCnt++] = 335; break; case 337: - if ((0x400000004000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 338; + if (curChar == 111) + jjstateSet[jjnewStateCnt++] = 336; break; case 338: - if ((0x1000000010L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 339; + if (curChar == 99) + jjstateSet[jjnewStateCnt++] = 337; break; case 339: - if ((0x2000000020L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 340; + if (curChar == 101) + jjstateSet[jjnewStateCnt++] = 338; break; case 340: - if ((0x100000001000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 341; + if (curChar == 114) + jjstateSet[jjnewStateCnt++] = 339; break; case 341: - if ((0x40000000400000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 342; + if (curChar == 64) + jjstateSet[jjnewStateCnt++] = 340; break; case 342: - if ((0x200000002L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 343; + if (curChar == 95) + jjstateSet[jjnewStateCnt++] = 341; break; case 343: - if ((0x100000001000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 344; + if (curChar == 95) + jjstateSet[jjnewStateCnt++] = 342; break; case 344: - if ((0x20000000200000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 345; break; case 345: - if ((0x2000000020L & l) != 0L) + if ((0x1000000010L & l) != 0L) jjstateSet[jjnewStateCnt++] = 346; break; case 346: - if ((0x8000000080000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 347; break; case 347: - if ((0x200000002L & l) != 0L) + if ((0x100000001000000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 348; break; case 348: - if ((0x8000000080000L & l) != 0L) + if ((0x40000000400000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 349; break; case 349: - if ((0x800000008L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 350; break; + case 350: + if ((0x100000001000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 351; + break; case 351: - if (curChar == 95) + if ((0x20000000200000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 352; break; case 352: + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 353; + break; case 353: - if ((0x7fffffe87fffffeL & l) == 0L) - break; - if (kind > 239) - kind = 239; - { jjCheckNAddTwoStates(353, 354); } + if ((0x8000000080000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 354; + break; + case 354: + if ((0x200000002L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 355; break; case 355: - case 356: - if ((0x7fffffe87fffffeL & l) == 0L) - break; - if (kind > 239) - kind = 239; - { jjCheckNAddTwoStates(354, 356); } + if ((0x8000000080000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 356; break; - case 357: - if (curChar == 95) - jjstateSet[jjnewStateCnt++] = 351; + case 356: + if ((0x800000008L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 357; break; case 358: if (curChar == 95) - jjstateSet[jjnewStateCnt++] = 357; + jjstateSet[jjnewStateCnt++] = 359; break; case 359: - if (curChar == 64) - jjstateSet[jjnewStateCnt++] = 358; - break; case 360: - if (curChar == 112) - jjstateSet[jjnewStateCnt++] = 359; - break; - case 361: - if (curChar == 97) - jjstateSet[jjnewStateCnt++] = 360; + if ((0x7fffffe87fffffeL & l) == 0L) + break; + if (kind > 240) + kind = 240; + { jjCheckNAddTwoStates(360, 361); } break; case 362: - if (curChar == 109) - jjstateSet[jjnewStateCnt++] = 361; - break; case 363: - if (curChar == 100) - jjstateSet[jjnewStateCnt++] = 362; + if ((0x7fffffe87fffffeL & l) == 0L) + break; + if (kind > 240) + kind = 240; + { jjCheckNAddTwoStates(361, 363); } break; case 364: - if (curChar == 114) - jjstateSet[jjnewStateCnt++] = 363; + if (curChar == 95) + jjstateSet[jjnewStateCnt++] = 358; break; case 365: - if (curChar == 111) + if (curChar == 95) jjstateSet[jjnewStateCnt++] = 364; break; case 366: - if (curChar == 99) + if (curChar == 64) jjstateSet[jjnewStateCnt++] = 365; break; case 367: - if (curChar == 101) + if (curChar == 112) jjstateSet[jjnewStateCnt++] = 366; break; case 368: - if (curChar == 114) + if (curChar == 97) jjstateSet[jjnewStateCnt++] = 367; break; case 369: - if (curChar == 64) + if (curChar == 109) jjstateSet[jjnewStateCnt++] = 368; break; case 370: - if (curChar == 95) + if (curChar == 100) jjstateSet[jjnewStateCnt++] = 369; break; case 371: - if (curChar == 95) + if (curChar == 114) jjstateSet[jjnewStateCnt++] = 370; break; case 372: - if ((0x400000004000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 373; + if (curChar == 111) + jjstateSet[jjnewStateCnt++] = 371; break; case 373: - if ((0x1000000010L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 374; + if (curChar == 99) + jjstateSet[jjnewStateCnt++] = 372; break; case 374: - if ((0x2000000020L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 375; + if (curChar == 101) + jjstateSet[jjnewStateCnt++] = 373; break; case 375: - if ((0x100000001000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 376; + if (curChar == 114) + jjstateSet[jjnewStateCnt++] = 374; break; case 376: - if ((0x40000000400000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 377; + if (curChar == 64) + jjstateSet[jjnewStateCnt++] = 375; break; case 377: - if ((0x200000002L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 378; + if (curChar == 95) + jjstateSet[jjnewStateCnt++] = 376; break; case 378: - if ((0x100000001000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 379; + if (curChar == 95) + jjstateSet[jjnewStateCnt++] = 377; break; case 379: - if ((0x20000000200000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 380; break; case 380: - if ((0x2000000020L & l) != 0L) + if ((0x1000000010L & l) != 0L) jjstateSet[jjnewStateCnt++] = 381; break; case 381: - if ((0x8000000080000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 382; break; case 382: - if ((0x1000000010L & l) != 0L) + if ((0x100000001000000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 383; break; case 383: - if ((0x2000000020L & l) != 0L) + if ((0x40000000400000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 384; break; case 384: - if ((0x8000000080000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 385; break; case 385: - if ((0x800000008L & l) != 0L) + if ((0x100000001000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 386; break; + case 386: + if ((0x20000000200000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 387; + break; case 387: - if (curChar == 95) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 388; break; case 388: + if ((0x8000000080000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 389; + break; case 389: - if ((0x7fffffe87fffffeL & l) == 0L) - break; - if (kind > 240) - kind = 240; - { jjCheckNAddTwoStates(389, 390); } + if ((0x1000000010L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 390; + break; + case 390: + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 391; break; case 391: - case 392: - if ((0x7fffffe87fffffeL & l) == 0L) - break; - if (kind > 240) - kind = 240; - { jjCheckNAddTwoStates(390, 392); } + if ((0x8000000080000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 392; break; - case 393: - if (curChar == 95) - jjstateSet[jjnewStateCnt++] = 387; + case 392: + if ((0x800000008L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 393; break; case 394: if (curChar == 95) - jjstateSet[jjnewStateCnt++] = 393; + jjstateSet[jjnewStateCnt++] = 395; break; case 395: - if (curChar == 64) - jjstateSet[jjnewStateCnt++] = 394; - break; case 396: - if (curChar == 112) - jjstateSet[jjnewStateCnt++] = 395; - break; - case 397: - if (curChar == 97) - jjstateSet[jjnewStateCnt++] = 396; + if ((0x7fffffe87fffffeL & l) == 0L) + break; + if (kind > 241) + kind = 241; + { jjCheckNAddTwoStates(396, 397); } break; case 398: - if (curChar == 109) - jjstateSet[jjnewStateCnt++] = 397; - break; case 399: - if (curChar == 100) - jjstateSet[jjnewStateCnt++] = 398; + if ((0x7fffffe87fffffeL & l) == 0L) + break; + if (kind > 241) + kind = 241; + { jjCheckNAddTwoStates(397, 399); } break; case 400: - if (curChar == 114) - jjstateSet[jjnewStateCnt++] = 399; + if (curChar == 95) + jjstateSet[jjnewStateCnt++] = 394; break; case 401: - if (curChar == 111) + if (curChar == 95) jjstateSet[jjnewStateCnt++] = 400; break; case 402: - if (curChar == 99) + if (curChar == 64) jjstateSet[jjnewStateCnt++] = 401; break; case 403: - if (curChar == 101) + if (curChar == 112) jjstateSet[jjnewStateCnt++] = 402; break; case 404: - if (curChar == 114) + if (curChar == 97) jjstateSet[jjnewStateCnt++] = 403; break; case 405: - if (curChar == 64) + if (curChar == 109) jjstateSet[jjnewStateCnt++] = 404; break; case 406: - if (curChar == 95) + if (curChar == 100) jjstateSet[jjnewStateCnt++] = 405; break; case 407: - if (curChar == 95) + if (curChar == 114) jjstateSet[jjnewStateCnt++] = 406; break; case 408: - if ((0x800000008L & l) != 0L) - { jjAddStates(225, 238); } + if (curChar == 111) + jjstateSet[jjnewStateCnt++] = 407; break; case 409: - if ((0x4000000040000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 410; + if (curChar == 99) + jjstateSet[jjnewStateCnt++] = 408; break; case 410: - if ((0x2000000020L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 411; + if (curChar == 101) + jjstateSet[jjnewStateCnt++] = 409; break; case 411: - if ((0x200000002L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 412; + if (curChar == 114) + jjstateSet[jjnewStateCnt++] = 410; break; case 412: - if ((0x10000000100000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 413; + if (curChar == 64) + jjstateSet[jjnewStateCnt++] = 411; break; case 413: - if ((0x2000000020L & l) != 0L && kind > 17) - kind = 17; + if (curChar == 95) + jjstateSet[jjnewStateCnt++] = 412; break; case 414: - if ((0x20000000200000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 415; + if (curChar == 95) + jjstateSet[jjnewStateCnt++] = 413; break; case 415: - if ((0x8000000080000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 416; + if ((0x800000008L & l) != 0L) + { jjAddStates(225, 238); } break; case 416: - if ((0x10000000100000L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 417; break; case 417: - if ((0x800000008000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 418; break; case 418: - if ((0x200000002000L & l) != 0L && kind > 18) - kind = 18; + if ((0x200000002L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 419; break; case 419: - if ((0x800000008000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 420; break; case 420: - if ((0x400000004000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 421; + if ((0x2000000020L & l) != 0L && kind > 17) + kind = 17; break; case 421: - if ((0x10000000100000L & l) != 0L) + if ((0x20000000200000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 422; break; case 422: - if ((0x2000000020L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 423; break; case 423: - if ((0x400000004000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 424; break; case 424: - if ((0x10000000100000L & l) != 0L && kind > 36) - kind = 36; + if ((0x800000008000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 425; break; case 425: - if ((0x10000000100L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 426; + if ((0x200000002000L & l) != 0L && kind > 18) + kind = 18; break; case 426: - if ((0x2000000020L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 427; break; case 427: - if ((0x800000008L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 428; break; case 428: - if ((0x80000000800L & l) != 0L && kind > 62) - kind = 62; + if ((0x10000000100000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 429; break; case 429: - if ((0x800000008000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 430; break; case 430: - if ((0x200000002000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 431; break; case 431: - if ((0x200000002000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 432; + if ((0x10000000100000L & l) != 0L && kind > 36) + kind = 36; break; case 432: - if ((0x20000000200L & l) != 0L) + if ((0x10000000100L & l) != 0L) jjstateSet[jjnewStateCnt++] = 433; break; case 433: - if ((0x10000000100000L & l) != 0L && kind > 118) - kind = 118; + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 434; break; case 434: - if ((0x800000008000L & l) != 0L) + if ((0x800000008L & l) != 0L) jjstateSet[jjnewStateCnt++] = 435; break; case 435: - if ((0x400000004000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 436; + if ((0x80000000800L & l) != 0L && kind > 62) + kind = 62; break; case 436: - if ((0x10000000100000L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 437; break; case 437: - if ((0x20000000200L & l) != 0L) + if ((0x200000002000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 438; break; case 438: - if ((0x400000004000L & l) != 0L) + if ((0x200000002000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 439; break; case 439: - if ((0x20000000200000L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 440; break; case 440: - if ((0x2000000020L & l) != 0L && kind > 122) - kind = 122; + if ((0x10000000100000L & l) != 0L && kind > 119) + kind = 119; break; case 441: if ((0x800000008000L & l) != 0L) @@ -2863,27 +2862,27 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 443; break; case 443: - if ((0x8000000080000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 444; break; case 444: - if ((0x800000008000L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 445; break; case 445: - if ((0x100000001000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 446; break; case 446: - if ((0x2000000020L & l) != 0L && kind > 127) - kind = 127; + if ((0x20000000200000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 447; break; case 447: - if ((0x800000008000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 448; + if ((0x2000000020L & l) != 0L && kind > 123) + kind = 123; break; case 448: - if ((0x20000000200000L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 449; break; case 449: @@ -2891,27 +2890,27 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 450; break; case 450: - if ((0x10000000100000L & l) != 0L && kind > 130) - kind = 130; + if ((0x8000000080000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 451; break; case 451: if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 452; break; case 452: - if ((0x400000004000L & l) != 0L) + if ((0x100000001000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 453; break; case 453: - if ((0x10000000100000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 454; + if ((0x2000000020L & l) != 0L && kind > 128) + kind = 128; break; case 454: - if ((0x200000002L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 455; break; case 455: - if ((0x20000000200L & l) != 0L) + if ((0x20000000200000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 456; break; case 456: @@ -2919,8 +2918,8 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 457; break; case 457: - if ((0x8000000080000L & l) != 0L && kind > 225) - kind = 225; + if ((0x10000000100000L & l) != 0L && kind > 131) + kind = 131; break; case 458: if ((0x800000008000L & l) != 0L) @@ -2947,51 +2946,51 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 464; break; case 464: - if ((0x8000000080000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 465; + if ((0x8000000080000L & l) != 0L && kind > 226) + kind = 226; break; case 465: - if ((0x200000002L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 466; break; case 466: - if ((0x100000001000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 467; break; case 467: - if ((0x100000001000L & l) != 0L && kind > 226) - kind = 226; + if ((0x10000000100000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 468; break; case 468: - if ((0x800000008000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 469; break; case 469: - if ((0x400000004000L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 470; break; case 470: - if ((0x10000000100000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 471; break; case 471: - if ((0x200000002L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 472; break; case 472: - if ((0x20000000200L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 473; break; case 473: - if ((0x400000004000L & l) != 0L) + if ((0x100000001000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 474; break; case 474: - if ((0x8000000080000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 475; + if ((0x100000001000L & l) != 0L && kind > 227) + kind = 227; break; case 475: - if ((0x200000002L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 476; break; case 476: @@ -2999,27 +2998,27 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 477; break; case 477: - if ((0x200000002000000L & l) != 0L && kind > 227) - kind = 227; + if ((0x10000000100000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 478; break; case 478: - if ((0x800000008000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 479; break; case 479: - if ((0x400000004000L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 480; break; case 480: - if ((0x10000000100000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 481; break; case 481: - if ((0x200000002L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 482; break; case 482: - if ((0x20000000200L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 483; break; case 483: @@ -3027,79 +3026,79 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 484; break; case 484: - if ((0x8000000080000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 485; + if ((0x200000002000000L & l) != 0L && kind > 228) + kind = 228; break; case 485: - if ((0x80000000800L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 486; break; case 486: - if ((0x2000000020L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 487; break; case 487: - if ((0x200000002000000L & l) != 0L && kind > 228) - kind = 228; + if ((0x10000000100000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 488; break; case 488: - if ((0x800000008000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 489; break; case 489: - if ((0x400000004000L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 490; break; case 490: - if ((0x10000000100000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 491; break; case 491: - if ((0x200000002L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 492; break; case 492: - if ((0x20000000200L & l) != 0L) + if ((0x80000000800L & l) != 0L) jjstateSet[jjnewStateCnt++] = 493; break; case 493: - if ((0x400000004000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 494; break; case 494: - if ((0x8000000080000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 495; + if ((0x200000002000000L & l) != 0L && kind > 229) + kind = 229; break; case 495: - if ((0x40000000400000L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 496; break; case 496: - if ((0x200000002L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 497; break; case 497: - if ((0x100000001000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 498; break; case 498: - if ((0x20000000200000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 499; break; case 499: - if ((0x2000000020L & l) != 0L && kind > 229) - kind = 229; + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 500; break; case 500: - if ((0x800000008000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 501; break; case 501: - if ((0x400000004000L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 502; break; case 502: - if ((0x10000000100000L & l) != 0L) + if ((0x40000000400000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 503; break; case 503: @@ -3107,71 +3106,71 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 504; break; case 504: - if ((0x20000000200L & l) != 0L) + if ((0x100000001000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 505; break; case 505: - if ((0x400000004000L & l) != 0L) + if ((0x20000000200000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 506; break; case 506: - if ((0x8000000080000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 507; + if ((0x2000000020L & l) != 0L && kind > 230) + kind = 230; break; case 507: - if ((0x10000000100000L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 508; break; case 508: - if ((0x2000000020L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 509; break; case 509: - if ((0x100000001000000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 510; break; case 510: - if ((0x10000000100000L & l) != 0L && kind > 230) - kind = 230; + if ((0x200000002L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 511; break; case 511: - if ((0x1000000010L & l) != 0L) - { jjAddStates(215, 224); } + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 512; break; case 512: - if ((0x2000000020L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 513; break; case 513: - if ((0x100000001000L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 514; break; case 514: - if ((0x2000000020L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 515; break; case 515: - if ((0x10000000100000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 516; break; case 516: - if ((0x2000000020L & l) != 0L && kind > 19) - kind = 19; + if ((0x100000001000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 517; break; case 517: - if ((0x800000008000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 518; + if ((0x10000000100000L & l) != 0L && kind > 231) + kind = 231; break; case 518: - if ((0x800000008L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 519; + if ((0x1000000010L & l) != 0L) + { jjAddStates(215, 224); } break; case 519: - if ((0x20000000200000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 520; break; case 520: - if ((0x200000002000L & l) != 0L) + if ((0x100000001000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 521; break; case 521: @@ -3179,183 +3178,183 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 522; break; case 522: - if ((0x400000004000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 523; break; case 523: - if ((0x10000000100000L & l) != 0L && kind > 20) - kind = 20; + if ((0x2000000020L & l) != 0L && kind > 19) + kind = 19; break; case 524: - if ((0x2000000020L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 525; break; case 525: - if ((0x4000000040L & l) != 0L) + if ((0x800000008L & l) != 0L) jjstateSet[jjnewStateCnt++] = 526; break; case 526: - if ((0x20000000200L & l) != 0L) + if ((0x20000000200000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 527; break; case 527: - if ((0x400000004000L & l) != 0L) + if ((0x200000002000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 528; break; case 528: - if ((0x2000000020L & l) != 0L && kind > 42) - kind = 42; + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 529; break; case 529: - if ((0x2000000020L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 530; break; case 530: - if ((0x4000000040L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 531; + if ((0x10000000100000L & l) != 0L && kind > 20) + kind = 20; break; case 531: - if ((0x20000000200L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 532; break; case 532: - if ((0x400000004000L & l) != 0L) + if ((0x4000000040L & l) != 0L) jjstateSet[jjnewStateCnt++] = 533; break; case 533: - if ((0x2000000020L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 534; break; case 534: - if ((0x1000000010L & l) != 0L && kind > 43) - kind = 43; + if ((0x400000004000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 535; break; case 535: - if ((0x2000000020L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 536; + if ((0x2000000020L & l) != 0L && kind > 42) + kind = 42; break; case 536: - if ((0x8000000080000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 537; break; case 537: - if ((0x800000008L & l) != 0L && kind > 54) - kind = 54; + if ((0x4000000040L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 538; break; case 538: - if ((0x2000000020L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 539; break; case 539: - if ((0x1000000010000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 540; break; case 540: - if ((0x10000000100000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 541; break; case 541: - if ((0x10000000100L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 542; + if ((0x1000000010L & l) != 0L && kind > 43) + kind = 43; break; case 542: - if (curChar == 95) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 543; break; case 543: - if ((0x4000000040L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 544; break; case 544: - if ((0x20000000200L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 545; + if ((0x800000008L & l) != 0L && kind > 54) + kind = 54; break; case 545: - if ((0x4000000040000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 546; break; case 546: - if ((0x8000000080000L & l) != 0L) + if ((0x1000000010000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 547; break; case 547: - if ((0x10000000100000L & l) != 0L && kind > 65) - kind = 65; + if ((0x10000000100000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 548; break; case 548: - if ((0x4000000040000L & l) != 0L) + if ((0x10000000100L & l) != 0L) jjstateSet[jjnewStateCnt++] = 549; break; case 549: - if ((0x800000008000L & l) != 0L) + if (curChar == 95) jjstateSet[jjnewStateCnt++] = 550; break; case 550: - if ((0x1000000010000L & l) != 0L && kind > 91) - kind = 91; + if ((0x4000000040L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 551; break; case 551: - if ((0x200000002L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 552; break; case 552: - if ((0x10000000100000L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 553; break; case 553: - if ((0x200000002L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 554; break; case 554: - if ((0x400000004L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 555; + if ((0x10000000100000L & l) != 0L && kind > 65) + kind = 65; break; case 555: - if ((0x200000002L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 556; break; case 556: - if ((0x8000000080000L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 557; break; case 557: - if ((0x2000000020L & l) != 0L && kind > 103) - kind = 103; + if ((0x1000000010000L & l) != 0L && kind > 91) + kind = 91; break; case 558: - if ((0x20000000200L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 559; break; case 559: - if ((0x8000000080000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 560; break; case 560: - if ((0x10000000100000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 561; break; case 561: - if ((0x20000000200L & l) != 0L) + if ((0x400000004L & l) != 0L) jjstateSet[jjnewStateCnt++] = 562; break; case 562: - if ((0x400000004000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 563; break; case 563: - if ((0x800000008L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 564; break; case 564: - if ((0x10000000100000L & l) != 0L && kind > 131) - kind = 131; + if ((0x2000000020L & l) != 0L && kind > 104) + kind = 104; break; case 565: - if ((0x2000000020L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 566; break; case 566: - if ((0x1000000010000L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 567; break; case 567: @@ -3363,396 +3362,396 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 568; break; case 568: - if ((0x10000000100L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 569; break; case 569: - if ((0x200000002L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 570; break; case 570: - if ((0x100000001000L & l) != 0L) + if ((0x800000008L & l) != 0L) jjstateSet[jjnewStateCnt++] = 571; break; case 571: - if ((0x20000000200L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 572; + if ((0x10000000100000L & l) != 0L && kind > 132) + kind = 132; break; case 572: - if ((0x200000002L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 573; break; case 573: - if ((0x8000000080000L & l) != 0L && kind > 135) - kind = 135; + if ((0x1000000010000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 574; break; case 574: - if ((0x40000000400000L & l) != 0L) - { jjAddStates(212, 214); } + if ((0x10000000100000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 575; break; case 575: - if ((0x2000000020L & l) != 0L) + if ((0x10000000100L & l) != 0L) jjstateSet[jjnewStateCnt++] = 576; break; case 576: - if ((0x4000000040000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 577; break; case 577: - if ((0x10000000100000L & l) != 0L) + if ((0x100000001000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 578; break; case 578: - if ((0x2000000020L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 579; break; case 579: - if ((0x100000001000000L & l) != 0L && kind > 21) - kind = 21; + if ((0x200000002L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 580; break; case 580: - if ((0x200000002L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 581; + if ((0x8000000080000L & l) != 0L && kind > 136) + kind = 136; break; case 581: - if ((0x100000001000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 582; + if ((0x40000000400000L & l) != 0L) + { jjAddStates(212, 214); } break; case 582: - if ((0x20000000200000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 583; break; case 583: - if ((0x2000000020L & l) != 0L && kind > 30) - kind = 30; + if ((0x4000000040000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 584; break; case 584: - if ((0x200000002L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 585; break; case 585: - if ((0x100000001000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 586; break; case 586: - if ((0x20000000200000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 587; + if ((0x100000001000000L & l) != 0L && kind > 21) + kind = 21; break; case 587: - if ((0x2000000020L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 588; break; case 588: - if ((0x8000000080000L & l) != 0L && kind > 31) - kind = 31; + if ((0x100000001000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 589; break; case 589: - if ((0x2000000020L & l) != 0L) - { jjAddStates(202, 211); } + if ((0x20000000200000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 590; break; case 590: - if ((0x1000000010L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 591; + if ((0x2000000020L & l) != 0L && kind > 30) + kind = 30; break; case 591: - if ((0x8000000080L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 592; break; case 592: - if ((0x2000000020L & l) != 0L && kind > 22) - kind = 22; + if ((0x100000001000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 593; break; case 593: - if ((0x4000000040000L & l) != 0L) + if ((0x20000000200000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 594; break; case 594: - if ((0x4000000040000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 595; break; case 595: - if ((0x800000008000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 596; + if ((0x8000000080000L & l) != 0L && kind > 31) + kind = 31; break; case 596: - if ((0x4000000040000L & l) != 0L && kind > 49) - kind = 49; + if ((0x2000000020L & l) != 0L) + { jjAddStates(202, 211); } break; case 597: - if ((0x100000001000000L & l) != 0L) + if ((0x1000000010L & l) != 0L) jjstateSet[jjnewStateCnt++] = 598; break; case 598: - if ((0x800000008L & l) != 0L) + if ((0x8000000080L & l) != 0L) jjstateSet[jjnewStateCnt++] = 599; break; case 599: - if ((0x2000000020L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 600; + if ((0x2000000020L & l) != 0L && kind > 22) + kind = 22; break; case 600: - if ((0x1000000010000L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 601; break; case 601: - if ((0x10000000100000L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 602; break; case 602: - if ((0x20000000200L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 603; break; case 603: - if ((0x800000008000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 604; + if ((0x4000000040000L & l) != 0L && kind > 49) + kind = 49; break; case 604: - if ((0x400000004000L & l) != 0L && kind > 76) - kind = 76; + if ((0x100000001000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 605; break; case 605: - if ((0x100000001000000L & l) != 0L) + if ((0x800000008L & l) != 0L) jjstateSet[jjnewStateCnt++] = 606; break; case 606: - if ((0x10000000100000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 607; break; case 607: - if ((0x2000000020L & l) != 0L) + if ((0x1000000010000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 608; break; case 608: - if ((0x400000004000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 609; break; case 609: - if ((0x1000000010L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 610; break; case 610: - if ((0x8000000080000L & l) != 0L && kind > 83) - kind = 83; + if ((0x800000008000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 611; break; case 611: - if ((0x400000004000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 612; + if ((0x400000004000L & l) != 0L && kind > 76) + kind = 76; break; case 612: - if ((0x8000000080L & l) != 0L) + if ((0x100000001000000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 613; break; case 613: - if ((0x20000000200L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 614; break; case 614: - if ((0x400000004000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 615; break; case 615: - if ((0x2000000020L & l) != 0L && kind > 97) - kind = 97; + if ((0x400000004000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 616; break; case 616: - if ((0x100000001000000L & l) != 0L) + if ((0x1000000010L & l) != 0L) jjstateSet[jjnewStateCnt++] = 617; break; case 617: - if ((0x1000000010000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 618; + if ((0x8000000080000L & l) != 0L && kind > 83) + kind = 83; break; case 618: - if ((0x800000008000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 619; break; case 619: - if ((0x4000000040000L & l) != 0L) + if ((0x8000000080L & l) != 0L) jjstateSet[jjnewStateCnt++] = 620; break; case 620: - if ((0x10000000100000L & l) != 0L && kind > 101) - kind = 101; + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 621; break; case 621: - if ((0x100000001000000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 622; break; case 622: - if ((0x1000000010000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 623; + if ((0x2000000020L & l) != 0L && kind > 97) + kind = 97; break; case 623: - if ((0x100000001000L & l) != 0L) + if ((0x100000001000000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 624; break; case 624: - if ((0x200000002L & l) != 0L) + if ((0x1000000010000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 625; break; case 625: - if ((0x20000000200L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 626; break; case 626: - if ((0x400000004000L & l) != 0L && kind > 107) - kind = 107; + if ((0x4000000040000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 627; break; case 627: - if ((0x100000001000000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 628; + if ((0x10000000100000L & l) != 0L && kind > 102) + kind = 102; break; case 628: - if ((0x2000000020L & l) != 0L) + if ((0x100000001000000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 629; break; case 629: - if ((0x800000008L & l) != 0L) + if ((0x1000000010000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 630; break; case 630: - if ((0x20000000200000L & l) != 0L) + if ((0x100000001000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 631; break; case 631: - if ((0x10000000100000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 632; break; case 632: - if ((0x2000000020L & l) != 0L && kind > 111) - kind = 111; + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 633; break; case 633: - if ((0x100000001000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 634; + if ((0x400000004000L & l) != 0L && kind > 108) + kind = 108; break; case 634: - if ((0x8000000080000L & l) != 0L) + if ((0x100000001000000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 635; break; case 635: - if ((0x2000000020L & l) != 0L && kind > 121) - kind = 121; + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 636; break; case 636: - if ((0x100000001000000L & l) != 0L) + if ((0x800000008L & l) != 0L) jjstateSet[jjnewStateCnt++] = 637; break; case 637: - if ((0x20000000200L & l) != 0L) + if ((0x20000000200000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 638; break; case 638: - if ((0x8000000080000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 639; break; case 639: - if ((0x10000000100000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 640; + if ((0x2000000020L & l) != 0L && kind > 112) + kind = 112; break; case 640: - if ((0x8000000080000L & l) != 0L && kind > 132) - kind = 132; + if ((0x100000001000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 641; break; case 641: - if ((0x20000000200000L & l) != 0L) - { jjAddStates(198, 201); } + if ((0x8000000080000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 642; break; case 642: - if ((0x1000000010000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 643; + if ((0x2000000020L & l) != 0L && kind > 122) + kind = 122; break; case 643: - if ((0x1000000010L & l) != 0L) + if ((0x100000001000000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 644; break; case 644: - if ((0x200000002L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 645; break; case 645: - if ((0x10000000100000L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 646; break; case 646: - if ((0x2000000020L & l) != 0L && kind > 23) - kind = 23; + if ((0x10000000100000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 647; break; case 647: - if ((0x1000000010000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 648; + if ((0x8000000080000L & l) != 0L && kind > 133) + kind = 133; break; case 648: - if ((0x8000000080000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 649; + if ((0x20000000200000L & l) != 0L) + { jjAddStates(198, 201); } break; case 649: - if ((0x2000000020L & l) != 0L) + if ((0x1000000010000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 650; break; case 650: - if ((0x4000000040000L & l) != 0L) + if ((0x1000000010L & l) != 0L) jjstateSet[jjnewStateCnt++] = 651; break; case 651: - if ((0x10000000100000L & l) != 0L && kind > 24) - kind = 24; + if ((0x200000002L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 652; break; case 652: - if ((0x400000004000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 653; break; case 653: - if ((0x8000000080000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 654; + if ((0x2000000020L & l) != 0L && kind > 23) + kind = 23; break; case 654: - if ((0x200000002L & l) != 0L) + if ((0x1000000010000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 655; break; case 655: - if ((0x4000000040L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 656; break; case 656: - if ((0x2000000020L & l) != 0L && kind > 63) - kind = 63; + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 657; break; case 657: - if ((0x400000004000L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 658; break; case 658: - if ((0x80000000800000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 659; + if ((0x10000000100000L & l) != 0L && kind > 24) + kind = 24; break; case 659: - if ((0x20000000200L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 660; break; case 660: - if ((0x400000004000L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 661; break; case 661: - if ((0x1000000010L & l) != 0L && kind > 70) - kind = 70; + if ((0x200000002L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 662; break; case 662: if ((0x4000000040L & l) != 0L) - { jjAddStates(189, 197); } + jjstateSet[jjnewStateCnt++] = 663; break; case 663: - if ((0x4000000040000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 664; + if ((0x2000000020L & l) != 0L && kind > 63) + kind = 63; break; case 664: - if ((0x800000008000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 665; break; case 665: - if ((0x200000002000L & l) != 0L && kind > 25) - kind = 25; + if ((0x80000000800000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 666; break; case 666: if ((0x20000000200L & l) != 0L) @@ -3763,291 +3762,291 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 668; break; case 668: - if ((0x1000000010L & l) != 0L && kind > 82) - kind = 82; + if ((0x1000000010L & l) != 0L && kind > 70) + kind = 70; break; case 669: - if ((0x800000008000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 670; + if ((0x4000000040L & l) != 0L) + { jjAddStates(189, 197); } break; case 670: if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 671; break; case 671: - if ((0x800000008L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 672; break; case 672: - if ((0x2000000020L & l) != 0L && kind > 93) - kind = 93; + if ((0x200000002000L & l) != 0L && kind > 25) + kind = 25; break; case 673: - if ((0x800000008000L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 674; break; case 674: - if ((0x4000000040000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 675; break; case 675: - if ((0x200000002000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 676; + if ((0x1000000010L & l) != 0L && kind > 82) + kind = 82; break; case 676: - if ((0x200000002L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 677; break; case 677: - if ((0x10000000100000L & l) != 0L && kind > 99) - kind = 99; + if ((0x4000000040000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 678; break; case 678: - if ((0x20000000200000L & l) != 0L) + if ((0x800000008L & l) != 0L) jjstateSet[jjnewStateCnt++] = 679; break; case 679: - if ((0x400000004000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 680; + if ((0x2000000020L & l) != 0L && kind > 93) + kind = 93; break; case 680: - if ((0x800000008L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 681; break; case 681: - if ((0x10000000100000L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 682; break; case 682: - if ((0x20000000200L & l) != 0L) + if ((0x200000002000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 683; break; case 683: - if ((0x800000008000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 684; break; case 684: - if ((0x400000004000L & l) != 0L && kind > 114) - kind = 114; + if ((0x10000000100000L & l) != 0L && kind > 100) + kind = 100; break; case 685: - if ((0x200000002L & l) != 0L) + if ((0x20000000200000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 686; break; case 686: - if ((0x20000000200L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 687; break; case 687: - if ((0x100000001000L & l) != 0L && kind > 123) - kind = 123; + if ((0x800000008L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 688; break; case 688: - if ((0x20000000200L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 689; break; case 689: - if ((0x100000001000000L & l) != 0L && kind > 124) - kind = 124; + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 690; break; case 690: if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 691; break; case 691: - if ((0x4000000040000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 692; + if ((0x400000004000L & l) != 0L && kind > 115) + kind = 115; break; case 692: - if ((0x2000000020L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 693; break; case 693: - if ((0x200000002L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 694; break; case 694: - if ((0x800000008L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 695; + if ((0x100000001000L & l) != 0L && kind > 124) + kind = 124; break; case 695: - if ((0x10000000100L & l) != 0L && kind > 133) - kind = 133; + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 696; break; case 696: - if ((0x200000002L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 697; + if ((0x100000001000000L & l) != 0L && kind > 125) + kind = 125; break; case 697: - if ((0x100000001000L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 698; break; case 698: - if ((0x8000000080000L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 699; break; case 699: - if ((0x2000000020L & l) != 0L && kind > 164) - kind = 164; + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 700; break; case 700: - if ((0x80000000800000L & l) != 0L) - { jjAddStates(184, 188); } + if ((0x200000002L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 701; break; case 701: - if ((0x10000000100L & l) != 0L) + if ((0x800000008L & l) != 0L) jjstateSet[jjnewStateCnt++] = 702; break; case 702: - if ((0x2000000020L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 703; + if ((0x10000000100L & l) != 0L && kind > 134) + kind = 134; break; case 703: - if ((0x4000000040000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 704; break; case 704: - if ((0x2000000020L & l) != 0L && kind > 27) - kind = 27; + if ((0x100000001000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 705; break; case 705: - if ((0x10000000100L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 706; break; case 706: - if ((0x20000000200L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 707; + if ((0x2000000020L & l) != 0L && kind > 165) + kind = 165; break; case 707: - if ((0x100000001000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 708; + if ((0x80000000800000L & l) != 0L) + { jjAddStates(184, 188); } break; case 708: - if ((0x2000000020L & l) != 0L && kind > 28) - kind = 28; + if ((0x10000000100L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 709; break; case 709: - if ((0x200000002L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 710; break; case 710: - if ((0x20000000200L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 711; break; case 711: - if ((0x10000000100000L & l) != 0L && kind > 59) - kind = 59; + if ((0x2000000020L & l) != 0L && kind > 27) + kind = 27; break; case 712: - if ((0x20000000200L & l) != 0L) + if ((0x10000000100L & l) != 0L) jjstateSet[jjnewStateCnt++] = 713; break; case 713: - if ((0x10000000100000L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 714; break; case 714: - if ((0x10000000100L & l) != 0L && kind > 68) - kind = 68; + if ((0x100000001000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 715; break; case 715: - if ((0x20000000200L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 716; + if ((0x2000000020L & l) != 0L && kind > 28) + kind = 28; break; case 716: - if ((0x10000000100000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 717; break; case 717: - if ((0x10000000100L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 718; break; case 718: - if ((0x20000000200L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 719; + if ((0x10000000100000L & l) != 0L && kind > 59) + kind = 59; break; case 719: - if ((0x400000004000L & l) != 0L && kind > 69) - kind = 69; + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 720; break; case 720: - if ((0x1000000010000L & l) != 0L) - { jjAddStates(178, 183); } + if ((0x10000000100000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 721; break; case 721: - if ((0x20000000200000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 722; + if ((0x10000000100L & l) != 0L && kind > 68) + kind = 68; break; case 722: - if ((0x10000000100000L & l) != 0L && kind > 34) - kind = 34; + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 723; break; case 723: - if ((0x4000000040000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 724; break; case 724: - if ((0x800000008000L & l) != 0L) + if ((0x10000000100L & l) != 0L) jjstateSet[jjnewStateCnt++] = 725; break; case 725: - if ((0x4000000040L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 726; break; case 726: - if ((0x20000000200L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 727; + if ((0x400000004000L & l) != 0L && kind > 69) + kind = 69; break; case 727: - if ((0x100000001000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 728; + if ((0x1000000010000L & l) != 0L) + { jjAddStates(178, 183); } break; case 728: - if ((0x2000000020L & l) != 0L && kind > 77) - kind = 77; + if ((0x20000000200000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 729; break; case 729: - if ((0x800000008000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 730; + if ((0x10000000100000L & l) != 0L && kind > 34) + kind = 34; break; case 730: - if ((0x100000001000L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 731; break; case 731: - if ((0x200000002000000L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 732; break; case 732: - if ((0x200000002000L & l) != 0L) + if ((0x4000000040L & l) != 0L) jjstateSet[jjnewStateCnt++] = 733; break; case 733: - if ((0x800000008000L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 734; break; case 734: - if ((0x4000000040000L & l) != 0L) + if ((0x100000001000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 735; break; case 735: - if ((0x1000000010000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 736; + if ((0x2000000020L & l) != 0L && kind > 77) + kind = 77; break; case 736: - if ((0x10000000100L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 737; break; case 737: - if ((0x20000000200L & l) != 0L) + if ((0x100000001000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 738; break; case 738: - if ((0x800000008L & l) != 0L && kind > 81) - kind = 81; + if ((0x200000002000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 739; break; case 739: - if ((0x4000000040000L & l) != 0L) + if ((0x200000002000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 740; break; case 740: @@ -4055,43 +4054,43 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 741; break; case 741: - if ((0x1000000010000L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 742; break; case 742: - if ((0x2000000020L & l) != 0L) + if ((0x1000000010000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 743; break; case 743: - if ((0x4000000040000L & l) != 0L) + if ((0x10000000100L & l) != 0L) jjstateSet[jjnewStateCnt++] = 744; break; case 744: - if ((0x10000000100000L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 745; break; case 745: - if ((0x200000002000000L & l) != 0L && kind > 92) - kind = 92; + if ((0x800000008L & l) != 0L && kind > 81) + kind = 81; break; case 746: - if ((0x200000002L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 747; break; case 747: - if ((0x4000000040000L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 748; break; case 748: - if ((0x200000002L & l) != 0L) + if ((0x1000000010000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 749; break; case 749: - if ((0x200000002000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 750; break; case 750: - if ((0x2000000020L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 751; break; case 751: @@ -4099,172 +4098,172 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 752; break; case 752: - if ((0x2000000020L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 753; + if ((0x200000002000000L & l) != 0L && kind > 92) + kind = 92; break; case 753: - if ((0x4000000040000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 754; break; case 754: - if ((0x8000000080000L & l) != 0L && kind > 115) - kind = 115; + if ((0x4000000040000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 755; break; case 755: if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 756; break; case 756: - if ((0x10000000100000L & l) != 0L) + if ((0x200000002000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 757; break; case 757: - if ((0x10000000100L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 758; break; case 758: - if ((0x200000002L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 759; break; case 759: - if ((0x100000001000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 760; break; case 760: - if ((0x20000000200L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 761; break; case 761: - if ((0x200000002L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 762; + if ((0x8000000080000L & l) != 0L && kind > 116) + kind = 116; break; case 762: - if ((0x8000000080000L & l) != 0L && kind > 136) - kind = 136; + if ((0x200000002L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 763; break; case 763: - if ((0x4000000040000L & l) != 0L) - { jjAddStates(168, 177); } + if ((0x10000000100000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 764; break; case 764: - if ((0x2000000020L & l) != 0L) + if ((0x10000000100L & l) != 0L) jjstateSet[jjnewStateCnt++] = 765; break; case 765: - if ((0x200000002000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 766; break; case 766: - if ((0x800000008000L & l) != 0L) + if ((0x100000001000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 767; break; case 767: - if ((0x40000000400000L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 768; break; case 768: - if ((0x2000000020L & l) != 0L && kind > 37) - kind = 37; + if ((0x200000002L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 769; break; case 769: - if ((0x2000000020L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 770; + if ((0x8000000080000L & l) != 0L && kind > 137) + kind = 137; break; case 770: - if ((0x10000000100000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 771; + if ((0x4000000040000L & l) != 0L) + { jjAddStates(168, 177); } break; case 771: - if ((0x20000000200000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 772; break; case 772: - if ((0x4000000040000L & l) != 0L) + if ((0x200000002000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 773; break; case 773: - if ((0x400000004000L & l) != 0L && kind > 55) - kind = 55; + if ((0x800000008000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 774; break; case 774: - if ((0x2000000020L & l) != 0L) + if ((0x40000000400000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 775; break; case 775: - if ((0x800000008L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 776; + if ((0x2000000020L & l) != 0L && kind > 37) + kind = 37; break; case 776: - if ((0x800000008000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 777; break; case 777: - if ((0x4000000040000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 778; break; case 778: - if ((0x1000000010L & l) != 0L && kind > 58) - kind = 58; + if ((0x20000000200000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 779; break; case 779: - if ((0x2000000020L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 780; break; case 780: - if ((0x10000000100000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 781; + if ((0x400000004000L & l) != 0L && kind > 55) + kind = 55; break; case 781: - if ((0x4000000040000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 782; break; case 782: - if ((0x200000002000000L & l) != 0L && kind > 60) - kind = 60; + if ((0x800000008L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 783; break; case 783: - if ((0x2000000020L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 784; break; case 784: - if ((0x200000002000L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 785; break; case 785: - if ((0x800000008000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 786; + if ((0x1000000010L & l) != 0L && kind > 58) + kind = 58; break; case 786: - if ((0x40000000400000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 787; break; case 787: - if ((0x2000000020L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 788; break; case 788: - if ((0x400000004L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 789; break; case 789: - if ((0x20000000200000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 790; + if ((0x200000002000000L & l) != 0L && kind > 60) + kind = 60; break; case 790: - if ((0x800000008L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 791; break; case 791: - if ((0x80000000800L & l) != 0L) + if ((0x200000002000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 792; break; case 792: - if ((0x2000000020L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 793; break; case 793: - if ((0x10000000100000L & l) != 0L && kind > 90) - kind = 90; + if ((0x40000000400000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 794; break; case 794: if ((0x2000000020L & l) != 0L) @@ -4279,195 +4278,195 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 797; break; case 797: - if ((0x20000000200L & l) != 0L) + if ((0x800000008L & l) != 0L) jjstateSet[jjnewStateCnt++] = 798; break; case 798: - if ((0x100000001000L & l) != 0L) + if ((0x80000000800L & l) != 0L) jjstateSet[jjnewStateCnt++] = 799; break; case 799: - if ((0x1000000010L & l) != 0L && kind > 98) - kind = 98; + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 800; break; case 800: - if ((0x2000000020L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 801; + if ((0x10000000100000L & l) != 0L && kind > 90) + kind = 90; break; case 801: - if ((0x40000000400000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 802; break; case 802: - if ((0x800000008000L & l) != 0L) + if ((0x400000004L & l) != 0L) jjstateSet[jjnewStateCnt++] = 803; break; case 803: - if ((0x80000000800L & l) != 0L) + if ((0x20000000200000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 804; break; case 804: - if ((0x2000000020L & l) != 0L && kind > 109) - kind = 109; + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 805; break; case 805: - if ((0x2000000020L & l) != 0L) + if ((0x100000001000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 806; break; case 806: - if ((0x200000002L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 807; + if ((0x1000000010L & l) != 0L && kind > 99) + kind = 99; break; case 807: - if ((0x1000000010L & l) != 0L && kind > 110) - kind = 110; + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 808; break; case 808: - if ((0x800000008000L & l) != 0L) + if ((0x40000000400000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 809; break; case 809: - if ((0x100000001000L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 810; break; case 810: - if ((0x100000001000L & l) != 0L) + if ((0x80000000800L & l) != 0L) jjstateSet[jjnewStateCnt++] = 811; break; case 811: - if ((0x400000004L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 812; + if ((0x2000000020L & l) != 0L && kind > 110) + kind = 110; break; case 812: - if ((0x200000002L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 813; break; case 813: - if ((0x800000008L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 814; break; case 814: - if ((0x80000000800L & l) != 0L && kind > 119) - kind = 119; + if ((0x1000000010L & l) != 0L && kind > 111) + kind = 111; break; case 815: - if ((0x20000000200L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 816; break; case 816: - if ((0x1000000010L & l) != 0L && kind > 138) - kind = 138; + if ((0x100000001000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 817; break; case 817: - if ((0x800000008000L & l) != 0L) - { jjAddStates(160, 167); } + if ((0x100000001000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 818; break; case 818: - if ((0x4000000040000L & l) != 0L && kind > 40) - kind = 40; + if ((0x400000004L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 819; break; case 819: - if ((0x4000000040000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 820; break; case 820: - if ((0x1000000010L & l) != 0L) + if ((0x800000008L & l) != 0L) jjstateSet[jjnewStateCnt++] = 821; break; case 821: - if ((0x2000000020L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 822; + if ((0x80000000800L & l) != 0L && kind > 120) + kind = 120; break; case 822: - if ((0x4000000040000L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 823; break; + case 823: + if ((0x1000000010L & l) != 0L && kind > 139) + kind = 139; + break; case 824: - if ((0x400000004L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 825; + if ((0x800000008000L & l) != 0L) + { jjAddStates(160, 167); } break; case 825: - if ((0x200000002000000L & l) != 0L && kind > 44) - kind = 44; + if ((0x4000000040000L & l) != 0L && kind > 40) + kind = 40; break; case 826: - if ((0x4000000040L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 827; break; case 827: - if ((0x4000000040L & l) != 0L) + if ((0x1000000010L & l) != 0L) jjstateSet[jjnewStateCnt++] = 828; break; case 828: - if ((0x8000000080000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 829; break; case 829: - if ((0x2000000020L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 830; break; - case 830: - if ((0x10000000100000L & l) != 0L && kind > 50) - kind = 50; - break; case 831: - if ((0x400000004000L & l) != 0L && kind > 78) - kind = 78; + if ((0x400000004L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 832; break; case 832: - if ((0x4000000040L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 833; + if ((0x200000002000000L & l) != 0L && kind > 44) + kind = 44; break; case 833: - if ((0x4000000040L & l) != 0L && kind > 79) - kind = 79; + if ((0x4000000040L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 834; break; case 834: - if ((0x40000000400000L & l) != 0L) + if ((0x4000000040L & l) != 0L) jjstateSet[jjnewStateCnt++] = 835; break; case 835: - if ((0x2000000020L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 836; break; case 836: - if ((0x4000000040000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 837; break; case 837: - if ((0x80000000800000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 838; + if ((0x10000000100000L & l) != 0L && kind > 50) + kind = 50; break; case 838: - if ((0x4000000040000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 839; + if ((0x400000004000L & l) != 0L && kind > 78) + kind = 78; break; case 839: - if ((0x20000000200L & l) != 0L) + if ((0x4000000040L & l) != 0L) jjstateSet[jjnewStateCnt++] = 840; break; case 840: - if ((0x10000000100000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 841; + if ((0x4000000040L & l) != 0L && kind > 79) + kind = 79; break; case 841: - if ((0x2000000020L & l) != 0L && kind > 100) - kind = 100; + if ((0x40000000400000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 842; break; case 842: - if ((0x1000000010000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 843; break; case 843: - if ((0x10000000100000L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 844; break; case 844: - if ((0x20000000200L & l) != 0L) + if ((0x80000000800000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 845; break; case 845: - if ((0x200000002000L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 846; break; case 846: @@ -4475,12 +4474,12 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 847; break; case 847: - if ((0x400000004000000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 848; break; case 848: - if ((0x2000000020L & l) != 0L && kind > 104) - kind = 104; + if ((0x2000000020L & l) != 0L && kind > 101) + kind = 101; break; case 849: if ((0x1000000010000L & l) != 0L) @@ -4495,39 +4494,39 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 852; break; case 852: - if ((0x800000008000L & l) != 0L) + if ((0x200000002000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 853; break; case 853: - if ((0x400000004000L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 854; break; case 854: - if ((0x200000002L & l) != 0L) + if ((0x400000004000000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 855; break; case 855: - if ((0x100000001000L & l) != 0L && kind > 129) - kind = 129; + if ((0x2000000020L & l) != 0L && kind > 105) + kind = 105; break; case 856: - if ((0x400000004000L & l) != 0L) - { jjAddStates(154, 159); } + if ((0x1000000010000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 857; break; case 857: - if ((0x20000000200000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 858; break; case 858: - if ((0x100000001000L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 859; break; case 859: - if ((0x100000001000L & l) != 0L && kind > 41) - kind = 41; + if ((0x800000008000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 860; break; case 860: - if ((0x2000000020L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 861; break; case 861: @@ -4535,587 +4534,586 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 862; break; case 862: - if ((0x4000000040000L & l) != 0L && kind > 67) - kind = 67; + if ((0x100000001000L & l) != 0L && kind > 130) + kind = 130; break; case 863: - if ((0x200000002L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 864; + if ((0x400000004000L & l) != 0L) + { jjAddStates(154, 159); } break; case 864: - if ((0x200000002000L & l) != 0L) + if ((0x20000000200000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 865; break; case 865: - if ((0x2000000020L & l) != 0L && kind > 88) - kind = 88; + if ((0x100000001000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 866; break; case 866: - if ((0x20000000200000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 867; + if ((0x100000001000L & l) != 0L && kind > 41) + kind = 41; break; case 867: - if ((0x100000001000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 868; break; case 868: - if ((0x100000001000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 869; break; case 869: - if (curChar == 95) - jjstateSet[jjnewStateCnt++] = 870; + if ((0x4000000040000L & l) != 0L && kind > 67) + kind = 67; break; case 870: - if ((0x8000000080000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 871; break; case 871: - if ((0x10000000100000L & l) != 0L) + if ((0x200000002000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 872; break; case 872: - if ((0x4000000040000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 873; + if ((0x2000000020L & l) != 0L && kind > 88) + kind = 88; break; case 873: - if ((0x200000002L & l) != 0L) + if ((0x20000000200000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 874; break; case 874: - if ((0x10000000100000L & l) != 0L) + if ((0x100000001000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 875; break; case 875: - if ((0x2000000020L & l) != 0L) + if ((0x100000001000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 876; break; case 876: - if ((0x8000000080L & l) != 0L) + if (curChar == 95) jjstateSet[jjnewStateCnt++] = 877; break; case 877: - if ((0x200000002000000L & l) != 0L && kind > 96) - kind = 96; + if ((0x8000000080000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 878; break; case 878: - if ((0x800000008000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 879; break; case 879: - if ((0x400000004000L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 880; break; case 880: - if ((0x2000000020L & l) != 0L && kind > 113) - kind = 113; + if ((0x200000002L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 881; break; case 881: - if ((0x800000008000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 882; break; case 882: - if ((0x10000000100000L & l) != 0L && kind > 219) - kind = 219; + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 883; break; case 883: if ((0x8000000080L & l) != 0L) - { jjAddStates(152, 153); } + jjstateSet[jjnewStateCnt++] = 884; break; case 884: - if ((0x4000000040000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 885; + if ((0x200000002000000L & l) != 0L && kind > 96) + kind = 96; break; case 885: if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 886; break; case 886: - if ((0x20000000200000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 887; break; case 887: - if ((0x1000000010000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 888; + if ((0x2000000020L & l) != 0L && kind > 114) + kind = 114; + break; + case 888: + if ((0x800000008000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 889; break; case 889: - if ((0x400000004L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 890; + if ((0x10000000100000L & l) != 0L && kind > 220) + kind = 220; break; case 890: - if ((0x200000002000000L & l) != 0L && kind > 45) - kind = 45; + if ((0x8000000080L & l) != 0L) + { jjAddStates(152, 153); } break; case 891: if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 892; break; case 892: - if ((0x200000002L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 893; break; case 893: - if ((0x400000004000L & l) != 0L) + if ((0x20000000200000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 894; break; case 894: - if ((0x10000000100000L & l) != 0L && kind > 108) - kind = 108; - break; - case 895: - if ((0x400000004L & l) != 0L) - { jjAddStates(141, 151); } + if ((0x1000000010000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 895; break; case 896: - if ((0x200000002000000L & l) != 0L && kind > 46) - kind = 46; + if ((0x400000004L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 897; break; case 897: - if ((0x2000000020L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 898; + if ((0x200000002000000L & l) != 0L && kind > 45) + kind = 45; break; case 898: - if ((0x4000000040L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 899; break; case 899: - if ((0x800000008000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 900; break; case 900: - if ((0x4000000040000L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 901; break; case 901: - if ((0x2000000020L & l) != 0L && kind > 56) - kind = 56; + if ((0x10000000100000L & l) != 0L && kind > 109) + kind = 109; break; case 902: - if ((0x4000000040000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 903; + if ((0x400000004L & l) != 0L) + { jjAddStates(141, 151); } break; case 903: - if ((0x2000000020L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 904; + if ((0x200000002000000L & l) != 0L && kind > 46) + kind = 46; break; case 904: - if ((0x200000002L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 905; break; case 905: - if ((0x1000000010L & l) != 0L) + if ((0x4000000040L & l) != 0L) jjstateSet[jjnewStateCnt++] = 906; break; case 906: - if ((0x10000000100000L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 907; break; case 907: - if ((0x10000000100L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 908; break; case 908: - if (curChar == 95) - jjstateSet[jjnewStateCnt++] = 909; + if ((0x2000000020L & l) != 0L && kind > 56) + kind = 56; break; case 909: - if ((0x4000000040L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 910; break; case 910: - if ((0x20000000200L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 911; break; case 911: - if ((0x4000000040000L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 912; break; case 912: - if ((0x8000000080000L & l) != 0L) + if ((0x1000000010L & l) != 0L) jjstateSet[jjnewStateCnt++] = 913; break; case 913: - if ((0x10000000100000L & l) != 0L && kind > 66) - kind = 66; + if ((0x10000000100000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 914; break; case 914: - if ((0x200000002L & l) != 0L) + if ((0x10000000100L & l) != 0L) jjstateSet[jjnewStateCnt++] = 915; break; case 915: - if ((0x800000008L & l) != 0L) + if (curChar == 95) jjstateSet[jjnewStateCnt++] = 916; break; case 916: - if ((0x80000000800L & l) != 0L) + if ((0x4000000040L & l) != 0L) jjstateSet[jjnewStateCnt++] = 917; break; case 917: - if ((0x20000000200000L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 918; break; case 918: - if ((0x1000000010000L & l) != 0L && kind > 84) - kind = 84; + if ((0x4000000040000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 919; break; case 919: - if ((0x20000000200000L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 920; break; case 920: - if ((0x800000008L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 921; + if ((0x10000000100000L & l) != 0L && kind > 66) + kind = 66; break; case 921: - if ((0x80000000800L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 922; break; case 922: - if ((0x2000000020L & l) != 0L) + if ((0x800000008L & l) != 0L) jjstateSet[jjnewStateCnt++] = 923; break; case 923: - if ((0x10000000100000L & l) != 0L) + if ((0x80000000800L & l) != 0L) jjstateSet[jjnewStateCnt++] = 924; break; case 924: - if ((0x8000000080000L & l) != 0L && kind > 85) - kind = 85; + if ((0x20000000200000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 925; break; case 925: - if ((0x20000000200000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 926; + if ((0x1000000010000L & l) != 0L && kind > 84) + kind = 84; break; case 926: - if ((0x800000008L & l) != 0L) + if ((0x20000000200000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 927; break; case 927: - if ((0x80000000800L & l) != 0L) + if ((0x800000008L & l) != 0L) jjstateSet[jjnewStateCnt++] = 928; break; case 928: - if ((0x2000000020L & l) != 0L) + if ((0x80000000800L & l) != 0L) jjstateSet[jjnewStateCnt++] = 929; break; case 929: - if ((0x10000000100000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 930; break; case 930: - if ((0x8000000080000L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 931; break; case 931: - if ((0x2000000020L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 932; + if ((0x8000000080000L & l) != 0L && kind > 85) + kind = 85; break; case 932: - if ((0x100000001000L & l) != 0L) + if ((0x20000000200000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 933; break; case 933: - if ((0x2000000020L & l) != 0L) + if ((0x800000008L & l) != 0L) jjstateSet[jjnewStateCnt++] = 934; break; case 934: - if ((0x800000008L & l) != 0L) + if ((0x80000000800L & l) != 0L) jjstateSet[jjnewStateCnt++] = 935; break; case 935: - if ((0x10000000100000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 936; break; case 936: - if ((0x20000000200L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 937; break; case 937: - if ((0x800000008000L & l) != 0L) + if ((0x8000000080000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 938; break; case 938: - if ((0x400000004000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 939; break; case 939: - if ((0x8000000080000L & l) != 0L) + if ((0x100000001000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 940; break; case 940: - if ((0x10000000100000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 941; break; case 941: - if ((0x4000000040000L & l) != 0L) + if ((0x800000008L & l) != 0L) jjstateSet[jjnewStateCnt++] = 942; break; case 942: - if ((0x200000002L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 943; break; case 943: - if ((0x10000000100000L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 944; break; case 944: - if ((0x2000000020L & l) != 0L) + if ((0x800000008000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 945; break; case 945: - if ((0x8000000080L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 946; break; case 946: - if ((0x200000002000000L & l) != 0L && kind > 86) - kind = 86; + if ((0x8000000080000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 947; break; case 947: - if ((0x2000000020L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 948; break; case 948: - if ((0x8000000080L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 949; break; case 949: - if ((0x20000000200L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 950; break; case 950: - if ((0x400000004000L & l) != 0L && kind > 117) - kind = 117; + if ((0x10000000100000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 951; break; case 951: if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 952; break; case 952: - if ((0x10000000100000L & l) != 0L) + if ((0x8000000080L & l) != 0L) jjstateSet[jjnewStateCnt++] = 953; break; case 953: - if ((0x80000000800000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 954; + if ((0x200000002000000L & l) != 0L && kind > 86) + kind = 86; break; case 954: if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 955; break; case 955: - if ((0x2000000020L & l) != 0L) + if ((0x8000000080L & l) != 0L) jjstateSet[jjnewStateCnt++] = 956; break; case 956: - if ((0x400000004000L & l) != 0L && kind > 224) - kind = 224; + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 957; break; case 957: - if ((0x20000000200000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 958; + if ((0x400000004000L & l) != 0L && kind > 118) + kind = 118; break; case 958: - if ((0x800000008L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 959; break; case 959: - if ((0x80000000800L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 960; break; case 960: - if ((0x2000000020L & l) != 0L) + if ((0x80000000800000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 961; break; case 961: - if ((0x10000000100000L & l) != 0L && kind > 234) - kind = 234; + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 962; break; case 962: - if ((0x20000000200000L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 963; break; case 963: - if ((0x800000008L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 964; + if ((0x400000004000L & l) != 0L && kind > 225) + kind = 225; break; case 964: - if ((0x80000000800L & l) != 0L) + if ((0x20000000200000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 965; break; case 965: - if ((0x2000000020L & l) != 0L) + if ((0x800000008L & l) != 0L) jjstateSet[jjnewStateCnt++] = 966; break; case 966: - if ((0x10000000100000L & l) != 0L) + if ((0x80000000800L & l) != 0L) jjstateSet[jjnewStateCnt++] = 967; break; + case 967: + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 968; + break; case 968: + if ((0x10000000100000L & l) != 0L && kind > 235) + kind = 235; + break; case 969: - if ((0x7fffffe87fffffeL & l) == 0L) - break; - if (kind > 241) - kind = 241; - { jjCheckNAdd(969); } + if ((0x20000000200000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 970; break; case 970: - if ((0x20000000200000L & l) != 0L) + if ((0x800000008L & l) != 0L) jjstateSet[jjnewStateCnt++] = 971; break; case 971: - if ((0x800000008L & l) != 0L) + if ((0x80000000800L & l) != 0L) jjstateSet[jjnewStateCnt++] = 972; break; case 972: - if ((0x80000000800L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 973; break; case 973: - if ((0x2000000020L & l) != 0L) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 974; break; - case 974: - if ((0x10000000100000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 975; + case 975: + case 976: + if ((0x7fffffe87fffffeL & l) == 0L) + break; + if (kind > 242) + kind = 242; + { jjCheckNAdd(976); } + break; + case 977: + if ((0x20000000200000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 978; break; case 978: - if ((0x100000001000L & l) != 0L && kind > 242) - kind = 242; + if ((0x800000008L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 979; + break; + case 979: + if ((0x80000000800L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 980; break; case 980: - if ((0x100000001000000L & l) != 0L) - { jjCheckNAdd(981); } + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 981; break; case 981: - if ((0x7e0000007eL & l) == 0L) - break; - if (kind > 242) - kind = 242; - { jjCheckNAddTwoStates(981, 978); } - break; - case 983: - if ((0x100000001000L & l) != 0L) - { jjAddStates(136, 140); } - break; - case 984: - if ((0x20000000200L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 985; + if ((0x10000000100000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 982; break; case 985: - if ((0x200000002000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 986; - break; - case 986: - if ((0x20000000200L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 987; + if ((0x100000001000L & l) != 0L && kind > 243) + kind = 243; break; case 987: - if ((0x10000000100000L & l) != 0L && kind > 47) - kind = 47; + if ((0x100000001000000L & l) != 0L) + { jjCheckNAdd(988); } break; case 988: - if ((0x2000000020L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 989; - break; - case 989: - if ((0x10000000100000L & l) != 0L && kind > 61) - kind = 61; + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 243) + kind = 243; + { jjCheckNAddTwoStates(988, 985); } break; case 990: - if ((0x20000000200L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 991; + if ((0x100000001000L & l) != 0L) + { jjAddStates(136, 140); } break; case 991: - if ((0x400000004000L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 992; break; case 992: - if ((0x80000000800L & l) != 0L && kind > 105) - kind = 105; + if ((0x200000002000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 993; break; case 993: - if ((0x200000002L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 994; break; case 994: - if ((0x400000004000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 995; + if ((0x10000000100000L & l) != 0L && kind > 47) + kind = 47; break; case 995: - if ((0x8000000080L & l) != 0L) + if ((0x2000000020L & l) != 0L) jjstateSet[jjnewStateCnt++] = 996; break; case 996: - if ((0x20000000200000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 997; + if ((0x10000000100000L & l) != 0L && kind > 61) + kind = 61; break; case 997: - if ((0x200000002L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 998; break; case 998: - if ((0x8000000080L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 999; break; case 999: - if ((0x2000000020L & l) != 0L && kind > 116) - kind = 116; + if ((0x80000000800L & l) != 0L && kind > 106) + kind = 106; break; case 1000: - if ((0x20000000200L & l) != 0L) + if ((0x200000002L & l) != 0L) jjstateSet[jjnewStateCnt++] = 1001; break; case 1001: - if ((0x80000000800L & l) != 0L) + if ((0x400000004000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 1002; break; case 1002: - if ((0x2000000020L & l) != 0L && kind > 221) - kind = 221; + if ((0x8000000080L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1003; break; case 1003: - if (curChar == 64) - { jjAddStates(125, 135); } + if ((0x20000000200000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1004; + break; + case 1004: + if ((0x200000002L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1005; break; case 1005: - if ((0x10000000100L & l) != 0L) + if ((0x8000000080L & l) != 0L) jjstateSet[jjnewStateCnt++] = 1006; break; case 1006: - if ((0x20000000200L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1007; + if ((0x2000000020L & l) != 0L && kind > 117) + kind = 117; break; case 1007: - if ((0x8000000080000L & l) != 0L && kind > 140) - kind = 140; + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1008; break; case 1008: - if ((0x4000000040000L & l) != 0L) + if ((0x80000000800L & l) != 0L) jjstateSet[jjnewStateCnt++] = 1009; break; case 1009: - case 1019: - if ((0x20000000200L & l) != 0L) - { jjCheckNAdd(1010); } + if ((0x2000000020L & l) != 0L && kind > 222) + kind = 222; break; case 1010: - if ((0x1000000010L & l) != 0L && kind > 141) - kind = 141; - break; - case 1011: - if ((0x10000000100000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1012; + if (curChar == 64) + { jjAddStates(125, 135); } break; case 1012: - if ((0x200000002000000L & l) != 0L) + if ((0x10000000100L & l) != 0L) jjstateSet[jjnewStateCnt++] = 1013; break; case 1013: - if ((0x1000000010000L & l) != 0L) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 1014; break; case 1014: - if ((0x2000000020L & l) != 0L && kind > 141) + if ((0x8000000080000L & l) != 0L && kind > 141) kind = 141; break; case 1015: @@ -5123,47 +5121,48 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 1016; break; case 1016: + case 1026: if ((0x20000000200L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1017; + { jjCheckNAdd(1017); } break; case 1017: - if ((0x1000000010L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1018; + if ((0x1000000010L & l) != 0L && kind > 142) + kind = 142; break; case 1018: - if (curChar == 95) + if ((0x10000000100000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 1019; break; + case 1019: + if ((0x200000002000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1020; + break; case 1020: - if ((0x4000000040000L & l) != 0L) + if ((0x1000000010000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 1021; break; case 1021: - if ((0x20000000200L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1022; + if ((0x2000000020L & l) != 0L && kind > 142) + kind = 142; break; case 1022: - if ((0x1000000010L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 1023; break; case 1023: - if (curChar == 95) + if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 1024; break; case 1024: - if ((0x1000000010000L & l) != 0L) + if ((0x1000000010L & l) != 0L) jjstateSet[jjnewStateCnt++] = 1025; break; case 1025: - if ((0x800000008000L & l) != 0L) - { jjCheckNAdd(1026); } - break; - case 1026: - if ((0x8000000080000L & l) != 0L && kind > 141) - kind = 141; + if (curChar == 95) + jjstateSet[jjnewStateCnt++] = 1026; break; case 1027: - if ((0x4000000040L & l) != 0L) + if ((0x4000000040000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 1028; break; case 1028: @@ -5171,257 +5170,285 @@ else if (curChar == 102) jjstateSet[jjnewStateCnt++] = 1029; break; case 1029: - if ((0x2000000020L & l) != 0L) + if ((0x1000000010L & l) != 0L) jjstateSet[jjnewStateCnt++] = 1030; break; case 1030: - if ((0x100000001000L & l) != 0L) + if (curChar == 95) jjstateSet[jjnewStateCnt++] = 1031; break; case 1031: - if ((0x1000000010L & l) != 0L) - { jjCheckNAdd(1026); } + if ((0x1000000010000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1032; break; case 1032: if ((0x800000008000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1033; + { jjCheckNAdd(1033); } break; case 1033: - if ((0x20000000200000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1034; + if ((0x8000000080000L & l) != 0L && kind > 142) + kind = 142; break; case 1034: - if ((0x10000000100000L & l) != 0L && kind > 141) - kind = 141; + if ((0x4000000040L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1035; break; case 1035: if ((0x20000000200L & l) != 0L) jjstateSet[jjnewStateCnt++] = 1036; break; case 1036: - if ((0x400000004000L & l) != 0L && kind > 141) - kind = 141; + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1037; break; case 1037: - if ((0x4000000040000L & l) != 0L) + if ((0x100000001000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 1038; break; case 1038: - if ((0x20000000200L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1039; + if ((0x1000000010L & l) != 0L) + { jjCheckNAdd(1033); } break; case 1039: - if ((0x1000000010L & l) != 0L && kind > 142) - kind = 142; + if ((0x800000008000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1040; break; case 1040: - if ((0x800000008000L & l) != 0L) + if ((0x20000000200000L & l) != 0L) jjstateSet[jjnewStateCnt++] = 1041; break; case 1041: - if ((0x20000000200000L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1042; + if ((0x10000000100000L & l) != 0L && kind > 142) + kind = 142; break; case 1042: - if ((0x10000000100000L & l) != 0L && kind > 144) - kind = 144; + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1043; break; case 1043: - if ((0x20000000200L & l) != 0L) - jjstateSet[jjnewStateCnt++] = 1044; + if ((0x400000004000L & l) != 0L && kind > 142) + kind = 142; break; case 1044: - if ((0x400000004000L & l) != 0L && kind > 145) - kind = 145; + if ((0x4000000040000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1045; + break; + case 1045: + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1046; + break; + case 1046: + if ((0x1000000010L & l) != 0L && kind > 143) + kind = 143; break; case 1047: - if ((0x100000001000L & l) != 0L && kind > 150) - kind = 150; + if ((0x800000008000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1048; + break; + case 1048: + if ((0x20000000200000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1049; break; case 1049: - if ((0x100000001000L & l) != 0L) - { jjCheckNAdd(1059); } + if ((0x10000000100000L & l) != 0L && kind > 145) + kind = 145; + break; + case 1050: + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 1051; + break; + case 1051: + if ((0x400000004000L & l) != 0L && kind > 146) + kind = 146; break; case 1054: - if ((0x100000001000L & l) != 0L && kind > 161) - kind = 161; + if ((0x100000001000L & l) != 0L && kind > 151) + kind = 151; break; case 1056: + if ((0x100000001000L & l) != 0L) + { jjCheckNAdd(1066); } + break; + case 1061: + if ((0x100000001000L & l) != 0L && kind > 162) + kind = 162; + break; + case 1063: if ((0x100000001000000L & l) != 0L) - { jjCheckNAdd(1057); } + { jjCheckNAdd(1064); } break; - case 1057: + case 1064: if ((0x7e0000007eL & l) == 0L) break; - if (kind > 161) - kind = 161; - { jjCheckNAddTwoStates(1057, 1054); } + if (kind > 162) + kind = 162; + { jjCheckNAddTwoStates(1064, 1061); } break; - case 1061: + case 1068: if ((0x100000001000L & l) != 0L) - { jjCheckNAdd(1072); } + { jjCheckNAdd(1079); } break; - case 1066: - if ((0x100000001000L & l) != 0L && kind > 162) - kind = 162; + case 1073: + if ((0x100000001000L & l) != 0L && kind > 163) + kind = 163; break; - case 1068: + case 1075: if ((0x100000001000000L & l) != 0L) - { jjCheckNAdd(1069); } + { jjCheckNAdd(1076); } break; - case 1069: + case 1076: if ((0x7e0000007eL & l) == 0L) break; - if (kind > 162) - kind = 162; - { jjCheckNAddTwoStates(1069, 1066); } + if (kind > 163) + kind = 163; + { jjCheckNAddTwoStates(1076, 1073); } break; - case 1074: + case 1081: if ((0xffffffffefffffffL & l) != 0L) - { jjCheckNAdd(1075); } + { jjCheckNAdd(1082); } break; - case 1076: + case 1083: if (curChar == 92) - { jjAddStates(304, 306); } + { jjAddStates(305, 307); } break; - case 1077: + case 1084: if ((0x14404410000000L & l) != 0L) - { jjCheckNAdd(1075); } + { jjCheckNAdd(1082); } break; - case 1082: + case 1089: if ((0xffffffffefffffffL & l) != 0L) { jjCheckNAddStates(99, 101); } break; - case 1083: + case 1090: if (curChar == 92) - jjstateSet[jjnewStateCnt++] = 1084; + jjstateSet[jjnewStateCnt++] = 1091; break; - case 1084: + case 1091: if ((0x14404410000000L & l) != 0L) { jjCheckNAddStates(99, 101); } break; - case 1090: + case 1097: if ((0x100000001000000L & l) != 0L) - { jjCheckNAdd(1091); } + { jjCheckNAdd(1098); } break; - case 1091: + case 1098: if ((0x7e0000007eL & l) != 0L) { jjCheckNAddStates(102, 104); } break; - case 1094: + case 1101: if ((0x100000001000000L & l) != 0L) - { jjCheckNAdd(1095); } + { jjCheckNAdd(1102); } break; - case 1095: + case 1102: if ((0x7e0000007eL & l) != 0L) { jjCheckNAddStates(108, 110); } break; - case 1097: + case 1104: if (curChar == 104) - { jjAddStates(286, 287); } + { jjAddStates(287, 288); } break; - case 1099: + case 1106: if ((0xffffffffefffffffL & l) == 0L) break; - if (kind > 243) - kind = 243; - { jjCheckNAddTwoStates(1099, 1100); } + if (kind > 244) + kind = 244; + { jjCheckNAddTwoStates(1106, 1107); } break; - case 1100: + case 1107: if (curChar == 92) - { jjAddStates(307, 309); } + { jjAddStates(308, 310); } break; - case 1101: + case 1108: if ((0x14404410000000L & l) == 0L) break; - if (kind > 243) - kind = 243; - { jjCheckNAddTwoStates(1099, 1100); } + if (kind > 244) + kind = 244; + { jjCheckNAddTwoStates(1106, 1107); } break; - case 1108: + case 1115: if (curChar == 112) - jjstateSet[jjnewStateCnt++] = 1107; + jjstateSet[jjnewStateCnt++] = 1114; break; - case 1109: + case 1116: if (curChar == 116) - jjstateSet[jjnewStateCnt++] = 1108; + jjstateSet[jjnewStateCnt++] = 1115; break; - case 1110: + case 1117: if (curChar == 116) - jjstateSet[jjnewStateCnt++] = 1109; + jjstateSet[jjnewStateCnt++] = 1116; break; - case 1112: + case 1119: if ((0xffffffffefffffffL & l) == 0L) break; - if (kind > 244) - kind = 244; - { jjCheckNAddTwoStates(1112, 1113); } + if (kind > 245) + kind = 245; + { jjCheckNAddTwoStates(1119, 1120); } break; - case 1113: + case 1120: if (curChar == 92) - { jjAddStates(310, 312); } + { jjAddStates(311, 313); } break; - case 1114: + case 1121: if ((0x14404410000000L & l) == 0L) break; - if (kind > 244) - kind = 244; - { jjCheckNAddTwoStates(1112, 1113); } + if (kind > 245) + kind = 245; + { jjCheckNAddTwoStates(1119, 1120); } break; - case 1121: + case 1128: if (curChar == 115) - jjstateSet[jjnewStateCnt++] = 1120; + jjstateSet[jjnewStateCnt++] = 1127; break; - case 1122: + case 1129: if (curChar == 112) - jjstateSet[jjnewStateCnt++] = 1121; + jjstateSet[jjnewStateCnt++] = 1128; break; - case 1123: + case 1130: if (curChar == 116) - jjstateSet[jjnewStateCnt++] = 1122; + jjstateSet[jjnewStateCnt++] = 1129; break; - case 1124: + case 1131: if (curChar == 116) - jjstateSet[jjnewStateCnt++] = 1123; + jjstateSet[jjnewStateCnt++] = 1130; break; - case 1126: + case 1133: if ((0x100000001000000L & l) != 0L) - { jjCheckNAdd(1127); } + { jjCheckNAdd(1134); } break; - case 1127: + case 1134: if ((0x7e0000007eL & l) == 0L) break; - if (kind > 150) - kind = 150; - { jjCheckNAddTwoStates(1127, 1047); } + if (kind > 151) + kind = 151; + { jjCheckNAddTwoStates(1134, 1054); } break; - case 1129: + case 1136: if ((0x100000001000000L & l) != 0L) - { jjCheckNAddTwoStates(1130, 1131); } + { jjCheckNAddTwoStates(1137, 1138); } break; - case 1130: + case 1137: if ((0x7e0000007eL & l) != 0L) - { jjCheckNAddTwoStates(1130, 1131); } + { jjCheckNAddTwoStates(1137, 1138); } break; - case 1132: + case 1139: if ((0x7e0000007eL & l) != 0L) - { jjAddStates(313, 314); } + { jjAddStates(314, 315); } break; - case 1133: + case 1140: if ((0x1000000010000L & l) != 0L) - { jjAddStates(315, 316); } + { jjAddStates(316, 317); } break; - case 1136: + case 1143: if ((0x100000001000000L & l) != 0L) - { jjCheckNAdd(1137); } + { jjCheckNAdd(1144); } break; - case 1137: + case 1144: if ((0x7e0000007eL & l) != 0L) { jjCheckNAddStates(122, 124); } break; - case 1139: + case 1146: if ((0x1000000010000L & l) != 0L) - { jjAddStates(317, 318); } + { jjAddStates(318, 319); } break; default : break; } @@ -5452,7 +5479,7 @@ else if (curChar == 102) break; if (kind > 11) kind = 11; - { jjAddStates(288, 289); } + { jjAddStates(289, 290); } break; case 22: if (jjCanMove_0(hiByte, i1, i2, l1, l2)) @@ -5461,38 +5488,38 @@ else if (curChar == 102) case 38: if (!jjCanMove_0(hiByte, i1, i2, l1, l2)) break; - if (kind > 245) - kind = 245; - { jjAddStates(319, 320); } + if (kind > 246) + kind = 246; + { jjAddStates(320, 321); } break; case 52: if (!jjCanMove_0(hiByte, i1, i2, l1, l2)) break; - if (kind > 246) - kind = 246; - { jjAddStates(321, 322); } + if (kind > 247) + kind = 247; + { jjAddStates(322, 323); } break; - case 1074: + case 1081: if (jjCanMove_0(hiByte, i1, i2, l1, l2)) - jjstateSet[jjnewStateCnt++] = 1075; + jjstateSet[jjnewStateCnt++] = 1082; break; - case 1082: + case 1089: if (jjCanMove_0(hiByte, i1, i2, l1, l2)) { jjAddStates(99, 101); } break; - case 1099: + case 1106: if (!jjCanMove_0(hiByte, i1, i2, l1, l2)) break; - if (kind > 243) - kind = 243; - { jjAddStates(323, 324); } + if (kind > 244) + kind = 244; + { jjAddStates(324, 325); } break; - case 1112: + case 1119: if (!jjCanMove_0(hiByte, i1, i2, l1, l2)) break; - if (kind > 244) - kind = 244; - { jjAddStates(325, 326); } + if (kind > 245) + kind = 245; + { jjAddStates(326, 327); } break; default : if (i1 == 0 || l1 == 0 || i2 == 0 || l2 == 0) break; else break; } @@ -5505,7 +5532,7 @@ else if (curChar == 102) kind = 0x7fffffff; } ++curPos; - if ((i = jjnewStateCnt) == (startsAt = 1142 - (jjnewStateCnt = startsAt))) + if ((i = jjnewStateCnt) == (startsAt = 1149 - (jjnewStateCnt = startsAt))) return curPos; try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { return curPos; } @@ -5575,7 +5602,7 @@ private int jjMoveStringLiteralDfa1_1(long active0){ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, -null, null, null, null, null, null, null, null, null, null, null, null, "\50", +null, null, null, null, null, null, null, null, null, null, null, null, null, "\50", "\51", "\173", "\175", "\133", "\135", "\73", "\54", "\56", "\100", "\44", "\140", "\75", "\75\75", "\74\75\76", "\74", "\76", "\41", "\176", "\77", "\72", "\74\75", "\76\75", "\41\75", "\74\76", "\174\174", "\46\46", "\53\53", "\55\55", "\53", "\55", @@ -5608,27 +5635,27 @@ protected Token jjFillToken() return t; } static final int[] jjnextStates = { - 1060, 1061, 1072, 1094, 1096, 1049, 1059, 1048, 1049, 1059, 1090, 1092, 1061, 1072, 84, 85, - 20, 88, 89, 92, 93, 1087, 1088, 1089, 1093, 1074, 1076, 1082, 1083, 1085, 22, 23, - 25, 1046, 1047, 1048, 1049, 1059, 1060, 1061, 1072, 1126, 1128, 1047, 1129, 1136, 1094, 1096, - 1049, 1059, 1090, 1092, 1061, 1072, 32, 34, 35, 16, 17, 20, 38, 39, 42, 52, - 53, 56, 84, 85, 20, 94, 95, 20, 336, 317, 371, 352, 407, 388, 823, 824, - 888, 889, 976, 979, 980, 982, 978, 1051, 1052, 1055, 1056, 1058, 1054, 1063, 1064, 1067, - 1068, 1070, 1066, 1082, 1083, 1085, 1091, 1061, 1072, 1092, 1061, 1072, 1095, 1049, 1059, 1096, - 1049, 1059, 1099, 1100, 1103, 1112, 1113, 1116, 1130, 1131, 1137, 1138, 1139, 1004, 1008, 1011, - 1015, 1020, 1027, 1032, 1035, 1037, 1040, 1043, 984, 988, 990, 993, 1000, 896, 897, 902, - 914, 919, 925, 947, 951, 957, 962, 970, 884, 891, 857, 860, 863, 866, 878, 881, - 818, 819, 826, 831, 832, 834, 842, 849, 764, 769, 774, 779, 783, 794, 800, 805, - 808, 815, 721, 723, 729, 739, 746, 755, 701, 705, 709, 712, 715, 663, 666, 669, - 673, 678, 685, 688, 690, 696, 642, 647, 652, 657, 590, 593, 597, 605, 611, 616, - 621, 627, 633, 636, 575, 580, 584, 512, 517, 524, 529, 535, 538, 548, 551, 558, - 565, 409, 414, 419, 425, 429, 434, 441, 447, 451, 458, 468, 478, 488, 500, 237, - 242, 245, 253, 257, 262, 268, 269, 277, 286, 287, 291, 300, 305, 337, 372, 205, - 209, 213, 220, 227, 230, 173, 180, 181, 187, 190, 194, 201, 129, 134, 136, 139, - 146, 154, 159, 163, 167, 99, 103, 105, 107, 109, 110, 114, 118, 126, 1110, 1124, - 5, 6, 18, 19, 40, 41, 43, 54, 55, 57, 86, 87, 90, 91, 96, 97, - 1077, 1078, 1080, 1101, 1102, 1104, 1114, 1115, 1117, 1132, 1133, 1134, 1135, 1140, 1141, 38, - 39, 52, 53, 1099, 1100, 1112, 1113, + 1067, 1068, 1079, 1101, 1103, 1056, 1066, 1055, 1056, 1066, 1097, 1099, 1068, 1079, 84, 85, + 20, 88, 89, 92, 93, 1094, 1095, 1096, 1100, 1081, 1083, 1089, 1090, 1092, 22, 23, + 25, 1053, 1054, 1055, 1056, 1066, 1067, 1068, 1079, 1133, 1135, 1054, 1136, 1143, 1101, 1103, + 1056, 1066, 1097, 1099, 1068, 1079, 32, 34, 35, 16, 17, 20, 38, 39, 42, 52, + 53, 56, 84, 85, 20, 94, 95, 20, 343, 324, 378, 359, 414, 395, 830, 831, + 895, 896, 983, 986, 987, 989, 985, 1058, 1059, 1062, 1063, 1065, 1061, 1070, 1071, 1074, + 1075, 1077, 1073, 1089, 1090, 1092, 1098, 1068, 1079, 1099, 1068, 1079, 1102, 1056, 1066, 1103, + 1056, 1066, 1106, 1107, 1110, 1119, 1120, 1123, 1137, 1138, 1144, 1145, 1146, 1011, 1015, 1018, + 1022, 1027, 1034, 1039, 1042, 1044, 1047, 1050, 991, 995, 997, 1000, 1007, 903, 904, 909, + 921, 926, 932, 954, 958, 964, 969, 977, 891, 898, 864, 867, 870, 873, 885, 888, + 825, 826, 833, 838, 839, 841, 849, 856, 771, 776, 781, 786, 790, 801, 807, 812, + 815, 822, 728, 730, 736, 746, 753, 762, 708, 712, 716, 719, 722, 670, 673, 676, + 680, 685, 692, 695, 697, 703, 649, 654, 659, 664, 597, 600, 604, 612, 618, 623, + 628, 634, 640, 643, 582, 587, 591, 519, 524, 531, 536, 542, 545, 555, 558, 565, + 572, 416, 421, 426, 432, 436, 441, 448, 454, 458, 465, 475, 485, 495, 507, 244, + 249, 252, 260, 264, 269, 275, 276, 284, 293, 294, 298, 307, 312, 344, 379, 205, + 209, 213, 220, 227, 234, 237, 173, 180, 181, 187, 190, 194, 201, 129, 134, 136, + 139, 146, 154, 159, 163, 167, 99, 103, 105, 107, 109, 110, 114, 118, 126, 1117, + 1131, 5, 6, 18, 19, 40, 41, 43, 54, 55, 57, 86, 87, 90, 91, 96, + 97, 1084, 1085, 1087, 1108, 1109, 1111, 1121, 1122, 1124, 1139, 1140, 1141, 1142, 1147, 1148, + 38, 39, 52, 53, 1106, 1107, 1119, 1120, }; private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, long l2) { @@ -5864,7 +5891,7 @@ private void ReInitRounds() { int i; jjround = 0x80000001; - for (i = 1142; i-- > 0;) + for (i = 1149; i-- > 0;) jjrounds[i] = 0x80000000; } @@ -5905,10 +5932,10 @@ public void SwitchTo(int lexState) -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, + -1, -1, }; static final long[] jjtoToken = { - 0xfffffffffffff001L, 0xffffffffffffffffL, 0xffffffff8443ffffL, 0x4ffffffffffffffL, + 0xfffffffffffff001L, 0xffffffffffffffffL, 0xffffffff0887ffffL, 0x9ffffffffffffffL, }; static final long[] jjtoSkip = { 0xb3eL, 0x0L, 0x0L, 0x0L, @@ -5921,8 +5948,8 @@ public void SwitchTo(int lexState) }; protected CharStream input_stream; - private final int[] jjrounds = new int[1142]; - private final int[] jjstateSet = new int[2 * 1142]; + private final int[] jjrounds = new int[1149]; + private final int[] jjstateSet = new int[2 * 1149]; private final StringBuilder jjimage = new StringBuilder(); private StringBuilder image = jjimage; private int jjimageLen; diff --git a/engine/src/main/java/com/arcadedb/schema/DocumentType.java b/engine/src/main/java/com/arcadedb/schema/DocumentType.java index 9a4466472..561cc0648 100644 --- a/engine/src/main/java/com/arcadedb/schema/DocumentType.java +++ b/engine/src/main/java/com/arcadedb/schema/DocumentType.java @@ -839,8 +839,8 @@ protected void addBucketInternal(final Bucket bucket) { buckets = CollectionUtils.addToUnmodifiableList(buckets, bucket); cachedPolymorphicBuckets = CollectionUtils.addToUnmodifiableList(cachedPolymorphicBuckets, bucket); - bucketIds = CollectionUtils.addToUnmodifiableList(bucketIds, bucket.getId()); - cachedPolymorphicBucketIds = CollectionUtils.addToUnmodifiableList(cachedPolymorphicBucketIds, bucket.getId()); + bucketIds = CollectionUtils.addToUnmodifiableList(bucketIds, bucket.getFileId()); + cachedPolymorphicBucketIds = CollectionUtils.addToUnmodifiableList(cachedPolymorphicBucketIds, bucket.getFileId()); bucketSelectionStrategy.setType(this); @@ -866,8 +866,8 @@ protected void removeBucketInternal(final Bucket bucket) { buckets = CollectionUtils.removeFromUnmodifiableList(buckets, bucket); cachedPolymorphicBuckets = CollectionUtils.removeFromUnmodifiableList(cachedPolymorphicBuckets, bucket); - bucketIds = CollectionUtils.removeFromUnmodifiableList(bucketIds, bucket.getId()); - cachedPolymorphicBucketIds = CollectionUtils.removeFromUnmodifiableList(cachedPolymorphicBucketIds, bucket.getId()); + bucketIds = CollectionUtils.removeFromUnmodifiableList(bucketIds, bucket.getFileId()); + cachedPolymorphicBucketIds = CollectionUtils.removeFromUnmodifiableList(cachedPolymorphicBucketIds, bucket.getFileId()); // AUTOMATICALLY DROP THE INDEX ON THE REMOVED BUCKET final Collection existentIndexes = getAllIndexes(false); @@ -876,7 +876,7 @@ protected void removeBucketInternal(final Bucket bucket) { schema.getDatabase().transaction(() -> { for (TypeIndex idx : existentIndexes) { for (IndexInternal subIndex : idx.getIndexesOnBuckets()) - if (subIndex.getAssociatedBucketId() == bucket.getId()) + if (subIndex.getAssociatedBucketId() == bucket.getFileId()) schema.dropIndex(subIndex.getName()); } }); @@ -891,7 +891,7 @@ public boolean hasBucket(final String bucketName) { } public int getFirstBucketId() { - return buckets.get(0).getId(); + return buckets.get(0).getFileId(); } public boolean isSubTypeOf(final String type) { diff --git a/engine/src/main/java/com/arcadedb/schema/EmbeddedSchema.java b/engine/src/main/java/com/arcadedb/schema/EmbeddedSchema.java index c1a8eec61..6a6aa687f 100644 --- a/engine/src/main/java/com/arcadedb/schema/EmbeddedSchema.java +++ b/engine/src/main/java/com/arcadedb/schema/EmbeddedSchema.java @@ -29,10 +29,10 @@ import com.arcadedb.database.bucketselectionstrategy.PartitionedBucketSelectionStrategy; import com.arcadedb.database.bucketselectionstrategy.RoundRobinBucketSelectionStrategy; import com.arcadedb.engine.Bucket; +import com.arcadedb.engine.Component; +import com.arcadedb.engine.ComponentFactory; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.engine.Dictionary; -import com.arcadedb.engine.PaginatedComponent; -import com.arcadedb.engine.PaginatedComponentFactory; -import com.arcadedb.engine.PaginatedFile; import com.arcadedb.exception.ConfigurationException; import com.arcadedb.exception.DatabaseMetadataException; import com.arcadedb.exception.DatabaseOperationException; @@ -50,6 +50,7 @@ import com.arcadedb.index.lsm.LSMTreeIndexAbstract; import com.arcadedb.index.lsm.LSMTreeIndexCompacted; import com.arcadedb.index.lsm.LSMTreeIndexMutable; +import com.arcadedb.index.vector.HnswVectorIndex; import com.arcadedb.log.LogManager; import com.arcadedb.security.SecurityDatabaseUser; import com.arcadedb.security.SecurityManager; @@ -74,18 +75,19 @@ public class EmbeddedSchema implements Schema { public static final String DEFAULT_ENCODING = "UTF-8"; public static final String SCHEMA_FILE_NAME = "schema.json"; public static final String SCHEMA_PREV_FILE_NAME = "schema.prev.json"; + public static final int BUILD_TX_BATCH_SIZE = 100_000; final IndexFactory indexFactory = new IndexFactory(); final Map types = new HashMap<>(); private String encoding = DEFAULT_ENCODING; private final DatabaseInternal database; private final SecurityManager security; - private final List files = new ArrayList<>(); + private final List files = new ArrayList<>(); private final Map bucketMap = new HashMap<>(); private Map bucketId2TypeMap = new HashMap<>(); protected final Map indexMap = new HashMap<>(); private final String databasePath; private final File configurationFile; - private final PaginatedComponentFactory paginatedComponentFactory; + private final ComponentFactory componentFactory; private Dictionary dictionary; private String dateFormat = GlobalConfiguration.DATE_FORMAT.getValueAsString(); private String dateTimeFormat = GlobalConfiguration.DATE_TIME_FORMAT.getValueAsString(); @@ -103,16 +105,18 @@ public EmbeddedSchema(final DatabaseInternal database, final String databasePath this.databasePath = databasePath; this.security = security; - paginatedComponentFactory = new PaginatedComponentFactory(database); - paginatedComponentFactory.registerComponent(Dictionary.DICT_EXT, new Dictionary.PaginatedComponentFactoryHandler()); - paginatedComponentFactory.registerComponent(Bucket.BUCKET_EXT, new Bucket.PaginatedComponentFactoryHandler()); - paginatedComponentFactory.registerComponent(LSMTreeIndexMutable.UNIQUE_INDEX_EXT, new LSMTreeIndex.PaginatedComponentFactoryHandlerUnique()); - paginatedComponentFactory.registerComponent(LSMTreeIndexMutable.NOTUNIQUE_INDEX_EXT, new LSMTreeIndex.PaginatedComponentFactoryHandlerNotUnique()); - paginatedComponentFactory.registerComponent(LSMTreeIndexCompacted.UNIQUE_INDEX_EXT, new LSMTreeIndex.PaginatedComponentFactoryHandlerUnique()); - paginatedComponentFactory.registerComponent(LSMTreeIndexCompacted.NOTUNIQUE_INDEX_EXT, new LSMTreeIndex.PaginatedComponentFactoryHandlerNotUnique()); + componentFactory = new ComponentFactory(database); + componentFactory.registerComponent(Dictionary.DICT_EXT, new Dictionary.PaginatedComponentFactoryHandler()); + componentFactory.registerComponent(Bucket.BUCKET_EXT, new Bucket.PaginatedComponentFactoryHandler()); + componentFactory.registerComponent(LSMTreeIndexMutable.UNIQUE_INDEX_EXT, new LSMTreeIndex.PaginatedComponentFactoryHandlerUnique()); + componentFactory.registerComponent(LSMTreeIndexMutable.NOTUNIQUE_INDEX_EXT, new LSMTreeIndex.PaginatedComponentFactoryHandlerNotUnique()); + componentFactory.registerComponent(LSMTreeIndexCompacted.UNIQUE_INDEX_EXT, new LSMTreeIndex.PaginatedComponentFactoryHandlerUnique()); + componentFactory.registerComponent(LSMTreeIndexCompacted.NOTUNIQUE_INDEX_EXT, new LSMTreeIndex.PaginatedComponentFactoryHandlerNotUnique()); + componentFactory.registerComponent(HnswVectorIndex.FILE_EXT, new HnswVectorIndex.PaginatedComponentFactoryHandlerUnique()); indexFactory.register(INDEX_TYPE.LSM_TREE.name(), new LSMTreeIndex.IndexFactoryHandler()); indexFactory.register(INDEX_TYPE.FULL_TEXT.name(), new LSMTreeFullTextIndex.IndexFactoryHandler()); + indexFactory.register(INDEX_TYPE.HSNW.name(), new HnswVectorIndex.IndexFactoryHandler()); configurationFile = new File(databasePath + File.separator + SCHEMA_FILE_NAME); } @@ -121,7 +125,7 @@ public EmbeddedSchema getEmbedded() { return this; } - public void create(final PaginatedFile.MODE mode) { + public void create(final ComponentFile.MODE mode) { loadInRamCompleted = true; database.begin(); try { @@ -137,19 +141,19 @@ public void create(final PaginatedFile.MODE mode) { } } - public void load(final PaginatedFile.MODE mode, final boolean initialize) throws IOException { + public void load(final ComponentFile.MODE mode, final boolean initialize) throws IOException { files.clear(); types.clear(); bucketMap.clear(); indexMap.clear(); dictionary = null; - final Collection filesToOpen = database.getFileManager().getFiles(); + final Collection filesToOpen = database.getFileManager().getFiles(); // REGISTER THE DICTIONARY FIRST - for (final PaginatedFile file : filesToOpen) { + for (final ComponentFile file : filesToOpen) { if (Dictionary.DICT_EXT.equals(file.getFileExtension())) { - dictionary = (Dictionary) paginatedComponentFactory.createComponent(file, mode); + dictionary = (Dictionary) componentFactory.createComponent(file, mode); registerFile(dictionary); break; } @@ -158,9 +162,9 @@ public void load(final PaginatedFile.MODE mode, final boolean initialize) throws if (dictionary == null) throw new ConfigurationException("Dictionary file not found in database directory"); - for (final PaginatedFile file : filesToOpen) { + for (final ComponentFile file : filesToOpen) { if (file != null && !Dictionary.DICT_EXT.equals(file.getFileExtension())) { - final PaginatedComponent pf = paginatedComponentFactory.createComponent(file, mode); + final Component pf = componentFactory.createComponent(file, mode); if (pf != null) { final Object mainComponent = pf.getMainComponent(); @@ -179,6 +183,11 @@ else if (mainComponent instanceof IndexInternal) initComponents(); readConfiguration(); + + for (final Component f : files) + if (f != null) + f.onAfterSchemaLoad(); + updateSecurity(); } @@ -222,18 +231,18 @@ public void setDateTimeFormat(final String dateTimeFormat) { } @Override - public PaginatedComponent getFileById(final int id) { + public Component getFileById(final int id) { if (id >= files.size()) throw new SchemaException("File with id '" + id + "' was not found"); - final PaginatedComponent p = files.get(id); + final Component p = files.get(id); if (p == null) throw new SchemaException("File with id '" + id + "' was not found"); return p; } @Override - public PaginatedComponent getFileByIdIfExists(final int id) { + public Component getFileByIdIfExists(final int id) { if (id >= files.size()) return null; @@ -271,7 +280,7 @@ public Bucket getBucketById(final int id) { if (id < 0 || id >= files.size()) throw new SchemaException("Bucket with id '" + id + "' was not found"); - final PaginatedComponent p = files.get(id); + final Component p = files.get(id); if (!(p instanceof Bucket)) throw new SchemaException("Bucket with id '" + id + "' was not found"); return (Bucket) p; @@ -290,7 +299,7 @@ public Bucket createBucket(final String bucketName, final int pageSize) { return recordFileChanges(() -> { try { - final Bucket bucket = new Bucket(database, bucketName, databasePath + File.separator + bucketName, PaginatedFile.MODE.READ_WRITE, pageSize, + final Bucket bucket = new Bucket(database, bucketName, databasePath + File.separator + bucketName, ComponentFile.MODE.READ_WRITE, pageSize, Bucket.CURRENT_VERSION); registerFile(bucket); bucketMap.put(bucketName, bucket); @@ -480,6 +489,11 @@ public ManualIndexBuilder buildManualIndex(final String indexName, final Type[] return new ManualIndexBuilder(database, indexName, keyTypes); } + @Override + public VectorIndexBuilder buildVectorIndex() { + return new VectorIndexBuilder(database); + } + @Override public TypeIndex createTypeIndex(final INDEX_TYPE indexType, final boolean unique, final String typeName, final String... propertyNames) { return buildTypeIndex(typeName, propertyNames).withType(indexType).withUnique(unique).create(); @@ -590,7 +604,7 @@ public DocumentType getTypeByBucketId(final int bucketId) { @Override public DocumentType getTypeByBucketName(final String bucketName) { - return bucketId2TypeMap.get(getBucketByName(bucketName).getId()); + return bucketId2TypeMap.get(getBucketByName(bucketName).getFileId()); } public boolean existsType(final String typeName) { @@ -657,18 +671,18 @@ public void dropBucket(final String bucketName) { "Error on dropping bucket '" + bucketName + "' because it is assigned to type '" + type.getName() + "'. Remove the association first"); } - database.getPageManager().deleteFile(bucket.getId()); + database.getPageManager().deleteFile(bucket.getFileId()); try { - database.getFileManager().dropFile(bucket.getId()); + database.getFileManager().dropFile(bucket.getFileId()); } catch (final IOException e) { LogManager.instance().log(this, Level.SEVERE, "Error on deleting bucket '%s'", e, bucketName); } - removeFile(bucket.getId()); + removeFile(bucket.getFileId()); bucketMap.remove(bucketName); for (final Index idx : new ArrayList<>(indexMap.values())) { - if (idx.getAssociatedBucketId() == bucket.getId()) + if (idx.getAssociatedBucketId() == bucket.getFileId()) dropIndex(idx.getName()); } @@ -957,9 +971,8 @@ protected synchronized void readConfiguration() { orphanIndexes.put(indexName, indexJSON); indexJSON.put("type", typeName); LogManager.instance().log(this, Level.WARNING, "Cannot find bucket '%s' defined in index '%s'. Ignoring it", null, bucketName, index.getName()); - } else { - type.addIndexInternal(index, bucket.getId(), properties, null); - } + } else + type.addIndexInternal(index, bucket.getFileId(), properties, null); } else { orphanIndexes.put(indexName, indexJSON); @@ -1000,7 +1013,7 @@ protected synchronized void readConfiguration() { LSMTreeIndexAbstract.NULL_STRATEGY.ERROR; index.setNullStrategy(nullStrategy); - type.addIndexInternal(index, bucket.getId(), properties, null); + type.addIndexInternal(index, bucket.getFileId(), properties, null); LogManager.instance().log(this, Level.WARNING, "Relinked orphan index '%s' to type '%s'", null, indexName, type.getName()); saveConfiguration = true; completed = false; @@ -1090,8 +1103,8 @@ public synchronized JSONObject toJSON() { return root; } - public void registerFile(final PaginatedComponent file) { - final int fileId = file.getId(); + public void registerFile(final Component file) { + final int fileId = file.getFileId(); while (files.size() < fileId + 1) files.add(null); @@ -1103,7 +1116,7 @@ public void registerFile(final PaginatedComponent file) { } public void initComponents() { - for (final PaginatedComponent f : files) + for (final Component f : files) if (f != null) f.onAfterLoad(); } @@ -1222,15 +1235,18 @@ protected Index createBucketIndex(final DocumentType type, final Type[] keyTypes if (indexMap.containsKey(indexName)) throw new DatabaseMetadataException("Cannot create index '" + indexName + "' on type '" + typeName + "' because it already exists"); - final IndexInternal index = indexFactory.createIndex(indexType.name(), database, indexName, unique, databasePath + File.separator + indexName, - PaginatedFile.MODE.READ_WRITE, keyTypes, pageSize, nullStrategy, callback); + final IndexBuilder builder = buildBucketIndex(typeName, bucket.getName(), propertyNames).withUnique(unique).withType(indexType) + .withFilePath(databasePath + File.separator + indexName).withKeyTypes(keyTypes).withPageSize(pageSize).withNullStrategy(nullStrategy) + .withCallback(callback).withIndexName(indexName); + + final IndexInternal index = indexFactory.createIndex(builder); try { - registerFile(index.getPaginatedComponent()); + registerFile(index.getComponent()); indexMap.put(indexName, index); - type.addIndexInternal(index, bucket.getId(), propertyNames, propIndex); + type.addIndexInternal(index, bucket.getFileId(), propertyNames, propIndex); index.build(batchSize, callback); return index; @@ -1257,7 +1273,7 @@ private void rebuildBucketTypeMap() { for (final DocumentType t : types.values()) { for (final Bucket b : t.getBuckets(false)) - newBucketId2TypeMap.put(b.getId(), t); + newBucketId2TypeMap.put(b.getFileId(), t); } bucketId2TypeMap = newBucketId2TypeMap; diff --git a/engine/src/main/java/com/arcadedb/schema/IndexBuilder.java b/engine/src/main/java/com/arcadedb/schema/IndexBuilder.java index 36a8ed7f9..f1b7edcfe 100644 --- a/engine/src/main/java/com/arcadedb/schema/IndexBuilder.java +++ b/engine/src/main/java/com/arcadedb/schema/IndexBuilder.java @@ -1,20 +1,22 @@ /* - * Copyright © 2021-present Arcade Data Ltd (info@arcadedata.com) + * Copyright 2023 Arcade Data Ltd * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-FileCopyrightText: 2021-present Arcade Data Ltd (info@arcadedata.com) - * SPDX-License-Identifier: Apache-2.0 + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. */ package com.arcadedb.schema; @@ -30,19 +32,22 @@ public abstract class IndexBuilder { public static final int BUILD_BATCH_SIZE = 20_000; final DatabaseInternal database; - final Class indexMode; + final Class indexImplementation; Schema.INDEX_TYPE indexType; boolean unique; int pageSize = LSMTreeIndexAbstract.DEF_PAGE_SIZE; LSMTreeIndexAbstract.NULL_STRATEGY nullStrategy = LSMTreeIndexAbstract.NULL_STRATEGY.SKIP; Index.BuildIndexCallback callback; boolean ignoreIfExists = false; + String indexName = null; + String filePath = null; + Type[] keyTypes; int batchSize = BUILD_BATCH_SIZE; int maxAttempts = 3; - protected IndexBuilder(final DatabaseInternal database, final Class indexMode) { + protected IndexBuilder(final DatabaseInternal database, final Class indexImplementation) { this.database = database; - this.indexMode = indexMode; + this.indexImplementation = indexImplementation; } public abstract T create(); @@ -77,6 +82,61 @@ public IndexBuilder withCallback(final Index.BuildIndexCallback callback) { return this; } + public DatabaseInternal getDatabase() { + return database; + } + + public LSMTreeIndexAbstract.NULL_STRATEGY getNullStrategy() { + return nullStrategy; + } + + public int getPageSize() { + return pageSize; + } + + public Schema.INDEX_TYPE getIndexType() { + return indexType; + } + + public Class getIndexImplementation() { + return indexImplementation; + } + + public Index.BuildIndexCallback getCallback() { + return callback; + } + + public boolean isUnique() { + return unique; + } + + public String getIndexName() { + return indexName; + } + + public String getFilePath() { + return filePath; + } + + public Type[] getKeyTypes() { + return keyTypes; + } + + public IndexBuilder withIndexName(final String indexName) { + this.indexName = indexName; + return this; + } + + public IndexBuilder withFilePath(final String path) { + this.filePath = path; + return this; + } + + public IndexBuilder withKeyTypes(final Type[] keyTypes) { + this.keyTypes = keyTypes; + return this; + } + public IndexBuilder withBatchSize(final int batchSize) { this.batchSize = batchSize; return this; diff --git a/engine/src/main/java/com/arcadedb/schema/ManualIndexBuilder.java b/engine/src/main/java/com/arcadedb/schema/ManualIndexBuilder.java index 3b1cd0eec..079054e44 100644 --- a/engine/src/main/java/com/arcadedb/schema/ManualIndexBuilder.java +++ b/engine/src/main/java/com/arcadedb/schema/ManualIndexBuilder.java @@ -20,12 +20,10 @@ import com.arcadedb.database.DatabaseInternal; import com.arcadedb.engine.PaginatedComponent; -import com.arcadedb.engine.PaginatedFile; import com.arcadedb.exception.SchemaException; import com.arcadedb.index.Index; import com.arcadedb.index.IndexInternal; import com.arcadedb.security.SecurityDatabaseUser; -import com.arcadedb.utility.FileUtils; import java.io.*; import java.util.concurrent.atomic.*; @@ -36,9 +34,6 @@ * @author Luca Garulli (l.garulli@arcadedata.com) */ public class ManualIndexBuilder extends IndexBuilder { - final String indexName; - final Type[] keyTypes; - protected ManualIndexBuilder(final DatabaseInternal database, final String indexName, final Type[] keyTypes) { super(database, Index.class); this.indexName = indexName; @@ -70,8 +65,9 @@ public Index create() { final AtomicReference result = new AtomicReference<>(); database.transaction(() -> { - final IndexInternal index = schema.indexFactory.createIndex(indexType.name(), database, FileUtils.encode(indexName, schema.getEncoding()), unique, - database.getDatabasePath() + File.separator + indexName, PaginatedFile.MODE.READ_WRITE, keyTypes, pageSize, nullStrategy, null); + filePath = database.getDatabasePath() + File.separator + indexName; + + final IndexInternal index = schema.indexFactory.createIndex(this); result.set(index); diff --git a/engine/src/main/java/com/arcadedb/schema/Schema.java b/engine/src/main/java/com/arcadedb/schema/Schema.java index 2ef2a99b5..721dcf76f 100644 --- a/engine/src/main/java/com/arcadedb/schema/Schema.java +++ b/engine/src/main/java/com/arcadedb/schema/Schema.java @@ -19,8 +19,8 @@ package com.arcadedb.schema; import com.arcadedb.engine.Bucket; +import com.arcadedb.engine.Component; import com.arcadedb.engine.Dictionary; -import com.arcadedb.engine.PaginatedComponent; import com.arcadedb.function.FunctionDefinition; import com.arcadedb.function.FunctionLibraryDefinition; import com.arcadedb.index.Index; @@ -32,13 +32,13 @@ public interface Schema { - PaginatedComponent getFileById(int id); + Component getFileById(int id); boolean existsBucket(String bucketName); Bucket getBucketByName(String name); - PaginatedComponent getFileByIdIfExists(int id); + Component getFileByIdIfExists(int id); Collection getBuckets(); @@ -60,6 +60,8 @@ public interface Schema { ManualIndexBuilder buildManualIndex(String indexName, Type[] keyTypes); + VectorIndexBuilder buildVectorIndex(); + TypeIndex createTypeIndex(EmbeddedSchema.INDEX_TYPE indexType, boolean unique, String typeName, String... propertyNames); /** @@ -362,6 +364,6 @@ Index createManualIndex(EmbeddedSchema.INDEX_TYPE indexType, boolean unique, Str FunctionDefinition getFunction(String libraryName, String functionName) throws IllegalArgumentException; enum INDEX_TYPE { - LSM_TREE, FULL_TEXT + LSM_TREE, FULL_TEXT, HSNW } } diff --git a/engine/src/main/java/com/arcadedb/schema/Type.java b/engine/src/main/java/com/arcadedb/schema/Type.java index 855ac7d26..447d557d8 100644 --- a/engine/src/main/java/com/arcadedb/schema/Type.java +++ b/engine/src/main/java/com/arcadedb/schema/Type.java @@ -91,12 +91,22 @@ public enum Type { DATETIME_SECOND("Datetime_second", 18, BinaryTypes.TYPE_DATETIME_SECOND, LocalDateTime.class, new Class[] { Date.class, LocalDateTime.class, ZonedDateTime.class, Instant.class, Number.class }), + + ARRAY_OF_SHORTS("Short[]", 19, BinaryTypes.TYPE_ARRAY_OF_SHORTS, short[].class, new Class[] { short[].class, Short[].class }), + + ARRAY_OF_INTEGERS("Integer[]", 20, BinaryTypes.TYPE_ARRAY_OF_INTEGERS, int[].class, new Class[] { int[].class, Integer[].class }), + + ARRAY_OF_LONGS("Long[]", 21, BinaryTypes.TYPE_ARRAY_OF_LONGS, long[].class, new Class[] { long[].class, Long[].class }), + + ARRAY_OF_FLOATS("Float[]", 22, BinaryTypes.TYPE_ARRAY_OF_FLOATS, float[].class, new Class[] { float[].class, Float[].class }), + + ARRAY_OF_DOUBLES("Double[]", 23, BinaryTypes.TYPE_ARRAY_OF_DOUBLES, double[].class, new Class[] { double[].class, Double[].class }), ; // Don't change the order, the type discover get broken if you change the order. private static final Type[] TYPES = new Type[] { LIST, MAP, LINK, STRING, DATETIME }; - private static final Type[] TYPES_BY_ID = new Type[19]; + private static final Type[] TYPES_BY_ID = new Type[24]; // Values previously stored in javaTypes private static final Map, Type> TYPES_BY_USERTYPE = new HashMap, Type>(); @@ -136,6 +146,11 @@ public enum Type { TYPES_BY_USERTYPE.put(EmbeddedDocument.class, EMBEDDED); TYPES_BY_USERTYPE.put(ImmutableEmbeddedDocument.class, EMBEDDED); TYPES_BY_USERTYPE.put(MutableEmbeddedDocument.class, EMBEDDED); + TYPES_BY_USERTYPE.put(short[].class, ARRAY_OF_SHORTS); + TYPES_BY_USERTYPE.put(int[].class, ARRAY_OF_INTEGERS); + TYPES_BY_USERTYPE.put(long[].class, ARRAY_OF_LONGS); + TYPES_BY_USERTYPE.put(float[].class, ARRAY_OF_FLOATS); + TYPES_BY_USERTYPE.put(double[].class, ARRAY_OF_DOUBLES); BYTE.castable.add(BOOLEAN); SHORT.castable.addAll(Arrays.asList(BOOLEAN, BYTE)); @@ -262,17 +277,6 @@ public static Type getTypeByName(final String name) { return valueOf(name.toUpperCase()); } - private static boolean checkLinkCollection(final Collection toCheck) { - boolean empty = true; - for (final Object object : toCheck) { - if (object != null && !(object instanceof Identifiable)) - return false; - else if (object != null) - empty = false; - } - return !empty; - } - public static boolean isSimpleType(final Object iObject) { if (iObject == null) return false; diff --git a/engine/src/main/java/com/arcadedb/schema/TypeIndexBuilder.java b/engine/src/main/java/com/arcadedb/schema/TypeIndexBuilder.java index 3a9618484..d97c2dc63 100644 --- a/engine/src/main/java/com/arcadedb/schema/TypeIndexBuilder.java +++ b/engine/src/main/java/com/arcadedb/schema/TypeIndexBuilder.java @@ -1,20 +1,22 @@ /* - * Copyright © 2021-present Arcade Data Ltd (info@arcadedata.com) + * Copyright 2023 Arcade Data Ltd * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-FileCopyrightText: 2021-present Arcade Data Ltd (info@arcadedata.com) - * SPDX-License-Identifier: Apache-2.0 + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. */ package com.arcadedb.schema; @@ -131,4 +133,12 @@ public TypeIndex create() { throw new IndexException("Error on creating index on type '" + typeName + "', properties " + Arrays.toString(propertyNames), e); } } + + public String getTypeName() { + return typeName; + } + + public String[] getPropertyNames() { + return propertyNames; + } } diff --git a/engine/src/main/java/com/arcadedb/schema/VectorIndexBuilder.java b/engine/src/main/java/com/arcadedb/schema/VectorIndexBuilder.java new file mode 100644 index 000000000..6d975591e --- /dev/null +++ b/engine/src/main/java/com/arcadedb/schema/VectorIndexBuilder.java @@ -0,0 +1,281 @@ +/* + * Copyright © 2021-present Arcade Data Ltd (info@arcadedata.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-FileCopyrightText: 2021-present Arcade Data Ltd (info@arcadedata.com) + * SPDX-License-Identifier: Apache-2.0 + */ +package com.arcadedb.schema; + +import com.arcadedb.database.Database; +import com.arcadedb.database.DatabaseInternal; +import com.arcadedb.database.RID; +import com.arcadedb.exception.SchemaException; +import com.arcadedb.graph.Vertex; +import com.arcadedb.index.Index; +import com.arcadedb.index.IndexException; +import com.arcadedb.index.vector.HnswVectorIndex; +import com.arcadedb.index.vector.HnswVectorIndexRAM; +import com.arcadedb.security.SecurityDatabaseUser; +import com.arcadedb.utility.FileUtils; +import com.github.jelmerk.knn.DistanceFunction; + +import java.io.*; +import java.util.*; + +/** + * Builder class for vector indexes. + * + * @author Luca Garulli (l.garulli@arcadedata.com) + */ +public class VectorIndexBuilder extends IndexBuilder { + public static final int DEFAULT_M = 10; + public static final int DEFAULT_EF = 10; + public static final int DEFAULT_EF_CONSTRUCTION = 200; + private static final int CURRENT_VERSION = 1; + + int dimensions; + DistanceFunction distanceFunction; + Comparator distanceComparator; + int maxItemCount; + int m = DEFAULT_M; + int ef = DEFAULT_EF; + int efConstruction = DEFAULT_EF_CONSTRUCTION; + String vertexType; + String edgeType; + String vectorPropertyName; + Type vectorPropertyType = Type.ARRAY_OF_FLOATS; + String idPropertyName; + Map cache; + HnswVectorIndexRAM origin; + Index.BuildIndexCallback vertexCreationCallback; + + VectorIndexBuilder(final DatabaseInternal database) { + super(database, HnswVectorIndex.class); + } + + public VectorIndexBuilder(final Database database, final HnswVectorIndexRAM origin) { + super((DatabaseInternal) database, HnswVectorIndex.class); + this.indexType = Schema.INDEX_TYPE.HSNW; + this.origin = origin; + this.dimensions = origin.getDimensions(); + this.distanceFunction = origin.getDistanceFunction(); + this.distanceComparator = origin.getDistanceComparator(); + this.maxItemCount = origin.getMaxItemCount(); + this.m = origin.getM(); + this.ef = origin.getEf(); + this.efConstruction = origin.getEfConstruction(); + } + + public HnswVectorIndex create() { + database.checkPermissionsOnDatabase(SecurityDatabaseUser.DATABASE_ACCESS.UPDATE_SCHEMA); + + if (database.async().isProcessing()) + throw new SchemaException("Cannot create a new index while asynchronous tasks are running"); + + if (vertexType == null) + throw new IndexException("Vertex type is missing from vector index declaration"); + if (edgeType == null) + throw new IndexException("Edge type is missing from vector index declaration"); + if (idPropertyName == null) + throw new IndexException("Vertex id property name is missing from vector index declaration"); + if (vectorPropertyName == null) + throw new IndexException("Vertex vector property name is missing from vector index declaration"); + + filePath = database.getDatabasePath() + File.separator + FileUtils.encode(vertexType, database.getSchema().getEncoding()) + "_" + System.nanoTime() + "." + + database.getFileManager().newFileId() + ".v" + HnswVectorIndex.CURRENT_VERSION + "." + HnswVectorIndex.FILE_EXT; + + final EmbeddedSchema schema = database.getSchema().getEmbedded(); + if (ignoreIfExists) { + Index index = schema.getIndexByName(indexName); + if (index instanceof HnswVectorIndex) { + if (!index.getTypeName().equalsIgnoreCase(vertexType)) + throw new IndexException("Index '" + indexName + "' is already defined but on type '" + index.getTypeName() + "'"); + return (HnswVectorIndex) index; + } + } + + final VertexType vType = database.getSchema().getOrCreateVertexType(vertexType); + vType.getOrCreateProperty(idPropertyName, Type.STRING); + vType.getOrCreateProperty(vectorPropertyName, vectorPropertyType); + + final HnswVectorIndex index = (HnswVectorIndex) schema.indexFactory.createIndex(this); + + schema.registerFile(index.getComponent()); + schema.indexMap.put(index.getName(), index); + + index.build(origin, EmbeddedSchema.BUILD_TX_BATCH_SIZE, vertexCreationCallback, callback); + + try { + index.save(); + } catch (IOException e) { + throw new IndexException("Error on saving vector index " + index.getName(), e); + } + + return index; + } + + public VectorIndexBuilder withDistanceFunction(final DistanceFunction distanceFunction) { + this.distanceFunction = distanceFunction; + return this; + } + + public VectorIndexBuilder withDistanceComparator(final Comparator distanceComparator) { + this.distanceComparator = distanceComparator; + return this; + } + + public VectorIndexBuilder withDimensions(final int dimensions) { + this.dimensions = dimensions; + return this; + } + + public VectorIndexBuilder withMaxItemCount(final int maxItemCount) { + this.maxItemCount = maxItemCount; + return this; + } + + /** + * Sets the number of bi-directional links created for every new element during construction. Reasonable range + * for m is 2-100. Higher m work better on datasets with high intrinsic dimensionality and/or high recall, + * while low m work better for datasets with low intrinsic dimensionality and/or low recalls. The parameter + * also determines the algorithm's memory consumption. + * As an example for d = 4 random vectors optimal m for search is somewhere around 6, while for high dimensional + * datasets (word embeddings, good face descriptors), higher M are required (e.g. m = 48, 64) for optimal + * performance at high recall. The range mM = 12-48 is ok for the most of the use cases. When m is changed one + * has to update the other parameters. Nonetheless, ef and efConstruction parameters can be roughly estimated by + * assuming that m efConstruction is a constant. + * + * @param m the number of bi-directional links created for every new element during construction + * + * @return the builder. + */ + public VectorIndexBuilder withM(int m) { + this.m = m; + return this; + } + + /** + * ` + * The parameter has the same meaning as ef, but controls the index time / index precision. Bigger efConstruction + * leads to longer construction, but better index quality. At some point, increasing efConstruction does not + * improve the quality of the index. One way to check if the selection of ef_construction was ok is to measure + * a recall for M nearest neighbor search when ef = efConstruction: if the recall is lower than 0.9, then + * there is room for improvement. + * + * @param efConstruction controls the index time / index precision + * + * @return the builder + */ + public VectorIndexBuilder withEfConstruction(int efConstruction) { + this.efConstruction = efConstruction; + return this; + } + + /** + * The size of the dynamic list for the nearest neighbors (used during the search). Higher ef leads to more + * accurate but slower search. The value ef of can be anything between k and the size of the dataset. + * + * @param ef size of the dynamic list for the nearest neighbors + * + * @return the builder + */ + public VectorIndexBuilder withEf(int ef) { + this.ef = ef; + return this; + } + + public VectorIndexBuilder withVertexType(final String vertexType) { + this.vertexType = vertexType; + return this; + } + + public VectorIndexBuilder withEdgeType(final String edgeType) { + this.edgeType = edgeType; + return this; + } + + public VectorIndexBuilder withVectorProperty(final String vectorPropertyName, final Type vectorPropertyType) { + if (vectorPropertyType != Type.ARRAY_OF_SHORTS && vectorPropertyType != Type.ARRAY_OF_INTEGERS && vectorPropertyType != Type.ARRAY_OF_LONGS + && vectorPropertyType != Type.ARRAY_OF_FLOATS && vectorPropertyType != Type.ARRAY_OF_DOUBLES) + throw new IllegalArgumentException("Vector property type '" + vectorPropertyType + "' not compatible with vectors"); + + this.vectorPropertyName = vectorPropertyName; + this.vectorPropertyType = vectorPropertyType; + return this; + } + + public VectorIndexBuilder withIdProperty(final String idPropertyName) { + this.idPropertyName = idPropertyName; + return this; + } + + public VectorIndexBuilder withCache(final Map cache) { + this.cache = cache; + return this; + } + + public VectorIndexBuilder withVertexCreationCallback(final Index.BuildIndexCallback callback) { + this.vertexCreationCallback = callback; + return this; + } + + public int getDimensions() { + return dimensions; + } + + public DistanceFunction getDistanceFunction() { + return distanceFunction; + } + + public Comparator getDistanceComparator() { + return distanceComparator; + } + + public int getM() { + return m; + } + + public int getEf() { + return ef; + } + + public int getEfConstruction() { + return efConstruction; + } + + public int getMaxItemCount() { + return maxItemCount; + } + + public String getVertexType() { + return vertexType; + } + + public String getIdPropertyName() { + return idPropertyName; + } + + public String getEdgeType() { + return edgeType; + } + + public String getVectorPropertyName() { + return vectorPropertyName; + } + + public Map getCache() { + return cache; + } +} diff --git a/engine/src/main/java/com/arcadedb/serializer/BinarySerializer.java b/engine/src/main/java/com/arcadedb/serializer/BinarySerializer.java index a722a5520..749a4c8d0 100644 --- a/engine/src/main/java/com/arcadedb/serializer/BinarySerializer.java +++ b/engine/src/main/java/com/arcadedb/serializer/BinarySerializer.java @@ -359,12 +359,10 @@ else if (value instanceof Binary) content.putNumber(((Number) value).longValue()); break; case BinaryTypes.TYPE_FLOAT: - final int fg = Float.floatToIntBits(((Number) value).floatValue()); - content.putNumber(fg); + content.putNumber(Float.floatToIntBits(((Number) value).floatValue())); break; case BinaryTypes.TYPE_DOUBLE: - final long dg = Double.doubleToLongBits(((Number) value).doubleValue()); - content.putNumber(dg); + content.putNumber(Double.doubleToLongBits(((Number) value).doubleValue())); break; case BinaryTypes.TYPE_DATE: if (value instanceof Date) @@ -487,7 +485,41 @@ else if (value instanceof LocalDate) content.append(header); break; } - + case BinaryTypes.TYPE_ARRAY_OF_SHORTS: { + final int length = Array.getLength(value); + content.putUnsignedNumber(length); + for (int i = 0; i < length; ++i) + content.putNumber(Array.getShort(value, i)); + break; + } + case BinaryTypes.TYPE_ARRAY_OF_INTEGERS: { + final int length = Array.getLength(value); + content.putUnsignedNumber(length); + for (int i = 0; i < length; ++i) + content.putNumber(Array.getInt(value, i)); + break; + } + case BinaryTypes.TYPE_ARRAY_OF_LONGS: { + final int length = Array.getLength(value); + content.putUnsignedNumber(length); + for (int i = 0; i < length; ++i) + content.putNumber(Array.getLong(value, i)); + break; + } + case BinaryTypes.TYPE_ARRAY_OF_FLOATS: { + final int length = Array.getLength(value); + content.putUnsignedNumber(length); + for (int i = 0; i < length; ++i) + content.putNumber(Float.floatToIntBits(Array.getFloat(value, i))); + break; + } + case BinaryTypes.TYPE_ARRAY_OF_DOUBLES: { + final int length = Array.getLength(value); + content.putUnsignedNumber(length); + for (int i = 0; i < length; ++i) + content.putNumber(Double.doubleToLongBits(Array.getDouble(value, i))); + break; + } default: LogManager.instance().log(this, Level.INFO, "Error on serializing value '" + value + "', type not supported"); } @@ -596,6 +628,46 @@ public Object deserializeValue(final Database database, final Binary content, fi content.position(content.position() + embeddedObjectSize); break; } + case BinaryTypes.TYPE_ARRAY_OF_SHORTS: { + final int count = (int) content.getUnsignedNumber(); + final short[] array = new short[count]; + for (int i = 0; i < count; ++i) + array[i] = (short) content.getNumber(); + value = array; + break; + } + case BinaryTypes.TYPE_ARRAY_OF_INTEGERS: { + final int count = (int) content.getUnsignedNumber(); + final int[] array = new int[count]; + for (int i = 0; i < count; ++i) + array[i] = (int) content.getNumber(); + value = array; + break; + } + case BinaryTypes.TYPE_ARRAY_OF_LONGS: { + final int count = (int) content.getUnsignedNumber(); + final long[] array = new long[count]; + for (int i = 0; i < count; ++i) + array[i] = content.getNumber(); + value = array; + break; + } + case BinaryTypes.TYPE_ARRAY_OF_FLOATS: { + final int count = (int) content.getUnsignedNumber(); + final float[] array = new float[count]; + for (int i = 0; i < count; ++i) + array[i] = Float.intBitsToFloat((int) content.getNumber()); + value = array; + break; + } + case BinaryTypes.TYPE_ARRAY_OF_DOUBLES: { + final int count = (int) content.getUnsignedNumber(); + final double[] array = new double[count]; + for (int i = 0; i < count; ++i) + array[i] = Double.longBitsToDouble(content.getNumber()); + value = array; + break; + } default: LogManager.instance().log(this, Level.INFO, "Error on deserializing value of type " + type); diff --git a/engine/src/main/java/com/arcadedb/serializer/BinaryTypes.java b/engine/src/main/java/com/arcadedb/serializer/BinaryTypes.java index 7be434a87..e59e23edb 100644 --- a/engine/src/main/java/com/arcadedb/serializer/BinaryTypes.java +++ b/engine/src/main/java/com/arcadedb/serializer/BinaryTypes.java @@ -25,6 +25,7 @@ import com.arcadedb.query.sql.executor.Result; import com.arcadedb.utility.DateUtils; +import java.lang.reflect.*; import java.math.*; import java.time.*; import java.util.*; @@ -52,7 +53,12 @@ public class BinaryTypes { public final static byte TYPE_EMBEDDED = 19; public final static byte TYPE_DATETIME_MICROS = 20; // @SINCE 23.1.1 public final static byte TYPE_DATETIME_NANOS = 21; // @SINCE 23.1.1 - public final static byte TYPE_DATETIME_SECOND = 22; // @SINCE 23.1.1 + public final static byte TYPE_DATETIME_SECOND = 22; // @SINCE 23.1.1 + public final static byte TYPE_ARRAY_OF_SHORTS = 23; // @SINCE 23.6.1 + public final static byte TYPE_ARRAY_OF_INTEGERS = 24; // @SINCE 23.6.1 + public final static byte TYPE_ARRAY_OF_LONGS = 25; // @SINCE 23.6.1 + public final static byte TYPE_ARRAY_OF_FLOATS = 26; // @SINCE 23.6.1 + public final static byte TYPE_ARRAY_OF_DOUBLES = 27; // @SINCE 23.6.1 public static byte getTypeFromValue(final Object value) { final byte type; @@ -108,8 +114,25 @@ else if (value instanceof Result) { } else // SERIALIZE THE RESULT AS A MAP type = TYPE_MAP; - } else if (value instanceof Iterable || value.getClass().isArray()) - // TODO: SUPPORT SET SEMANTIC TOO + } else if (value.getClass().isArray()) { + if (value.getClass().getComponentType().isPrimitive()) { + final Object firstElement = Array.getLength(value) > 0 ? Array.get(value, 0) : null; + if (firstElement instanceof Short) + type = TYPE_ARRAY_OF_SHORTS; + else if (firstElement instanceof Integer) + type = TYPE_ARRAY_OF_INTEGERS; + else if (firstElement instanceof Long) + type = TYPE_ARRAY_OF_LONGS; + else if (firstElement instanceof Float) + type = TYPE_ARRAY_OF_FLOATS; + else if (firstElement instanceof Double) + type = TYPE_ARRAY_OF_DOUBLES; + else + type = TYPE_LIST; + } else + type = TYPE_LIST; + + } else if (value instanceof Iterable) type = TYPE_LIST; else if (value instanceof Number) { // GENERIC NUMBER IMPLEMENTATION. THIS HAPPENS WITH JSON NUMBERS @@ -213,6 +236,21 @@ public static Class getClassFromType(final byte type) { case BinaryTypes.TYPE_EMBEDDED: return Document.class; + case BinaryTypes.TYPE_ARRAY_OF_SHORTS: + return short[].class; + + case BinaryTypes.TYPE_ARRAY_OF_INTEGERS: + return int[].class; + + case BinaryTypes.TYPE_ARRAY_OF_LONGS: + return long[].class; + + case BinaryTypes.TYPE_ARRAY_OF_FLOATS: + return float[].class; + + case BinaryTypes.TYPE_ARRAY_OF_DOUBLES: + return double[].class; + default: // UNKNOWN return null; diff --git a/engine/src/main/java/com/arcadedb/utility/DateUtils.java b/engine/src/main/java/com/arcadedb/utility/DateUtils.java index 5b8a4517a..9bd8bc7b7 100755 --- a/engine/src/main/java/com/arcadedb/utility/DateUtils.java +++ b/engine/src/main/java/com/arcadedb/utility/DateUtils.java @@ -355,4 +355,31 @@ else if (impl.equals(Calendar.class)) { } return date; } + + public static String formatElapsed(final long ms) { + if (ms < 1000) + return ms + " ms"; + + final long seconds = ms / 1000; + if (seconds < 60) + return seconds + " seconds"; + + final float minutes = seconds / 60F; + if (minutes < 60F) + return String.format("%.1f minutes", minutes); + + final float hours = minutes / 60F; + if (hours < 24F) + return String.format("%.1f hours", hours); + + final float days = hours / 24F; + if (days < 30F) + return String.format("%.1f days", days); + + final float months = days / 30F; + if (months < 12F) + return String.format("%.1f months", months); + + return String.format("%.1f years", months / 12F); + } } diff --git a/engine/src/main/java/com/arcadedb/utility/FileUtils.java b/engine/src/main/java/com/arcadedb/utility/FileUtils.java index cbeae6ae2..e30cf7366 100755 --- a/engine/src/main/java/com/arcadedb/utility/FileUtils.java +++ b/engine/src/main/java/com/arcadedb/utility/FileUtils.java @@ -280,18 +280,16 @@ public static String threadDump() { return dump.toString(); } - public static String readFileAsString(final File file) throws IOException { - try (final FileInputStream is = new FileInputStream(file)) { - return readStreamAsString(is, "UTF8", 0); - } - } - public static String readFileAsString(final File file, final String iCharset) throws IOException { try (final FileInputStream is = new FileInputStream(file)) { return readStreamAsString(is, iCharset, 0); } } + public static String readFileAsString(final File file) throws IOException { + return readFileAsString(file, "UTF8"); + } + public static Binary readStreamAsBinary(final InputStream iStream) throws IOException { final Binary buffer = new Binary(); diff --git a/engine/src/main/java/com/arcadedb/utility/JVMUtils.java b/engine/src/main/java/com/arcadedb/utility/JVMUtils.java index 54727e66c..26e86c3fe 100755 --- a/engine/src/main/java/com/arcadedb/utility/JVMUtils.java +++ b/engine/src/main/java/com/arcadedb/utility/JVMUtils.java @@ -113,7 +113,7 @@ public static String dumpHeap(final boolean live) { final File file = File.createTempFile("deepwolf.heapdump.bin", null); hotspotMBean.dumpHeap(file.getAbsolutePath(), live); - final String content = FileUtils.readFileAsString(file, "UTF8"); + final String content = FileUtils.readFileAsString(file); file.delete(); diff --git a/engine/src/test/java/com/arcadedb/TestHelper.java b/engine/src/test/java/com/arcadedb/TestHelper.java index 75b9fa4b7..0b24bbda3 100644 --- a/engine/src/test/java/com/arcadedb/TestHelper.java +++ b/engine/src/test/java/com/arcadedb/TestHelper.java @@ -21,7 +21,7 @@ import com.arcadedb.database.Database; import com.arcadedb.database.DatabaseFactory; import com.arcadedb.database.DatabaseInternal; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.log.LogManager; import com.arcadedb.query.sql.executor.Result; import com.arcadedb.query.sql.executor.ResultSet; @@ -140,7 +140,7 @@ protected void reopenDatabaseInReadOnlyMode() { Assertions.assertNull(DatabaseFactory.getActiveDatabaseInstance(database.getDatabasePath())); } - database = factory.open(PaginatedFile.MODE.READ_ONLY); + database = factory.open(ComponentFile.MODE.READ_ONLY); Assertions.assertEquals(database, DatabaseFactory.getActiveDatabaseInstance(database.getDatabasePath())); } @@ -174,7 +174,7 @@ public void afterTest() { if (isCheckingDatabaseIntegrity()) checkDatabaseIntegrity(); - if (database.getMode() == PaginatedFile.MODE.READ_ONLY) + if (database.getMode() == ComponentFile.MODE.READ_ONLY) reopenDatabase(); ((DatabaseInternal) database).getEmbedded().drop(); diff --git a/engine/src/test/java/com/arcadedb/database/BucketSQLTest.java b/engine/src/test/java/com/arcadedb/database/BucketSQLTest.java index 15002e839..6adb3af4d 100644 --- a/engine/src/test/java/com/arcadedb/database/BucketSQLTest.java +++ b/engine/src/test/java/com/arcadedb/database/BucketSQLTest.java @@ -56,25 +56,25 @@ protected void beginTest() { Assertions.assertTrue(resultset.hasNext()); final Document enzo = resultset.next().getRecord().get().asDocument(); Assertions.assertFalse(resultset.hasNext()); - Assertions.assertEquals(database.getSchema().getBucketByName("Customer_Europe").getId(), enzo.getIdentity().bucketId); + Assertions.assertEquals(database.getSchema().getBucketByName("Customer_Europe").getFileId(), enzo.getIdentity().bucketId); resultset = database.command("sql", "INSERT INTO BUCKET:Customer_Americas CONTENT { firstName: 'Jack', lastName: 'Tramiel' }"); Assertions.assertTrue(resultset.hasNext()); final Document jack = resultset.next().getRecord().get().asDocument(); Assertions.assertFalse(resultset.hasNext()); - Assertions.assertEquals(database.getSchema().getBucketByName("Customer_Americas").getId(), jack.getIdentity().bucketId); + Assertions.assertEquals(database.getSchema().getBucketByName("Customer_Americas").getFileId(), jack.getIdentity().bucketId); resultset = database.command("sql", "INSERT INTO BUCKET:Customer_Asia CONTENT { firstName: 'Bruce', lastName: 'Lee' }"); Assertions.assertTrue(resultset.hasNext()); final Document bruce = resultset.next().getRecord().get().asDocument(); Assertions.assertFalse(resultset.hasNext()); - Assertions.assertEquals(database.getSchema().getBucketByName("Customer_Asia").getId(), bruce.getIdentity().bucketId); + Assertions.assertEquals(database.getSchema().getBucketByName("Customer_Asia").getFileId(), bruce.getIdentity().bucketId); resultset = database.command("sql", "INSERT INTO BUCKET:Customer_Other CONTENT { firstName: 'Penguin', lastName: 'Hungry' }"); Assertions.assertTrue(resultset.hasNext()); final Document penguin = resultset.next().getRecord().get().asDocument(); Assertions.assertFalse(resultset.hasNext()); - Assertions.assertEquals(database.getSchema().getBucketByName("Customer_Other").getId(), penguin.getIdentity().bucketId); + Assertions.assertEquals(database.getSchema().getBucketByName("Customer_Other").getFileId(), penguin.getIdentity().bucketId); }); } } diff --git a/engine/src/test/java/com/arcadedb/database/CheckDatabaseTest.java b/engine/src/test/java/com/arcadedb/database/CheckDatabaseTest.java index 37e284229..a5bedacb2 100644 --- a/engine/src/test/java/com/arcadedb/database/CheckDatabaseTest.java +++ b/engine/src/test/java/com/arcadedb/database/CheckDatabaseTest.java @@ -245,7 +245,7 @@ public void checkBrokenPage() { final Bucket bucket = database.getSchema().getBucketById(root.getIdentity().bucketId); try { - final MutablePage page = ((DatabaseInternal) database).getTransaction().getPageToModify(new PageId(bucket.getId(), 0), bucket.getPageSize(), false); + final MutablePage page = ((DatabaseInternal) database).getTransaction().getPageToModify(new PageId(bucket.getFileId(), 0), bucket.getPageSize(), false); for (int i = 0; i < page.getAvailableContentSize(); i++) { page.writeByte(i, (byte) 4); } diff --git a/engine/src/test/java/com/arcadedb/index/DropIndexTest.java b/engine/src/test/java/com/arcadedb/index/DropIndexTest.java index 4ea4bb715..8cc74d103 100644 --- a/engine/src/test/java/com/arcadedb/index/DropIndexTest.java +++ b/engine/src/test/java/com/arcadedb/index/DropIndexTest.java @@ -160,7 +160,7 @@ public void testDropAndRecreateTypeWithIndex() { // CHECK ALL THE BUCKETS ARE REMOVED for (final Bucket b : buckets) { try { - database.getSchema().getBucketById(b.getId()); + database.getSchema().getBucketById(b.getFileId()); Assertions.fail(); } catch (final SchemaException e) { // EXPECTED @@ -174,7 +174,7 @@ public void testDropAndRecreateTypeWithIndex() { } try { - database.getSchema().getFileById(b.getId()); + database.getSchema().getFileById(b.getFileId()); Assertions.fail(); } catch (final SchemaException e) { // EXPECTED diff --git a/engine/src/test/java/com/arcadedb/query/sql/MatchStatementExecutionTest.java b/engine/src/test/java/com/arcadedb/query/sql/MatchStatementExecutionTest.java index 312673ca3..93f250183 100644 --- a/engine/src/test/java/com/arcadedb/query/sql/MatchStatementExecutionTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/MatchStatementExecutionTest.java @@ -2018,40 +2018,40 @@ public void testBucketTarget() { // CHECK THE SUB-INDEX EXISTS Assertions.assertTrue( Set.of(((TypeIndex) database.getSchema().getIndexByName(clazz + "[name]")).getIndexesOnBuckets()).stream().map((r) -> r.getAssociatedBucketId()) - .collect(Collectors.toSet()).contains(database.getSchema().getBucketByName(clazz + "_one").getId())); + .collect(Collectors.toSet()).contains(database.getSchema().getBucketByName(clazz + "_one").getFileId())); database.command("SQL", "ALTER TYPE " + clazz + " BUCKET -" + clazz + "_one").close(); // CHECK THE SUB-INDEX HAS BEN REMOVED Assertions.assertFalse( Set.of(((TypeIndex) database.getSchema().getIndexByName(clazz + "[name]")).getIndexesOnBuckets()).stream().map((r) -> r.getAssociatedBucketId()) - .collect(Collectors.toSet()).contains(database.getSchema().getBucketByName(clazz + "_one").getId())); + .collect(Collectors.toSet()).contains(database.getSchema().getBucketByName(clazz + "_one").getFileId())); //-------------------------------------------------------------------------------------------------------- // CHECK THE SUB-INDEX EXISTS Assertions.assertTrue( Set.of(((TypeIndex) database.getSchema().getIndexByName(clazz + "[name]")).getIndexesOnBuckets()).stream().map((r) -> r.getAssociatedBucketId()) - .collect(Collectors.toSet()).contains(database.getSchema().getBucketByName(clazz + "_two").getId())); + .collect(Collectors.toSet()).contains(database.getSchema().getBucketByName(clazz + "_two").getFileId())); database.command("SQL", "ALTER TYPE " + clazz + " BUCKET -" + clazz + "_two").close(); // CHECK THE SUB-INDEX HAS BEN REMOVED Assertions.assertFalse( Set.of(((TypeIndex) database.getSchema().getIndexByName(clazz + "[name]")).getIndexesOnBuckets()).stream().map((r) -> r.getAssociatedBucketId()) - .collect(Collectors.toSet()).contains(database.getSchema().getBucketByName(clazz + "_two").getId())); + .collect(Collectors.toSet()).contains(database.getSchema().getBucketByName(clazz + "_two").getFileId())); //-------------------------------------------------------------------------------------------------------- // CHECK THE SUB-INDEX EXISTS Assertions.assertTrue( Set.of(((TypeIndex) database.getSchema().getIndexByName(clazz + "[name]")).getIndexesOnBuckets()).stream().map((r) -> r.getAssociatedBucketId()) - .collect(Collectors.toSet()).contains(database.getSchema().getBucketByName(clazz + "_three").getId())); + .collect(Collectors.toSet()).contains(database.getSchema().getBucketByName(clazz + "_three").getFileId())); database.command("SQL", "ALTER TYPE " + clazz + " BUCKET -" + clazz + "_three").close(); // CHECK THE SUB-INDEX HAS BEN REMOVED Assertions.assertFalse( Set.of(((TypeIndex) database.getSchema().getIndexByName(clazz + "[name]")).getIndexesOnBuckets()).stream().map((r) -> r.getAssociatedBucketId()) - .collect(Collectors.toSet()).contains(database.getSchema().getBucketByName(clazz + "_three").getId())); + .collect(Collectors.toSet()).contains(database.getSchema().getBucketByName(clazz + "_three").getFileId())); result.close(); } diff --git a/engine/src/test/java/com/arcadedb/query/sql/executor/ScriptExecutionTest.java b/engine/src/test/java/com/arcadedb/query/sql/executor/ScriptExecutionTest.java index 54e6dce23..102efc2b4 100644 --- a/engine/src/test/java/com/arcadedb/query/sql/executor/ScriptExecutionTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/executor/ScriptExecutionTest.java @@ -6,6 +6,7 @@ import com.arcadedb.database.Identifiable; import com.arcadedb.engine.ImmutablePage; import com.arcadedb.engine.PageId; +import com.arcadedb.engine.PaginatedComponentFile; import com.arcadedb.exception.CommandSQLParsingException; import com.arcadedb.exception.ConcurrentModificationException; import com.arcadedb.query.sql.SQLQueryEngine; @@ -242,7 +243,7 @@ public void testCommitRetryMultiThreadsSQLIncrement() throws IOException { database.async().waitCompletion(); ImmutablePage page = ((EmbeddedDatabase) database).getPageManager() - .getImmutablePage(new PageId(2, 0), ((EmbeddedDatabase) database).getFileManager().getFile(2).getPageSize(), false, false); + .getImmutablePage(new PageId(2, 0), ((PaginatedComponentFile) ((EmbeddedDatabase) database).getFileManager().getFile(2)).getPageSize(), false, false); Assertions.assertEquals(TOTAL + 1, page.getVersion(), "Page v." + page.getVersion()); } @@ -297,7 +298,7 @@ public void testCommitRetryMultiThreadsSQLIncrementRepeatableRead() throws IOExc database.async().waitCompletion(); ImmutablePage page = ((EmbeddedDatabase) database).getPageManager() - .getImmutablePage(new PageId(2, 0), ((EmbeddedDatabase) database).getFileManager().getFile(2).getPageSize(), false, false); + .getImmutablePage(new PageId(2, 0), ((PaginatedComponentFile) ((EmbeddedDatabase) database).getFileManager().getFile(2)).getPageSize(), false, false); Assertions.assertEquals(TOTAL + 1, page.getVersion(), "Page v." + page.getVersion()); diff --git a/engine/src/test/java/com/arcadedb/query/sql/executor/SelectStatementExecutionTest.java b/engine/src/test/java/com/arcadedb/query/sql/executor/SelectStatementExecutionTest.java index ba700e7da..fe81f4eb2 100644 --- a/engine/src/test/java/com/arcadedb/query/sql/executor/SelectStatementExecutionTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/executor/SelectStatementExecutionTest.java @@ -1007,7 +1007,7 @@ public void testQueryMetadataDatabase() { @Test public void testNonExistingRids() { - final int bucketId = database.getSchema().createDocumentType("testNonExistingRids").getBuckets(false).get(0).getId(); + final int bucketId = database.getSchema().createDocumentType("testNonExistingRids").getBuckets(false).get(0).getFileId(); final ResultSet result = database.query("sql", "select from #" + bucketId + ":100000000"); Assertions.assertTrue(result.hasNext()); @@ -3450,7 +3450,7 @@ public void testRidPagination1() { if (clusterIds.length < 3) { return; } - System.arraycopy(clazz.getBuckets(false).stream().mapToInt(x -> x.getId()).toArray(), 0, clusterIds, 0, clusterIds.length); + System.arraycopy(clazz.getBuckets(false).stream().mapToInt(x -> x.getFileId()).toArray(), 0, clusterIds, 0, clusterIds.length); Arrays.sort(clusterIds); for (int i = 0; i < clusterIds.length; i++) { @@ -3486,7 +3486,7 @@ public void testRidPagination2() { if (clusterIds.length < 3) { return; } - System.arraycopy(clazz.getBuckets(false).stream().mapToInt(x -> x.getId()).toArray(), 0, clusterIds, 0, clusterIds.length); + System.arraycopy(clazz.getBuckets(false).stream().mapToInt(x -> x.getFileId()).toArray(), 0, clusterIds, 0, clusterIds.length); Arrays.sort(clusterIds); for (int i = 0; i < clusterIds.length; i++) { diff --git a/engine/src/test/java/com/arcadedb/query/sql/executor/UpdateStatementExecutionTest.java b/engine/src/test/java/com/arcadedb/query/sql/executor/UpdateStatementExecutionTest.java index 2a0d922d0..c5161f7a5 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/executor/UpdateStatementExecutionTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/executor/UpdateStatementExecutionTest.java @@ -23,6 +23,7 @@ import com.arcadedb.database.DatabaseInternal; import com.arcadedb.database.EmbeddedDocument; import com.arcadedb.database.MutableDocument; +import com.arcadedb.database.MutableEmbeddedDocument; import com.arcadedb.database.RID; import com.arcadedb.database.bucketselectionstrategy.ThreadBucketSelectionStrategy; import com.arcadedb.engine.Bucket; @@ -566,7 +567,7 @@ public void testUpsertBucket() { result.close(); // BY BUCKET ID - result = database.command("sql", "update bucket:" + buckets.get(0).getId() + " set foo = 'bar' upsert where name = 'name1'"); + result = database.command("sql", "update bucket:" + buckets.get(0).getFileId() + " set foo = 'bar' upsert where name = 'name1'"); Assertions.assertTrue(result.hasNext()); item = result.next(); Assertions.assertNotNull(item); @@ -781,7 +782,7 @@ public void testRemove3() { clazz.createProperty("theProperty", Type.EMBEDDED); final MutableDocument doc = database.newDocument(className); - final MutableDocument emb = database.newDocument(className); + MutableEmbeddedDocument emb = doc.newEmbeddedDocument(className, "theProperty"); emb.set("sub", "foo"); emb.set("aaa", "bar"); doc.set("theProperty", emb); diff --git a/engine/src/test/java/com/arcadedb/query/sql/method/collection/SQLMethodTransformTest.java b/engine/src/test/java/com/arcadedb/query/sql/method/collection/SQLMethodTransformTest.java index 90288a301..aa5a9b1da 100644 --- a/engine/src/test/java/com/arcadedb/query/sql/method/collection/SQLMethodTransformTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/method/collection/SQLMethodTransformTest.java @@ -36,10 +36,10 @@ import com.arcadedb.database.async.DatabaseAsyncExecutor; import com.arcadedb.database.async.ErrorCallback; import com.arcadedb.database.async.OkCallback; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.engine.ErrorRecordCallback; import com.arcadedb.engine.FileManager; import com.arcadedb.engine.PageManager; -import com.arcadedb.engine.PaginatedFile; import com.arcadedb.engine.TransactionManager; import com.arcadedb.engine.WALFile; import com.arcadedb.engine.WALFileFactory; @@ -130,7 +130,7 @@ private static BasicCommandContext getMockedContext() { final BasicCommandContext context = new BasicCommandContext(); context.setDatabase(new DatabaseInternal() { @Override - public TransactionContext getTransaction() { + public TransactionContext getTransactionIfExists() { return null; } @@ -320,7 +320,7 @@ public ContextConfiguration getConfiguration() { } @Override - public PaginatedFile.MODE getMode() { + public ComponentFile.MODE getMode() { return null; } diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/ParserTestAbstract.java b/engine/src/test/java/com/arcadedb/query/sql/parser/AbstractParserTest.java similarity index 93% rename from engine/src/test/java/com/arcadedb/query/sql/parser/ParserTestAbstract.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/AbstractParserTest.java index a040b21ba..b4af5d664 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/ParserTestAbstract.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/AbstractParserTest.java @@ -18,11 +18,9 @@ */ package com.arcadedb.query.sql.parser; -import java.io.*; - import static org.junit.jupiter.api.Assertions.fail; -public abstract class ParserTestAbstract { +public abstract class AbstractParserTest { protected SimpleNode checkRightSyntax(final String query) { final SimpleNode result = checkSyntax(query, true); @@ -88,8 +86,7 @@ protected SimpleNode checkSyntaxServer(final String query, final boolean isCorre } protected SqlParser getParserFor(final String string) { - final InputStream is = new ByteArrayInputStream(string.getBytes()); - final SqlParser osql = new SqlParser(null, is); + final SqlParser osql = new SqlParser(null, string); return osql; } diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/AlterBucketStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/AlterBucketStatementTestParserTest.java similarity index 93% rename from engine/src/test/java/com/arcadedb/query/sql/parser/AlterBucketStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/AlterBucketStatementTestParserTest.java index c3141bb1c..60bb5c451 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/AlterBucketStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/AlterBucketStatementTestParserTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class AlterBucketStatementTest extends ParserTestAbstract { +public class AlterBucketStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/AlterDatabaseStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/AlterDatabaseStatementTestParserTest.java similarity index 94% rename from engine/src/test/java/com/arcadedb/query/sql/parser/AlterDatabaseStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/AlterDatabaseStatementTestParserTest.java index 25093bf0f..bea5fdeb5 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/AlterDatabaseStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/AlterDatabaseStatementTestParserTest.java @@ -21,7 +21,7 @@ import com.arcadedb.GlobalConfiguration; import org.junit.jupiter.api.Test; -public class AlterDatabaseStatementTest extends ParserTestAbstract { +public class AlterDatabaseStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/AlterPropertyStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/AlterPropertyStatementTestParserTest.java similarity index 92% rename from engine/src/test/java/com/arcadedb/query/sql/parser/AlterPropertyStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/AlterPropertyStatementTestParserTest.java index bfbf46776..4595a47fc 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/AlterPropertyStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/AlterPropertyStatementTestParserTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class AlterPropertyStatementTest extends ParserTestAbstract { +public class AlterPropertyStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/BackupDatabaseStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/BackupDatabaseStatementTestParserTest.java similarity index 94% rename from engine/src/test/java/com/arcadedb/query/sql/parser/BackupDatabaseStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/BackupDatabaseStatementTestParserTest.java index 815a618dd..3413adcfa 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/BackupDatabaseStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/BackupDatabaseStatementTestParserTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class BackupDatabaseStatementTest extends ParserTestAbstract { +public class BackupDatabaseStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/BeginStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/BeginParserTestStatementTest.java similarity index 93% rename from engine/src/test/java/com/arcadedb/query/sql/parser/BeginStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/BeginParserTestStatementTest.java index 9054edcf7..1852129c9 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/BeginStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/BeginParserTestStatementTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class BeginStatementTest extends ParserTestAbstract { +public class BeginParserTestStatementTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/CheckDatabaseStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/CheckDatabaseStatementTestParserTest.java similarity index 94% rename from engine/src/test/java/com/arcadedb/query/sql/parser/CheckDatabaseStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/CheckDatabaseStatementTestParserTest.java index 49ebbbc77..413d83e5a 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/CheckDatabaseStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/CheckDatabaseStatementTestParserTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class CheckDatabaseStatementTest extends ParserTestAbstract { +public class CheckDatabaseStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/CommitStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/CommitParserTestStatementTest.java similarity index 97% rename from engine/src/test/java/com/arcadedb/query/sql/parser/CommitStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/CommitParserTestStatementTest.java index 323094b64..64ac4dfdd 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/CommitStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/CommitParserTestStatementTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class CommitStatementTest extends ParserTestAbstract { +public class CommitParserTestStatementTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/CreateBucketStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/CreateBucketStatementTestParserTest.java similarity index 93% rename from engine/src/test/java/com/arcadedb/query/sql/parser/CreateBucketStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/CreateBucketStatementTestParserTest.java index 103335ba5..3dbdba308 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/CreateBucketStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/CreateBucketStatementTestParserTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class CreateBucketStatementTest extends ParserTestAbstract { +public class CreateBucketStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/CreateIndexStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/CreateIndexStatementTestParserTest.java similarity index 81% rename from engine/src/test/java/com/arcadedb/query/sql/parser/CreateIndexStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/CreateIndexStatementTestParserTest.java index 1cf1fe0a5..ca76daa67 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/CreateIndexStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/CreateIndexStatementTestParserTest.java @@ -20,13 +20,14 @@ import org.junit.jupiter.api.Test; -public class CreateIndexStatementTest extends ParserTestAbstract { +public class CreateIndexStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { checkRightSyntax("create index `OUser.name` UNIQUE ENGINE LSM"); checkRightSyntax("create index `OUser.name` UNIQUE engine LSM"); checkRightSyntax("create index `OUser.name` IF NOT EXISTS UNIQUE engine LSM"); + checkRightSyntax("create index `OUser.name` UNIQUE ENGINE LSM METADATA {\"test\": 3}"); checkRightSyntax("CREATE INDEX on Foo (bar, baz) UNIQUE"); checkRightSyntax("CREATE INDEX on Foo (bar, @rid) UNIQUE"); @@ -36,6 +37,9 @@ public void testPlain() { checkRightSyntax("CREATE INDEX on Foo (bar, baz) UNIQUE"); checkRightSyntax("CREATE INDEX on Foo (bar by key, baz by value) UNIQUE"); checkRightSyntax("CREATE INDEX IF NOT EXISTS on Foo (bar) UNIQUE"); + checkRightSyntax("CREATE INDEX IF NOT EXISTS on Foo (bar) UNIQUE NULL_STRATEGY SKIP"); + checkRightSyntax("CREATE INDEX IF NOT EXISTS on Foo (bar) UNIQUE ENGINE LSM"); + checkRightSyntax("CREATE INDEX IF NOT EXISTS on Foo (bar) UNIQUE METADATA {\"test\": 3}"); checkWrongSyntax("CREATE INDEX `OUser.name` on Foo (bar, baz) UNIQUE"); checkWrongSyntax("CREATE INDEX Foo"); diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/CreatePropertyStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/CreatePropertyStatementTestParserTest.java similarity index 95% rename from engine/src/test/java/com/arcadedb/query/sql/parser/CreatePropertyStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/CreatePropertyStatementTestParserTest.java index 528256a19..ee22de49a 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/CreatePropertyStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/CreatePropertyStatementTestParserTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class CreatePropertyStatementTest extends ParserTestAbstract { +public class CreatePropertyStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/CreateTypeStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/CreateTypeStatementTestParserTest.java similarity index 95% rename from engine/src/test/java/com/arcadedb/query/sql/parser/CreateTypeStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/CreateTypeStatementTestParserTest.java index f54ffc5d7..60f5c39c1 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/CreateTypeStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/CreateTypeStatementTestParserTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class CreateTypeStatementTest extends ParserTestAbstract { +public class CreateTypeStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/DefineFunctionStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/DefineFunctionStatementTestParserTest.java similarity index 88% rename from engine/src/test/java/com/arcadedb/query/sql/parser/DefineFunctionStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/DefineFunctionStatementTestParserTest.java index 18df36bda..dc99500bb 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/DefineFunctionStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/DefineFunctionStatementTestParserTest.java @@ -2,7 +2,7 @@ import org.junit.jupiter.api.Test; -public class DefineFunctionStatementTest extends ParserTestAbstract { +public class DefineFunctionStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/DropBucketStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/DropBucketStatementTestParserTest.java similarity index 94% rename from engine/src/test/java/com/arcadedb/query/sql/parser/DropBucketStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/DropBucketStatementTestParserTest.java index c045b86ef..af3a4b973 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/DropBucketStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/DropBucketStatementTestParserTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class DropBucketStatementTest extends ParserTestAbstract { +public class DropBucketStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/DropIndexStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/DropIndexStatementTestParserTest.java similarity index 94% rename from engine/src/test/java/com/arcadedb/query/sql/parser/DropIndexStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/DropIndexStatementTestParserTest.java index 2c1e6fd0d..f22c8f384 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/DropIndexStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/DropIndexStatementTestParserTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class DropIndexStatementTest extends ParserTestAbstract { +public class DropIndexStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/DropPropertyStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/DropPropertyStatementTestParserTest.java similarity index 95% rename from engine/src/test/java/com/arcadedb/query/sql/parser/DropPropertyStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/DropPropertyStatementTestParserTest.java index a6bff26d4..616a8dfdf 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/DropPropertyStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/DropPropertyStatementTestParserTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class DropPropertyStatementTest extends ParserTestAbstract { +public class DropPropertyStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/DropTypeStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/DropTypeStatementTestParserTest.java similarity index 95% rename from engine/src/test/java/com/arcadedb/query/sql/parser/DropTypeStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/DropTypeStatementTestParserTest.java index 294c43b82..bd7e9fd28 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/DropTypeStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/DropTypeStatementTestParserTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class DropTypeStatementTest extends ParserTestAbstract { +public class DropTypeStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/ExplainStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/ExplainParserTestStatementTest.java similarity index 93% rename from engine/src/test/java/com/arcadedb/query/sql/parser/ExplainStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/ExplainParserTestStatementTest.java index 536a3fdc6..079003d64 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/ExplainStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/ExplainParserTestStatementTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class ExplainStatementTest extends ParserTestAbstract { +public class ExplainParserTestStatementTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/ExportDatabaseStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/ExportDatabaseStatementTestParserTest.java similarity index 94% rename from engine/src/test/java/com/arcadedb/query/sql/parser/ExportDatabaseStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/ExportDatabaseStatementTestParserTest.java index 1441540cc..df9a48da5 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/ExportDatabaseStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/ExportDatabaseStatementTestParserTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class ExportDatabaseStatementTest extends ParserTestAbstract { +public class ExportDatabaseStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/IfStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/IfParserTestStatementTest.java similarity index 95% rename from engine/src/test/java/com/arcadedb/query/sql/parser/IfStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/IfParserTestStatementTest.java index fdd0a26fc..56cdecd6c 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/IfStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/IfParserTestStatementTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class IfStatementTest extends ParserTestAbstract { +public class IfParserTestStatementTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/ImportDatabaseStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/ImportDatabaseStatementTestParserTest.java similarity index 94% rename from engine/src/test/java/com/arcadedb/query/sql/parser/ImportDatabaseStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/ImportDatabaseStatementTestParserTest.java index a1bdb7dd1..7889b91ec 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/ImportDatabaseStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/ImportDatabaseStatementTestParserTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class ImportDatabaseStatementTest extends ParserTestAbstract { +public class ImportDatabaseStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/LetStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/LetParserTestStatementTest.java similarity index 95% rename from engine/src/test/java/com/arcadedb/query/sql/parser/LetStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/LetParserTestStatementTest.java index f251c81e7..f8ffe9e8b 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/LetStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/LetParserTestStatementTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class LetStatementTest extends ParserTestAbstract { +public class LetParserTestStatementTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/PatternTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/PatternTestParserTest.java similarity index 98% rename from engine/src/test/java/com/arcadedb/query/sql/parser/PatternTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/PatternTestParserTest.java index 27d69273b..754d19433 100644 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/PatternTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/PatternTestParserTest.java @@ -24,7 +24,7 @@ import java.util.*; /** Created by luigidellaquila on 11/10/16. */ -public class PatternTest extends ParserTestAbstract { +public class PatternTestParserTest extends AbstractParserTest { @Test public void testSimplePattern() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/ProfileStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/ProfileParserTestStatementTest.java similarity index 94% rename from engine/src/test/java/com/arcadedb/query/sql/parser/ProfileStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/ProfileParserTestStatementTest.java index 5fa6161aa..ae50aa53e 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/ProfileStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/ProfileParserTestStatementTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class ProfileStatementTest extends ParserTestAbstract { +public class ProfileParserTestStatementTest extends AbstractParserTest { @Test public void test() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/RebuildIndexStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/RebuildIndexStatementTestParserTest.java similarity index 94% rename from engine/src/test/java/com/arcadedb/query/sql/parser/RebuildIndexStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/RebuildIndexStatementTestParserTest.java index cd26286c5..1f17e1c85 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/RebuildIndexStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/RebuildIndexStatementTestParserTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class RebuildIndexStatementTest extends ParserTestAbstract { +public class RebuildIndexStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/ReturnStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/ReturnParserTestStatementTest.java similarity index 94% rename from engine/src/test/java/com/arcadedb/query/sql/parser/ReturnStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/ReturnParserTestStatementTest.java index 44a60a258..303eaf80b 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/ReturnStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/ReturnParserTestStatementTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class ReturnStatementTest extends ParserTestAbstract { +public class ReturnParserTestStatementTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/RollbackStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/RollbackParserTestStatementTest.java similarity index 92% rename from engine/src/test/java/com/arcadedb/query/sql/parser/RollbackStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/RollbackParserTestStatementTest.java index 28d8aa5cc..63d8590cc 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/RollbackStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/RollbackParserTestStatementTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class RollbackStatementTest extends ParserTestAbstract { +public class RollbackParserTestStatementTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/SleepStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/SleepParserTestStatementTest.java similarity index 93% rename from engine/src/test/java/com/arcadedb/query/sql/parser/SleepStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/SleepParserTestStatementTest.java index fbd99707d..582da4a04 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/SleepStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/SleepParserTestStatementTest.java @@ -18,7 +18,7 @@ */ package com.arcadedb.query.sql.parser; -public class SleepStatementTest extends ParserTestAbstract { +public class SleepParserTestStatementTest extends AbstractParserTest { public void testPlain() { checkRightSyntax("SLEEP 100"); diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/TruncateBucketStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/TruncateBucketStatementTestParserTest.java similarity index 93% rename from engine/src/test/java/com/arcadedb/query/sql/parser/TruncateBucketStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/TruncateBucketStatementTestParserTest.java index 08514d49d..7dc140926 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/TruncateBucketStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/TruncateBucketStatementTestParserTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class TruncateBucketStatementTest extends ParserTestAbstract { +public class TruncateBucketStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/TruncateRecordStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/TruncateRecordStatementTestParserTest.java similarity index 93% rename from engine/src/test/java/com/arcadedb/query/sql/parser/TruncateRecordStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/TruncateRecordStatementTestParserTest.java index b05544efb..01b97e7eb 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/TruncateRecordStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/TruncateRecordStatementTestParserTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class TruncateRecordStatementTest extends ParserTestAbstract { +public class TruncateRecordStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/query/sql/parser/TruncateTypeStatementTest.java b/engine/src/test/java/com/arcadedb/query/sql/parser/TruncateTypeStatementTestParserTest.java similarity index 95% rename from engine/src/test/java/com/arcadedb/query/sql/parser/TruncateTypeStatementTest.java rename to engine/src/test/java/com/arcadedb/query/sql/parser/TruncateTypeStatementTestParserTest.java index 7103e8718..b186c7ca1 100755 --- a/engine/src/test/java/com/arcadedb/query/sql/parser/TruncateTypeStatementTest.java +++ b/engine/src/test/java/com/arcadedb/query/sql/parser/TruncateTypeStatementTestParserTest.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; -public class TruncateTypeStatementTest extends ParserTestAbstract { +public class TruncateTypeStatementTestParserTest extends AbstractParserTest { @Test public void testPlain() { diff --git a/engine/src/test/java/com/arcadedb/schema/DropTypeTest.java b/engine/src/test/java/com/arcadedb/schema/DropTypeTest.java index 50ccee32e..56492c5b4 100644 --- a/engine/src/test/java/com/arcadedb/schema/DropTypeTest.java +++ b/engine/src/test/java/com/arcadedb/schema/DropTypeTest.java @@ -70,7 +70,7 @@ public void testDropAndRecreateType() { // CHECK ALL THE BUCKETS ARE REMOVED for (final Bucket b : buckets) { try { - database.getSchema().getBucketById(b.getId()); + database.getSchema().getBucketById(b.getFileId()); Assertions.fail(); } catch (final SchemaException e) { } @@ -82,7 +82,7 @@ public void testDropAndRecreateType() { } try { - database.getSchema().getFileById(b.getId()); + database.getSchema().getFileById(b.getFileId()); Assertions.fail(); } catch (final SchemaException e) { } diff --git a/engine/src/test/java/com/arcadedb/serializer/SerializerTest.java b/engine/src/test/java/com/arcadedb/serializer/SerializerTest.java index 3c2964fbd..e9d8bb4e7 100644 --- a/engine/src/test/java/com/arcadedb/serializer/SerializerTest.java +++ b/engine/src/test/java/com/arcadedb/serializer/SerializerTest.java @@ -297,6 +297,61 @@ public void testListPropertiesInDocument() throws ClassNotFoundException { }); } + @Test + public void testArraysOfPrimitive() throws ClassNotFoundException { + final BinarySerializer serializer = new BinarySerializer(database.getConfiguration()); + + database.transaction(() -> { + database.getSchema().createDocumentType("Test"); + database.commit(); + + final int[] arrayOfIntegers = new int[100]; + for (int i = 0; i < 100; ++i) + arrayOfIntegers[i] = i; + + final long[] arrayOfLongs = new long[100]; + for (int i = 0; i < 100; ++i) + arrayOfLongs[i] = (long) i; + + final short[] arrayOfShorts = new short[100]; + for (int i = 0; i < 100; ++i) + arrayOfShorts[i] = (short) i; + + final float[] arrayOfFloats = new float[100]; + for (int i = 0; i < 100; ++i) + arrayOfFloats[i] = (float) i + 0.123f; + + final double[] arrayOfDoubles = new double[100]; + for (int i = 0; i < 100; ++i) + arrayOfDoubles[i] = (double) i + 0.123f; + + database.begin(); + final MutableDocument v = database.newDocument("Test"); + + v.set("arrayOfIntegers", arrayOfIntegers); + v.set("arrayOfLongs", arrayOfLongs); + v.set("arrayOfShorts", arrayOfShorts); + v.set("arrayOfFloats", arrayOfFloats); + v.set("arrayOfDoubles", arrayOfDoubles); + + final Binary buffer = serializer.serialize((DatabaseInternal) database, v); + + final ByteBuffer buffer2 = ByteBuffer.allocate(Bucket.DEF_PAGE_SIZE); + buffer2.put(buffer.toByteArray()); + buffer2.flip(); + + final Binary buffer3 = new Binary(buffer2); + buffer3.getByte(); // SKIP RECORD TYPE + final Map record2 = serializer.deserializeProperties(database, buffer3, null, null); + + Assertions.assertArrayEquals(arrayOfIntegers, (int[]) record2.get("arrayOfIntegers")); + Assertions.assertArrayEquals(arrayOfLongs, (long[]) record2.get("arrayOfLongs")); + Assertions.assertArrayEquals(arrayOfShorts, (short[]) record2.get("arrayOfShorts")); + Assertions.assertArrayEquals(arrayOfFloats, (float[]) record2.get("arrayOfFloats")); + Assertions.assertArrayEquals(arrayOfDoubles, (double[]) record2.get("arrayOfDoubles")); + }); + } + @Test public void testMapPropertiesInDocument() throws ClassNotFoundException { final BinarySerializer serializer = new BinarySerializer(database.getConfiguration()); diff --git a/engine/src/test/java/performance/PerformanceIndexCompaction.java b/engine/src/test/java/performance/PerformanceIndexCompaction.java index 18ddd36bd..86de3b9be 100644 --- a/engine/src/test/java/performance/PerformanceIndexCompaction.java +++ b/engine/src/test/java/performance/PerformanceIndexCompaction.java @@ -21,7 +21,7 @@ import com.arcadedb.GlobalConfiguration; import com.arcadedb.database.Database; import com.arcadedb.database.DatabaseFactory; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.index.Index; import com.arcadedb.index.IndexCursor; import com.arcadedb.index.IndexInternal; @@ -40,7 +40,7 @@ public static void main(final String[] args) throws Exception { private void run() throws IOException, InterruptedException { GlobalConfiguration.INDEX_COMPACTION_RAM_MB.setValue(5); - final Database database = new DatabaseFactory(PerformanceTest.DATABASE_PATH).open(PaginatedFile.MODE.READ_WRITE); + final Database database = new DatabaseFactory(PerformanceTest.DATABASE_PATH).open(ComponentFile.MODE.READ_WRITE); final long begin = System.currentTimeMillis(); try { diff --git a/engine/src/test/java/performance/PerformanceVertexIndexTest.java b/engine/src/test/java/performance/PerformanceVertexIndexTest.java index 0c35d61d3..8d70b00e3 100644 --- a/engine/src/test/java/performance/PerformanceVertexIndexTest.java +++ b/engine/src/test/java/performance/PerformanceVertexIndexTest.java @@ -24,7 +24,7 @@ import com.arcadedb.database.Document; import com.arcadedb.database.MutableDocument; import com.arcadedb.database.async.ErrorCallback; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.engine.WALFile; import com.arcadedb.index.Index; import com.arcadedb.index.IndexCursor; @@ -186,7 +186,7 @@ public void call(final Throwable exception) { } private void checkLookups(final int step) { - final Database database = new DatabaseFactory(PerformanceTest.DATABASE_PATH).open(PaginatedFile.MODE.READ_ONLY); + final Database database = new DatabaseFactory(PerformanceTest.DATABASE_PATH).open(ComponentFile.MODE.READ_ONLY); long begin = System.currentTimeMillis(); try { diff --git a/gremlin/src/test/java/com/arcadedb/gremlin/integration/exporter/GraphMLExporterIT.java b/gremlin/src/test/java/com/arcadedb/gremlin/integration/exporter/GraphMLExporterIT.java index 449690410..94be9050a 100644 --- a/gremlin/src/test/java/com/arcadedb/gremlin/integration/exporter/GraphMLExporterIT.java +++ b/gremlin/src/test/java/com/arcadedb/gremlin/integration/exporter/GraphMLExporterIT.java @@ -22,7 +22,7 @@ import com.arcadedb.database.Database; import com.arcadedb.database.DatabaseFactory; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.gremlin.ArcadeGraph; import com.arcadedb.integration.exporter.Exporter; import com.arcadedb.integration.importer.OrientDBImporter; @@ -69,7 +69,7 @@ public void testExportOK() throws Exception { Assertions.assertTrue(importedDatabaseDirectory.exists()); - try (final Database originalDatabase = new DatabaseFactory(DATABASE_PATH).open(PaginatedFile.MODE.READ_ONLY)) { + try (final Database originalDatabase = new DatabaseFactory(DATABASE_PATH).open(ComponentFile.MODE.READ_ONLY)) { Assertions.assertEquals(// originalDatabase.getSchema().getTypes().stream().map(DocumentType::getName).collect(Collectors.toSet()),// graph.getDatabase().getSchema().getTypes().stream().map(DocumentType::getName).collect(Collectors.toSet())); diff --git a/gremlin/src/test/java/com/arcadedb/gremlin/integration/exporter/GraphSONExporterIT.java b/gremlin/src/test/java/com/arcadedb/gremlin/integration/exporter/GraphSONExporterIT.java index ca6732dcc..049a0c14d 100644 --- a/gremlin/src/test/java/com/arcadedb/gremlin/integration/exporter/GraphSONExporterIT.java +++ b/gremlin/src/test/java/com/arcadedb/gremlin/integration/exporter/GraphSONExporterIT.java @@ -22,7 +22,7 @@ import com.arcadedb.database.Database; import com.arcadedb.database.DatabaseFactory; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.gremlin.ArcadeGraph; import com.arcadedb.integration.exporter.Exporter; import com.arcadedb.integration.importer.OrientDBImporter; @@ -69,7 +69,7 @@ public void testExportOK() throws Exception { Assertions.assertTrue(importedDatabaseDirectory.exists()); - try (final Database originalDatabase = new DatabaseFactory(DATABASE_PATH).open(PaginatedFile.MODE.READ_ONLY)) { + try (final Database originalDatabase = new DatabaseFactory(DATABASE_PATH).open(ComponentFile.MODE.READ_ONLY)) { Assertions.assertEquals(// originalDatabase.getSchema().getTypes().stream().map(DocumentType::getName).collect(Collectors.toSet()),// graph.getDatabase().getSchema().getTypes().stream().map(DocumentType::getName).collect(Collectors.toSet())); diff --git a/integration/src/main/java/com/arcadedb/integration/backup/format/FullBackupFormat.java b/integration/src/main/java/com/arcadedb/integration/backup/format/FullBackupFormat.java index 3c3b6d1fc..41dc443a9 100644 --- a/integration/src/main/java/com/arcadedb/integration/backup/format/FullBackupFormat.java +++ b/integration/src/main/java/com/arcadedb/integration/backup/format/FullBackupFormat.java @@ -21,7 +21,7 @@ import com.arcadedb.database.DatabaseFactory; import com.arcadedb.database.DatabaseInternal; import com.arcadedb.database.EmbeddedDatabase; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.integration.backup.BackupException; import com.arcadedb.integration.backup.BackupSettings; import com.arcadedb.integration.importer.ConsoleLogger; @@ -79,11 +79,11 @@ public void backupDatabase() throws Exception { databaseOrigSize += compressFile(zipFile, ((EmbeddedDatabase) database.getEmbedded()).getConfigurationFile()); databaseOrigSize += compressFile(zipFile, ((EmbeddedSchema) database.getSchema()).getConfigurationFile()); - final Collection files = database.getFileManager().getFiles(); + final Collection files = database.getFileManager().getFiles(); - for (final PaginatedFile paginatedFile : files) - if (paginatedFile != null) - databaseOrigSize += compressFile(zipFile, paginatedFile.getOSFile()); + for (final ComponentFile file : files) + if (file != null) + databaseOrigSize += compressFile(zipFile, file.getOSFile()); zipFile.close(); diff --git a/integration/src/main/java/com/arcadedb/integration/importer/AbstractImporter.java b/integration/src/main/java/com/arcadedb/integration/importer/AbstractImporter.java index 624ff37b1..15cc8537a 100644 --- a/integration/src/main/java/com/arcadedb/integration/importer/AbstractImporter.java +++ b/integration/src/main/java/com/arcadedb/integration/importer/AbstractImporter.java @@ -22,6 +22,7 @@ import com.arcadedb.database.DatabaseInternal; import com.arcadedb.engine.Dictionary; import com.arcadedb.engine.WALFile; +import com.arcadedb.integration.importer.format.FormatImporter; import com.arcadedb.log.LogManager; import com.arcadedb.schema.DocumentType; import com.arcadedb.schema.EdgeType; @@ -44,6 +45,7 @@ public abstract class AbstractImporter { protected Timer timer; protected boolean databaseCreatedDuringImporting = true; protected ConsoleLogger logger; + protected FormatImporter format; public AbstractImporter(final String[] args) { settings.parseParameters(args); @@ -61,51 +63,8 @@ public void setSettings(final Map parameters) { } protected void printProgress() { - if (settings.verboseLevel < 2) - return; - - try { - long deltaInSecs = (System.currentTimeMillis() - context.lastLapOn) / 1000; - if (deltaInSecs == 0) - deltaInSecs = 1; - - if (source == null || source.compressed || source.totalSize < 0) { - logger.logLine(2,// - "- Parsed %,d (%,d/sec) %,d documents (%,d/sec) %,d vertices (%,d/sec) %,d edges (%,d/sec %,d skipped) %,d linked edges (%,d/sec %,d%%) updated documents %,d (%,d%%)", -// - context.parsed.get(), ((context.parsed.get() - context.lastParsed) / deltaInSecs), context.createdDocuments.get(), - (context.createdDocuments.get() - context.lastDocuments) / deltaInSecs, context.createdVertices.get(), - (context.createdVertices.get() - context.lastVertices) / deltaInSecs, context.createdEdges.get(), - (context.createdEdges.get() - context.lastEdges) / deltaInSecs, context.skippedEdges.get(), context.linkedEdges.get(), - (context.linkedEdges.get() - context.lastLinkedEdges) / deltaInSecs, - context.createdEdges.get() > 0 ? (int) (context.linkedEdges.get() * 100 / context.createdEdges.get()) : 0,// - context.updatedDocuments.get(), - context.documentsWithLinksToUpdate.get() > 0 ? (int) (context.updatedDocuments.get() * 100 / context.documentsWithLinksToUpdate.get()) : 0); - } else { - final int progressPerc = (int) (parser.getPosition() * 100 / source.totalSize); - logger.logLine(2,// - "Parsed %,d (%,d/sec %,d%%) %,d records (%,d/sec) %,d vertices (%,d/sec) %,d edges (%,d/sec %,d skipped) %,d linked edges (%,d/sec %,d%%) updated documents %,d (%,d%%)", - context.parsed.get(), ((context.parsed.get() - context.lastParsed) / deltaInSecs), progressPerc, context.createdDocuments.get(), - (context.createdDocuments.get() - context.lastDocuments) / deltaInSecs, context.createdVertices.get(), - (context.createdVertices.get() - context.lastVertices) / deltaInSecs, context.createdEdges.get(), - (context.createdEdges.get() - context.lastEdges) / deltaInSecs, context.skippedEdges.get(), context.linkedEdges.get(), - (context.linkedEdges.get() - context.lastLinkedEdges) / deltaInSecs, - context.createdEdges.get() > 0 ? (int) (context.linkedEdges.get() * 100 / context.createdEdges.get()) : 0,// - context.updatedDocuments.get(), - context.documentsWithLinksToUpdate.get() > 0 ? (int) (context.updatedDocuments.get() * 100 / context.documentsWithLinksToUpdate.get()) : 0); - - } - context.lastLapOn = System.currentTimeMillis(); - context.lastParsed = context.parsed.get(); - - context.lastDocuments = context.createdDocuments.get(); - context.lastVertices = context.createdVertices.get(); - context.lastEdges = context.createdEdges.get(); - context.lastLinkedEdges = context.linkedEdges.get(); - - } catch (final Exception e) { - logger.errorLine("Error on print statistics: " + e.getMessage()); - } + if (format != null) + format.printProgress(settings, context, source, parser, logger); } protected void startImporting() { diff --git a/integration/src/main/java/com/arcadedb/integration/importer/Importer.java b/integration/src/main/java/com/arcadedb/integration/importer/Importer.java index aa058539e..1706b621e 100644 --- a/integration/src/main/java/com/arcadedb/integration/importer/Importer.java +++ b/integration/src/main/java/com/arcadedb/integration/importer/Importer.java @@ -78,7 +78,7 @@ protected void loadFromSource(final String url, AnalyzedEntity.ENTITY_TYPE entit return; final SourceDiscovery sourceDiscovery = new SourceDiscovery(url); - final SourceSchema sourceSchema = sourceDiscovery.getSchema(settings, entityType, analyzedSchema); + final SourceSchema sourceSchema = sourceDiscovery.getSchema(settings, entityType, analyzedSchema, logger); if (sourceSchema == null) { //LogManager.instance().log(this, Level.WARNING, "XML importing aborted because unable to determine the schema"); return; @@ -90,7 +90,9 @@ protected void loadFromSource(final String url, AnalyzedEntity.ENTITY_TYPE entit parser = new Parser(source, 0); parser.reset(); - sourceSchema.getContentImporter().load(sourceSchema, entityType, parser, database, context, settings); + format = sourceSchema.getContentImporter(); + + format.load(sourceSchema, entityType, parser, database, context, settings); } protected void closeDatabase() { diff --git a/integration/src/main/java/com/arcadedb/integration/importer/SourceDiscovery.java b/integration/src/main/java/com/arcadedb/integration/importer/SourceDiscovery.java index a094d8827..843c45d17 100644 --- a/integration/src/main/java/com/arcadedb/integration/importer/SourceDiscovery.java +++ b/integration/src/main/java/com/arcadedb/integration/importer/SourceDiscovery.java @@ -20,10 +20,12 @@ import com.arcadedb.integration.importer.format.CSVImporterFormat; import com.arcadedb.integration.importer.format.FormatImporter; +import com.arcadedb.integration.importer.format.GloVeImporterFormat; import com.arcadedb.integration.importer.format.JSONImporterFormat; import com.arcadedb.integration.importer.format.Neo4jImporterFormat; import com.arcadedb.integration.importer.format.OrientDBImporterFormat; import com.arcadedb.integration.importer.format.RDFImporterFormat; +import com.arcadedb.integration.importer.format.Word2VecImporterFormat; import com.arcadedb.integration.importer.format.XMLImporterFormat; import com.arcadedb.log.LogManager; import com.arcadedb.utility.FileUtils; @@ -49,15 +51,15 @@ public SourceDiscovery(final String url) { this.url = url; } - public SourceSchema getSchema(final ImporterSettings settings, final AnalyzedEntity.ENTITY_TYPE entityType, final AnalyzedSchema analyzedSchema) - throws IOException { + public SourceSchema getSchema(final ImporterSettings settings, final AnalyzedEntity.ENTITY_TYPE entityType, final AnalyzedSchema analyzedSchema, + final ConsoleLogger logger) throws IOException { LogManager.instance().log(this, Level.INFO, "Analyzing url: %s...", url); final Source source = getSource(); final Parser parser = new Parser(source, 0); - final FormatImporter formatImporter = analyzeSourceContent(parser, entityType, settings); + final FormatImporter formatImporter = analyzeSourceContent(parser, entityType, settings, logger); parser.reset(); SourceSchema sourceSchema = null; @@ -168,8 +170,8 @@ else if (source.inputStream instanceof ZipInputStream) { }); } - private FormatImporter analyzeSourceContent(final Parser parser, final AnalyzedEntity.ENTITY_TYPE entityType, final ImporterSettings settings) - throws IOException { + private FormatImporter analyzeSourceContent(final Parser parser, final AnalyzedEntity.ENTITY_TYPE entityType, final ImporterSettings settings, + final ConsoleLogger logger) throws IOException { String knownFileType = null; String knownDelimiter = null; @@ -249,51 +251,79 @@ private FormatImporter analyzeSourceContent(final Parser parser, final AnalyzedE // SKIP COMMENTS '//' IF ANY parser.reset(); - while (parser.getCurrentChar() == '/' && parser.nextChar() == '/') { - skipLine(parser); - format = analyzeChar(parser, settings); - if (format != null) - return format; - } - - // CHECK FOR CSV-LIKE FILES - final Map candidateSeparators = new HashMap<>(); - - while (parser.isAvailable() && parser.nextChar() != '\n') { - final char c = parser.getCurrentChar(); - if (!Character.isLetterOrDigit(c)) { - final AtomicInteger sep = candidateSeparators.get(c); - if (sep == null) { - candidateSeparators.put(c, new AtomicInteger(1)); - } else - sep.incrementAndGet(); + try { + while (parser.getCurrentChar() == '/' && parser.nextChar() == '/') { + skipLine(parser); + format = analyzeChar(parser, settings); + if (format != null) + return format; } - } - if (!candidateSeparators.isEmpty()) { - // EXCLUDE SPACE IF OTHER DELIMITERS ARE PRESENT - if (candidateSeparators.size() > 1) - candidateSeparators.remove(' '); + // CHECK FOR CSV-LIKE FILES + final Map candidateSeparators = new HashMap<>(); - final ArrayList> list = new ArrayList(candidateSeparators.entrySet()); - list.sort((o1, o2) -> { - if (o1.getValue().get() == o2.getValue().get()) - return 0; - return o1.getValue().get() < o2.getValue().get() ? 1 : -1; - }); + final StringBuilder line = new StringBuilder(); + while (parser.isAvailable() && parser.nextChar() != '\n') { + final char c = parser.getCurrentChar(); + line.append(c); - final Map.Entry bestSeparator = list.get(0); + if (isSeparator(c)) { + final AtomicInteger sep = candidateSeparators.get(c); + if (sep == null) { + candidateSeparators.put(c, new AtomicInteger(1)); + } else + sep.incrementAndGet(); + } + } - LogManager.instance().log(this, Level.INFO, "Best separator candidate='%s' (all candidates=%s)", bestSeparator.getKey(), list); + if (!candidateSeparators.isEmpty()) { + final ArrayList> list = new ArrayList(candidateSeparators.entrySet()); + list.sort((o1, o2) -> { + if (o1.getValue().get() == o2.getValue().get()) + return 0; + return o1.getValue().get() < o2.getValue().get() ? 1 : -1; + }); + + final Map.Entry bestSeparator = list.get(0); + + if (bestSeparator.getKey() == ' ') { + // CHECK IF IS A VECTOR EMBEDDING TEXT FILE + final StringBuilder line2 = new StringBuilder(); + while (parser.isAvailable() && parser.nextChar() != '\n') + line2.append(parser.getCurrentChar()); + + final String[] fields1 = line.toString().split(" "); + final String[] fields2 = line2.toString().split(" "); + + if (fields1.length == 2 && fields2.length > 2) + format = new Word2VecImporterFormat(); + else if (fields1.length == fields2.length) + format = new GloVeImporterFormat(); + } - settings.options.put("delimiter", "" + bestSeparator.getKey()); - return new CSVImporterFormat(); + if (format == null) { + LogManager.instance().log(this, Level.INFO, "Best separator candidate='%s' (all candidates=%s)", bestSeparator.getKey(), list); + settings.options.put("delimiter", "" + bestSeparator.getKey()); + format = new CSVImporterFormat(); + } + } + + } finally { + if (format != null) + logger.logLine(1, "Recognized format %s", format.getFormat()); } + if (format != null) + return format; + // UNKNOWN throw new ImportException("Cannot determine the file type. If it is a CSV file, please specify the header via settings"); } + private boolean isSeparator(final char c) { + return c == ' ' || c == '\t' || c == ',' || c == '|' || c == '-' || c == '_'; + } + private String getFileTypeByExtension(final String fileName) { switch (getFormatFromExtension(fileName)) { case "csv": @@ -354,7 +384,9 @@ private FormatImporter analyzeChar(final Parser parser, final ImporterSettings s } } - return new XMLImporterFormat(); + if (delimiters.size() <= 1) + return new XMLImporterFormat(); + } else if (currentChar == '{') { final StringBuilder buffer = new StringBuilder(); diff --git a/integration/src/main/java/com/arcadedb/integration/importer/format/FormatImporter.java b/integration/src/main/java/com/arcadedb/integration/importer/format/FormatImporter.java index 1f2ea3446..f57114863 100644 --- a/integration/src/main/java/com/arcadedb/integration/importer/format/FormatImporter.java +++ b/integration/src/main/java/com/arcadedb/integration/importer/format/FormatImporter.java @@ -21,19 +21,69 @@ import com.arcadedb.database.DatabaseInternal; import com.arcadedb.integration.importer.AnalyzedEntity; import com.arcadedb.integration.importer.AnalyzedSchema; +import com.arcadedb.integration.importer.ConsoleLogger; import com.arcadedb.integration.importer.ImporterContext; import com.arcadedb.integration.importer.ImporterSettings; import com.arcadedb.integration.importer.Parser; +import com.arcadedb.integration.importer.Source; import com.arcadedb.integration.importer.SourceSchema; import java.io.*; public interface FormatImporter { - void load(SourceSchema sourceSchema, AnalyzedEntity.ENTITY_TYPE entityType, Parser parser, DatabaseInternal database, - ImporterContext context, ImporterSettings settings) throws IOException; + void load(SourceSchema sourceSchema, AnalyzedEntity.ENTITY_TYPE entityType, Parser parser, DatabaseInternal database, ImporterContext context, + ImporterSettings settings) throws IOException; - SourceSchema analyze(AnalyzedEntity.ENTITY_TYPE entityType, Parser parser, ImporterSettings settings, AnalyzedSchema analyzedSchema) - throws IOException; + SourceSchema analyze(AnalyzedEntity.ENTITY_TYPE entityType, Parser parser, ImporterSettings settings, AnalyzedSchema analyzedSchema) throws IOException; String getFormat(); + + default void printProgress(final ImporterSettings settings, final ImporterContext context, final Source source, final Parser parser, + final ConsoleLogger logger) { + if (settings.verboseLevel < 2) + return; + + try { + long deltaInSecs = (System.currentTimeMillis() - context.lastLapOn) / 1000; + if (deltaInSecs == 0) + deltaInSecs = 1; + + if (source == null || source.compressed || source.totalSize < 0) { + logger.logLine(2,// + "- Parsed %,d (%,d/sec) %,d documents (%,d/sec) %,d vertices (%,d/sec) %,d edges (%,d/sec %,d skipped) %,d linked edges (%,d/sec %,d%%) updated documents %,d (%,d%%)", +// + context.parsed.get(), ((context.parsed.get() - context.lastParsed) / deltaInSecs), context.createdDocuments.get(), + (context.createdDocuments.get() - context.lastDocuments) / deltaInSecs, context.createdVertices.get(), + (context.createdVertices.get() - context.lastVertices) / deltaInSecs, context.createdEdges.get(), + (context.createdEdges.get() - context.lastEdges) / deltaInSecs, context.skippedEdges.get(), context.linkedEdges.get(), + (context.linkedEdges.get() - context.lastLinkedEdges) / deltaInSecs, + context.createdEdges.get() > 0 ? (int) (context.linkedEdges.get() * 100 / context.createdEdges.get()) : 0,// + context.updatedDocuments.get(), + context.documentsWithLinksToUpdate.get() > 0 ? (int) (context.updatedDocuments.get() * 100 / context.documentsWithLinksToUpdate.get()) : 0); + } else { + final int progressPerc = (int) (parser.getPosition() * 100 / source.totalSize); + logger.logLine(2,// + "Parsed %,d (%,d/sec %,d%%) %,d records (%,d/sec) %,d vertices (%,d/sec) %,d edges (%,d/sec %,d skipped) %,d linked edges (%,d/sec %,d%%) updated documents %,d (%,d%%)", + context.parsed.get(), ((context.parsed.get() - context.lastParsed) / deltaInSecs), progressPerc, context.createdDocuments.get(), + (context.createdDocuments.get() - context.lastDocuments) / deltaInSecs, context.createdVertices.get(), + (context.createdVertices.get() - context.lastVertices) / deltaInSecs, context.createdEdges.get(), + (context.createdEdges.get() - context.lastEdges) / deltaInSecs, context.skippedEdges.get(), context.linkedEdges.get(), + (context.linkedEdges.get() - context.lastLinkedEdges) / deltaInSecs, + context.createdEdges.get() > 0 ? (int) (context.linkedEdges.get() * 100 / context.createdEdges.get()) : 0,// + context.updatedDocuments.get(), + context.documentsWithLinksToUpdate.get() > 0 ? (int) (context.updatedDocuments.get() * 100 / context.documentsWithLinksToUpdate.get()) : 0); + + } + context.lastLapOn = System.currentTimeMillis(); + context.lastParsed = context.parsed.get(); + + context.lastDocuments = context.createdDocuments.get(); + context.lastVertices = context.createdVertices.get(); + context.lastEdges = context.createdEdges.get(); + context.lastLinkedEdges = context.linkedEdges.get(); + + } catch (final Exception e) { + logger.errorLine("Error on print statistics: " + e.getMessage()); + } + } } diff --git a/integration/src/main/java/com/arcadedb/integration/importer/format/GloVeImporterFormat.java b/integration/src/main/java/com/arcadedb/integration/importer/format/GloVeImporterFormat.java new file mode 100644 index 000000000..d6988f307 --- /dev/null +++ b/integration/src/main/java/com/arcadedb/integration/importer/format/GloVeImporterFormat.java @@ -0,0 +1,75 @@ +/* + * Copyright © 2021-present Arcade Data Ltd (info@arcadedata.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-FileCopyrightText: 2021-present Arcade Data Ltd (info@arcadedata.com) + * SPDX-License-Identifier: Apache-2.0 + */ +package com.arcadedb.integration.importer.format; + +import com.arcadedb.database.DatabaseInternal; +import com.arcadedb.integration.importer.AnalyzedEntity; +import com.arcadedb.integration.importer.AnalyzedSchema; +import com.arcadedb.integration.importer.ConsoleLogger; +import com.arcadedb.integration.importer.ImportException; +import com.arcadedb.integration.importer.ImporterContext; +import com.arcadedb.integration.importer.ImporterSettings; +import com.arcadedb.integration.importer.Parser; +import com.arcadedb.integration.importer.Source; +import com.arcadedb.integration.importer.SourceSchema; +import com.arcadedb.integration.importer.vector.TextEmbeddingsImporter; + +import java.io.*; + +/** + * Imports GloVe text embedding format. + * + * @author Luca Garulli (l.garulli@arcadedata.com) + */ +public class GloVeImporterFormat extends AbstractImporterFormat { + private TextEmbeddingsImporter importer; + + @Override + public void load(final SourceSchema sourceSchema, final AnalyzedEntity.ENTITY_TYPE entityType, final Parser parser, final DatabaseInternal database, + final ImporterContext context, final ImporterSettings settings) throws ImportException { + + context.parsed.set(0); + + try { + importer = new TextEmbeddingsImporter(database, parser.getSource().inputStream, settings).setContext(context); + importer.run(); + + } catch (final Exception e) { + throw new ImportException("Error on importing GloVe datasource", e); + } + } + + @Override + public SourceSchema analyze(final AnalyzedEntity.ENTITY_TYPE entityType, final Parser parser, final ImporterSettings settings, + final AnalyzedSchema analyzedSchema) throws IOException { + return new SourceSchema(this, parser.getSource(), analyzedSchema); + } + + @Override + public void printProgress(final ImporterSettings settings, final ImporterContext context, final Source source, final Parser parser, + final ConsoleLogger logger) { + if (importer != null) + importer.printProgress(); + } + + @Override + public String getFormat() { + return "GloVe"; + } +} diff --git a/integration/src/main/java/com/arcadedb/integration/importer/format/Word2VecImporterFormat.java b/integration/src/main/java/com/arcadedb/integration/importer/format/Word2VecImporterFormat.java new file mode 100644 index 000000000..44da7c465 --- /dev/null +++ b/integration/src/main/java/com/arcadedb/integration/importer/format/Word2VecImporterFormat.java @@ -0,0 +1,77 @@ +/* + * Copyright © 2021-present Arcade Data Ltd (info@arcadedata.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-FileCopyrightText: 2021-present Arcade Data Ltd (info@arcadedata.com) + * SPDX-License-Identifier: Apache-2.0 + */ +package com.arcadedb.integration.importer.format; + +import com.arcadedb.database.DatabaseInternal; +import com.arcadedb.integration.importer.AnalyzedEntity; +import com.arcadedb.integration.importer.AnalyzedSchema; +import com.arcadedb.integration.importer.ConsoleLogger; +import com.arcadedb.integration.importer.ImportException; +import com.arcadedb.integration.importer.ImporterContext; +import com.arcadedb.integration.importer.ImporterSettings; +import com.arcadedb.integration.importer.Parser; +import com.arcadedb.integration.importer.Source; +import com.arcadedb.integration.importer.SourceSchema; +import com.arcadedb.integration.importer.vector.TextEmbeddingsImporter; + +import java.io.*; + +/** + * Imports Word2Vec text embedding format. + * + * @author Luca Garulli (l.garulli@arcadedata.com) + */ +public class Word2VecImporterFormat extends AbstractImporterFormat { + private TextEmbeddingsImporter importer; + + @Override + public void load(final SourceSchema sourceSchema, final AnalyzedEntity.ENTITY_TYPE entityType, final Parser parser, final DatabaseInternal database, + final ImporterContext context, final ImporterSettings settings) throws ImportException { + + context.parsed.set(0); + + try { + settings.documentsSkipEntries = 1L; // SKIP 1ST LINE + importer = new TextEmbeddingsImporter(database, parser.getSource().inputStream, settings).setContext(context); + importer.run(); + + } catch (final Exception e) { + throw new ImportException("Error on importing Word2Vec datasource", e); + } + } + + @Override + public SourceSchema analyze(final AnalyzedEntity.ENTITY_TYPE entityType, final Parser parser, final ImporterSettings settings, + final AnalyzedSchema analyzedSchema) throws IOException { + parser.reset(); + + return new SourceSchema(this, parser.getSource(), analyzedSchema); + } + + @Override + public void printProgress(ImporterSettings settings, ImporterContext context, Source source, Parser parser, ConsoleLogger logger) { + if (importer != null) + importer.printProgress(); + } + + @Override + public String getFormat() { + return "Word2Vec"; + } +} diff --git a/integration/src/main/java/com/arcadedb/integration/importer/vector/TextDoublesEmbedding.java b/integration/src/main/java/com/arcadedb/integration/importer/vector/TextDoublesEmbedding.java new file mode 100644 index 000000000..2419ffe27 --- /dev/null +++ b/integration/src/main/java/com/arcadedb/integration/importer/vector/TextDoublesEmbedding.java @@ -0,0 +1,56 @@ +/* + * Copyright 2023 Arcade Data Ltd + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package com.arcadedb.integration.importer.vector; + +import com.github.jelmerk.knn.Item; + +import java.util.*; + +public class TextDoublesEmbedding implements Item { + private final String id; + private final double[] vector; + + public TextDoublesEmbedding(String id, double[] vector) { + this.id = id; + this.vector = vector; + } + + @Override + public String id() { + return id; + } + + @Override + public double[] vector() { + return vector; + } + + @Override + public int dimensions() { + return vector.length; + } + + @Override + public String toString() { + return "IndexedText{" + "id='" + id + '\'' + ", vector=" + Arrays.toString(vector) + '}'; + } +} diff --git a/integration/src/main/java/com/arcadedb/integration/importer/vector/TextEmbeddingsImporter.java b/integration/src/main/java/com/arcadedb/integration/importer/vector/TextEmbeddingsImporter.java new file mode 100644 index 000000000..bc0d2f73e --- /dev/null +++ b/integration/src/main/java/com/arcadedb/integration/importer/vector/TextEmbeddingsImporter.java @@ -0,0 +1,288 @@ +/* + * Copyright 2023 Arcade Data Ltd + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package com.arcadedb.integration.importer.vector; + +import com.arcadedb.database.Database; +import com.arcadedb.database.DatabaseFactory; +import com.arcadedb.database.DatabaseInternal; +import com.arcadedb.index.vector.HnswVectorIndexRAM; +import com.arcadedb.index.vector.VectorUtils; +import com.arcadedb.index.vector.distance.DistanceFunctionFactory; +import com.arcadedb.integration.importer.ConsoleLogger; +import com.arcadedb.integration.importer.ImporterContext; +import com.arcadedb.integration.importer.ImporterSettings; +import com.arcadedb.schema.Type; +import com.arcadedb.utility.DateUtils; +import com.github.jelmerk.knn.DistanceFunction; +import com.github.jelmerk.knn.Item; + +import java.io.*; +import java.util.*; +import java.util.stream.*; + +/** + * Imports Embeddings in arbitrary dimensions. + * + * @author Luca Garulli (l.garulli@arcadedata.com) + */ +public class TextEmbeddingsImporter { + private final InputStream inputStream; + private final ImporterSettings settings; + private final ConsoleLogger logger; + private int m = 16; + private int ef = 256; + private int efConstruction = 256; + private boolean normalizeVectors = false; + private String databasePath; + private boolean overwriteDatabase = false; + private long errors = 0L; + private long warnings = 0L; + private DatabaseFactory factory; + private Database database; + private long beginTime; + private boolean error = false; + private ImporterContext context = new ImporterContext(); + private String vectorTypeName = "Float"; + private String distanceFunctionName = "InnerProduct"; + private String vectorPropertyName = "vector"; + private String idPropertyName = "name"; + private volatile long embeddingsParsed = 0L; + private volatile long indexedEmbedding = 0L; + private volatile long verticesCreated = 0L; + private volatile long verticesConnected = 0L; + + public class IndexedText implements Item { + private final String id; + private final float[] vector; + + public IndexedText(String id, float[] vector) { + this.id = id; + this.vector = vector; + } + + @Override + public String id() { + return id; + } + + @Override + public float[] vector() { + return vector; + } + + @Override + public int dimensions() { + return vector.length; + } + + @Override + public String toString() { + return "IndexedText{" + "id='" + id + '\'' + ", vector=" + Arrays.toString(vector) + '}'; + } + } + + public TextEmbeddingsImporter(final DatabaseInternal database, final InputStream inputStream, final ImporterSettings settings) throws ClassNotFoundException { + this.settings = settings; + this.database = database; + this.databasePath = database.getDatabasePath(); + this.inputStream = inputStream; + this.logger = new ConsoleLogger(settings.verboseLevel); + + if (settings.options.containsKey("distanceFunction")) { + this.distanceFunctionName = settings.options.get("distanceFunction"); + this.distanceFunctionName = Character.toUpperCase(this.distanceFunctionName.charAt(0)) + this.distanceFunctionName.substring(1).toLowerCase(); + } + + if (settings.options.containsKey("vectorType")) { + this.vectorTypeName = settings.options.get("vectorType"); + // USE CAMEL CASE FOR THE VECTOR TYPE + this.vectorTypeName = Character.toUpperCase(this.vectorTypeName.charAt(0)) + this.vectorTypeName.substring(1).toLowerCase(); + } + + if (settings.options.containsKey("vectorProperty")) + this.vectorPropertyName = settings.options.get("vectorProperty"); + + if (settings.options.containsKey("idProperty")) + this.idPropertyName = settings.options.get("idProperty"); + + if (settings.options.containsKey("m")) + this.m = Integer.parseInt(settings.options.get("m")); + + if (settings.options.containsKey("ef")) + this.ef = Integer.parseInt(settings.options.get("ef")); + + if (settings.options.containsKey("efConstruction")) + this.efConstruction = Integer.parseInt(settings.options.get("efConstruction")); + + if (settings.options.containsKey("normalizeVectors")) + this.normalizeVectors = Boolean.parseBoolean(settings.options.get("normalizeVectors")); + } + + public Database run() throws IOException, ClassNotFoundException, InterruptedException { + if (!createDatabase()) + return null; + + final DistanceFunction distanceFunction = DistanceFunctionFactory.getImplementationByName(vectorTypeName + distanceFunctionName); + + beginTime = System.currentTimeMillis(); + + final List texts = loadFromFile(); + + if (settings.documentsSkipEntries != null) { + for (int i = 0; i < settings.documentsSkipEntries; i++) + texts.remove(0); + } + + if (!texts.isEmpty()) { + final int dimensions = texts.get(1).dimensions(); + + logger.logLine(2, "- Parsed %,d embeddings with %,d dimensions in RAM", texts.size(), dimensions); + + final HnswVectorIndexRAM hnswIndex = HnswVectorIndexRAM.newBuilder(dimensions, distanceFunction, texts.size()) + .withM(m).withEf(ef).withEfConstruction(efConstruction).build(); + + hnswIndex.addAll(texts, Runtime.getRuntime().availableProcessors(), (workDone, max) -> ++indexedEmbedding, 1); + + Type vectorPropertyType; + + if (vectorTypeName.equals("Short")) + vectorPropertyType = Type.ARRAY_OF_SHORTS; + else if (vectorTypeName.equals("Integer")) + vectorPropertyType = Type.ARRAY_OF_INTEGERS; + else if (vectorTypeName.equals("Long")) + vectorPropertyType = Type.ARRAY_OF_LONGS; + else if (vectorTypeName.equals("Float")) + vectorPropertyType = Type.ARRAY_OF_FLOATS; + else if (vectorTypeName.equals("Double")) + vectorPropertyType = Type.ARRAY_OF_DOUBLES; + else + throw new IllegalArgumentException("Type '" + vectorTypeName + "' not supported"); + + hnswIndex.createPersistentIndex(database)// + .withVertexType(settings.vertexTypeName).withEdgeType(settings.edgeTypeName).withVectorProperty(vectorPropertyName, vectorPropertyType) + .withIdProperty(idPropertyName).withVertexCreationCallback((record, total) -> ++verticesCreated)// + .withCallback((record, total) -> ++verticesConnected)// + .create(); + } + + logger.logLine(1, "***************************************************************************************************"); + logger.logLine(1, "Import of Text Embeddings database completed in %s with %,d errors and %,d warnings.", + DateUtils.formatElapsed((System.currentTimeMillis() - beginTime)), errors, warnings); + logger.logLine(1, "\nSUMMARY\n"); + logger.logLine(1, "- Embeddings.................................: %,d", texts.size()); + logger.logLine(1, "***************************************************************************************************"); + logger.logLine(1, ""); + + if (database != null) { + logger.logLine(1, "NOTES:"); + logger.logLine(1, "- you can find your new ArcadeDB database in '" + database.getDatabasePath() + "'"); + } + + return database; + } + + public void printProgress() { + float progressPerc = 0F; + if (verticesConnected > 0) + progressPerc = 40F + (verticesConnected * 60F / embeddingsParsed); // 60% OF THE TOTAL PROCESS + else if (verticesCreated > 0) + progressPerc = 10F + (verticesCreated * 30F / embeddingsParsed); // 30% OF THE TOTAL PROCESS + else if (indexedEmbedding > 0) + progressPerc = indexedEmbedding * 10F / embeddingsParsed; // 10% OF THE TOTAL PROCESS + + String result = String.format("- %.2f%%", progressPerc); + + if (embeddingsParsed > 0) + result += String.format(" - %,d embeddings parsed", embeddingsParsed); + if (indexedEmbedding > 0) + result += String.format(" - %,d embeddings indexed", indexedEmbedding); + if (verticesCreated > 0) + result += String.format(" - %,d vertices created", verticesCreated); + if (verticesConnected > 0) + result += String.format(" - %,d vertices connected", verticesConnected); + + result += " (elapsed " + DateUtils.formatElapsed(System.currentTimeMillis() - beginTime) + ")"; + + logger.logLine(2, result); + } + + private boolean createDatabase() { + if (database == null) { + factory = new DatabaseFactory(databasePath); + if (factory.exists()) { + if (!overwriteDatabase) { + logger.errorLine("Database already exists on path '%s'", databasePath); + ++errors; + return false; + } else { + database = factory.open(); + logger.errorLine("Found existent database at '%s', dropping it and recreate a new one", databasePath); + database.drop(); + } + } + + // CREATE THE DATABASE + database = factory.create(); + } + return true; + } + + public boolean isError() { + return error; + } + + public ImporterContext getContext() { + return context; + } + + public TextEmbeddingsImporter setContext(final ImporterContext context) { + this.context = context; + return this; + } + + private List loadFromFile() throws IOException { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) { + final Stream parser = reader.lines(); + + if (settings.parsingLimitEntries > 0) + parser.limit(settings.parsingLimitEntries); + + return parser.map(line -> { + ++embeddingsParsed; + + String[] tokens = line.split(" "); + + String word = tokens[0]; + + float[] vector = new float[tokens.length - 1]; + for (int i = 1; i < tokens.length - 1; i++) { + vector[i] = Float.parseFloat(tokens[i]); + } + + if (normalizeVectors) + // FOR INNER PRODUCT SEARCH NORMALIZE VECTORS + vector = VectorUtils.normalize(vector); + + return new IndexedText(word, vector); + }).collect(Collectors.toList()); + } + } +} diff --git a/integration/src/main/java/com/arcadedb/integration/importer/vector/TextFloatsEmbedding.java b/integration/src/main/java/com/arcadedb/integration/importer/vector/TextFloatsEmbedding.java new file mode 100644 index 000000000..9c8771d1a --- /dev/null +++ b/integration/src/main/java/com/arcadedb/integration/importer/vector/TextFloatsEmbedding.java @@ -0,0 +1,56 @@ +/* + * Copyright 2023 Arcade Data Ltd + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package com.arcadedb.integration.importer.vector; + +import com.github.jelmerk.knn.Item; + +import java.util.*; + +public class TextFloatsEmbedding implements Item { + private final String id; + private final float[] vector; + + public TextFloatsEmbedding(String id, float[] vector) { + this.id = id; + this.vector = vector; + } + + @Override + public String id() { + return id; + } + + @Override + public float[] vector() { + return vector; + } + + @Override + public int dimensions() { + return vector.length; + } + + @Override + public String toString() { + return "IndexedText{" + "id='" + id + '\'' + ", vector=" + Arrays.toString(vector) + '}'; + } +} diff --git a/integration/src/main/java/com/arcadedb/integration/importer/vector/TextIntegersEmbedding.java b/integration/src/main/java/com/arcadedb/integration/importer/vector/TextIntegersEmbedding.java new file mode 100644 index 000000000..3e92ec6f3 --- /dev/null +++ b/integration/src/main/java/com/arcadedb/integration/importer/vector/TextIntegersEmbedding.java @@ -0,0 +1,56 @@ +/* + * Copyright 2023 Arcade Data Ltd + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package com.arcadedb.integration.importer.vector; + +import com.github.jelmerk.knn.Item; + +import java.util.*; + +public class TextIntegersEmbedding implements Item { + private final String id; + private final int[] vector; + + public TextIntegersEmbedding(String id, int[] vector) { + this.id = id; + this.vector = vector; + } + + @Override + public String id() { + return id; + } + + @Override + public int[] vector() { + return vector; + } + + @Override + public int dimensions() { + return vector.length; + } + + @Override + public String toString() { + return "IndexedText{" + "id='" + id + '\'' + ", vector=" + Arrays.toString(vector) + '}'; + } +} diff --git a/integration/src/main/java/com/arcadedb/integration/importer/vector/TextLongsEmbedding.java b/integration/src/main/java/com/arcadedb/integration/importer/vector/TextLongsEmbedding.java new file mode 100644 index 000000000..bfcabf77d --- /dev/null +++ b/integration/src/main/java/com/arcadedb/integration/importer/vector/TextLongsEmbedding.java @@ -0,0 +1,56 @@ +/* + * Copyright 2023 Arcade Data Ltd + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package com.arcadedb.integration.importer.vector; + +import com.github.jelmerk.knn.Item; + +import java.util.*; + +public class TextLongsEmbedding implements Item { + private final String id; + private final long[] vector; + + public TextLongsEmbedding(String id, long[] vector) { + this.id = id; + this.vector = vector; + } + + @Override + public String id() { + return id; + } + + @Override + public long[] vector() { + return vector; + } + + @Override + public int dimensions() { + return vector.length; + } + + @Override + public String toString() { + return "IndexedText{" + "id='" + id + '\'' + ", vector=" + Arrays.toString(vector) + '}'; + } +} diff --git a/integration/src/main/java/com/arcadedb/integration/importer/vector/TextShortsEmbedding.java b/integration/src/main/java/com/arcadedb/integration/importer/vector/TextShortsEmbedding.java new file mode 100644 index 000000000..997334bb5 --- /dev/null +++ b/integration/src/main/java/com/arcadedb/integration/importer/vector/TextShortsEmbedding.java @@ -0,0 +1,56 @@ +/* + * Copyright 2023 Arcade Data Ltd + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package com.arcadedb.integration.importer.vector; + +import com.github.jelmerk.knn.Item; + +import java.util.*; + +public class TextShortsEmbedding implements Item { + private final String id; + private final short[] vector; + + public TextShortsEmbedding(String id, short[] vector) { + this.id = id; + this.vector = vector; + } + + @Override + public String id() { + return id; + } + + @Override + public short[] vector() { + return vector; + } + + @Override + public int dimensions() { + return vector.length; + } + + @Override + public String toString() { + return "IndexedText{" + "id='" + id + '\'' + ", vector=" + Arrays.toString(vector) + '}'; + } +} diff --git a/integration/src/test/java/com/arcadedb/integration/backup/FullBackupIT.java b/integration/src/test/java/com/arcadedb/integration/backup/FullBackupIT.java index 6791ea5b0..0b3270ad4 100644 --- a/integration/src/test/java/com/arcadedb/integration/backup/FullBackupIT.java +++ b/integration/src/test/java/com/arcadedb/integration/backup/FullBackupIT.java @@ -24,7 +24,7 @@ import com.arcadedb.database.Document; import com.arcadedb.database.bucketselectionstrategy.ThreadBucketSelectionStrategy; import com.arcadedb.engine.Bucket; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.graph.MutableVertex; import com.arcadedb.integration.TestHelper; import com.arcadedb.integration.importer.OrientDBImporter; @@ -61,8 +61,8 @@ public void testFullBackupCommandLineOK() throws Exception { new Restore(("-f " + FILE + " -d " + restoredDirectory + " -o").split(" ")).restoreDatabase(); - try (final Database originalDatabase = new DatabaseFactory(DATABASE_PATH).open(PaginatedFile.MODE.READ_ONLY)) { - try (final Database restoredDatabase = new DatabaseFactory(restoredDirectory.getAbsolutePath()).open(PaginatedFile.MODE.READ_ONLY)) { + try (final Database originalDatabase = new DatabaseFactory(DATABASE_PATH).open(ComponentFile.MODE.READ_ONLY)) { + try (final Database restoredDatabase = new DatabaseFactory(restoredDirectory.getAbsolutePath()).open(ComponentFile.MODE.READ_ONLY)) { new DatabaseComparator().compare(originalDatabase, restoredDatabase); } } @@ -80,7 +80,7 @@ public void testFullBackupAPIOK() throws Exception { new Restore(FILE, restoredDirectory.getAbsolutePath()).restoreDatabase(); - try (final Database restoredDatabase = new DatabaseFactory(restoredDirectory.getAbsolutePath()).open(PaginatedFile.MODE.READ_ONLY)) { + try (final Database restoredDatabase = new DatabaseFactory(restoredDirectory.getAbsolutePath()).open(ComponentFile.MODE.READ_ONLY)) { new DatabaseComparator().compare(importedDatabase, restoredDatabase); } } @@ -133,7 +133,7 @@ public void run() { importedDatabase.begin(); for (int k = 0; k < 500; k++) { final MutableVertex v = importedDatabase.newVertex("BackupTest").set("thread", threadId).set("id", totalPerThread.getAndIncrement()).save(); - Assertions.assertEquals(threadBucket.getId(), v.getIdentity().getBucketId()); + Assertions.assertEquals(threadBucket.getFileId(), v.getIdentity().getBucketId()); if (k + 1 % 100 == 0) { importedDatabase.commit(); @@ -173,7 +173,7 @@ public void run() { new Restore(FILE + "_" + i, databasePath).setVerboseLevel(1).restoreDatabase(); - try (final Database restoredDatabase = new DatabaseFactory(databasePath).open(PaginatedFile.MODE.READ_ONLY)) { + try (final Database restoredDatabase = new DatabaseFactory(databasePath).open(ComponentFile.MODE.READ_ONLY)) { // VERIFY ONLY WHOLE TRANSACTION ARE WRITTEN Assertions.assertTrue(restoredDatabase.countType("BackupTest", true) % 500 == 0); } diff --git a/integration/src/test/java/com/arcadedb/integration/importer/GloVeImporterIT.java b/integration/src/test/java/com/arcadedb/integration/importer/GloVeImporterIT.java new file mode 100644 index 000000000..0d4dcac9f --- /dev/null +++ b/integration/src/test/java/com/arcadedb/integration/importer/GloVeImporterIT.java @@ -0,0 +1,55 @@ +/* + * Copyright © 2021-present Arcade Data Ltd (info@arcadedata.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-FileCopyrightText: 2021-present Arcade Data Ltd (info@arcadedata.com) + * SPDX-License-Identifier: Apache-2.0 + */ +package com.arcadedb.integration.importer; + +import com.arcadedb.database.Database; +import com.arcadedb.database.DatabaseFactory; +import com.arcadedb.integration.TestHelper; +import com.arcadedb.utility.FileUtils; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.io.*; + +public class GloVeImporterIT { + @Test + public void importDocuments() { + final String databasePath = "target/databases/test-glove"; + + FileUtils.deleteRecursively(new File(databasePath)); + + final DatabaseFactory databaseFactory = new DatabaseFactory(databasePath); + if (databaseFactory.exists()) + databaseFactory.open().drop(); + + final Database db = databaseFactory.create(); + try { + db.command("sql", "import database file://src/test/resources/importer-glove.txt "// + + "with distanceFunction = cosine, m = 16, ef = 128, efConstruction = 128, " // + + "vertexType = Word, edgeType = Proximity, vectorProperty = vector, idProperty = name" // + ); + + Assertions.assertEquals(10, db.countType("Word", true)); + } finally { + db.drop(); + TestHelper.checkActiveDatabases(); + FileUtils.deleteRecursively(new File(databasePath)); + } + } +} diff --git a/integration/src/test/java/com/arcadedb/integration/importer/JSONImporterIT.java b/integration/src/test/java/com/arcadedb/integration/importer/JSONImporterIT.java index ce7beeb3a..9e731952a 100644 --- a/integration/src/test/java/com/arcadedb/integration/importer/JSONImporterIT.java +++ b/integration/src/test/java/com/arcadedb/integration/importer/JSONImporterIT.java @@ -45,7 +45,7 @@ public void importSingleObject() throws IOException { Assertions.assertEquals(1, db.countType("Food", true)); final Document food = db.iterateType("Food", true).next().asDocument(true); - JSONObject json = new JSONObject(FileUtils.readFileAsString(new File("src/test/resources/importer-one-object.json"), "utf8")); + JSONObject json = new JSONObject(FileUtils.readFileAsString(new File("src/test/resources/importer-one-object.json"))); for (Object name : json.names()) Assertions.assertTrue(food.has(name.toString())); diff --git a/integration/src/test/java/com/arcadedb/integration/importer/OrientDBImporterIT.java b/integration/src/test/java/com/arcadedb/integration/importer/OrientDBImporterIT.java index 448229486..526e6a9e4 100644 --- a/integration/src/test/java/com/arcadedb/integration/importer/OrientDBImporterIT.java +++ b/integration/src/test/java/com/arcadedb/integration/importer/OrientDBImporterIT.java @@ -65,7 +65,7 @@ public void testImportOK() throws Exception { final File securityFile = new File("./server-users.jsonl"); Assertions.assertTrue(securityFile.exists()); - final String fileContent = FileUtils.readFileAsString(securityFile, "UTF8"); + final String fileContent = FileUtils.readFileAsString(securityFile); final JSONObject security = new JSONObject(fileContent.substring(0, fileContent.indexOf("\n"))); Assertions.assertEquals("admin", security.getString("name")); } diff --git a/integration/src/test/java/com/arcadedb/integration/importer/Word2VecImporterIT.java b/integration/src/test/java/com/arcadedb/integration/importer/Word2VecImporterIT.java new file mode 100644 index 000000000..6055c2438 --- /dev/null +++ b/integration/src/test/java/com/arcadedb/integration/importer/Word2VecImporterIT.java @@ -0,0 +1,54 @@ +/* + * Copyright © 2021-present Arcade Data Ltd (info@arcadedata.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-FileCopyrightText: 2021-present Arcade Data Ltd (info@arcadedata.com) + * SPDX-License-Identifier: Apache-2.0 + */ +package com.arcadedb.integration.importer; + +import com.arcadedb.database.Database; +import com.arcadedb.database.DatabaseFactory; +import com.arcadedb.integration.TestHelper; +import com.arcadedb.utility.FileUtils; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.io.*; + +public class Word2VecImporterIT { + @Test + public void importDocuments() { + final String databasePath = "target/databases/test-word2vec"; + + FileUtils.deleteRecursively(new File(databasePath)); + + final DatabaseFactory databaseFactory = new DatabaseFactory(databasePath); + if (databaseFactory.exists()) + databaseFactory.open().drop(); + + final Database db = databaseFactory.create(); + try { + db.command("sql", "import database file://src/test/resources/importer-word2vec.txt " // + + "with distanceFunction = cosine, m = 16, ef = 128, efConstruction = 128, " // + + "vertexType = Word, edgeType = Proximity, vectorProperty = vector, idProperty = name" // + ); + Assertions.assertEquals(10, db.countType("Word", true)); + } finally { + db.drop(); + TestHelper.checkActiveDatabases(); + FileUtils.deleteRecursively(new File(databasePath)); + } + } +} diff --git a/integration/src/test/java/com/arcadedb/integration/importer/vector/FastTextDatabase.java b/integration/src/test/java/com/arcadedb/integration/importer/vector/FastTextDatabase.java new file mode 100644 index 000000000..9b30ecad5 --- /dev/null +++ b/integration/src/test/java/com/arcadedb/integration/importer/vector/FastTextDatabase.java @@ -0,0 +1,170 @@ +/* + * Copyright 2023 Arcade Data Ltd + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package com.arcadedb.integration.importer.vector; + +import com.arcadedb.database.Database; +import com.arcadedb.database.DatabaseFactory; +import com.arcadedb.database.Record; +import com.arcadedb.engine.Bucket; +import com.arcadedb.graph.Vertex; +import com.arcadedb.index.vector.HnswVectorIndex; +import com.arcadedb.log.LogManager; +import com.arcadedb.utility.FileUtils; +import com.arcadedb.utility.Pair; + +import java.io.*; +import java.net.*; +import java.nio.file.*; +import java.util.*; +import java.util.concurrent.*; +import java.util.concurrent.atomic.*; +import java.util.logging.*; + +import static java.util.concurrent.TimeUnit.*; + +/** + * Example application that downloads the english fast-text word vectors, inserts them into an hnsw index and lets + * you query them. + */ +public class FastTextDatabase { + + private static final String WORDS_FILE_URL = "https://dl.fbaipublicfiles.com/fasttext/vectors-crawl/cc.en.300.vec.gz"; + + private static final Path TMP_PATH = Paths.get(System.getProperty("java.io.tmpdir")); + private final static int PARALLEL_LEVEL = 8; + + public static void main(String[] args) throws Exception { + new FastTextDatabase(); + } + + public FastTextDatabase() throws IOException, InterruptedException, ReflectiveOperationException { + final long start = System.currentTimeMillis(); + + final Database database; + + final DatabaseFactory factory = new DatabaseFactory("textdb"); + + // TODO: REMOVE THIS +// if (factory.exists()) +// factory.open().drop(); + + if (factory.exists()) { + database = factory.open(); + //LogManager.instance().log(this, Level.SEVERE, "Found existent database with %d words", database.countType("Word", false)); + + } else { + database = factory.create(); + LogManager.instance().log(this, Level.SEVERE, "Creating new database"); + + final Path file = TMP_PATH.resolve("cc.en.300.vec.gz"); + if (!Files.exists(file)) { + downloadFile(WORDS_FILE_URL, file); + } else { + LogManager.instance().log(this, Level.SEVERE, "Input file already downloaded. Using %s\n", file); + } + + database.command("sql", "import database file://" + file.toAbsolutePath() + " "// + + "with distanceFunction = cosine, m = 16, ef = 128, efConstruction = 128," // + + "vertexType = Word, edgeType = Proximity, vectorProperty = vector, vectorType = Float, idProperty = name" // + ); + + LogManager.instance().log(this, Level.SEVERE, "Creating index took %d millis which is %d minutes.%n", System.currentTimeMillis() - start, + MILLISECONDS.toMinutes(System.currentTimeMillis() - start)); + } + + final HnswVectorIndex persistentIndex = (HnswVectorIndex) database.getSchema().getIndexByName("Word[name,vector]"); + + try { + int k = 10; + + final Random random = new Random(); + + final List buckets = database.getSchema().getType("Word").getBuckets(false); + + final ExecutorService executor = new ThreadPoolExecutor(PARALLEL_LEVEL, PARALLEL_LEVEL, 5, TimeUnit.SECONDS, new SynchronousQueue(), + new ThreadPoolExecutor.CallerRunsPolicy()); + + final AtomicLong totalSearchTime = new AtomicLong(); + final AtomicInteger totalHits = new AtomicInteger(); + final long begin = System.currentTimeMillis(); + final AtomicLong lastStats = new AtomicLong(); + + final List words = new ArrayList<>(); + for (Iterator it = database.iterateType("Word", true); it.hasNext(); ) + words.add(it.next().asVertex().getString("name")); + + for (int cycle = 0; ; ++cycle) { + final int currentCycle = cycle; + + executor.submit(() -> { + try { + final int randomWord = random.nextInt(words.size()); + String input = words.get(randomWord); + + final long startWord = System.currentTimeMillis(); + + database.begin(); + + List> approximateResults = persistentIndex.findNeighbors(input, k); + + final long delta = System.currentTimeMillis() - startWord; + + totalHits.incrementAndGet(); + totalSearchTime.addAndGet(delta); + + final Map results = new LinkedHashMap<>(); + for (Pair result : approximateResults) + results.put(result.getFirst().getString("name"), result.getSecond()); + + //LogManager.instance().log(this, Level.SEVERE, "%d Found similar words for '%s' in %dms: %s", currentCycle, input, delta, results); + + final long now = System.currentTimeMillis(); + final float throughput = totalHits.get() / ((now - begin) / 1000F); + + if (now - lastStats.get() >= 1000) { + LogManager.instance() + .log(this, Level.SEVERE, "STATS: %d searched words, avg %dms per single word, total throughput %.2f words/sec", totalSearchTime.get(), + totalSearchTime.get() / totalHits.get(), throughput); + lastStats.set(now); + } + + database.rollback(); + + } catch (Exception e) { + LogManager.instance().log(this, Level.SEVERE, "Not Found"); + } + }); + + } + } finally { + database.close(); + } + } + + private void downloadFile(String url, Path path) throws IOException { + LogManager.instance().log(this, Level.SEVERE, "Downloading %s to %s. This may take a while", url, path); + try (InputStream in = new URL(url).openStream()) { + Files.copy(in, path); + } + LogManager.instance().log(this, Level.SEVERE, "Downloaded %s", FileUtils.getSizeAsString(path.toFile().length())); + } +} diff --git a/integration/src/test/java/com/arcadedb/integration/importer/vector/GloVeTest.java b/integration/src/test/java/com/arcadedb/integration/importer/vector/GloVeTest.java new file mode 100644 index 000000000..da4f014ec --- /dev/null +++ b/integration/src/test/java/com/arcadedb/integration/importer/vector/GloVeTest.java @@ -0,0 +1,179 @@ +/* + * Copyright 2023 Arcade Data Ltd + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package com.arcadedb.integration.importer.vector; + +import com.arcadedb.database.Database; +import com.arcadedb.database.DatabaseFactory; +import com.arcadedb.database.Identifiable; +import com.arcadedb.database.Record; +import com.arcadedb.index.vector.HnswVectorIndex; +import com.arcadedb.log.LogManager; +import com.arcadedb.query.sql.executor.Result; +import com.arcadedb.query.sql.executor.ResultSet; +import com.arcadedb.utility.Pair; + +import java.io.*; +import java.util.*; +import java.util.concurrent.*; +import java.util.concurrent.atomic.*; +import java.util.logging.*; + +import static java.util.concurrent.TimeUnit.*; + +/** + * Example application that downloads the english fast-text word vectors, inserts them into an hnsw index and lets + * you query them. + */ +public class GloVeTest { + private final static int PARALLEL_LEVEL = 8; + private static final String FILE_NAME = "/Users/luca/Downloads/glove.twitter.27B.100d.txt"; + private boolean USE_SQL = false; + + public static void main(String[] args) { + new GloVeTest(); + } + + public GloVeTest() { + final long start = System.currentTimeMillis(); + + final Database database; + + final DatabaseFactory factory = new DatabaseFactory("glovedb"); + + // TODO: REMOVE THIS +// if (factory.exists()) +// factory.open().drop(); + + if (factory.exists()) { + database = factory.open(); + //LogManager.instance().log(this, Level.SEVERE, "Found existent database with %d words", database.countType("Word", false)); + + } else { + database = factory.create(); + LogManager.instance().log(this, Level.SEVERE, "Creating new database"); + + final File file = new File(FILE_NAME); + if (!file.exists()) { + LogManager.instance().log(this, Level.SEVERE, "File %s not found\n", FILE_NAME); + System.exit(1); + } + + database.command("sql", "import database file://" + file.getAbsolutePath() + " "// + + "with distanceFunction = 'cosine', m = 16, ef = 128, efConstruction = 128, " // + + "vertexType = 'Word', edgeType = 'Proximity', vectorProperty = 'vector', vectorType = Float, idProperty = 'name'" // + ); + + long end = System.currentTimeMillis(); + long duration = end - start; + + LogManager.instance().log(this, Level.SEVERE, "Creating index took %d millis which is %d minutes.%n", duration, MILLISECONDS.toMinutes(duration)); + + database.close(); + System.exit(1); + } + + final HnswVectorIndex persistentIndex = (HnswVectorIndex) database.getSchema().getIndexByName("Word[name,vector]"); + + try { + + int k = 128; + + final Random random = new Random(); + + final ExecutorService executor = new ThreadPoolExecutor(PARALLEL_LEVEL, PARALLEL_LEVEL, 5, TimeUnit.SECONDS, new SynchronousQueue(), + new ThreadPoolExecutor.CallerRunsPolicy()); + + final AtomicLong totalSearchTime = new AtomicLong(); + final AtomicInteger totalHits = new AtomicInteger(); + final long begin = System.currentTimeMillis(); + final AtomicLong lastStats = new AtomicLong(); + + final List words = new ArrayList<>(); + for (Iterator it = database.iterateType("Word", true); it.hasNext(); ) + words.add(it.next().asVertex().getString("name")); + + for (int cycle = 0; ; ++cycle) { + final int currentCycle = cycle; + + executor.submit(() -> { + try { + final int randomWord = random.nextInt(words.size()); + String input = words.get(randomWord); + + final long startWord = System.currentTimeMillis(); + + final List> approximateResults; + if (USE_SQL) { + final ResultSet resultSet = database.query("sql", "select vectorNeighbors('Word[name,vector]', ?,?) as neighbors", input, k); + if (resultSet.hasNext()) { + approximateResults = new ArrayList<>(); + while (resultSet.hasNext()) { + final Result row = resultSet.next(); + final List> neighbors = row.getProperty("neighbors"); + + for (Map neighbor : neighbors) + approximateResults.add(new Pair<>((Identifiable) neighbor.get("vertex"), ((Number) neighbor.get("distance")).floatValue())); + } + + } else { + LogManager.instance().log(this, Level.SEVERE, "Not Found %s", input); + return; + } + } else { + database.begin(); + approximateResults = persistentIndex.findNeighbors(input, k); + database.rollback(); + } + + final long now = System.currentTimeMillis(); + final long delta = now - startWord; + + totalHits.incrementAndGet(); + totalSearchTime.addAndGet(delta); + + final Map results = new LinkedHashMap<>(); + for (Pair result : approximateResults) + results.put(result.getFirst().asVertex().getString("name"), result.getSecond()); + +// LogManager.instance() +// .log(this, Level.SEVERE, "%d Found %d similar words for '%s' in %dms: %s", currentCycle, results.size(), input, delta, results); + + final float throughput = totalHits.get() / ((now - begin) / 1000F); + + if (now - lastStats.get() >= 1000) { + LogManager.instance() + .log(this, Level.SEVERE, "STATS: %d searched words, avg %dms per single word, total throughput %.2f words/sec", totalSearchTime.get(), + totalSearchTime.get() / totalHits.get(), throughput); + lastStats.set(now); + } + + } catch (Exception e) { + e.printStackTrace(); + } + }); + + } + } finally { + database.close(); + } + } +} diff --git a/integration/src/test/resources/importer-glove.txt b/integration/src/test/resources/importer-glove.txt new file mode 100644 index 000000000..d22ba9ae8 --- /dev/null +++ b/integration/src/test/resources/importer-glove.txt @@ -0,0 +1,10 @@ + 0.63006 0.65177 0.25545 0.018593 0.043094 0.047194 0.23218 0.11613 0.17371 0.40487 0.022524 -0.076731 -2.2911 0.094127 0.43293 0.041801 0.063175 -0.64486 -0.43657 0.024114 -0.082989 0.21686 -0.13462 -0.22336 0.39436 -2.1724 -0.39544 0.16536 0.39438 -0.35182 -0.14996 0.10502 -0.45937 0.27729 0.8924 -0.042313 -0.009345 0.55017 0.095521 0.070504 -1.1781 0.013723 0.17742 0.74142 0.17716 0.038468 -0.31684 0.08941 0.20557 -0.34328 -0.64303 -0.878 -0.16293 -0.055925 0.33898 0.60664 -0.2774 0.33626 0.21603 -0.11051 0.0058673 -0.64757 -0.068222 -0.77414 0.13911 -0.15851 -0.61885 -0.10192 -0.47 0.19787 0.42175 -0.18458 0.080581 -0.22545 -0.065129 -0.15328 0.087726 -0.18817 -0.08371 0.21779 0.97899 0.1092 0.022705 -0.078234 0.15595 0.083105 -0.6824 0.57469 -0.19942 0.50566 -0.18277 0.37721 -0.12514 -0.42821 -0.81075 -0.39326 -0.17386 0.55096 0.64706 -0.6093 +. 0.18205 -0.048483 0.23966 0.32099 -0.27002 0.70431 -0.21257 0.235 0.090142 0.82141 0.37843 -0.56382 -2.4447 0.16827 0.24685 0.28649 0.062312 0.067508 -0.58459 -0.45414 -0.22158 0.17423 -0.35558 0.14485 0.49089 -1.7426 -0.54306 -0.51937 0.94795 -0.41739 -0.55238 -0.057398 -0.52663 0.62976 0.097275 0.20637 0.46261 0.089462 0.016019 -0.53854 -1.2043 0.080287 -0.65351 0.044617 0.79527 0.044508 0.53367 0.27444 -0.32461 -0.053683 -0.79304 0.11 0.39762 -0.044155 0.21701 0.27977 -0.25773 0.25085 0.39711 0.32318 0.10245 -0.030471 0.34113 0.17971 0.44436 0.054915 0.22461 -0.80843 -0.11052 0.42366 0.61091 0.55024 0.21958 -0.3029 0.14545 -0.46701 -0.23945 0.035106 -0.50933 -0.12392 0.24526 0.14758 -0.30313 -0.53052 0.80632 0.34566 -0.24541 0.71479 -0.15985 0.40129 -0.10851 -0.61427 -0.0035577 0.037739 -0.33055 -0.094383 0.38617 -0.3358 0.18884 -0.40786 +: 1.0674 0.45716 0.51463 0.26679 0.19921 -0.072329 0.078455 0.19458 0.42281 0.1928 0.34424 -0.41104 -1.8649 -0.14081 0.23753 0.023077 -0.1115 -0.087478 -0.16193 -0.61093 -0.31741 -0.33686 -0.10769 0.46179 0.17931 -1.6432 -0.20659 0.34077 0.38932 -0.016806 -0.34337 -0.60921 -1.019 0.26511 0.85287 0.28141 -0.012736 0.41456 0.068343 -0.087932 -1.483 -0.072203 0.19278 0.64113 0.074135 -0.36254 -0.24202 -0.12651 0.19001 -0.4018 -0.92765 -0.33716 -0.31579 -0.090995 0.68764 0.35058 -0.12254 0.053486 0.24523 -0.0028901 -0.77917 0.19829 -0.19521 -1.2721 0.71733 -0.73878 -0.16419 -0.31932 0.051843 -0.08174 0.20602 -0.28411 0.4526 -0.47428 -0.40245 -0.6144 -0.056346 -0.53072 0.39851 -7.2866e-05 0.70299 -0.072685 0.45967 0.3748 0.052649 0.1852 -0.61182 1.1638 -0.26429 -0.15449 -0.48257 -0.060027 -0.36757 -0.055639 -0.14887 -0.33543 0.22757 0.13974 0.76487 -0.17314 +rt 0.6047 0.89542 0.27923 0.033489 0.15873 0.18522 0.30722 0.47445 0.44484 0.7045 0.39528 -0.19818 -2.3884 0.095433 0.10782 0.26263 0.36582 -0.6385 -0.22938 -0.34722 0.10977 0.37367 -0.068053 -0.39421 0.43471 -2.1794 -0.47111 0.087237 0.57989 -0.020883 -0.0695 0.25771 -0.5019 0.41154 1.2178 0.47976 -0.31574 0.52983 0.041575 0.44973 -1.5363 -0.096062 -0.27531 0.52771 0.028587 0.047935 -0.5973 -0.051772 0.11377 -0.4049 -0.54857 -0.65916 -0.38132 -0.39519 0.42961 0.74531 -0.50838 0.40392 0.62699 -0.24798 -0.25386 0.21867 -0.072132 -0.51783 -0.054186 -0.66391 -0.58224 0.060621 -0.54001 0.72242 0.13349 -0.070261 -0.059061 -0.035474 -0.53649 -0.3755 0.11234 -0.3409 -0.13406 0.0078872 0.81973 -0.075774 0.10947 0.26919 -0.069167 0.27475 -0.90546 0.54632 -0.6847 0.35787 -0.015019 0.42209 -0.06252 -0.33265 -0.60945 -0.23269 -0.40932 0.51566 0.84726 0.020946 +, 0.32299 -0.58293 -0.23327 0.34409 -0.56934 1.3211 -0.086267 0.20526 0.5832 0.47516 0.45729 -0.26095 -2.9556 0.16734 0.4654 0.001953 0.31176 -0.49288 -0.49587 -0.28971 0.20519 -0.095402 -0.55419 0.25766 -0.55587 -2.4797 -0.56455 -0.1794 0.4226 -0.32263 -0.3376 0.4137 -0.26111 0.58089 -0.21375 0.1299 -0.010004 -0.14399 -0.18322 -0.30611 -1.4484 0.72222 -0.4705 0.40947 0.16963 -0.14548 0.10416 0.054201 -0.58036 -0.45506 -0.28475 -0.027517 0.10678 -0.10471 -0.067661 -0.16074 -0.34465 -0.14152 0.39862 0.2999 -0.028444 0.38092 -0.18922 -0.03784 0.27486 0.055035 -0.19807 -0.87173 -0.13253 0.39552 0.3629 0.46096 -0.17526 0.31682 -0.24622 -0.71199 0.17775 -0.93663 -0.10047 0.6859 0.54252 -0.072833 -0.19375 0.5751 0.27908 0.3072 0.18803 1.2644 -0.4354 0.49524 -0.51962 -0.62252 0.03495 0.20205 -0.18469 -0.54402 0.2475 -0.93883 -0.082771 -0.22574 + 0.15955 0.26989 0.20858 0.30543 -0.078765 0.57171 -0.11096 0.40187 0.157 0.70075 0.17793 -0.16058 -2.0023 0.34172 0.06357 -0.00026815 -0.082191 -0.1224 -0.53392 -0.63666 -0.065473 0.22979 0.0038609 0.14067 0.70308 -1.7196 -0.26129 -0.39572 0.86836 -0.25373 -0.60829 -0.069807 -0.43805 0.58822 0.16711 0.28068 0.47312 0.089204 0.036153 -0.2428 -1.1554 0.1446 -0.56071 -0.024045 0.69194 0.064904 0.54029 0.29806 -0.053121 -0.02485 -1.1096 -0.04498 0.50792 0.012867 0.58161 0.25465 -0.12493 0.45379 0.36407 0.047338 -0.16498 -0.25395 0.34337 0.24567 0.36126 -0.09073 -0.01855 -0.83714 -0.29615 0.50266 0.7934 0.39469 0.24411 -0.096259 0.1157 -0.25216 -0.21291 0.41922 -0.36031 -0.40823 0.42863 0.051523 -0.24388 -0.8565 0.49252 0.55513 -0.36313 0.59899 -0.15685 0.24068 -0.27657 -0.39037 -0.03913 -0.0030325 -0.54934 0.089335 0.39065 -0.11433 0.32797 -0.66378 + 0.12632 -0.67049 0.36077 -0.59244 -0.20898 -0.38867 0.60406 0.11256 0.17291 0.75089 -0.41904 -0.24512 -2.5029 0.044884 -0.11681 -0.65162 -0.82035 0.2772 -0.63401 1.0864 0.20465 0.79896 -0.24333 -0.75383 0.78801 -1.6382 -0.64087 1.0505 0.90609 0.12356 -1.3677 -0.91896 -0.62909 0.16805 1.7366 -0.50556 -0.34257 -0.037407 -0.077894 0.035249 -1.0114 0.077162 -0.13277 -0.6073 1.4327 0.21274 0.49006 -0.12465 -0.31849 -0.48117 -0.71897 -0.31361 0.082422 -0.40866 0.45471 0.20882 0.087377 -0.35028 -0.11497 0.32167 0.20904 -0.59784 -0.64296 0.092053 -0.17296 -0.79641 -0.49189 0.60002 0.68936 -0.068849 0.31007 -0.3655 0.32889 0.54283 -0.037797 0.84533 -1.1667 1.2164 0.086391 -0.48441 1.2335 0.9405 0.90539 0.063121 0.4576 1.1538 -1.164 1.0212 -0.24575 -0.41846 0.30621 -0.49738 -0.030436 -0.20296 -0.34046 -0.0016077 -0.50538 0.66966 1.0386 0.3338 + 0.41436 -0.066986 0.47485 -0.6039 0.13103 0.40182 -1.0205 0.55811 0.030847 0.88296 -0.20015 0.30581 -2.2959 0.27628 -0.5745 -0.65363 0.015981 -0.078754 0.29041 -0.10476 -0.32831 -0.60674 0.12636 -0.15849 -0.1296 -1.624 -0.43042 -0.8912 0.96105 0.81197 0.40817 -0.61422 -0.12197 0.38899 1.7551 0.67989 -0.26323 -0.72813 0.047063 -0.090324 -2.3259 0.11788 -0.5689 -0.058212 -0.087544 -0.77046 -0.31418 -0.70277 0.3376 -0.42649 -0.71333 -0.67349 -0.31198 0.62908 0.85631 0.42757 0.36119 -0.49708 -0.31234 0.64581 -0.10335 -0.60543 -0.12391 0.31221 -0.17433 0.60417 -0.31664 0.27621 0.70393 -0.75601 0.14436 -0.14913 0.13205 0.6797 0.27813 -0.95859 -0.5562 0.21086 0.6172 -0.68459 1.8256 -0.48079 -0.060844 -0.15566 0.022667 -0.39432 -0.2795 0.72409 0.55935 0.82758 -0.44102 0.091789 0.22119 0.36782 0.83826 -0.5405 0.030171 -0.48167 0.68211 0.36674 + 0.33292 -0.54203 -0.11322 -0.27659 -0.026186 -0.82087 -0.21403 -0.16494 0.25512 0.73279 -0.28273 0.30562 -2.3428 0.57922 0.28763 -0.99739 -0.092065 -0.38625 -0.056712 0.22435 -0.30217 0.092644 0.23267 0.053841 0.5248 -1.4725 -0.21217 0.60497 1.0452 0.0067332 -0.50481 -1.1028 -1.1451 0.3235 0.89579 -0.42413 -0.17208 -0.086374 -0.62347 -0.25032 -0.91658 0.17972 -0.015353 0.52888 1.3924 0.34129 0.36661 0.052747 -0.3025 -1.0406 -0.31652 -1.1544 -0.42162 -0.17128 0.89121 0.19002 0.080897 0.41373 -0.094438 0.18039 0.54055 -0.98818 -0.23105 -0.36734 0.21701 -0.27166 -0.20397 0.48816 0.28361 0.078591 0.6951 -0.18313 0.7354 0.10051 -0.49952 -0.88482 -1.4918 0.91632 -0.24593 -0.69987 1.2849 0.13556 0.21557 -0.36722 0.70076 0.0094641 -0.53055 0.75533 -0.09199 -0.30924 -0.1522 -0.26417 0.065998 -0.93542 0.69566 -0.31284 0.36152 -0.11462 1.2662 -0.39507 +! 0.036185 0.29411 0.03156 0.21751 -0.16587 0.44929 0.49443 0.62368 -0.033922 0.19355 0.27376 0.43499 -2.3455 0.3244 0.012303 -0.23421 -0.24621 -0.27055 -0.55345 -0.51206 0.17412 0.16658 0.29378 -0.040161 0.62899 -1.8128 -0.022749 -0.12075 0.74374 -0.59627 -1.3206 0.30431 -0.93824 0.20701 0.73091 0.75277 0.82462 0.226 0.014603 -0.21819 -1.1185 -0.1165 -0.31423 0.026639 0.44155 -0.13145 0.066974 0.37567 0.14028 0.15789 -1.0272 -0.28404 0.82927 -0.48884 0.61885 0.097422 -0.085807 0.62459 -0.024291 0.36697 -0.025851 -0.19389 0.60966 0.64113 0.43067 0.099532 -0.15492 -0.4797 -0.42617 0.49288 1.2589 0.19441 0.089991 0.2043 -0.035499 -0.36655 -0.39695 0.42053 0.29321 0.037006 0.96617 0.325 -0.042747 -0.60854 1.0639 0.97298 -0.34578 0.41912 -0.15533 -0.33438 -0.44822 -0.23847 -0.022452 -0.26315 -0.14168 -0.075722 0.3188 -0.37525 0.47984 -0.87831 diff --git a/integration/src/test/resources/importer-word2vec.txt b/integration/src/test/resources/importer-word2vec.txt new file mode 100644 index 000000000..137ef527a --- /dev/null +++ b/integration/src/test/resources/importer-word2vec.txt @@ -0,0 +1,11 @@ +10 100 + 0.63006 0.65177 0.25545 0.018593 0.043094 0.047194 0.23218 0.11613 0.17371 0.40487 0.022524 -0.076731 -2.2911 0.094127 0.43293 0.041801 0.063175 -0.64486 -0.43657 0.024114 -0.082989 0.21686 -0.13462 -0.22336 0.39436 -2.1724 -0.39544 0.16536 0.39438 -0.35182 -0.14996 0.10502 -0.45937 0.27729 0.8924 -0.042313 -0.009345 0.55017 0.095521 0.070504 -1.1781 0.013723 0.17742 0.74142 0.17716 0.038468 -0.31684 0.08941 0.20557 -0.34328 -0.64303 -0.878 -0.16293 -0.055925 0.33898 0.60664 -0.2774 0.33626 0.21603 -0.11051 0.0058673 -0.64757 -0.068222 -0.77414 0.13911 -0.15851 -0.61885 -0.10192 -0.47 0.19787 0.42175 -0.18458 0.080581 -0.22545 -0.065129 -0.15328 0.087726 -0.18817 -0.08371 0.21779 0.97899 0.1092 0.022705 -0.078234 0.15595 0.083105 -0.6824 0.57469 -0.19942 0.50566 -0.18277 0.37721 -0.12514 -0.42821 -0.81075 -0.39326 -0.17386 0.55096 0.64706 -0.6093 +. 0.18205 -0.048483 0.23966 0.32099 -0.27002 0.70431 -0.21257 0.235 0.090142 0.82141 0.37843 -0.56382 -2.4447 0.16827 0.24685 0.28649 0.062312 0.067508 -0.58459 -0.45414 -0.22158 0.17423 -0.35558 0.14485 0.49089 -1.7426 -0.54306 -0.51937 0.94795 -0.41739 -0.55238 -0.057398 -0.52663 0.62976 0.097275 0.20637 0.46261 0.089462 0.016019 -0.53854 -1.2043 0.080287 -0.65351 0.044617 0.79527 0.044508 0.53367 0.27444 -0.32461 -0.053683 -0.79304 0.11 0.39762 -0.044155 0.21701 0.27977 -0.25773 0.25085 0.39711 0.32318 0.10245 -0.030471 0.34113 0.17971 0.44436 0.054915 0.22461 -0.80843 -0.11052 0.42366 0.61091 0.55024 0.21958 -0.3029 0.14545 -0.46701 -0.23945 0.035106 -0.50933 -0.12392 0.24526 0.14758 -0.30313 -0.53052 0.80632 0.34566 -0.24541 0.71479 -0.15985 0.40129 -0.10851 -0.61427 -0.0035577 0.037739 -0.33055 -0.094383 0.38617 -0.3358 0.18884 -0.40786 +: 1.0674 0.45716 0.51463 0.26679 0.19921 -0.072329 0.078455 0.19458 0.42281 0.1928 0.34424 -0.41104 -1.8649 -0.14081 0.23753 0.023077 -0.1115 -0.087478 -0.16193 -0.61093 -0.31741 -0.33686 -0.10769 0.46179 0.17931 -1.6432 -0.20659 0.34077 0.38932 -0.016806 -0.34337 -0.60921 -1.019 0.26511 0.85287 0.28141 -0.012736 0.41456 0.068343 -0.087932 -1.483 -0.072203 0.19278 0.64113 0.074135 -0.36254 -0.24202 -0.12651 0.19001 -0.4018 -0.92765 -0.33716 -0.31579 -0.090995 0.68764 0.35058 -0.12254 0.053486 0.24523 -0.0028901 -0.77917 0.19829 -0.19521 -1.2721 0.71733 -0.73878 -0.16419 -0.31932 0.051843 -0.08174 0.20602 -0.28411 0.4526 -0.47428 -0.40245 -0.6144 -0.056346 -0.53072 0.39851 -7.2866e-05 0.70299 -0.072685 0.45967 0.3748 0.052649 0.1852 -0.61182 1.1638 -0.26429 -0.15449 -0.48257 -0.060027 -0.36757 -0.055639 -0.14887 -0.33543 0.22757 0.13974 0.76487 -0.17314 +rt 0.6047 0.89542 0.27923 0.033489 0.15873 0.18522 0.30722 0.47445 0.44484 0.7045 0.39528 -0.19818 -2.3884 0.095433 0.10782 0.26263 0.36582 -0.6385 -0.22938 -0.34722 0.10977 0.37367 -0.068053 -0.39421 0.43471 -2.1794 -0.47111 0.087237 0.57989 -0.020883 -0.0695 0.25771 -0.5019 0.41154 1.2178 0.47976 -0.31574 0.52983 0.041575 0.44973 -1.5363 -0.096062 -0.27531 0.52771 0.028587 0.047935 -0.5973 -0.051772 0.11377 -0.4049 -0.54857 -0.65916 -0.38132 -0.39519 0.42961 0.74531 -0.50838 0.40392 0.62699 -0.24798 -0.25386 0.21867 -0.072132 -0.51783 -0.054186 -0.66391 -0.58224 0.060621 -0.54001 0.72242 0.13349 -0.070261 -0.059061 -0.035474 -0.53649 -0.3755 0.11234 -0.3409 -0.13406 0.0078872 0.81973 -0.075774 0.10947 0.26919 -0.069167 0.27475 -0.90546 0.54632 -0.6847 0.35787 -0.015019 0.42209 -0.06252 -0.33265 -0.60945 -0.23269 -0.40932 0.51566 0.84726 0.020946 +, 0.32299 -0.58293 -0.23327 0.34409 -0.56934 1.3211 -0.086267 0.20526 0.5832 0.47516 0.45729 -0.26095 -2.9556 0.16734 0.4654 0.001953 0.31176 -0.49288 -0.49587 -0.28971 0.20519 -0.095402 -0.55419 0.25766 -0.55587 -2.4797 -0.56455 -0.1794 0.4226 -0.32263 -0.3376 0.4137 -0.26111 0.58089 -0.21375 0.1299 -0.010004 -0.14399 -0.18322 -0.30611 -1.4484 0.72222 -0.4705 0.40947 0.16963 -0.14548 0.10416 0.054201 -0.58036 -0.45506 -0.28475 -0.027517 0.10678 -0.10471 -0.067661 -0.16074 -0.34465 -0.14152 0.39862 0.2999 -0.028444 0.38092 -0.18922 -0.03784 0.27486 0.055035 -0.19807 -0.87173 -0.13253 0.39552 0.3629 0.46096 -0.17526 0.31682 -0.24622 -0.71199 0.17775 -0.93663 -0.10047 0.6859 0.54252 -0.072833 -0.19375 0.5751 0.27908 0.3072 0.18803 1.2644 -0.4354 0.49524 -0.51962 -0.62252 0.03495 0.20205 -0.18469 -0.54402 0.2475 -0.93883 -0.082771 -0.22574 + 0.15955 0.26989 0.20858 0.30543 -0.078765 0.57171 -0.11096 0.40187 0.157 0.70075 0.17793 -0.16058 -2.0023 0.34172 0.06357 -0.00026815 -0.082191 -0.1224 -0.53392 -0.63666 -0.065473 0.22979 0.0038609 0.14067 0.70308 -1.7196 -0.26129 -0.39572 0.86836 -0.25373 -0.60829 -0.069807 -0.43805 0.58822 0.16711 0.28068 0.47312 0.089204 0.036153 -0.2428 -1.1554 0.1446 -0.56071 -0.024045 0.69194 0.064904 0.54029 0.29806 -0.053121 -0.02485 -1.1096 -0.04498 0.50792 0.012867 0.58161 0.25465 -0.12493 0.45379 0.36407 0.047338 -0.16498 -0.25395 0.34337 0.24567 0.36126 -0.09073 -0.01855 -0.83714 -0.29615 0.50266 0.7934 0.39469 0.24411 -0.096259 0.1157 -0.25216 -0.21291 0.41922 -0.36031 -0.40823 0.42863 0.051523 -0.24388 -0.8565 0.49252 0.55513 -0.36313 0.59899 -0.15685 0.24068 -0.27657 -0.39037 -0.03913 -0.0030325 -0.54934 0.089335 0.39065 -0.11433 0.32797 -0.66378 + 0.12632 -0.67049 0.36077 -0.59244 -0.20898 -0.38867 0.60406 0.11256 0.17291 0.75089 -0.41904 -0.24512 -2.5029 0.044884 -0.11681 -0.65162 -0.82035 0.2772 -0.63401 1.0864 0.20465 0.79896 -0.24333 -0.75383 0.78801 -1.6382 -0.64087 1.0505 0.90609 0.12356 -1.3677 -0.91896 -0.62909 0.16805 1.7366 -0.50556 -0.34257 -0.037407 -0.077894 0.035249 -1.0114 0.077162 -0.13277 -0.6073 1.4327 0.21274 0.49006 -0.12465 -0.31849 -0.48117 -0.71897 -0.31361 0.082422 -0.40866 0.45471 0.20882 0.087377 -0.35028 -0.11497 0.32167 0.20904 -0.59784 -0.64296 0.092053 -0.17296 -0.79641 -0.49189 0.60002 0.68936 -0.068849 0.31007 -0.3655 0.32889 0.54283 -0.037797 0.84533 -1.1667 1.2164 0.086391 -0.48441 1.2335 0.9405 0.90539 0.063121 0.4576 1.1538 -1.164 1.0212 -0.24575 -0.41846 0.30621 -0.49738 -0.030436 -0.20296 -0.34046 -0.0016077 -0.50538 0.66966 1.0386 0.3338 + 0.41436 -0.066986 0.47485 -0.6039 0.13103 0.40182 -1.0205 0.55811 0.030847 0.88296 -0.20015 0.30581 -2.2959 0.27628 -0.5745 -0.65363 0.015981 -0.078754 0.29041 -0.10476 -0.32831 -0.60674 0.12636 -0.15849 -0.1296 -1.624 -0.43042 -0.8912 0.96105 0.81197 0.40817 -0.61422 -0.12197 0.38899 1.7551 0.67989 -0.26323 -0.72813 0.047063 -0.090324 -2.3259 0.11788 -0.5689 -0.058212 -0.087544 -0.77046 -0.31418 -0.70277 0.3376 -0.42649 -0.71333 -0.67349 -0.31198 0.62908 0.85631 0.42757 0.36119 -0.49708 -0.31234 0.64581 -0.10335 -0.60543 -0.12391 0.31221 -0.17433 0.60417 -0.31664 0.27621 0.70393 -0.75601 0.14436 -0.14913 0.13205 0.6797 0.27813 -0.95859 -0.5562 0.21086 0.6172 -0.68459 1.8256 -0.48079 -0.060844 -0.15566 0.022667 -0.39432 -0.2795 0.72409 0.55935 0.82758 -0.44102 0.091789 0.22119 0.36782 0.83826 -0.5405 0.030171 -0.48167 0.68211 0.36674 + 0.33292 -0.54203 -0.11322 -0.27659 -0.026186 -0.82087 -0.21403 -0.16494 0.25512 0.73279 -0.28273 0.30562 -2.3428 0.57922 0.28763 -0.99739 -0.092065 -0.38625 -0.056712 0.22435 -0.30217 0.092644 0.23267 0.053841 0.5248 -1.4725 -0.21217 0.60497 1.0452 0.0067332 -0.50481 -1.1028 -1.1451 0.3235 0.89579 -0.42413 -0.17208 -0.086374 -0.62347 -0.25032 -0.91658 0.17972 -0.015353 0.52888 1.3924 0.34129 0.36661 0.052747 -0.3025 -1.0406 -0.31652 -1.1544 -0.42162 -0.17128 0.89121 0.19002 0.080897 0.41373 -0.094438 0.18039 0.54055 -0.98818 -0.23105 -0.36734 0.21701 -0.27166 -0.20397 0.48816 0.28361 0.078591 0.6951 -0.18313 0.7354 0.10051 -0.49952 -0.88482 -1.4918 0.91632 -0.24593 -0.69987 1.2849 0.13556 0.21557 -0.36722 0.70076 0.0094641 -0.53055 0.75533 -0.09199 -0.30924 -0.1522 -0.26417 0.065998 -0.93542 0.69566 -0.31284 0.36152 -0.11462 1.2662 -0.39507 +! 0.036185 0.29411 0.03156 0.21751 -0.16587 0.44929 0.49443 0.62368 -0.033922 0.19355 0.27376 0.43499 -2.3455 0.3244 0.012303 -0.23421 -0.24621 -0.27055 -0.55345 -0.51206 0.17412 0.16658 0.29378 -0.040161 0.62899 -1.8128 -0.022749 -0.12075 0.74374 -0.59627 -1.3206 0.30431 -0.93824 0.20701 0.73091 0.75277 0.82462 0.226 0.014603 -0.21819 -1.1185 -0.1165 -0.31423 0.026639 0.44155 -0.13145 0.066974 0.37567 0.14028 0.15789 -1.0272 -0.28404 0.82927 -0.48884 0.61885 0.097422 -0.085807 0.62459 -0.024291 0.36697 -0.025851 -0.19389 0.60966 0.64113 0.43067 0.099532 -0.15492 -0.4797 -0.42617 0.49288 1.2589 0.19441 0.089991 0.2043 -0.035499 -0.36655 -0.39695 0.42053 0.29321 0.037006 0.96617 0.325 -0.042747 -0.60854 1.0639 0.97298 -0.34578 0.41912 -0.15533 -0.33438 -0.44822 -0.23847 -0.022452 -0.26315 -0.14168 -0.075722 0.3188 -0.37525 0.47984 -0.87831 diff --git a/server/src/main/java/com/arcadedb/server/ArcadeDBServer.java b/server/src/main/java/com/arcadedb/server/ArcadeDBServer.java index 8773e8858..fe64147e7 100644 --- a/server/src/main/java/com/arcadedb/server/ArcadeDBServer.java +++ b/server/src/main/java/com/arcadedb/server/ArcadeDBServer.java @@ -25,7 +25,7 @@ import com.arcadedb.database.DatabaseFactory; import com.arcadedb.database.DatabaseInternal; import com.arcadedb.database.EmbeddedDatabase; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.exception.CommandExecutionException; import com.arcadedb.exception.ConfigurationException; import com.arcadedb.exception.DatabaseIsClosedException; @@ -55,8 +55,8 @@ import java.util.concurrent.*; import java.util.logging.*; -import static com.arcadedb.engine.PaginatedFile.MODE.READ_ONLY; -import static com.arcadedb.engine.PaginatedFile.MODE.READ_WRITE; +import static com.arcadedb.engine.ComponentFile.MODE.READ_ONLY; +import static com.arcadedb.engine.ComponentFile.MODE.READ_WRITE; public class ArcadeDBServer { public enum STATUS {OFFLINE, STARTING, ONLINE, SHUTTING_DOWN} @@ -323,7 +323,7 @@ public synchronized boolean existsDatabase(final String databaseName) { return databases.containsKey(databaseName); } - public synchronized DatabaseInternal createDatabase(final String databaseName, final PaginatedFile.MODE mode) { + public synchronized DatabaseInternal createDatabase(final String databaseName, final ComponentFile.MODE mode) { DatabaseInternal db = databases.get(databaseName); if (db != null) throw new IllegalArgumentException("Database '" + databaseName + "' already exists"); @@ -413,7 +413,7 @@ public synchronized Database getDatabase(final String databaseName, final boolea factory.setSecurity(getSecurity()); - PaginatedFile.MODE defaultDbMode = configuration.getValueAsEnum(GlobalConfiguration.SERVER_DEFAULT_DATABASE_MODE, PaginatedFile.MODE.class); + ComponentFile.MODE defaultDbMode = configuration.getValueAsEnum(GlobalConfiguration.SERVER_DEFAULT_DATABASE_MODE, ComponentFile.MODE.class); if (defaultDbMode == null) defaultDbMode = READ_WRITE; @@ -461,7 +461,7 @@ private void loadDatabases() { private void loadDefaultDatabases() { final String defaultDatabases = configuration.getValueAsString(GlobalConfiguration.SERVER_DEFAULT_DATABASES); if (defaultDatabases != null && !defaultDatabases.isEmpty()) { - PaginatedFile.MODE defaultDbMode = configuration.getValueAsEnum(GlobalConfiguration.SERVER_DEFAULT_DATABASE_MODE, PaginatedFile.MODE.class); + ComponentFile.MODE defaultDbMode = configuration.getValueAsEnum(GlobalConfiguration.SERVER_DEFAULT_DATABASE_MODE, ComponentFile.MODE.class); if (defaultDbMode == null) defaultDbMode = READ_WRITE; @@ -602,7 +602,7 @@ private void loadConfiguration() { final File file = new File(getRootPath() + File.separator + CONFIG_SERVER_CONFIGURATION_FILENAME); if (file.exists()) { try { - final String content = FileUtils.readFileAsString(file, "UTF8"); + final String content = FileUtils.readFileAsString(file); configuration.reset(); configuration.fromJSON(content); diff --git a/server/src/main/java/com/arcadedb/server/ServerDatabase.java b/server/src/main/java/com/arcadedb/server/ServerDatabase.java index 5f22d56a1..2239f7a77 100644 --- a/server/src/main/java/com/arcadedb/server/ServerDatabase.java +++ b/server/src/main/java/com/arcadedb/server/ServerDatabase.java @@ -36,10 +36,10 @@ import com.arcadedb.database.async.DatabaseAsyncExecutor; import com.arcadedb.database.async.ErrorCallback; import com.arcadedb.database.async.OkCallback; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.engine.ErrorRecordCallback; import com.arcadedb.engine.FileManager; import com.arcadedb.engine.PageManager; -import com.arcadedb.engine.PaginatedFile; import com.arcadedb.engine.TransactionManager; import com.arcadedb.engine.WALFile; import com.arcadedb.engine.WALFileFactory; @@ -114,8 +114,8 @@ public Map alignToReplicas() { throw new UnsupportedOperationException("Align Database not supported"); } - public TransactionContext getTransaction() { - return wrapped.getTransaction(); + public TransactionContext getTransactionIfExists() { + return wrapped.getTransactionIfExists(); } @Override @@ -413,7 +413,7 @@ public String getName() { } @Override - public PaginatedFile.MODE getMode() { + public ComponentFile.MODE getMode() { return wrapped.getMode(); } diff --git a/server/src/main/java/com/arcadedb/server/ha/Replica2LeaderNetworkExecutor.java b/server/src/main/java/com/arcadedb/server/ha/Replica2LeaderNetworkExecutor.java index 06a98c3ba..c389bd9bb 100755 --- a/server/src/main/java/com/arcadedb/server/ha/Replica2LeaderNetworkExecutor.java +++ b/server/src/main/java/com/arcadedb/server/ha/Replica2LeaderNetworkExecutor.java @@ -24,7 +24,7 @@ import com.arcadedb.database.DatabaseContext; import com.arcadedb.database.DatabaseFactory; import com.arcadedb.database.DatabaseInternal; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.log.LogManager; import com.arcadedb.network.binary.ChannelBinaryClient; import com.arcadedb.network.binary.ConnectionException; @@ -451,7 +451,7 @@ private void installDatabase(final Binary buffer, final String db, final Databas // RELOAD THE SCHEMA database.getSchema().getEmbedded().close(); DatabaseContext.INSTANCE.init(database); - database.getSchema().getEmbedded().load(PaginatedFile.MODE.READ_WRITE, true); + database.getSchema().getEmbedded().load(ComponentFile.MODE.READ_WRITE, true); LogManager.instance() .log(this, Level.INFO, "Database '%s' installed from the cluster (%s - %d files)", null, db, FileUtils.getSizeAsString(databaseSize), list.size()); diff --git a/server/src/main/java/com/arcadedb/server/ha/ReplicatedDatabase.java b/server/src/main/java/com/arcadedb/server/ha/ReplicatedDatabase.java index e620ec703..bdc075130 100644 --- a/server/src/main/java/com/arcadedb/server/ha/ReplicatedDatabase.java +++ b/server/src/main/java/com/arcadedb/server/ha/ReplicatedDatabase.java @@ -39,10 +39,10 @@ import com.arcadedb.database.async.DatabaseAsyncExecutor; import com.arcadedb.database.async.ErrorCallback; import com.arcadedb.database.async.OkCallback; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.engine.ErrorRecordCallback; import com.arcadedb.engine.FileManager; import com.arcadedb.engine.PageManager; -import com.arcadedb.engine.PaginatedFile; import com.arcadedb.engine.TransactionManager; import com.arcadedb.engine.WALFile; import com.arcadedb.engine.WALFileFactory; @@ -338,7 +338,7 @@ public String getName() { } @Override - public PaginatedFile.MODE getMode() { + public ComponentFile.MODE getMode() { return proxied.getMode(); } @@ -363,8 +363,8 @@ public ContextConfiguration getConfiguration() { } @Override - public TransactionContext getTransaction() { - return proxied.getTransaction(); + public TransactionContext getTransactionIfExists() { + return proxied.getTransactionIfExists(); } @Override @@ -792,13 +792,13 @@ public Map alignToReplicas() { executeInReadLock(() -> { // AVOID FLUSHING OF DATA PAGES TO DISK proxied.getPageManager().suspendFlushAndExecute(() -> { - final List files = proxied.getFileManager().getFiles(); + final List files = proxied.getFileManager().getFiles(); - for (final PaginatedFile paginatedFile : files) - if (paginatedFile != null) { - final long fileChecksum = paginatedFile.calculateChecksum(); - fileChecksums.put(paginatedFile.getFileId(), fileChecksum); - fileSizes.put(paginatedFile.getFileId(), paginatedFile.getSize()); + for (final ComponentFile file : files) + if (file != null) { + final long fileChecksum = file.calculateChecksum(); + fileChecksums.put(file.getFileId(), fileChecksum); + fileSizes.put(file.getFileId(), file.getSize()); } final DatabaseAlignRequest request = new DatabaseAlignRequest(getName(), getSchema().getEmbedded().toJSON().toString(), fileChecksums, fileSizes); diff --git a/server/src/main/java/com/arcadedb/server/ha/message/CommandForwardResponse.java b/server/src/main/java/com/arcadedb/server/ha/message/CommandForwardResponse.java index 35b1c3a10..9ad8dedd9 100755 --- a/server/src/main/java/com/arcadedb/server/ha/message/CommandForwardResponse.java +++ b/server/src/main/java/com/arcadedb/server/ha/message/CommandForwardResponse.java @@ -30,9 +30,9 @@ import com.arcadedb.query.sql.executor.ResultInternal; import com.arcadedb.query.sql.executor.ResultSet; import com.arcadedb.schema.DocumentType; +import com.arcadedb.serializer.json.JSONObject; import com.arcadedb.server.ArcadeDBServer; import com.arcadedb.server.ha.HAServer; -import com.arcadedb.serializer.json.JSONObject; import java.util.*; diff --git a/server/src/main/java/com/arcadedb/server/ha/message/DatabaseAlignRequest.java b/server/src/main/java/com/arcadedb/server/ha/message/DatabaseAlignRequest.java index f9ff7157e..c8c99c3c0 100755 --- a/server/src/main/java/com/arcadedb/server/ha/message/DatabaseAlignRequest.java +++ b/server/src/main/java/com/arcadedb/server/ha/message/DatabaseAlignRequest.java @@ -20,7 +20,7 @@ import com.arcadedb.database.Binary; import com.arcadedb.database.DatabaseInternal; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.log.LogManager; import com.arcadedb.server.ArcadeDBServer; import com.arcadedb.server.ha.HAServer; @@ -95,7 +95,7 @@ public HACommand execute(final HAServer server, final String remoteServerName, f for (final Map.Entry entry : fileSizes.entrySet()) { final Integer fileId = entry.getKey(); - final PaginatedFile file = database.getFileManager().getFile(fileId); + final ComponentFile file = database.getFileManager().getFile(fileId); final Long leaderFileSize = entry.getValue(); if (file.getSize() < leaderFileSize) { diff --git a/server/src/main/java/com/arcadedb/server/ha/message/DatabaseChangeStructureRequest.java b/server/src/main/java/com/arcadedb/server/ha/message/DatabaseChangeStructureRequest.java index e6c2936f4..05249c884 100755 --- a/server/src/main/java/com/arcadedb/server/ha/message/DatabaseChangeStructureRequest.java +++ b/server/src/main/java/com/arcadedb/server/ha/message/DatabaseChangeStructureRequest.java @@ -20,12 +20,12 @@ import com.arcadedb.database.Binary; import com.arcadedb.database.DatabaseInternal; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.log.LogManager; +import com.arcadedb.serializer.json.JSONObject; import com.arcadedb.server.ArcadeDBServer; import com.arcadedb.server.ha.HAServer; import com.arcadedb.server.ha.ReplicationException; -import com.arcadedb.serializer.json.JSONObject; import java.io.*; import java.util.*; @@ -106,7 +106,7 @@ public HACommand execute(final HAServer server, final String remoteServerName, f updateFiles(db); // RELOAD SCHEMA - db.getSchema().getEmbedded().load(PaginatedFile.MODE.READ_WRITE, true); + db.getSchema().getEmbedded().load(ComponentFile.MODE.READ_WRITE, true); return new DatabaseChangeStructureResponse(); } catch (final Exception e) { diff --git a/server/src/main/java/com/arcadedb/server/ha/message/DatabaseStructureRequest.java b/server/src/main/java/com/arcadedb/server/ha/message/DatabaseStructureRequest.java index 6aa4a8a7c..7dbc46412 100755 --- a/server/src/main/java/com/arcadedb/server/ha/message/DatabaseStructureRequest.java +++ b/server/src/main/java/com/arcadedb/server/ha/message/DatabaseStructureRequest.java @@ -20,7 +20,7 @@ import com.arcadedb.database.Binary; import com.arcadedb.database.DatabaseInternal; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.network.binary.NetworkProtocolException; import com.arcadedb.schema.EmbeddedSchema; import com.arcadedb.server.ArcadeDBServer; @@ -55,7 +55,7 @@ public HACommand execute(final HAServer server, final String remoteServerName, f schemaJson = "{}"; final Map fileNames = new HashMap<>(); - for (final PaginatedFile f : db.getFileManager().getFiles()) + for (final ComponentFile f : db.getFileManager().getFiles()) if (f != null) fileNames.put(f.getFileId(), f.getFileName()); diff --git a/server/src/main/java/com/arcadedb/server/ha/message/FileContentRequest.java b/server/src/main/java/com/arcadedb/server/ha/message/FileContentRequest.java index 9974d4415..f572126df 100755 --- a/server/src/main/java/com/arcadedb/server/ha/message/FileContentRequest.java +++ b/server/src/main/java/com/arcadedb/server/ha/message/FileContentRequest.java @@ -20,14 +20,17 @@ import com.arcadedb.database.Binary; import com.arcadedb.database.DatabaseInternal; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.engine.ImmutablePage; import com.arcadedb.engine.PageId; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.PaginatedComponentFile; +import com.arcadedb.log.LogManager; import com.arcadedb.network.binary.NetworkProtocolException; import com.arcadedb.server.ArcadeDBServer; import com.arcadedb.server.ha.HAServer; import java.io.*; +import java.util.logging.*; public class FileContentRequest extends HAAbstractCommand { private String databaseName; @@ -49,36 +52,41 @@ public FileContentRequest(final String dbName, final int fileId, final int pageF @Override public HACommand execute(final HAServer server, final String remoteServerName, final long messageNumber) { final DatabaseInternal db = (DatabaseInternal) server.getServer().getDatabase(databaseName); - final PaginatedFile file = db.getFileManager().getFile(fileId); - final int pageSize = file.getPageSize(); + final ComponentFile file = db.getFileManager().getFile(fileId); - try { - final int totalPages = (int) (file.getSize() / pageSize); + if (file instanceof PaginatedComponentFile) { + final int pageSize = ((PaginatedComponentFile) file).getPageSize(); - final Binary pagesContent = new Binary(); + try { + final int totalPages = (int) (file.getSize() / pageSize); - int pages = 0; + final Binary pagesContent = new Binary(); - if (toPageInclusive == -1) - toPageInclusive = totalPages - 1; + int pages = 0; - for (int i = fromPageInclusive; i <= toPageInclusive && pages < CHUNK_MAX_PAGES; ++i) { - final PageId pageId = new PageId(fileId, i); - final ImmutablePage page = db.getPageManager().getImmutablePage(pageId, pageSize, false, false); - pagesContent.putByteArray(page.getContent().array(), pageSize); + if (toPageInclusive == -1) + toPageInclusive = totalPages - 1; - ++pages; - } + for (int i = fromPageInclusive; i <= toPageInclusive && pages < CHUNK_MAX_PAGES; ++i) { + final PageId pageId = new PageId(fileId, i); + final ImmutablePage page = db.getPageManager().getImmutablePage(pageId, pageSize, false, false); + pagesContent.putByteArray(page.getContent().array(), pageSize); + + ++pages; + } - final boolean last = pages > toPageInclusive; + final boolean last = pages > toPageInclusive; - pagesContent.flip(); + pagesContent.flip(); - return new FileContentResponse(databaseName, fileId, file.getFileName(), fromPageInclusive, pagesContent, pages, last); + return new FileContentResponse(databaseName, fileId, file.getFileName(), fromPageInclusive, pagesContent, pages, last); - } catch (final IOException e) { - throw new NetworkProtocolException("Cannot load pages", e); + } catch (final IOException e) { + throw new NetworkProtocolException("Cannot load pages", e); + } } + LogManager.instance().log(this, Level.SEVERE, "Cannot read not paginated file %s from the leader", file.getFileName()); + throw new NetworkProtocolException("Cannot read not paginated file " + file.getFileName() + " from the leader"); } @Override diff --git a/server/src/main/java/com/arcadedb/server/ha/message/FileContentResponse.java b/server/src/main/java/com/arcadedb/server/ha/message/FileContentResponse.java index b46a6af60..f69eee117 100755 --- a/server/src/main/java/com/arcadedb/server/ha/message/FileContentResponse.java +++ b/server/src/main/java/com/arcadedb/server/ha/message/FileContentResponse.java @@ -20,10 +20,11 @@ import com.arcadedb.database.Binary; import com.arcadedb.database.DatabaseInternal; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.engine.MutablePage; import com.arcadedb.engine.PageId; import com.arcadedb.engine.PageManager; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.PaginatedComponentFile; import com.arcadedb.log.LogManager; import com.arcadedb.server.ArcadeDBServer; import com.arcadedb.server.ha.HAServer; @@ -76,30 +77,34 @@ public HACommand execute(final HAServer server, final String remoteServerName, f final PageManager pageManager = database.getPageManager(); try { - final PaginatedFile file = database.getFileManager().getOrCreateFile(fileId, database.getDatabasePath() + File.separator + fileName); + final ComponentFile file = database.getFileManager().getOrCreateFile(fileId, database.getDatabasePath() + File.separator + fileName); if (totalPages == 0) return null; - final int pageSize = file.getPageSize(); - - if (pagesContent.size() != totalPages * pageSize) { - LogManager.instance().log(this, Level.SEVERE, "Error on received chunk for file '%s': size=%s, expected=%s (totalPages=%d)", file.getFileName(), - FileUtils.getSizeAsString(pagesContent.size()), FileUtils.getSizeAsString((long) totalPages * pageSize), totalPages); - throw new ReplicationException("Invalid file chunk"); - } - - for (int i = 0; i < totalPages; ++i) { - final PageId pageId = new PageId(file.getFileId(), pageFromInclusive + i); - - final MutablePage page = new MutablePage(pageManager, pageId, pageSize); - System.arraycopy(pagesContent.getContent(), i * pageSize, page.getTrackable().getContent(), 0, pageSize); - page.loadMetadata(); - pageManager.overwritePage(page); - - LogManager.instance().log(this, Level.FINE, "Overwritten page %s v%d from the leader", null,// - pageId, page.getVersion()); - } + if (file instanceof PaginatedComponentFile) { + final PaginatedComponentFile pFile = (PaginatedComponentFile) file; + final int pageSize = pFile.getPageSize(); + + if (pagesContent.size() != totalPages * pageSize) { + LogManager.instance().log(this, Level.SEVERE, "Error on received chunk for file '%s': size=%s, expected=%s (totalPages=%d)", file.getFileName(), + FileUtils.getSizeAsString(pagesContent.size()), FileUtils.getSizeAsString((long) totalPages * pageSize), totalPages); + throw new ReplicationException("Invalid file chunk"); + } + + for (int i = 0; i < totalPages; ++i) { + final PageId pageId = new PageId(file.getFileId(), pageFromInclusive + i); + + final MutablePage page = new MutablePage(pageManager, pageId, pageSize); + System.arraycopy(pagesContent.getContent(), i * pageSize, page.getTrackable().getContent(), 0, pageSize); + page.loadMetadata(); + pageManager.overwritePage(page); + + LogManager.instance().log(this, Level.FINE, "Overwritten page %s v%d from the leader", null,// + pageId, page.getVersion()); + } + } else + LogManager.instance().log(this, Level.SEVERE, "Cannot write not paginated file %s from the leader", fileName); } catch (final IOException e) { LogManager.instance().log(this, Level.SEVERE, "Error on installing file content from leader server", e); diff --git a/server/src/main/java/com/arcadedb/server/ha/message/TxRequest.java b/server/src/main/java/com/arcadedb/server/ha/message/TxRequest.java index 685240846..699adae8a 100755 --- a/server/src/main/java/com/arcadedb/server/ha/message/TxRequest.java +++ b/server/src/main/java/com/arcadedb/server/ha/message/TxRequest.java @@ -20,7 +20,7 @@ import com.arcadedb.database.Binary; import com.arcadedb.database.DatabaseInternal; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.engine.WALException; import com.arcadedb.engine.WALFile; import com.arcadedb.log.LogManager; @@ -81,7 +81,7 @@ public HACommand execute(final HAServer server, final String remoteServerName, f changeStructure.updateFiles(db); // RELOAD THE SCHEMA BUT NOT INITIALIZE THE COMPONENTS (SOME NEW PAGES COULD BE IN THE TX ITSELF) - db.getSchema().getEmbedded().load(PaginatedFile.MODE.READ_WRITE, false); + db.getSchema().getEmbedded().load(ComponentFile.MODE.READ_WRITE, false); } catch (final Exception e) { LogManager.instance().log(this, Level.SEVERE, "Error on changing database structure request from the leader node", e); throw new ReplicationException("Error on changing database structure request from the leader node", e); diff --git a/server/src/main/java/com/arcadedb/server/http/handler/AbstractQueryHandler.java b/server/src/main/java/com/arcadedb/server/http/handler/AbstractQueryHandler.java index 1135855e7..a806c1661 100644 --- a/server/src/main/java/com/arcadedb/server/http/handler/AbstractQueryHandler.java +++ b/server/src/main/java/com/arcadedb/server/http/handler/AbstractQueryHandler.java @@ -31,9 +31,9 @@ import com.arcadedb.schema.VertexType; import com.arcadedb.serializer.JsonGraphSerializer; import com.arcadedb.serializer.JsonSerializer; -import com.arcadedb.server.http.HttpServer; import com.arcadedb.serializer.json.JSONArray; import com.arcadedb.serializer.json.JSONObject; +import com.arcadedb.server.http.HttpServer; import java.util.*; import java.util.stream.*; diff --git a/server/src/main/java/com/arcadedb/server/http/handler/DatabaseAbstractHandler.java b/server/src/main/java/com/arcadedb/server/http/handler/DatabaseAbstractHandler.java index 5757d09ce..f127db17e 100644 --- a/server/src/main/java/com/arcadedb/server/http/handler/DatabaseAbstractHandler.java +++ b/server/src/main/java/com/arcadedb/server/http/handler/DatabaseAbstractHandler.java @@ -61,7 +61,7 @@ public ExecutionResponse execute(final HttpServerExchange exchange, final Server database = httpServer.getServer().getDatabase(databaseName.getFirst(), false, false); - current = DatabaseContext.INSTANCE.getContext(database.getDatabasePath()); + current = DatabaseContext.INSTANCE.getContextIfExists(database.getDatabasePath()); if (current != null && !current.transactions.isEmpty() && current.transactions.get(0).isActive()) { LogManager.instance().log(this, Level.WARNING, "Found a pending transaction from a previous operation. Rolling it back..."); cleanTL(database, current); @@ -69,7 +69,7 @@ public ExecutionResponse execute(final HttpServerExchange exchange, final Server activeSession = setTransactionInThreadLocal(exchange, database, user); - current = DatabaseContext.INSTANCE.getContext(database.getDatabasePath()); + current = DatabaseContext.INSTANCE.getContextIfExists(database.getDatabasePath()); if (current == null) // INITIALIZE THE DATABASE CONTEXT current = DatabaseContext.INSTANCE.init((DatabaseInternal) database); @@ -123,7 +123,7 @@ else if (database != null) { private void cleanTL(final Database database, DatabaseContext.DatabaseContextTL current) { if (current == null) - current = DatabaseContext.INSTANCE.getContext(database.getDatabasePath()); + current = DatabaseContext.INSTANCE.getContextIfExists(database.getDatabasePath()); if (current != null) { TransactionContext tx; diff --git a/server/src/main/java/com/arcadedb/server/http/handler/GetDatabasesHandler.java b/server/src/main/java/com/arcadedb/server/http/handler/GetDatabasesHandler.java index b8c1da422..4f1f4485f 100644 --- a/server/src/main/java/com/arcadedb/server/http/handler/GetDatabasesHandler.java +++ b/server/src/main/java/com/arcadedb/server/http/handler/GetDatabasesHandler.java @@ -18,11 +18,11 @@ */ package com.arcadedb.server.http.handler; +import com.arcadedb.serializer.json.JSONArray; +import com.arcadedb.serializer.json.JSONObject; import com.arcadedb.server.http.HttpServer; import com.arcadedb.server.security.ServerSecurityUser; import io.undertow.server.HttpServerExchange; -import com.arcadedb.serializer.json.JSONArray; -import com.arcadedb.serializer.json.JSONObject; import java.util.*; diff --git a/server/src/main/java/com/arcadedb/server/http/handler/PostCreateDatabaseHandler.java b/server/src/main/java/com/arcadedb/server/http/handler/PostCreateDatabaseHandler.java index e71b41c30..5949b1be4 100644 --- a/server/src/main/java/com/arcadedb/server/http/handler/PostCreateDatabaseHandler.java +++ b/server/src/main/java/com/arcadedb/server/http/handler/PostCreateDatabaseHandler.java @@ -20,7 +20,7 @@ import com.arcadedb.GlobalConfiguration; import com.arcadedb.database.DatabaseInternal; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.network.binary.ServerIsNotTheLeaderException; import com.arcadedb.server.ArcadeDBServer; import com.arcadedb.server.ha.ReplicatedDatabase; @@ -61,7 +61,7 @@ public ExecutionResponse execute(final HttpServerExchange exchange, final Server server.getServerMetrics().meter("http.create-database").hit(); - final DatabaseInternal db = server.createDatabase(databaseName, PaginatedFile.MODE.READ_WRITE); + final DatabaseInternal db = server.createDatabase(databaseName, ComponentFile.MODE.READ_WRITE); if (server.getConfiguration().getValueAsBoolean(GlobalConfiguration.HA_ENABLED)) ((ReplicatedDatabase) db).createInReplicas(); diff --git a/server/src/main/java/com/arcadedb/server/http/handler/PostCreateDocumentHandler.java b/server/src/main/java/com/arcadedb/server/http/handler/PostCreateDocumentHandler.java index e3c26c2f7..7a73464cc 100644 --- a/server/src/main/java/com/arcadedb/server/http/handler/PostCreateDocumentHandler.java +++ b/server/src/main/java/com/arcadedb/server/http/handler/PostCreateDocumentHandler.java @@ -24,10 +24,10 @@ import com.arcadedb.schema.DocumentType; import com.arcadedb.schema.EdgeType; import com.arcadedb.schema.VertexType; +import com.arcadedb.serializer.json.JSONObject; import com.arcadedb.server.http.HttpServer; import com.arcadedb.server.security.ServerSecurityUser; import io.undertow.server.HttpServerExchange; -import com.arcadedb.serializer.json.JSONObject; import java.io.*; diff --git a/server/src/main/java/com/arcadedb/server/http/handler/PostCreateUserHandler.java b/server/src/main/java/com/arcadedb/server/http/handler/PostCreateUserHandler.java index 3d016a22c..ae0516845 100644 --- a/server/src/main/java/com/arcadedb/server/http/handler/PostCreateUserHandler.java +++ b/server/src/main/java/com/arcadedb/server/http/handler/PostCreateUserHandler.java @@ -18,11 +18,11 @@ */ package com.arcadedb.server.http.handler; +import com.arcadedb.serializer.json.JSONObject; import com.arcadedb.server.http.HttpServer; import com.arcadedb.server.security.ServerSecurityException; import com.arcadedb.server.security.ServerSecurityUser; import io.undertow.server.HttpServerExchange; -import com.arcadedb.serializer.json.JSONObject; /** * Creates a new server user. diff --git a/server/src/main/java/com/arcadedb/server/http/handler/PostServerCommandHandler.java b/server/src/main/java/com/arcadedb/server/http/handler/PostServerCommandHandler.java index 52ade4a99..ccb65bb08 100644 --- a/server/src/main/java/com/arcadedb/server/http/handler/PostServerCommandHandler.java +++ b/server/src/main/java/com/arcadedb/server/http/handler/PostServerCommandHandler.java @@ -22,7 +22,7 @@ import com.arcadedb.database.Binary; import com.arcadedb.database.Database; import com.arcadedb.database.DatabaseInternal; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.exception.CommandExecutionException; import com.arcadedb.network.binary.ServerIsNotTheLeaderException; import com.arcadedb.serializer.json.JSONArray; @@ -173,7 +173,7 @@ private void createDatabase(final String command) { final ArcadeDBServer server = httpServer.getServer(); server.getServerMetrics().meter("http.create-database").hit(); - final DatabaseInternal db = server.createDatabase(databaseName, PaginatedFile.MODE.READ_WRITE); + final DatabaseInternal db = server.createDatabase(databaseName, ComponentFile.MODE.READ_WRITE); if (server.getConfiguration().getValueAsBoolean(GlobalConfiguration.HA_ENABLED)) ((ReplicatedDatabase) db).createInReplicas(); diff --git a/server/src/main/java/com/arcadedb/server/http/ssl/KeystoreType.java b/server/src/main/java/com/arcadedb/server/http/ssl/KeystoreType.java index 97ebe1746..41d6e5de9 100644 --- a/server/src/main/java/com/arcadedb/server/http/ssl/KeystoreType.java +++ b/server/src/main/java/com/arcadedb/server/http/ssl/KeystoreType.java @@ -1,6 +1,6 @@ package com.arcadedb.server.http.ssl; -import static java.util.Arrays.stream; +import static java.util.Arrays.*; public enum KeystoreType { diff --git a/server/src/main/java/com/arcadedb/server/http/ssl/SslUtils.java b/server/src/main/java/com/arcadedb/server/http/ssl/SslUtils.java index 2e223a0a1..381d53262 100644 --- a/server/src/main/java/com/arcadedb/server/http/ssl/SslUtils.java +++ b/server/src/main/java/com/arcadedb/server/http/ssl/SslUtils.java @@ -2,13 +2,10 @@ import com.arcadedb.server.security.ServerSecurityException; -import java.io.IOException; -import java.io.InputStream; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.cert.CertificateException; -import java.util.function.Supplier; +import java.io.*; +import java.security.*; +import java.security.cert.*; +import java.util.function.*; public class SslUtils { diff --git a/server/src/main/java/com/arcadedb/server/http/ws/WebSocketReceiveListener.java b/server/src/main/java/com/arcadedb/server/http/ws/WebSocketReceiveListener.java index d6902998d..8b2aa0b7b 100644 --- a/server/src/main/java/com/arcadedb/server/http/ws/WebSocketReceiveListener.java +++ b/server/src/main/java/com/arcadedb/server/http/ws/WebSocketReceiveListener.java @@ -21,14 +21,14 @@ import com.arcadedb.GlobalConfiguration; import com.arcadedb.exception.DatabaseOperationException; import com.arcadedb.log.LogManager; +import com.arcadedb.serializer.json.JSONException; +import com.arcadedb.serializer.json.JSONObject; import com.arcadedb.server.http.HttpServer; import io.undertow.websockets.core.AbstractReceiveListener; import io.undertow.websockets.core.BufferedTextMessage; import io.undertow.websockets.core.StreamSourceFrameChannel; import io.undertow.websockets.core.WebSocketChannel; import io.undertow.websockets.core.WebSockets; -import com.arcadedb.serializer.json.JSONException; -import com.arcadedb.serializer.json.JSONObject; import java.io.*; import java.util.*; diff --git a/server/src/main/java/com/arcadedb/server/security/SecurityGroupFileRepository.java b/server/src/main/java/com/arcadedb/server/security/SecurityGroupFileRepository.java index 473bfac80..98b05b3a7 100644 --- a/server/src/main/java/com/arcadedb/server/security/SecurityGroupFileRepository.java +++ b/server/src/main/java/com/arcadedb/server/security/SecurityGroupFileRepository.java @@ -21,10 +21,10 @@ import com.arcadedb.database.DatabaseFactory; import com.arcadedb.log.LogManager; import com.arcadedb.security.SecurityManager; -import com.arcadedb.utility.Callable; -import com.arcadedb.utility.FileUtils; import com.arcadedb.serializer.json.JSONArray; import com.arcadedb.serializer.json.JSONObject; +import com.arcadedb.utility.Callable; +import com.arcadedb.utility.FileUtils; import java.io.*; import java.util.*; diff --git a/server/src/main/java/com/arcadedb/server/security/ServerSecurity.java b/server/src/main/java/com/arcadedb/server/security/ServerSecurity.java index 69862eba7..c52bd2db6 100644 --- a/server/src/main/java/com/arcadedb/server/security/ServerSecurity.java +++ b/server/src/main/java/com/arcadedb/server/security/ServerSecurity.java @@ -24,6 +24,8 @@ import com.arcadedb.database.DatabaseInternal; import com.arcadedb.log.LogManager; import com.arcadedb.security.SecurityManager; +import com.arcadedb.serializer.json.JSONException; +import com.arcadedb.serializer.json.JSONObject; import com.arcadedb.server.ArcadeDBServer; import com.arcadedb.server.DefaultConsoleReader; import com.arcadedb.server.ServerException; @@ -32,8 +34,6 @@ import com.arcadedb.server.security.credential.DefaultCredentialsValidator; import com.arcadedb.utility.AnsiCode; import com.arcadedb.utility.LRUCache; -import com.arcadedb.serializer.json.JSONException; -import com.arcadedb.serializer.json.JSONObject; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; diff --git a/server/src/main/java/com/arcadedb/server/security/ServerSecurityDatabaseUser.java b/server/src/main/java/com/arcadedb/server/security/ServerSecurityDatabaseUser.java index 8aa35e080..0662bcfe8 100644 --- a/server/src/main/java/com/arcadedb/server/security/ServerSecurityDatabaseUser.java +++ b/server/src/main/java/com/arcadedb/server/security/ServerSecurityDatabaseUser.java @@ -19,7 +19,7 @@ package com.arcadedb.server.security; import com.arcadedb.database.DatabaseInternal; -import com.arcadedb.engine.PaginatedFile; +import com.arcadedb.engine.ComponentFile; import com.arcadedb.schema.DocumentType; import com.arcadedb.security.SecurityDatabaseUser; import com.arcadedb.security.SecurityManager; @@ -149,7 +149,7 @@ public synchronized void updateFileAccess(final DatabaseInternal database, final if (configuredGroups == null) return; - final List files = database.getFileManager().getFiles(); + final List files = database.getFileManager().getFiles(); fileAccessMap = new boolean[files.size()][]; diff --git a/server/src/main/java/com/arcadedb/server/security/ServerSecurityUser.java b/server/src/main/java/com/arcadedb/server/security/ServerSecurityUser.java index 70892479a..181cab701 100644 --- a/server/src/main/java/com/arcadedb/server/security/ServerSecurityUser.java +++ b/server/src/main/java/com/arcadedb/server/security/ServerSecurityUser.java @@ -22,9 +22,9 @@ import com.arcadedb.database.DatabaseInternal; import com.arcadedb.security.SecurityManager; import com.arcadedb.security.SecurityUser; -import com.arcadedb.server.ArcadeDBServer; import com.arcadedb.serializer.json.JSONArray; import com.arcadedb.serializer.json.JSONObject; +import com.arcadedb.server.ArcadeDBServer; import java.util.*; import java.util.concurrent.*; diff --git a/server/src/test/java/com/arcadedb/server/ServerDefaultDatabasesIT.java b/server/src/test/java/com/arcadedb/server/ServerDefaultDatabasesIT.java index 277eb8764..00752a520 100644 --- a/server/src/test/java/com/arcadedb/server/ServerDefaultDatabasesIT.java +++ b/server/src/test/java/com/arcadedb/server/ServerDefaultDatabasesIT.java @@ -18,8 +18,6 @@ */ package com.arcadedb.server; -import static com.arcadedb.engine.PaginatedFile.MODE.READ_WRITE; - import com.arcadedb.ContextConfiguration; import com.arcadedb.GlobalConfiguration; import com.arcadedb.database.DatabaseInternal; @@ -29,6 +27,8 @@ import java.io.*; +import static com.arcadedb.engine.ComponentFile.MODE.READ_WRITE; + public class ServerDefaultDatabasesIT extends BaseGraphServerTest { @Override diff --git a/server/src/test/java/com/arcadedb/server/ServerReadOnlyDatabasesIT.java b/server/src/test/java/com/arcadedb/server/ServerReadOnlyDatabasesIT.java index 6fd07b597..fc002bebb 100644 --- a/server/src/test/java/com/arcadedb/server/ServerReadOnlyDatabasesIT.java +++ b/server/src/test/java/com/arcadedb/server/ServerReadOnlyDatabasesIT.java @@ -25,7 +25,7 @@ import java.io.*; -import static com.arcadedb.engine.PaginatedFile.MODE.READ_ONLY; +import static com.arcadedb.engine.ComponentFile.MODE.READ_ONLY; public class ServerReadOnlyDatabasesIT extends BaseGraphServerTest { diff --git a/server/src/test/java/com/arcadedb/server/ha/IndexOperations3ServersIT.java b/server/src/test/java/com/arcadedb/server/ha/IndexOperations3ServersIT.java index 915189a9e..2e7dc4027 100644 --- a/server/src/test/java/com/arcadedb/server/ha/IndexOperations3ServersIT.java +++ b/server/src/test/java/com/arcadedb/server/ha/IndexOperations3ServersIT.java @@ -25,9 +25,9 @@ import com.arcadedb.log.LogManager; import com.arcadedb.schema.Schema; import com.arcadedb.schema.VertexType; +import com.arcadedb.serializer.json.JSONObject; import com.arcadedb.server.BaseGraphServerTest; import com.arcadedb.server.TestServerHelper; -import com.arcadedb.serializer.json.JSONObject; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/server/src/test/java/com/arcadedb/server/ha/ReplicationChangeSchemaIT.java b/server/src/test/java/com/arcadedb/server/ha/ReplicationChangeSchemaIT.java index 87c2220e8..05a75eb1a 100644 --- a/server/src/test/java/com/arcadedb/server/ha/ReplicationChangeSchemaIT.java +++ b/server/src/test/java/com/arcadedb/server/ha/ReplicationChangeSchemaIT.java @@ -37,7 +37,7 @@ import java.util.*; public class ReplicationChangeSchemaIT extends ReplicationServerIT { - private final Database[] databases = new Database[getServerCount()]; + private final Database[] databases = new Database[getServerCount()]; private final Map schemaFiles = new LinkedHashMap<>(getServerCount()); @Test @@ -156,7 +156,7 @@ private void testOnAllServers(final Callable callback) { private String isInSchemaFile(final Database database, final String match) { try { - final String content = FileUtils.readFileAsString(database.getSchema().getEmbedded().getConfigurationFile(), "UTF8"); + final String content = FileUtils.readFileAsString(database.getSchema().getEmbedded().getConfigurationFile()); Assertions.assertTrue(content.contains(match)); return content; } catch (final IOException e) { @@ -167,7 +167,7 @@ private String isInSchemaFile(final Database database, final String match) { private String isNotInSchemaFile(final Database database, final String match) { try { - final String content = FileUtils.readFileAsString(database.getSchema().getEmbedded().getConfigurationFile(), "UTF8"); + final String content = FileUtils.readFileAsString(database.getSchema().getEmbedded().getConfigurationFile()); Assertions.assertFalse(content.contains(match)); return content; } catch (final IOException e) { diff --git a/server/src/test/java/com/arcadedb/server/security/ServerProfilingIT.java b/server/src/test/java/com/arcadedb/server/security/ServerProfilingIT.java index ec207a44a..57bf8d21b 100644 --- a/server/src/test/java/com/arcadedb/server/security/ServerProfilingIT.java +++ b/server/src/test/java/com/arcadedb/server/security/ServerProfilingIT.java @@ -32,12 +32,12 @@ import com.arcadedb.remote.RemoteDatabase; import com.arcadedb.schema.Schema; import com.arcadedb.security.SecurityDatabaseUser; +import com.arcadedb.serializer.json.JSONArray; +import com.arcadedb.serializer.json.JSONObject; import com.arcadedb.server.ArcadeDBServer; import com.arcadedb.server.TestServerHelper; import com.arcadedb.utility.CallableNoReturn; import com.arcadedb.utility.FileUtils; -import com.arcadedb.serializer.json.JSONArray; -import com.arcadedb.serializer.json.JSONObject; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; @@ -493,7 +493,7 @@ void testGroupsReload() throws Throwable { final File file = new File("./target/config/server-groups.json"); Assertions.assertTrue(file.exists()); - final JSONObject json = new JSONObject(FileUtils.readFileAsString(file, "UTF8")); + final JSONObject json = new JSONObject(FileUtils.readFileAsString(file)); final byte[] original = json.toString(2).getBytes(); diff --git a/server/src/test/java/com/arcadedb/server/security/ServerSecurityIT.java b/server/src/test/java/com/arcadedb/server/security/ServerSecurityIT.java index 33b748894..27c7c3a4e 100644 --- a/server/src/test/java/com/arcadedb/server/security/ServerSecurityIT.java +++ b/server/src/test/java/com/arcadedb/server/security/ServerSecurityIT.java @@ -20,9 +20,9 @@ import com.arcadedb.ContextConfiguration; import com.arcadedb.GlobalConfiguration; +import com.arcadedb.serializer.json.JSONObject; import com.arcadedb.server.TestServerHelper; import com.arcadedb.utility.FileUtils; -import com.arcadedb.serializer.json.JSONObject; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach;