[ASTERIXDB-3259][MTD] Add database-aware entity types
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
Add database-aware entity types that should be used
for cloud deployment.
Change-Id: I6508b9c9a34f8c35d94d4a1bf866c6f0e236a11f
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17775
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Ali Alsuliman <ali.al.solaiman@gmail.com>
Reviewed-by: Ali Alsuliman <ali.al.solaiman@gmail.com>
Reviewed-by: Wail Alkowaileet <wael.y.k@gmail.com>
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataIndexImmutableProperties.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataIndexImmutableProperties.java
index 3426d74..006632a 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataIndexImmutableProperties.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataIndexImmutableProperties.java
@@ -23,7 +23,7 @@
public static final int FIRST_AVAILABLE_EXTENSION_METADATA_DATASET_ID = 52;
public static final int FIRST_AVAILABLE_USER_DATASET_ID = 100;
public static final int METADATA_DATASETS_PARTITIONS = 1;
- public static final int METADATA_DATASETS_COUNT = 17;
+ public static final int METADATA_DATASETS_COUNT = 18;
private final String indexName;
private final int datasetId;
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/CompactionPolicyEntity.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/CompactionPolicyEntity.java
index 4cfbdff..b0d335e 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/CompactionPolicyEntity.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/CompactionPolicyEntity.java
@@ -22,6 +22,7 @@
import static org.apache.asterix.metadata.bootstrap.MetadataPrimaryIndexes.PROPERTIES_COMPACTION_POLICY;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_CLASSNAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_COMPACTION_POLICY;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATABASE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATAVERSE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.RECORD_NAME_COMPACTION_POLICY;
@@ -40,6 +41,13 @@
Arrays.asList(List.of(FIELD_NAME_DATAVERSE_NAME), List.of(FIELD_NAME_COMPACTION_POLICY)), 0,
compactionPolicyType(), true, new int[] { 0, 1 }), 2, -1);
+ private static final CompactionPolicyEntity DB_COMPACTION_POLICY =
+ new CompactionPolicyEntity(new MetadataIndex(PROPERTIES_COMPACTION_POLICY, 4,
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING },
+ Arrays.asList(List.of(FIELD_NAME_DATABASE_NAME), List.of(FIELD_NAME_DATAVERSE_NAME),
+ List.of(FIELD_NAME_COMPACTION_POLICY)),
+ 0, databaseCompactionPolicyType(), true, new int[] { 0, 1, 2 }), 3, 0);
+
private final int payloadPosition;
private final MetadataIndex index;
private final int databaseNameIndex;
@@ -99,4 +107,17 @@
//IsOpen?
true);
}
+
+ private static ARecordType databaseCompactionPolicyType() {
+ return MetadataRecordTypes.createRecordType(
+ // RecordTypeName
+ RECORD_NAME_COMPACTION_POLICY,
+ // FieldNames
+ new String[] { FIELD_NAME_DATABASE_NAME, FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_COMPACTION_POLICY,
+ FIELD_NAME_CLASSNAME },
+ // FieldTypes
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING },
+ //IsOpen?
+ true);
+ }
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DatabaseEntity.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DatabaseEntity.java
new file mode 100644
index 0000000..4982dc2
--- /dev/null
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DatabaseEntity.java
@@ -0,0 +1,111 @@
+/*
+ * 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 org.apache.asterix.metadata.bootstrap;
+
+import static org.apache.asterix.metadata.bootstrap.MetadataPrimaryIndexes.PROPERTIES_DATABASE;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATABASE_ID;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATABASE_NAME;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_PENDING_OP;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_SYSTEM_DATABASE;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_TIMESTAMP;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.RECORD_NAME_DATABASE;
+
+import java.util.List;
+
+import org.apache.asterix.om.types.ARecordType;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.asterix.om.types.IAType;
+
+public final class DatabaseEntity {
+
+ private static final DatabaseEntity DATABASE =
+ new DatabaseEntity(
+ new MetadataIndex(PROPERTIES_DATABASE, 2, new IAType[] { BuiltinType.ASTRING },
+ List.of(List.of(FIELD_NAME_DATABASE_NAME)), 0, databaseType(), true, new int[] { 0 }),
+ 1, 0);
+
+ private final int payloadPosition;
+ private final MetadataIndex index;
+ private final int databaseNameIndex;
+ private final int databaseIdIndex;
+ private final int systemDatabaseIndex;
+ private final int timestampIndex;
+ private final int pendingOpIndex;
+
+ private DatabaseEntity(MetadataIndex index, int payloadPosition, int startIndex) {
+ this.index = index;
+ this.payloadPosition = payloadPosition;
+ this.databaseNameIndex = startIndex++;
+ this.databaseIdIndex = startIndex++;
+ this.systemDatabaseIndex = startIndex++;
+ this.timestampIndex = startIndex++;
+ this.pendingOpIndex = startIndex++;
+ }
+
+ public static DatabaseEntity of(boolean cloudDeployment) {
+ return DATABASE;
+ }
+
+ public MetadataIndex getIndex() {
+ return index;
+ }
+
+ public ARecordType getRecordType() {
+ return index.getPayloadRecordType();
+ }
+
+ public int payloadPosition() {
+ return payloadPosition;
+ }
+
+ public int databaseNameIndex() {
+ return databaseNameIndex;
+ }
+
+ public int databaseIdIndex() {
+ return databaseIdIndex;
+ }
+
+ public int systemDatabaseIndex() {
+ return systemDatabaseIndex;
+ }
+
+ public int timestampIndex() {
+ return timestampIndex;
+ }
+
+ public int pendingOpIndex() {
+ return pendingOpIndex;
+ }
+
+ private static ARecordType databaseType() {
+ return MetadataRecordTypes.createRecordType(
+ // RecordTypeName
+ RECORD_NAME_DATABASE,
+ // FieldNames
+ new String[] { FIELD_NAME_DATABASE_NAME, FIELD_NAME_DATABASE_ID, FIELD_NAME_SYSTEM_DATABASE,
+ FIELD_NAME_TIMESTAMP, FIELD_NAME_PENDING_OP },
+ // FieldTypes
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.AINT32, BuiltinType.ABOOLEAN, BuiltinType.ASTRING,
+ BuiltinType.AINT32 },
+ //IsOpen?
+ true);
+ }
+}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DatasetEntity.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DatasetEntity.java
index c7928a6..0dd4cde 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DatasetEntity.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DatasetEntity.java
@@ -25,6 +25,7 @@
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.EXTERNAL_DETAILS_RECORDTYPE;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_COMPACTION_POLICY;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_COMPACTION_POLICY_PROPERTIES;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATABASE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATASET_ID;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATASET_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATASET_TYPE;
@@ -58,6 +59,14 @@
datasetType(), true, new int[] { 0, 1 }),
2, -1);
+ private static final DatasetEntity DB_DATASET = new DatasetEntity(
+ new MetadataIndex(PROPERTIES_DATASET, 4,
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING },
+ Arrays.asList(List.of(FIELD_NAME_DATABASE_NAME), List.of(FIELD_NAME_DATAVERSE_NAME),
+ List.of(FIELD_NAME_DATASET_NAME)),
+ 0, databaseDatasetType(), true, new int[] { 0, 1, 2 }),
+ 3, 0);
+
private final int payloadPosition;
private final MetadataIndex index;
private final int databaseNameIndex;
@@ -193,4 +202,26 @@
//IsOpen?
true);
}
+
+ private static ARecordType databaseDatasetType() {
+ return MetadataRecordTypes.createRecordType(
+ // RecordTypeName
+ RECORD_NAME_DATASET,
+ // FieldNames
+ new String[] { FIELD_NAME_DATABASE_NAME, FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_DATASET_NAME,
+ FIELD_NAME_DATATYPE_DATAVERSE_NAME, FIELD_NAME_DATATYPE_NAME, FIELD_NAME_DATASET_TYPE,
+ FIELD_NAME_GROUP_NAME, FIELD_NAME_COMPACTION_POLICY, FIELD_NAME_COMPACTION_POLICY_PROPERTIES,
+ FIELD_NAME_INTERNAL_DETAILS, FIELD_NAME_EXTERNAL_DETAILS, FIELD_NAME_HINTS,
+ FIELD_NAME_TIMESTAMP, FIELD_NAME_DATASET_ID, FIELD_NAME_PENDING_OP },
+ // FieldTypes
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING,
+ BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING,
+ new AOrderedListType(COMPACTION_POLICY_PROPERTIES_RECORDTYPE, null),
+ AUnionType.createUnknownableType(INTERNAL_DETAILS_RECORDTYPE),
+ AUnionType.createUnknownableType(EXTERNAL_DETAILS_RECORDTYPE),
+ new AUnorderedListType(DATASET_HINTS_RECORDTYPE, null), BuiltinType.ASTRING, BuiltinType.AINT32,
+ BuiltinType.AINT32 },
+ //IsOpen?
+ true);
+ }
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DatasourceAdapterEntity.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DatasourceAdapterEntity.java
index 41aeee9..25791a0 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DatasourceAdapterEntity.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DatasourceAdapterEntity.java
@@ -21,6 +21,7 @@
import static org.apache.asterix.metadata.bootstrap.MetadataPrimaryIndexes.PROPERTIES_DATASOURCE_ADAPTER;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_CLASSNAME;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATABASE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATAVERSE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_TIMESTAMP;
@@ -42,6 +43,14 @@
Arrays.asList(List.of(FIELD_NAME_DATAVERSE_NAME), List.of(FIELD_NAME_NAME)), 0,
datasourceAdapterType(), true, new int[] { 0, 1 }), 2, -1);
+ private static final DatasourceAdapterEntity DB_DATASOURCE_ADAPTER = new DatasourceAdapterEntity(
+ new MetadataIndex(PROPERTIES_DATASOURCE_ADAPTER, 4,
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING },
+ Arrays.asList(List.of(FIELD_NAME_DATABASE_NAME), List.of(FIELD_NAME_DATAVERSE_NAME),
+ List.of(FIELD_NAME_NAME)),
+ 0, databaseDatasourceAdapterType(), true, new int[] { 0, 1, 2 }),
+ 3, 0);
+
private final int payloadPosition;
private final MetadataIndex index;
private final int databaseNameIndex;
@@ -115,4 +124,18 @@
//IsOpen?
true);
}
+
+ private static ARecordType databaseDatasourceAdapterType() {
+ return MetadataRecordTypes.createRecordType(
+ // RecordTypeName
+ RECORD_NAME_DATASOURCE_ADAPTER,
+ // FieldNames
+ new String[] { FIELD_NAME_DATABASE_NAME, FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_NAME,
+ FIELD_NAME_CLASSNAME, FIELD_NAME_TYPE, FIELD_NAME_TIMESTAMP },
+ // FieldTypes
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING,
+ BuiltinType.ASTRING, BuiltinType.ASTRING },
+ //IsOpen?
+ true);
+ }
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DatatypeEntity.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DatatypeEntity.java
index a26f232..605eef6 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DatatypeEntity.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DatatypeEntity.java
@@ -21,6 +21,7 @@
import static org.apache.asterix.metadata.bootstrap.MetadataPrimaryIndexes.PROPERTIES_DATATYPE;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.DERIVEDTYPE_RECORDTYPE;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATABASE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATATYPE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATAVERSE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DERIVED;
@@ -43,6 +44,14 @@
datatypeType(), true, new int[] { 0, 1 }),
2, -1);
+ private static final DatatypeEntity DB_DATATYPE = new DatatypeEntity(
+ new MetadataIndex(PROPERTIES_DATATYPE, 4,
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING },
+ Arrays.asList(List.of(FIELD_NAME_DATABASE_NAME), List.of(FIELD_NAME_DATAVERSE_NAME),
+ List.of(FIELD_NAME_DATATYPE_NAME)),
+ 0, databaseDatatypeType(), true, new int[] { 0, 1, 2 }),
+ 3, 0);
+
private final int payloadPosition;
private final MetadataIndex index;
private final int databaseNameIndex;
@@ -110,4 +119,18 @@
//IsOpen?
true);
}
+
+ private static ARecordType databaseDatatypeType() {
+ return MetadataRecordTypes.createRecordType(
+ // RecordTypeName
+ RECORD_NAME_DATATYPE,
+ // FieldNames
+ new String[] { FIELD_NAME_DATABASE_NAME, FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_DATATYPE_NAME,
+ FIELD_NAME_DERIVED, FIELD_NAME_TIMESTAMP },
+ // FieldTypes
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING,
+ AUnionType.createUnknownableType(DERIVEDTYPE_RECORDTYPE), BuiltinType.ASTRING },
+ //IsOpen?
+ true);
+ }
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DataverseEntity.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DataverseEntity.java
index 8a6cc03..ca658d2 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DataverseEntity.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DataverseEntity.java
@@ -20,6 +20,7 @@
package org.apache.asterix.metadata.bootstrap;
import static org.apache.asterix.metadata.bootstrap.MetadataPrimaryIndexes.PROPERTIES_DATAVERSE;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATABASE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATAVERSE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATA_FORMAT;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_PENDING_OP;
@@ -40,6 +41,12 @@
List.of(List.of(FIELD_NAME_DATAVERSE_NAME)), 0, dataverseType(), true, new int[] { 0 }),
1, -1);
+ private static final DataverseEntity DB_DATAVERSE = new DataverseEntity(
+ new MetadataIndex(PROPERTIES_DATAVERSE, 3, new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING },
+ List.of(List.of(FIELD_NAME_DATABASE_NAME), List.of(FIELD_NAME_DATAVERSE_NAME)), 0,
+ databaseDataverseType(), true, new int[] { 0, 1 }),
+ 2, 0);
+
private final int payloadPosition;
private final MetadataIndex index;
private final int databaseNameIndex;
@@ -106,4 +113,18 @@
//IsOpen?
true);
}
+
+ private static ARecordType databaseDataverseType() {
+ return MetadataRecordTypes.createRecordType(
+ // RecordTypeName
+ RECORD_NAME_DATAVERSE,
+ // FieldNames
+ new String[] { FIELD_NAME_DATABASE_NAME, FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_DATA_FORMAT,
+ FIELD_NAME_TIMESTAMP, FIELD_NAME_PENDING_OP },
+ // FieldTypes
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING,
+ BuiltinType.AINT32 },
+ //IsOpen?
+ true);
+ }
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/ExternalFileEntity.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/ExternalFileEntity.java
index 2827fd73..47ae4d1 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/ExternalFileEntity.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/ExternalFileEntity.java
@@ -20,6 +20,7 @@
package org.apache.asterix.metadata.bootstrap;
import static org.apache.asterix.metadata.bootstrap.MetadataPrimaryIndexes.PROPERTIES_EXTERNAL_FILE;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATABASE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATASET_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATAVERSE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_FILE_MOD_TIME;
@@ -46,6 +47,13 @@
0, externalFileType(), true, new int[] { 0, 1, 2 }),
3, -1);
+ private static final ExternalFileEntity DB_EXTERNAL_FILE =
+ new ExternalFileEntity(new MetadataIndex(PROPERTIES_EXTERNAL_FILE, 5,
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.AINT32 },
+ Arrays.asList(List.of(FIELD_NAME_DATABASE_NAME), List.of(FIELD_NAME_DATAVERSE_NAME),
+ List.of(FIELD_NAME_DATASET_NAME), List.of(FIELD_NAME_FILE_NUMBER)),
+ 0, databaseExternalFileType(), true, new int[] { 0, 1, 2, 3 }), 4, 0);
+
private final int payloadPosition;
private final MetadataIndex index;
private final int databaseNameIndex;
@@ -131,4 +139,19 @@
//IsOpen?
true);
}
+
+ private static ARecordType databaseExternalFileType() {
+ return MetadataRecordTypes.createRecordType(
+ // RecordTypeName
+ RECORD_NAME_EXTERNAL_FILE,
+ // FieldNames
+ new String[] { FIELD_NAME_DATABASE_NAME, FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_DATASET_NAME,
+ FIELD_NAME_FILE_NUMBER, FIELD_NAME_FILE_NAME, FIELD_NAME_FILE_SIZE, FIELD_NAME_FILE_MOD_TIME,
+ FIELD_NAME_PENDING_OP },
+ // FieldTypes
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.AINT32,
+ BuiltinType.ASTRING, BuiltinType.AINT64, BuiltinType.ADATETIME, BuiltinType.AINT32 },
+ //IsOpen?
+ true);
+ }
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FeedConnectionEntity.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FeedConnectionEntity.java
index 4e4c0d7..710afca 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FeedConnectionEntity.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FeedConnectionEntity.java
@@ -21,6 +21,7 @@
import static org.apache.asterix.metadata.bootstrap.MetadataPrimaryIndexes.PROPERTIES_FEED_CONNECTION;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_APPLIED_FUNCTIONS;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATABASE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATASET_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATAVERSE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_FEED_NAME;
@@ -46,6 +47,13 @@
0, feedConnectionType(), true, new int[] { 0, 1, 2 }),
3, -1);
+ private static final FeedConnectionEntity DB_FEED_CONNECTION =
+ new FeedConnectionEntity(new MetadataIndex(PROPERTIES_FEED_CONNECTION, 5,
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING },
+ Arrays.asList(List.of(FIELD_NAME_DATABASE_NAME), List.of(FIELD_NAME_DATAVERSE_NAME),
+ List.of(FIELD_NAME_FEED_NAME), List.of(FIELD_NAME_DATASET_NAME)),
+ 0, databaseFeedConnectionType(), true, new int[] { 0, 1, 2, 3 }), 4, 0);
+
private final int payloadPosition;
private final MetadataIndex index;
private final int databaseNameIndex;
@@ -125,4 +133,19 @@
//IsOpen?
true);
}
+
+ private static ARecordType databaseFeedConnectionType() {
+ return MetadataRecordTypes.createRecordType(
+ // RecordTypeName
+ RECORD_NAME_FEED_CONNECTION,
+ // FieldNames
+ new String[] { FIELD_NAME_DATABASE_NAME, FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_FEED_NAME,
+ FIELD_NAME_DATASET_NAME, FIELD_NAME_RETURN_TYPE, FIELD_NAME_APPLIED_FUNCTIONS,
+ FIELD_NAME_POLICY_NAME },
+ // FieldTypes
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING,
+ BuiltinType.ASTRING, new AUnorderedListType(BuiltinType.ASTRING, null), BuiltinType.ASTRING },
+ //IsOpen?
+ true);
+ }
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FeedEntity.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FeedEntity.java
index 1270fb1..d82c298 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FeedEntity.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FeedEntity.java
@@ -22,6 +22,7 @@
import static org.apache.asterix.metadata.bootstrap.MetadataPrimaryIndexes.PROPERTIES_FEED;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FEED_ADAPTER_CONFIGURATION_RECORDTYPE;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_ADAPTER_CONFIGURATION;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATABASE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATAVERSE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_FEED_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_TIMESTAMP;
@@ -43,6 +44,15 @@
true, new int[] { 0, 1 }),
2, -1);
+ private static final FeedEntity DB_FEED =
+ new FeedEntity(
+ new MetadataIndex(PROPERTIES_FEED, 4,
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING },
+ Arrays.asList(List.of(FIELD_NAME_DATABASE_NAME), List.of(FIELD_NAME_DATAVERSE_NAME),
+ List.of(FIELD_NAME_FEED_NAME)),
+ 0, databaseFeedType(), true, new int[] { 0, 1, 2 }),
+ 3, 0);
+
private final int payloadPosition;
private final MetadataIndex index;
private final int databaseNameIndex;
@@ -110,4 +120,18 @@
//IsOpen?
true);
}
+
+ private static ARecordType databaseFeedType() {
+ return MetadataRecordTypes.createRecordType(
+ // RecordTypeName
+ RECORD_NAME_FEED,
+ // FieldNames
+ new String[] { FIELD_NAME_DATABASE_NAME, FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_FEED_NAME,
+ FIELD_NAME_ADAPTER_CONFIGURATION, FIELD_NAME_TIMESTAMP },
+ // FieldTypes
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING,
+ new AUnorderedListType(FEED_ADAPTER_CONFIGURATION_RECORDTYPE, null), BuiltinType.ASTRING },
+ //IsOpen?
+ true);
+ }
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FeedPolicyEntity.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FeedPolicyEntity.java
index 2d952e6..c22977c 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FeedPolicyEntity.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FeedPolicyEntity.java
@@ -20,6 +20,7 @@
package org.apache.asterix.metadata.bootstrap;
import static org.apache.asterix.metadata.bootstrap.MetadataPrimaryIndexes.PROPERTIES_FEED_POLICY;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATABASE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATAVERSE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DESCRIPTION;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_POLICY_NAME;
@@ -43,6 +44,14 @@
feedPolicyType(), true, new int[] { 0, 1 }),
2, -1);
+ private static final FeedPolicyEntity DB_FEED_POLICY = new FeedPolicyEntity(
+ new MetadataIndex(PROPERTIES_FEED_POLICY, 4,
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING },
+ Arrays.asList(List.of(FIELD_NAME_DATABASE_NAME), List.of(FIELD_NAME_DATAVERSE_NAME),
+ List.of(FIELD_NAME_POLICY_NAME)),
+ 0, databaseFeedPolicyType(), true, new int[] { 0, 1, 2 }),
+ 3, 0);
+
private final int payloadPosition;
private final MetadataIndex index;
private final int databaseNameIndex;
@@ -110,4 +119,18 @@
//IsOpen?
true);
}
+
+ private static ARecordType databaseFeedPolicyType() {
+ return MetadataRecordTypes.createRecordType(
+ // RecordTypeName
+ RECORD_NAME_FEED_POLICY,
+ // FieldNames
+ new String[] { FIELD_NAME_DATABASE_NAME, FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_POLICY_NAME,
+ FIELD_NAME_DESCRIPTION, FIELD_NAME_PROPERTIES },
+ // FieldTypes
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING,
+ new AUnorderedListType(POLICY_PARAMS_RECORDTYPE, null) },
+ //IsOpen?
+ true);
+ }
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FullTextConfigEntity.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FullTextConfigEntity.java
index 1c97822..6d4e331 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FullTextConfigEntity.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FullTextConfigEntity.java
@@ -20,6 +20,7 @@
package org.apache.asterix.metadata.bootstrap;
import static org.apache.asterix.metadata.bootstrap.MetadataPrimaryIndexes.PROPERTIES_FULL_TEXT_CONFIG;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATABASE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATAVERSE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_FULL_TEXT_CONFIG_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_FULL_TEXT_FILTER_PIPELINE;
@@ -43,6 +44,13 @@
fullTextConfigType(), true, new int[] { 0, 1 }),
2, -1);
+ private static final FullTextConfigEntity DB_FULL_TEXT_CONFIG =
+ new FullTextConfigEntity(new MetadataIndex(PROPERTIES_FULL_TEXT_CONFIG, 4,
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING },
+ Arrays.asList(List.of(FIELD_NAME_DATABASE_NAME), List.of(FIELD_NAME_DATAVERSE_NAME),
+ List.of(FIELD_NAME_FULL_TEXT_CONFIG_NAME)),
+ 0, databaseFullTextConfigType(), true, new int[] { 0, 1, 2 }), 3, 0);
+
private final int payloadPosition;
private final MetadataIndex index;
private final int databaseNameIndex;
@@ -107,4 +115,16 @@
new AOrderedListType(BuiltinType.ASTRING, "FullTextFilterPipeline")) },
true);
}
+
+ private static ARecordType databaseFullTextConfigType() {
+ return MetadataRecordTypes
+ .createRecordType(RECORD_NAME_FULL_TEXT_CONFIG,
+ new String[] { FIELD_NAME_DATABASE_NAME, FIELD_NAME_DATAVERSE_NAME,
+ FIELD_NAME_FULL_TEXT_CONFIG_NAME, FIELD_NAME_FULL_TEXT_TOKENIZER,
+ FIELD_NAME_FULL_TEXT_FILTER_PIPELINE },
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING,
+ AUnionType.createNullableType(BuiltinType.ASTRING), AUnionType.createNullableType(
+ new AOrderedListType(BuiltinType.ASTRING, "FullTextFilterPipeline")) },
+ true);
+ }
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FullTextFilterEntity.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FullTextFilterEntity.java
index aefb5a1..49b3334 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FullTextFilterEntity.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FullTextFilterEntity.java
@@ -20,6 +20,7 @@
package org.apache.asterix.metadata.bootstrap;
import static org.apache.asterix.metadata.bootstrap.MetadataPrimaryIndexes.PROPERTIES_FULL_TEXT_FILTER;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATABASE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATAVERSE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_FULL_TEXT_FILTER_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_FULL_TEXT_FILTER_TYPE;
@@ -40,6 +41,13 @@
fullTextFilterType(), true, new int[] { 0, 1 }),
2, -1);
+ private static final FullTextFilterEntity DB_FULL_TEXT_CONFIG =
+ new FullTextFilterEntity(new MetadataIndex(PROPERTIES_FULL_TEXT_FILTER, 4,
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING },
+ Arrays.asList(List.of(FIELD_NAME_DATABASE_NAME), List.of(FIELD_NAME_DATAVERSE_NAME),
+ List.of(FIELD_NAME_FULL_TEXT_FILTER_NAME)),
+ 0, databaseFullTextFilterType(), true, new int[] { 0, 1, 2 }), 3, 0);
+
private final int payloadPosition;
private final MetadataIndex index;
private final int databaseNameIndex;
@@ -94,4 +102,12 @@
FIELD_NAME_FULL_TEXT_FILTER_TYPE },
new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING }, true);
}
+
+ private static ARecordType databaseFullTextFilterType() {
+ return MetadataRecordTypes.createRecordType(RECORD_NAME_FULL_TEXT_FILTER,
+ new String[] { FIELD_NAME_DATABASE_NAME, FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_FULL_TEXT_FILTER_NAME,
+ FIELD_NAME_FULL_TEXT_FILTER_TYPE },
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING },
+ true);
+ }
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FunctionEntity.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FunctionEntity.java
index a180796..a665f35 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FunctionEntity.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/FunctionEntity.java
@@ -21,6 +21,7 @@
import static org.apache.asterix.metadata.bootstrap.MetadataPrimaryIndexes.PROPERTIES_FUNCTION;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_ARITY;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATABASE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATAVERSE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DEFINITION;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DEPENDENCIES;
@@ -46,6 +47,12 @@
Arrays.asList(List.of(FIELD_NAME_DATAVERSE_NAME), List.of(FIELD_NAME_NAME), List.of(FIELD_NAME_ARITY)), 0,
functionType(), true, new int[] { 0, 1, 2 }), 3, -1);
+ private static final FunctionEntity DB_FUNCTION = new FunctionEntity(new MetadataIndex(PROPERTIES_FUNCTION, 5,
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING },
+ Arrays.asList(List.of(FIELD_NAME_DATABASE_NAME), List.of(FIELD_NAME_DATAVERSE_NAME),
+ List.of(FIELD_NAME_NAME), List.of(FIELD_NAME_ARITY)),
+ 0, databaseFunctionType(), true, new int[] { 0, 1, 2, 3 }), 4, 0);
+
private final int payloadPosition;
private final MetadataIndex index;
private final int databaseNameIndex;
@@ -147,4 +154,22 @@
//IsOpen?
true);
}
+
+ private static ARecordType databaseFunctionType() {
+ return MetadataRecordTypes.createRecordType(
+ // RecordTypeName
+ RECORD_NAME_FUNCTION,
+ // FieldNames
+ new String[] { FIELD_NAME_DATABASE_NAME, FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_NAME, FIELD_NAME_ARITY,
+ FIELD_NAME_PARAMS, FIELD_NAME_RETURN_TYPE, FIELD_NAME_DEFINITION, FIELD_NAME_LANGUAGE,
+ FIELD_NAME_KIND, FIELD_NAME_DEPENDENCIES },
+ // FieldTypes
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING,
+ new AOrderedListType(BuiltinType.ASTRING, null), BuiltinType.ASTRING, BuiltinType.ASTRING,
+ BuiltinType.ASTRING, BuiltinType.ASTRING,
+ new AOrderedListType(
+ new AOrderedListType(new AOrderedListType(BuiltinType.ASTRING, null), null), null) },
+ //IsOpen?
+ true);
+ }
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/IndexEntity.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/IndexEntity.java
index 95ba52f..fd23dd0 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/IndexEntity.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/IndexEntity.java
@@ -20,6 +20,7 @@
package org.apache.asterix.metadata.bootstrap;
import static org.apache.asterix.metadata.bootstrap.MetadataPrimaryIndexes.PROPERTIES_INDEX;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATABASE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATASET_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATAVERSE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_INDEX_NAME;
@@ -49,6 +50,12 @@
0, indexType(), true, new int[] { 0, 1, 2 }),
3, -1);
+ private static final IndexEntity DB_INDEX = new IndexEntity(new MetadataIndex(PROPERTIES_INDEX, 5,
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING },
+ Arrays.asList(List.of(FIELD_NAME_DATABASE_NAME), List.of(FIELD_NAME_DATAVERSE_NAME),
+ List.of(FIELD_NAME_DATASET_NAME), List.of(FIELD_NAME_INDEX_NAME)),
+ 0, databaseIndexType(), true, new int[] { 0, 1, 2, 3 }), 4, 0);
+
private final int payloadPosition;
private final MetadataIndex index;
private final int databaseNameIndex;
@@ -142,4 +149,21 @@
//IsOpen?
true);
}
+
+ private static ARecordType databaseIndexType() {
+ return MetadataRecordTypes.createRecordType(
+ // RecordTypeName
+ RECORD_NAME_INDEX,
+ // FieldNames
+ new String[] { FIELD_NAME_DATABASE_NAME, FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_DATASET_NAME,
+ FIELD_NAME_INDEX_NAME, FIELD_NAME_INDEX_STRUCTURE, FIELD_NAME_SEARCH_KEY, FIELD_NAME_IS_PRIMARY,
+ FIELD_NAME_TIMESTAMP, FIELD_NAME_PENDING_OP },
+ // FieldTypes
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING,
+ BuiltinType.ASTRING,
+ new AOrderedListType(new AOrderedListType(BuiltinType.ASTRING, null), null),
+ BuiltinType.ABOOLEAN, BuiltinType.ASTRING, BuiltinType.AINT32 },
+ //IsOpen?
+ true);
+ }
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/LibraryEntity.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/LibraryEntity.java
index 1d99ead..692d35e 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/LibraryEntity.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/LibraryEntity.java
@@ -20,6 +20,7 @@
package org.apache.asterix.metadata.bootstrap;
import static org.apache.asterix.metadata.bootstrap.MetadataPrimaryIndexes.PROPERTIES_LIBRARY;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATABASE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATAVERSE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_TIMESTAMP;
@@ -40,6 +41,15 @@
new int[] { 0, 1 }),
2, -1);
+ private static final LibraryEntity DB_LIBRARY =
+ new LibraryEntity(
+ new MetadataIndex(PROPERTIES_LIBRARY, 4,
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING },
+ Arrays.asList(List.of(FIELD_NAME_DATABASE_NAME), List.of(FIELD_NAME_DATAVERSE_NAME),
+ List.of(FIELD_NAME_NAME)),
+ 0, databaseLibraryType(), true, new int[] { 0, 1, 2 }),
+ 3, 0);
+
private final int payloadPosition;
private final MetadataIndex index;
private final int databaseNameIndex;
@@ -99,4 +109,17 @@
//IsOpen?
true);
}
+
+ private static ARecordType databaseLibraryType() {
+ return MetadataRecordTypes.createRecordType(
+ // RecordTypeName
+ RECORD_NAME_LIBRARY,
+ // FieldNames
+ new String[] { FIELD_NAME_DATABASE_NAME, FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_NAME,
+ FIELD_NAME_TIMESTAMP },
+ // FieldTypes
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING },
+ //IsOpen?
+ true);
+ }
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataPrimaryIndexes.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataPrimaryIndexes.java
index 1c7c1e0..59e7ab7 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataPrimaryIndexes.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataPrimaryIndexes.java
@@ -60,6 +60,8 @@
new MetadataIndexImmutableProperties(MetadataConstants.FULL_TEXT_CONFIG_DATASET_NAME, 16, 16);
public static final MetadataIndexImmutableProperties PROPERTIES_FULL_TEXT_FILTER =
new MetadataIndexImmutableProperties(MetadataConstants.FULL_TEXT_FILTER_DATASET_NAME, 17, 17);
+ public static final MetadataIndexImmutableProperties PROPERTIES_DATABASE =
+ new MetadataIndexImmutableProperties(MetadataConstants.DATABASE_DATASET_NAME, 18, 18);
private MetadataPrimaryIndexes() {
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataRecordTypes.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataRecordTypes.java
index 4f4d2b2..5ae18ca 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataRecordTypes.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataRecordTypes.java
@@ -44,6 +44,9 @@
public static final String FIELD_NAME_DATASOURCE_ADAPTER = "DatasourceAdapter";
public static final String FIELD_NAME_DATATYPE_DATAVERSE_NAME = "DatatypeDataverseName";
public static final String FIELD_NAME_DATATYPE_NAME = "DatatypeName";
+ public static final String FIELD_NAME_DATABASE_NAME = "DatabaseName";
+ public static final String FIELD_NAME_DATABASE_ID = "DatabaseId";
+ public static final String FIELD_NAME_SYSTEM_DATABASE = "SystemDatabase";
public static final String FIELD_NAME_DATAVERSE_NAME = "DataverseName";
public static final String FIELD_NAME_DATA_FORMAT = "DataFormat";
public static final String FIELD_NAME_DEFAULT = "Default";
@@ -228,6 +231,9 @@
//---------------------------------------- Data Type ----------------------------------------//
public static final String RECORD_NAME_DATATYPE = "DatatypeRecordType";
+ //-------------------------------------- Database ------------------------------------------//
+ public static final String RECORD_NAME_DATABASE = "DatabaseRecordType";
+
//-------------------------------------- Dataverse ------------------------------------------//
public static final String RECORD_NAME_DATAVERSE = "DataverseRecordType";
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/SynonymEntity.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/SynonymEntity.java
index 05bf114..ba44f44 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/SynonymEntity.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/SynonymEntity.java
@@ -20,6 +20,7 @@
package org.apache.asterix.metadata.bootstrap;
import static org.apache.asterix.metadata.bootstrap.MetadataPrimaryIndexes.PROPERTIES_SYNONYM;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATABASE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATAVERSE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_OBJECT_DATAVERSE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_OBJECT_NAME;
@@ -41,6 +42,14 @@
synonymType(), true, new int[] { 0, 1 }),
2, -1);
+ private static final SynonymEntity DB_SYNONYM = new SynonymEntity(
+ new MetadataIndex(PROPERTIES_SYNONYM, 4,
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING },
+ Arrays.asList(List.of(FIELD_NAME_DATABASE_NAME), List.of(FIELD_NAME_DATAVERSE_NAME),
+ List.of(FIELD_NAME_SYNONYM_NAME)),
+ 0, databaseSynonymType(), true, new int[] { 0, 1, 2 }),
+ 3, 0);
+
private final int payloadPosition;
private final MetadataIndex index;
private final int databaseNameIndex;
@@ -107,4 +116,18 @@
//IsOpen?
true);
}
+
+ private static ARecordType databaseSynonymType() {
+ return MetadataRecordTypes.createRecordType(
+ // RecordTypeName
+ RECORD_NAME_SYNONYM,
+ // FieldNames
+ new String[] { FIELD_NAME_DATABASE_NAME, FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_SYNONYM_NAME,
+ FIELD_NAME_OBJECT_DATAVERSE_NAME, FIELD_NAME_OBJECT_NAME },
+ // FieldTypes
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING,
+ BuiltinType.ASTRING },
+ //IsOpen?
+ true);
+ }
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/MetadataConstants.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/MetadataConstants.java
index 0f0ea40..60d97d6 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/MetadataConstants.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/MetadataConstants.java
@@ -39,6 +39,7 @@
// Name of the node group where metadata is stored on.
public static final String METADATA_NODEGROUP_NAME = "MetadataGroup";
+ public static final String DATABASE_DATASET_NAME = "Database";
public static final String DATAVERSE_DATASET_NAME = "Dataverse";
public static final String DATASET_DATASET_NAME = "Dataset";
public static final String INDEX_DATASET_NAME = "Index";