Github user xubo245 commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2738#discussion_r220459945
--- Diff: store/CSDK/main.cpp ---
@@ -0,0 +1,239 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio.h>
+#include <jni.h>
+#include <stdlib.h>
+#include <iostream>
+#include <unistd.h>
+#include "CarbonReader.h"
+
+using namespace std;
+
+JavaVM *jvm;
+
+/**
+ * init jvm
+ *
+ * @return
+ */
+JNIEnv *initJVM() {
+ JNIEnv *env;
+ JavaVMInitArgs vm_args;
+ int parNum = 3;
+ int res;
+ JavaVMOption options[parNum];
+
+ options[0].optionString = "-Djava.compiler=NONE";
+ options[1].optionString =
"-Djava.class.path=../../sdk/target/carbondata-sdk.jar";
+ options[2].optionString = "-verbose:jni";
+ vm_args.version = JNI_VERSION_1_8;
+ vm_args.nOptions = parNum;
+ vm_args.options = options;
+ vm_args.ignoreUnrecognized = JNI_FALSE;
+
+ res = JNI_CreateJavaVM(&jvm, (void **) &env, &vm_args);
+ if (res < 0) {
+ fprintf(stderr, "\nCan't create Java VM\n");
+ exit(1);
+ }
+
+ return env;
+}
+
+/**
+ * test read data from local disk, without projection
+ *
+ * @param env jni env
+ * @return
+ */
+bool readFromLocalWithoutProjection(JNIEnv *env) {
+
+ CarbonReader carbonReaderClass;
+ carbonReaderClass.builder(env, "../resources/carbondata", "test");
+ carbonReaderClass.build();
+
+ printf("\nRead data from local without projection:\n");
+
+ while (carbonReaderClass.hasNext()) {
+ jobjectArray row = carbonReaderClass.readNextRow();
+ jsize length = env->GetArrayLength(row);
+
+ int j = 0;
+ for (j = 0; j < length; j++) {
+ jobject element = env->GetObjectArrayElement(row, j);
+ char *str = (char *) env->GetStringUTFChars((jstring) element,
JNI_FALSE);
+ printf("%s\t", str);
+ }
+ printf("\n");
+ }
+
+ carbonReaderClass.close();
+}
+
+/**
+ * test read data from local disk
+ *
+ * @param env jni env
+ * @return
+ */
+bool readFromLocal(JNIEnv *env) {
+
+ CarbonReader carbonReaderClass;
+ carbonReaderClass.builder(env, "../resources/carbondata", "test");
+
+ char *argv[11];
+ argv[0] = "stringField";
+ argv[1] = "shortField";
+ argv[2] = "intField";
+ argv[3] = "longField";
+ argv[4] = "doubleField";
+ argv[5] = "boolField";
+ argv[6] = "dateField";
+ argv[7] = "timeField";
+ argv[8] = "decimalField";
+ argv[9] = "varcharField";
+ argv[10] = "arrayField";
+ carbonReaderClass.projection(11, argv);
+
+ carbonReaderClass.build();
+
+ printf("\nRead data from local:\n");
+
+ while (carbonReaderClass.hasNext()) {
+ jobjectArray row = carbonReaderClass.readNextRow();
+ jsize length = env->GetArrayLength(row);
+
+ int j = 0;
+ for (j = 0; j < length; j++) {
+ jobject element = env->GetObjectArrayElement(row, j);
+ char *str = (char *) env->GetStringUTFChars((jstring) element,
JNI_FALSE);
+ printf("%s\t", str);
+ }
+ printf("\n");
+ }
+
+ carbonReaderClass.close();
+}
+
+
+/**
+ * read data from S3
+ * parameter is ak sk endpoint
+ *
+ * @param env jni env
+ * @param argv argument vector
+ * @return
+ */
+bool readFromS3_2(JNIEnv *env, char *argv[]) {
+ CarbonReader carbonReaderClass;
+
+ char *args[3];
+ // "your access key"
+ args[0] = argv[1];
+ // "your secret key"
+ args[1] = argv[2];
+ // "your endPoint"
+ args[2] = argv[3];
+
+ carbonReaderClass.builder(env, "s3a://sdk/WriterOutput", "test");
+ carbonReaderClass.build(args[0], args[1], args[2]);
+
+ printf("\nRead data from S3:\n");
+ while (carbonReaderClass.hasNext()) {
+ jobjectArray row = carbonReaderClass.readNextRow();
+ jsize length = env->GetArrayLength(row);
+
+ int j = 0;
+ for (j = 0; j < length; j++) {
+ jobject element = env->GetObjectArrayElement(row, j);
+ char *str = (char *) env->GetStringUTFChars((jstring) element,
JNI_FALSE);
+ printf("%s\t", str);
+ }
+ printf("\n");
+ }
+
+ carbonReaderClass.close();
+}
+
+/**
+ * read data from S3
+ * parameter is ak sk endpoint
+ *
+ * @param env jni env
+ * @param argv argument vector
+ * @return
+ */
+bool readFromS3(JNIEnv *env, char *argv[]) {
+ CarbonReader carbonReaderClass;
--- End diff --
ok, done
---