This is an automated email from the ASF dual-hosted git repository.

wyk 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 f0ff425a72 [NO ISSUE]: Add more validations + cleanup + address 
comments
f0ff425a72 is described below

commit f0ff425a72a24c3ffe871052197a0ef0f34dabb5
Author: Hussain Towaileb <[email protected]>
AuthorDate: Wed Mar 6 17:37:55 2024 +0300

    [NO ISSUE]: Add more validations + cleanup + address comments
    
    Change-Id: I6e511e2ec13edf7458a809826860124507a51038
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18197
    Integration-Tests: Jenkins <[email protected]>
    Tested-by: Jenkins <[email protected]>
    Reviewed-by: Hussain Towaileb <[email protected]>
    Reviewed-by: Wail Alkowaileet <[email protected]>
---
 .../asterix/translator/CompiledStatements.java     |  5 ++-
 .../translator/LangExpressionToPlanTranslator.java |  8 ++--
 .../cloud/writer/S3ExternalFileWriterFactory.java  |  6 +--
 .../asterix/common/exceptions/ErrorCode.java       |  2 +
 .../src/main/resources/asx_errormsg/en.properties  |  2 +
 .../writer/LocalFSExternalFileWriterFactory.java   |  6 +--
 ...er.java => AbstractTextualExternalPrinter.java} | 28 ++++++++++----
 .../printer/TextualExternalDatabasePrinter.java}   | 15 ++++++--
 ... => TextualExternalDatabasePrinterFactory.java} |  6 +--
 .../writer/printer/TextualExternalFilePrinter.java | 43 ++--------------------
 .../printer/TextualExternalFilePrinterFactory.java |  6 ++-
 .../metadata/declared/MetadataProvider.java        |  4 +-
 .../metadata/provider/ExternalWriterProvider.java  |  8 ++--
 ...n.java => ExternalFileWriterConfiguration.java} |  4 +-
 .../writer/IExternalFileWriterFactoryProvider.java |  2 +-
 .../core/algebra/metadata/IMetadataProvider.java   |  4 +-
 .../operators/physical/SinkWritePOperator.java     | 10 ++---
 .../rules/SetAlgebricksPhysicalOperatorsRule.java  |  3 +-
 18 files changed, 75 insertions(+), 87 deletions(-)

diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/CompiledStatements.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/CompiledStatements.java
index 80252026fb..01b85274bc 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/CompiledStatements.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/CompiledStatements.java
@@ -681,6 +681,9 @@ public class CompiledStatements {
         public boolean isAutogenerated() {
             return autogenerated;
         }
-    }
 
+        public boolean isFileStoreSink() {
+            return keyExpressions.isEmpty() && !autogenerated;
+        }
+    }
 }
diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
index 0949478da8..077b39bfe1 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
@@ -361,7 +361,7 @@ abstract class LangExpressionToPlanTranslator
         return translate(expr, outputDatasetName, (ICompiledDmlStatement) 
stmt, null, resultMetadata);
     }
 
