[ 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)