From d10efa900198b5781ac4b288e64483e72374ffb2 Mon Sep 17 00:00:00 2001 From: teresa Date: Sat, 10 May 2025 17:50:05 +0800 Subject: [PATCH] This PR addresses a critical security vulnerability (Command Injection) in the extractTarFileUsingTar method of CompressionUtils. --- .github/workflows/docs.sh | 0 docs/build_docs.sh | 0 docs/setup_docs.sh | 0 docs/setup_hugo.sh | 0 .../downloads/setup-pyflink-virtual-env.sh | 0 docs/static/fig/ssl_internal_external.svg | 0 docs/themes/book | 1 - .../api/common/operators/ResourceSpec.java | 0 .../configuration/ConfigurationUtils.java | 0 .../apache/flink/util/CompressionUtils.java | 57 +- .../common/operators/ResourceSpecTest.java | 0 .../src/main/flink-bin/bin/bash-java-utils.sh | 0 .../main/flink-bin/bin/config-parser-utils.sh | 0 flink-dist/src/main/flink-bin/bin/config.sh | 0 .../src/main/flink-bin/bin/find-flink-home.sh | 0 flink-dist/src/main/flink-bin/bin/flink | 0 .../src/main/flink-bin/bin/flink-console.sh | 0 .../src/main/flink-bin/bin/jobmanager.sh | 0 .../main/flink-bin/bin/migrate-config-file.sh | 0 .../src/main/flink-bin/bin/start-cluster.sh | 0 .../flink-bin/bin/start-zookeeper-quorum.sh | 0 .../src/main/flink-bin/bin/stop-cluster.sh | 0 .../flink-bin/bin/stop-zookeeper-quorum.sh | 0 .../src/main/flink-bin/bin/taskmanager.sh | 0 .../src/main/flink-bin/bin/zookeeper.sh | 0 .../kubernetes-bin/kubernetes-session.sh | 0 .../kubernetes-bin/kubernetes-taskmanager.sh | 0 .../main/flink-bin/yarn-bin/yarn-session.sh | 0 .../src/test/bin/runBashJavaUtilsCmd.sh | 0 .../src/test/bin/runExtractLoggingOutputs.sh | 0 .../tpcds-tool/data_generator.sh | 0 flink-end-to-end-tests/run-nightly-tests.sh | 0 flink-end-to-end-tests/run-single-test.sh | 0 flink-end-to-end-tests/test-scripts/common.sh | 0 .../common_artifact_download_cacher.sh | 0 .../test-scripts/common_kubernetes.sh | 0 .../test-scripts/common_yarn_docker.sh | 0 .../hadoop/entrypoint.sh | 0 .../kdc/entrypoint.sh | 0 .../test-scripts/test_azure_fs.sh | 0 .../test-scripts/test_batch_wordcount.sh | 0 .../test-scripts/test_cli.sh | 0 .../test_confluent_schema_registry.sh | 0 .../test_datastream_walkthroughs.sh | 0 .../test-scripts/test_docker_embedded_job.sh | 0 .../test-scripts/test_failure_enricher.sh | 0 .../test-scripts/test_file_sink.sh | 0 .../test-scripts/test_ha_datastream.sh | 0 .../test_ha_per_job_cluster_datastream.sh | 0 .../test-scripts/test_heavy_deployment.sh | 0 .../test_kubernetes_application.sh | 0 .../test_kubernetes_application_ha.sh | 0 .../test_kubernetes_embedded_job.sh | 0 .../test-scripts/test_kubernetes_itcases.sh | 0 .../test_kubernetes_materialized_table.sh | 0 .../test_kubernetes_pyflink_application.sh | 0 .../test-scripts/test_kubernetes_session.sh | 0 .../test_kubernetes_sql_application.sh | 0 .../test_local_recovery_and_scheduling.sh | 0 .../test-scripts/test_nat.sh | 0 .../test_netty_shuffle_memory_control.sh | 0 .../test-scripts/test_pyflink.sh | 0 .../test-scripts/test_pyflink_yarn.sh | 0 .../test-scripts/test_queryable_state.sh | 0 .../test_queryable_state_restart_tm.sh | 0 .../test-scripts/test_quickstarts.sh | 0 .../test_resume_externalized_checkpoints.sh | 0 .../test-scripts/test_resume_savepoint.sh | 0 .../test_rocksdb_state_memory_control.sh | 0 .../test-scripts/test_sql_jdbc_driver.sh | 0 .../test-scripts/test_state_evolution.sh | 0 .../test-scripts/test_state_migration.sh | 0 .../test_stateful_stream_job_upgrade.sh | 0 .../test-scripts/test_stream_state_ttl.sh | 0 .../test_streaming_classloader.sh | 0 ...st_streaming_distributed_cache_via_blob.sh | 0 .../test-scripts/test_streaming_examples.sh | 0 .../test-scripts/test_streaming_kinesis.sh | 0 .../test-scripts/test_streaming_sql.sh | 0 .../test_table_shaded_dependencies.sh | 0 .../test-scripts/test_tpcds.sh | 0 .../test-scripts/test_tpch.sh | 0 .../test_yarn_application_kerberos_docker.sh | 0 .../main/resources/gpu-discovery-common.sh | 0 .../main/resources/nvidia-gpu-discovery.sh | 0 .../test/resources/test-coordination-mode.sh | 0 .../test/resources/testing-gpu-discovery.sh | 0 .../META-INF/licenses/LICENSE.jakarta-inject | 1274 ++++++++--------- flink-python/bin/pyflink-shell.sh | 0 flink-python/dev/build-wheels.sh | 0 flink-python/dev/dev-requirements.txt | 0 flink-python/dev/glibc_version_fix.h | 0 flink-python/dev/install_command.sh | 0 flink-python/dev/integration_test.sh | 0 flink-python/dev/lint-python.sh | 0 flink-python/dev/pip_test_code.py | 0 flink-python/dev/run_pip_test.sh | 0 flink-python/lib/cloudpickle-2.2.0-src.zip | Bin 22446 -> 0 bytes flink-python/lib/py4j-0.10.9.7-src.zip | Bin 86109 -> 0 bytes .../pyflink/bin/pyflink-udf-runner.sh | 0 .../web-dashboard/dev/generate_notice.sh | 0 .../types/ResourceProfile.java | 0 .../runtime/entrypoint/ClusterEntrypoint.java | 0 .../io/network/buffer/BufferPoolFactory.java | 0 .../io/network/buffer/NetworkBufferPool.java | 0 .../BoundedBlockingSubpartition.java | 0 ...ckingSubpartitionDirectTransferReader.java | 0 .../BoundedBlockingSubpartitionReader.java | 0 .../io/network/partition/BoundedData.java | 0 .../partition/BufferReaderWriterUtil.java | 0 .../FileChannelMemoryMappedBoundedData.java | 0 .../partition/MemoryMappedBoundedData.java | 0 .../partition/ResultPartitionFactory.java | 0 .../DefaultJobLeaderIdService.java | 0 .../resourcemanager/ResourceManager.java | 0 .../StandaloneResourceManager.java | 0 .../taskexecutor/TaskManagerServices.java | 0 .../api/operators/BoundedMultiInput.java | 0 .../api/operators/BoundedOneInput.java | 0 .../api/operators/InputSelectable.java | 0 .../api/operators/InputSelection.java | 0 .../runtime/tasks/StreamOperatorWrapper.java | 0 .../types/ResourceProfileTest.java | 0 .../types/SlotProfileTestingUtils.java | 0 .../runtime/dispatcher/DispatcherTest.java | 0 .../partition/BoundedDataTestBase.java | 0 .../partition/FileChannelBoundedDataTest.java | 0 ...ileChannelMemoryMappedBoundedDataTest.java | 0 .../MemoryMappedBoundedDataTest.java | 0 .../StandaloneResourceManagerTest.java | 0 .../MockResourceManagerRuntimeServices.java | 0 ...tyShuffleEnvironmentConfigurationTest.java | 0 .../flink-sql-client/bin/sql-client.sh | 0 .../PushLocalHashAggWithCalcIntoScanRule.java | 0 .../batch/PushLocalSortAggIntoScanRule.java | 0 .../PushLocalSortAggWithCalcIntoScanRule.java | 0 ...calSortAggWithSortAndCalcIntoScanRule.java | 0 .../sql/agg/LocalAggregatePushDownITCase.java | 0 ...tioned-rows-with-out-of-order-records.json | 591 -------- ...ceding-rows-with-out-of-order-records.json | 592 -------- ...tioned-rows-with-out-of-order-records.json | 592 -------- ...e-unbounded-multiple-aggs-append-mode.json | 244 ---- ...ded-sum-retract-mode-sink-primary-key.json | 238 --- ...d-sum-retract-mode-source-primary-key.json | 233 --- ...-sink-primary-key-partition-by-non-pk.json | 243 ---- ...-retract-mode-source-sink-primary-key.json | 307 ---- ...tioned-rows-with-out-of-order-records.json | 581 -------- ...event-time-with-offset-distinct-split.json | 912 ------------ ...-two-phase-with-offset-distinct-split.json | 912 ------------ ...n-event-time-two-phase-distinct-split.json | 499 ------- ...-two-phase-with-offset-distinct-split.json | 908 ------------ .../operators/join/adaptive/AdaptiveJoin.java | 0 .../src/test/resources/testdata/terainput.txt | 400 +++--- mvnw | 0 mvnw.cmd | 412 +++--- tools/azure-pipelines/build_properties.sh | 0 tools/azure-pipelines/cache_docker_images.sh | 0 .../azure-pipelines/create_build_artifact.sh | 0 tools/azure-pipelines/debug_files_utils.sh | 0 tools/azure-pipelines/free_disk_space.sh | 0 .../azure-pipelines/unpack_build_artifact.sh | 0 tools/azure-pipelines/uploading_watchdog.sh | 0 tools/change-version.sh | 0 tools/ci/compile.sh | 0 tools/ci/compile_ci.sh | 0 tools/ci/deploy_nightly_to_s3.sh | 0 tools/ci/docs.sh | 0 tools/ci/license_check.sh | 0 tools/ci/maven-utils.sh | 0 tools/ci/shade.sh | 0 tools/ci/stage.sh | 0 tools/ci/test_controller.sh | 0 tools/ci/verify_bundled_optional.sh | 0 tools/ci/verify_scala_suffixes.sh | 0 tools/ci/watchdog.sh | 0 tools/list_deps.py | 0 tools/releasing/collect_license_files.sh | 0 tools/releasing/create_binary_release.sh | 0 tools/releasing/create_preview_branch.sh | 0 tools/releasing/create_release_branch.sh | 0 tools/releasing/create_snapshot_branch.sh | 0 tools/releasing/create_source_release.sh | 0 tools/releasing/deploy_staging_jars.sh | 0 tools/releasing/update_branch_version.sh | 0 .../releasing/update_japicmp_configuration.sh | 0 tools/update_notice_year.sh | 0 186 files changed, 1078 insertions(+), 7918 deletions(-) mode change 100755 => 100644 .github/workflows/docs.sh mode change 100755 => 100644 docs/build_docs.sh mode change 100755 => 100644 docs/setup_docs.sh mode change 100755 => 100644 docs/setup_hugo.sh mode change 100755 => 100644 docs/static/downloads/setup-pyflink-virtual-env.sh mode change 100755 => 100644 docs/static/fig/ssl_internal_external.svg delete mode 160000 docs/themes/book mode change 100755 => 100644 flink-core/src/main/java/org/apache/flink/api/common/operators/ResourceSpec.java mode change 100755 => 100644 flink-core/src/main/java/org/apache/flink/configuration/ConfigurationUtils.java mode change 100755 => 100644 flink-core/src/test/java/org/apache/flink/api/common/operators/ResourceSpecTest.java mode change 100755 => 100644 flink-dist/src/main/flink-bin/bin/bash-java-utils.sh mode change 100755 => 100644 flink-dist/src/main/flink-bin/bin/config-parser-utils.sh mode change 100755 => 100644 flink-dist/src/main/flink-bin/bin/config.sh mode change 100755 => 100644 flink-dist/src/main/flink-bin/bin/find-flink-home.sh mode change 100755 => 100644 flink-dist/src/main/flink-bin/bin/flink mode change 100755 => 100644 flink-dist/src/main/flink-bin/bin/flink-console.sh mode change 100755 => 100644 flink-dist/src/main/flink-bin/bin/jobmanager.sh mode change 100755 => 100644 flink-dist/src/main/flink-bin/bin/migrate-config-file.sh mode change 100755 => 100644 flink-dist/src/main/flink-bin/bin/start-cluster.sh mode change 100755 => 100644 flink-dist/src/main/flink-bin/bin/start-zookeeper-quorum.sh mode change 100755 => 100644 flink-dist/src/main/flink-bin/bin/stop-cluster.sh mode change 100755 => 100644 flink-dist/src/main/flink-bin/bin/stop-zookeeper-quorum.sh mode change 100755 => 100644 flink-dist/src/main/flink-bin/bin/taskmanager.sh mode change 100755 => 100644 flink-dist/src/main/flink-bin/bin/zookeeper.sh mode change 100755 => 100644 flink-dist/src/main/flink-bin/kubernetes-bin/kubernetes-session.sh mode change 100755 => 100644 flink-dist/src/main/flink-bin/kubernetes-bin/kubernetes-taskmanager.sh mode change 100755 => 100644 flink-dist/src/main/flink-bin/yarn-bin/yarn-session.sh mode change 100755 => 100644 flink-dist/src/test/bin/runBashJavaUtilsCmd.sh mode change 100755 => 100644 flink-dist/src/test/bin/runExtractLoggingOutputs.sh mode change 100755 => 100644 flink-end-to-end-tests/flink-tpcds-test/tpcds-tool/data_generator.sh mode change 100755 => 100644 flink-end-to-end-tests/run-nightly-tests.sh mode change 100755 => 100644 flink-end-to-end-tests/run-single-test.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/common.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/common_artifact_download_cacher.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/common_kubernetes.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/common_yarn_docker.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/docker-hadoop-secure-cluster/hadoop/entrypoint.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/docker-hadoop-secure-cluster/kdc/entrypoint.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_azure_fs.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_batch_wordcount.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_cli.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_confluent_schema_registry.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_datastream_walkthroughs.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_docker_embedded_job.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_failure_enricher.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_file_sink.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_ha_datastream.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_ha_per_job_cluster_datastream.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_heavy_deployment.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_kubernetes_application.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_kubernetes_application_ha.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_kubernetes_embedded_job.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_kubernetes_itcases.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_kubernetes_materialized_table.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_kubernetes_pyflink_application.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_kubernetes_session.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_kubernetes_sql_application.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_local_recovery_and_scheduling.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_nat.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_netty_shuffle_memory_control.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_pyflink.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_pyflink_yarn.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_queryable_state.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_queryable_state_restart_tm.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_quickstarts.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_resume_externalized_checkpoints.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_resume_savepoint.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_rocksdb_state_memory_control.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_sql_jdbc_driver.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_state_evolution.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_state_migration.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_stateful_stream_job_upgrade.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_stream_state_ttl.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_streaming_classloader.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_streaming_distributed_cache_via_blob.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_streaming_examples.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_streaming_kinesis.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_streaming_sql.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_table_shaded_dependencies.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_tpcds.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_tpch.sh mode change 100755 => 100644 flink-end-to-end-tests/test-scripts/test_yarn_application_kerberos_docker.sh mode change 100755 => 100644 flink-external-resources/flink-external-resource-gpu/src/main/resources/gpu-discovery-common.sh mode change 100755 => 100644 flink-external-resources/flink-external-resource-gpu/src/main/resources/nvidia-gpu-discovery.sh mode change 100755 => 100644 flink-external-resources/flink-external-resource-gpu/src/test/resources/test-coordination-mode.sh mode change 100755 => 100644 flink-external-resources/flink-external-resource-gpu/src/test/resources/testing-gpu-discovery.sh mode change 100755 => 100644 flink-python/bin/pyflink-shell.sh mode change 100755 => 100644 flink-python/dev/build-wheels.sh mode change 100755 => 100644 flink-python/dev/dev-requirements.txt mode change 100755 => 100644 flink-python/dev/glibc_version_fix.h mode change 100755 => 100644 flink-python/dev/install_command.sh mode change 100755 => 100644 flink-python/dev/integration_test.sh mode change 100755 => 100644 flink-python/dev/lint-python.sh mode change 100755 => 100644 flink-python/dev/pip_test_code.py mode change 100755 => 100644 flink-python/dev/run_pip_test.sh delete mode 100644 flink-python/lib/cloudpickle-2.2.0-src.zip delete mode 100644 flink-python/lib/py4j-0.10.9.7-src.zip mode change 100755 => 100644 flink-python/pyflink/bin/pyflink-udf-runner.sh mode change 100755 => 100644 flink-runtime-web/web-dashboard/dev/generate_notice.sh mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/runtime/clusterframework/types/ResourceProfile.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/runtime/entrypoint/ClusterEntrypoint.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/runtime/io/network/buffer/BufferPoolFactory.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/runtime/io/network/buffer/NetworkBufferPool.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/runtime/io/network/partition/BoundedBlockingSubpartition.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/runtime/io/network/partition/BoundedBlockingSubpartitionDirectTransferReader.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/runtime/io/network/partition/BoundedBlockingSubpartitionReader.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/runtime/io/network/partition/BoundedData.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/runtime/io/network/partition/BufferReaderWriterUtil.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/runtime/io/network/partition/FileChannelMemoryMappedBoundedData.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/runtime/io/network/partition/MemoryMappedBoundedData.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/runtime/io/network/partition/ResultPartitionFactory.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/runtime/resourcemanager/DefaultJobLeaderIdService.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/runtime/resourcemanager/ResourceManager.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/runtime/resourcemanager/StandaloneResourceManager.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/runtime/taskexecutor/TaskManagerServices.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/BoundedMultiInput.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/BoundedOneInput.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/InputSelectable.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/InputSelection.java mode change 100755 => 100644 flink-runtime/src/main/java/org/apache/flink/streaming/runtime/tasks/StreamOperatorWrapper.java mode change 100755 => 100644 flink-runtime/src/test/java/org/apache/flink/runtime/clusterframework/types/ResourceProfileTest.java mode change 100755 => 100644 flink-runtime/src/test/java/org/apache/flink/runtime/clusterframework/types/SlotProfileTestingUtils.java mode change 100755 => 100644 flink-runtime/src/test/java/org/apache/flink/runtime/dispatcher/DispatcherTest.java mode change 100755 => 100644 flink-runtime/src/test/java/org/apache/flink/runtime/io/network/partition/BoundedDataTestBase.java mode change 100755 => 100644 flink-runtime/src/test/java/org/apache/flink/runtime/io/network/partition/FileChannelBoundedDataTest.java mode change 100755 => 100644 flink-runtime/src/test/java/org/apache/flink/runtime/io/network/partition/FileChannelMemoryMappedBoundedDataTest.java mode change 100755 => 100644 flink-runtime/src/test/java/org/apache/flink/runtime/io/network/partition/MemoryMappedBoundedDataTest.java mode change 100755 => 100644 flink-runtime/src/test/java/org/apache/flink/runtime/resourcemanager/StandaloneResourceManagerTest.java mode change 100755 => 100644 flink-runtime/src/test/java/org/apache/flink/runtime/resourcemanager/utils/MockResourceManagerRuntimeServices.java mode change 100755 => 100644 flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/NettyShuffleEnvironmentConfigurationTest.java mode change 100755 => 100644 flink-table/flink-sql-client/bin/sql-client.sh mode change 100755 => 100644 flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/rules/physical/batch/PushLocalHashAggWithCalcIntoScanRule.java mode change 100755 => 100644 flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/rules/physical/batch/PushLocalSortAggIntoScanRule.java mode change 100755 => 100644 flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/rules/physical/batch/PushLocalSortAggWithCalcIntoScanRule.java mode change 100755 => 100644 flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/rules/physical/batch/PushLocalSortAggWithSortAndCalcIntoScanRule.java mode change 100755 => 100644 flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/batch/sql/agg/LocalAggregatePushDownITCase.java delete mode 100644 flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-bounded-non-partitioned-rows-with-out-of-order-records/plan/over-aggregate-bounded-non-partitioned-rows-with-out-of-order-records.json delete mode 100644 flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-bounded-partitioned-preceding-rows-with-out-of-order-records/plan/over-aggregate-bounded-partitioned-preceding-rows-with-out-of-order-records.json delete mode 100644 flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-bounded-partitioned-rows-with-out-of-order-records/plan/over-aggregate-bounded-partitioned-rows-with-out-of-order-records.json delete mode 100644 flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-multiple-aggs-append-mode/plan/over-aggregate-non-time-range-unbounded-multiple-aggs-append-mode.json delete mode 100644 flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-sum-retract-mode-sink-primary-key/plan/over-aggregate-non-time-range-unbounded-sum-retract-mode-sink-primary-key.json delete mode 100644 flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-primary-key/plan/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-primary-key.json delete mode 100644 flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-sink-primary-key-partition-by-non-pk/plan/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-sink-primary-key-partition-by-non-pk.json delete mode 100644 flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-sink-primary-key/plan/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-sink-primary-key.json delete mode 100644 flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-unbounded-partitioned-rows-with-out-of-order-records/plan/over-aggregate-unbounded-partitioned-rows-with-out-of-order-records.json delete mode 100644 flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-window-aggregate_1/window-aggregate-cumulate-event-time-with-offset-distinct-split/plan/window-aggregate-cumulate-event-time-with-offset-distinct-split.json delete mode 100644 flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-window-aggregate_1/window-aggregate-hop-event-time-two-phase-with-offset-distinct-split/plan/window-aggregate-hop-event-time-two-phase-with-offset-distinct-split.json delete mode 100644 flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-window-aggregate_1/window-aggregate-session-partition-event-time-two-phase-distinct-split/plan/window-aggregate-session-partition-event-time-two-phase-distinct-split.json delete mode 100644 flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-window-aggregate_1/window-aggregate-tumble-event-time-two-phase-with-offset-distinct-split/plan/window-aggregate-tumble-event-time-two-phase-with-offset-distinct-split.json mode change 100755 => 100644 flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/operators/join/adaptive/AdaptiveJoin.java mode change 100755 => 100644 mvnw mode change 100755 => 100644 tools/azure-pipelines/build_properties.sh mode change 100755 => 100644 tools/azure-pipelines/cache_docker_images.sh mode change 100755 => 100644 tools/azure-pipelines/create_build_artifact.sh mode change 100755 => 100644 tools/azure-pipelines/debug_files_utils.sh mode change 100755 => 100644 tools/azure-pipelines/free_disk_space.sh mode change 100755 => 100644 tools/azure-pipelines/unpack_build_artifact.sh mode change 100755 => 100644 tools/azure-pipelines/uploading_watchdog.sh mode change 100755 => 100644 tools/change-version.sh mode change 100755 => 100644 tools/ci/compile.sh mode change 100755 => 100644 tools/ci/compile_ci.sh mode change 100755 => 100644 tools/ci/deploy_nightly_to_s3.sh mode change 100755 => 100644 tools/ci/docs.sh mode change 100755 => 100644 tools/ci/license_check.sh mode change 100755 => 100644 tools/ci/maven-utils.sh mode change 100755 => 100644 tools/ci/shade.sh mode change 100755 => 100644 tools/ci/stage.sh mode change 100755 => 100644 tools/ci/test_controller.sh mode change 100755 => 100644 tools/ci/verify_bundled_optional.sh mode change 100755 => 100644 tools/ci/verify_scala_suffixes.sh mode change 100755 => 100644 tools/ci/watchdog.sh mode change 100755 => 100644 tools/list_deps.py mode change 100755 => 100644 tools/releasing/collect_license_files.sh mode change 100755 => 100644 tools/releasing/create_binary_release.sh mode change 100755 => 100644 tools/releasing/create_preview_branch.sh mode change 100755 => 100644 tools/releasing/create_release_branch.sh mode change 100755 => 100644 tools/releasing/create_snapshot_branch.sh mode change 100755 => 100644 tools/releasing/create_source_release.sh mode change 100755 => 100644 tools/releasing/deploy_staging_jars.sh mode change 100755 => 100644 tools/releasing/update_branch_version.sh mode change 100755 => 100644 tools/releasing/update_japicmp_configuration.sh mode change 100755 => 100644 tools/update_notice_year.sh diff --git a/.github/workflows/docs.sh b/.github/workflows/docs.sh old mode 100755 new mode 100644 diff --git a/docs/build_docs.sh b/docs/build_docs.sh old mode 100755 new mode 100644 diff --git a/docs/setup_docs.sh b/docs/setup_docs.sh old mode 100755 new mode 100644 diff --git a/docs/setup_hugo.sh b/docs/setup_hugo.sh old mode 100755 new mode 100644 diff --git a/docs/static/downloads/setup-pyflink-virtual-env.sh b/docs/static/downloads/setup-pyflink-virtual-env.sh old mode 100755 new mode 100644 diff --git a/docs/static/fig/ssl_internal_external.svg b/docs/static/fig/ssl_internal_external.svg old mode 100755 new mode 100644 diff --git a/docs/themes/book b/docs/themes/book deleted file mode 160000 index a486adf8462c0..0000000000000 --- a/docs/themes/book +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a486adf8462c0abfc9034436ddd72927d6656809 diff --git a/flink-core/src/main/java/org/apache/flink/api/common/operators/ResourceSpec.java b/flink-core/src/main/java/org/apache/flink/api/common/operators/ResourceSpec.java old mode 100755 new mode 100644 diff --git a/flink-core/src/main/java/org/apache/flink/configuration/ConfigurationUtils.java b/flink-core/src/main/java/org/apache/flink/configuration/ConfigurationUtils.java old mode 100755 new mode 100644 diff --git a/flink-core/src/main/java/org/apache/flink/util/CompressionUtils.java b/flink-core/src/main/java/org/apache/flink/util/CompressionUtils.java index 06fb73be955d0..be8223c5b02fb 100644 --- a/flink-core/src/main/java/org/apache/flink/util/CompressionUtils.java +++ b/flink-core/src/main/java/org/apache/flink/util/CompressionUtils.java @@ -87,28 +87,41 @@ public static void extractTarFile(String inFilePath, String targetDirPath) throw // https://github.com/apache/hadoop/blob/7f93349ee74da5f35276b7535781714501ab2457/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileUtil.java private static void extractTarFileUsingTar( String inFilePath, String targetDirPath, boolean gzipped) throws IOException { - inFilePath = makeSecureShellPath(inFilePath); - targetDirPath = makeSecureShellPath(targetDirPath); - String untarCommand = - gzipped - ? String.format( - "gzip -dc '%s' | (cd '%s' && tar -xf -)", inFilePath, targetDirPath) - : String.format("cd '%s' && tar -xf '%s'", targetDirPath, inFilePath); - Process process = new ProcessBuilder("bash", "-c", untarCommand).start(); - int exitCode = 0; - try { - exitCode = process.waitFor(); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new IOException("Interrupted when untarring file " + inFilePath); - } - if (exitCode != 0) { - throw new IOException( - "Error untarring file " - + inFilePath - + ". Tar process exited with exit code " - + exitCode); - } + try (InputStream inputStream = Files.newInputStream(Paths.get(inFilePath))) { + File targetDir = new File(targetDirPath); + + StringBuilder untarCommand = new StringBuilder(); + if (gzipped) { + untarCommand.append("gzip -dc | ("); + } + untarCommand.append("cd '") + .append(makeSecureShellPath(targetDir.getAbsolutePath())) + .append("' && ") + .append("tar -x "); + + if (gzipped) { + untarCommand.append(")"); + } + + Process process = Runtime.getRuntime().exec(new String[]{"bash", "-c", untarCommand.toString()}); + + // Pipe the input stream to the process + try (OutputStream processInput = process.getOutputStream()) { + IOUtils.copyBytes(inputStream, processInput, 4096); + } + + int exitCode = process.waitFor(); + if (exitCode != 0) { + throw new IOException( + "Error untarring file " + + inFilePath + + ". Tar process exited with exit code " + + exitCode); + } + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new IOException("Interrupted when untarring file " + inFilePath); + } } // Follow the pattern suggested in diff --git a/flink-core/src/test/java/org/apache/flink/api/common/operators/ResourceSpecTest.java b/flink-core/src/test/java/org/apache/flink/api/common/operators/ResourceSpecTest.java old mode 100755 new mode 100644 diff --git a/flink-dist/src/main/flink-bin/bin/bash-java-utils.sh b/flink-dist/src/main/flink-bin/bin/bash-java-utils.sh old mode 100755 new mode 100644 diff --git a/flink-dist/src/main/flink-bin/bin/config-parser-utils.sh b/flink-dist/src/main/flink-bin/bin/config-parser-utils.sh old mode 100755 new mode 100644 diff --git a/flink-dist/src/main/flink-bin/bin/config.sh b/flink-dist/src/main/flink-bin/bin/config.sh old mode 100755 new mode 100644 diff --git a/flink-dist/src/main/flink-bin/bin/find-flink-home.sh b/flink-dist/src/main/flink-bin/bin/find-flink-home.sh old mode 100755 new mode 100644 diff --git a/flink-dist/src/main/flink-bin/bin/flink b/flink-dist/src/main/flink-bin/bin/flink old mode 100755 new mode 100644 diff --git a/flink-dist/src/main/flink-bin/bin/flink-console.sh b/flink-dist/src/main/flink-bin/bin/flink-console.sh old mode 100755 new mode 100644 diff --git a/flink-dist/src/main/flink-bin/bin/jobmanager.sh b/flink-dist/src/main/flink-bin/bin/jobmanager.sh old mode 100755 new mode 100644 diff --git a/flink-dist/src/main/flink-bin/bin/migrate-config-file.sh b/flink-dist/src/main/flink-bin/bin/migrate-config-file.sh old mode 100755 new mode 100644 diff --git a/flink-dist/src/main/flink-bin/bin/start-cluster.sh b/flink-dist/src/main/flink-bin/bin/start-cluster.sh old mode 100755 new mode 100644 diff --git a/flink-dist/src/main/flink-bin/bin/start-zookeeper-quorum.sh b/flink-dist/src/main/flink-bin/bin/start-zookeeper-quorum.sh old mode 100755 new mode 100644 diff --git a/flink-dist/src/main/flink-bin/bin/stop-cluster.sh b/flink-dist/src/main/flink-bin/bin/stop-cluster.sh old mode 100755 new mode 100644 diff --git a/flink-dist/src/main/flink-bin/bin/stop-zookeeper-quorum.sh b/flink-dist/src/main/flink-bin/bin/stop-zookeeper-quorum.sh old mode 100755 new mode 100644 diff --git a/flink-dist/src/main/flink-bin/bin/taskmanager.sh b/flink-dist/src/main/flink-bin/bin/taskmanager.sh old mode 100755 new mode 100644 diff --git a/flink-dist/src/main/flink-bin/bin/zookeeper.sh b/flink-dist/src/main/flink-bin/bin/zookeeper.sh old mode 100755 new mode 100644 diff --git a/flink-dist/src/main/flink-bin/kubernetes-bin/kubernetes-session.sh b/flink-dist/src/main/flink-bin/kubernetes-bin/kubernetes-session.sh old mode 100755 new mode 100644 diff --git a/flink-dist/src/main/flink-bin/kubernetes-bin/kubernetes-taskmanager.sh b/flink-dist/src/main/flink-bin/kubernetes-bin/kubernetes-taskmanager.sh old mode 100755 new mode 100644 diff --git a/flink-dist/src/main/flink-bin/yarn-bin/yarn-session.sh b/flink-dist/src/main/flink-bin/yarn-bin/yarn-session.sh old mode 100755 new mode 100644 diff --git a/flink-dist/src/test/bin/runBashJavaUtilsCmd.sh b/flink-dist/src/test/bin/runBashJavaUtilsCmd.sh old mode 100755 new mode 100644 diff --git a/flink-dist/src/test/bin/runExtractLoggingOutputs.sh b/flink-dist/src/test/bin/runExtractLoggingOutputs.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/flink-tpcds-test/tpcds-tool/data_generator.sh b/flink-end-to-end-tests/flink-tpcds-test/tpcds-tool/data_generator.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/run-nightly-tests.sh b/flink-end-to-end-tests/run-nightly-tests.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/run-single-test.sh b/flink-end-to-end-tests/run-single-test.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/common.sh b/flink-end-to-end-tests/test-scripts/common.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/common_artifact_download_cacher.sh b/flink-end-to-end-tests/test-scripts/common_artifact_download_cacher.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/common_kubernetes.sh b/flink-end-to-end-tests/test-scripts/common_kubernetes.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/common_yarn_docker.sh b/flink-end-to-end-tests/test-scripts/common_yarn_docker.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/docker-hadoop-secure-cluster/hadoop/entrypoint.sh b/flink-end-to-end-tests/test-scripts/docker-hadoop-secure-cluster/hadoop/entrypoint.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/docker-hadoop-secure-cluster/kdc/entrypoint.sh b/flink-end-to-end-tests/test-scripts/docker-hadoop-secure-cluster/kdc/entrypoint.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_azure_fs.sh b/flink-end-to-end-tests/test-scripts/test_azure_fs.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_batch_wordcount.sh b/flink-end-to-end-tests/test-scripts/test_batch_wordcount.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_cli.sh b/flink-end-to-end-tests/test-scripts/test_cli.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_confluent_schema_registry.sh b/flink-end-to-end-tests/test-scripts/test_confluent_schema_registry.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_datastream_walkthroughs.sh b/flink-end-to-end-tests/test-scripts/test_datastream_walkthroughs.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_docker_embedded_job.sh b/flink-end-to-end-tests/test-scripts/test_docker_embedded_job.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_failure_enricher.sh b/flink-end-to-end-tests/test-scripts/test_failure_enricher.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_file_sink.sh b/flink-end-to-end-tests/test-scripts/test_file_sink.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_ha_datastream.sh b/flink-end-to-end-tests/test-scripts/test_ha_datastream.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_ha_per_job_cluster_datastream.sh b/flink-end-to-end-tests/test-scripts/test_ha_per_job_cluster_datastream.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_heavy_deployment.sh b/flink-end-to-end-tests/test-scripts/test_heavy_deployment.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_kubernetes_application.sh b/flink-end-to-end-tests/test-scripts/test_kubernetes_application.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_kubernetes_application_ha.sh b/flink-end-to-end-tests/test-scripts/test_kubernetes_application_ha.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_kubernetes_embedded_job.sh b/flink-end-to-end-tests/test-scripts/test_kubernetes_embedded_job.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_kubernetes_itcases.sh b/flink-end-to-end-tests/test-scripts/test_kubernetes_itcases.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_kubernetes_materialized_table.sh b/flink-end-to-end-tests/test-scripts/test_kubernetes_materialized_table.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_kubernetes_pyflink_application.sh b/flink-end-to-end-tests/test-scripts/test_kubernetes_pyflink_application.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_kubernetes_session.sh b/flink-end-to-end-tests/test-scripts/test_kubernetes_session.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_kubernetes_sql_application.sh b/flink-end-to-end-tests/test-scripts/test_kubernetes_sql_application.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_local_recovery_and_scheduling.sh b/flink-end-to-end-tests/test-scripts/test_local_recovery_and_scheduling.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_nat.sh b/flink-end-to-end-tests/test-scripts/test_nat.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_netty_shuffle_memory_control.sh b/flink-end-to-end-tests/test-scripts/test_netty_shuffle_memory_control.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_pyflink.sh b/flink-end-to-end-tests/test-scripts/test_pyflink.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_pyflink_yarn.sh b/flink-end-to-end-tests/test-scripts/test_pyflink_yarn.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_queryable_state.sh b/flink-end-to-end-tests/test-scripts/test_queryable_state.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_queryable_state_restart_tm.sh b/flink-end-to-end-tests/test-scripts/test_queryable_state_restart_tm.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_quickstarts.sh b/flink-end-to-end-tests/test-scripts/test_quickstarts.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_resume_externalized_checkpoints.sh b/flink-end-to-end-tests/test-scripts/test_resume_externalized_checkpoints.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_resume_savepoint.sh b/flink-end-to-end-tests/test-scripts/test_resume_savepoint.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_rocksdb_state_memory_control.sh b/flink-end-to-end-tests/test-scripts/test_rocksdb_state_memory_control.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_sql_jdbc_driver.sh b/flink-end-to-end-tests/test-scripts/test_sql_jdbc_driver.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_state_evolution.sh b/flink-end-to-end-tests/test-scripts/test_state_evolution.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_state_migration.sh b/flink-end-to-end-tests/test-scripts/test_state_migration.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_stateful_stream_job_upgrade.sh b/flink-end-to-end-tests/test-scripts/test_stateful_stream_job_upgrade.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_stream_state_ttl.sh b/flink-end-to-end-tests/test-scripts/test_stream_state_ttl.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_streaming_classloader.sh b/flink-end-to-end-tests/test-scripts/test_streaming_classloader.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_streaming_distributed_cache_via_blob.sh b/flink-end-to-end-tests/test-scripts/test_streaming_distributed_cache_via_blob.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_streaming_examples.sh b/flink-end-to-end-tests/test-scripts/test_streaming_examples.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_streaming_kinesis.sh b/flink-end-to-end-tests/test-scripts/test_streaming_kinesis.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_streaming_sql.sh b/flink-end-to-end-tests/test-scripts/test_streaming_sql.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_table_shaded_dependencies.sh b/flink-end-to-end-tests/test-scripts/test_table_shaded_dependencies.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_tpcds.sh b/flink-end-to-end-tests/test-scripts/test_tpcds.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_tpch.sh b/flink-end-to-end-tests/test-scripts/test_tpch.sh old mode 100755 new mode 100644 diff --git a/flink-end-to-end-tests/test-scripts/test_yarn_application_kerberos_docker.sh b/flink-end-to-end-tests/test-scripts/test_yarn_application_kerberos_docker.sh old mode 100755 new mode 100644 diff --git a/flink-external-resources/flink-external-resource-gpu/src/main/resources/gpu-discovery-common.sh b/flink-external-resources/flink-external-resource-gpu/src/main/resources/gpu-discovery-common.sh old mode 100755 new mode 100644 diff --git a/flink-external-resources/flink-external-resource-gpu/src/main/resources/nvidia-gpu-discovery.sh b/flink-external-resources/flink-external-resource-gpu/src/main/resources/nvidia-gpu-discovery.sh old mode 100755 new mode 100644 diff --git a/flink-external-resources/flink-external-resource-gpu/src/test/resources/test-coordination-mode.sh b/flink-external-resources/flink-external-resource-gpu/src/test/resources/test-coordination-mode.sh old mode 100755 new mode 100644 diff --git a/flink-external-resources/flink-external-resource-gpu/src/test/resources/testing-gpu-discovery.sh b/flink-external-resources/flink-external-resource-gpu/src/test/resources/testing-gpu-discovery.sh old mode 100755 new mode 100644 diff --git a/flink-formats/flink-sql-avro-confluent-registry/src/main/resources/META-INF/licenses/LICENSE.jakarta-inject b/flink-formats/flink-sql-avro-confluent-registry/src/main/resources/META-INF/licenses/LICENSE.jakarta-inject index 6667b0612ef65..1008ec263327a 100644 --- a/flink-formats/flink-sql-avro-confluent-registry/src/main/resources/META-INF/licenses/LICENSE.jakarta-inject +++ b/flink-formats/flink-sql-avro-confluent-registry/src/main/resources/META-INF/licenses/LICENSE.jakarta-inject @@ -1,637 +1,637 @@ -# Eclipse Public License - v 2.0 - - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - - 1. DEFINITIONS - - "Contribution" means: - - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and - - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. - - "Contributor" means any person or entity that Distributes the Program. - - "Licensed Patents" mean patent claims licensable by a Contributor which - are necessarily infringed by the use or sale of its Contribution alone - or when combined with the Program. - - "Program" means the Contributions Distributed in accordance with this - Agreement. - - "Recipient" means anyone who receives the Program under this Agreement - or any Secondary License (as applicable), including Contributors. - - "Derivative Works" shall mean any work, whether in Source Code or other - form, that is based on (or derived from) the Program and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. - - "Modified Works" shall mean any work in Source Code or other form that - results from an addition to, deletion from, or modification of the - contents of the Program, including, for purposes of clarity any new file - in Source Code form that contains any contents of the Program. Modified - Works shall not include works that contain only declarations, - interfaces, types, classes, structures, or files of the Program solely - in each case in order to link to, bind by name, or subclass the Program - or Modified Works thereof. - - "Distribute" means the acts of a) distributing or b) making available - in any manner that enables the transfer of a copy. - - "Source Code" means the form of a Program preferred for making - modifications, including but not limited to software source code, - documentation source, and configuration files. - - "Secondary License" means either the GNU General Public License, - Version 2.0, or any later versions of that license, including any - exceptions or additional permissions as identified by the initial - Contributor. - - 2. GRANT OF RIGHTS - - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. - - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. - - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. - - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). - - 3. REQUIREMENTS - - 3.1 If a Contributor Distributes the Program in any form, then: - - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and - - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; - - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; - - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and - - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. - - 3.2 When the Program is Distributed as Source Code: - - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and - - b) a copy of this Agreement must be included with each copy of - the Program. - - 3.3 Contributors may not remove or alter any copyright, patent, - trademark, attribution notices, disclaimers of warranty, or limitations - of liability ("notices") contained within the Program from any copy of - the Program which they Distribute, provided that Contributors may add - their own appropriate notices. - - 4. COMMERCIAL DISTRIBUTION - - Commercial distributors of software may accept certain responsibilities - with respect to end users, business partners and the like. While this - license is intended to facilitate the commercial use of the Program, - the Contributor who includes the Program in a commercial product - offering should do so in a manner which does not create potential - liability for other Contributors. Therefore, if a Contributor includes - the Program in a commercial product offering, such Contributor - ("Commercial Contributor") hereby agrees to defend and indemnify every - other Contributor ("Indemnified Contributor") against any losses, - damages and costs (collectively "Losses") arising from claims, lawsuits - and other legal actions brought by a third party against the Indemnified - Contributor to the extent caused by the acts or omissions of such - Commercial Contributor in connection with its distribution of the Program - in a commercial product offering. The obligations in this section do not - apply to any claims or Losses relating to any actual or alleged - intellectual property infringement. In order to qualify, an Indemnified - Contributor must: a) promptly notify the Commercial Contributor in - writing of such claim, and b) allow the Commercial Contributor to control, - and cooperate with the Commercial Contributor in, the defense and any - related settlement negotiations. The Indemnified Contributor may - participate in any such claim at its own expense. - - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those performance - claims and warranties, and if a court requires any other Contributor to - pay any damages as a result, the Commercial Contributor must pay - those damages. - - 5. NO WARRANTY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR - IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF - TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR - PURPOSE. Each Recipient is solely responsible for determining the - appropriateness of using and distributing the Program and assumes all - risks associated with its exercise of rights under this Agreement, - including but not limited to the risks and costs of program errors, - compliance with applicable laws, damage to or loss of data, programs - or equipment, and unavailability or interruption of operations. - - 6. DISCLAIMER OF LIABILITY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT - PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS - SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST - PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE - EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. - - 7. GENERAL - - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. - - If Recipient institutes patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that the - Program itself (excluding combinations of the Program with other software - or hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. - - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably practicable. - However, Recipient's obligations under this Agreement and any licenses - granted by Recipient relating to the Program shall continue and survive. - - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. The Eclipse Foundation - is the initial Agreement Steward. The Eclipse Foundation may assign the - responsibility to serve as the Agreement Steward to a suitable separate - entity. Each new version of the Agreement will be given a distinguishing - version number. The Program (including Contributions) may always be - Distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to Distribute the Program (including its - Contributions) under the new version. - - Except as expressly stated in Sections 2(a) and 2(b) above, Recipient - receives no rights or licenses to the intellectual property of any - Contributor under this Agreement, whether expressly, by implication, - estoppel or otherwise. All rights in the Program not expressly granted - under this Agreement are reserved. Nothing in this Agreement is intended - to be enforceable by any entity that is not a Contributor or Recipient. - No third-party beneficiary rights are created under this Agreement. - - Exhibit A - Form of Secondary Licenses Notice - - "This Source Code may also be made available under the following - Secondary Licenses when the conditions for such availability set forth - in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), - version(s), and exceptions or additional permissions here}." - - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. - - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. - - You may add additional accurate notices of copyright ownership. - ---- - -## The GNU General Public License (GPL) Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor - Boston, MA 02110-1335 - USA - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your freedom to - share and change it. By contrast, the GNU General Public License is - intended to guarantee your freedom to share and change free software--to - make sure the software is free for all its users. This General Public - License applies to most of the Free Software Foundation's software and - to any other program whose authors commit to using it. (Some other Free - Software Foundation software is covered by the GNU Library General - Public License instead.) You can apply it to your programs, too. - - When we speak of free software, we are referring to freedom, not price. - Our General Public Licenses are designed to make sure that you have the - freedom to distribute copies of free software (and charge for this - service if you wish), that you receive source code or can get it if you - want it, that you can change the software or use pieces of it in new - free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid anyone - to deny you these rights or to ask you to surrender the rights. These - restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether gratis - or for a fee, you must give the recipients all the rights that you have. - You must make sure that they, too, receive or can get the source code. - And you must show them these terms so they know their rights. - - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. - - Finally, any free program is threatened constantly by software patents. - We wish to avoid the danger that redistributors of a free program will - individually obtain patent licenses, in effect making the program - proprietary. To prevent this, we have made it clear that any patent must - be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and - modification follow. - - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains a - notice placed by the copyright holder saying it may be distributed under - the terms of this General Public License. The "Program", below, refers - to any such program or work, and a "work based on the Program" means - either the Program or any derivative work under copyright law: that is - to say, a work containing the Program or a portion of it, either - verbatim or with modifications and/or translated into another language. - (Hereinafter, translation is included without limitation in the term - "modification".) Each licensee is addressed as "you". - - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of running - the Program is not restricted, and the output from the Program is - covered only if its contents constitute a work based on the Program - (independent of having been made by running the Program). Whether that - is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's source - code as you receive it, in any medium, provided that you conspicuously - and appropriately publish on each copy an appropriate copyright notice - and disclaimer of warranty; keep intact all the notices that refer to - this License and to the absence of any warranty; and give any other - recipients of the Program a copy of this License along with the Program. - - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion of - it, thus forming a work based on the Program, and copy and distribute - such modifications or work under the terms of Section 1 above, provided - that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties - under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this License. - (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program - is not required to print an announcement.) - - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, and - can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based on - the Program, the distribution of the whole must be on the terms of this - License, whose permissions for other licensees extend to the entire - whole, and thus to each and every part regardless of who wrote it. - - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. - - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of a - storage or distribution medium does not bring the other work under the - scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your cost - of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed - only for noncommercial distribution and only if you received the - program in object code or executable form with such an offer, in - accord with Subsection b above.) - - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source code - means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to control - compilation and installation of the executable. However, as a special - exception, the source code distributed need not include anything that is - normally distributed (in either source or binary form) with the major - components (compiler, kernel, and so on) of the operating system on - which the executable runs, unless that component itself accompanies the - executable. - - If distribution of executable or object code is made by offering access - to copy from a designated place, then offering equivalent access to copy - the source code from the same place counts as distribution of the source - code, even though third parties are not compelled to copy the source - along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt otherwise - to copy, modify, sublicense or distribute the Program is void, and will - automatically terminate your rights under this License. However, parties - who have received copies, or rights, from you under this License will - not have their licenses terminated so long as such parties remain in - full compliance. - - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and all - its terms and conditions for copying, distributing or modifying the - Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further restrictions - on the recipients' exercise of the rights granted herein. You are not - responsible for enforcing compliance by third parties to this License. - - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot distribute - so as to satisfy simultaneously your obligations under this License and - any other pertinent obligations, then as a consequence you may not - distribute the Program at all. For example, if a patent license would - not permit royalty-free redistribution of the Program by all those who - receive copies directly or indirectly through you, then the only way you - could satisfy both it and this License would be to refrain entirely from - distribution of the Program. - - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. - - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is implemented - by public license practices. Many people have made generous - contributions to the wide range of software distributed through that - system in reliance on consistent application of that system; it is up to - the author/donor to decide if he or she is willing to distribute - software through any other system and a licensee cannot impose that choice. - - This section is intended to make thoroughly clear what is believed to be - a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License may - add an explicit geographical distribution limitation excluding those - countries, so that distribution is permitted only in or among countries - not thus excluded. In such case, this License incorporates the - limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new - versions of the General Public License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and - conditions either of that version or of any later version published by - the Free Software Foundation. If the Program does not specify a version - number of this License, you may choose any version ever published by the - Free Software Foundation. - - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the - author to ask for permission. For software which is copyrighted by the - Free Software Foundation, write to the Free Software Foundation; we - sometimes make exceptions for this. Our decision will be guided by the - two goals of preserving the free status of all derivatives of our free - software and of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE - ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH - YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL - NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR - DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL - DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM - (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED - INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF - THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR - OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest to - attach them to the start of each source file to most effectively convey - the exclusion of warranty; and each file should have at least the - "copyright" line and a pointer to where the full notice is found. - - One line to give the program's name and a brief idea of what it does. - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA - - Also add information on how to contact you by electronic and paper mail. - - If the program is interactive, make it output a short notice like this - when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type - `show w'. This is free software, and you are welcome to redistribute - it under certain conditions; type `show c' for details. - - The hypothetical commands `show w' and `show c' should show the - appropriate parts of the General Public License. Of course, the commands - you use may be called something other than `show w' and `show c'; they - could even be mouse-clicks or menu items--whatever suits your program. - - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the program, if - necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (which makes passes at compilers) written by - James Hacker. - - signature of Ty Coon, 1 April 1989 - Ty Coon, President of Vice - - This General Public License does not permit incorporating your program - into proprietary programs. If your program is a subroutine library, you - may consider it more useful to permit linking proprietary applications - with the library. If this is what you want to do, use the GNU Library - General Public License instead of this License. - ---- - -## CLASSPATH EXCEPTION - - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License version 2 cover the whole - combination. - - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from or - based on this library. If you modify this library, you may extend this - exception to your version of the library, but you are not obligated to - do so. If you do not wish to do so, delete this exception statement - from your version. +# Eclipse Public License - v 2.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE + PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION + OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + + 1. DEFINITIONS + + "Contribution" means: + + a) in the case of the initial Contributor, the initial content + Distributed under this Agreement, and + + b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + where such changes and/or additions to the Program originate from + and are Distributed by that particular Contributor. A Contribution + "originates" from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's behalf. + Contributions do not include changes or additions to the Program that + are not Modified Works. + + "Contributor" means any person or entity that Distributes the Program. + + "Licensed Patents" mean patent claims licensable by a Contributor which + are necessarily infringed by the use or sale of its Contribution alone + or when combined with the Program. + + "Program" means the Contributions Distributed in accordance with this + Agreement. + + "Recipient" means anyone who receives the Program under this Agreement + or any Secondary License (as applicable), including Contributors. + + "Derivative Works" shall mean any work, whether in Source Code or other + form, that is based on (or derived from) the Program and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. + + "Modified Works" shall mean any work in Source Code or other form that + results from an addition to, deletion from, or modification of the + contents of the Program, including, for purposes of clarity any new file + in Source Code form that contains any contents of the Program. Modified + Works shall not include works that contain only declarations, + interfaces, types, classes, structures, or files of the Program solely + in each case in order to link to, bind by name, or subclass the Program + or Modified Works thereof. + + "Distribute" means the acts of a) distributing or b) making available + in any manner that enables the transfer of a copy. + + "Source Code" means the form of a Program preferred for making + modifications, including but not limited to software source code, + documentation source, and configuration files. + + "Secondary License" means either the GNU General Public License, + Version 2.0, or any later versions of that license, including any + exceptions or additional permissions as identified by the initial + Contributor. + + 2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free copyright + license to reproduce, prepare Derivative Works of, publicly display, + publicly perform, Distribute and sublicense the Contribution of such + Contributor, if any, and such Derivative Works. + + b) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free patent + license under Licensed Patents to make, use, sell, offer to sell, + import and otherwise transfer the Contribution of such Contributor, + if any, in Source Code or other form. This patent license shall + apply to the combination of the Contribution and the Program if, at + the time the Contribution is added by the Contributor, such addition + of the Contribution causes such combination to be covered by the + Licensed Patents. The patent license shall not apply to any other + combinations which include the Contribution. No hardware per se is + licensed hereunder. + + c) Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the + patent or other intellectual property rights of any other entity. + Each Contributor disclaims any liability to Recipient for claims + brought by any other entity based on infringement of intellectual + property rights or otherwise. As a condition to exercising the + rights and licenses granted hereunder, each Recipient hereby + assumes sole responsibility to secure any other intellectual + property rights needed, if any. For example, if a third party + patent license is required to allow Recipient to Distribute the + Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + + d) Each Contributor represents that to its knowledge it has + sufficient copyright rights in its Contribution, if any, to grant + the copyright license set forth in this Agreement. + + e) Notwithstanding the terms of any Secondary License, no + Contributor makes additional grants to any Recipient (other than + those set forth in this Agreement) as a result of such Recipient's + receipt of the Program under the terms of a Secondary License + (if permitted under the terms of Section 3). + + 3. REQUIREMENTS + + 3.1 If a Contributor Distributes the Program in any form, then: + + a) the Program must also be made available as Source Code, in + accordance with section 3.2, and the Contributor must accompany + the Program with a statement that the Source Code for the Program + is available under this Agreement, and informs Recipients how to + obtain it in a reasonable manner on or through a medium customarily + used for software exchange; and + + b) the Contributor may Distribute the Program under a license + different than this Agreement, provided that such license: + i) effectively disclaims on behalf of all other Contributors all + warranties and conditions, express and implied, including + warranties or conditions of title and non-infringement, and + implied warranties or conditions of merchantability and fitness + for a particular purpose; + + ii) effectively excludes on behalf of all other Contributors all + liability for damages, including direct, indirect, special, + incidental and consequential damages, such as lost profits; + + iii) does not attempt to limit or alter the recipients' rights + in the Source Code under section 3.2; and + + iv) requires any subsequent distribution of the Program by any + party to be under a license that satisfies the requirements + of this section 3. + + 3.2 When the Program is Distributed as Source Code: + + a) it must be made available under this Agreement, or if the + Program (i) is combined with other material in a separate file or + files made available under a Secondary License, and (ii) the initial + Contributor attached to the Source Code the notice described in + Exhibit A of this Agreement, then the Program may be made available + under the terms of such Secondary Licenses, and + + b) a copy of this Agreement must be included with each copy of + the Program. + + 3.3 Contributors may not remove or alter any copyright, patent, + trademark, attribution notices, disclaimers of warranty, or limitations + of liability ("notices") contained within the Program from any copy of + the Program which they Distribute, provided that Contributors may add + their own appropriate notices. + + 4. COMMERCIAL DISTRIBUTION + + Commercial distributors of software may accept certain responsibilities + with respect to end users, business partners and the like. While this + license is intended to facilitate the commercial use of the Program, + the Contributor who includes the Program in a commercial product + offering should do so in a manner which does not create potential + liability for other Contributors. Therefore, if a Contributor includes + the Program in a commercial product offering, such Contributor + ("Commercial Contributor") hereby agrees to defend and indemnify every + other Contributor ("Indemnified Contributor") against any losses, + damages and costs (collectively "Losses") arising from claims, lawsuits + and other legal actions brought by a third party against the Indemnified + Contributor to the extent caused by the acts or omissions of such + Commercial Contributor in connection with its distribution of the Program + in a commercial product offering. The obligations in this section do not + apply to any claims or Losses relating to any actual or alleged + intellectual property infringement. In order to qualify, an Indemnified + Contributor must: a) promptly notify the Commercial Contributor in + writing of such claim, and b) allow the Commercial Contributor to control, + and cooperate with the Commercial Contributor in, the defense and any + related settlement negotiations. The Indemnified Contributor may + participate in any such claim at its own expense. + + For example, a Contributor might include the Program in a commercial + product offering, Product X. That Contributor is then a Commercial + Contributor. If that Commercial Contributor then makes performance + claims, or offers warranties related to Product X, those performance + claims and warranties are such Commercial Contributor's responsibility + alone. Under this section, the Commercial Contributor would have to + defend claims against the other Contributors related to those performance + claims and warranties, and if a court requires any other Contributor to + pay any damages as a result, the Commercial Contributor must pay + those damages. + + 5. NO WARRANTY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT + PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR + IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF + TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR + PURPOSE. Each Recipient is solely responsible for determining the + appropriateness of using and distributing the Program and assumes all + risks associated with its exercise of rights under this Agreement, + including but not limited to the risks and costs of program errors, + compliance with applicable laws, damage to or loss of data, programs + or equipment, and unavailability or interruption of operations. + + 6. DISCLAIMER OF LIABILITY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT + PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS + SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST + PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE + EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGES. + + 7. GENERAL + + If any provision of this Agreement is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of + the remainder of the terms of this Agreement, and without further + action by the parties hereto, such provision shall be reformed to the + minimum extent necessary to make such provision valid and enforceable. + + If Recipient institutes patent litigation against any entity + (including a cross-claim or counterclaim in a lawsuit) alleging that the + Program itself (excluding combinations of the Program with other software + or hardware) infringes such Recipient's patent(s), then such Recipient's + rights granted under Section 2(b) shall terminate as of the date such + litigation is filed. + + All Recipient's rights under this Agreement shall terminate if it + fails to comply with any of the material terms or conditions of this + Agreement and does not cure such failure in a reasonable period of + time after becoming aware of such noncompliance. If all Recipient's + rights under this Agreement terminate, Recipient agrees to cease use + and distribution of the Program as soon as reasonably practicable. + However, Recipient's obligations under this Agreement and any licenses + granted by Recipient relating to the Program shall continue and survive. + + Everyone is permitted to copy and distribute copies of this Agreement, + but in order to avoid inconsistency the Agreement is copyrighted and + may only be modified in the following manner. The Agreement Steward + reserves the right to publish new versions (including revisions) of + this Agreement from time to time. No one other than the Agreement + Steward has the right to modify this Agreement. The Eclipse Foundation + is the initial Agreement Steward. The Eclipse Foundation may assign the + responsibility to serve as the Agreement Steward to a suitable separate + entity. Each new version of the Agreement will be given a distinguishing + version number. The Program (including Contributions) may always be + Distributed subject to the version of the Agreement under which it was + received. In addition, after a new version of the Agreement is published, + Contributor may elect to Distribute the Program (including its + Contributions) under the new version. + + Except as expressly stated in Sections 2(a) and 2(b) above, Recipient + receives no rights or licenses to the intellectual property of any + Contributor under this Agreement, whether expressly, by implication, + estoppel or otherwise. All rights in the Program not expressly granted + under this Agreement are reserved. Nothing in this Agreement is intended + to be enforceable by any entity that is not a Contributor or Recipient. + No third-party beneficiary rights are created under this Agreement. + + Exhibit A - Form of Secondary Licenses Notice + + "This Source Code may also be made available under the following + Secondary Licenses when the conditions for such availability set forth + in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), + version(s), and exceptions or additional permissions here}." + + Simply including a copy of this Agreement, including this Exhibit A + is not sufficient to license the Source Code under Secondary Licenses. + + If it is not possible or desirable to put the notice in a particular + file, then You may include the notice in a location (such as a LICENSE + file in a relevant directory) where a recipient would be likely to + look for such a notice. + + You may add additional accurate notices of copyright ownership. + +--- + +## The GNU General Public License (GPL) Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor + Boston, MA 02110-1335 + USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your freedom to + share and change it. By contrast, the GNU General Public License is + intended to guarantee your freedom to share and change free software--to + make sure the software is free for all its users. This General Public + License applies to most of the Free Software Foundation's software and + to any other program whose authors commit to using it. (Some other Free + Software Foundation software is covered by the GNU Library General + Public License instead.) You can apply it to your programs, too. + + When we speak of free software, we are referring to freedom, not price. + Our General Public Licenses are designed to make sure that you have the + freedom to distribute copies of free software (and charge for this + service if you wish), that you receive source code or can get it if you + want it, that you can change the software or use pieces of it in new + free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid anyone + to deny you these rights or to ask you to surrender the rights. These + restrictions translate to certain responsibilities for you if you + distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether gratis + or for a fee, you must give the recipients all the rights that you have. + You must make sure that they, too, receive or can get the source code. + And you must show them these terms so they know their rights. + + We protect your rights with two steps: (1) copyright the software, and + (2) offer you this license which gives you legal permission to copy, + distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain + that everyone understands that there is no warranty for this free + software. If the software is modified by someone else and passed on, we + want its recipients to know that what they have is not the original, so + that any problems introduced by others will not reflect on the original + authors' reputations. + + Finally, any free program is threatened constantly by software patents. + We wish to avoid the danger that redistributors of a free program will + individually obtain patent licenses, in effect making the program + proprietary. To prevent this, we have made it clear that any patent must + be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and + modification follow. + + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains a + notice placed by the copyright holder saying it may be distributed under + the terms of this General Public License. The "Program", below, refers + to any such program or work, and a "work based on the Program" means + either the Program or any derivative work under copyright law: that is + to say, a work containing the Program or a portion of it, either + verbatim or with modifications and/or translated into another language. + (Hereinafter, translation is included without limitation in the term + "modification".) Each licensee is addressed as "you". + + Activities other than copying, distribution and modification are not + covered by this License; they are outside its scope. The act of running + the Program is not restricted, and the output from the Program is + covered only if its contents constitute a work based on the Program + (independent of having been made by running the Program). Whether that + is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's source + code as you receive it, in any medium, provided that you conspicuously + and appropriately publish on each copy an appropriate copyright notice + and disclaimer of warranty; keep intact all the notices that refer to + this License and to the absence of any warranty; and give any other + recipients of the Program a copy of this License along with the Program. + + You may charge a fee for the physical act of transferring a copy, and + you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion of + it, thus forming a work based on the Program, and copy and distribute + such modifications or work under the terms of Section 1 above, provided + that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any part + thereof, to be licensed as a whole at no charge to all third parties + under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a notice + that there is no warranty (or else, saying that you provide a + warranty) and that users may redistribute the program under these + conditions, and telling the user how to view a copy of this License. + (Exception: if the Program itself is interactive but does not + normally print such an announcement, your work based on the Program + is not required to print an announcement.) + + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the Program, and + can be reasonably considered independent and separate works in + themselves, then this License, and its terms, do not apply to those + sections when you distribute them as separate works. But when you + distribute the same sections as part of a whole which is a work based on + the Program, the distribution of the whole must be on the terms of this + License, whose permissions for other licensees extend to the entire + whole, and thus to each and every part regardless of who wrote it. + + Thus, it is not the intent of this section to claim rights or contest + your rights to work written entirely by you; rather, the intent is to + exercise the right to control the distribution of derivative or + collective works based on the Program. + + In addition, mere aggregation of another work not based on the Program + with the Program (or with a work based on the Program) on a volume of a + storage or distribution medium does not bring the other work under the + scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, + under Section 2) in object code or executable form under the terms of + Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections 1 + and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your cost + of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer to + distribute corresponding source code. (This alternative is allowed + only for noncommercial distribution and only if you received the + program in object code or executable form with such an offer, in + accord with Subsection b above.) + + The source code for a work means the preferred form of the work for + making modifications to it. For an executable work, complete source code + means all the source code for all modules it contains, plus any + associated interface definition files, plus the scripts used to control + compilation and installation of the executable. However, as a special + exception, the source code distributed need not include anything that is + normally distributed (in either source or binary form) with the major + components (compiler, kernel, and so on) of the operating system on + which the executable runs, unless that component itself accompanies the + executable. + + If distribution of executable or object code is made by offering access + to copy from a designated place, then offering equivalent access to copy + the source code from the same place counts as distribution of the source + code, even though third parties are not compelled to copy the source + along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program + except as expressly provided under this License. Any attempt otherwise + to copy, modify, sublicense or distribute the Program is void, and will + automatically terminate your rights under this License. However, parties + who have received copies, or rights, from you under this License will + not have their licenses terminated so long as such parties remain in + full compliance. + + 5. You are not required to accept this License, since you have not + signed it. However, nothing else grants you permission to modify or + distribute the Program or its derivative works. These actions are + prohibited by law if you do not accept this License. Therefore, by + modifying or distributing the Program (or any work based on the + Program), you indicate your acceptance of this License to do so, and all + its terms and conditions for copying, distributing or modifying the + Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the + Program), the recipient automatically receives a license from the + original licensor to copy, distribute or modify the Program subject to + these terms and conditions. You may not impose any further restrictions + on the recipients' exercise of the rights granted herein. You are not + responsible for enforcing compliance by third parties to this License. + + 7. If, as a consequence of a court judgment or allegation of patent + infringement or for any other reason (not limited to patent issues), + conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot distribute + so as to satisfy simultaneously your obligations under this License and + any other pertinent obligations, then as a consequence you may not + distribute the Program at all. For example, if a patent license would + not permit royalty-free redistribution of the Program by all those who + receive copies directly or indirectly through you, then the only way you + could satisfy both it and this License would be to refrain entirely from + distribution of the Program. + + If any portion of this section is held invalid or unenforceable under + any particular circumstance, the balance of the section is intended to + apply and the section as a whole is intended to apply in other + circumstances. + + It is not the purpose of this section to induce you to infringe any + patents or other property right claims or to contest validity of any + such claims; this section has the sole purpose of protecting the + integrity of the free software distribution system, which is implemented + by public license practices. Many people have made generous + contributions to the wide range of software distributed through that + system in reliance on consistent application of that system; it is up to + the author/donor to decide if he or she is willing to distribute + software through any other system and a licensee cannot impose that choice. + + This section is intended to make thoroughly clear what is believed to be + a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in + certain countries either by patents or by copyrighted interfaces, the + original copyright holder who places the Program under this License may + add an explicit geographical distribution limitation excluding those + countries, so that distribution is permitted only in or among countries + not thus excluded. In such case, this License incorporates the + limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new + versions of the General Public License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the Program + specifies a version number of this License which applies to it and "any + later version", you have the option of following the terms and + conditions either of that version or of any later version published by + the Free Software Foundation. If the Program does not specify a version + number of this License, you may choose any version ever published by the + Free Software Foundation. + + 10. If you wish to incorporate parts of the Program into other free + programs whose distribution conditions are different, write to the + author to ask for permission. For software which is copyrighted by the + Free Software Foundation, write to the Free Software Foundation; we + sometimes make exceptions for this. Our decision will be guided by the + two goals of preserving the free status of all derivatives of our free + software and of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO + WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. + EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR + OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, + EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE + ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH + YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL + NECESSARY SERVICING, REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN + WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY + AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR + DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL + DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM + (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED + INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF + THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR + OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest + possible use to the public, the best way to achieve this is to make it + free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest to + attach them to the start of each source file to most effectively convey + the exclusion of warranty; and each file should have at least the + "copyright" line and a pointer to where the full notice is found. + + One line to give the program's name and a brief idea of what it does. + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA + + Also add information on how to contact you by electronic and paper mail. + + If the program is interactive, make it output a short notice like this + when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type + `show w'. This is free software, and you are welcome to redistribute + it under certain conditions; type `show c' for details. + + The hypothetical commands `show w' and `show c' should show the + appropriate parts of the General Public License. Of course, the commands + you use may be called something other than `show w' and `show c'; they + could even be mouse-clicks or menu items--whatever suits your program. + + You should also get your employer (if you work as a programmer) or your + school, if any, to sign a "copyright disclaimer" for the program, if + necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + program `Gnomovision' (which makes passes at compilers) written by + James Hacker. + + signature of Ty Coon, 1 April 1989 + Ty Coon, President of Vice + + This General Public License does not permit incorporating your program + into proprietary programs. If your program is a subroutine library, you + may consider it more useful to permit linking proprietary applications + with the library. If this is what you want to do, use the GNU Library + General Public License instead of this License. + +--- + +## CLASSPATH EXCEPTION + + Linking this library statically or dynamically with other modules is + making a combined work based on this library. Thus, the terms and + conditions of the GNU General Public License version 2 cover the whole + combination. + + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent + modules, and to copy and distribute the resulting executable under + terms of your choice, provided that you also meet, for each linked + independent module, the terms and conditions of the license of that + module. An independent module is a module which is not derived from or + based on this library. If you modify this library, you may extend this + exception to your version of the library, but you are not obligated to + do so. If you do not wish to do so, delete this exception statement + from your version. diff --git a/flink-python/bin/pyflink-shell.sh b/flink-python/bin/pyflink-shell.sh old mode 100755 new mode 100644 diff --git a/flink-python/dev/build-wheels.sh b/flink-python/dev/build-wheels.sh old mode 100755 new mode 100644 diff --git a/flink-python/dev/dev-requirements.txt b/flink-python/dev/dev-requirements.txt old mode 100755 new mode 100644 diff --git a/flink-python/dev/glibc_version_fix.h b/flink-python/dev/glibc_version_fix.h old mode 100755 new mode 100644 diff --git a/flink-python/dev/install_command.sh b/flink-python/dev/install_command.sh old mode 100755 new mode 100644 diff --git a/flink-python/dev/integration_test.sh b/flink-python/dev/integration_test.sh old mode 100755 new mode 100644 diff --git a/flink-python/dev/lint-python.sh b/flink-python/dev/lint-python.sh old mode 100755 new mode 100644 diff --git a/flink-python/dev/pip_test_code.py b/flink-python/dev/pip_test_code.py old mode 100755 new mode 100644 diff --git a/flink-python/dev/run_pip_test.sh b/flink-python/dev/run_pip_test.sh old mode 100755 new mode 100644 diff --git a/flink-python/lib/cloudpickle-2.2.0-src.zip b/flink-python/lib/cloudpickle-2.2.0-src.zip deleted file mode 100644 index e974db488b862800fca7bb6be52a21efd47a6792..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22446 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 D{#lv; diff --git a/flink-python/lib/py4j-0.10.9.7-src.zip b/flink-python/lib/py4j-0.10.9.7-src.zip deleted file mode 100644 index 4d414b9ed18d890510425a27089977cd734f26ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86109 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%0A|_ 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", - "description" : "TableSourceScan(table=[[default_catalog, default_database, MyTable]], fields=[ts, a, b, c])", - "inputProperties" : [ ] - }, { - "id" : 10, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "CALL", - "internalName" : "$TO_TIMESTAMP$1", - "operands" : [ { - "kind" : "CALL", - "internalName" : "$FROM_UNIXTIME$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - } ], - "type" : "VARCHAR(2147483647)" - } ], - "type" : "TIMESTAMP(3)" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`ts` BIGINT, `a` BIGINT, `b` INT, `c` VARCHAR(2147483647), `rowtime` TIMESTAMP(3)>", - "description" : "Calc(select=[ts, a, b, c, TO_TIMESTAMP(FROM_UNIXTIME(ts)) AS rowtime])" - }, { - "id" : 11, - "type" : "stream-exec-watermark-assigner_1", - "watermarkExpr" : { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "TIMESTAMP(3)" - }, - "rowtimeFieldIndex" : 4, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "a", - "fieldType" : "BIGINT" - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ] - }, - "description" : "WatermarkAssigner(rowtime=[rowtime], watermark=[rowtime])" - }, { - "id" : 12, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "kind" : "LITERAL", - "value" : 4, - "type" : "BIGINT NOT NULL" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "a", - "fieldType" : "BIGINT" - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "$5", - "fieldType" : "BIGINT NOT NULL" - } ] - }, - "description" : "Calc(select=[ts, a, b, c, rowtime, 4 AS $5])" - }, { - "id" : 13, - "type" : "stream-exec-exchange_1", - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "HASH", - "keys" : [ 3 ] - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "a", - "fieldType" : "BIGINT" - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "$5", - "fieldType" : "BIGINT NOT NULL" - } ] - }, - "description" : "Exchange(distribution=[hash[c]])" - }, { - "id" : 14, - "type" : "stream-exec-over-aggregate_1", - "overSpec" : { - "partition" : { - "fields" : [ 3 ] - }, - "groups" : [ { - "orderBy" : { - "fields" : [ { - "index" : 4, - "isAscending" : true, - "nullIsLast" : false - } ] - }, - "isRows" : false, - "lowerBound" : { - "kind" : "BOUNDED_WINDOW", - "isPreceding" : true, - "offset" : { - "kind" : "INPUT_REF", - "inputIndex" : 6, - "type" : "INTERVAL SECOND(6) NOT NULL" - } - }, - "upperBound" : { - "kind" : "CURRENT_ROW" - }, - "aggCalls" : [ { - "name" : "w0$o0", - "systemName" : "LTCNT", - "argList" : [ 1, 5 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT" - }, { - "name" : "w0$o1", - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : "w0$o2", - "internalName" : "$$SUM0$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ] - } ], - "constants" : [ { - "kind" : "LITERAL", - "value" : "10000", - "type" : "INTERVAL SECOND(6) NOT NULL" - } ], - "originalInputFields" : 6 - }, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "a", - "fieldType" : "BIGINT" - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "$5", - "fieldType" : "BIGINT NOT NULL" - }, { - "name" : "w0$o0", - "fieldType" : "BIGINT" - }, { - "name" : "w0$o1", - "fieldType" : "BIGINT NOT NULL" - }, { - "name" : "w0$o2", - "fieldType" : "BIGINT NOT NULL" - } ] - }, - "description" : "OverAggregate(partitionBy=[c], orderBy=[rowtime ASC], window=[ RANG BETWEEN 10000 PRECEDING AND CURRENT ROW], select=[ts, a, b, c, rowtime, $5, LTCNT(a, $5) AS w0$o0, COUNT(a) AS w0$o1, $SUM0(a) AS w0$o2])" - }, { - "id" : 15, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 6, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 7, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "CALL", - "syntax" : "SPECIAL", - "internalName" : "$CASE$1", - "operands" : [ { - "kind" : "CALL", - "syntax" : "BINARY", - "internalName" : "$>$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 7, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "LITERAL", - "value" : 0, - "type" : "BIGINT NOT NULL" - } ], - "type" : "BOOLEAN NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 8, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "LITERAL", - "value" : null, - "type" : "BIGINT" - } ], - "type" : "BIGINT" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "EXPR$4", - "fieldType" : "BIGINT" - }, { - "name" : "EXPR$5", - "fieldType" : "BIGINT NOT NULL" - }, { - "name" : "EXPR$6", - "fieldType" : "BIGINT" - } ] - }, - "description" : "Calc(select=[c, ts, rowtime, b, w0$o0 AS EXPR$4, w0$o1 AS EXPR$5, CASE((w0$o1 > 0), w0$o2, null:BIGINT) AS EXPR$6])" - }, { - "id" : 16, - "type" : "stream-exec-sink_1", - "configuration" : { - "table.exec.sink.keyed-shuffle" : "AUTO", - "table.exec.sink.not-null-enforcer" : "ERROR", - "table.exec.sink.rowtime-inserter" : "ENABLED", - "table.exec.sink.type-length-enforcer" : "IGNORE", - "table.exec.sink.upsert-materialize" : "AUTO" - }, - "dynamicTableSink" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`MySink`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "a", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "ts", - "dataType" : "BIGINT" - }, { - "name" : "rowtime", - "dataType" : "TIMESTAMP(3)" - }, { - "name" : "b", - "dataType" : "INT" - }, { - "name" : "c", - "dataType" : "BIGINT" - }, { - "name" : "d", - "dataType" : "BIGINT" - }, { - "name" : "e", - "dataType" : "BIGINT" - } ], - "watermarkSpecs" : [ ] - }, - "partitionKeys" : [ ] - } - } - }, - "inputChangelogMode" : [ "INSERT" ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "EXPR$4", - "fieldType" : "BIGINT" - }, { - "name" : "EXPR$5", - "fieldType" : "BIGINT NOT NULL" - }, { - "name" : "EXPR$6", - "fieldType" : "BIGINT" - } ] - }, - "description" : "Sink(table=[default_catalog.default_database.MySink], fields=[c, ts, rowtime, b, EXPR$4, EXPR$5, EXPR$6])" - } ], - "edges" : [ { - "source" : 9, - "target" : 10, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 10, - "target" : 11, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 11, - "target" : 12, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 12, - "target" : 13, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 13, - "target" : 14, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 14, - "target" : 15, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 15, - "target" : 16, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - } ] -} \ No newline at end of file diff --git a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-bounded-partitioned-preceding-rows-with-out-of-order-records/plan/over-aggregate-bounded-partitioned-preceding-rows-with-out-of-order-records.json b/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-bounded-partitioned-preceding-rows-with-out-of-order-records/plan/over-aggregate-bounded-partitioned-preceding-rows-with-out-of-order-records.json deleted file mode 100644 index fae889bd9a2b9..0000000000000 --- a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-bounded-partitioned-preceding-rows-with-out-of-order-records/plan/over-aggregate-bounded-partitioned-preceding-rows-with-out-of-order-records.json +++ /dev/null @@ -1,592 +0,0 @@ -{ - "flinkVersion" : "1.20", - "nodes" : [ { - "id" : 25, - "type" : "stream-exec-table-source-scan_1", - "scanTableSource" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`MyTable`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "ts", - "dataType" : "BIGINT" - }, { - "name" : "a", - "dataType" : "BIGINT" - }, { - "name" : "b", - "dataType" : "INT" - }, { - "name" : "c", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "kind" : "COMPUTED", - "expression" : { - "rexNode" : { - "kind" : "CALL", - "internalName" : "$TO_TIMESTAMP$1", - "operands" : [ { - "kind" : "CALL", - "internalName" : "$FROM_UNIXTIME$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - } ], - "type" : "VARCHAR(2147483647)" - } ], - "type" : "TIMESTAMP(3)" - }, - "serializableString" : "TO_TIMESTAMP(FROM_UNIXTIME(`ts`))" - } - } ], - "watermarkSpecs" : [ { - "rowtimeAttribute" : "rowtime", - "expression" : { - "rexNode" : { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "TIMESTAMP(3)" - }, - "serializableString" : "`rowtime`" - } - } ] - }, - "partitionKeys" : [ ] - } - } - }, - "outputType" : "ROW<`ts` BIGINT, `a` BIGINT, `b` INT, `c` VARCHAR(2147483647)>", - "description" : "TableSourceScan(table=[[default_catalog, default_database, MyTable]], fields=[ts, a, b, c])", - "inputProperties" : [ ] - }, { - "id" : 26, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "CALL", - "internalName" : "$TO_TIMESTAMP$1", - "operands" : [ { - "kind" : "CALL", - "internalName" : "$FROM_UNIXTIME$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - } ], - "type" : "VARCHAR(2147483647)" - } ], - "type" : "TIMESTAMP(3)" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`ts` BIGINT, `a` BIGINT, `b` INT, `c` VARCHAR(2147483647), `rowtime` TIMESTAMP(3)>", - "description" : "Calc(select=[ts, a, b, c, TO_TIMESTAMP(FROM_UNIXTIME(ts)) AS rowtime])" - }, { - "id" : 27, - "type" : "stream-exec-watermark-assigner_1", - "watermarkExpr" : { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "TIMESTAMP(3)" - }, - "rowtimeFieldIndex" : 4, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "a", - "fieldType" : "BIGINT" - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ] - }, - "description" : "WatermarkAssigner(rowtime=[rowtime], watermark=[rowtime])" - }, { - "id" : 28, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "kind" : "LITERAL", - "value" : 4, - "type" : "BIGINT NOT NULL" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "a", - "fieldType" : "BIGINT" - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "$5", - "fieldType" : "BIGINT NOT NULL" - } ] - }, - "description" : "Calc(select=[ts, a, b, c, rowtime, 4 AS $5])" - }, { - "id" : 29, - "type" : "stream-exec-exchange_1", - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "HASH", - "keys" : [ 3 ] - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "a", - "fieldType" : "BIGINT" - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "$5", - "fieldType" : "BIGINT NOT NULL" - } ] - }, - "description" : "Exchange(distribution=[hash[c]])" - }, { - "id" : 30, - "type" : "stream-exec-over-aggregate_1", - "overSpec" : { - "partition" : { - "fields" : [ 3 ] - }, - "groups" : [ { - "orderBy" : { - "fields" : [ { - "index" : 4, - "isAscending" : true, - "nullIsLast" : false - } ] - }, - "isRows" : true, - "lowerBound" : { - "kind" : "BOUNDED_WINDOW", - "isPreceding" : true, - "offset" : { - "kind" : "INPUT_REF", - "inputIndex" : 6, - "type" : "INT NOT NULL" - } - }, - "upperBound" : { - "kind" : "CURRENT_ROW" - }, - "aggCalls" : [ { - "name" : "w0$o0", - "systemName" : "LTCNT", - "argList" : [ 1, 5 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT" - }, { - "name" : "w0$o1", - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : "w0$o2", - "internalName" : "$$SUM0$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ] - } ], - "constants" : [ { - "kind" : "LITERAL", - "value" : 5, - "type" : "INT NOT NULL" - } ], - "originalInputFields" : 6 - }, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "a", - "fieldType" : "BIGINT" - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "$5", - "fieldType" : "BIGINT NOT NULL" - }, { - "name" : "w0$o0", - "fieldType" : "BIGINT" - }, { - "name" : "w0$o1", - "fieldType" : "BIGINT NOT NULL" - }, { - "name" : "w0$o2", - "fieldType" : "BIGINT NOT NULL" - } ] - }, - "description" : "OverAggregate(partitionBy=[c], orderBy=[rowtime ASC], window=[ ROWS BETWEEN 5 PRECEDING AND CURRENT ROW], select=[ts, a, b, c, rowtime, $5, LTCNT(a, $5) AS w0$o0, COUNT(a) AS w0$o1, $SUM0(a) AS w0$o2])", - "unboundedOverVersion" : 1 - }, { - "id" : 31, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 6, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 7, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "CALL", - "syntax" : "SPECIAL", - "internalName" : "$CASE$1", - "operands" : [ { - "kind" : "CALL", - "syntax" : "BINARY", - "internalName" : "$>$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 7, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "LITERAL", - "value" : 0, - "type" : "BIGINT NOT NULL" - } ], - "type" : "BOOLEAN NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 8, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "LITERAL", - "value" : null, - "type" : "BIGINT" - } ], - "type" : "BIGINT" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "EXPR$4", - "fieldType" : "BIGINT" - }, { - "name" : "EXPR$5", - "fieldType" : "BIGINT NOT NULL" - }, { - "name" : "EXPR$6", - "fieldType" : "BIGINT" - } ] - }, - "description" : "Calc(select=[c, ts, rowtime, b, w0$o0 AS EXPR$4, w0$o1 AS EXPR$5, CASE((w0$o1 > 0), w0$o2, null:BIGINT) AS EXPR$6])" - }, { - "id" : 32, - "type" : "stream-exec-sink_1", - "configuration" : { - "table.exec.sink.keyed-shuffle" : "AUTO", - "table.exec.sink.not-null-enforcer" : "ERROR", - "table.exec.sink.rowtime-inserter" : "ENABLED", - "table.exec.sink.type-length-enforcer" : "IGNORE", - "table.exec.sink.upsert-materialize" : "AUTO" - }, - "dynamicTableSink" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`MySink`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "a", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "ts", - "dataType" : "BIGINT" - }, { - "name" : "rowtime", - "dataType" : "TIMESTAMP(3)" - }, { - "name" : "b", - "dataType" : "INT" - }, { - "name" : "c", - "dataType" : "BIGINT" - }, { - "name" : "d", - "dataType" : "BIGINT" - }, { - "name" : "e", - "dataType" : "BIGINT" - } ], - "watermarkSpecs" : [ ] - }, - "partitionKeys" : [ ] - } - } - }, - "inputChangelogMode" : [ "INSERT" ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "EXPR$4", - "fieldType" : "BIGINT" - }, { - "name" : "EXPR$5", - "fieldType" : "BIGINT NOT NULL" - }, { - "name" : "EXPR$6", - "fieldType" : "BIGINT" - } ] - }, - "description" : "Sink(table=[default_catalog.default_database.MySink], fields=[c, ts, rowtime, b, EXPR$4, EXPR$5, EXPR$6])" - } ], - "edges" : [ { - "source" : 25, - "target" : 26, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 26, - "target" : 27, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 27, - "target" : 28, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 28, - "target" : 29, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 29, - "target" : 30, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 30, - "target" : 31, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 31, - "target" : 32, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - } ] -} diff --git a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-bounded-partitioned-rows-with-out-of-order-records/plan/over-aggregate-bounded-partitioned-rows-with-out-of-order-records.json b/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-bounded-partitioned-rows-with-out-of-order-records/plan/over-aggregate-bounded-partitioned-rows-with-out-of-order-records.json deleted file mode 100644 index 8aad761921315..0000000000000 --- a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-bounded-partitioned-rows-with-out-of-order-records/plan/over-aggregate-bounded-partitioned-rows-with-out-of-order-records.json +++ /dev/null @@ -1,592 +0,0 @@ -{ - "flinkVersion" : "1.20", - "nodes" : [ { - "id" : 1, - "type" : "stream-exec-table-source-scan_1", - "scanTableSource" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`MyTable`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "ts", - "dataType" : "BIGINT" - }, { - "name" : "a", - "dataType" : "BIGINT" - }, { - "name" : "b", - "dataType" : "INT" - }, { - "name" : "c", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "kind" : "COMPUTED", - "expression" : { - "rexNode" : { - "kind" : "CALL", - "internalName" : "$TO_TIMESTAMP$1", - "operands" : [ { - "kind" : "CALL", - "internalName" : "$FROM_UNIXTIME$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - } ], - "type" : "VARCHAR(2147483647)" - } ], - "type" : "TIMESTAMP(3)" - }, - "serializableString" : "TO_TIMESTAMP(FROM_UNIXTIME(`ts`))" - } - } ], - "watermarkSpecs" : [ { - "rowtimeAttribute" : "rowtime", - "expression" : { - "rexNode" : { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "TIMESTAMP(3)" - }, - "serializableString" : "`rowtime`" - } - } ] - }, - "partitionKeys" : [ ] - } - } - }, - "outputType" : "ROW<`ts` BIGINT, `a` BIGINT, `b` INT, `c` VARCHAR(2147483647)>", - "description" : "TableSourceScan(table=[[default_catalog, default_database, MyTable]], fields=[ts, a, b, c])", - "inputProperties" : [ ] - }, { - "id" : 2, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "CALL", - "internalName" : "$TO_TIMESTAMP$1", - "operands" : [ { - "kind" : "CALL", - "internalName" : "$FROM_UNIXTIME$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - } ], - "type" : "VARCHAR(2147483647)" - } ], - "type" : "TIMESTAMP(3)" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`ts` BIGINT, `a` BIGINT, `b` INT, `c` VARCHAR(2147483647), `rowtime` TIMESTAMP(3)>", - "description" : "Calc(select=[ts, a, b, c, TO_TIMESTAMP(FROM_UNIXTIME(ts)) AS rowtime])" - }, { - "id" : 3, - "type" : "stream-exec-watermark-assigner_1", - "watermarkExpr" : { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "TIMESTAMP(3)" - }, - "rowtimeFieldIndex" : 4, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "a", - "fieldType" : "BIGINT" - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ] - }, - "description" : "WatermarkAssigner(rowtime=[rowtime], watermark=[rowtime])" - }, { - "id" : 4, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "kind" : "LITERAL", - "value" : 4, - "type" : "BIGINT NOT NULL" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "a", - "fieldType" : "BIGINT" - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "$5", - "fieldType" : "BIGINT NOT NULL" - } ] - }, - "description" : "Calc(select=[ts, a, b, c, rowtime, 4 AS $5])" - }, { - "id" : 5, - "type" : "stream-exec-exchange_1", - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "HASH", - "keys" : [ 3 ] - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "a", - "fieldType" : "BIGINT" - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "$5", - "fieldType" : "BIGINT NOT NULL" - } ] - }, - "description" : "Exchange(distribution=[hash[c]])" - }, { - "id" : 6, - "type" : "stream-exec-over-aggregate_1", - "overSpec" : { - "partition" : { - "fields" : [ 3 ] - }, - "groups" : [ { - "orderBy" : { - "fields" : [ { - "index" : 4, - "isAscending" : true, - "nullIsLast" : false - } ] - }, - "isRows" : false, - "lowerBound" : { - "kind" : "BOUNDED_WINDOW", - "isPreceding" : true, - "offset" : { - "kind" : "INPUT_REF", - "inputIndex" : 6, - "type" : "INTERVAL SECOND(6) NOT NULL" - } - }, - "upperBound" : { - "kind" : "CURRENT_ROW" - }, - "aggCalls" : [ { - "name" : "w0$o0", - "systemName" : "LTCNT", - "argList" : [ 1, 5 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT" - }, { - "name" : "w0$o1", - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : "w0$o2", - "internalName" : "$$SUM0$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ] - } ], - "constants" : [ { - "kind" : "LITERAL", - "value" : "10000", - "type" : "INTERVAL SECOND(6) NOT NULL" - } ], - "originalInputFields" : 6 - }, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "a", - "fieldType" : "BIGINT" - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "$5", - "fieldType" : "BIGINT NOT NULL" - }, { - "name" : "w0$o0", - "fieldType" : "BIGINT" - }, { - "name" : "w0$o1", - "fieldType" : "BIGINT NOT NULL" - }, { - "name" : "w0$o2", - "fieldType" : "BIGINT NOT NULL" - } ] - }, - "description" : "OverAggregate(partitionBy=[c], orderBy=[rowtime ASC], window=[ RANG BETWEEN 10000 PRECEDING AND CURRENT ROW], select=[ts, a, b, c, rowtime, $5, LTCNT(a, $5) AS w0$o0, COUNT(a) AS w0$o1, $SUM0(a) AS w0$o2])", - "unboundedOverVersion" : 1 - }, { - "id" : 7, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 6, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 7, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "CALL", - "syntax" : "SPECIAL", - "internalName" : "$CASE$1", - "operands" : [ { - "kind" : "CALL", - "syntax" : "BINARY", - "internalName" : "$>$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 7, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "LITERAL", - "value" : 0, - "type" : "BIGINT NOT NULL" - } ], - "type" : "BOOLEAN NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 8, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "LITERAL", - "value" : null, - "type" : "BIGINT" - } ], - "type" : "BIGINT" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "EXPR$4", - "fieldType" : "BIGINT" - }, { - "name" : "EXPR$5", - "fieldType" : "BIGINT NOT NULL" - }, { - "name" : "EXPR$6", - "fieldType" : "BIGINT" - } ] - }, - "description" : "Calc(select=[c, ts, rowtime, b, w0$o0 AS EXPR$4, w0$o1 AS EXPR$5, CASE((w0$o1 > 0), w0$o2, null:BIGINT) AS EXPR$6])" - }, { - "id" : 8, - "type" : "stream-exec-sink_1", - "configuration" : { - "table.exec.sink.keyed-shuffle" : "AUTO", - "table.exec.sink.not-null-enforcer" : "ERROR", - "table.exec.sink.rowtime-inserter" : "ENABLED", - "table.exec.sink.type-length-enforcer" : "IGNORE", - "table.exec.sink.upsert-materialize" : "AUTO" - }, - "dynamicTableSink" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`MySink`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "a", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "ts", - "dataType" : "BIGINT" - }, { - "name" : "rowtime", - "dataType" : "TIMESTAMP(3)" - }, { - "name" : "b", - "dataType" : "INT" - }, { - "name" : "c", - "dataType" : "BIGINT" - }, { - "name" : "d", - "dataType" : "BIGINT" - }, { - "name" : "e", - "dataType" : "BIGINT" - } ], - "watermarkSpecs" : [ ] - }, - "partitionKeys" : [ ] - } - } - }, - "inputChangelogMode" : [ "INSERT" ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "EXPR$4", - "fieldType" : "BIGINT" - }, { - "name" : "EXPR$5", - "fieldType" : "BIGINT NOT NULL" - }, { - "name" : "EXPR$6", - "fieldType" : "BIGINT" - } ] - }, - "description" : "Sink(table=[default_catalog.default_database.MySink], fields=[c, ts, rowtime, b, EXPR$4, EXPR$5, EXPR$6])" - } ], - "edges" : [ { - "source" : 1, - "target" : 2, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 2, - "target" : 3, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 3, - "target" : 4, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 4, - "target" : 5, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 5, - "target" : 6, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 6, - "target" : 7, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 7, - "target" : 8, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - } ] -} diff --git a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-multiple-aggs-append-mode/plan/over-aggregate-non-time-range-unbounded-multiple-aggs-append-mode.json b/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-multiple-aggs-append-mode/plan/over-aggregate-non-time-range-unbounded-multiple-aggs-append-mode.json deleted file mode 100644 index 9942257306b27..0000000000000 --- a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-multiple-aggs-append-mode/plan/over-aggregate-non-time-range-unbounded-multiple-aggs-append-mode.json +++ /dev/null @@ -1,244 +0,0 @@ -{ - "flinkVersion" : "2.1", - "nodes" : [ { - "id" : 16, - "type" : "stream-exec-table-source-scan_1", - "scanTableSource" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`source_t`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "key", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "val", - "dataType" : "BIGINT" - }, { - "name" : "ts", - "dataType" : "BIGINT" - } ], - "watermarkSpecs" : [ ] - }, - "partitionKeys" : [ ] - } - } - }, - "outputType" : "ROW<`key` VARCHAR(2147483647), `val` BIGINT, `ts` BIGINT>", - "description" : "TableSourceScan(table=[[default_catalog, default_database, source_t]], fields=[key, val, ts])", - "inputProperties" : [ ] - }, { - "id" : 17, - "type" : "stream-exec-exchange_1", - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "HASH", - "keys" : [ 0 ] - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647), `val` BIGINT, `ts` BIGINT>", - "description" : "Exchange(distribution=[hash[key]])" - }, { - "id" : 18, - "type" : "stream-exec-over-aggregate_1", - "overSpec" : { - "partition" : { - "fields" : [ 0 ] - }, - "groups" : [ { - "orderBy" : { - "fields" : [ { - "index" : 1, - "isAscending" : true, - "nullIsLast" : false - } ] - }, - "isRows" : false, - "lowerBound" : { - "kind" : "UNBOUNDED_PRECEDING" - }, - "upperBound" : { - "kind" : "CURRENT_ROW" - }, - "aggCalls" : [ { - "name" : "w0$o0", - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : "w0$o1", - "internalName" : "$$SUM0$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : "w0$o2", - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ 0 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ] - } ], - "constants" : [ ], - "originalInputFields" : 3 - }, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647), `val` BIGINT, `ts` BIGINT, `w0$o0` BIGINT NOT NULL, `w0$o1` BIGINT NOT NULL, `w0$o2` BIGINT NOT NULL>", - "description" : "OverAggregate(partitionBy=[key], orderBy=[val ASC], window=[ RANG BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], select=[key, val, ts, COUNT(val) AS w0$o0, $SUM0(val) AS w0$o1, COUNT(key) AS w0$o2])", - "unboundedOverVersion" : 2 - }, { - "id" : 19, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "BIGINT" - }, { - "kind" : "CALL", - "syntax" : "SPECIAL", - "internalName" : "$CASE$1", - "operands" : [ { - "kind" : "CALL", - "syntax" : "BINARY", - "internalName" : "$>$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "LITERAL", - "value" : 0, - "type" : "BIGINT NOT NULL" - } ], - "type" : "BOOLEAN NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "LITERAL", - "value" : null, - "type" : "BIGINT" - } ], - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 5, - "type" : "BIGINT NOT NULL" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647), `val` BIGINT, `ts` BIGINT, `sum_val` BIGINT, `cnt_key` BIGINT NOT NULL>", - "description" : "Calc(select=[key, val, ts, CASE((w0$o0 > 0), w0$o1, null:BIGINT) AS sum_val, w0$o2 AS cnt_key])" - }, { - "id" : 20, - "type" : "stream-exec-sink_1", - "configuration" : { - "table.exec.sink.keyed-shuffle" : "AUTO", - "table.exec.sink.not-null-enforcer" : "ERROR", - "table.exec.sink.rowtime-inserter" : "ENABLED", - "table.exec.sink.type-length-enforcer" : "IGNORE", - "table.exec.sink.upsert-materialize" : "AUTO" - }, - "dynamicTableSink" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`sink_t`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "key", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "val", - "dataType" : "BIGINT" - }, { - "name" : "ts", - "dataType" : "BIGINT" - }, { - "name" : "sum_val", - "dataType" : "BIGINT" - }, { - "name" : "cnt_key", - "dataType" : "BIGINT" - } ], - "watermarkSpecs" : [ ] - }, - "partitionKeys" : [ ] - } - } - }, - "inputChangelogMode" : [ "INSERT", "UPDATE_BEFORE", "UPDATE_AFTER", "DELETE" ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647), `val` BIGINT, `ts` BIGINT, `sum_val` BIGINT, `cnt_key` BIGINT NOT NULL>", - "description" : "Sink(table=[default_catalog.default_database.sink_t], fields=[key, val, ts, sum_val, cnt_key])" - } ], - "edges" : [ { - "source" : 16, - "target" : 17, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 17, - "target" : 18, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 18, - "target" : 19, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 19, - "target" : 20, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - } ] -} \ No newline at end of file diff --git a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-sum-retract-mode-sink-primary-key/plan/over-aggregate-non-time-range-unbounded-sum-retract-mode-sink-primary-key.json b/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-sum-retract-mode-sink-primary-key/plan/over-aggregate-non-time-range-unbounded-sum-retract-mode-sink-primary-key.json deleted file mode 100644 index ccb5ed3801072..0000000000000 --- a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-sum-retract-mode-sink-primary-key/plan/over-aggregate-non-time-range-unbounded-sum-retract-mode-sink-primary-key.json +++ /dev/null @@ -1,238 +0,0 @@ -{ - "flinkVersion" : "2.1", - "nodes" : [ { - "id" : 31, - "type" : "stream-exec-table-source-scan_1", - "scanTableSource" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`source_t`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "key", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "val", - "dataType" : "BIGINT" - }, { - "name" : "ts", - "dataType" : "BIGINT" - } ], - "watermarkSpecs" : [ ] - }, - "partitionKeys" : [ ] - } - } - }, - "outputType" : "ROW<`key` VARCHAR(2147483647), `val` BIGINT, `ts` BIGINT>", - "description" : "TableSourceScan(table=[[default_catalog, default_database, source_t]], fields=[key, val, ts])", - "inputProperties" : [ ] - }, { - "id" : 32, - "type" : "stream-exec-exchange_1", - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "HASH", - "keys" : [ 0 ] - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647), `val` BIGINT, `ts` BIGINT>", - "description" : "Exchange(distribution=[hash[key]])" - }, { - "id" : 33, - "type" : "stream-exec-over-aggregate_1", - "overSpec" : { - "partition" : { - "fields" : [ 0 ] - }, - "groups" : [ { - "orderBy" : { - "fields" : [ { - "index" : 1, - "isAscending" : true, - "nullIsLast" : false - } ] - }, - "isRows" : false, - "lowerBound" : { - "kind" : "UNBOUNDED_PRECEDING" - }, - "upperBound" : { - "kind" : "CURRENT_ROW" - }, - "aggCalls" : [ { - "name" : "w0$o0", - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : "w0$o1", - "internalName" : "$$SUM0$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ] - } ], - "constants" : [ ], - "originalInputFields" : 3 - }, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647), `val` BIGINT, `ts` BIGINT, `w0$o0` BIGINT NOT NULL, `w0$o1` BIGINT NOT NULL>", - "description" : "OverAggregate(partitionBy=[key], orderBy=[val ASC], window=[ RANG BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], select=[key, val, ts, COUNT(val) AS w0$o0, $SUM0(val) AS w0$o1])", - "unboundedOverVersion" : 2 - }, { - "id" : 34, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "BIGINT" - }, { - "kind" : "CALL", - "syntax" : "SPECIAL", - "internalName" : "$CASE$1", - "operands" : [ { - "kind" : "CALL", - "syntax" : "BINARY", - "internalName" : "$>$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "LITERAL", - "value" : 0, - "type" : "BIGINT NOT NULL" - } ], - "type" : "BOOLEAN NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "LITERAL", - "value" : null, - "type" : "BIGINT" - } ], - "type" : "BIGINT" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647), `val` BIGINT, `ts` BIGINT, `sum_val` BIGINT>", - "description" : "Calc(select=[key, val, ts, CASE((w0$o0 > 0), w0$o1, null:BIGINT) AS sum_val])" - }, { - "id" : 35, - "type" : "stream-exec-sink_1", - "configuration" : { - "table.exec.sink.keyed-shuffle" : "AUTO", - "table.exec.sink.not-null-enforcer" : "ERROR", - "table.exec.sink.rowtime-inserter" : "ENABLED", - "table.exec.sink.type-length-enforcer" : "IGNORE", - "table.exec.sink.upsert-materialize" : "AUTO" - }, - "dynamicTableSink" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`sink_t`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "key", - "dataType" : "VARCHAR(2147483647) NOT NULL" - }, { - "name" : "val", - "dataType" : "BIGINT" - }, { - "name" : "ts", - "dataType" : "BIGINT" - }, { - "name" : "sum_val", - "dataType" : "BIGINT" - } ], - "watermarkSpecs" : [ ], - "primaryKey" : { - "name" : "PK_key", - "type" : "PRIMARY_KEY", - "columns" : [ "key" ] - } - }, - "partitionKeys" : [ ] - } - } - }, - "inputChangelogMode" : [ "INSERT", "UPDATE_BEFORE", "UPDATE_AFTER", "DELETE" ], - "requireUpsertMaterialize" : true, - "state" : [ { - "index" : 0, - "ttl" : "0 ms", - "name" : "sinkMaterializeState" - } ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647), `val` BIGINT, `ts` BIGINT, `sum_val` BIGINT>", - "description" : "Sink(table=[default_catalog.default_database.sink_t], fields=[key, val, ts, sum_val], upsertMaterialize=[true])" - } ], - "edges" : [ { - "source" : 31, - "target" : 32, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 32, - "target" : 33, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 33, - "target" : 34, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 34, - "target" : 35, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - } ] -} \ No newline at end of file diff --git a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-primary-key/plan/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-primary-key.json b/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-primary-key/plan/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-primary-key.json deleted file mode 100644 index fef7c006db7d8..0000000000000 --- a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-primary-key/plan/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-primary-key.json +++ /dev/null @@ -1,233 +0,0 @@ -{ - "flinkVersion" : "2.1", - "nodes" : [ { - "id" : 26, - "type" : "stream-exec-table-source-scan_1", - "scanTableSource" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`source_t`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "key", - "dataType" : "VARCHAR(2147483647) NOT NULL" - }, { - "name" : "val", - "dataType" : "BIGINT" - }, { - "name" : "ts", - "dataType" : "BIGINT" - } ], - "watermarkSpecs" : [ ], - "primaryKey" : { - "name" : "PK_key", - "type" : "PRIMARY_KEY", - "columns" : [ "key" ] - } - }, - "partitionKeys" : [ ] - } - } - }, - "outputType" : "ROW<`key` VARCHAR(2147483647) NOT NULL, `val` BIGINT, `ts` BIGINT>", - "description" : "TableSourceScan(table=[[default_catalog, default_database, source_t]], fields=[key, val, ts])", - "inputProperties" : [ ] - }, { - "id" : 27, - "type" : "stream-exec-exchange_1", - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "HASH", - "keys" : [ 0 ] - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647) NOT NULL, `val` BIGINT, `ts` BIGINT>", - "description" : "Exchange(distribution=[hash[key]])" - }, { - "id" : 28, - "type" : "stream-exec-over-aggregate_1", - "overSpec" : { - "partition" : { - "fields" : [ 0 ] - }, - "groups" : [ { - "orderBy" : { - "fields" : [ { - "index" : 1, - "isAscending" : true, - "nullIsLast" : false - } ] - }, - "isRows" : false, - "lowerBound" : { - "kind" : "UNBOUNDED_PRECEDING" - }, - "upperBound" : { - "kind" : "CURRENT_ROW" - }, - "aggCalls" : [ { - "name" : "w0$o0", - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : "w0$o1", - "internalName" : "$$SUM0$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ] - } ], - "constants" : [ ], - "originalInputFields" : 3 - }, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647) NOT NULL, `val` BIGINT, `ts` BIGINT, `w0$o0` BIGINT NOT NULL, `w0$o1` BIGINT NOT NULL>", - "description" : "OverAggregate(partitionBy=[key], orderBy=[val ASC], window=[ RANG BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], select=[key, val, ts, COUNT(val) AS w0$o0, $SUM0(val) AS w0$o1])", - "unboundedOverVersion" : 2 - }, { - "id" : 29, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "VARCHAR(2147483647) NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "BIGINT" - }, { - "kind" : "CALL", - "syntax" : "SPECIAL", - "internalName" : "$CASE$1", - "operands" : [ { - "kind" : "CALL", - "syntax" : "BINARY", - "internalName" : "$>$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "LITERAL", - "value" : 0, - "type" : "BIGINT NOT NULL" - } ], - "type" : "BOOLEAN NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "LITERAL", - "value" : null, - "type" : "BIGINT" - } ], - "type" : "BIGINT" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647) NOT NULL, `val` BIGINT, `ts` BIGINT, `sum_val` BIGINT>", - "description" : "Calc(select=[key, val, ts, CASE((w0$o0 > 0), w0$o1, null:BIGINT) AS sum_val])" - }, { - "id" : 30, - "type" : "stream-exec-sink_1", - "configuration" : { - "table.exec.sink.keyed-shuffle" : "AUTO", - "table.exec.sink.not-null-enforcer" : "ERROR", - "table.exec.sink.rowtime-inserter" : "ENABLED", - "table.exec.sink.type-length-enforcer" : "IGNORE", - "table.exec.sink.upsert-materialize" : "AUTO" - }, - "dynamicTableSink" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`sink_t`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "key", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "val", - "dataType" : "BIGINT" - }, { - "name" : "ts", - "dataType" : "BIGINT" - }, { - "name" : "sum_val", - "dataType" : "BIGINT" - } ], - "watermarkSpecs" : [ ] - }, - "partitionKeys" : [ ] - } - } - }, - "inputChangelogMode" : [ "INSERT", "UPDATE_BEFORE", "UPDATE_AFTER", "DELETE" ], - "inputUpsertKey" : [ 0 ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647) NOT NULL, `val` BIGINT, `ts` BIGINT, `sum_val` BIGINT>", - "description" : "Sink(table=[default_catalog.default_database.sink_t], fields=[key, val, ts, sum_val])" - } ], - "edges" : [ { - "source" : 26, - "target" : 27, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 27, - "target" : 28, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 28, - "target" : 29, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 29, - "target" : 30, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - } ] -} \ No newline at end of file diff --git a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-sink-primary-key-partition-by-non-pk/plan/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-sink-primary-key-partition-by-non-pk.json b/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-sink-primary-key-partition-by-non-pk/plan/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-sink-primary-key-partition-by-non-pk.json deleted file mode 100644 index 745f867722a4e..0000000000000 --- a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-sink-primary-key-partition-by-non-pk/plan/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-sink-primary-key-partition-by-non-pk.json +++ /dev/null @@ -1,243 +0,0 @@ -{ - "flinkVersion" : "2.1", - "nodes" : [ { - "id" : 44, - "type" : "stream-exec-table-source-scan_1", - "scanTableSource" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`source_t`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "key", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "val", - "dataType" : "BIGINT NOT NULL" - }, { - "name" : "ts", - "dataType" : "BIGINT" - } ], - "watermarkSpecs" : [ ], - "primaryKey" : { - "name" : "PK_val", - "type" : "PRIMARY_KEY", - "columns" : [ "val" ] - } - }, - "partitionKeys" : [ ] - } - } - }, - "outputType" : "ROW<`key` VARCHAR(2147483647), `val` BIGINT NOT NULL, `ts` BIGINT>", - "description" : "TableSourceScan(table=[[default_catalog, default_database, source_t]], fields=[key, val, ts])", - "inputProperties" : [ ] - }, { - "id" : 45, - "type" : "stream-exec-exchange_1", - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "HASH", - "keys" : [ 0 ] - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647), `val` BIGINT NOT NULL, `ts` BIGINT>", - "description" : "Exchange(distribution=[hash[key]])" - }, { - "id" : 46, - "type" : "stream-exec-over-aggregate_1", - "overSpec" : { - "partition" : { - "fields" : [ 0 ] - }, - "groups" : [ { - "orderBy" : { - "fields" : [ { - "index" : 1, - "isAscending" : true, - "nullIsLast" : false - } ] - }, - "isRows" : false, - "lowerBound" : { - "kind" : "UNBOUNDED_PRECEDING" - }, - "upperBound" : { - "kind" : "CURRENT_ROW" - }, - "aggCalls" : [ { - "name" : "w0$o0", - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ 2 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : "w0$o1", - "internalName" : "$$SUM0$1", - "argList" : [ 2 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ] - } ], - "constants" : [ ], - "originalInputFields" : 3 - }, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647), `val` BIGINT NOT NULL, `ts` BIGINT, `w0$o0` BIGINT NOT NULL, `w0$o1` BIGINT NOT NULL>", - "description" : "OverAggregate(partitionBy=[key], orderBy=[val ASC], window=[ RANG BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], select=[key, val, ts, COUNT(ts) AS w0$o0, $SUM0(ts) AS w0$o1])", - "unboundedOverVersion" : 2 - }, { - "id" : 47, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "BIGINT" - }, { - "kind" : "CALL", - "syntax" : "SPECIAL", - "internalName" : "$CASE$1", - "operands" : [ { - "kind" : "CALL", - "syntax" : "BINARY", - "internalName" : "$>$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "LITERAL", - "value" : 0, - "type" : "BIGINT NOT NULL" - } ], - "type" : "BOOLEAN NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "LITERAL", - "value" : null, - "type" : "BIGINT" - } ], - "type" : "BIGINT" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647), `val` BIGINT NOT NULL, `ts` BIGINT, `sum_ts` BIGINT>", - "description" : "Calc(select=[key, val, ts, CASE((w0$o0 > 0), w0$o1, null:BIGINT) AS sum_ts])" - }, { - "id" : 48, - "type" : "stream-exec-sink_1", - "configuration" : { - "table.exec.sink.keyed-shuffle" : "AUTO", - "table.exec.sink.not-null-enforcer" : "ERROR", - "table.exec.sink.rowtime-inserter" : "ENABLED", - "table.exec.sink.type-length-enforcer" : "IGNORE", - "table.exec.sink.upsert-materialize" : "AUTO" - }, - "dynamicTableSink" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`sink_t`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "key", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "val", - "dataType" : "BIGINT NOT NULL" - }, { - "name" : "ts", - "dataType" : "BIGINT" - }, { - "name" : "sum_val", - "dataType" : "BIGINT" - } ], - "watermarkSpecs" : [ ], - "primaryKey" : { - "name" : "PK_val", - "type" : "PRIMARY_KEY", - "columns" : [ "val" ] - } - }, - "partitionKeys" : [ ] - } - } - }, - "inputChangelogMode" : [ "INSERT", "UPDATE_BEFORE", "UPDATE_AFTER", "DELETE" ], - "requireUpsertMaterialize" : true, - "state" : [ { - "index" : 0, - "ttl" : "0 ms", - "name" : "sinkMaterializeState" - } ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647), `val` BIGINT NOT NULL, `ts` BIGINT, `sum_ts` BIGINT>", - "description" : "Sink(table=[default_catalog.default_database.sink_t], fields=[key, val, ts, sum_ts], upsertMaterialize=[true])" - } ], - "edges" : [ { - "source" : 44, - "target" : 45, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 45, - "target" : 46, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 46, - "target" : 47, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 47, - "target" : 48, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - } ] -} \ No newline at end of file diff --git a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-sink-primary-key/plan/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-sink-primary-key.json b/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-sink-primary-key/plan/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-sink-primary-key.json deleted file mode 100644 index 840f88ba26d17..0000000000000 --- a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-sink-primary-key/plan/over-aggregate-non-time-range-unbounded-sum-retract-mode-source-sink-primary-key.json +++ /dev/null @@ -1,307 +0,0 @@ -{ - "flinkVersion" : "2.1", - "nodes" : [ { - "id" : 36, - "type" : "stream-exec-table-source-scan_1", - "scanTableSource" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`source_t`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "key", - "dataType" : "VARCHAR(2147483647) NOT NULL" - }, { - "name" : "val", - "dataType" : "BIGINT" - }, { - "name" : "ts", - "dataType" : "BIGINT" - } ], - "watermarkSpecs" : [ ], - "primaryKey" : { - "name" : "PK_key", - "type" : "PRIMARY_KEY", - "columns" : [ "key" ] - } - }, - "partitionKeys" : [ ] - } - } - }, - "outputType" : "ROW<`key` VARCHAR(2147483647) NOT NULL, `val` BIGINT, `ts` BIGINT>", - "description" : "TableSourceScan(table=[[default_catalog, default_database, source_t]], fields=[key, val, ts])", - "inputProperties" : [ ] - }, { - "id" : 37, - "type" : "stream-exec-drop-update-before_1", - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647) NOT NULL, `val` BIGINT, `ts` BIGINT>", - "description" : "DropUpdateBefore" - }, { - "id" : 38, - "type" : "stream-exec-exchange_1", - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "HASH", - "keys" : [ 0 ] - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647) NOT NULL, `val` BIGINT, `ts` BIGINT>", - "description" : "Exchange(distribution=[hash[key]])" - }, { - "id" : 39, - "type" : "stream-exec-changelog-normalize_1", - "configuration" : { - "table.exec.mini-batch.enabled" : "false", - "table.exec.mini-batch.size" : "-1" - }, - "uniqueKeys" : [ 0 ], - "generateUpdateBefore" : true, - "state" : [ { - "index" : 0, - "ttl" : "0 ms", - "name" : "changelogNormalizeState" - } ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647) NOT NULL, `val` BIGINT, `ts` BIGINT>", - "description" : "ChangelogNormalize(key=[key])" - }, { - "id" : 40, - "type" : "stream-exec-exchange_1", - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "HASH", - "keys" : [ 0 ] - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647) NOT NULL, `val` BIGINT, `ts` BIGINT>", - "description" : "Exchange(distribution=[hash[key]])" - }, { - "id" : 41, - "type" : "stream-exec-over-aggregate_1", - "overSpec" : { - "partition" : { - "fields" : [ 0 ] - }, - "groups" : [ { - "orderBy" : { - "fields" : [ { - "index" : 1, - "isAscending" : true, - "nullIsLast" : false - } ] - }, - "isRows" : false, - "lowerBound" : { - "kind" : "UNBOUNDED_PRECEDING" - }, - "upperBound" : { - "kind" : "CURRENT_ROW" - }, - "aggCalls" : [ { - "name" : "w0$o0", - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : "w0$o1", - "internalName" : "$$SUM0$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ] - } ], - "constants" : [ ], - "originalInputFields" : 3 - }, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647) NOT NULL, `val` BIGINT, `ts` BIGINT, `w0$o0` BIGINT NOT NULL, `w0$o1` BIGINT NOT NULL>", - "description" : "OverAggregate(partitionBy=[key], orderBy=[val ASC], window=[ RANG BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], select=[key, val, ts, COUNT(val) AS w0$o0, $SUM0(val) AS w0$o1])", - "unboundedOverVersion" : 2 - }, { - "id" : 42, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "VARCHAR(2147483647) NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "BIGINT" - }, { - "kind" : "CALL", - "syntax" : "SPECIAL", - "internalName" : "$CASE$1", - "operands" : [ { - "kind" : "CALL", - "syntax" : "BINARY", - "internalName" : "$>$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "LITERAL", - "value" : 0, - "type" : "BIGINT NOT NULL" - } ], - "type" : "BOOLEAN NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "LITERAL", - "value" : null, - "type" : "BIGINT" - } ], - "type" : "BIGINT" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647) NOT NULL, `val` BIGINT, `ts` BIGINT, `sum_val` BIGINT>", - "description" : "Calc(select=[key, val, ts, CASE((w0$o0 > 0), w0$o1, null:BIGINT) AS sum_val])" - }, { - "id" : 43, - "type" : "stream-exec-sink_1", - "configuration" : { - "table.exec.sink.keyed-shuffle" : "AUTO", - "table.exec.sink.not-null-enforcer" : "ERROR", - "table.exec.sink.rowtime-inserter" : "ENABLED", - "table.exec.sink.type-length-enforcer" : "IGNORE", - "table.exec.sink.upsert-materialize" : "AUTO" - }, - "dynamicTableSink" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`sink_t`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "key", - "dataType" : "VARCHAR(2147483647) NOT NULL" - }, { - "name" : "val", - "dataType" : "BIGINT" - }, { - "name" : "ts", - "dataType" : "BIGINT" - }, { - "name" : "sum_val", - "dataType" : "BIGINT" - } ], - "watermarkSpecs" : [ ], - "primaryKey" : { - "name" : "PK_key", - "type" : "PRIMARY_KEY", - "columns" : [ "key" ] - } - }, - "partitionKeys" : [ ] - } - } - }, - "inputChangelogMode" : [ "INSERT", "UPDATE_AFTER", "DELETE" ], - "inputUpsertKey" : [ 0 ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`key` VARCHAR(2147483647) NOT NULL, `val` BIGINT, `ts` BIGINT, `sum_val` BIGINT>", - "description" : "Sink(table=[default_catalog.default_database.sink_t], fields=[key, val, ts, sum_val])" - } ], - "edges" : [ { - "source" : 36, - "target" : 37, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 37, - "target" : 38, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 38, - "target" : 39, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 39, - "target" : 40, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 40, - "target" : 41, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 41, - "target" : 42, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 42, - "target" : 43, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - } ] -} \ No newline at end of file diff --git a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-unbounded-partitioned-rows-with-out-of-order-records/plan/over-aggregate-unbounded-partitioned-rows-with-out-of-order-records.json b/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-unbounded-partitioned-rows-with-out-of-order-records/plan/over-aggregate-unbounded-partitioned-rows-with-out-of-order-records.json deleted file mode 100644 index 4ea0de87baf5b..0000000000000 --- a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-over-aggregate_1/over-aggregate-unbounded-partitioned-rows-with-out-of-order-records/plan/over-aggregate-unbounded-partitioned-rows-with-out-of-order-records.json +++ /dev/null @@ -1,581 +0,0 @@ -{ - "flinkVersion" : "1.20", - "nodes" : [ { - "id" : 17, - "type" : "stream-exec-table-source-scan_1", - "scanTableSource" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`MyTable`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "ts", - "dataType" : "BIGINT" - }, { - "name" : "a", - "dataType" : "BIGINT" - }, { - "name" : "b", - "dataType" : "INT" - }, { - "name" : "c", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "kind" : "COMPUTED", - "expression" : { - "rexNode" : { - "kind" : "CALL", - "internalName" : "$TO_TIMESTAMP$1", - "operands" : [ { - "kind" : "CALL", - "internalName" : "$FROM_UNIXTIME$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - } ], - "type" : "VARCHAR(2147483647)" - } ], - "type" : "TIMESTAMP(3)" - }, - "serializableString" : "TO_TIMESTAMP(FROM_UNIXTIME(`ts`))" - } - } ], - "watermarkSpecs" : [ { - "rowtimeAttribute" : "rowtime", - "expression" : { - "rexNode" : { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "TIMESTAMP(3)" - }, - "serializableString" : "`rowtime`" - } - } ] - }, - "partitionKeys" : [ ] - } - } - }, - "outputType" : "ROW<`ts` BIGINT, `a` BIGINT, `b` INT, `c` VARCHAR(2147483647)>", - "description" : "TableSourceScan(table=[[default_catalog, default_database, MyTable]], fields=[ts, a, b, c])", - "inputProperties" : [ ] - }, { - "id" : 18, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "CALL", - "internalName" : "$TO_TIMESTAMP$1", - "operands" : [ { - "kind" : "CALL", - "internalName" : "$FROM_UNIXTIME$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - } ], - "type" : "VARCHAR(2147483647)" - } ], - "type" : "TIMESTAMP(3)" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`ts` BIGINT, `a` BIGINT, `b` INT, `c` VARCHAR(2147483647), `rowtime` TIMESTAMP(3)>", - "description" : "Calc(select=[ts, a, b, c, TO_TIMESTAMP(FROM_UNIXTIME(ts)) AS rowtime])" - }, { - "id" : 19, - "type" : "stream-exec-watermark-assigner_1", - "watermarkExpr" : { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "TIMESTAMP(3)" - }, - "rowtimeFieldIndex" : 4, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "a", - "fieldType" : "BIGINT" - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ] - }, - "description" : "WatermarkAssigner(rowtime=[rowtime], watermark=[rowtime])" - }, { - "id" : 20, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "kind" : "LITERAL", - "value" : 4, - "type" : "BIGINT NOT NULL" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "a", - "fieldType" : "BIGINT" - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "$5", - "fieldType" : "BIGINT NOT NULL" - } ] - }, - "description" : "Calc(select=[ts, a, b, c, rowtime, 4 AS $5])" - }, { - "id" : 21, - "type" : "stream-exec-exchange_1", - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "HASH", - "keys" : [ 3 ] - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "a", - "fieldType" : "BIGINT" - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "$5", - "fieldType" : "BIGINT NOT NULL" - } ] - }, - "description" : "Exchange(distribution=[hash[c]])" - }, { - "id" : 22, - "type" : "stream-exec-over-aggregate_1", - "overSpec" : { - "partition" : { - "fields" : [ 3 ] - }, - "groups" : [ { - "orderBy" : { - "fields" : [ { - "index" : 4, - "isAscending" : true, - "nullIsLast" : false - } ] - }, - "isRows" : false, - "lowerBound" : { - "kind" : "UNBOUNDED_PRECEDING" - }, - "upperBound" : { - "kind" : "CURRENT_ROW" - }, - "aggCalls" : [ { - "name" : "w0$o0", - "systemName" : "LTCNT", - "argList" : [ 1, 5 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT" - }, { - "name" : "w0$o1", - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : "w0$o2", - "internalName" : "$$SUM0$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ] - } ], - "constants" : [ ], - "originalInputFields" : 6 - }, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "a", - "fieldType" : "BIGINT" - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "$5", - "fieldType" : "BIGINT NOT NULL" - }, { - "name" : "w0$o0", - "fieldType" : "BIGINT" - }, { - "name" : "w0$o1", - "fieldType" : "BIGINT NOT NULL" - }, { - "name" : "w0$o2", - "fieldType" : "BIGINT NOT NULL" - } ] - }, - "description" : "OverAggregate(partitionBy=[c], orderBy=[rowtime ASC], window=[ RANG BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], select=[ts, a, b, c, rowtime, $5, LTCNT(a, $5) AS w0$o0, COUNT(a) AS w0$o1, $SUM0(a) AS w0$o2])" - }, { - "id" : 23, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 6, - "type" : "BIGINT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 7, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "CALL", - "syntax" : "SPECIAL", - "internalName" : "$CASE$1", - "operands" : [ { - "kind" : "CALL", - "syntax" : "BINARY", - "internalName" : "$>$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 7, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "LITERAL", - "value" : 0, - "type" : "BIGINT NOT NULL" - } ], - "type" : "BOOLEAN NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 8, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "LITERAL", - "value" : null, - "type" : "BIGINT" - } ], - "type" : "BIGINT" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "EXPR$4", - "fieldType" : "BIGINT" - }, { - "name" : "EXPR$5", - "fieldType" : "BIGINT NOT NULL" - }, { - "name" : "EXPR$6", - "fieldType" : "BIGINT" - } ] - }, - "description" : "Calc(select=[c, ts, rowtime, b, w0$o0 AS EXPR$4, w0$o1 AS EXPR$5, CASE((w0$o1 > 0), w0$o2, null:BIGINT) AS EXPR$6])" - }, { - "id" : 24, - "type" : "stream-exec-sink_1", - "configuration" : { - "table.exec.sink.keyed-shuffle" : "AUTO", - "table.exec.sink.not-null-enforcer" : "ERROR", - "table.exec.sink.rowtime-inserter" : "ENABLED", - "table.exec.sink.type-length-enforcer" : "IGNORE", - "table.exec.sink.upsert-materialize" : "AUTO" - }, - "dynamicTableSink" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`MySink`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "a", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "ts", - "dataType" : "BIGINT" - }, { - "name" : "rowtime", - "dataType" : "TIMESTAMP(3)" - }, { - "name" : "b", - "dataType" : "INT" - }, { - "name" : "c", - "dataType" : "BIGINT" - }, { - "name" : "d", - "dataType" : "BIGINT" - }, { - "name" : "e", - "dataType" : "BIGINT" - } ], - "watermarkSpecs" : [ ] - }, - "partitionKeys" : [ ] - } - } - }, - "inputChangelogMode" : [ "INSERT" ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "c", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "ts", - "fieldType" : "BIGINT" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - }, { - "name" : "b", - "fieldType" : "INT" - }, { - "name" : "EXPR$4", - "fieldType" : "BIGINT" - }, { - "name" : "EXPR$5", - "fieldType" : "BIGINT NOT NULL" - }, { - "name" : "EXPR$6", - "fieldType" : "BIGINT" - } ] - }, - "description" : "Sink(table=[default_catalog.default_database.MySink], fields=[c, ts, rowtime, b, EXPR$4, EXPR$5, EXPR$6])" - } ], - "edges" : [ { - "source" : 17, - "target" : 18, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 18, - "target" : 19, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 19, - "target" : 20, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 20, - "target" : 21, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 21, - "target" : 22, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 22, - "target" : 23, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 23, - "target" : 24, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - } ] -} \ No newline at end of file diff --git a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-window-aggregate_1/window-aggregate-cumulate-event-time-with-offset-distinct-split/plan/window-aggregate-cumulate-event-time-with-offset-distinct-split.json b/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-window-aggregate_1/window-aggregate-cumulate-event-time-with-offset-distinct-split/plan/window-aggregate-cumulate-event-time-with-offset-distinct-split.json deleted file mode 100644 index 82863dbe6b133..0000000000000 --- a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-window-aggregate_1/window-aggregate-cumulate-event-time-with-offset-distinct-split/plan/window-aggregate-cumulate-event-time-with-offset-distinct-split.json +++ /dev/null @@ -1,912 +0,0 @@ -{ - "flinkVersion" : "1.19", - "nodes" : [ { - "id" : 168, - "type" : "stream-exec-table-source-scan_1", - "scanTableSource" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`window_source_t`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "ts", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "a_int", - "dataType" : "INT" - }, { - "name" : "b_double", - "dataType" : "DOUBLE" - }, { - "name" : "c_float", - "dataType" : "FLOAT" - }, { - "name" : "d_bigdec", - "dataType" : "DECIMAL(10, 2)" - }, { - "name" : "comment", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "name", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "kind" : "COMPUTED", - "expression" : { - "rexNode" : { - "kind" : "CALL", - "internalName" : "$TO_TIMESTAMP$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "VARCHAR(2147483647)" - } ], - "type" : "TIMESTAMP(3)" - }, - "serializableString" : "TO_TIMESTAMP(`ts`)" - } - }, { - "name" : "proctime", - "kind" : "COMPUTED", - "expression" : { - "rexNode" : { - "kind" : "CALL", - "internalName" : "$PROCTIME$1", - "operands" : [ ], - "type" : { - "type" : "TIMESTAMP_WITH_LOCAL_TIME_ZONE", - "nullable" : false, - "precision" : 3, - "kind" : "PROCTIME" - } - }, - "serializableString" : "PROCTIME()" - } - } ], - "watermarkSpecs" : [ { - "rowtimeAttribute" : "rowtime", - "expression" : { - "rexNode" : { - "kind" : "CALL", - "syntax" : "SPECIAL", - "internalName" : "$-$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 7, - "type" : "TIMESTAMP(3)" - }, { - "kind" : "LITERAL", - "value" : "1000", - "type" : "INTERVAL SECOND(6) NOT NULL" - } ], - "type" : "TIMESTAMP(3)" - }, - "serializableString" : "`rowtime` - INTERVAL '1' SECOND" - } - } ] - }, - "partitionKeys" : [ ] - } - }, - "abilities" : [ { - "type" : "ProjectPushDown", - "projectedFields" : [ [ 1 ], [ 5 ], [ 6 ], [ 0 ] ], - "producedType" : "ROW<`a_int` INT, `comment` VARCHAR(2147483647), `name` VARCHAR(2147483647), `ts` VARCHAR(2147483647)> NOT NULL" - }, { - "type" : "ReadingMetadata", - "metadataKeys" : [ ], - "producedType" : "ROW<`a_int` INT, `comment` VARCHAR(2147483647), `name` VARCHAR(2147483647), `ts` VARCHAR(2147483647)> NOT NULL" - } ] - }, - "outputType" : "ROW<`a_int` INT, `comment` VARCHAR(2147483647), `name` VARCHAR(2147483647), `ts` VARCHAR(2147483647)>", - "description" : "TableSourceScan(table=[[default_catalog, default_database, window_source_t, project=[a_int, comment, name, ts], metadata=[]]], fields=[a_int, comment, name, ts])", - "inputProperties" : [ ] - }, { - "id" : 169, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "CALL", - "internalName" : "$TO_TIMESTAMP$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "VARCHAR(2147483647)" - } ], - "type" : "TIMESTAMP(3)" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`a_int` INT, `comment` VARCHAR(2147483647), `name` VARCHAR(2147483647), `rowtime` TIMESTAMP(3)>", - "description" : "Calc(select=[a_int, comment, name, TO_TIMESTAMP(ts) AS rowtime])" - }, { - "id" : 170, - "type" : "stream-exec-watermark-assigner_1", - "watermarkExpr" : { - "kind" : "CALL", - "syntax" : "SPECIAL", - "internalName" : "$-$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "TIMESTAMP(3)" - }, { - "kind" : "LITERAL", - "value" : "1000", - "type" : "INTERVAL SECOND(6) NOT NULL" - } ], - "type" : "TIMESTAMP(3)" - }, - "rowtimeFieldIndex" : 3, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "a_int", - "fieldType" : "INT" - }, { - "name" : "comment", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "name", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ] - }, - "description" : "WatermarkAssigner(rowtime=[rowtime], watermark=[(rowtime - 1000:INTERVAL SECOND)])" - }, { - "id" : 171, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "CALL", - "internalName" : "$MOD$1", - "operands" : [ { - "kind" : "CALL", - "internalName" : "$HASH_CODE$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "VARCHAR(2147483647)" - } ], - "type" : "INT" - }, { - "kind" : "LITERAL", - "value" : 1024, - "type" : "INT NOT NULL" - } ], - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "name", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "a_int", - "fieldType" : "INT" - }, { - "name" : "comment", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "$f5", - "fieldType" : "INT" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ] - }, - "description" : "Calc(select=[name, a_int, comment, MOD(HASH_CODE(comment), 1024) AS $f5, rowtime])" - }, { - "id" : 172, - "type" : "stream-exec-local-window-aggregate_1", - "configuration" : { - "table.local-time-zone" : "default" - }, - "grouping" : [ 0, 3 ], - "aggCalls" : [ { - "name" : null, - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : null, - "internalName" : "$SUM$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "INT" - }, { - "name" : null, - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ 2 ], - "filterArg" : -1, - "distinct" : true, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ], - "windowing" : { - "strategy" : "TimeAttribute", - "window" : { - "type" : "CumulativeWindow", - "maxSize" : "PT15S", - "step" : "PT5S", - "offset" : "PT1S" - }, - "timeAttributeType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - }, - "timeAttributeIndex" : 4, - "isRowtime" : true - }, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "name", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "$f5", - "fieldType" : "INT" - }, { - "name" : "count1$0", - "fieldType" : "BIGINT" - }, { - "name" : "sum$1", - "fieldType" : "INT" - }, { - "name" : "count$2", - "fieldType" : "BIGINT" - }, { - "name" : "distinct$0", - "fieldType" : { - "type" : "RAW", - "class" : "org.apache.flink.table.api.dataview.MapView", - "externalDataType" : { - "logicalType" : { - "type" : "STRUCTURED_TYPE", - "implementationClass" : "org.apache.flink.table.api.dataview.MapView", - "attributes" : [ { - "name" : "map", - "attributeType" : "MAP" - } ] - }, - "fields" : [ { - "name" : "map", - "keyClass" : { - "conversionClass" : "org.apache.flink.table.data.StringData" - } - } ] - } - } - }, { - "name" : "$slice_end", - "fieldType" : "BIGINT" - } ] - }, - "description" : "LocalWindowAggregate(groupBy=[name, $f5], window=[CUMULATE(time_col=[rowtime], max_size=[15 s], step=[5 s], offset=[1 s])], select=[name, $f5, COUNT(*) AS count1$0, SUM(a_int) AS sum$1, COUNT(distinct$0 comment) AS count$2, DISTINCT(comment) AS distinct$0, slice_end('w$) AS $slice_end])" - }, { - "id" : 173, - "type" : "stream-exec-exchange_1", - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "HASH", - "keys" : [ 0, 1 ] - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "name", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "$f5", - "fieldType" : "INT" - }, { - "name" : "count1$0", - "fieldType" : "BIGINT" - }, { - "name" : "sum$1", - "fieldType" : "INT" - }, { - "name" : "count$2", - "fieldType" : "BIGINT" - }, { - "name" : "distinct$0", - "fieldType" : { - "type" : "RAW", - "class" : "org.apache.flink.table.api.dataview.MapView", - "externalDataType" : { - "logicalType" : { - "type" : "STRUCTURED_TYPE", - "implementationClass" : "org.apache.flink.table.api.dataview.MapView", - "attributes" : [ { - "name" : "map", - "attributeType" : "MAP" - } ] - }, - "fields" : [ { - "name" : "map", - "keyClass" : { - "conversionClass" : "org.apache.flink.table.data.StringData" - } - } ] - } - } - }, { - "name" : "$slice_end", - "fieldType" : "BIGINT" - } ] - }, - "description" : "Exchange(distribution=[hash[name, $f5]])" - }, { - "id" : 174, - "type" : "stream-exec-global-window-aggregate_1", - "configuration" : { - "table.local-time-zone" : "default" - }, - "grouping" : [ 0, 1 ], - "aggCalls" : [ { - "name" : null, - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : null, - "internalName" : "$SUM$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "INT" - }, { - "name" : null, - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ 2 ], - "filterArg" : -1, - "distinct" : true, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ], - "windowing" : { - "strategy" : "SliceAttached", - "window" : { - "type" : "CumulativeWindow", - "maxSize" : "PT15S", - "step" : "PT5S", - "offset" : "PT1S" - }, - "timeAttributeType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - }, - "sliceEnd" : 6, - "isRowtime" : true - }, - "namedWindowProperties" : [ { - "name" : "window_start", - "property" : { - "kind" : "WindowStart", - "reference" : { - "name" : "w$", - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } - } - }, { - "name" : "window_end", - "property" : { - "kind" : "WindowEnd", - "reference" : { - "name" : "w$", - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } - } - } ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "localAggInputRowType" : { - "type" : "ROW", - "fields" : [ { - "name" : "name", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "a_int", - "fieldType" : "INT" - }, { - "name" : "comment", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "$f5", - "fieldType" : "INT" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ] - }, - "outputType" : "ROW<`name` VARCHAR(2147483647), `$f5` INT, `$f2` BIGINT NOT NULL, `$f3` INT, `$f4` BIGINT NOT NULL, `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL>", - "description" : "GlobalWindowAggregate(groupBy=[name, $f5], window=[CUMULATE(slice_end=[$slice_end], max_size=[15 s], step=[5 s], offset=[1 s])], select=[name, $f5, COUNT(count1$0) AS $f2, SUM(sum$1) AS $f3, COUNT(distinct$0 count$2) AS $f4, start('w$) AS window_start, end('w$) AS window_end])" - }, { - "id" : 175, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 5, - "type" : "TIMESTAMP(3) NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 6, - "type" : "TIMESTAMP(3) NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "BIGINT NOT NULL" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`name` VARCHAR(2147483647), `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL, `$f5` INT, `$f4` BIGINT NOT NULL, `$f5_0` INT, `$f6` BIGINT NOT NULL>", - "description" : "Calc(select=[name, window_start, window_end, $f5, $f2 AS $f4, $f3 AS $f5_0, $f4 AS $f6])" - }, { - "id" : 176, - "type" : "stream-exec-local-window-aggregate_1", - "configuration" : { - "table.local-time-zone" : "default" - }, - "grouping" : [ 0 ], - "aggCalls" : [ { - "name" : null, - "internalName" : "$$SUM0$1", - "argList" : [ 4 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : null, - "internalName" : "$SUM$1", - "argList" : [ 5 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "INT" - }, { - "name" : null, - "internalName" : "$$SUM0$1", - "argList" : [ 6 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ], - "windowing" : { - "strategy" : "WindowAttached", - "window" : { - "type" : "CumulativeWindow", - "maxSize" : "PT15S", - "step" : "PT5S", - "offset" : "PT1S" - }, - "timeAttributeType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - }, - "windowStart" : 1, - "windowEnd" : 2, - "isRowtime" : true - }, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`name` VARCHAR(2147483647), `sum$0` BIGINT, `sum$1` INT, `sum$2` BIGINT, `$window_end` BIGINT>", - "description" : "LocalWindowAggregate(groupBy=[name], window=[CUMULATE(win_start=[window_start], win_end=[window_end], max_size=[15 s], step=[5 s], offset=[1 s])], select=[name, $SUM0($f4) AS sum$0, SUM($f5_0) AS sum$1, $SUM0($f6) AS sum$2, slice_end('w$) AS $window_end])" - }, { - "id" : 177, - "type" : "stream-exec-exchange_1", - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "HASH", - "keys" : [ 0 ] - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`name` VARCHAR(2147483647), `sum$0` BIGINT, `sum$1` INT, `sum$2` BIGINT, `$window_end` BIGINT>", - "description" : "Exchange(distribution=[hash[name]])" - }, { - "id" : 178, - "type" : "stream-exec-global-window-aggregate_1", - "configuration" : { - "table.local-time-zone" : "default" - }, - "grouping" : [ 0 ], - "aggCalls" : [ { - "name" : null, - "internalName" : "$$SUM0$1", - "argList" : [ 4 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : null, - "internalName" : "$SUM$1", - "argList" : [ 5 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "INT" - }, { - "name" : null, - "internalName" : "$$SUM0$1", - "argList" : [ 6 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ], - "windowing" : { - "strategy" : "WindowAttached", - "window" : { - "type" : "CumulativeWindow", - "maxSize" : "PT15S", - "step" : "PT5S", - "offset" : "PT1S" - }, - "timeAttributeType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - }, - "windowStart" : -1, - "windowEnd" : 4, - "isRowtime" : true - }, - "namedWindowProperties" : [ { - "name" : "window_start", - "property" : { - "kind" : "WindowStart", - "reference" : { - "name" : "w$", - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } - } - }, { - "name" : "window_end", - "property" : { - "kind" : "WindowEnd", - "reference" : { - "name" : "w$", - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } - } - } ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "localAggInputRowType" : "ROW<`name` VARCHAR(2147483647), `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL, `$f5` INT, `$f4` BIGINT NOT NULL, `$f5_0` INT, `$f6` BIGINT NOT NULL>", - "outputType" : "ROW<`name` VARCHAR(2147483647), `$f1` BIGINT NOT NULL, `$f2` INT, `$f3` BIGINT NOT NULL, `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL>", - "description" : "GlobalWindowAggregate(groupBy=[name], window=[CUMULATE(win_end=[$window_end], max_size=[15 s], step=[5 s], offset=[1 s])], select=[name, $SUM0(sum$0) AS $f1, SUM(sum$1) AS $f2, $SUM0(sum$2) AS $f3, start('w$) AS window_start, end('w$) AS window_end])" - }, { - "id" : 179, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "TIMESTAMP(3) NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 5, - "type" : "TIMESTAMP(3) NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "BIGINT NOT NULL" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`name` VARCHAR(2147483647), `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL, `$f3` BIGINT NOT NULL, `$f4` INT, `$f5` BIGINT NOT NULL>", - "description" : "Calc(select=[name, window_start, window_end, $f1 AS $f3, $f2 AS $f4, $f3 AS $f5])" - }, { - "id" : 180, - "type" : "stream-exec-sink_1", - "configuration" : { - "table.exec.sink.keyed-shuffle" : "AUTO", - "table.exec.sink.not-null-enforcer" : "ERROR", - "table.exec.sink.rowtime-inserter" : "ENABLED", - "table.exec.sink.type-length-enforcer" : "IGNORE", - "table.exec.sink.upsert-materialize" : "AUTO" - }, - "dynamicTableSink" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`window_sink_t`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "name", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "window_start", - "dataType" : "TIMESTAMP(3)" - }, { - "name" : "window_end", - "dataType" : "TIMESTAMP(3)" - }, { - "name" : "cnt", - "dataType" : "BIGINT" - }, { - "name" : "sum_int", - "dataType" : "INT" - }, { - "name" : "distinct_cnt", - "dataType" : "BIGINT" - } ], - "watermarkSpecs" : [ ] - }, - "partitionKeys" : [ ] - } - } - }, - "inputChangelogMode" : [ "INSERT" ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`name` VARCHAR(2147483647), `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL, `$f3` BIGINT NOT NULL, `$f4` INT, `$f5` BIGINT NOT NULL>", - "description" : "Sink(table=[default_catalog.default_database.window_sink_t], fields=[name, window_start, window_end, $f3, $f4, $f5])" - } ], - "edges" : [ { - "source" : 168, - "target" : 169, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 169, - "target" : 170, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 170, - "target" : 171, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 171, - "target" : 172, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 172, - "target" : 173, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 173, - "target" : 174, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 174, - "target" : 175, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 175, - "target" : 176, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 176, - "target" : 177, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 177, - "target" : 178, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 178, - "target" : 179, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 179, - "target" : 180, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - } ] -} \ No newline at end of file diff --git a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-window-aggregate_1/window-aggregate-hop-event-time-two-phase-with-offset-distinct-split/plan/window-aggregate-hop-event-time-two-phase-with-offset-distinct-split.json b/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-window-aggregate_1/window-aggregate-hop-event-time-two-phase-with-offset-distinct-split/plan/window-aggregate-hop-event-time-two-phase-with-offset-distinct-split.json deleted file mode 100644 index 265f89cbc6a90..0000000000000 --- a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-window-aggregate_1/window-aggregate-hop-event-time-two-phase-with-offset-distinct-split/plan/window-aggregate-hop-event-time-two-phase-with-offset-distinct-split.json +++ /dev/null @@ -1,912 +0,0 @@ -{ - "flinkVersion" : "1.19", - "nodes" : [ { - "id" : 108, - "type" : "stream-exec-table-source-scan_1", - "scanTableSource" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`window_source_t`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "ts", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "a_int", - "dataType" : "INT" - }, { - "name" : "b_double", - "dataType" : "DOUBLE" - }, { - "name" : "c_float", - "dataType" : "FLOAT" - }, { - "name" : "d_bigdec", - "dataType" : "DECIMAL(10, 2)" - }, { - "name" : "comment", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "name", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "kind" : "COMPUTED", - "expression" : { - "rexNode" : { - "kind" : "CALL", - "internalName" : "$TO_TIMESTAMP$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "VARCHAR(2147483647)" - } ], - "type" : "TIMESTAMP(3)" - }, - "serializableString" : "TO_TIMESTAMP(`ts`)" - } - }, { - "name" : "proctime", - "kind" : "COMPUTED", - "expression" : { - "rexNode" : { - "kind" : "CALL", - "internalName" : "$PROCTIME$1", - "operands" : [ ], - "type" : { - "type" : "TIMESTAMP_WITH_LOCAL_TIME_ZONE", - "nullable" : false, - "precision" : 3, - "kind" : "PROCTIME" - } - }, - "serializableString" : "PROCTIME()" - } - } ], - "watermarkSpecs" : [ { - "rowtimeAttribute" : "rowtime", - "expression" : { - "rexNode" : { - "kind" : "CALL", - "syntax" : "SPECIAL", - "internalName" : "$-$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 7, - "type" : "TIMESTAMP(3)" - }, { - "kind" : "LITERAL", - "value" : "1000", - "type" : "INTERVAL SECOND(6) NOT NULL" - } ], - "type" : "TIMESTAMP(3)" - }, - "serializableString" : "`rowtime` - INTERVAL '1' SECOND" - } - } ] - }, - "partitionKeys" : [ ] - } - }, - "abilities" : [ { - "type" : "ProjectPushDown", - "projectedFields" : [ [ 1 ], [ 5 ], [ 6 ], [ 0 ] ], - "producedType" : "ROW<`a_int` INT, `comment` VARCHAR(2147483647), `name` VARCHAR(2147483647), `ts` VARCHAR(2147483647)> NOT NULL" - }, { - "type" : "ReadingMetadata", - "metadataKeys" : [ ], - "producedType" : "ROW<`a_int` INT, `comment` VARCHAR(2147483647), `name` VARCHAR(2147483647), `ts` VARCHAR(2147483647)> NOT NULL" - } ] - }, - "outputType" : "ROW<`a_int` INT, `comment` VARCHAR(2147483647), `name` VARCHAR(2147483647), `ts` VARCHAR(2147483647)>", - "description" : "TableSourceScan(table=[[default_catalog, default_database, window_source_t, project=[a_int, comment, name, ts], metadata=[]]], fields=[a_int, comment, name, ts])", - "inputProperties" : [ ] - }, { - "id" : 109, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "CALL", - "internalName" : "$TO_TIMESTAMP$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "VARCHAR(2147483647)" - } ], - "type" : "TIMESTAMP(3)" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`a_int` INT, `comment` VARCHAR(2147483647), `name` VARCHAR(2147483647), `rowtime` TIMESTAMP(3)>", - "description" : "Calc(select=[a_int, comment, name, TO_TIMESTAMP(ts) AS rowtime])" - }, { - "id" : 110, - "type" : "stream-exec-watermark-assigner_1", - "watermarkExpr" : { - "kind" : "CALL", - "syntax" : "SPECIAL", - "internalName" : "$-$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "TIMESTAMP(3)" - }, { - "kind" : "LITERAL", - "value" : "1000", - "type" : "INTERVAL SECOND(6) NOT NULL" - } ], - "type" : "TIMESTAMP(3)" - }, - "rowtimeFieldIndex" : 3, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "a_int", - "fieldType" : "INT" - }, { - "name" : "comment", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "name", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ] - }, - "description" : "WatermarkAssigner(rowtime=[rowtime], watermark=[(rowtime - 1000:INTERVAL SECOND)])" - }, { - "id" : 111, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "CALL", - "internalName" : "$MOD$1", - "operands" : [ { - "kind" : "CALL", - "internalName" : "$HASH_CODE$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "VARCHAR(2147483647)" - } ], - "type" : "INT" - }, { - "kind" : "LITERAL", - "value" : 1024, - "type" : "INT NOT NULL" - } ], - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "name", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "a_int", - "fieldType" : "INT" - }, { - "name" : "comment", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "$f5", - "fieldType" : "INT" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ] - }, - "description" : "Calc(select=[name, a_int, comment, MOD(HASH_CODE(comment), 1024) AS $f5, rowtime])" - }, { - "id" : 112, - "type" : "stream-exec-local-window-aggregate_1", - "configuration" : { - "table.local-time-zone" : "default" - }, - "grouping" : [ 0, 3 ], - "aggCalls" : [ { - "name" : null, - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : null, - "internalName" : "$SUM$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "INT" - }, { - "name" : null, - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ 2 ], - "filterArg" : -1, - "distinct" : true, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ], - "windowing" : { - "strategy" : "TimeAttribute", - "window" : { - "type" : "HoppingWindow", - "size" : "PT10S", - "slide" : "PT5S", - "offset" : "PT1S" - }, - "timeAttributeType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - }, - "timeAttributeIndex" : 4, - "isRowtime" : true - }, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "name", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "$f5", - "fieldType" : "INT" - }, { - "name" : "count1$0", - "fieldType" : "BIGINT" - }, { - "name" : "sum$1", - "fieldType" : "INT" - }, { - "name" : "count$2", - "fieldType" : "BIGINT" - }, { - "name" : "distinct$0", - "fieldType" : { - "type" : "RAW", - "class" : "org.apache.flink.table.api.dataview.MapView", - "externalDataType" : { - "logicalType" : { - "type" : "STRUCTURED_TYPE", - "implementationClass" : "org.apache.flink.table.api.dataview.MapView", - "attributes" : [ { - "name" : "map", - "attributeType" : "MAP" - } ] - }, - "fields" : [ { - "name" : "map", - "keyClass" : { - "conversionClass" : "org.apache.flink.table.data.StringData" - } - } ] - } - } - }, { - "name" : "$slice_end", - "fieldType" : "BIGINT" - } ] - }, - "description" : "LocalWindowAggregate(groupBy=[name, $f5], window=[HOP(time_col=[rowtime], size=[10 s], slide=[5 s], offset=[1 s])], select=[name, $f5, COUNT(*) AS count1$0, SUM(a_int) AS sum$1, COUNT(distinct$0 comment) AS count$2, DISTINCT(comment) AS distinct$0, slice_end('w$) AS $slice_end])" - }, { - "id" : 113, - "type" : "stream-exec-exchange_1", - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "HASH", - "keys" : [ 0, 1 ] - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "name", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "$f5", - "fieldType" : "INT" - }, { - "name" : "count1$0", - "fieldType" : "BIGINT" - }, { - "name" : "sum$1", - "fieldType" : "INT" - }, { - "name" : "count$2", - "fieldType" : "BIGINT" - }, { - "name" : "distinct$0", - "fieldType" : { - "type" : "RAW", - "class" : "org.apache.flink.table.api.dataview.MapView", - "externalDataType" : { - "logicalType" : { - "type" : "STRUCTURED_TYPE", - "implementationClass" : "org.apache.flink.table.api.dataview.MapView", - "attributes" : [ { - "name" : "map", - "attributeType" : "MAP" - } ] - }, - "fields" : [ { - "name" : "map", - "keyClass" : { - "conversionClass" : "org.apache.flink.table.data.StringData" - } - } ] - } - } - }, { - "name" : "$slice_end", - "fieldType" : "BIGINT" - } ] - }, - "description" : "Exchange(distribution=[hash[name, $f5]])" - }, { - "id" : 114, - "type" : "stream-exec-global-window-aggregate_1", - "configuration" : { - "table.local-time-zone" : "default" - }, - "grouping" : [ 0, 1 ], - "aggCalls" : [ { - "name" : null, - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : null, - "internalName" : "$SUM$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "INT" - }, { - "name" : null, - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ 2 ], - "filterArg" : -1, - "distinct" : true, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ], - "windowing" : { - "strategy" : "SliceAttached", - "window" : { - "type" : "HoppingWindow", - "size" : "PT10S", - "slide" : "PT5S", - "offset" : "PT1S" - }, - "timeAttributeType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - }, - "sliceEnd" : 6, - "isRowtime" : true - }, - "namedWindowProperties" : [ { - "name" : "window_start", - "property" : { - "kind" : "WindowStart", - "reference" : { - "name" : "w$", - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } - } - }, { - "name" : "window_end", - "property" : { - "kind" : "WindowEnd", - "reference" : { - "name" : "w$", - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } - } - } ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "localAggInputRowType" : { - "type" : "ROW", - "fields" : [ { - "name" : "name", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "a_int", - "fieldType" : "INT" - }, { - "name" : "comment", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "$f5", - "fieldType" : "INT" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ] - }, - "outputType" : "ROW<`name` VARCHAR(2147483647), `$f5` INT, `$f2` BIGINT NOT NULL, `$f3` INT, `$f4` BIGINT NOT NULL, `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL>", - "description" : "GlobalWindowAggregate(groupBy=[name, $f5], window=[HOP(slice_end=[$slice_end], size=[10 s], slide=[5 s], offset=[1 s])], select=[name, $f5, COUNT(count1$0) AS $f2, SUM(sum$1) AS $f3, COUNT(distinct$0 count$2) AS $f4, start('w$) AS window_start, end('w$) AS window_end])" - }, { - "id" : 115, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 5, - "type" : "TIMESTAMP(3) NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 6, - "type" : "TIMESTAMP(3) NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "BIGINT NOT NULL" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`name` VARCHAR(2147483647), `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL, `$f5` INT, `$f4` BIGINT NOT NULL, `$f5_0` INT, `$f6` BIGINT NOT NULL>", - "description" : "Calc(select=[name, window_start, window_end, $f5, $f2 AS $f4, $f3 AS $f5_0, $f4 AS $f6])" - }, { - "id" : 116, - "type" : "stream-exec-local-window-aggregate_1", - "configuration" : { - "table.local-time-zone" : "default" - }, - "grouping" : [ 0 ], - "aggCalls" : [ { - "name" : null, - "internalName" : "$$SUM0$1", - "argList" : [ 4 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : null, - "internalName" : "$SUM$1", - "argList" : [ 5 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "INT" - }, { - "name" : null, - "internalName" : "$$SUM0$1", - "argList" : [ 6 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ], - "windowing" : { - "strategy" : "WindowAttached", - "window" : { - "type" : "HoppingWindow", - "size" : "PT10S", - "slide" : "PT5S", - "offset" : "PT1S" - }, - "timeAttributeType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - }, - "windowStart" : 1, - "windowEnd" : 2, - "isRowtime" : true - }, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`name` VARCHAR(2147483647), `sum$0` BIGINT, `sum$1` INT, `sum$2` BIGINT, `count1$3` BIGINT, `$window_end` BIGINT>", - "description" : "LocalWindowAggregate(groupBy=[name], window=[HOP(win_start=[window_start], win_end=[window_end], size=[10 s], slide=[5 s], offset=[1 s])], select=[name, $SUM0($f4) AS sum$0, SUM($f5_0) AS sum$1, $SUM0($f6) AS sum$2, COUNT(*) AS count1$3, slice_end('w$) AS $window_end])" - }, { - "id" : 117, - "type" : "stream-exec-exchange_1", - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "HASH", - "keys" : [ 0 ] - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`name` VARCHAR(2147483647), `sum$0` BIGINT, `sum$1` INT, `sum$2` BIGINT, `count1$3` BIGINT, `$window_end` BIGINT>", - "description" : "Exchange(distribution=[hash[name]])" - }, { - "id" : 118, - "type" : "stream-exec-global-window-aggregate_1", - "configuration" : { - "table.local-time-zone" : "default" - }, - "grouping" : [ 0 ], - "aggCalls" : [ { - "name" : null, - "internalName" : "$$SUM0$1", - "argList" : [ 4 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : null, - "internalName" : "$SUM$1", - "argList" : [ 5 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "INT" - }, { - "name" : null, - "internalName" : "$$SUM0$1", - "argList" : [ 6 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ], - "windowing" : { - "strategy" : "WindowAttached", - "window" : { - "type" : "HoppingWindow", - "size" : "PT10S", - "slide" : "PT5S", - "offset" : "PT1S" - }, - "timeAttributeType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - }, - "windowStart" : -1, - "windowEnd" : 5, - "isRowtime" : true - }, - "namedWindowProperties" : [ { - "name" : "window_start", - "property" : { - "kind" : "WindowStart", - "reference" : { - "name" : "w$", - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } - } - }, { - "name" : "window_end", - "property" : { - "kind" : "WindowEnd", - "reference" : { - "name" : "w$", - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } - } - } ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "localAggInputRowType" : "ROW<`name` VARCHAR(2147483647), `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL, `$f5` INT, `$f4` BIGINT NOT NULL, `$f5_0` INT, `$f6` BIGINT NOT NULL>", - "outputType" : "ROW<`name` VARCHAR(2147483647), `$f1` BIGINT NOT NULL, `$f2` INT, `$f3` BIGINT NOT NULL, `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL>", - "description" : "GlobalWindowAggregate(groupBy=[name], window=[HOP(win_end=[$window_end], size=[10 s], slide=[5 s], offset=[1 s])], select=[name, $SUM0(sum$0) AS $f1, SUM(sum$1) AS $f2, $SUM0(sum$2) AS $f3, COUNT(count1$3) AS window_start, start('w$) AS window_end])" - }, { - "id" : 119, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "TIMESTAMP(3) NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 5, - "type" : "TIMESTAMP(3) NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "BIGINT NOT NULL" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`name` VARCHAR(2147483647), `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL, `$f3` BIGINT NOT NULL, `$f4` INT, `$f5` BIGINT NOT NULL>", - "description" : "Calc(select=[name, window_start, window_end, $f1 AS $f3, $f2 AS $f4, $f3 AS $f5])" - }, { - "id" : 120, - "type" : "stream-exec-sink_1", - "configuration" : { - "table.exec.sink.keyed-shuffle" : "AUTO", - "table.exec.sink.not-null-enforcer" : "ERROR", - "table.exec.sink.rowtime-inserter" : "ENABLED", - "table.exec.sink.type-length-enforcer" : "IGNORE", - "table.exec.sink.upsert-materialize" : "AUTO" - }, - "dynamicTableSink" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`window_sink_t`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "name", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "window_start", - "dataType" : "TIMESTAMP(3)" - }, { - "name" : "window_end", - "dataType" : "TIMESTAMP(3)" - }, { - "name" : "cnt", - "dataType" : "BIGINT" - }, { - "name" : "sum_int", - "dataType" : "INT" - }, { - "name" : "distinct_cnt", - "dataType" : "BIGINT" - } ], - "watermarkSpecs" : [ ] - }, - "partitionKeys" : [ ] - } - } - }, - "inputChangelogMode" : [ "INSERT" ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`name` VARCHAR(2147483647), `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL, `$f3` BIGINT NOT NULL, `$f4` INT, `$f5` BIGINT NOT NULL>", - "description" : "Sink(table=[default_catalog.default_database.window_sink_t], fields=[name, window_start, window_end, $f3, $f4, $f5])" - } ], - "edges" : [ { - "source" : 108, - "target" : 109, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 109, - "target" : 110, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 110, - "target" : 111, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 111, - "target" : 112, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 112, - "target" : 113, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 113, - "target" : 114, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 114, - "target" : 115, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 115, - "target" : 116, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 116, - "target" : 117, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 117, - "target" : 118, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 118, - "target" : 119, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 119, - "target" : 120, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - } ] -} \ No newline at end of file diff --git a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-window-aggregate_1/window-aggregate-session-partition-event-time-two-phase-distinct-split/plan/window-aggregate-session-partition-event-time-two-phase-distinct-split.json b/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-window-aggregate_1/window-aggregate-session-partition-event-time-two-phase-distinct-split/plan/window-aggregate-session-partition-event-time-two-phase-distinct-split.json deleted file mode 100644 index c7955815d9bfb..0000000000000 --- a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-window-aggregate_1/window-aggregate-session-partition-event-time-two-phase-distinct-split/plan/window-aggregate-session-partition-event-time-two-phase-distinct-split.json +++ /dev/null @@ -1,499 +0,0 @@ -{ - "flinkVersion" : "1.20", - "nodes" : [ { - "id" : 1, - "type" : "stream-exec-table-source-scan_1", - "scanTableSource" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`cdc_window_source_t`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "ts", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "a_int", - "dataType" : "INT" - }, { - "name" : "b_double", - "dataType" : "DOUBLE" - }, { - "name" : "c_float", - "dataType" : "FLOAT" - }, { - "name" : "d_bigdec", - "dataType" : "DECIMAL(10, 2)" - }, { - "name" : "comment", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "name", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "kind" : "COMPUTED", - "expression" : { - "rexNode" : { - "kind" : "CALL", - "internalName" : "$TO_TIMESTAMP$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "VARCHAR(2147483647)" - } ], - "type" : "TIMESTAMP(3)" - }, - "serializableString" : "TO_TIMESTAMP(`ts`)" - } - }, { - "name" : "proctime", - "kind" : "COMPUTED", - "expression" : { - "rexNode" : { - "kind" : "CALL", - "internalName" : "$PROCTIME$1", - "operands" : [ ], - "type" : { - "type" : "TIMESTAMP_WITH_LOCAL_TIME_ZONE", - "nullable" : false, - "precision" : 3, - "kind" : "PROCTIME" - } - }, - "serializableString" : "PROCTIME()" - } - } ], - "watermarkSpecs" : [ { - "rowtimeAttribute" : "rowtime", - "expression" : { - "rexNode" : { - "kind" : "CALL", - "syntax" : "SPECIAL", - "internalName" : "$-$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 7, - "type" : "TIMESTAMP(3)" - }, { - "kind" : "LITERAL", - "value" : "1000", - "type" : "INTERVAL SECOND(6) NOT NULL" - } ], - "type" : "TIMESTAMP(3)" - }, - "serializableString" : "`rowtime` - INTERVAL '1' SECOND" - } - } ] - }, - "partitionKeys" : [ ] - } - }, - "abilities" : [ { - "type" : "ProjectPushDown", - "projectedFields" : [ [ 1 ], [ 5 ], [ 6 ], [ 0 ] ], - "producedType" : "ROW<`a_int` INT, `comment` VARCHAR(2147483647), `name` VARCHAR(2147483647), `ts` VARCHAR(2147483647)> NOT NULL" - }, { - "type" : "ReadingMetadata", - "metadataKeys" : [ ], - "producedType" : "ROW<`a_int` INT, `comment` VARCHAR(2147483647), `name` VARCHAR(2147483647), `ts` VARCHAR(2147483647)> NOT NULL" - } ] - }, - "outputType" : "ROW<`a_int` INT, `comment` VARCHAR(2147483647), `name` VARCHAR(2147483647), `ts` VARCHAR(2147483647)>", - "description" : "TableSourceScan(table=[[default_catalog, default_database, cdc_window_source_t, project=[a_int, comment, name, ts], metadata=[]]], fields=[a_int, comment, name, ts])", - "inputProperties" : [ ] - }, { - "id" : 2, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "CALL", - "internalName" : "$TO_TIMESTAMP$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "VARCHAR(2147483647)" - } ], - "type" : "TIMESTAMP(3)" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`a_int` INT, `comment` VARCHAR(2147483647), `name` VARCHAR(2147483647), `rowtime` TIMESTAMP(3)>", - "description" : "Calc(select=[a_int, comment, name, TO_TIMESTAMP(ts) AS rowtime])" - }, { - "id" : 3, - "type" : "stream-exec-watermark-assigner_1", - "watermarkExpr" : { - "kind" : "CALL", - "syntax" : "SPECIAL", - "internalName" : "$-$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "TIMESTAMP(3)" - }, { - "kind" : "LITERAL", - "value" : "1000", - "type" : "INTERVAL SECOND(6) NOT NULL" - } ], - "type" : "TIMESTAMP(3)" - }, - "rowtimeFieldIndex" : 3, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "a_int", - "fieldType" : "INT" - }, { - "name" : "comment", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "name", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ] - }, - "description" : "WatermarkAssigner(rowtime=[rowtime], watermark=[(rowtime - 1000:INTERVAL SECOND)])" - }, { - "id" : 4, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "name", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "a_int", - "fieldType" : "INT" - }, { - "name" : "comment", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ] - }, - "description" : "Calc(select=[name, a_int, comment, rowtime])" - }, { - "id" : 5, - "type" : "stream-exec-exchange_1", - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "HASH", - "keys" : [ 0 ] - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "name", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "a_int", - "fieldType" : "INT" - }, { - "name" : "comment", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ] - }, - "description" : "Exchange(distribution=[hash[name]])" - }, { - "id" : 6, - "type" : "stream-exec-window-aggregate_1", - "configuration" : { - "table.local-time-zone" : "default" - }, - "grouping" : [ 0 ], - "aggCalls" : [ { - "name" : "EXPR$3", - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : "EXPR$4", - "internalName" : "$SUM$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "INT" - }, { - "name" : "EXPR$5", - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ 2 ], - "filterArg" : -1, - "distinct" : true, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ], - "windowing" : { - "strategy" : "TimeAttribute", - "window" : { - "type" : "SessionWindow", - "gap" : "PT5S", - "partition_key_indices" : [ 0 ] - }, - "timeAttributeType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - }, - "timeAttributeIndex" : 3, - "isRowtime" : true - }, - "namedWindowProperties" : [ { - "name" : "window_start", - "property" : { - "kind" : "WindowStart", - "reference" : { - "name" : "w$", - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } - } - }, { - "name" : "window_end", - "property" : { - "kind" : "WindowEnd", - "reference" : { - "name" : "w$", - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } - } - } ], - "needRetraction" : true, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`name` VARCHAR(2147483647), `EXPR$3` BIGINT NOT NULL, `EXPR$4` INT, `EXPR$5` BIGINT NOT NULL, `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL>", - "description" : "WindowAggregate(groupBy=[name], window=[SESSION(time_col=[rowtime], gap=[5 s], partition keys=[name])], select=[name, COUNT_RETRACT(*) AS EXPR$3, SUM_RETRACT(a_int) AS EXPR$4, COUNT_RETRACT(DISTINCT comment) AS EXPR$5, start('w$) AS window_start, end('w$) AS window_end])" - }, { - "id" : 7, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "TIMESTAMP(3) NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 5, - "type" : "TIMESTAMP(3) NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "BIGINT NOT NULL" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`name` VARCHAR(2147483647), `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL, `EXPR$3` BIGINT NOT NULL, `EXPR$4` INT, `EXPR$5` BIGINT NOT NULL>", - "description" : "Calc(select=[name, window_start, window_end, EXPR$3, EXPR$4, EXPR$5])" - }, { - "id" : 8, - "type" : "stream-exec-sink_1", - "configuration" : { - "table.exec.sink.keyed-shuffle" : "AUTO", - "table.exec.sink.not-null-enforcer" : "ERROR", - "table.exec.sink.rowtime-inserter" : "ENABLED", - "table.exec.sink.type-length-enforcer" : "IGNORE", - "table.exec.sink.upsert-materialize" : "AUTO" - }, - "dynamicTableSink" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`window_sink_t`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "name", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "window_start", - "dataType" : "TIMESTAMP(3)" - }, { - "name" : "window_end", - "dataType" : "TIMESTAMP(3)" - }, { - "name" : "cnt", - "dataType" : "BIGINT" - }, { - "name" : "sum_int", - "dataType" : "INT" - }, { - "name" : "distinct_cnt", - "dataType" : "BIGINT" - } ], - "watermarkSpecs" : [ ] - }, - "partitionKeys" : [ ] - } - } - }, - "inputChangelogMode" : [ "INSERT" ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`name` VARCHAR(2147483647), `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL, `EXPR$3` BIGINT NOT NULL, `EXPR$4` INT, `EXPR$5` BIGINT NOT NULL>", - "description" : "Sink(table=[default_catalog.default_database.window_sink_t], fields=[name, window_start, window_end, EXPR$3, EXPR$4, EXPR$5])" - } ], - "edges" : [ { - "source" : 1, - "target" : 2, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 2, - "target" : 3, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 3, - "target" : 4, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 4, - "target" : 5, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 5, - "target" : 6, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 6, - "target" : 7, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 7, - "target" : 8, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - } ] -} \ No newline at end of file diff --git a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-window-aggregate_1/window-aggregate-tumble-event-time-two-phase-with-offset-distinct-split/plan/window-aggregate-tumble-event-time-two-phase-with-offset-distinct-split.json b/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-window-aggregate_1/window-aggregate-tumble-event-time-two-phase-with-offset-distinct-split/plan/window-aggregate-tumble-event-time-two-phase-with-offset-distinct-split.json deleted file mode 100644 index 1bef5bc9e7db9..0000000000000 --- a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-window-aggregate_1/window-aggregate-tumble-event-time-two-phase-with-offset-distinct-split/plan/window-aggregate-tumble-event-time-two-phase-with-offset-distinct-split.json +++ /dev/null @@ -1,908 +0,0 @@ -{ - "flinkVersion" : "1.19", - "nodes" : [ { - "id" : 48, - "type" : "stream-exec-table-source-scan_1", - "scanTableSource" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`window_source_t`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "ts", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "a_int", - "dataType" : "INT" - }, { - "name" : "b_double", - "dataType" : "DOUBLE" - }, { - "name" : "c_float", - "dataType" : "FLOAT" - }, { - "name" : "d_bigdec", - "dataType" : "DECIMAL(10, 2)" - }, { - "name" : "comment", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "name", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "kind" : "COMPUTED", - "expression" : { - "rexNode" : { - "kind" : "CALL", - "internalName" : "$TO_TIMESTAMP$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "VARCHAR(2147483647)" - } ], - "type" : "TIMESTAMP(3)" - }, - "serializableString" : "TO_TIMESTAMP(`ts`)" - } - }, { - "name" : "proctime", - "kind" : "COMPUTED", - "expression" : { - "rexNode" : { - "kind" : "CALL", - "internalName" : "$PROCTIME$1", - "operands" : [ ], - "type" : { - "type" : "TIMESTAMP_WITH_LOCAL_TIME_ZONE", - "nullable" : false, - "precision" : 3, - "kind" : "PROCTIME" - } - }, - "serializableString" : "PROCTIME()" - } - } ], - "watermarkSpecs" : [ { - "rowtimeAttribute" : "rowtime", - "expression" : { - "rexNode" : { - "kind" : "CALL", - "syntax" : "SPECIAL", - "internalName" : "$-$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 7, - "type" : "TIMESTAMP(3)" - }, { - "kind" : "LITERAL", - "value" : "1000", - "type" : "INTERVAL SECOND(6) NOT NULL" - } ], - "type" : "TIMESTAMP(3)" - }, - "serializableString" : "`rowtime` - INTERVAL '1' SECOND" - } - } ] - }, - "partitionKeys" : [ ] - } - }, - "abilities" : [ { - "type" : "ProjectPushDown", - "projectedFields" : [ [ 1 ], [ 5 ], [ 6 ], [ 0 ] ], - "producedType" : "ROW<`a_int` INT, `comment` VARCHAR(2147483647), `name` VARCHAR(2147483647), `ts` VARCHAR(2147483647)> NOT NULL" - }, { - "type" : "ReadingMetadata", - "metadataKeys" : [ ], - "producedType" : "ROW<`a_int` INT, `comment` VARCHAR(2147483647), `name` VARCHAR(2147483647), `ts` VARCHAR(2147483647)> NOT NULL" - } ] - }, - "outputType" : "ROW<`a_int` INT, `comment` VARCHAR(2147483647), `name` VARCHAR(2147483647), `ts` VARCHAR(2147483647)>", - "description" : "TableSourceScan(table=[[default_catalog, default_database, window_source_t, project=[a_int, comment, name, ts], metadata=[]]], fields=[a_int, comment, name, ts])", - "inputProperties" : [ ] - }, { - "id" : 49, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "CALL", - "internalName" : "$TO_TIMESTAMP$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "VARCHAR(2147483647)" - } ], - "type" : "TIMESTAMP(3)" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`a_int` INT, `comment` VARCHAR(2147483647), `name` VARCHAR(2147483647), `rowtime` TIMESTAMP(3)>", - "description" : "Calc(select=[a_int, comment, name, TO_TIMESTAMP(ts) AS rowtime])" - }, { - "id" : 50, - "type" : "stream-exec-watermark-assigner_1", - "watermarkExpr" : { - "kind" : "CALL", - "syntax" : "SPECIAL", - "internalName" : "$-$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "TIMESTAMP(3)" - }, { - "kind" : "LITERAL", - "value" : "1000", - "type" : "INTERVAL SECOND(6) NOT NULL" - } ], - "type" : "TIMESTAMP(3)" - }, - "rowtimeFieldIndex" : 3, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "a_int", - "fieldType" : "INT" - }, { - "name" : "comment", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "name", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ] - }, - "description" : "WatermarkAssigner(rowtime=[rowtime], watermark=[(rowtime - 1000:INTERVAL SECOND)])" - }, { - "id" : 51, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "CALL", - "internalName" : "$MOD$1", - "operands" : [ { - "kind" : "CALL", - "internalName" : "$HASH_CODE$1", - "operands" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "VARCHAR(2147483647)" - } ], - "type" : "INT" - }, { - "kind" : "LITERAL", - "value" : 1024, - "type" : "INT NOT NULL" - } ], - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "name", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "a_int", - "fieldType" : "INT" - }, { - "name" : "comment", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "$f5", - "fieldType" : "INT" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ] - }, - "description" : "Calc(select=[name, a_int, comment, MOD(HASH_CODE(comment), 1024) AS $f5, rowtime])" - }, { - "id" : 52, - "type" : "stream-exec-local-window-aggregate_1", - "configuration" : { - "table.local-time-zone" : "default" - }, - "grouping" : [ 0, 3 ], - "aggCalls" : [ { - "name" : null, - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : null, - "internalName" : "$SUM$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "INT" - }, { - "name" : null, - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ 2 ], - "filterArg" : -1, - "distinct" : true, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ], - "windowing" : { - "strategy" : "TimeAttribute", - "window" : { - "type" : "TumblingWindow", - "size" : "PT5S", - "offset" : "PT1S" - }, - "timeAttributeType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - }, - "timeAttributeIndex" : 4, - "isRowtime" : true - }, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "name", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "$f5", - "fieldType" : "INT" - }, { - "name" : "count1$0", - "fieldType" : "BIGINT" - }, { - "name" : "sum$1", - "fieldType" : "INT" - }, { - "name" : "count$2", - "fieldType" : "BIGINT" - }, { - "name" : "distinct$0", - "fieldType" : { - "type" : "RAW", - "class" : "org.apache.flink.table.api.dataview.MapView", - "externalDataType" : { - "logicalType" : { - "type" : "STRUCTURED_TYPE", - "implementationClass" : "org.apache.flink.table.api.dataview.MapView", - "attributes" : [ { - "name" : "map", - "attributeType" : "MAP" - } ] - }, - "fields" : [ { - "name" : "map", - "keyClass" : { - "conversionClass" : "org.apache.flink.table.data.StringData" - } - } ] - } - } - }, { - "name" : "$slice_end", - "fieldType" : "BIGINT" - } ] - }, - "description" : "LocalWindowAggregate(groupBy=[name, $f5], window=[TUMBLE(time_col=[rowtime], size=[5 s], offset=[1 s])], select=[name, $f5, COUNT(*) AS count1$0, SUM(a_int) AS sum$1, COUNT(distinct$0 comment) AS count$2, DISTINCT(comment) AS distinct$0, slice_end('w$) AS $slice_end])" - }, { - "id" : 53, - "type" : "stream-exec-exchange_1", - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "HASH", - "keys" : [ 0, 1 ] - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : { - "type" : "ROW", - "fields" : [ { - "name" : "name", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "$f5", - "fieldType" : "INT" - }, { - "name" : "count1$0", - "fieldType" : "BIGINT" - }, { - "name" : "sum$1", - "fieldType" : "INT" - }, { - "name" : "count$2", - "fieldType" : "BIGINT" - }, { - "name" : "distinct$0", - "fieldType" : { - "type" : "RAW", - "class" : "org.apache.flink.table.api.dataview.MapView", - "externalDataType" : { - "logicalType" : { - "type" : "STRUCTURED_TYPE", - "implementationClass" : "org.apache.flink.table.api.dataview.MapView", - "attributes" : [ { - "name" : "map", - "attributeType" : "MAP" - } ] - }, - "fields" : [ { - "name" : "map", - "keyClass" : { - "conversionClass" : "org.apache.flink.table.data.StringData" - } - } ] - } - } - }, { - "name" : "$slice_end", - "fieldType" : "BIGINT" - } ] - }, - "description" : "Exchange(distribution=[hash[name, $f5]])" - }, { - "id" : 54, - "type" : "stream-exec-global-window-aggregate_1", - "configuration" : { - "table.local-time-zone" : "default" - }, - "grouping" : [ 0, 1 ], - "aggCalls" : [ { - "name" : null, - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : null, - "internalName" : "$SUM$1", - "argList" : [ 1 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "INT" - }, { - "name" : null, - "syntax" : "FUNCTION_STAR", - "internalName" : "$COUNT$1", - "argList" : [ 2 ], - "filterArg" : -1, - "distinct" : true, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ], - "windowing" : { - "strategy" : "SliceAttached", - "window" : { - "type" : "TumblingWindow", - "size" : "PT5S", - "offset" : "PT1S" - }, - "timeAttributeType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - }, - "sliceEnd" : 6, - "isRowtime" : true - }, - "namedWindowProperties" : [ { - "name" : "window_start", - "property" : { - "kind" : "WindowStart", - "reference" : { - "name" : "w$", - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } - } - }, { - "name" : "window_end", - "property" : { - "kind" : "WindowEnd", - "reference" : { - "name" : "w$", - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } - } - } ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "localAggInputRowType" : { - "type" : "ROW", - "fields" : [ { - "name" : "name", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "a_int", - "fieldType" : "INT" - }, { - "name" : "comment", - "fieldType" : "VARCHAR(2147483647)" - }, { - "name" : "$f5", - "fieldType" : "INT" - }, { - "name" : "rowtime", - "fieldType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } ] - }, - "outputType" : "ROW<`name` VARCHAR(2147483647), `$f5` INT, `$f2` BIGINT NOT NULL, `$f3` INT, `$f4` BIGINT NOT NULL, `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL>", - "description" : "GlobalWindowAggregate(groupBy=[name, $f5], window=[TUMBLE(slice_end=[$slice_end], size=[5 s], offset=[1 s])], select=[name, $f5, COUNT(count1$0) AS $f2, SUM(sum$1) AS $f3, COUNT(distinct$0 count$2) AS $f4, start('w$) AS window_start, end('w$) AS window_end])" - }, { - "id" : 55, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 5, - "type" : "TIMESTAMP(3) NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 6, - "type" : "TIMESTAMP(3) NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "BIGINT NOT NULL" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`name` VARCHAR(2147483647), `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL, `$f5` INT, `$f4` BIGINT NOT NULL, `$f5_0` INT, `$f6` BIGINT NOT NULL>", - "description" : "Calc(select=[name, window_start, window_end, $f5, $f2 AS $f4, $f3 AS $f5_0, $f4 AS $f6])" - }, { - "id" : 56, - "type" : "stream-exec-local-window-aggregate_1", - "configuration" : { - "table.local-time-zone" : "default" - }, - "grouping" : [ 0 ], - "aggCalls" : [ { - "name" : null, - "internalName" : "$$SUM0$1", - "argList" : [ 4 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : null, - "internalName" : "$SUM$1", - "argList" : [ 5 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "INT" - }, { - "name" : null, - "internalName" : "$$SUM0$1", - "argList" : [ 6 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ], - "windowing" : { - "strategy" : "WindowAttached", - "window" : { - "type" : "TumblingWindow", - "size" : "PT5S", - "offset" : "PT1S" - }, - "timeAttributeType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - }, - "windowStart" : 1, - "windowEnd" : 2, - "isRowtime" : true - }, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`name` VARCHAR(2147483647), `sum$0` BIGINT, `sum$1` INT, `sum$2` BIGINT, `$window_end` BIGINT>", - "description" : "LocalWindowAggregate(groupBy=[name], window=[TUMBLE(win_start=[window_start], win_end=[window_end], size=[5 s], offset=[1 s])], select=[name, $SUM0($f4) AS sum$0, SUM($f5_0) AS sum$1, $SUM0($f6) AS sum$2, slice_end('w$) AS $window_end])" - }, { - "id" : 57, - "type" : "stream-exec-exchange_1", - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "HASH", - "keys" : [ 0 ] - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`name` VARCHAR(2147483647), `sum$0` BIGINT, `sum$1` INT, `sum$2` BIGINT, `$window_end` BIGINT>", - "description" : "Exchange(distribution=[hash[name]])" - }, { - "id" : 58, - "type" : "stream-exec-global-window-aggregate_1", - "configuration" : { - "table.local-time-zone" : "default" - }, - "grouping" : [ 0 ], - "aggCalls" : [ { - "name" : null, - "internalName" : "$$SUM0$1", - "argList" : [ 4 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - }, { - "name" : null, - "internalName" : "$SUM$1", - "argList" : [ 5 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "INT" - }, { - "name" : null, - "internalName" : "$$SUM0$1", - "argList" : [ 6 ], - "filterArg" : -1, - "distinct" : false, - "approximate" : false, - "ignoreNulls" : false, - "type" : "BIGINT NOT NULL" - } ], - "windowing" : { - "strategy" : "WindowAttached", - "window" : { - "type" : "TumblingWindow", - "size" : "PT5S", - "offset" : "PT1S" - }, - "timeAttributeType" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - }, - "windowStart" : -1, - "windowEnd" : 4, - "isRowtime" : true - }, - "namedWindowProperties" : [ { - "name" : "window_start", - "property" : { - "kind" : "WindowStart", - "reference" : { - "name" : "w$", - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } - } - }, { - "name" : "window_end", - "property" : { - "kind" : "WindowEnd", - "reference" : { - "name" : "w$", - "type" : { - "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", - "precision" : 3, - "kind" : "ROWTIME" - } - } - } - } ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "localAggInputRowType" : "ROW<`name` VARCHAR(2147483647), `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL, `$f5` INT, `$f4` BIGINT NOT NULL, `$f5_0` INT, `$f6` BIGINT NOT NULL>", - "outputType" : "ROW<`name` VARCHAR(2147483647), `$f1` BIGINT NOT NULL, `$f2` INT, `$f3` BIGINT NOT NULL, `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL>", - "description" : "GlobalWindowAggregate(groupBy=[name], window=[TUMBLE(win_end=[$window_end], size=[5 s], offset=[1 s])], select=[name, $SUM0(sum$0) AS $f1, SUM(sum$1) AS $f2, $SUM0(sum$2) AS $f3, start('w$) AS window_start, end('w$) AS window_end])" - }, { - "id" : 59, - "type" : "stream-exec-calc_1", - "projection" : [ { - "kind" : "INPUT_REF", - "inputIndex" : 0, - "type" : "VARCHAR(2147483647)" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 4, - "type" : "TIMESTAMP(3) NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 5, - "type" : "TIMESTAMP(3) NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 1, - "type" : "BIGINT NOT NULL" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 2, - "type" : "INT" - }, { - "kind" : "INPUT_REF", - "inputIndex" : 3, - "type" : "BIGINT NOT NULL" - } ], - "condition" : null, - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`name` VARCHAR(2147483647), `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL, `$f3` BIGINT NOT NULL, `$f4` INT, `$f5` BIGINT NOT NULL>", - "description" : "Calc(select=[name, window_start, window_end, $f1 AS $f3, $f2 AS $f4, $f3 AS $f5])" - }, { - "id" : 60, - "type" : "stream-exec-sink_1", - "configuration" : { - "table.exec.sink.keyed-shuffle" : "AUTO", - "table.exec.sink.not-null-enforcer" : "ERROR", - "table.exec.sink.rowtime-inserter" : "ENABLED", - "table.exec.sink.type-length-enforcer" : "IGNORE", - "table.exec.sink.upsert-materialize" : "AUTO" - }, - "dynamicTableSink" : { - "table" : { - "identifier" : "`default_catalog`.`default_database`.`window_sink_t`", - "resolvedTable" : { - "schema" : { - "columns" : [ { - "name" : "name", - "dataType" : "VARCHAR(2147483647)" - }, { - "name" : "window_start", - "dataType" : "TIMESTAMP(3)" - }, { - "name" : "window_end", - "dataType" : "TIMESTAMP(3)" - }, { - "name" : "cnt", - "dataType" : "BIGINT" - }, { - "name" : "sum_int", - "dataType" : "INT" - }, { - "name" : "distinct_cnt", - "dataType" : "BIGINT" - } ], - "watermarkSpecs" : [ ] - }, - "partitionKeys" : [ ] - } - } - }, - "inputChangelogMode" : [ "INSERT" ], - "inputProperties" : [ { - "requiredDistribution" : { - "type" : "UNKNOWN" - }, - "damBehavior" : "PIPELINED", - "priority" : 0 - } ], - "outputType" : "ROW<`name` VARCHAR(2147483647), `window_start` TIMESTAMP(3) NOT NULL, `window_end` TIMESTAMP(3) NOT NULL, `$f3` BIGINT NOT NULL, `$f4` INT, `$f5` BIGINT NOT NULL>", - "description" : "Sink(table=[default_catalog.default_database.window_sink_t], fields=[name, window_start, window_end, $f3, $f4, $f5])" - } ], - "edges" : [ { - "source" : 48, - "target" : 49, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 49, - "target" : 50, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 50, - "target" : 51, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 51, - "target" : 52, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 52, - "target" : 53, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 53, - "target" : 54, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 54, - "target" : 55, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 55, - "target" : 56, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 56, - "target" : 57, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 57, - "target" : 58, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 58, - "target" : 59, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - }, { - "source" : 59, - "target" : 60, - "shuffle" : { - "type" : "FORWARD" - }, - "shuffleMode" : "PIPELINED" - } ] -} \ No newline at end of file diff --git a/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/operators/join/adaptive/AdaptiveJoin.java b/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/operators/join/adaptive/AdaptiveJoin.java old mode 100755 new mode 100644 diff --git a/flink-tests/src/test/resources/testdata/terainput.txt b/flink-tests/src/test/resources/testdata/terainput.txt index 43cca3a66bc56..95f9088e74717 100644 --- a/flink-tests/src/test/resources/testdata/terainput.txt +++ b/flink-tests/src/test/resources/testdata/terainput.txt @@ -1,200 +1,200 @@ -AsfAGHM5om 00000000000000000000000000000000 0000222200002222000022220000222200002222000000001111 -~sHd0jDv6X 00000000000000000000000000000001 77779999444488885555CCCC777755555555BBBB666644446666 -uI^EYm8s=| 00000000000000000000000000000002 CCCCFFFF777799995555FFFF11112222999988884444DDDDFFFF -Q)JN)R9z-L 00000000000000000000000000000003 FFFF111100000000000066668888BBBB33333333AAAA1111CCCC -o4FoBkqERn 00000000000000000000000000000004 7777AAAABBBBBBBB22224444444499995555BBBB11118888DDDD -*}-Wz1;TD- 00000000000000000000000000000005 AAAA88883333BBBB888888884444777722227777999900002222 -0fssx}~[oB 00000000000000000000000000000006 FFFF999977774444AAAA7777EEEEDDDDAAAAAAAA99998888BBBB -mz4VCN@a#" 00000000000000000000000000000007 DDDDBBBB1111FFFF2222DDDDFFFFBBBBFFFF6666444477778888 -my+=5r7(N| 00000000000000000000000000000008 22226666CCCC66662222FFFF0000EEEE11118888444455559999 -5HA\z%qt{% 00000000000000000000000000000009 0000AAAA8888FFFF0000888800000000222255551111FFFFEEEE -`PkXQ<&+cc 0000000000000000000000000000000A 66667777FFFFFFFF2222FFFF3333FFFF22224444DDDD77777777 -GLSnlm0*P* 0000000000000000000000000000000B 5555EEEE1111BBBB55555555AAAABBBB33335555BBBB11114444 -swBzQ#' K< 0000000000000000000000000000000C DDDDEEEE777777777777EEEEBBBBEEEECCCCEEEE444466665555 -9SCzyMKz% 00000000000000000000000000000014 99997777777722222222999911116666DDDDBBBBCCCC3333DDDD -kXrG^ech1/ 00000000000000000000000000000015 FFFF2222AAAA66660000AAAA9999333322227777AAAA77772222 -v%^RG^ci[X 00000000000000000000000000000016 7777BBBBFFFF999922229999DDDD3333CCCCAAAACCCCBBBBBBBB -vi@>8jMaYX 00000000000000000000000000000017 CCCCFFFFFFFF6666AAAA999999997777AAAA6666000066668888 -}dA7*<6[lx 00000000000000000000000000000018 6666FFFF77775555CCCC88881111AAAA00000000CCCC00009999 ->Y$Kc)9DOf 00000000000000000000000000000019 AAAAEEEEEEEE222266660000AAAA00000000000044446666EEEE -uF?T;*:x0+ 0000000000000000000000000000001A 444466665555BBBB8888BBBB00000000BBBB00005555AAAA7777 -~%.@@,3>7+ 0000000000000000000000000000001B FFFFDDDD333399999999666644449999BBBB2222000000004444 -JPrAKc{W>j 0000000000000000000000000000001C 222211111111333355554444DDDDEEEE33339999999911115555 -*i@lF30|aO 0000000000000000000000000000001D CCCC88880000FFFFCCCCDDDDBBBB4444EEEE99990000AAAAAAAA -9UH>%FZbUK 0000000000000000000000000000001E DDDD00005555EEEE111199998888CCCC888877779999DDDD3333 --^1~=aYZC1 0000000000000000000000000000001F 11112222555599996666111144445555DDDDBBBB7777EEEE0000 -.\KqT&Z4i4 00000000000000000000000000000020 3333DDDDCCCC888888885555222299993333EEEEFFFF66661111 -9RtsPa gIN 00000000000000000000000000000021 555544440000AAAACCCC8888AAAA55552222DDDDBBBB22226666 -Fqy~]OATYw 00000000000000000000000000000022 9999CCCC0000888888884444333355553333BBBB55553333FFFF -Wj-%?e*2y\ 00000000000000000000000000000023 AAAA444477776666FFFF444455550000EEEE88883333FFFFCCCC -Rv]QHo9f6+ 00000000000000000000000000000024 99996666BBBB7777444466660000AAAADDDDDDDDAAAAEEEEDDDD -1 e!og=!hi 00000000000000000000000000000025 3333EEEE88887777CCCCEEEE777733337777DDDDFFFFEEEE2222 -N,gk>37c ( 00000000000000000000000000000026 DDDD11116666DDDD5555EEEE99996666AAAAAAAA3333EEEEBBBB -s.72Y.uzRN 00000000000000000000000000000027 0000CCCCFFFFAAAAAAAA11117777AAAA66662222000055558888 -j*0`gczW{u 00000000000000000000000000000028 9999DDDDCCCC8888AAAA999911111111BBBB66667777BBBB9999 -R+Sh=Kgd.6 00000000000000000000000000000029 DDDD0000BBBB77770000222200009999AAAADDDDAAAADDDDEEEE -x]w]=Dp6\s 0000000000000000000000000000002A 6666FFFFEEEEBBBBCCCC000033331111666677771111DDDD7777 -maU!Uo]He& 0000000000000000000000000000002B AAAA9999BBBB55557777CCCC6666EEEE555566668888FFFF4444 -smN$i pU-~ 0000000000000000000000000000002C AAAADDDDEEEE333388885555DDDD3333FFFFEEEE1111CCCC5555 -T}# `9Cseu 0000000000000000000000000000002D 4444FFFF777700001111EEEE999944447777444488881111AAAA -G2oMVHVK`! 0000000000000000000000000000002E 4444888844448888CCCC1111AAAA555577778888BBBB00003333 -(tv1'>|,s[ 0000000000000000000000000000002F 0000CCCC222277778888FFFFCCCCBBBB111177779999DDDD0000 -RE%Z{o)9E: 00000000000000000000000000000030 00002222AAAAEEEE444400008888CCCC3333DDDD555511111111 -'%:YY?@b+M 00000000000000000000000000000031 9999777777770000AAAA0000444433332222EEEE333399996666 -N(JuG%.`7c 00000000000000000000000000000032 66665555AAAA5555BBBBAAAAEEEE111111119999BBBB6666FFFF -`E$,xR{?Kc 00000000000000000000000000000033 7777AAAA222200008888CCCC3333AAAAFFFFAAAAEEEEEEEECCCC -jzu$Fn3ZN+ 00000000000000000000000000000034 55552222EEEE5555BBBBAAAA8888AAAA11110000DDDD9999DDDD -|xaPO\~!V* 00000000000000000000000000000035 EEEE2222EEEEFFFFEEEEBBBB2222BBBB9999AAAA999955552222 -GCU4gfl|&! 00000000000000000000000000000036 1111DDDD8888AAAA999999990000333377778888FFFF1111BBBB -JU9s03v&}o 00000000000000000000000000000037 7777555500001111DDDD3333111122221111AAAA444444448888 -D@v9""8"!` 00000000000000000000000000000038 2222BBBB55552222CCCC555533336666EEEE9999777766669999 -OffB8(#k@N 00000000000000000000000000000039 CCCC555555556666DDDDCCCC111111119999DDDD55554444EEEE --_) R'4T<" 0000000000000000000000000000003A BBBBCCCCEEEECCCCDDDD6666BBBB333377779999222200007777 -'z4P|n>\to 0000000000000000000000000000003B DDDD5555AAAA3333CCCC222233330000111133335555EEEE4444 -[!Nbx&X=+V 0000000000000000000000000000003C 77778888AAAA7777888844446666EEEECCCCBBBBEEEE77775555 -p?"\\6:W[' 0000000000000000000000000000003D 8888EEEE6666555599992222DDDD2222FFFFEEEE33338888AAAA -+2A^xP5dA- 0000000000000000000000000000003E CCCCBBBBFFFFFFFF99995555AAAAAAAA77771111000033333333 --cuJvy7;=h 0000000000000000000000000000003F 99993333CCCC8888EEEEAAAAEEEE5555CCCC7777FFFFCCCC0000 -ix^TQ-ma5o 00000000000000000000000000000047 88885555CCCC88889999888811110000BBBBEEEECCCC33338888 -E(g$5-WpBC 00000000000000000000000000000048 BBBB7777EEEE4444888866661111FFFF44449999BBBB11119999 -~\ptsn1L{/ 00000000000000000000000000000049 CCCC0000FFFFCCCC7777BBBB333300003333FFFF3333BBBBEEEE -YhlPk`q6SN 0000000000000000000000000000004A 00001111AAAABBBBAAAA66669999DDDD11116666666633337777 -WBzul,K** 0000000000000000000000000000004B 4444AAAADDDDEEEE33337777AAAA9999DDDD88886666DDDD4444 -q)epJsSLXU 0000000000000000000000000000004C 88887777999955558888AAAA9999111155552222FFFF22225555 -`WVkW&( /[ 0000000000000000000000000000004D FFFF999922221111DDDD9999AAAA9999FFFF66662222FFFFAAAA -HXg#Z^7@7/ 0000000000000000000000000000004E 777799999999DDDD44441111BBBB6666AAAA0000999966663333 --&8$lcXS$; 0000000000000000000000000000004F 333300004444AAAA3333666600009999DDDDCCCC9999BBBB0000 -^SpqwoVET; 00000000000000000000000000000050 BBBB77775555CCCC1111DDDD2222BBBB66669999CCCC77771111 -P-6Ybw3=a| 00000000000000000000000000000051 2222FFFFDDDDAAAACCCC3333EEEEBBBB8888EEEE000077776666 -a`:;ydJv)Y 00000000000000000000000000000052 55554444AAAAAAAA6666DDDD7777AAAAEEEE00003333CCCCFFFF -dO]G~-YGFJ 00000000000000000000000000000053 8888555533333333EEEE11113333AAAA444411110000CCCCCCCC -WM^;rvO/u] 00000000000000000000000000000054 BBBB00007777999977772222AAAA0000CCCCAAAAEEEEFFFFDDDD --WwU4BF*P< 00000000000000000000000000000055 BBBB8888EEEEEEEE55553333AAAA4444EEEE6666888833332222 -y'w/PZ!x"> 00000000000000000000000000000056 DDDD55554444AAAAAAAA444455553333AAAA444411117777BBBB -#jA`l-f@*f 00000000000000000000000000000057 4444AAAA2222AAAAEEEE55556666CCCC3333FFFF888822228888 -:!W.=v,f"z 00000000000000000000000000000058 444422223333666688886666BBBB4444888877772222CCCC9999 -"!r4ugwZcz 00000000000000000000000000000059 22226666CCCCEEEE6666FFFF888822220000333366662222EEEE -O?(|_dXq:X 0000000000000000000000000000005C 2222FFFFBBBB55552222444433332222444433333333DDDD5555 -(cb621Uv~( 0000000000000000000000000000005D 3333BBBB11110000FFFF9999BBBB6666CCCCCCCC66666666AAAA -hg5x s23L3 0000000000000000000000000000005E 22221111AAAA000011117777DDDD999933337777666699993333 -w5nn`wa'[p 0000000000000000000000000000005F 000099997777CCCC666677776666FFFF444455557777AAAA0000 -qeQNoB 2XG 00000000000000000000000000000060 0000EEEE66668888FFFF2222FFFFAAAAFFFF7777EEEE22221111 -6n>iMbi=gw 00000000000000000000000000000061 4444DDDDFFFF9999DDDD9999EEEEEEEECCCCDDDD4444EEEE6666 -uGz7S=#fh: 00000000000000000000000000000062 77771111DDDD222200000000BBBBDDDD222288885555FFFFFFFF -rd)x<>@@H| 00000000000000000000000000000063 99996666AAAABBBB7777CCCC4444DDDD555544447777BBBBCCCC -xEwa^:84K] 00000000000000000000000000000064 000099995555CCCC00000000EEEE5555BBBB1111DDDDAAAADDDD -':]$}b:Z$a 00000000000000000000000000000065 77775555DDDD4444DDDDAAAA66660000FFFF5555DDDDAAAA2222 -vZl"Ji^AO@ 00000000000000000000000000000066 3333777744444444EEEEEEEE11115555666600008888AAAABBBB -o%,!fSdRBa 00000000000000000000000000000067 11119999DDDDAAAA8888AAAA5555EEEE8888CCCC888811118888 -*+o@+t%u&; 00000000000000000000000000000068 22228888999922228888EEEE3333444455551111EEEE77779999 -(CoKUhfB9{ 00000000000000000000000000000069 1111BBBB9999CCCCFFFF3333CCCC777755559999CCCC9999EEEE -I>:9JQb_5T 0000000000000000000000000000006A AAAA66662222CCCCBBBB666600003333BBBB2222AAAA99997777 -eSzU!X,[%/ 0000000000000000000000000000006B AAAACCCC9999FFFFFFFFAAAA444455553333BBBB4444BBBB4444 -[QZ{a&TaCS 0000000000000000000000000000006C AAAA8888CCCC2222FFFFAAAA5555CCCC4444CCCCCCCC88885555 -?:Yp4%.K9n 0000000000000000000000000000006D BBBBCCCC5555111100007777FFFFAAAAFFFF0000DDDDDDDDAAAA -'_>/ 4v}8I 0000000000000000000000000000006E 1111EEEE000088886666333311115555666655557777CCCC3333 -KrNW.!5MP; 0000000000000000000000000000006F 2222AAAAEEEE33330000777711111111FFFF2222999999990000 -j17a3a#bH? 00000000000000000000000000000070 8888CCCCBBBBCCCC88881111EEEE33336666BBBB3333DDDD1111 -)o-QLHy(UO 00000000000000000000000000000071 3333BBBB444400002222EEEEFFFF333355556666DDDD55556666 -al;:OEKSH2 00000000000000000000000000000072 DDDDEEEE3333DDDDBBBB7777BBBB1111FFFF3333CCCC2222FFFF -I@L*`HMPfN 00000000000000000000000000000073 DDDD666699993333999977779999DDDD444488882222AAAACCCC -$kBiG 00000000000000000000000000000090 3333DDDD000044445555444444441111CCCC1111BBBB33331111 -V*W% x\&'q 00000000000000000000000000000091 8888DDDDBBBBAAAABBBB99997777EEEE00008888AAAA33336666 -0Jw^F-}sZr 00000000000000000000000000000092 4444BBBBDDDD2222FFFF888811117777DDDD444444448888FFFF -OLf_u|1d}9 00000000000000000000000000000093 DDDD1111AAAA9999FFFFDDDD9999BBBB9999000044448888CCCC -%V*"P*(/Ez 00000000000000000000000000000094 11110000CCCC666600002222CCCCEEEECCCCEEEE1111BBBBDDDD -jGdC5%yw;# 00000000000000000000000000000095 44449999FFFF00004444222222228888000099995555FFFF2222 -,uSW`H/pXh 00000000000000000000000000000096 8888BBBB111188885555CCCC7777BBBB7777111166663333BBBB -n],.INMkcA 00000000000000000000000000000097 DDDD77777777DDDD99993333FFFFDDDD9999CCCCFFFFEEEE8888 -(P=jd[R]&[ 00000000000000000000000000000098 BBBBAAAA99995555CCCC666688887777EEEE1111999988889999 -*%pAD!6FlS 00000000000000000000000000000099 AAAA777799994444DDDDEEEE6666DDDD2222AAAA7777EEEEEEEE -;u0nwOR{|e 0000000000000000000000000000009A CCCC5555FFFF1111000066667777EEEEEEEE1111777722227777 -X*)4\|>`b. 0000000000000000000000000000009B EEEE33339999CCCC2222999999999999FFFFDDDD777788884444 -#Yh\5HjDLp 0000000000000000000000000000009C 33338888EEEEFFFFDDDDDDDDAAAA7777EEEE0000EEEE99995555 -5Yh?d9@6(_ 0000000000000000000000000000009D 66667777FFFF333377774444FFFFDDDD99993333CCCC2222AAAA -W;mKiM[qVV 0000000000000000000000000000009E 111133334444AAAA55556666CCCCFFFF5555BBBB333355553333 -287P2iA6U: 0000000000000000000000000000009F 88880000FFFF000022220000BBBBCCCCFFFF3333777766660000 -Bj`e'4&VbD 000000000000000000000000000000A0 DDDD888811110000BBBB2222EEEEBBBB00004444CCCCEEEE1111 -Q[7 0VqTg~ 000000000000000000000000000000A1 8888666622222222222222221111DDDD11110000EEEEAAAA6666 -4Y8,(.X0:" 000000000000000000000000000000A2 DDDD7777DDDD5555AAAAEEEE7777DDDD444499996666BBBBFFFF -w)98*ZrTi* 000000000000000000000000000000A3 CCCC4444FFFF0000BBBBAAAA66667777CCCC4444BBBB7777CCCC -pHH7F#q@Tf 000000000000000000000000000000A4 0000FFFFEEEE9999DDDD9999AAAAFFFF9999AAAA00006666DDDD -89_ &UU^-f 000000000000000000000000000000A5 BBBB5555AAAAAAAAAAAA4444FFFF6666DDDD1111BBBB66662222 -IjYZ+5}$cH 000000000000000000000000000000A6 EEEE555577779999666611110000FFFF0000AAAADDDD6666BBBB -HP5;m7ydP, 000000000000000000000000000000A7 DDDDDDDDEEEE222255559999DDDDEEEE7777AAAAFFFFDDDD8888 -(\+CmQF;sh 000000000000000000000000000000A8 7777BBBB9999333377779999AAAAAAAACCCC1111555533339999 -`27}+u%$Z' 000000000000000000000000000000A9 22228888EEEE555511117777DDDD555522229999EEEE5555EEEE -D/XZpkvB{U 000000000000000000000000000000AA 8888BBBB77776666EEEEEEEE00007777BBBB2222333355557777 -6uxeaoldr{ 000000000000000000000000000000AB BBBB11110000CCCC8888222277779999AAAA4444000077774444 -3n glBr={a 000000000000000000000000000000AC EEEE99992222666644446666FFFF11112222FFFF777744445555 -M3Bn!0ePh9 000000000000000000000000000000AD 666611114444999933332222FFFFDDDD5555111133339999AAAA -^:W0]D07,s 000000000000000000000000000000AE 99995555EEEEEEEE33330000AAAA1111CCCC6666444488883333 -R%]??oXCf( 000000000000000000000000000000AF CCCCFFFF00004444222299997777CCCC11111111999955550000 -?jh!g'(/dI 000000000000000000000000000000B0 99994444FFFFBBBBFFFF777711113333EEEEDDDD222299991111 -,qy-T(O~$} 000000000000000000000000000000B1 44446666888800007777DDDDEEEEFFFF22223333777711116666 -g~]6jo( dQ 000000000000000000000000000000B2 DDDD888822224444EEEE88887777EEEE00001111CCCCEEEEFFFF -\1]of=Ah$q 000000000000000000000000000000B3 EEEEAAAACCCCCCCC77779999AAAACCCC9999999966666666CCCC -5,vYEm^\di 000000000000000000000000000000B4 1111EEEE3333EEEEBBBB8888111111111111777733331111DDDD -}uzyMKz% 00000000000000000000000000000014 99997777777722222222999911116666DDDDBBBBCCCC3333DDDD +kXrG^ech1/ 00000000000000000000000000000015 FFFF2222AAAA66660000AAAA9999333322227777AAAA77772222 +v%^RG^ci[X 00000000000000000000000000000016 7777BBBBFFFF999922229999DDDD3333CCCCAAAACCCCBBBBBBBB +vi@>8jMaYX 00000000000000000000000000000017 CCCCFFFFFFFF6666AAAA999999997777AAAA6666000066668888 +}dA7*<6[lx 00000000000000000000000000000018 6666FFFF77775555CCCC88881111AAAA00000000CCCC00009999 +>Y$Kc)9DOf 00000000000000000000000000000019 AAAAEEEEEEEE222266660000AAAA00000000000044446666EEEE +uF?T;*:x0+ 0000000000000000000000000000001A 444466665555BBBB8888BBBB00000000BBBB00005555AAAA7777 +~%.@@,3>7+ 0000000000000000000000000000001B FFFFDDDD333399999999666644449999BBBB2222000000004444 +JPrAKc{W>j 0000000000000000000000000000001C 222211111111333355554444DDDDEEEE33339999999911115555 +*i@lF30|aO 0000000000000000000000000000001D CCCC88880000FFFFCCCCDDDDBBBB4444EEEE99990000AAAAAAAA +9UH>%FZbUK 0000000000000000000000000000001E DDDD00005555EEEE111199998888CCCC888877779999DDDD3333 +-^1~=aYZC1 0000000000000000000000000000001F 11112222555599996666111144445555DDDDBBBB7777EEEE0000 +.\KqT&Z4i4 00000000000000000000000000000020 3333DDDDCCCC888888885555222299993333EEEEFFFF66661111 +9RtsPa gIN 00000000000000000000000000000021 555544440000AAAACCCC8888AAAA55552222DDDDBBBB22226666 +Fqy~]OATYw 00000000000000000000000000000022 9999CCCC0000888888884444333355553333BBBB55553333FFFF +Wj-%?e*2y\ 00000000000000000000000000000023 AAAA444477776666FFFF444455550000EEEE88883333FFFFCCCC +Rv]QHo9f6+ 00000000000000000000000000000024 99996666BBBB7777444466660000AAAADDDDDDDDAAAAEEEEDDDD +1 e!og=!hi 00000000000000000000000000000025 3333EEEE88887777CCCCEEEE777733337777DDDDFFFFEEEE2222 +N,gk>37c ( 00000000000000000000000000000026 DDDD11116666DDDD5555EEEE99996666AAAAAAAA3333EEEEBBBB +s.72Y.uzRN 00000000000000000000000000000027 0000CCCCFFFFAAAAAAAA11117777AAAA66662222000055558888 +j*0`gczW{u 00000000000000000000000000000028 9999DDDDCCCC8888AAAA999911111111BBBB66667777BBBB9999 +R+Sh=Kgd.6 00000000000000000000000000000029 DDDD0000BBBB77770000222200009999AAAADDDDAAAADDDDEEEE +x]w]=Dp6\s 0000000000000000000000000000002A 6666FFFFEEEEBBBBCCCC000033331111666677771111DDDD7777 +maU!Uo]He& 0000000000000000000000000000002B AAAA9999BBBB55557777CCCC6666EEEE555566668888FFFF4444 +smN$i pU-~ 0000000000000000000000000000002C AAAADDDDEEEE333388885555DDDD3333FFFFEEEE1111CCCC5555 +T}# `9Cseu 0000000000000000000000000000002D 4444FFFF777700001111EEEE999944447777444488881111AAAA +G2oMVHVK`! 0000000000000000000000000000002E 4444888844448888CCCC1111AAAA555577778888BBBB00003333 +(tv1'>|,s[ 0000000000000000000000000000002F 0000CCCC222277778888FFFFCCCCBBBB111177779999DDDD0000 +RE%Z{o)9E: 00000000000000000000000000000030 00002222AAAAEEEE444400008888CCCC3333DDDD555511111111 +'%:YY?@b+M 00000000000000000000000000000031 9999777777770000AAAA0000444433332222EEEE333399996666 +N(JuG%.`7c 00000000000000000000000000000032 66665555AAAA5555BBBBAAAAEEEE111111119999BBBB6666FFFF +`E$,xR{?Kc 00000000000000000000000000000033 7777AAAA222200008888CCCC3333AAAAFFFFAAAAEEEEEEEECCCC +jzu$Fn3ZN+ 00000000000000000000000000000034 55552222EEEE5555BBBBAAAA8888AAAA11110000DDDD9999DDDD +|xaPO\~!V* 00000000000000000000000000000035 EEEE2222EEEEFFFFEEEEBBBB2222BBBB9999AAAA999955552222 +GCU4gfl|&! 00000000000000000000000000000036 1111DDDD8888AAAA999999990000333377778888FFFF1111BBBB +JU9s03v&}o 00000000000000000000000000000037 7777555500001111DDDD3333111122221111AAAA444444448888 +D@v9""8"!` 00000000000000000000000000000038 2222BBBB55552222CCCC555533336666EEEE9999777766669999 +OffB8(#k@N 00000000000000000000000000000039 CCCC555555556666DDDDCCCC111111119999DDDD55554444EEEE +-_) R'4T<" 0000000000000000000000000000003A BBBBCCCCEEEECCCCDDDD6666BBBB333377779999222200007777 +'z4P|n>\to 0000000000000000000000000000003B DDDD5555AAAA3333CCCC222233330000111133335555EEEE4444 +[!Nbx&X=+V 0000000000000000000000000000003C 77778888AAAA7777888844446666EEEECCCCBBBBEEEE77775555 +p?"\\6:W[' 0000000000000000000000000000003D 8888EEEE6666555599992222DDDD2222FFFFEEEE33338888AAAA ++2A^xP5dA- 0000000000000000000000000000003E CCCCBBBBFFFFFFFF99995555AAAAAAAA77771111000033333333 +-cuJvy7;=h 0000000000000000000000000000003F 99993333CCCC8888EEEEAAAAEEEE5555CCCC7777FFFFCCCC0000 +ix^TQ-ma5o 00000000000000000000000000000047 88885555CCCC88889999888811110000BBBBEEEECCCC33338888 +E(g$5-WpBC 00000000000000000000000000000048 BBBB7777EEEE4444888866661111FFFF44449999BBBB11119999 +~\ptsn1L{/ 00000000000000000000000000000049 CCCC0000FFFFCCCC7777BBBB333300003333FFFF3333BBBBEEEE +YhlPk`q6SN 0000000000000000000000000000004A 00001111AAAABBBBAAAA66669999DDDD11116666666633337777 +WBzul,K** 0000000000000000000000000000004B 4444AAAADDDDEEEE33337777AAAA9999DDDD88886666DDDD4444 +q)epJsSLXU 0000000000000000000000000000004C 88887777999955558888AAAA9999111155552222FFFF22225555 +`WVkW&( /[ 0000000000000000000000000000004D FFFF999922221111DDDD9999AAAA9999FFFF66662222FFFFAAAA +HXg#Z^7@7/ 0000000000000000000000000000004E 777799999999DDDD44441111BBBB6666AAAA0000999966663333 +-&8$lcXS$; 0000000000000000000000000000004F 333300004444AAAA3333666600009999DDDDCCCC9999BBBB0000 +^SpqwoVET; 00000000000000000000000000000050 BBBB77775555CCCC1111DDDD2222BBBB66669999CCCC77771111 +P-6Ybw3=a| 00000000000000000000000000000051 2222FFFFDDDDAAAACCCC3333EEEEBBBB8888EEEE000077776666 +a`:;ydJv)Y 00000000000000000000000000000052 55554444AAAAAAAA6666DDDD7777AAAAEEEE00003333CCCCFFFF +dO]G~-YGFJ 00000000000000000000000000000053 8888555533333333EEEE11113333AAAA444411110000CCCCCCCC +WM^;rvO/u] 00000000000000000000000000000054 BBBB00007777999977772222AAAA0000CCCCAAAAEEEEFFFFDDDD +-WwU4BF*P< 00000000000000000000000000000055 BBBB8888EEEEEEEE55553333AAAA4444EEEE6666888833332222 +y'w/PZ!x"> 00000000000000000000000000000056 DDDD55554444AAAAAAAA444455553333AAAA444411117777BBBB +#jA`l-f@*f 00000000000000000000000000000057 4444AAAA2222AAAAEEEE55556666CCCC3333FFFF888822228888 +:!W.=v,f"z 00000000000000000000000000000058 444422223333666688886666BBBB4444888877772222CCCC9999 +"!r4ugwZcz 00000000000000000000000000000059 22226666CCCCEEEE6666FFFF888822220000333366662222EEEE +O?(|_dXq:X 0000000000000000000000000000005C 2222FFFFBBBB55552222444433332222444433333333DDDD5555 +(cb621Uv~( 0000000000000000000000000000005D 3333BBBB11110000FFFF9999BBBB6666CCCCCCCC66666666AAAA +hg5x s23L3 0000000000000000000000000000005E 22221111AAAA000011117777DDDD999933337777666699993333 +w5nn`wa'[p 0000000000000000000000000000005F 000099997777CCCC666677776666FFFF444455557777AAAA0000 +qeQNoB 2XG 00000000000000000000000000000060 0000EEEE66668888FFFF2222FFFFAAAAFFFF7777EEEE22221111 +6n>iMbi=gw 00000000000000000000000000000061 4444DDDDFFFF9999DDDD9999EEEEEEEECCCCDDDD4444EEEE6666 +uGz7S=#fh: 00000000000000000000000000000062 77771111DDDD222200000000BBBBDDDD222288885555FFFFFFFF +rd)x<>@@H| 00000000000000000000000000000063 99996666AAAABBBB7777CCCC4444DDDD555544447777BBBBCCCC +xEwa^:84K] 00000000000000000000000000000064 000099995555CCCC00000000EEEE5555BBBB1111DDDDAAAADDDD +':]$}b:Z$a 00000000000000000000000000000065 77775555DDDD4444DDDDAAAA66660000FFFF5555DDDDAAAA2222 +vZl"Ji^AO@ 00000000000000000000000000000066 3333777744444444EEEEEEEE11115555666600008888AAAABBBB +o%,!fSdRBa 00000000000000000000000000000067 11119999DDDDAAAA8888AAAA5555EEEE8888CCCC888811118888 +*+o@+t%u&; 00000000000000000000000000000068 22228888999922228888EEEE3333444455551111EEEE77779999 +(CoKUhfB9{ 00000000000000000000000000000069 1111BBBB9999CCCCFFFF3333CCCC777755559999CCCC9999EEEE +I>:9JQb_5T 0000000000000000000000000000006A AAAA66662222CCCCBBBB666600003333BBBB2222AAAA99997777 +eSzU!X,[%/ 0000000000000000000000000000006B AAAACCCC9999FFFFFFFFAAAA444455553333BBBB4444BBBB4444 +[QZ{a&TaCS 0000000000000000000000000000006C AAAA8888CCCC2222FFFFAAAA5555CCCC4444CCCCCCCC88885555 +?:Yp4%.K9n 0000000000000000000000000000006D BBBBCCCC5555111100007777FFFFAAAAFFFF0000DDDDDDDDAAAA +'_>/ 4v}8I 0000000000000000000000000000006E 1111EEEE000088886666333311115555666655557777CCCC3333 +KrNW.!5MP; 0000000000000000000000000000006F 2222AAAAEEEE33330000777711111111FFFF2222999999990000 +j17a3a#bH? 00000000000000000000000000000070 8888CCCCBBBBCCCC88881111EEEE33336666BBBB3333DDDD1111 +)o-QLHy(UO 00000000000000000000000000000071 3333BBBB444400002222EEEEFFFF333355556666DDDD55556666 +al;:OEKSH2 00000000000000000000000000000072 DDDDEEEE3333DDDDBBBB7777BBBB1111FFFF3333CCCC2222FFFF +I@L*`HMPfN 00000000000000000000000000000073 DDDD666699993333999977779999DDDD444488882222AAAACCCC +$kBiG 00000000000000000000000000000090 3333DDDD000044445555444444441111CCCC1111BBBB33331111 +V*W% x\&'q 00000000000000000000000000000091 8888DDDDBBBBAAAABBBB99997777EEEE00008888AAAA33336666 +0Jw^F-}sZr 00000000000000000000000000000092 4444BBBBDDDD2222FFFF888811117777DDDD444444448888FFFF +OLf_u|1d}9 00000000000000000000000000000093 DDDD1111AAAA9999FFFFDDDD9999BBBB9999000044448888CCCC +%V*"P*(/Ez 00000000000000000000000000000094 11110000CCCC666600002222CCCCEEEECCCCEEEE1111BBBBDDDD +jGdC5%yw;# 00000000000000000000000000000095 44449999FFFF00004444222222228888000099995555FFFF2222 +,uSW`H/pXh 00000000000000000000000000000096 8888BBBB111188885555CCCC7777BBBB7777111166663333BBBB +n],.INMkcA 00000000000000000000000000000097 DDDD77777777DDDD99993333FFFFDDDD9999CCCCFFFFEEEE8888 +(P=jd[R]&[ 00000000000000000000000000000098 BBBBAAAA99995555CCCC666688887777EEEE1111999988889999 +*%pAD!6FlS 00000000000000000000000000000099 AAAA777799994444DDDDEEEE6666DDDD2222AAAA7777EEEEEEEE +;u0nwOR{|e 0000000000000000000000000000009A CCCC5555FFFF1111000066667777EEEEEEEE1111777722227777 +X*)4\|>`b. 0000000000000000000000000000009B EEEE33339999CCCC2222999999999999FFFFDDDD777788884444 +#Yh\5HjDLp 0000000000000000000000000000009C 33338888EEEEFFFFDDDDDDDDAAAA7777EEEE0000EEEE99995555 +5Yh?d9@6(_ 0000000000000000000000000000009D 66667777FFFF333377774444FFFFDDDD99993333CCCC2222AAAA +W;mKiM[qVV 0000000000000000000000000000009E 111133334444AAAA55556666CCCCFFFF5555BBBB333355553333 +287P2iA6U: 0000000000000000000000000000009F 88880000FFFF000022220000BBBBCCCCFFFF3333777766660000 +Bj`e'4&VbD 000000000000000000000000000000A0 DDDD888811110000BBBB2222EEEEBBBB00004444CCCCEEEE1111 +Q[7 0VqTg~ 000000000000000000000000000000A1 8888666622222222222222221111DDDD11110000EEEEAAAA6666 +4Y8,(.X0:" 000000000000000000000000000000A2 DDDD7777DDDD5555AAAAEEEE7777DDDD444499996666BBBBFFFF +w)98*ZrTi* 000000000000000000000000000000A3 CCCC4444FFFF0000BBBBAAAA66667777CCCC4444BBBB7777CCCC +pHH7F#q@Tf 000000000000000000000000000000A4 0000FFFFEEEE9999DDDD9999AAAAFFFF9999AAAA00006666DDDD +89_ &UU^-f 000000000000000000000000000000A5 BBBB5555AAAAAAAAAAAA4444FFFF6666DDDD1111BBBB66662222 +IjYZ+5}$cH 000000000000000000000000000000A6 EEEE555577779999666611110000FFFF0000AAAADDDD6666BBBB +HP5;m7ydP, 000000000000000000000000000000A7 DDDDDDDDEEEE222255559999DDDDEEEE7777AAAAFFFFDDDD8888 +(\+CmQF;sh 000000000000000000000000000000A8 7777BBBB9999333377779999AAAAAAAACCCC1111555533339999 +`27}+u%$Z' 000000000000000000000000000000A9 22228888EEEE555511117777DDDD555522229999EEEE5555EEEE +D/XZpkvB{U 000000000000000000000000000000AA 8888BBBB77776666EEEEEEEE00007777BBBB2222333355557777 +6uxeaoldr{ 000000000000000000000000000000AB BBBB11110000CCCC8888222277779999AAAA4444000077774444 +3n glBr={a 000000000000000000000000000000AC EEEE99992222666644446666FFFF11112222FFFF777744445555 +M3Bn!0ePh9 000000000000000000000000000000AD 666611114444999933332222FFFFDDDD5555111133339999AAAA +^:W0]D07,s 000000000000000000000000000000AE 99995555EEEEEEEE33330000AAAA1111CCCC6666444488883333 +R%]??oXCf( 000000000000000000000000000000AF CCCCFFFF00004444222299997777CCCC11111111999955550000 +?jh!g'(/dI 000000000000000000000000000000B0 99994444FFFFBBBBFFFF777711113333EEEEDDDD222299991111 +,qy-T(O~$} 000000000000000000000000000000B1 44446666888800007777DDDDEEEEFFFF22223333777711116666 +g~]6jo( dQ 000000000000000000000000000000B2 DDDD888822224444EEEE88887777EEEE00001111CCCCEEEEFFFF +\1]of=Ah$q 000000000000000000000000000000B3 EEEEAAAACCCCCCCC77779999AAAACCCC9999999966666666CCCC +5,vYEm^\di 000000000000000000000000000000B4 1111EEEE3333EEEEBBBB8888111111111111777733331111DDDD +}u&2 -echo Error: JAVA_HOME not found in your environment. >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. >&2 -goto error - -:OkJHome -if exist "%JAVA_HOME%\bin\java.exe" goto init - -echo. >&2 -echo Error: JAVA_HOME is set to an invalid directory. >&2 -echo JAVA_HOME = "%JAVA_HOME%" >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. >&2 -goto error - -@REM ==== END VALIDATION ==== - -:init - -@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". -@REM Fallback to current working directory if not found. - -set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% -IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir - -set EXEC_DIR=%CD% -set WDIR=%EXEC_DIR% -:findBaseDir -IF EXIST "%WDIR%"\.mvn goto baseDirFound -cd .. -IF "%WDIR%"=="%CD%" goto baseDirNotFound -set WDIR=%CD% -goto findBaseDir - -:baseDirFound -set MAVEN_PROJECTBASEDIR=%WDIR% -cd "%EXEC_DIR%" -goto endDetectBaseDir - -:baseDirNotFound -set MAVEN_PROJECTBASEDIR=%EXEC_DIR% -cd "%EXEC_DIR%" - -:endDetectBaseDir - -IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig - -@setlocal EnableExtensions EnableDelayedExpansion -for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a -@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% - -:endReadAdditionalConfig - -SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" -set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" -set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar" - -FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( - IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B -) - -@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central -@REM This allows using the maven wrapper in projects that prohibit checking in binary data. -if exist %WRAPPER_JAR% ( - if "%MVNW_VERBOSE%" == "true" ( - echo Found %WRAPPER_JAR% - ) -) else ( - if not "%MVNW_REPOURL%" == "" ( - SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar" - ) - if "%MVNW_VERBOSE%" == "true" ( - echo Couldn't find %WRAPPER_JAR%, downloading it ... - echo Downloading from: %WRAPPER_URL% - ) - - powershell -Command "&{"^ - "$webclient = new-object System.Net.WebClient;"^ - "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ - "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ - "}"^ - "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ - "}" - if "%MVNW_VERBOSE%" == "true" ( - echo Finished downloading %WRAPPER_JAR% - ) -) -@REM End of extension - -@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file -SET WRAPPER_SHA_256_SUM="" -FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( - IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B -) -IF NOT %WRAPPER_SHA_256_SUM%=="" ( - powershell -Command "&{"^ - "Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash;"^ - "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ - "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ - " Write-Error 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ - " Write-Error 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ - " Write-Error 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ - " exit 1;"^ - "}"^ - "}" - if ERRORLEVEL 1 goto error -) - -@REM Provide a "standardized" way to retrieve the CLI args that will -@REM work with both Windows and non-Windows executions. -set MAVEN_CMD_LINE_ARGS=%* - -%MAVEN_JAVA_EXE% ^ - %JVM_CONFIG_MAVEN_PROPS% ^ - %MAVEN_OPTS% ^ - %MAVEN_DEBUG_OPTS% ^ - -classpath %WRAPPER_JAR% ^ - "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ - %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* -if ERRORLEVEL 1 goto error -goto end - -:error -set ERROR_CODE=1 - -:end -@endlocal & set ERROR_CODE=%ERROR_CODE% - -if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost -@REM check for post script, once with legacy .bat ending and once with .cmd ending -if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" -if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" -:skipRcPost - -@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' -if "%MAVEN_BATCH_PAUSE%"=="on" pause - -if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% - -cmd /C exit /B %ERROR_CODE% +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.3.2 +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. >&2 +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. >&2 +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. >&2 +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. >&2 +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %WRAPPER_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file +SET WRAPPER_SHA_256_SUM="" +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B +) +IF NOT %WRAPPER_SHA_256_SUM%=="" ( + powershell -Command "&{"^ + "Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash;"^ + "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ + "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ + " Write-Error 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ + " Write-Error 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ + " Write-Error 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ + " exit 1;"^ + "}"^ + "}" + if ERRORLEVEL 1 goto error +) + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/tools/azure-pipelines/build_properties.sh b/tools/azure-pipelines/build_properties.sh old mode 100755 new mode 100644 diff --git a/tools/azure-pipelines/cache_docker_images.sh b/tools/azure-pipelines/cache_docker_images.sh old mode 100755 new mode 100644 diff --git a/tools/azure-pipelines/create_build_artifact.sh b/tools/azure-pipelines/create_build_artifact.sh old mode 100755 new mode 100644 diff --git a/tools/azure-pipelines/debug_files_utils.sh b/tools/azure-pipelines/debug_files_utils.sh old mode 100755 new mode 100644 diff --git a/tools/azure-pipelines/free_disk_space.sh b/tools/azure-pipelines/free_disk_space.sh old mode 100755 new mode 100644 diff --git a/tools/azure-pipelines/unpack_build_artifact.sh b/tools/azure-pipelines/unpack_build_artifact.sh old mode 100755 new mode 100644 diff --git a/tools/azure-pipelines/uploading_watchdog.sh b/tools/azure-pipelines/uploading_watchdog.sh old mode 100755 new mode 100644 diff --git a/tools/change-version.sh b/tools/change-version.sh old mode 100755 new mode 100644 diff --git a/tools/ci/compile.sh b/tools/ci/compile.sh old mode 100755 new mode 100644 diff --git a/tools/ci/compile_ci.sh b/tools/ci/compile_ci.sh old mode 100755 new mode 100644 diff --git a/tools/ci/deploy_nightly_to_s3.sh b/tools/ci/deploy_nightly_to_s3.sh old mode 100755 new mode 100644 diff --git a/tools/ci/docs.sh b/tools/ci/docs.sh old mode 100755 new mode 100644 diff --git a/tools/ci/license_check.sh b/tools/ci/license_check.sh old mode 100755 new mode 100644 diff --git a/tools/ci/maven-utils.sh b/tools/ci/maven-utils.sh old mode 100755 new mode 100644 diff --git a/tools/ci/shade.sh b/tools/ci/shade.sh old mode 100755 new mode 100644 diff --git a/tools/ci/stage.sh b/tools/ci/stage.sh old mode 100755 new mode 100644 diff --git a/tools/ci/test_controller.sh b/tools/ci/test_controller.sh old mode 100755 new mode 100644 diff --git a/tools/ci/verify_bundled_optional.sh b/tools/ci/verify_bundled_optional.sh old mode 100755 new mode 100644 diff --git a/tools/ci/verify_scala_suffixes.sh b/tools/ci/verify_scala_suffixes.sh old mode 100755 new mode 100644 diff --git a/tools/ci/watchdog.sh b/tools/ci/watchdog.sh old mode 100755 new mode 100644 diff --git a/tools/list_deps.py b/tools/list_deps.py old mode 100755 new mode 100644 diff --git a/tools/releasing/collect_license_files.sh b/tools/releasing/collect_license_files.sh old mode 100755 new mode 100644 diff --git a/tools/releasing/create_binary_release.sh b/tools/releasing/create_binary_release.sh old mode 100755 new mode 100644 diff --git a/tools/releasing/create_preview_branch.sh b/tools/releasing/create_preview_branch.sh old mode 100755 new mode 100644 diff --git a/tools/releasing/create_release_branch.sh b/tools/releasing/create_release_branch.sh old mode 100755 new mode 100644 diff --git a/tools/releasing/create_snapshot_branch.sh b/tools/releasing/create_snapshot_branch.sh old mode 100755 new mode 100644 diff --git a/tools/releasing/create_source_release.sh b/tools/releasing/create_source_release.sh old mode 100755 new mode 100644 diff --git a/tools/releasing/deploy_staging_jars.sh b/tools/releasing/deploy_staging_jars.sh old mode 100755 new mode 100644 diff --git a/tools/releasing/update_branch_version.sh b/tools/releasing/update_branch_version.sh old mode 100755 new mode 100644 diff --git a/tools/releasing/update_japicmp_configuration.sh b/tools/releasing/update_japicmp_configuration.sh old mode 100755 new mode 100644 diff --git a/tools/update_notice_year.sh b/tools/update_notice_year.sh old mode 100755 new mode 100644