This is an automated email from the ASF dual-hosted git repository.
alsuliman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git
The following commit(s) were added to refs/heads/master by this push:
new 0cda5eaa29 [ASTERIXDB-3259][MTD] Add database-aware entity types
0cda5eaa29 is described below
commit 0cda5eaa29f63f7f7eea969ece60f772b28594ac
Author: Ali Alsuliman <[email protected]>
AuthorDate: Mon Sep 11 21:02:17 2023 -0700
[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 <[email protected]>
Tested-by: Ali Alsuliman <[email protected]>
Reviewed-by: Ali Alsuliman <[email protected]>
Reviewed-by: Wail Alkowaileet <[email protected]>
---
.../metadata/MetadataIndexImmutableProperties.java | 2 +-
.../metadata/bootstrap/CompactionPolicyEntity.java | 21 +++++++++
.../{DataverseEntity.java => DatabaseEntity.java} | 54 +++++++++++-----------
.../asterix/metadata/bootstrap/DatasetEntity.java | 31 +++++++++++++
.../bootstrap/DatasourceAdapterEntity.java | 23 +++++++++
.../asterix/metadata/bootstrap/DatatypeEntity.java | 23 +++++++++
.../metadata/bootstrap/DataverseEntity.java | 21 +++++++++
.../metadata/bootstrap/ExternalFileEntity.java | 23 +++++++++
.../metadata/bootstrap/FeedConnectionEntity.java | 23 +++++++++
.../asterix/metadata/bootstrap/FeedEntity.java | 24 ++++++++++
.../metadata/bootstrap/FeedPolicyEntity.java | 23 +++++++++
.../metadata/bootstrap/FullTextConfigEntity.java | 20 ++++++++
.../metadata/bootstrap/FullTextFilterEntity.java | 16 +++++++
.../asterix/metadata/bootstrap/FunctionEntity.java | 25 ++++++++++
.../asterix/metadata/bootstrap/IndexEntity.java | 24 ++++++++++
.../asterix/metadata/bootstrap/LibraryEntity.java | 23 +++++++++
.../metadata/bootstrap/MetadataPrimaryIndexes.java | 2 +
.../metadata/bootstrap/MetadataRecordTypes.java | 6 +++
.../asterix/metadata/bootstrap/SynonymEntity.java | 23 +++++++++
.../asterix/metadata/utils/MetadataConstants.java | 1 +
20 files changed, 381 insertions(+), 27 deletions(-)
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 3426d74bd4..006632a169 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 class MetadataIndexImmutableProperties {
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 4cfbdff83b..b0d335e847 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 @@ package org.apache.asterix.metadata.bootstrap;
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 @@ public final class CompactionPolicyEntity {
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 @@ public final class CompactionPolicyEntity {
//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/DataverseEntity.java
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DatabaseEntity.java
similarity index 64%
copy from
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DataverseEntity.java
copy to
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/DatabaseEntity.java
index 8a6cc0330f..4982dc201c 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/DatabaseEntity.java
@@ -19,12 +19,13 @@
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_DATAVERSE_NAME;
-import static
org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATA_FORMAT;
+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_DATAVERSE;
+import static
org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.RECORD_NAME_DATABASE;
import java.util.List;
@@ -32,34 +33,34 @@ import org.apache.asterix.om.types.ARecordType;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
-public final class DataverseEntity {
+public final class DatabaseEntity {
- private static final DataverseEntity DATAVERSE =
- new DataverseEntity(
- new MetadataIndex(PROPERTIES_DATAVERSE, 2, new IAType[] {
BuiltinType.ASTRING },
- List.of(List.of(FIELD_NAME_DATAVERSE_NAME)), 0,
dataverseType(), true, new int[] { 0 }),
- 1, -1);
+ 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 dataverseNameIndex;
- private final int dataFormatIndex;
+ private final int databaseIdIndex;
+ private final int systemDatabaseIndex;
private final int timestampIndex;
private final int pendingOpIndex;
- private DataverseEntity(MetadataIndex index, int payloadPosition, int
startIndex) {
+ private DatabaseEntity(MetadataIndex index, int payloadPosition, int
startIndex) {
this.index = index;
this.payloadPosition = payloadPosition;
this.databaseNameIndex = startIndex++;
- this.dataverseNameIndex = startIndex++;
- this.dataFormatIndex = startIndex++;
+ this.databaseIdIndex = startIndex++;
+ this.systemDatabaseIndex = startIndex++;
this.timestampIndex = startIndex++;
this.pendingOpIndex = startIndex++;
}
- public static DataverseEntity of(boolean cloudDeployment) {
- return DATAVERSE;
+ public static DatabaseEntity of(boolean cloudDeployment) {
+ return DATABASE;
}
public MetadataIndex getIndex() {
@@ -78,12 +79,12 @@ public final class DataverseEntity {
return databaseNameIndex;
}
- public int dataverseNameIndex() {
- return dataverseNameIndex;
+ public int databaseIdIndex() {
+ return databaseIdIndex;
}
- public int dataFormatIndex() {
- return dataFormatIndex;
+ public int systemDatabaseIndex() {
+ return systemDatabaseIndex;
}
public int timestampIndex() {
@@ -94,15 +95,16 @@ public final class DataverseEntity {
return pendingOpIndex;
}
- private static ARecordType dataverseType() {
+ private static ARecordType databaseType() {
return MetadataRecordTypes.createRecordType(
// RecordTypeName
- RECORD_NAME_DATAVERSE,
+ RECORD_NAME_DATABASE,
// FieldNames
- new String[] { FIELD_NAME_DATAVERSE_NAME,
FIELD_NAME_DATA_FORMAT, FIELD_NAME_TIMESTAMP,
- FIELD_NAME_PENDING_OP },
+ 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.ASTRING,
BuiltinType.ASTRING, BuiltinType.AINT32 },
+ 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 c7928a6a35..0dd4cdef8a 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.DATASET_
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 @@ public final class DatasetEntity {
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 @@ public final class DatasetEntity {
//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 41aeee9901..25791a091d 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 @@ package org.apache.asterix.metadata.bootstrap;
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 @@ public final class DatasourceAdapterEntity {
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 @@ public final class DatasourceAdapterEntity {
//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 a26f2320f5..605eef625b 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 @@ package org.apache.asterix.metadata.bootstrap;
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 @@ public final class DatatypeEntity {
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 @@ public final class DatatypeEntity {
//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 8a6cc0330f..ca658d2a21 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 @@ public final class DataverseEntity {
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 @@ public final class DataverseEntity {
//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 2827fd73ba..47ae4d1575 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 @@ public final class ExternalFileEntity {
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 @@ public final class ExternalFileEntity {
//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 4e4c0d7453..710afca128 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 @@ package org.apache.asterix.metadata.bootstrap;
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 @@ public final class FeedConnectionEntity {
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 @@ public final class FeedConnectionEntity {
//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 1270fb1d44..d82c2987d9 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 @@ package org.apache.asterix.metadata.bootstrap;
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 @@ public final class FeedEntity {
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 @@ public final class FeedEntity {
//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 2d952e6ef2..c22977cef4 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 @@ public final class FeedPolicyEntity {
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 @@ public final class FeedPolicyEntity {
//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 1c97822e26..6d4e3310fd 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 @@ public final class FullTextConfigEntity {
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 @@ public final class FullTextConfigEntity {
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 aefb5a1bd5..49b3334792 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 @@ public final class FullTextFilterEntity {
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 @@ public final class FullTextFilterEntity {
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 a180796752..a665f35d17 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 @@ package org.apache.asterix.metadata.bootstrap;
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 @@ public final class FunctionEntity {
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 @@ public final class FunctionEntity {
//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 95ba52faa1..fd23dd02a3 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 @@ public final class IndexEntity {
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 @@ public final class IndexEntity {
//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 1d99ead541..692d35e3ea 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 @@ public final class LibraryEntity {
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 @@ public final class LibraryEntity {
//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 1c7c1e0f6e..59e7ab70b6 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 @@ public class MetadataPrimaryIndexes {
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 4f4d2b2223..5ae18caab9 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 final class MetadataRecordTypes {
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 @@ public final class MetadataRecordTypes {
//---------------------------------------- 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 05bf114776..ba44f44bd0 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 @@ public final class SynonymEntity {
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 @@ public final class SynonymEntity {
//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 0f0ea4044b..60d97d6fa3 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 @@ public class MetadataConstants {
// 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";