-    public ILogicalPlan translateCopyTo(Query expr, 
CompiledStatements.ICompiledStatement stmt,
+    private ILogicalPlan translateCopyTo(Query expr, 
CompiledStatements.ICompiledStatement stmt,
             IResultMetadata resultMetadata) throws AlgebricksException {
         CompiledStatements.CompiledCopyToStatement copyTo = 
(CompiledStatements.CompiledCopyToStatement) stmt;
         MutableObject<ILogicalOperator> base = new MutableObject<>(new 
EmptyTupleSourceOperator());
@@ -423,7 +423,7 @@ abstract class LangExpressionToPlanTranslator
         // astPathExpressions has at least one expression see CopyToStatement 
constructor
         List<Expression> astPathExpressions = copyTo.getPathExpressions();
         ILogicalExpression fullPathExpr = null;
-        String separator = getExternalWriterSeparator(copyTo.getAdapter());
+        String separator = getSeparator(copyTo.getAdapter(), 
copyTo.isFileStoreSink());
         List<Mutable<ILogicalExpression>> pathExprs = new 
ArrayList<>(astPathExpressions.size());
         Pair<ILogicalExpression, Mutable<ILogicalOperator>> pathExprPair;
         for (int i = 0; i < astPathExpressions.size(); i++) {
@@ -483,8 +483,8 @@ abstract class LangExpressionToPlanTranslator
         return new ALogicalPlanImpl(globalPlanRoots);
     }
 
-    protected String getExternalWriterSeparator(String adapter) {
-        return String.valueOf(ExternalWriterProvider.getSeparator(adapter));
+    private String getSeparator(String adapter, boolean isFileStore) {
+        return isFileStore ? 
String.valueOf(ExternalWriterProvider.getSeparator(adapter)) : "";
     }
 
     public ILogicalPlan translate(Query expr, String outputDatasetName, 
ICompiledDmlStatement stmt,
diff --git 
a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/writer/S3ExternalFileWriterFactory.java
 
b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/writer/S3ExternalFileWriterFactory.java
index 4477b1f998..cb0a6e7c1c 100644
--- 
a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/writer/S3ExternalFileWriterFactory.java
+++ 
b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/writer/S3ExternalFileWriterFactory.java
@@ -36,7 +36,7 @@ import 
org.apache.asterix.common.exceptions.CompilationException;
 import org.apache.asterix.common.exceptions.ErrorCode;
 import org.apache.asterix.external.util.ExternalDataConstants;
 import org.apache.asterix.external.util.aws.s3.S3Utils;
-import org.apache.asterix.runtime.writer.ExternalWriterConfiguration;
+import org.apache.asterix.runtime.writer.ExternalFileWriterConfiguration;
 import org.apache.asterix.runtime.writer.IExternalFileWriter;
 import org.apache.asterix.runtime.writer.IExternalFileWriterFactory;
 import org.apache.asterix.runtime.writer.IExternalFileWriterFactoryProvider;
@@ -61,7 +61,7 @@ public final class S3ExternalFileWriterFactory implements 
IExternalFileWriterFac
     static final char SEPARATOR = '/';
     public static final IExternalFileWriterFactoryProvider PROVIDER = new 
IExternalFileWriterFactoryProvider() {
         @Override
-        public IExternalFileWriterFactory create(ExternalWriterConfiguration 
configuration) {
+        public IExternalFileWriterFactory 
create(ExternalFileWriterConfiguration configuration) {
             return new S3ExternalFileWriterFactory(configuration);
         }
 
@@ -75,7 +75,7 @@ public final class S3ExternalFileWriterFactory implements 
IExternalFileWriterFac
     private final String staticPath;
     private transient S3CloudClient cloudClient;
 
-    private S3ExternalFileWriterFactory(ExternalWriterConfiguration 
externalConfig) {
+    private S3ExternalFileWriterFactory(ExternalFileWriterConfiguration 
externalConfig) {
         configuration = externalConfig.getConfiguration();
         pathSourceLocation = externalConfig.getPathSourceLocation();
         staticPath = externalConfig.getStaticPath();
diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
index ef54ba821d..b508ce5cb2 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
@@ -95,6 +95,7 @@ public enum ErrorCode implements IError {
     WRITE_PATH_LENGTH_EXCEEDS_MAX_LENGTH(65),
     TYPE_MISMATCH_EXTRA_FIELD(66),
     UNSUPPORTED_COLUMN_TYPE(67),
+    INVALID_KEY_TYPE(68),
 
     UNSUPPORTED_JRE(100),
 
@@ -295,6 +296,7 @@ public enum ErrorCode implements IError {
     UNSUPPORTED_COLUMN_LSM_FILTER(1192),
     UNKNOWN_STORAGE_FORMAT(1193),
     UNSUPPORTED_INDEX_IN_COLUMNAR_FORMAT(1194),
+    COMPOSITE_KEY_NOT_SUPPORTED(1195),
 
     // Feed errors
     DATAFLOW_ILLEGAL_STATE(3001),
diff --git 
a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties 
b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
index 45b6185461..3621447dd0 100644
--- a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
+++ b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
@@ -102,6 +102,7 @@
 65 = Length of the file path '%1$s' exceeds the maximum length of '%2$s bytes' 
allowed in %3$s
 66 = Type mismatch: including an extra field %1$s
 67 = Type(s) '%1$s' are not supported in columnar storage format. Supported 
types are %2$s
+68 = Invalid key type. Expected '%1$s', found '%2$s'.
 
 100 = Unsupported JRE: %1$s
 
@@ -297,6 +298,7 @@
 1192 = Filters are not supported with columnar storage format
 1193 = Unknown storage format '%1$s'
 1194 = Index type '%1$s' is not supported with columnar storage format
+1195 = Composite key is not allowed, only single key must be specified.
 
 # Feed Errors
 3001 = Illegal state.
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/LocalFSExternalFileWriterFactory.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/LocalFSExternalFileWriterFactory.java
index 73f34f1e52..bdefaa85b2 100644
--- 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/LocalFSExternalFileWriterFactory.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/LocalFSExternalFileWriterFactory.java
@@ -23,7 +23,7 @@ import java.io.File;
 import org.apache.asterix.common.exceptions.CompilationException;
 import org.apache.asterix.common.exceptions.ErrorCode;
 import org.apache.asterix.common.exceptions.RuntimeDataException;
-import org.apache.asterix.runtime.writer.ExternalWriterConfiguration;
+import org.apache.asterix.runtime.writer.ExternalFileWriterConfiguration;
 import org.apache.asterix.runtime.writer.IExternalFileWriter;
 import org.apache.asterix.runtime.writer.IExternalFileWriterFactory;
 import org.apache.asterix.runtime.writer.IExternalFileWriterFactoryProvider;
@@ -38,7 +38,7 @@ public final class LocalFSExternalFileWriterFactory 
implements IExternalFileWrit
     private static final char SEPARATOR = File.separatorChar;
     public static final IExternalFileWriterFactoryProvider PROVIDER = new 
IExternalFileWriterFactoryProvider() {
         @Override
-        public IExternalFileWriterFactory create(ExternalWriterConfiguration 
configuration) {
+        public IExternalFileWriterFactory 
create(ExternalFileWriterConfiguration configuration) {
             return new LocalFSExternalFileWriterFactory(configuration);
         }
 
@@ -54,7 +54,7 @@ public final class LocalFSExternalFileWriterFactory 
implements IExternalFileWrit
     private final String staticPath;
     private boolean validated;
 
-    private LocalFSExternalFileWriterFactory(ExternalWriterConfiguration 
externalConfig) {
+    private LocalFSExternalFileWriterFactory(ExternalFileWriterConfiguration 
externalConfig) {
         pathSourceLocation = externalConfig.getPathSourceLocation();
         singleNodeCluster = externalConfig.isSingleNodeCluster();
         staticPath = externalConfig.getStaticPath();
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalPrinter.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/AbstractTextualExternalPrinter.java
similarity index 63%
rename from 
asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalPrinter.java
rename to 
asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/AbstractTextualExternalPrinter.java
index 537af2e8a8..8d7d60f3a4 100644
--- 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalPrinter.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/AbstractTextualExternalPrinter.java
@@ -21,18 +21,26 @@ package org.apache.asterix.external.writer.printer;
 import java.io.OutputStream;
 import java.io.PrintStream;
 
+import 
org.apache.asterix.external.writer.compressor.IExternalFileCompressStreamFactory;
+import 
org.apache.asterix.external.writer.compressor.NoOpExternalFileCompressStreamFactory;
 import org.apache.asterix.runtime.writer.IExternalPrinter;
 import org.apache.hyracks.algebricks.data.IPrinter;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.api.IValueReference;
 
-final class TextualExternalPrinter implements IExternalPrinter {
-    private final IPrinter printer;
-    private TextualOutputStreamDelegate delegate;
-    private PrintStream printStream;
+public abstract class AbstractTextualExternalPrinter implements 
IExternalPrinter {
+    final IPrinter printer;
+    final IExternalFileCompressStreamFactory compressStreamFactory;
+    TextualOutputStreamDelegate delegate;
+    PrintStream printStream;
 
-    TextualExternalPrinter(IPrinter printer) {
+    AbstractTextualExternalPrinter(IPrinter printer) {
+        this(printer, NoOpExternalFileCompressStreamFactory.INSTANCE);
+    }
+
+    AbstractTextualExternalPrinter(IPrinter printer, final 
IExternalFileCompressStreamFactory compressStreamFactory) {
         this.printer = printer;
+        this.compressStreamFactory = compressStreamFactory;
     }
 
     @Override
@@ -41,17 +49,23 @@ final class TextualExternalPrinter implements 
IExternalPrinter {
     }
 
     @Override
-    public void newStream(OutputStream outputStream) {
-        delegate = new TextualOutputStreamDelegate(outputStream);
+    public void newStream(OutputStream outputStream) throws 
HyracksDataException {
+        if (printStream != null) {
+            close();
+        }
+        delegate = new 
TextualOutputStreamDelegate(compressStreamFactory.createStream(outputStream));
         printStream = new PrintStream(delegate);
     }
 
     @Override
     public void print(IValueReference value) throws HyracksDataException {
         printer.print(value.getByteArray(), value.getStartOffset(), 
value.getLength(), printStream);
+        afterPrint();
         delegate.checkError();
     }
 
+    abstract void afterPrint() throws HyracksDataException;
+
     @Override
     public void close() throws HyracksDataException {
         if (printStream != null) {
diff --git 
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/writer/IExternalFileWriterFactoryProvider.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalDatabasePrinter.java
similarity index 71%
copy from 
asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/writer/IExternalFileWriterFactoryProvider.java
copy to 
asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalDatabasePrinter.java
index eabd2cb5db..12c8d5a429 100644
--- 
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/writer/IExternalFileWriterFactoryProvider.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalDatabasePrinter.java
@@ -16,10 +16,17 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.asterix.runtime.writer;
+package org.apache.asterix.external.writer.printer;
 
-public interface IExternalFileWriterFactoryProvider {
-    IExternalFileWriterFactory create(ExternalWriterConfiguration 
configuration);
+import org.apache.hyracks.algebricks.data.IPrinter;
 
-    char getSeparator();
+final class TextualExternalDatabasePrinter extends 
AbstractTextualExternalPrinter {
+
+    TextualExternalDatabasePrinter(IPrinter printer) {
+        super(printer);
+    }
+
+    @Override
+    void afterPrint() {
+    }
 }
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalPrinterFactory.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalDatabasePrinterFactory.java
similarity index 83%
rename from 
asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalPrinterFactory.java
rename to 
asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalDatabasePrinterFactory.java
index d779793c20..49bd6d8dcb 100644
--- 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalPrinterFactory.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalDatabasePrinterFactory.java
@@ -22,16 +22,16 @@ import org.apache.asterix.runtime.writer.IExternalPrinter;
 import org.apache.asterix.runtime.writer.IExternalPrinterFactory;
 import org.apache.hyracks.algebricks.data.IPrinterFactory;
 
-public class TextualExternalPrinterFactory implements IExternalPrinterFactory {
+public class TextualExternalDatabasePrinterFactory implements 
IExternalPrinterFactory {
     private static final long serialVersionUID = 9155959967258587588L;
     protected final IPrinterFactory printerFactory;
 
-    public TextualExternalPrinterFactory(IPrinterFactory printerFactory) {
+    public TextualExternalDatabasePrinterFactory(IPrinterFactory 
printerFactory) {
         this.printerFactory = printerFactory;
     }
 
     @Override
     public IExternalPrinter createPrinter() {
-        return new TextualExternalPrinter(printerFactory.createPrinter());
+        return new 
TextualExternalDatabasePrinter(printerFactory.createPrinter());
     }
 }
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalFilePrinter.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalFilePrinter.java
index 57e7b58e7c..5465098944 100644
--- 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalFilePrinter.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalFilePrinter.java
@@ -18,54 +18,17 @@
  */
 package org.apache.asterix.external.writer.printer;
 
-import java.io.OutputStream;
-import java.io.PrintStream;
-
 import 
org.apache.asterix.external.writer.compressor.IExternalFileCompressStreamFactory;
-import org.apache.asterix.runtime.writer.IExternalPrinter;
 import org.apache.hyracks.algebricks.data.IPrinter;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.data.std.api.IValueReference;
 
-final class TextualExternalFilePrinter implements IExternalPrinter {
-    private final IPrinter printer;
-    private final IExternalFileCompressStreamFactory compressStreamFactory;
-    private TextualOutputStreamDelegate delegate;
-    private PrintStream printStream;
+final class TextualExternalFilePrinter extends AbstractTextualExternalPrinter {
 
     TextualExternalFilePrinter(IPrinter printer, 
IExternalFileCompressStreamFactory compressStreamFactory) {
-        this.printer = printer;
-        this.compressStreamFactory = compressStreamFactory;
-    }
-
-    @Override
-    public void open() throws HyracksDataException {
-        printer.init();
-    }
-
-    @Override
-    public void newStream(OutputStream outputStream) throws 
HyracksDataException {
-        if (printStream != null) {
-            close();
-        }
-        delegate = new 
TextualOutputStreamDelegate(compressStreamFactory.createStream(outputStream));
-        printStream = new PrintStream(delegate);
+        super(printer, compressStreamFactory);
     }
 
     @Override
-    public void print(IValueReference value) throws HyracksDataException {
-        printer.print(value.getByteArray(), value.getStartOffset(), 
value.getLength(), printStream);
+    void afterPrint() {
         printStream.println();
-        delegate.checkError();
-    }
-
-    @Override
-    public void close() throws HyracksDataException {
-        if (printStream != null) {
-            printStream.close();
-            printStream = null;
-            delegate.checkError();
-            delegate = null;
-        }
     }
 }
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalFilePrinterFactory.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalFilePrinterFactory.java
index e3d0a66d33..6bee7d74c1 100644
--- 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalFilePrinterFactory.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/TextualExternalFilePrinterFactory.java
@@ -20,15 +20,17 @@ package org.apache.asterix.external.writer.printer;
 
 import 
org.apache.asterix.external.writer.compressor.IExternalFileCompressStreamFactory;
 import org.apache.asterix.runtime.writer.IExternalPrinter;
+import org.apache.asterix.runtime.writer.IExternalPrinterFactory;
 import org.apache.hyracks.algebricks.data.IPrinterFactory;
 
-public class TextualExternalFilePrinterFactory extends 
TextualExternalPrinterFactory {
+public class TextualExternalFilePrinterFactory implements 
IExternalPrinterFactory {
     private static final long serialVersionUID = 8971234908711234L;
+    protected final IPrinterFactory printerFactory;
     private final IExternalFileCompressStreamFactory compressStreamFactory;
 
     public TextualExternalFilePrinterFactory(IPrinterFactory printerFactory,
             IExternalFileCompressStreamFactory compressStreamFactory) {
-        super(printerFactory);
+        this.printerFactory = printerFactory;
         this.compressStreamFactory = compressStreamFactory;
     }
 
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
index 340eb0a04e..416e32f5a0 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
@@ -771,8 +771,8 @@ public class MetadataProvider implements 
IMetadataProvider<DataSourceId, String>
 
     @Override
     public Pair<IPushRuntimeFactory, AlgebricksPartitionConstraint> 
getWriteDatabaseWithKeyRuntime(int sourceColumn,
-            IScalarEvaluatorFactory[] keyEvaluatorFactories, boolean 
autogenerated, IWriteDataSink sink,
-            RecordDescriptor inputDesc, Object sourceType) throws 
AlgebricksException {
+            IScalarEvaluatorFactory[] keyEvaluatorFactories, IWriteDataSink 
sink, RecordDescriptor inputDesc,
+            Object sourceType) throws AlgebricksException {
         throw new UnsupportedOperationException();
     }
 
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/provider/ExternalWriterProvider.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/provider/ExternalWriterProvider.java
index 2d77a94a31..9253a48492 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/provider/ExternalWriterProvider.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/provider/ExternalWriterProvider.java
@@ -30,7 +30,7 @@ import 
org.apache.asterix.external.writer.compressor.IExternalFileCompressStream
 import 
org.apache.asterix.external.writer.compressor.NoOpExternalFileCompressStreamFactory;
 import 
org.apache.asterix.external.writer.printer.TextualExternalFilePrinterFactory;
 import org.apache.asterix.formats.nontagged.CleanJSONPrinterFactoryProvider;
-import org.apache.asterix.runtime.writer.ExternalWriterConfiguration;
+import org.apache.asterix.runtime.writer.ExternalFileWriterConfiguration;
 import org.apache.asterix.runtime.writer.IExternalFileWriterFactory;
 import org.apache.asterix.runtime.writer.IExternalFileWriterFactoryProvider;
 import org.apache.asterix.runtime.writer.IExternalPrinterFactory;
@@ -83,12 +83,12 @@ public class ExternalWriterProvider {
         return Integer.parseInt(maxResultString);
     }
 
-    private static ExternalWriterConfiguration 
createConfiguration(ICcApplicationContext appCtx, IWriteDataSink sink,
-            String staticPath, SourceLocation pathExpressionLocation) {
+    private static ExternalFileWriterConfiguration 
createConfiguration(ICcApplicationContext appCtx,
+            IWriteDataSink sink, String staticPath, SourceLocation 
pathExpressionLocation) {
         Map<String, String> params = sink.getConfiguration();
         boolean singleNodeCluster = isSingleNodeCluster(appCtx);
 
-        return new ExternalWriterConfiguration(params, pathExpressionLocation, 
staticPath, singleNodeCluster);
+        return new ExternalFileWriterConfiguration(params, 
pathExpressionLocation, staticPath, singleNodeCluster);
     }
 
     private static boolean isSingleNodeCluster(ICcApplicationContext appCtx) {
diff --git 
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/writer/ExternalWriterConfiguration.java
 
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/writer/ExternalFileWriterConfiguration.java
similarity index 91%
rename from 
asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/writer/ExternalWriterConfiguration.java
rename to 
asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/writer/ExternalFileWriterConfiguration.java
index fbb05eeec1..b62a07aef8 100644
--- 
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/writer/ExternalWriterConfiguration.java
+++ 
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/writer/ExternalFileWriterConfiguration.java
@@ -22,13 +22,13 @@ import java.util.Map;
 
 import org.apache.hyracks.api.exceptions.SourceLocation;
 
-public final class ExternalWriterConfiguration {
+public final class ExternalFileWriterConfiguration {
     private final Map<String, String> configuration;
     private final SourceLocation pathSourceLocation;
     private final String staticPath;
     private final boolean singleNodeCluster;
 
-    public ExternalWriterConfiguration(Map<String, String> configuration, 
SourceLocation pathSourceLocation,
+    public ExternalFileWriterConfiguration(Map<String, String> configuration, 
SourceLocation pathSourceLocation,
             String staticPath, boolean singleNodeCluster) {
         this.configuration = configuration;
         this.pathSourceLocation = pathSourceLocation;
diff --git 
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/writer/IExternalFileWriterFactoryProvider.java
 
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/writer/IExternalFileWriterFactoryProvider.java
index eabd2cb5db..5805f08d02 100644
--- 
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/writer/IExternalFileWriterFactoryProvider.java
+++ 
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/writer/IExternalFileWriterFactoryProvider.java
@@ -19,7 +19,7 @@
 package org.apache.asterix.runtime.writer;
 
 public interface IExternalFileWriterFactoryProvider {
-    IExternalFileWriterFactory create(ExternalWriterConfiguration 
configuration);
+    IExternalFileWriterFactory create(ExternalFileWriterConfiguration 
configuration);
 
     char getSeparator();
 }
diff --git 
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java
 
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java
index 5240e0c375..11c8b8131b 100644
--- 
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java
+++ 
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java
@@ -66,8 +66,8 @@ public interface IMetadataProvider<S, I> {
             throws AlgebricksException;
 
     Pair<IPushRuntimeFactory, AlgebricksPartitionConstraint> 
getWriteDatabaseWithKeyRuntime(int sourceColumn,
-            IScalarEvaluatorFactory[] keyEvaluatorFactories, boolean 
autogenerated, IWriteDataSink sink,
-            RecordDescriptor inputDesc, Object sourceType) throws 
AlgebricksException;
+            IScalarEvaluatorFactory[] keyEvaluatorFactories, IWriteDataSink 
sink, RecordDescriptor inputDesc,
+            Object sourceType) throws AlgebricksException;
 
     Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> 
getResultHandleRuntime(IDataSink sink, int[] printColumns,
             IPrinterFactory[] printerFactories, IAWriterFactory writerFactory,
diff --git 
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SinkWritePOperator.java
 
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SinkWritePOperator.java
index 71f5876857..9c1879feca 100644
--- 
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SinkWritePOperator.java
+++ 
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SinkWritePOperator.java
@@ -62,16 +62,12 @@ public class SinkWritePOperator extends 
AbstractPhysicalOperator {
     private final LogicalVariable sourceVariable;
     private final List<LogicalVariable> partitionVariables;
     private final List<OrderColumn> orderColumns;
-    private final List<LogicalVariable> keyVariables;
-    private final boolean autogenerated;
 
     public SinkWritePOperator(LogicalVariable sourceVariable, 
List<LogicalVariable> partitionVariables,
-            List<OrderColumn> orderColumns, List<LogicalVariable> 
keyVariables, boolean autogenerated) {
+            List<OrderColumn> orderColumns) {
         this.sourceVariable = sourceVariable;
         this.partitionVariables = partitionVariables;
         this.orderColumns = orderColumns;
-        this.keyVariables = keyVariables;
-        this.autogenerated = autogenerated;
     }
 
     @Override
@@ -174,8 +170,8 @@ public class SinkWritePOperator extends 
AbstractPhysicalOperator {
                     typeEnv.getVarType(sourceVariable));
 
         } else {
-            runtimeAndConstraints = 
mp.getWriteDatabaseWithKeyRuntime(sourceColumn, keyEvalFactories, autogenerated,
-                    writeDataSink, inputDesc, 
typeEnv.getVarType(sourceVariable));
+            runtimeAndConstraints = 
mp.getWriteDatabaseWithKeyRuntime(sourceColumn, keyEvalFactories, writeDataSink,
+                    inputDesc, typeEnv.getVarType(sourceVariable));
         }
 
         IPushRuntimeFactory runtime = runtimeAndConstraints.first;
diff --git 
a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java
 
b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java
index 3ea2631274..9fd4cd97eb 100644
--- 
a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java
+++ 
b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java
@@ -409,8 +409,7 @@ public class SetAlgebricksPhysicalOperatorsRule implements 
IAlgebraicRewriteRule
             ensureAllVariables(op.getPartitionExpressions(), v -> v);
             ensureAllVariables(op.getOrderExpressions(), Pair::getSecond);
             ensureAllVariables(op.getKeyExpressions(), v -> v);
-            return new SinkWritePOperator(op.getSourceVariable(), 
op.getPartitionVariables(), op.getOrderColumns(),
-                    op.getKeyVariables(), op.getAutogenerated());
+            return new SinkWritePOperator(op.getSourceVariable(), 
op.getPartitionVariables(), op.getOrderColumns());
         }
 
         @Override

Reply via email to