This is an automated email from the ASF dual-hosted git repository.
mcvsubbu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git
The following commit(s) were added to refs/heads/master by this push:
new 59d02c6 complete compatibility regression testing (#6650)
59d02c6 is described below
commit 59d02c66af3ab828bb3f75c0f832d03db0917f1a
Author: Liang Mingqiang <[email protected]>
AuthorDate: Wed Mar 10 13:40:03 2021 -0800
complete compatibility regression testing (#6650)
* split compCheck.sh as two script so we can build and test separately
* redirect services' logs to a file for easy of debug
* wait for zk/controller to be ready
* fix some minor bugs.
---
compatibility-verifier/README.md | 38 ++++++
compatibility-verifier/checkoutAndBuild.sh | 79 +++++++++++
compatibility-verifier/compCheck.sh | 150 ++++++++-------------
.../org/apache/pinot/compat/tests/SegmentOp.java | 8 +-
.../pinot/compat/tests/SqlResultComparator.java | 35 +++--
.../compat-tests/configs/feature-test-1.json | 4 +-
.../compat-tests/data/FeatureTest1-data-00.csv | 25 ++--
.../compat-tests/data/FeatureTest1-data-01.csv | 17 ++-
.../compat-tests/data/recordReaderConfig.json | 2 +-
...p-publish.yaml => kafka-stream-produce-op.yaml} | 12 +-
.../compat-tests/kafka-topic-create-op.yaml | 25 ++++
...p-publish.yaml => offline-table-create-op.yaml} | 19 +--
...p-publish.yaml => offline-table-delete-op.yaml} | 21 +--
.../queries/feature-test-1-sql.queries | 17 ++-
.../src/test/resources/compat-tests/query-op.yaml | 28 +---
.../query-results/feature-test-1-rest-sql.results | 1 -
...-publish.yaml => realtime-table-create-op.yaml} | 17 +--
...-publish.yaml => realtime-table-delete-op.yaml} | 21 +--
...ream-op-publish.yaml => segment-create-op.yaml} | 24 +---
.../resources/compat-tests/segment-delete-op.yaml | 26 ++++
.../resources/compat-tests/table-segment-op.yaml | 45 -------
21 files changed, 302 insertions(+), 312 deletions(-)
diff --git a/compatibility-verifier/README.md b/compatibility-verifier/README.md
new file mode 100644
index 0000000..0f6c9b7
--- /dev/null
+++ b/compatibility-verifier/README.md
@@ -0,0 +1,38 @@
+<!--
+
+ 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.
+
+-->
+
+# Compatibility Regression Testing Scripts for Apache Pinot
+
+## Usage
+
+### Step 1: checkout source code and build targets for older commit and newer
commit
+```shell
+./compatibility-verifier/checkoutAndBuild.sh [olderCommit] [newerCommit]
[workingDir]
+```
+***NOTE***: `[workingDir]` is optional, if user does not specify
`[workingDir]`, the script will create a temporary working
+dir and output the path, which can be used in step 2.
+
+### Step 2: run compatibility regression test against the two targets build in
step1
+```shell
+./compatibility-verifier/compCheck.sh [workingDir]
+```
+***NOTE***: the script can only be run under the root folder of the project
currently. Before run the script, make sure to
+change to the right directory first.
diff --git a/compatibility-verifier/checkoutAndBuild.sh
b/compatibility-verifier/checkoutAndBuild.sh
new file mode 100644
index 0000000..5d71c21
--- /dev/null
+++ b/compatibility-verifier/checkoutAndBuild.sh
@@ -0,0 +1,79 @@
+#!/bin/bash
+#
+# 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.
+#
+
+
+# get a temporary directory in case the workingDir is not provided by user
+TMP_DIR=$(mktemp -d 2>/dev/null || mktemp -d -t 'mytmpdir')
+
+# get usage of the script
+function usage() {
+ command=$1
+ echo "Usage: $command olderCommit newerCommit [workingDir]"
+ exit 1
+}
+
+# This function builds Pinot given a specific commit hash and target directory
+function checkoutAndBuild() {
+ commitHash=$1
+ targetDir=$2
+
+ pushd "$targetDir" || exit 1
+ git init
+ git remote add origin https://github.com/apache/incubator-pinot
+ git fetch --depth 1 origin "$commitHash"
+ git checkout FETCH_HEAD
+ mvn install package -DskipTests -Pbin-dist
+ popd || exit 1
+}
+
+# get arguments
+olderCommit=$1
+newerCommit=$2
+
+if [ -n "$3" ]; then
+ workingDir=$3
+ if [ -d "$workingDir" ]; then
+ echo "Directory ${workingDir} already exists. Use a new directory."
+ exit 1
+ fi
+else
+ # use the temp directory in case workingDir is not provided
+ workingDir=$TMP_DIR
+ echo "workingDir: ${workingDir}"
+fi
+
+# create subdirectories for given commits
+oldTargetDir="$workingDir"/oldTargetDir
+newTargetDir="$workingDir"/newTargetDir
+
+if ! mkdir -p "$oldTargetDir"; then
+ echo "Failed to create target directory ${oldTargetDir}"
+ exit 1
+fi
+if ! mkdir -p "$newTargetDir"; then
+ echo "Failed to create target directory ${newTargetDir}"
+ exit 1
+fi
+
+# Building targets
+echo "Building the old version ... "
+checkoutAndBuild "$olderCommit" "$oldTargetDir"
+echo "Building the new version ..."
+checkoutAndBuild "$newerCommit" "$newTargetDir"
diff --git a/compatibility-verifier/compCheck.sh
b/compatibility-verifier/compCheck.sh
index 141e6c4..9660ec9 100755
--- a/compatibility-verifier/compCheck.sh
+++ b/compatibility-verifier/compCheck.sh
@@ -34,61 +34,62 @@
# and run all the scripts in the directory in alpha order, one script at each
# "stage" of upgrade.
#
-# We may modify to choose a minimal run in which the same set of operatons
are run
+# We may modify to choose a minimal run in which the same set of operations
are run
# between any two component upgrades/rollbacks -- this may consist of adding
# one more segment to table, adding some more rows to the stream topic, and
# running some queries with the new data.
-# get a temporary directory in case the workingDir is not provided by user
-TMP_DIR=$(mktemp -d 2>/dev/null || mktemp -d -t 'mytmpdir')
-
-COMPAT_TESTER_PATH="pinot-integration-tests/target/pinot-integration-tests-pkg/bin/pinot-compat-test-runner.sh"
# get usage of the script
function usage() {
command=$1
- echo "Usage: $command olderCommit newerCommit [workingDir]"
+ echo "Usage: $command [workingDir]"
exit 1
}
-# cleanup the temporary directory when exiting the script
-function cleanup() {
- if [ -n "$TMP_DIR" ] && [ -d "$TMP_DIR" ] && [ "$workingDir" = "$TMP_DIR" ]
; then
- echo "The temporary directory $TMP_DIR needs to be cleaned up."
- fi
+function waitForZkReady() {
+ # TODO: check ZK to be ready instead of sleep
+ sleep 60
+ echo "zookeeper is ready"
}
-# This function builds Pinot given a specific commit hash and target directory
-function checkoutAndBuild() {
- commitHash=$1
- targetDir=$2
-
- pushd "$targetDir" || exit 1
- git init
- git remote add origin https://github.com/apache/incubator-pinot
- git fetch --depth 1 origin "$commitHash"
- git checkout FETCH_HEAD
- mvn install package -DskipTests -Pbin-dist
- popd || exit 1
+function waitForControllerReady() {
+ # TODO: check Controller to be ready instead of sleep
+ sleep 60
+ echo "controller is ready"
}
+function waitForKafkaReady() {
+ # TODO: check kafka to be ready instead of sleep
+ sleep 10
+ echo "kafka is ready"
+}
+
+function waitForClusterReady() {
+ # TODO: check cluster to be ready instead of sleep
+ sleep 2
+ echo "Cluster ready."
+}
# Given a component and directory, start that version of the specific component
function startService() {
serviceName=$1
dirName=$2
- # Upon start, save the pid of the process for a component into a file in
/tmp/{component}.pid, which is then used to stop it
+ # Upon start, save the pid of the process for a component into a file in
/working_dir/{component}.pid, which is then used to stop it
pushd "$dirName"/pinot-tools/target/pinot-tools-pkg/bin || exit 1
if [ "$serviceName" = "zookeeper" ]; then
- sh -c 'echo $$ > $0/zookeeper.pid; exec ./pinot-admin.sh StartZookeeper'
"${dirName}" &
+ sh -c 'rm -rf ${0}/zkdir'
+ sh -c 'echo $$ > $0/zookeeper.pid; exec ./pinot-admin.sh StartZookeeper
-dataDir ${0}/zkdir > ${0}/zookeeper.log 2>&1' "${dirName}" &
elif [ "$serviceName" = "controller" ]; then
- sh -c 'echo $$ > $0/controller.pid; exec ./pinot-admin.sh StartController'
"${dirName}" &
+ sh -c 'echo $$ > $0/controller.pid; exec ./pinot-admin.sh StartController
> ${0}/controller.log 2>&1' "${dirName}" &
elif [ "$serviceName" = "broker" ]; then
- sh -c 'echo $$ > $0/broker.pid; exec ./pinot-admin.sh StartBroker'
"${dirName}" &
+ sh -c 'echo $$ > $0/broker.pid; exec ./pinot-admin.sh StartBroker >
${0}/broker.log 2>&1' "${dirName}" &
elif [ "$serviceName" = "server" ]; then
- sh -c 'echo $$ > $0/server.pid; exec ./pinot-admin.sh StartServer'
"${dirName}" &
+ sh -c 'echo $$ > $0/server.pid; exec ./pinot-admin.sh StartServer >
${0}/server.log 2>&1' "${dirName}" &
elif [ "$serviceName" = "kafka" ]; then
- sh -c 'echo $$ > $0/kafka.pid; exec ./pinot-admin.sh StartKafka -zkAddress
localhost:2181/kafka' "${dirName}" &
+ sh -c 'echo $$ > $0/kafka.pid; exec ./pinot-admin.sh StartKafka -zkAddress
localhost:2181/kafka > ${0}/kafka.log 2>&1' "${dirName}" &
fi
+
+ echo "${serviceName} started"
popd || exit 1
}
@@ -105,17 +106,24 @@ function stopService() {
else
echo "Pid file ${dirName}/${serviceName}.pid not found. Failed to stop
component ${serviceName}"
fi
+ echo "${serviceName} stopped"
}
# Starts a Pinot cluster given a specific target directory
function startServices() {
dirName=$1
startService zookeeper "$dirName"
+ # Controller depends on zookeeper, if not wait zookeeper to be ready,
controller will crash.
+ waitForZkReady
startService controller "$dirName"
+ # Broker depends on controller, if not wait controller to be ready, broker
will crash.
+ waitForControllerReady
startService broker "$dirName"
startService server "$dirName"
startService kafka "$dirName"
+ waitForKafkaReady
echo "Cluster started."
+ waitForClusterReady
}
# Stops the currently running Pinot cluster
@@ -142,73 +150,18 @@ function setupCompatTester() {
# Main
#
-# cleanp the temporary directory when the bash script exits
-trap cleanup EXIT
-
-setupCompatTester
-
-###############################################################################
-# XXX BEGIN Temporary
-# While the individual components are under development, it is useful to start
-# zookeeper, controler, broker, server and kafka outside of this command and
-# debug as needed.
-#
-# Start the components as follows (or in debugger, if debugging)
-#
-# rm -rf /tmp/zkdir && ${PINOT_ADMIN_CMD} StartZookeeper -dataDir /tmp/zkdir
-# ${PINOT_ADMIN_CMD} StartController
-# ${PINOT_ADMIN_CMD} StartBroker
-# ${PINOT_ADMIN_CMD} StartServer
-# ${PINOT_ADMIN_CMD} StartKafka -zkAddress localhost:2181
-#
-# To compile the compat tester command alone, do the following:
-# cd incubator-pinot
-# mvn clean install -DskipTests
-# mvn -pl pinot-integration-tests package -DskipTests
-#
-if [ $# -ne 2 ]; then echo "Usage: $0 <yaml-file-name> <generation-number> (Be
sure to start all components)"; exit 1; fi
-${COMPAT_TESTER} $1 $2; if [ $? -ne 0 ]; then echo "Command failed"; exit 1; fi
-exit 0
-# XXX END Temporary
-##############################################################################
-
-if [ $# -lt 2 ] || [ $# -gt 3 ] ; then
+if [ $# -ne 1 ] ; then
usage compCheck
fi
-# get arguments
-olderCommit=$1
-newerCommit=$2
-
-if [ -n "$3" ]; then
- workingDir=$3
- if [ -d "$workingDir" ]; then
- echo "Directory ${workingDir} already exists. Use a new directory."
- exit 1
- fi
-else
- # use the temp directory in case workingDir is not provided
- workingDir=$TMP_DIR
-fi
+COMPAT_TESTER_PATH="pinot-integration-tests/target/pinot-integration-tests-pkg/bin/pinot-compat-test-runner.sh"
# create subdirectories for given commits
+workingDir=$1
oldTargetDir="$workingDir"/oldTargetDir
newTargetDir="$workingDir"/newTargetDir
-if ! mkdir -p "$oldTargetDir"; then
- echo "Failed to create target directory ${oldTargetDir}"
- exit 1
-fi
-if ! mkdir -p "$newTargetDir"; then
- echo "Failed to create target directory ${newTargetDir}"
- exit 1
-fi
-
-# Building targets
-echo "Building the old version ... "
-checkoutAndBuild "$olderCommit" "$oldTargetDir"
-echo "Building the new version ..."
-checkoutAndBuild "$newerCommit" "$newTargetDir"
+setupCompatTester
# check that the default ports are open
if [ "$(lsof -t -i:8097 -s TCP:LISTEN)" ] || [ "$(lsof -t -i:8098
-sTCP:LISTEN)" ] || [ "$(lsof -t -i:8099 -sTCP:LISTEN)" ] ||
@@ -217,29 +170,32 @@ if [ "$(lsof -t -i:8097 -s TCP:LISTEN)" ] || [ "$(lsof -t
-i:8098 -sTCP:LISTEN)"
exit 1
fi
+
# Setup initial cluster with olderCommit and do rolling upgrade
startServices "$oldTargetDir"
-#$COMPAT_TESTER pre-controller-upgrade.yaml; if [ $? -ne 0 ]; then exit 1; fi
+#$COMPAT_TESTER pre-controller-upgrade.yaml 1; if [ $? -ne 0 ]; then exit 1; fi
stopService controller "$oldTargetDir"
startService controller "$newTargetDir"
-#$COMPAT_TESTER pre-broker-upgrade.yaml; if [ $? -ne 0 ]; then exit 1; fi
+waitForControllerReady
+#$COMPAT_TESTER pre-broker-upgrade.yaml 2; if [ $? -ne 0 ]; then exit 1; fi
stopService broker "$oldTargetDir"
startService broker "$newTargetDir"
-#$COMPAT_TESTER pre-server-upgrade.yaml; if [ $? -ne 0 ]; then exit 1; fi
+#$COMPAT_TESTER pre-server-upgrade.yaml 3; if [ $? -ne 0 ]; then exit 1; fi
stopService server "$oldTargetDir"
startService server "$newTargetDir"
-#$COMPAT_TESTER post-server-upgrade.yaml; if [ $? -ne 0 ]; then exit 1; fi
+#$COMPAT_TESTER post-server-upgrade.yaml 4; if [ $? -ne 0 ]; then exit 1; fi
-# Upgrade complated, now do a rollback
+# Upgrade completed, now do a rollback
stopService server "$newTargetDir"
startService server "$oldTargetDir"
-#$COMPAT_TESTER post-server-rollback.yaml; if [ $? -ne 0 ]; then exit 1; fi
+#$COMPAT_TESTER post-server-rollback.yaml 5; if [ $? -ne 0 ]; then exit 1; fi
stopService broker "$newTargetDir"
startService broker "$oldTargetDir"
-#$COMPAT_TESTER post-broker-rollback.yaml; if [ $? -ne 0 ]; then exit 1; fi
+#$COMPAT_TESTER post-broker-rollback.yaml 6; if [ $? -ne 0 ]; then exit 1; fi
stopService controller "$newTargetDir"
startService controller "$oldTargetDir"
-#$COMPAT_TESTER post-controller-rollback.yaml; if [ $? -ne 0 ]; then exit 1; fi
+waitForControllerReady
+#$COMPAT_TESTER post-controller-rollback.yaml 7; if [ $? -ne 0 ]; then exit 1;
fi
stopServices "$oldTargetDir"
-exit 0
+exit 0
\ No newline at end of file
diff --git
a/pinot-integration-tests/src/test/java/org/apache/pinot/compat/tests/SegmentOp.java
b/pinot-integration-tests/src/test/java/org/apache/pinot/compat/tests/SegmentOp.java
index b0e26e7..f7ff5aa 100644
---
a/pinot-integration-tests/src/test/java/org/apache/pinot/compat/tests/SegmentOp.java
+++
b/pinot-integration-tests/src/test/java/org/apache/pinot/compat/tests/SegmentOp.java
@@ -184,9 +184,9 @@ public class SegmentOp extends BaseOp {
throws Exception {
TableConfig tableConfig = JsonUtils.fileToObject(new
File(_tableConfigFileName), TableConfig.class);
_tableName = tableConfig.getTableName();
- // if user does not specify segmentName, use tableName + generationNumber
+ // if user does not specify segmentName, use tableName_generationNumber
if (_segmentName == null || _segmentName.isEmpty()) {
- _segmentName = _tableName + _generationNumber;
+ _segmentName = _tableName + "_" + _generationNumber;
}
Schema schema = JsonUtils.fileToObject(new File(_schemaFileName),
Schema.class);
@@ -285,9 +285,9 @@ public class SegmentOp extends BaseOp {
try {
TableConfig tableConfig = JsonUtils.fileToObject(new
File(_tableConfigFileName), TableConfig.class);
_tableName = tableConfig.getTableName();
- // if user does not specify segmentName, use tableName + generationNumber
+ // if user does not specify segmentName, use tableName_generationNumber
if (_segmentName == null || _segmentName.isEmpty()) {
- _segmentName = _tableName + _generationNumber;
+ _segmentName = _tableName + "_" + _generationNumber;
}
ControllerTest.sendDeleteRequest(ControllerRequestURLBuilder.baseUrl(ClusterDescriptor.CONTROLLER_URL)
diff --git
a/pinot-integration-tests/src/test/java/org/apache/pinot/compat/tests/SqlResultComparator.java
b/pinot-integration-tests/src/test/java/org/apache/pinot/compat/tests/SqlResultComparator.java
index c117452..29b614b 100644
---
a/pinot-integration-tests/src/test/java/org/apache/pinot/compat/tests/SqlResultComparator.java
+++
b/pinot-integration-tests/src/test/java/org/apache/pinot/compat/tests/SqlResultComparator.java
@@ -43,8 +43,9 @@ public class SqlResultComparator {
private static final String FIELD_RESULT_TABLE = "resultTable";
private static final String FIELD_DATA_SCHEMA = "dataSchema";
- private static final String FIELD_ROWS = "rows";
+ private static final String FIELD_COLUMN_NAMES = "columnNames";
private static final String FIELD_COLUMN_DATA_TYPES = "columnDataTypes";
+ private static final String FIELD_ROWS = "rows";
private static final String FIELD_IS_SUPERSET = "isSuperset";
private static final String FIELD_NUM_DOCS_SCANNED = "numDocsScanned";
private static final String FIELD_EXCEPTIONS = "exceptions";
@@ -126,11 +127,12 @@ public class SqlResultComparator {
}
public static boolean areMetadataEqual(JsonNode actual, JsonNode expected) {
- return areNumServersQueriedEqual(actual, expected) &&
areNumServersRespondedEqual(actual, expected)
- && areNumSegmentsQueriedEqual(actual, expected) &&
areNumSegmentsProcessedEqual(actual, expected)
- && areNumSegmentsMatchedEqual(actual, expected) &&
areNumConsumingSegmentsQueriedEqual(actual, expected)
- && areNumDocsScannedEqual(actual, expected) &&
areNumEntriesScannedInFilterEqual(actual, expected)
- && areNumEntriesScannedPostFilterEqual(actual, expected) &&
areNumGroupsLimitReachedEqual(actual, expected);
+ /*
+ * Since we add more and more several segments with different generations
during compatibility test,
+ * metadata such as "numSegmentsQueried", "numDocsScanned" will be
different, we only compare
+ * "numServersQueried" and "numServersResponded" here.
+ * */
+ return areNumServersQueriedEqual(actual, expected) &&
areNumServersRespondedEqual(actual, expected);
}
private static boolean areNumGroupsLimitReachedEqual(JsonNode actual,
JsonNode expected) {
@@ -269,13 +271,20 @@ public class SqlResultComparator {
}
private static boolean areDataSchemaEqual(JsonNode actual, JsonNode
expected) {
- JsonNode actualDataSchema =
actual.get(FIELD_RESULT_TABLE).get(FIELD_DATA_SCHEMA);
- JsonNode expecteDataSchema =
expected.get(FIELD_RESULT_TABLE).get(FIELD_DATA_SCHEMA);
-
- String actualDataSchemaStr = actualDataSchema.toString();
- String expecteDataSchemaStr = expecteDataSchema.toString();
- if (!actualDataSchemaStr.equals(expecteDataSchemaStr)) {
- LOGGER.error("The dataSchema don't match! Actual: {}, Expected: {}",
actualDataSchema, expecteDataSchema);
+ /*
+ * Field "dataSchema" is an array, which contains "columnNames" and
"columnDataTypes". However there is no orders
+ * between "columnNames" and "columnDataTypes", so we extract and append
them when compare instead of compare
+ * "dataSchema" directly.
+ * */
+ JsonNode actualColumnNames =
actual.get(FIELD_RESULT_TABLE).get(FIELD_DATA_SCHEMA).get(FIELD_COLUMN_NAMES);
+ JsonNode expectedColumnNames =
expected.get(FIELD_RESULT_TABLE).get(FIELD_DATA_SCHEMA).get(FIELD_COLUMN_NAMES);
+ JsonNode actualColumnDataTypes =
actual.get(FIELD_RESULT_TABLE).get(FIELD_DATA_SCHEMA).get(FIELD_COLUMN_DATA_TYPES);
+ JsonNode expectedColumnDataTypes =
expected.get(FIELD_RESULT_TABLE).get(FIELD_DATA_SCHEMA).get(FIELD_COLUMN_DATA_TYPES);
+
+ String actualDataSchemaStr = actualColumnNames.toString() +
actualColumnDataTypes.toString();
+ String expectedDataSchemaStr = expectedColumnNames.toString() +
expectedColumnDataTypes.toString();
+ if (!actualDataSchemaStr.equals(expectedDataSchemaStr)) {
+ LOGGER.error("The dataSchema don't match! Actual: {}, Expected: {}",
actualDataSchemaStr, expectedDataSchemaStr);
return false;
}
return true;
diff --git
a/pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1.json
b/pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1.json
index 3e1acf4..a160228 100644
---
a/pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1.json
+++
b/pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1.json
@@ -21,7 +21,9 @@
"retentionTimeValue": "",
"segmentAssignmentStrategy": "BalanceNumSegmentAssignmentStrategy",
"segmentPushFrequency": "daily",
- "segmentPushType": "REFRESH"
+ "segmentPushType": "REFRESH",
+ "timeColumnName": "HoursSinceEpoch",
+ "timeType": "HOURS"
},
"tableIndexConfig": {
"aggregateMetrics": false,
diff --git
a/pinot-integration-tests/src/test/resources/compat-tests/data/FeatureTest1-data-00.csv
b/pinot-integration-tests/src/test/resources/compat-tests/data/FeatureTest1-data-00.csv
index 410ea8b..bb537d9 100644
---
a/pinot-integration-tests/src/test/resources/compat-tests/data/FeatureTest1-data-00.csv
+++
b/pinot-integration-tests/src/test/resources/compat-tests/data/FeatureTest1-data-00.csv
@@ -1,13 +1,12 @@
-
-# generationNumber stringDimSV1 stringDimSV2 longDimSV1 longDimSV2
stringDimMV1 stringDimMV2 intDimMV1 intDimMV2 textDim1 mapDim1__KEYS
mapDim1__VALUES mapDim2json intMetric1 longMetric1 floatMetric1 doubleMetric1
-__GENERATION_NUMBER__,"s1-0",s2-0,1,2,m1-0-0;m1-0-1,m2-0-0;m2-0-1,3;4,6;7,Java
C++
Python,01a0bc,k1;k2;k3;k4;k5,1;1;2;2;2,"{""k1"":1,""k2"":1,""k3"":2,""k4"":2,""k5"":2}",10,11,12.1,13.1
-__GENERATION_NUMBER__,"s1-0",s2-0,1,2,m1-0-0;m1-0-1,m2-0-0;m2-0-1,3;4,6;7,Java
C++
Python,4877625602,k1;k2;k3;k4;k5,3;3;3;3;3,"{""k1"":3,""k2"":3,""k3"":3,""k4"":3,""k5"":3}",10,11,12.1,13.1,
# Dupliate of row 0 1
-__GENERATION_NUMBER__,s1-2,s2-2,11,21,m1-2-0;m1-2-1,m2-2-0;m2-2-1,32;42,62;72,Java
C++
golang,13225573e3f5,k1;k2;k3;k4;k5,4;5;6;7;7,"{""k1"":4,""k2"":5,""k3"":6,""k4"":7,""k5"":7}",10,21,22.1,23.10
-__GENERATION_NUMBER__,s1-2,s2-2,11,21,m1-3-0;m1-3-1,m2-3-0;m2-3-1,32;42,62;72,Java
C++
golang,deadbeef,k1;k2;k3;k4;k5,7;7;7;7;7,"{""k1"":7,""k2"":7,""k3"":7,""k4"":7,""k5"":7}",10,21,22.1,23.10,
# All sv cols same as prev
-__GENERATION_NUMBER__,s1-4,s2-4,41,22,m1-2-0;m1-2-1,m2-2-0;m2-2-1,42;52,72;82,Java
C++
golang,deed0507,k1;k2;k3;k4;k5,7;7;8;8;8,"{""k1"":7,""k2"":7,""k3"":8,""k4"":8,""k5"":8}",14,24,24.1,24.10,
# All mv cols same as row 2
-__GENERATION_NUMBER__,s1-5,,,32,m1-5-0,m2-2-0,,92;22,golang shell
bash,,k1;k2;k3;k4;k5,7;7;7;7;7,"{""k1"":7,""k2"":7,""k3"":7,""k4"":7,""k5"":7}",,24,,24.10,
# Default values for some columns
-__GENERATION_NUMBER__,s1-6,s2-6,7611,7621,m1-5-0;m1-5-1;m1-5-2,m2-2-0,392;462,6662;782,C++
golang
python,deed0507,k1;k2;k3;k4;k5,7;8;9;10;20,"{""k1"":7,""k2"":8,""k3"":9,""k4"":10,""k5"":20}",101,251,262.1,263.10,
# 3 values in MV
-__GENERATION_NUMBER__,s1-6,s2-6,7611,7621,m1-5-0;m1-5-1;m1-5-2,m2-2-0,392;462,6662;782,C++
golang
python,deed0507,k1;k2;k3;k4;k5,7;8;9;10;20,"{""k1"":7,""k2"":8,""k3"":9,""k4"":10,""k5"":20}",2147483647,251,262.1,263.10,
# MAX_INT in int metric
-__GENERATION_NUMBER__,s1-6,s2-6,7611,7621,m1-5-0;m1-5-1;m1-5-2,m2-2-0,392;462,6662;782,C++
golang
python,deed0507,k1;k2;k3;k4;k5,7;8;9;10;20,"{""k1"":7,""k2"":8,""k3"":9,""k4"":10,""k5"":20}",2147483647,251,262.1,263.10,
# MAX_INT in int metric
-__GENERATION_NUMBER__,s1-7,s2-7,6766,6777,m1-6-0;m1-6-1;m1-6-2;m1-6-3,m2-6-0;m2-6-1,392;462,6662;782,golang
Java,d54d0507,k1;k2;k3;k4;k5,31;31;32;32;32,"{""k1"":31,""k2"":31,""k3"":32,""k4"":32,""k5"":32}",87,251,262.10,263.10
-
+# HoursSinceEpoch generationNumber stringDimSV1 stringDimSV2 longDimSV1
longDimSV2 stringDimMV1 stringDimMV2 intDimMV1 intDimMV2 textDim1 mapDim1__KEYS
mapDim1__VALUES mapDim2json intMetric1 longMetric1 floatMetric1 doubleMetric1
+# Add some common rows from first segment, and some new rows as well
+123456,__GENERATION_NUMBER__,"s1-0",s2-0,1,2,m1-0-0;m1-0-1,m2-0-0;m2-0-1,3;4,6;7,Java
C++
Python,01a0bc,k1;k2;k3;k4;k5,1;1;2;2;2,"{""k1"":1,""k2"":1,""k3"":2,""k4"":2,""k5"":2}",10,11,12.1,13.1
+123456,__GENERATION_NUMBER__,"s1-0",s2-0,1,2,m1-0-0;m1-0-1,m2-0-0;m2-0-1,3;4,6;7,Java
C++
Python,4877625602,k1;k2;k3;k4;k5,3;3;3;3;3,"{""k1"":3,""k2"":3,""k3"":3,""k4"":3,""k5"":3}",10,11,12.1,13.1,
# Dupliate of row 0 1
+123456,__GENERATION_NUMBER__,s1-2,s2-2,11,21,m1-2-0;m1-2-1,m2-2-0;m2-2-1,32;42,62;72,Java
C++
golang,13225573e3f5,k1;k2;k3;k4;k5,4;5;6;7;7,"{""k1"":4,""k2"":5,""k3"":6,""k4"":7,""k5"":7}",10,21,22.1,23.10
+123456,__GENERATION_NUMBER__,s1-2,s2-2,11,21,m1-3-0;m1-3-1,m2-3-0;m2-3-1,32;42,62;72,Java
C++
golang,deadbeef,k1;k2;k3;k4;k5,7;7;7;7;7,"{""k1"":7,""k2"":7,""k3"":7,""k4"":7,""k5"":7}",10,21,22.1,23.10,
# All sv cols same as prev
+123456,__GENERATION_NUMBER__,s1-4,s2-4,41,22,m1-2-0;m1-2-1,m2-2-0;m2-2-1,42;52,72;82,Java
C++
golang,deed0507,k1;k2;k3;k4;k5,7;7;8;8;8,"{""k1"":7,""k2"":7,""k3"":8,""k4"":8,""k5"":8}",14,24,24.1,24.10,
# All mv cols same as row 2
+123456,__GENERATION_NUMBER__,s1-5,,,32,m1-5-0,m2-2-0,,92;22,golang shell
bash,,k1;k2;k3;k4;k5,7;7;7;7;7,"{""k1"":7,""k2"":7,""k3"":7,""k4"":7,""k5"":7}",,24,,24.10,
# Default values for some columns
+123456,__GENERATION_NUMBER__,s1-6,s2-6,7611,7621,m1-5-0;m1-5-1;m1-5-2,m2-2-0,392;462,6662;782,C++
golang
python,deed0507,k1;k2;k3;k4;k5,7;8;9;10;20,"{""k1"":7,""k2"":8,""k3"":9,""k4"":10,""k5"":20}",101,251,262.1,263.10,
# 3 values in MV
+123456,__GENERATION_NUMBER__,s1-6,s2-6,7611,7621,m1-5-0;m1-5-1;m1-5-2,m2-2-0,392;462,6662;782,C++
golang
python,deed0507,k1;k2;k3;k4;k5,7;8;9;10;20,"{""k1"":7,""k2"":8,""k3"":9,""k4"":10,""k5"":20}",2147483647,251,262.1,263.10,
# MAX_INT in int metric
+123456,__GENERATION_NUMBER__,s1-6,s2-6,7611,7621,m1-5-0;m1-5-1;m1-5-2,m2-2-0,392;462,6662;782,C++
golang
python,deed0507,k1;k2;k3;k4;k5,7;8;9;10;20,"{""k1"":7,""k2"":8,""k3"":9,""k4"":10,""k5"":20}",2147483647,251,262.1,263.10,
# MAX_INT in int metric
+123456,__GENERATION_NUMBER__,s1-7,s2-7,6766,6777,m1-6-0;m1-6-1;m1-6-2;m1-6-3,m2-6-0;m2-6-1,392;462,6662;782,golang
Java,d54d0507,k1;k2;k3;k4;k5,31;31;32;32;32,"{""k1"":31,""k2"":31,""k3"":32,""k4"":32,""k5"":32}",87,251,262.10,263.10
diff --git
a/pinot-integration-tests/src/test/resources/compat-tests/data/FeatureTest1-data-01.csv
b/pinot-integration-tests/src/test/resources/compat-tests/data/FeatureTest1-data-01.csv
index 84966ea..0636a6e 100644
---
a/pinot-integration-tests/src/test/resources/compat-tests/data/FeatureTest1-data-01.csv
+++
b/pinot-integration-tests/src/test/resources/compat-tests/data/FeatureTest1-data-01.csv
@@ -1,10 +1,9 @@
-
-# generationNumber stringDimSV1 stringDimSV2 longDimSV1 longDimSV2
stringDimMV1 stringDimMV2 intDimMV1 intDimMV2 textDim1 mapDim1__KEYS
mapDim1__VALUES intMetric1 longMetric1 floatMetric1 doubleMetric1
+# HoursSinceEpoch generationNumber stringDimSV1 stringDimSV2 longDimSV1
longDimSV2 stringDimMV1 stringDimMV2 intDimMV1 intDimMV2 textDim1 mapDim1__KEYS
mapDim1__VALUES intMetric1 longMetric1 floatMetric1 doubleMetric1
# Add some common rows from first segment, and some new rows as well
-__GENERATION_NUMBER__,"s1-0",s2-0,1,2,m1-0-0;m1-0-1,m2-0-0;m2-0-1,3;4,6;7,Java
C++
Python,01a0bc,k1;k2;k3;k4;k5,1;1;2;2;2,"{""k1"":1,""k2"":1,""k3"":2,""k4"":2,""k5"":2}",10,11,12.1,13.1
-__GENERATION_NUMBER__,s1-2,s2-2,11,21,m1-2-0;m1-2-1,m2-2-0;m2-2-1,32;42,62;72,Java
C++
golang,13225573e3f5,k1;k2;k3;k4;k5,4;5;6;7;7,"{""k1"":4,""k2"":5,""k3"":6,""k4"":7,""k5"":7}",10,21,22.1,23.10
-__GENERATION_NUMBER__,s1-5,,,32,m1-5-0,m2-2-0,,92;22,golang shell
bash,,k1;k2;k3;k4;k5,7;7;7;7;7,"{""k1"":7,""k2"":7,""k3"":7,""k4"":7,""k5"":7}",,24,,24.10,
# Default values for some columns
-__GENERATION_NUMBER__,s1-6,s2-6,7611,7621,m1-5-0;m1-5-1;m1-5-2,m2-2-0,392;462,6662;782,C++
golang
python,deed0507,k1;k2;k3;k4;k5,7;8;9;10;20,"{""k1"":7,""k2"":8,""k3"":9,""k4"":10,""k5"":20}",101,251,262.1,263.10,
# 3 values in MV
-__GENERATION_NUMBER__,s1-6,s2-6,7611,7621,m1-5-0;m1-5-1;m1-5-2,m2-2-0,392;462,6662;782,C++
golang
python,deed0507,k1;k2;k3;k4;k5,7;8;9;10;20,"{""k1"":7,""k2"":8,""k3"":9,""k4"":10,""k5"":20}",2147483647,251,262.1,263.10,
# MAX_INT in int metric
-__GENERATION_NUMBER__,foo1,foo2,234,983,foo;bar;baz,one,392;462,6662;782,golang
python
MS-Word,097865,k1;k2;k3;k4;k5,131;131;132;132;132,"{""k1"":131,""k2"":131,""k3"":132,""k4"":132,""k5"":132}",65,251,262.1,263.10
-__GENERATION_NUMBER__,foo4,foo4,234,983,foo;bar,one;two,32;62,662;72,python
MS-Word
UNIX,6755884e,k1;k2;k3;k4;k5,231;231;232;232;232,"{""k1"":231,""k2"":231,""k3"":232,""k4"":232,""k5"":232}",165,21,22.01,23.90
+123456,__GENERATION_NUMBER__,"s1-0",s2-0,1,2,m1-0-0;m1-0-1,m2-0-0;m2-0-1,3;4,6;7,Java
C++
Python,01a0bc,k1;k2;k3;k4;k5,1;1;2;2;2,"{""k1"":1,""k2"":1,""k3"":2,""k4"":2,""k5"":2}",10,11,12.1,13.1
+123456,__GENERATION_NUMBER__,s1-2,s2-2,11,21,m1-2-0;m1-2-1,m2-2-0;m2-2-1,32;42,62;72,Java
C++
golang,13225573e3f5,k1;k2;k3;k4;k5,4;5;6;7;7,"{""k1"":4,""k2"":5,""k3"":6,""k4"":7,""k5"":7}",10,21,22.1,23.10
+123456,__GENERATION_NUMBER__,s1-5,,,32,m1-5-0,m2-2-0,,92;22,golang shell
bash,,k1;k2;k3;k4;k5,7;7;7;7;7,"{""k1"":7,""k2"":7,""k3"":7,""k4"":7,""k5"":7}",,24,,24.10,
# Default values for some columns
+123456,__GENERATION_NUMBER__,s1-6,s2-6,7611,7621,m1-5-0;m1-5-1;m1-5-2,m2-2-0,392;462,6662;782,C++
golang
python,deed0507,k1;k2;k3;k4;k5,7;8;9;10;20,"{""k1"":7,""k2"":8,""k3"":9,""k4"":10,""k5"":20}",101,251,262.1,263.10,
# 3 values in MV
+123456,__GENERATION_NUMBER__,s1-6,s2-6,7611,7621,m1-5-0;m1-5-1;m1-5-2,m2-2-0,392;462,6662;782,C++
golang
python,deed0507,k1;k2;k3;k4;k5,7;8;9;10;20,"{""k1"":7,""k2"":8,""k3"":9,""k4"":10,""k5"":20}",2147483647,251,262.1,263.10,
# MAX_INT in int metric
+123456,__GENERATION_NUMBER__,foo1,foo2,234,983,foo;bar;baz,one,392;462,6662;782,golang
python
MS-Word,097865,k1;k2;k3;k4;k5,131;131;132;132;132,"{""k1"":131,""k2"":131,""k3"":132,""k4"":132,""k5"":132}",65,251,262.1,263.10
+123456,__GENERATION_NUMBER__,foo4,foo4,234,983,foo;bar,one;two,32;62,662;72,python
MS-Word
UNIX,6755884e,k1;k2;k3;k4;k5,231;231;232;232;232,"{""k1"":231,""k2"":231,""k3"":232,""k4"":232,""k5"":232}",165,21,22.01,23.90
diff --git
a/pinot-integration-tests/src/test/resources/compat-tests/data/recordReaderConfig.json
b/pinot-integration-tests/src/test/resources/compat-tests/data/recordReaderConfig.json
index 07ea5e1..ebaa04e 100644
---
a/pinot-integration-tests/src/test/resources/compat-tests/data/recordReaderConfig.json
+++
b/pinot-integration-tests/src/test/resources/compat-tests/data/recordReaderConfig.json
@@ -1,5 +1,5 @@
{
"commentMarker" : "#",
"header" :
-
"generationNumber,stringDimSV1,stringDimSV2,longDimSV1,longDimSV2,stringDimMV1,stringDimMV2,intDimMV1,intDimMV2,textDim1,bytesDimSV1,mapDim1__KEYS,mapDim1__VALUES,mapDim2json,intMetric1,longMetric1,floatMetric1,doubleMetric1"
+
"HoursSinceEpoch,generationNumber,stringDimSV1,stringDimSV2,longDimSV1,longDimSV2,stringDimMV1,stringDimMV2,intDimMV1,intDimMV2,textDim1,bytesDimSV1,mapDim1__KEYS,mapDim1__VALUES,mapDim2json,intMetric1,longMetric1,floatMetric1,doubleMetric1"
}
diff --git
a/pinot-integration-tests/src/test/resources/compat-tests/stream-op-publish.yaml
b/pinot-integration-tests/src/test/resources/compat-tests/kafka-stream-produce-op.yaml
similarity index 70%
copy from
pinot-integration-tests/src/test/resources/compat-tests/stream-op-publish.yaml
copy to
pinot-integration-tests/src/test/resources/compat-tests/kafka-stream-produce-op.yaml
index 14119a6..1475284 100644
---
a/pinot-integration-tests/src/test/resources/compat-tests/stream-op-publish.yaml
+++
b/pinot-integration-tests/src/test/resources/compat-tests/kafka-stream-produce-op.yaml
@@ -17,19 +17,9 @@
# under the License.
#
-# Operations to be done.
-description: tst file for stream op PRODUCE
+description: Yaml file for publishing rows to Kafka topic
PinotRealtimeFeatureTest1Event
operations:
- type: streamOp
- description: create Kafka topic
- op: CREATE
- streamConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime-stream-config.json
- - type: tableOp
- description: Create table feature-test-1-realtime.json
- op: CREATE
- schemaFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/FeatureTest1-schema.json
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime.json
- - type: streamOp
description: publish rows to PinotRealtimeFeatureTest1Event
op: PRODUCE
streamConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime-stream-config.json
diff --git
a/pinot-integration-tests/src/test/resources/compat-tests/kafka-topic-create-op.yaml
b/pinot-integration-tests/src/test/resources/compat-tests/kafka-topic-create-op.yaml
new file mode 100644
index 0000000..f2c6bea
--- /dev/null
+++
b/pinot-integration-tests/src/test/resources/compat-tests/kafka-topic-create-op.yaml
@@ -0,0 +1,25 @@
+#
+# 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.
+#
+
+description: Yaml file for creating Kafka topic PinotRealtimeFeatureTest1Event
+operations:
+ - type: streamOp
+ description: create Kafka topic PinotRealtimeFeatureTest1Event
+ op: CREATE
+ streamConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime-stream-config.json
\ No newline at end of file
diff --git
a/pinot-integration-tests/src/test/resources/compat-tests/stream-op-publish.yaml
b/pinot-integration-tests/src/test/resources/compat-tests/offline-table-create-op.yaml
similarity index 50%
copy from
pinot-integration-tests/src/test/resources/compat-tests/stream-op-publish.yaml
copy to
pinot-integration-tests/src/test/resources/compat-tests/offline-table-create-op.yaml
index 14119a6..391927c 100644
---
a/pinot-integration-tests/src/test/resources/compat-tests/stream-op-publish.yaml
+++
b/pinot-integration-tests/src/test/resources/compat-tests/offline-table-create-op.yaml
@@ -17,23 +17,10 @@
# under the License.
#
-# Operations to be done.
-description: tst file for stream op PRODUCE
+description: Yaml file for creating a offline table
operations:
- - type: streamOp
- description: create Kafka topic
- op: CREATE
- streamConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime-stream-config.json
- type: tableOp
- description: Create table feature-test-1-realtime.json
+ description: Create table feature-test-1.json
op: CREATE
schemaFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/FeatureTest1-schema.json
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime.json
- - type: streamOp
- description: publish rows to PinotRealtimeFeatureTest1Event
- op: PRODUCE
- streamConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime-stream-config.json
- numRows: 1
- inputDataFileName:
pinot-integration-tests/src/test/resources/compat-tests/data/FeatureTest1-data-00.csv
- recordReaderConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/data/recordReaderConfig.json
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime.json
+ tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1.json
\ No newline at end of file
diff --git
a/pinot-integration-tests/src/test/resources/compat-tests/stream-op-publish.yaml
b/pinot-integration-tests/src/test/resources/compat-tests/offline-table-delete-op.yaml
similarity index 50%
copy from
pinot-integration-tests/src/test/resources/compat-tests/stream-op-publish.yaml
copy to
pinot-integration-tests/src/test/resources/compat-tests/offline-table-delete-op.yaml
index 14119a6..e9dddf9 100644
---
a/pinot-integration-tests/src/test/resources/compat-tests/stream-op-publish.yaml
+++
b/pinot-integration-tests/src/test/resources/compat-tests/offline-table-delete-op.yaml
@@ -17,23 +17,10 @@
# under the License.
#
-# Operations to be done.
-description: tst file for stream op PRODUCE
+description: Yaml file for deleting a offline table
operations:
- - type: streamOp
- description: create Kafka topic
- op: CREATE
- streamConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime-stream-config.json
- type: tableOp
- description: Create table feature-test-1-realtime.json
- op: CREATE
+ description: Delete table feature-test-1.json
+ op: DELETE
schemaFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/FeatureTest1-schema.json
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime.json
- - type: streamOp
- description: publish rows to PinotRealtimeFeatureTest1Event
- op: PRODUCE
- streamConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime-stream-config.json
- numRows: 1
- inputDataFileName:
pinot-integration-tests/src/test/resources/compat-tests/data/FeatureTest1-data-00.csv
- recordReaderConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/data/recordReaderConfig.json
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime.json
+ tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1.json
\ No newline at end of file
diff --git
a/pinot-integration-tests/src/test/resources/compat-tests/queries/feature-test-1-sql.queries
b/pinot-integration-tests/src/test/resources/compat-tests/queries/feature-test-1-sql.queries
index 16c5dd3..81edad9 100644
---
a/pinot-integration-tests/src/test/resources/compat-tests/queries/feature-test-1-sql.queries
+++
b/pinot-integration-tests/src/test/resources/compat-tests/queries/feature-test-1-sql.queries
@@ -18,9 +18,9 @@ SELECT textDim1, longDimSV2, doubleMetric1 FROM FeatureTest1
WHERE generationNum
SELECT textDim1, longDimSV2, doubleMetric1 FROM FeatureTest1 WHERE
generationNumber = __GENERATION_NUMBER__ AND bytesDimSV1 = 'deed0507' LIMIT 2
# This is a query exhausting all records: there are 4 qualified records in
total, the query limit the number of returned records as 10
SELECT textDim1, longDimSV2, doubleMetric1 FROM FeatureTest1 WHERE
generationNumber = __GENERATION_NUMBER__ AND bytesDimSV1 = 'deed0507' LIMIT 10
-SELECT stringDimSV1, longDimSV1, intDimMV1, intDimMV2, stringDimMV2 FROM
FeatureTest1 WHERE generationNumber = __GENERATION_NUMBER__ AND stringDimSV1 !=
's1-6' AND longDimSV1 BETWEEN 10 AND 1000 OR (intDimMV1 < 42 AND stringDimMV2
IN ('m2-0-0', 'm2-2-0') AND intDimMV2 NOT IN (6,72)) ORDER BY longDimSV1 LIMIT 5
-SELECT stringDimSV1, longDimSV1, intDimMV1, intDimMV2, stringDimMV2 FROM
FeatureTest1 WHERE generationNumber = __GENERATION_NUMBER__ AND stringDimSV1 !=
's1-6' AND longDimSV1 BETWEEN 10 AND 1000 OR (intDimMV1 < 42 AND stringDimMV2
IN ('m2-0-0', 'm2-2-0') AND intDimMV2 NOT IN (6,72)) ORDER BY longDimSV1 DESC
-SELECT stringDimSV1, longDimSV1, intDimMV1, intDimMV2, stringDimMV2 FROM
FeatureTest1 WHERE generationNumber = __GENERATION_NUMBER__ AND stringDimSV1 !=
's1-6' AND longDimSV1 BETWEEN 10 AND 1000 OR (intDimMV1 < 42 AND stringDimMV2
IN ('m2-0-0', 'm2-2-0') AND intDimMV2 NOT IN (6,72)) ORDER BY longDimSV1 DESC,
stringDimSV1 LIMIT 3
+SELECT stringDimSV1, longDimSV1, intDimMV1, intDimMV2, stringDimMV2 FROM
FeatureTest1 WHERE generationNumber = __GENERATION_NUMBER__ AND (stringDimSV1
!= 's1-6' AND longDimSV1 BETWEEN 10 AND 1000 OR (intDimMV1 < 42 AND
stringDimMV2 IN ('m2-0-0', 'm2-2-0') AND intDimMV2 NOT IN (6,72))) ORDER BY
longDimSV1 LIMIT 5
+SELECT stringDimSV1, longDimSV1, intDimMV1, intDimMV2, stringDimMV2 FROM
FeatureTest1 WHERE generationNumber = __GENERATION_NUMBER__ AND (stringDimSV1
!= 's1-6' AND longDimSV1 BETWEEN 10 AND 1000 OR (intDimMV1 < 42 AND
stringDimMV2 IN ('m2-0-0', 'm2-2-0') AND intDimMV2 NOT IN (6,72))) ORDER BY
longDimSV1 DESC
+SELECT stringDimSV1, longDimSV1, intDimMV1, intDimMV2, stringDimMV2 FROM
FeatureTest1 WHERE generationNumber = __GENERATION_NUMBER__ AND (stringDimSV1
!= 's1-6' AND longDimSV1 BETWEEN 10 AND 1000 OR (intDimMV1 < 42 AND
stringDimMV2 IN ('m2-0-0', 'm2-2-0') AND intDimMV2 NOT IN (6,72))) ORDER BY
longDimSV1 DESC, stringDimSV1 LIMIT 3
# Selection & Grouping on Aggregation
SELECT longDimSV1, intDimMV1, count(*) FROM FeatureTest1 WHERE
generationNumber = __GENERATION_NUMBER__ GROUP BY longDimSV1, intDimMV1 ORDER
BY longDimSV1 LIMIT 5
@@ -30,11 +30,11 @@ SELECT longDimSV1, intDimMV1, percentile(longDimSV1, 80),
percentileMV(intDimMV1
SELECT longDimSV1, intDimMV1, distinctCount(longDimSV1),
distinctCountMV(intDimMV1), distinctCountHLL(longDimSV1),
distinctCountHLLMV(intDimMV1) FROM FeatureTest1 WHERE generationNumber =
__GENERATION_NUMBER__ GROUP BY longDimSV1, intDimMV1 ORDER BY longDimSV1 LIMIT 5
# Selection & Filtering & Grouping on Aggregation
-SELECT longDimSV1, intDimMV1, count(*) FROM FeatureTest1 WHERE
generationNumber = __GENERATION_NUMBER__ AND stringDimSV1 != 's1-6' AND
longDimSV1 BETWEEN 10 AND 1000 OR (intDimMV1 < 42 AND stringDimMV2 IN
('m2-0-0', 'm2-2-0') AND intDimMV2 NOT IN (6,72)) GROUP BY longDimSV1,
intDimMV1 ORDER BY longDimSV1, intDimMV1 LIMIT 5
-SELECT longDimSV1, intDimMV1, sum(intMetric1), sumMV(intDimMV1),
min(intMetric1), minMV(intDimMV2), max(longDimSV1), maxMV(intDimMV1) FROM
FeatureTest1 WHERE generationNumber = __GENERATION_NUMBER__ AND stringDimSV1 !=
's1-6' AND longDimSV1 BETWEEN 10 AND 1000 OR (intDimMV1 < 42 AND stringDimMV2
IN ('m2-0-0', 'm2-2-0') AND intDimMV2 NOT IN (6,72)) GROUP BY longDimSV1,
intDimMV1 ORDER BY longDimSV1, intDimMV1 LIMIT 5
-SELECT longDimSV1, intDimMV1, count(longDimSV1), countMV(intDimMV1),
avg(floatMetric1), avgMV(intDimMV2), minMaxRange(doubleMetric1),
minMaxRangeMV(intDimMV2) FROM FeatureTest1 WHERE generationNumber =
__GENERATION_NUMBER__ AND stringDimSV1 != 's1-6' AND longDimSV1 BETWEEN 10 AND
1000 OR (intDimMV1 < 42 AND stringDimMV2 IN ('m2-0-0', 'm2-2-0') AND intDimMV2
NOT IN (6,72)) GROUP BY longDimSV1, intDimMV1 ORDER BY longDimSV1, intDimMV1
LIMIT 5
-SELECT longDimSV1, intDimMV1, percentile(longDimSV1, 80),
percentileMV(intDimMV1, 90), percentileEst(longDimSV1, 80),
percentileEstMV(intDimMV1, 90), percentileTDigest(longDimSV1, 80),
percentileTDigestMV(intDimMV1, 90) FROM FeatureTest1 WHERE generationNumber =
__GENERATION_NUMBER__ AND stringDimSV1 != 's1-6' AND longDimSV1 BETWEEN 10 AND
1000 OR (intDimMV1 < 42 AND stringDimMV2 IN ('m2-0-0', 'm2-2-0') AND intDimMV2
NOT IN (6,72)) GROUP BY longDimSV1, intDimMV1 ORDER BY longDimSV1, intD [...]
-SELECT longDimSV1, intDimMV1, distinctCount(longDimSV1),
distinctCountMV(intDimMV1), distinctCountHLL(longDimSV1),
distinctCountHLLMV(intDimMV1) FROM FeatureTest1 WHERE generationNumber =
__GENERATION_NUMBER__ AND stringDimSV1 != 's1-6' AND longDimSV1 BETWEEN 10 AND
1000 OR (intDimMV1 < 42 AND stringDimMV2 IN ('m2-0-0', 'm2-2-0') AND intDimMV2
NOT IN (6,72)) GROUP BY longDimSV1, intDimMV1 ORDER BY longDimSV1, intDimMV1
LIMIT 5
+SELECT longDimSV1, intDimMV1, count(*) FROM FeatureTest1 WHERE
generationNumber = __GENERATION_NUMBER__ AND (stringDimSV1 != 's1-6' AND
longDimSV1 BETWEEN 10 AND 1000 OR (intDimMV1 < 42 AND stringDimMV2 IN
('m2-0-0', 'm2-2-0') AND intDimMV2 NOT IN (6,72))) GROUP BY longDimSV1,
intDimMV1 ORDER BY longDimSV1, intDimMV1 LIMIT 5
+SELECT longDimSV1, intDimMV1, sum(intMetric1), sumMV(intDimMV1),
min(intMetric1), minMV(intDimMV2), max(longDimSV1), maxMV(intDimMV1) FROM
FeatureTest1 WHERE generationNumber = __GENERATION_NUMBER__ AND (stringDimSV1
!= 's1-6' AND longDimSV1 BETWEEN 10 AND 1000 OR (intDimMV1 < 42 AND
stringDimMV2 IN ('m2-0-0', 'm2-2-0') AND intDimMV2 NOT IN (6,72))) GROUP BY
longDimSV1, intDimMV1 ORDER BY longDimSV1, intDimMV1 LIMIT 5
+SELECT longDimSV1, intDimMV1, count(longDimSV1), countMV(intDimMV1),
avg(floatMetric1), avgMV(intDimMV2), minMaxRange(doubleMetric1),
minMaxRangeMV(intDimMV2) FROM FeatureTest1 WHERE generationNumber =
__GENERATION_NUMBER__ AND (stringDimSV1 != 's1-6' AND longDimSV1 BETWEEN 10 AND
1000 OR (intDimMV1 < 42 AND stringDimMV2 IN ('m2-0-0', 'm2-2-0') AND intDimMV2
NOT IN (6,72))) GROUP BY longDimSV1, intDimMV1 ORDER BY longDimSV1, intDimMV1
LIMIT 5
+SELECT longDimSV1, intDimMV1, percentile(longDimSV1, 80),
percentileMV(intDimMV1, 90), percentileEst(longDimSV1, 80),
percentileEstMV(intDimMV1, 90), percentileTDigest(longDimSV1, 80),
percentileTDigestMV(intDimMV1, 90) FROM FeatureTest1 WHERE generationNumber =
__GENERATION_NUMBER__ AND (stringDimSV1 != 's1-6' AND longDimSV1 BETWEEN 10 AND
1000 OR (intDimMV1 < 42 AND stringDimMV2 IN ('m2-0-0', 'm2-2-0') AND intDimMV2
NOT IN (6,72))) GROUP BY longDimSV1, intDimMV1 ORDER BY longDimSV1, in [...]
+SELECT longDimSV1, intDimMV1, distinctCount(longDimSV1),
distinctCountMV(intDimMV1), distinctCountHLL(longDimSV1),
distinctCountHLLMV(intDimMV1) FROM FeatureTest1 WHERE generationNumber =
__GENERATION_NUMBER__ AND (stringDimSV1 != 's1-6' AND longDimSV1 BETWEEN 10 AND
1000 OR (intDimMV1 < 42 AND stringDimMV2 IN ('m2-0-0', 'm2-2-0') AND intDimMV2
NOT IN (6,72))) GROUP BY longDimSV1, intDimMV1 ORDER BY longDimSV1, intDimMV1
LIMIT 5
# Transformation Functions
SELECT add(longDimSV1, sub(longDimSV2, 3)), mod(intMetric1, 10),
div(doubleMetric1, mult(floatMetric1, 5)) FROM FeatureTest1 WHERE
generationNumber = __GENERATION_NUMBER__ ORDER BY add(longDimSV1,
sub(longDimSV2, 3)) DESC, mod(intMetric1, 10)
@@ -86,4 +86,3 @@ SELECT count(*) FROM FeatureTest1 WHERE generationNumber =
__GENERATION_NUMBER__
SELECT count(*) FROM FeatureTest1 WHERE generationNumber =
__GENERATION_NUMBER__ AND regexp_like(stringDimMV2, 'm2.*0') GROUP BY
stringDimMV2 LIMIT 3
SELECT stringDimSV1, longDimSV1, intDimMV1 FROM FeatureTest1 WHERE
generationNumber = __GENERATION_NUMBER__ ORDER BY stringDimSV1 DESC, longDimSV1
LIMIT 3
SELECT stringDimSV1, longDimSV1, intDimMV1 FROM FeatureTest1 WHERE
generationNumber = __GENERATION_NUMBER__ ORDER BY stringDimSV1 DESC, longDimSV1
DESC LIMIT 3
-SELECT * FROM FeatureTest1 WHERE generationNumber = __GENERATION_NUMBER__
ORDER BY longDimSV1 DESC, longMetric1 LIMIT 3
diff --git
a/pinot-integration-tests/src/test/resources/compat-tests/query-op.yaml
b/pinot-integration-tests/src/test/resources/compat-tests/query-op.yaml
index 03b6acf..c244f17 100644
--- a/pinot-integration-tests/src/test/resources/compat-tests/query-op.yaml
+++ b/pinot-integration-tests/src/test/resources/compat-tests/query-op.yaml
@@ -17,33 +17,9 @@
# under the License.
#
-# Operations to be done.
-description: Debug yaml file for query ops
+description: Yaml file for query ops
operations:
- - type: tableOp
- description: Create table feature-test-1.json
- op: CREATE
- schemaFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/FeatureTest1-schema.json
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1.json
- - type: segmentOp
- description: Build and upload segment using FeatureTest1-data-00.csv
- op: UPLOAD
- inputDataFileName:
pinot-integration-tests/src/test/resources/compat-tests/data/FeatureTest1-data-00.csv
- schemaFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/FeatureTest1-schema.json
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1.json
- recordReaderConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/data/recordReaderConfig.json
- segmentName: FeatureTest1_Segment
- type: queryOp
description: Run query on FeatureTest1 using SQL
queryFileName:
pinot-integration-tests/src/test/resources/compat-tests/queries/feature-test-1-sql.queries
- expectedResultsFileName:
pinot-integration-tests/src/test/resources/compat-tests/query-results/feature-test-1-rest-sql.results
- - type: segmentOp
- description: Delete segment FeatureTest1_Segment
- op: DELETE
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1.json
- segmentName: FeatureTest1_Segment
- - type: tableOp
- description: Delete table feature-test-1.json
- op: DELETE
- schemaFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/FeatureTest1-schema.json
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1.json
\ No newline at end of file
+ expectedResultsFileName:
pinot-integration-tests/src/test/resources/compat-tests/query-results/feature-test-1-rest-sql.results
\ No newline at end of file
diff --git
a/pinot-integration-tests/src/test/resources/compat-tests/query-results/feature-test-1-rest-sql.results
b/pinot-integration-tests/src/test/resources/compat-tests/query-results/feature-test-1-rest-sql.results
index ecc446f..48e4ea0 100644
---
a/pinot-integration-tests/src/test/resources/compat-tests/query-results/feature-test-1-rest-sql.results
+++
b/pinot-integration-tests/src/test/resources/compat-tests/query-results/feature-test-1-rest-sql.results
@@ -82,4 +82,3 @@
{"resultTable":{"dataSchema":{"columnDataTypes":["LONG"],"columnNames":["count(*)"]},"rows":[[6],[2],[2]]},"exceptions":[],"numServersQueried":1,"numServersResponded":1,"numSegmentsQueried":1,"numSegmentsProcessed":1,"numSegmentsMatched":1,"numConsumingSegmentsQueried":0,"numDocsScanned":10,"numEntriesScannedInFilter":16,"numEntriesScannedPostFilter":10,"numGroupsLimitReached":false,"totalDocs":10,"timeUsedMs":4,"segmentStatistics":[],"traceInfo":{},"minConsumingFreshnessTimeMs":0}
{"resultTable":{"dataSchema":{"columnDataTypes":["STRING","LONG","INT_ARRAY"],"columnNames":["stringDimSV1","longDimSV1","intDimMV1"]},"rows":[["s1-7",6766,[392,462]],["s1-6",7611,[392,462]],["s1-6",7611,[392,462]]]},"exceptions":[],"numServersQueried":1,"numServersResponded":1,"numSegmentsQueried":1,"numSegmentsProcessed":1,"numSegmentsMatched":1,"numConsumingSegmentsQueried":0,"numDocsScanned":10,"numEntriesScannedInFilter":0,"numEntriesScannedPostFilter":33,"numGroupsLimitReached":fal
[...]
{"resultTable":{"dataSchema":{"columnDataTypes":["STRING","LONG","INT_ARRAY"],"columnNames":["stringDimSV1","longDimSV1","intDimMV1"]},"rows":[["s1-7",6766,[392,462]],["s1-6",7611,[392,462]],["s1-6",7611,[392,462]]]},"exceptions":[],"numServersQueried":1,"numServersResponded":1,"numSegmentsQueried":1,"numSegmentsProcessed":1,"numSegmentsMatched":1,"numConsumingSegmentsQueried":0,"numDocsScanned":10,"numEntriesScannedInFilter":0,"numEntriesScannedPostFilter":33,"numGroupsLimitReached":fal
[...]
-{"resultTable":{"dataSchema":{"columnDataTypes":["INT","BYTES","DOUBLE","FLOAT","INT","INT_ARRAY","INT_ARRAY","INT","LONG","LONG","LONG","STRING_ARRAY","INT_ARRAY","STRING","STRING_ARRAY","STRING_ARRAY","STRING","STRING","STRING"],"columnNames":["HoursSinceEpoch","bytesDimSV1","doubleMetric1","floatMetric1","generationNumber","intDimMV1","intDimMV2","intMetric1","longDimSV1","longDimSV2","longMetric1","mapDim1__KEYS","mapDim1__VALUES","mapDim2json","stringDimMV1","stringDimMV2","stringDi
[...]
diff --git
a/pinot-integration-tests/src/test/resources/compat-tests/stream-op-publish.yaml
b/pinot-integration-tests/src/test/resources/compat-tests/realtime-table-create-op.yaml
similarity index 53%
copy from
pinot-integration-tests/src/test/resources/compat-tests/stream-op-publish.yaml
copy to
pinot-integration-tests/src/test/resources/compat-tests/realtime-table-create-op.yaml
index 14119a6..c71c3b3 100644
---
a/pinot-integration-tests/src/test/resources/compat-tests/stream-op-publish.yaml
+++
b/pinot-integration-tests/src/test/resources/compat-tests/realtime-table-create-op.yaml
@@ -17,23 +17,10 @@
# under the License.
#
-# Operations to be done.
-description: tst file for stream op PRODUCE
+description: Yaml file for creating a realtime table
operations:
- - type: streamOp
- description: create Kafka topic
- op: CREATE
- streamConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime-stream-config.json
- type: tableOp
description: Create table feature-test-1-realtime.json
op: CREATE
schemaFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/FeatureTest1-schema.json
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime.json
- - type: streamOp
- description: publish rows to PinotRealtimeFeatureTest1Event
- op: PRODUCE
- streamConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime-stream-config.json
- numRows: 1
- inputDataFileName:
pinot-integration-tests/src/test/resources/compat-tests/data/FeatureTest1-data-00.csv
- recordReaderConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/data/recordReaderConfig.json
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime.json
+ tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime.json
\ No newline at end of file
diff --git
a/pinot-integration-tests/src/test/resources/compat-tests/stream-op-publish.yaml
b/pinot-integration-tests/src/test/resources/compat-tests/realtime-table-delete-op.yaml
similarity index 50%
copy from
pinot-integration-tests/src/test/resources/compat-tests/stream-op-publish.yaml
copy to
pinot-integration-tests/src/test/resources/compat-tests/realtime-table-delete-op.yaml
index 14119a6..8daf65d 100644
---
a/pinot-integration-tests/src/test/resources/compat-tests/stream-op-publish.yaml
+++
b/pinot-integration-tests/src/test/resources/compat-tests/realtime-table-delete-op.yaml
@@ -17,23 +17,10 @@
# under the License.
#
-# Operations to be done.
-description: tst file for stream op PRODUCE
+description: Yaml file for deleting a realtime table
operations:
- - type: streamOp
- description: create Kafka topic
- op: CREATE
- streamConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime-stream-config.json
- type: tableOp
- description: Create table feature-test-1-realtime.json
- op: CREATE
+ description: Delete table feature-test-1-realtime.json
+ op: DELETE
schemaFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/FeatureTest1-schema.json
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime.json
- - type: streamOp
- description: publish rows to PinotRealtimeFeatureTest1Event
- op: PRODUCE
- streamConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime-stream-config.json
- numRows: 1
- inputDataFileName:
pinot-integration-tests/src/test/resources/compat-tests/data/FeatureTest1-data-00.csv
- recordReaderConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/data/recordReaderConfig.json
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime.json
+ tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime.json
\ No newline at end of file
diff --git
a/pinot-integration-tests/src/test/resources/compat-tests/stream-op-publish.yaml
b/pinot-integration-tests/src/test/resources/compat-tests/segment-create-op.yaml
similarity index 59%
rename from
pinot-integration-tests/src/test/resources/compat-tests/stream-op-publish.yaml
rename to
pinot-integration-tests/src/test/resources/compat-tests/segment-create-op.yaml
index 14119a6..f4843b9 100644
---
a/pinot-integration-tests/src/test/resources/compat-tests/stream-op-publish.yaml
+++
b/pinot-integration-tests/src/test/resources/compat-tests/segment-create-op.yaml
@@ -18,22 +18,12 @@
#
# Operations to be done.
-description: tst file for stream op PRODUCE
+description: Yaml file for uploading a segment
operations:
- - type: streamOp
- description: create Kafka topic
- op: CREATE
- streamConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime-stream-config.json
- - type: tableOp
- description: Create table feature-test-1-realtime.json
- op: CREATE
- schemaFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/FeatureTest1-schema.json
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime.json
- - type: streamOp
- description: publish rows to PinotRealtimeFeatureTest1Event
- op: PRODUCE
- streamConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime-stream-config.json
- numRows: 1
+ - type: segmentOp
+ description: Build and upload segment using FeatureTest1-data-00.csv
+ op: UPLOAD
inputDataFileName:
pinot-integration-tests/src/test/resources/compat-tests/data/FeatureTest1-data-00.csv
- recordReaderConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/data/recordReaderConfig.json
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1-realtime.json
+ schemaFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/FeatureTest1-schema.json
+ tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1.json
+ recordReaderConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/data/recordReaderConfig.json
\ No newline at end of file
diff --git
a/pinot-integration-tests/src/test/resources/compat-tests/segment-delete-op.yaml
b/pinot-integration-tests/src/test/resources/compat-tests/segment-delete-op.yaml
new file mode 100644
index 0000000..f734d72
--- /dev/null
+++
b/pinot-integration-tests/src/test/resources/compat-tests/segment-delete-op.yaml
@@ -0,0 +1,26 @@
+#
+# 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.
+#
+
+description: Yaml file for deleting a segment
+operations:
+ - type: segmentOp
+ description: Delete segment FeatureTest1_Segment
+ op: DELETE
+ tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1.json
+ segmentName: FeatureTest1_Segment
\ No newline at end of file
diff --git
a/pinot-integration-tests/src/test/resources/compat-tests/table-segment-op.yaml
b/pinot-integration-tests/src/test/resources/compat-tests/table-segment-op.yaml
deleted file mode 100644
index 58f7eae..0000000
---
a/pinot-integration-tests/src/test/resources/compat-tests/table-segment-op.yaml
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# 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.
-#
-
-# Operations to be done.
-description: Debug yaml file for table and segment ops
-operations:
- - type: tableOp
- description: Create table feature-test-1.json
- op: CREATE
- schemaFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/FeatureTest1-schema.json
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1.json
- - type: segmentOp
- description: Build and upload segment using FeatureTest1-data-00.csv
- op: UPLOAD
- inputDataFileName:
pinot-integration-tests/src/test/resources/compat-tests/data/FeatureTest1-data-00.csv
- schemaFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/FeatureTest1-schema.json
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1.json
- recordReaderConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/data/recordReaderConfig.json
- segmentName: FeatureTest1_Segment
- - type: segmentOp
- description: Delete segment FeatureTest1_Segment
- op: DELETE
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1.json
- segmentName: FeatureTest1_Segment
- - type: tableOp
- description: Delete table feature-test-1.json
- op: DELETE
- schemaFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/FeatureTest1-schema.json
- tableConfigFileName:
pinot-integration-tests/src/test/resources/compat-tests/configs/feature-test-1.json
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]