You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by "Taewoo Kim (JIRA)" <ji...@apache.org> on 2016/08/28 04:18:20 UTC
[jira] [Commented] (ASTERIXDB-1088) handleCompactStatement() in
AqlTranslator.java has a bug
[ https://issues.apache.org/jira/browse/ASTERIXDB-1088?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15442734#comment-15442734 ]
Taewoo Kim commented on ASTERIXDB-1088:
---------------------------------------
This has not been fixed yet. Based on Young-Seok's proposed code above, line 2,487 in https://github.com/apache/asterixdb/blob/master/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java needs to be changed.
{code}
if (ds.getDatasetType() == DatasetType.INTERNAL) {
for (int j = 0; j < indexes.size(); j++) {
if (indexes.get(j).isSecondaryIndex()) {
jobsToExecute
.add(DatasetOperations.compactDatasetJobSpec(
dataverse, datasetName, metadataProvider));
}
}
}
{code}
should be changed as follows:
{code}
if (ds.getDatasetType() == DatasetType.INTERNAL) {
for (int j = 0; j < indexes.size(); j++) {
if (indexes.get(j).isSecondaryIndex()) {
CompiledIndexCompactStatement cics = new CompiledIndexCompactStatement(dataverseName,
datasetName, indexes.get(j).getIndexName(), indexes.get(j).getKeyFieldNames(),
indexes.get(j).getKeyFieldTypes(), indexes.get(j).isEnforcingKeyFileds(),
indexes.get(j).getGramLength(), indexes.get(j).getIndexType());
List<Integer> keySourceIndicators = indexes.get(j).getKeyFieldSourceIndicators();
jobsToExecute.add(IndexOperations.buildSecondaryIndexCompactJobSpec(cics, aRecordType,
metaRecordType, keySourceIndicators, enforcedType, metadataProvider));
}
}
}
{code}
> handleCompactStatement() in AqlTranslator.java has a bug
> --------------------------------------------------------
>
> Key: ASTERIXDB-1088
> URL: https://issues.apache.org/jira/browse/ASTERIXDB-1088
> Project: Apache AsterixDB
> Issue Type: Bug
> Components: AsterixDB, Storage, Translator - AQL
> Reporter: Young-Seok Kim
> Assignee: Taewoo Kim
> Labels: soon
>
> The following code in handleCompactStatement() in AqlTranslator.java
> (https://github.com/apache/incubator-asterixdb/blob/master/asterix-app/src/main/java/org/apache/asterix/aql/translator/AqlTranslator.java)
> 1) doesn't compact secondary indexes if any
> 2) instead compact primary index as many as the number of secondary indexes.
> from line 2421.
> if (ds.getDatasetType() == DatasetType.INTERNAL) {
> for (int j = 0; j < indexes.size(); j++) {
> if (indexes.get(j).isSecondaryIndex()) {
> CompiledIndexCompactStatement cics = new CompiledIndexCompactStatement(dataverseName,
> datasetName, indexes.get(j).getIndexName(), indexes.get(j).getKeyFieldNames(), indexes
> .get(j).getKeyFieldTypes(), indexes.get(j).isEnforcingKeyFileds(), indexes.get(
> j).getGramLength(), indexes.get(j).getIndexType());
> Dataverse dataverse = MetadataManager.INSTANCE.getDataverse(
> metadataProvider.getMetadataTxnContext(), dataverseName);
> jobsToExecute.add(DatasetOperations.compactDatasetJobSpec(dataverse, datasetName,
> metadataProvider));
> }
> }
> The code should fixed something as follows:
> if (ds.getDatasetType() == DatasetType.INTERNAL) {
> for (int j = 0; j < indexes.size(); j++) {
> if (indexes.get(j).isSecondaryIndex()) {
>
> CompiledIndexCompactStatement cics = new CompiledIndexCompactStatement(dataverseName,
> datasetName, indexes.get(j).getIndexName(), indexes.get(j).getKeyFieldNames(),
> indexes.get(j).getKeyFieldTypes(), indexes.get(j).getIndexType(), null,
> indexes.get(j).isEnforcingKeyFileds());
> jobsToExecute.add(IndexOperations.buildSecondaryIndexCompactJobSpec(cics, metadataProvider, ds));
> }
> }
> Dataverse dataverse = MetadataManager.INSTANCE.getDataverse(
> metadataProvider.getMetadataTxnContext(), dataverseName);
> jobsToExecute.add(DatasetOperations.compactDatasetJobSpec(dataverse, datasetName,
> metadataProvider));
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)