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;