Ali Alsuliman has uploaded a new change for review.
https://asterix-gerrit.ics.uci.edu/3103
Change subject: [NO ISSUE][COMP] Disable creating index on meta
......................................................................
[NO ISSUE][COMP] Disable creating index on meta
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
Disable creating an index on meta fields.
Change-Id: Ib7d3b3706f200da0ef023e642b2d807511cb0801
---
M
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
2 files changed, 16 insertions(+), 3 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/03/3103/1
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
index f619ab6..06781f6 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
@@ -787,6 +787,7 @@
MetadataTransactionContext mdTxnCtx =
MetadataManager.INSTANCE.beginTransaction();
metadataProvider.setMetadataTxnContext(mdTxnCtx);
String datasetFullyQualifiedName = dataverseName + "." + datasetName;
+ boolean isSecondaryPrimary = stmtCreateIndex.getFieldExprs().isEmpty();
Dataset ds = null;
Index index = null;
MetadataLockUtil.createIndexBegin(lockManager,
metadataProvider.getLocks(), dataverseName,
@@ -808,10 +809,19 @@
throw new CompilationException(ErrorCode.INDEX_EXISTS,
sourceLoc, indexName);
}
}
- // can't create secondary primary index on an external dataset
- if (ds.getDatasetType() == DatasetType.EXTERNAL &&
stmtCreateIndex.getFieldExprs().isEmpty()) {
+ // find keySourceIndicators for secondary primary index since the
parser isn't aware of them
+ if (isSecondaryPrimary && ds.getDatasetType() ==
DatasetType.INTERNAL) {
+ keySourceIndicators = ((InternalDatasetDetails)
ds.getDatasetDetails()).getKeySourceIndicator();
+ }
+ // disable creating secondary primary index on an external dataset
+ if (isSecondaryPrimary && ds.getDatasetType() ==
DatasetType.EXTERNAL) {
throw new
AsterixException(ErrorCode.CANNOT_CREATE_SEC_PRIMARY_IDX_ON_EXT_DATASET);
}
+ // disable creating an index on meta fields (fields with source
indicator == 1 are meta fields)
+ if (keySourceIndicators.stream().anyMatch(fieldSource ->
fieldSource == 1) && !isSecondaryPrimary) {
+ throw new AsterixException(ErrorCode.COMPILATION_ERROR,
sourceLoc,
+ "Cannot create index on meta " + "fields");
+ }
Datatype dt =
MetadataManager.INSTANCE.getDatatype(metadataProvider.getMetadataTxnContext(),
ds.getItemTypeDataverseName(), ds.getItemTypeName());
ARecordType aRecordType = (ARecordType) dt.getDatatype();
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index 37eaf79..3ab1ff9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -8870,6 +8870,7 @@
<test-case FilePath="feeds">
<compilation-unit name="change-feed-with-meta-with-mixed-index">
<output-dir
compare="Text">change-feed-with-meta-with-mixed-index</output-dir>
+ <expected-error>Compilation error: Cannot create index on meta fields
(in line 61, at column 1)</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="feeds">
@@ -8885,7 +8886,7 @@
<test-case FilePath="feeds">
<compilation-unit name="change-feed-with-meta-open-index-in-meta">
<output-dir
compare="Text">change-feed-with-meta-open-index-in-meta</output-dir>
- <expected-error>Typed open index can only be created on the record
part</expected-error>
+ <expected-error>Compilation error: Cannot create index on meta fields
(in line 60, at column 1)</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="feeds">
@@ -8896,11 +8897,13 @@
<test-case FilePath="feeds">
<compilation-unit
name="change-feed-with-meta-pk-in-meta-index-after-ingest">
<output-dir
compare="Text">change-feed-with-meta-pk-in-meta-index-after-ingest</output-dir>
+ <expected-error>Compilation error: Cannot create index on meta fields
(in line 27, at column 1)</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="feeds">
<compilation-unit name="change-feed-with-meta-pk-in-meta-index-in-meta">
<output-dir
compare="Text">change-feed-with-meta-pk-in-meta-index-in-meta</output-dir>
+ <expected-error>Compilation error: Cannot create index on meta fields
(in line 60, at column 1)</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="feeds">
--
To view, visit https://asterix-gerrit.ics.uci.edu/3103
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib7d3b3706f200da0ef023e642b2d807511cb0801
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: stabilization-f69489
Gerrit-Owner: Ali Alsuliman <[email protected]>