This is an automated email from the ASF dual-hosted git repository.
dependabot[bot] pushed a change to branch
dependabot/github_actions/actions/checkout-7
in repository https://gitbox.apache.org/repos/asf/gluten.git
omit 9c91f52009 Bump actions/checkout from 4 to 7
add 3801653fe5 [GLUTEN-10134][VL] Add runQueryAndCheck helper for ANSI
mode tests (#13184)
add dbed462035 [GLUTEN-11916][VL][TEST] Enable exists-orderby-limit.sql on
Spark 4.1 with SPARK-57125 workaround (#13265)
add 9747480c38 feat(gluten-flink): support stateless scalar expressions in
planner (#12666)
add 9ff26468b2 [MINOR][VL] Fix spill limit configuration key casing
(#13285)
add 91ae3b22fc [VL] Eager aggregation: Support partial-merge mode (#13284)
add a572f32e8c [VL][CI] Run all Iceberg Spark tests for Spark 3.5 (#13224)
add b11eaa78e8 [GLUTEN-6887][VL] Daily Update Velox Version
(dft-2026_10_14) (#13277)
add 96883745bc [VL] Build librdkafka from source for non vcpkg builds
(#13270)
add 30548fe6df [VL] Add iceberg UT CI whitelist (#13323)
add 57a95dc847 [GLUTEN-12743][VL] Fall back Delta scans requiring
generated DV metadata (#13042)
add 020211a4b4 [GLUTEN-12743][VL] Preserve transaction observers in native
Delta commands (#13134)
add 27aa68207a [GLUTEN-12569][CORE] Add enhanced DSv2 filter test suites
for Spark 4.2 (#13164)
add d3325b0000 [GLUTEN-13174][VL] Re-enable the Spark 4.2
storage-partitioned join tests (#13243)
add 822c6da2bb [CORE] Keep struct field names in udfLibraryPaths UDF
signatures (#13274)
add eb2f5ac006 [GLUTEN-6887][VL] Daily Update Velox Version (2026_10_15)
(#13289)
add 9e9638d54f Bump org.apache.spark:spark-core_2.12 in /tools/gluten-it
(#13325)
add 60200390f4 [GLUTEN-12712][CORE] Derive Iceberg getRootPathsInternal
from actual scanned file paths (#12833)
add b1622d97de Bump actions/checkout from 4 to 7
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (9c91f52009)
\
N -- N -- N
refs/heads/dependabot/github_actions/actions/checkout-7 (b1622d97de)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
No new revisions were added by this update.
Summary of changes:
.github/workflows/docker_image.yml | 25 -
.github/workflows/iceberg_spark_ut.yml | 263 +++
.github/workflows/iceberg_upstream_revision.yml | 172 ++
.../util/delta-spark-ut/known-failures.txt | 73 -
.../workflows/util/iceberg-upstream/baseline.py | 378 ++++
.../util/iceberg-upstream/build-artifacts.py | 106 +
.github/workflows/util/iceberg-upstream/compare.py | 401 ++++
.github/workflows/util/iceberg-upstream/control.py | 122 ++
.../util/iceberg-upstream/flaky-tests.csv | 8 +-
.github/workflows/util/iceberg-upstream/flaky.py | 47 +
.github/workflows/util/iceberg-upstream/merge.py | 83 +
.../workflows/util/iceberg-upstream/summarize.py | 244 +++
.github/workflows/velox_kafka.yml | 17 +-
.github/workflows/velox_native_build.yml | 87 +
backends-velox/pom.xml | 181 +-
.../datasources/v2/DeltaWriteOperators.scala | 83 +-
.../delta/DeltaDeletionVectorHandoffSuite.scala | 113 +-
.../sql/delta/DeltaTransactionObserverSuite.scala | 249 +++
.../delta/VeloxDeltaTransactionObserverSuite.scala | 88 +
.../delta/DeltaDeletionVectorHandoffSuite.scala | 111 +-
.../sql/delta/DeltaTransactionObserverSuite.scala | 1 +
.../delta/VeloxDeltaTransactionObserverSuite.scala | 1 +
.../execution/TestStoragePartitionedJoins.java | 665 ------
.../execution/TestTPCHStoragePartitionedJoins.java | 250 ---
.../extensions/TestGlutenCopyOnWriteDelete.java | 39 -
.../extensions/TestGlutenMergeOnReadDelete.java | 40 -
.../extensions/TestGlutenMergeOnReadMerge.java | 122 --
.../extensions/TestGlutenMergeOnReadUpdate.java | 40 -
...toragePartitionedJoinsInRowLevelOperations.java | 22 -
.../TestGlutenSystemFunctionPushDownDQL.java | 21 -
...SystemFunctionPushDownInRowLevelOperations.java | 20 -
.../org/apache/gluten/source/TestFilteredScan.java | 726 -------
.../gluten/source/TestForwardCompatibility.java | 213 --
.../gluten/source/TestGlutenDataFrameWriterV2.java | 24 -
.../TestGlutenDataFrameWriterV2Coercion.java | 21 -
.../gluten/source/TestGlutenDataSourceOptions.java | 21 -
.../source/TestGlutenIcebergSourceHiveTables.java | 57 -
.../source/TestGlutenIdentityPartitionData.java | 21 -
.../source/TestGlutenPositionDeletesTable.java | 21 -
.../gluten/source/TestGlutenRuntimeFiltering.java | 21 -
.../source/TestGlutenSparkMetadataColumns.java | 21 -
.../gluten/source/TestGlutenSparkStagedScan.java | 21 -
.../org/apache/gluten/source/TestIcebergSpark.java | 252 ---
.../org/apache/gluten/source/TestParquetScan.java | 336 ---
.../apache/gluten/source/TestPartitionPruning.java | 479 ----
.../apache/gluten/source/TestPartitionValues.java | 503 -----
.../apache/gluten/source/TestSparkDataFile.java | 312 ---
.../source/TestSparkReaderWithBloomFilter.java | 354 ---
.../gluten/source/TestTimestampWithoutZone.java | 231 --
.../org/apache/gluten/sql/TestFilterPushDown.java | 604 ------
.../gluten/sql/TestGlutenAggregatePushDown.java | 57 -
.../apache/gluten/sql/TestGlutenDeleteFrom.java | 21 -
.../sql/TestGlutenPartitionedWritesAsSelect.java | 28 -
.../sql/TestGlutenPartitionedWritesToBranch.java | 21 -
.../TestGlutenPartitionedWritesToWapBranch.java | 21 -
.../org/apache/gluten/sql/TestGlutenSelect.java | 21 -
.../gluten/sql/TestGlutenTimestampWithoutZone.java | 21 -
.../org/apache/iceberg/spark/CatalogTestBase.java | 47 -
.../apache/iceberg/spark/SparkCatalogTestBase.java | 61 -
.../org/apache/iceberg/spark/SparkTestBase.java | 305 ---
.../iceberg/spark/SparkTestBaseWithCatalog.java | 129 --
.../java/org/apache/iceberg/spark/TestBase.java | 292 ---
.../apache/iceberg/spark/TestBaseWithCatalog.java | 188 --
.../apache/iceberg/spark/data/AvroDataTest.java | 278 ---
.../org/apache/iceberg/spark/data/RandomData.java | 364 ----
.../org/apache/iceberg/spark/data/TestHelpers.java | 899 --------
.../spark/extensions/ExtensionsTestBase.java | 74 -
.../spark/extensions/SparkExtensionsTestBase.java | 73 -
.../spark/source/GlutenSparkScanBuilder.java | 48 -
.../apache/iceberg/spark/source/LogMessage.java | 118 -
.../spark/source/TestIcebergSourceTablesBase.java | 2284 --------------------
.../spark/source/TestSparkReadProjection.java | 275 ---
.../spark/source/TestSparkReaderDeletes.java | 777 -------
.../spark/source/TestStructuredStreaming.java | 309 ---
.../integration/IcebergExecutionListener.java | 508 +++++
.../gluten/integration/IcebergQueryTestFilter.java | 425 ++++
.../org.junit.jupiter.api.extension.Extension | 1 +
...org.junit.platform.launcher.PostDiscoveryFilter | 5 +-
...g.junit.platform.launcher.TestExecutionListener | 5 +-
.../main/java/org/apache/gluten/TestConfUtil.java | 36 -
.../gluten/execution/VeloxIcebergSuite.scala | 40 +
.../apache/gluten/execution/FallbackSuite.scala | 40 +-
.../gluten/execution/MiscOperatorSuite.scala | 21 +-
.../execution/StarSchemaJoinAggregateSuite.scala | 11 +-
.../gluten/expression/UDFPartialProjectSuite.scala | 5 +-
.../apache/gluten/expression/VeloxUdfSuite.scala | 27 +
.../functions/DateFunctionsValidateSuite.scala | 2 +-
.../functions/MathFunctionsValidateSuite.scala | 4 +-
.../functions/ScalarFunctionsValidateSuite.scala | 280 +--
cpp/bolt/config/BoltConfig.h | 4 +-
cpp/velox/CMakeLists.txt | 26 +-
cpp/velox/config/VeloxConfig.h | 4 +-
cpp/velox/substrait/VeloxToSubstraitType.cc | 7 +-
cpp/velox/tests/VeloxToSubstraitTypeTest.cc | 24 +
cpp/velox/udf/examples/MyUDF.cc | 88 +
dev/build-helper-functions.sh | 18 +
dev/builddeps-veloxbe.sh | 8 +
dev/ci-velox-buildshared-centos-9.sh | 3 -
dev/docker/Dockerfile.centos7-gcc13 | 194 --
dev/docker/Dockerfile.centos7-gcc13-static-build | 56 -
dev/docker/Dockerfile.centos7-static-build | 54 -
dev/docker/Dockerfile.centos8-dynamic-build | 2 +-
dev/docker/Dockerfile.centos9-dynamic-build | 2 +-
dev/vcpkg/vcpkg.json | 5 +-
docs/Configuration.md | 2 +-
docs/developers/velox-backend-CI.md | 91 +
docs/get-started/build-guide.md | 9 +-
ep/build-velox/src/get-velox.sh | 13 +-
ep/build-velox/src/setup-centos7.sh | 263 ---
ep/build-velox/src/setup-centos8.sh | 2 +-
ep/build-velox/src/setup-openeuler24.sh | 2 +-
ep/build-velox/src/setup-rhel.sh | 10 +-
.../org/apache/gluten/config/ConfigBuilder.scala | 15 +
.../apache/gluten/extension/OffloadDeltaScan.scala | 35 +-
.../apache/gluten/rexnode/RexNodeConverter.java | 8 +
.../rexnode/functions/RexCallConverterFactory.java | 9 +-
.../functions/SubstringRexCallConverter.java | 67 +
.../runtime/stream/custom/ScalarFunctionsTest.java | 93 +
gluten-iceberg/pom.xml | 12 +-
.../gluten/execution/IcebergScanTransformer.scala | 11 +-
.../spark/source/GlutenIcebergSourceUtil.scala | 67 +-
.../org/apache/gluten/execution/IcebergSuite.scala | 60 +
.../org/apache/gluten/config/GlutenConfig.scala | 20 +-
.../apache/gluten/expression/ConverterUtils.scala | 15 +-
.../joinagg/PushAggregateThroughJoin.scala | 11 +-
.../gluten/config/SparkConfigUtilSuite.scala | 32 +
.../execution/GlutenQueryComparisonTest.scala | 30 +
.../execution/PushAggregateThroughJoinSuite.scala | 348 ++-
.../gluten/expression/ConverterUtilsSuite.scala | 41 +-
gluten-ut/pom.xml | 14 -
.../exists-subquery/exists-orderby-limit.sql | 12 +
.../utils/velox/VeloxSQLQueryTestSettings.scala | 2 +-
.../gluten/utils/velox/VeloxTestSettings.scala | 89 +-
...tenDataSourceV2EnhancedDeleteFilterSuite.scala} | 4 +-
...nDataSourceV2EnhancedPartitionFilterSuite.scala | 111 +
...rceV2EnhancedRuntimePartitionFilterSuite.scala} | 4 +-
.../GlutenKeyGroupedPartitioningSuite.scala | 329 ++-
.../integration/IcebergExecutionListenerTest.java | 411 ++++
.../integration/IcebergQueryTestFilterTest.java | 254 +++
.../test/python/test_baseline.py | 396 ++++
.../test/python/test_build_artifacts.py | 111 +
.../test/python/test_compare.py | 453 ++++
.../test/python/test_control.py | 92 +
.../src-iceberg-upstream/test/python/test_flaky.py | 215 ++
.../src-iceberg-upstream/test/python/test_merge.py | 127 ++
.../test/python/test_summary.py | 226 ++
tools/gluten-it/pom.xml | 2 +-
147 files changed, 7472 insertions(+), 13572 deletions(-)
create mode 100644 .github/workflows/iceberg_spark_ut.yml
create mode 100644 .github/workflows/iceberg_upstream_revision.yml
create mode 100644 .github/workflows/util/iceberg-upstream/baseline.py
create mode 100644 .github/workflows/util/iceberg-upstream/build-artifacts.py
create mode 100644 .github/workflows/util/iceberg-upstream/compare.py
create mode 100644 .github/workflows/util/iceberg-upstream/control.py
copy
backends-velox/src/test/resources/META-INF/services/org.apache.gluten.spi.SharedLibraryLoader
=> .github/workflows/util/iceberg-upstream/flaky-tests.csv (72%)
create mode 100644 .github/workflows/util/iceberg-upstream/flaky.py
create mode 100644 .github/workflows/util/iceberg-upstream/merge.py
create mode 100644 .github/workflows/util/iceberg-upstream/summarize.py
create mode 100644 .github/workflows/velox_native_build.yml
create mode 100644
backends-velox/src-delta33/test/scala/org/apache/spark/sql/delta/DeltaTransactionObserverSuite.scala
create mode 100644
backends-velox/src-delta33/test/scala/org/apache/spark/sql/delta/VeloxDeltaTransactionObserverSuite.scala
create mode 120000
backends-velox/src-delta40/test/scala/org/apache/spark/sql/delta/DeltaTransactionObserverSuite.scala
create mode 120000
backends-velox/src-delta40/test/scala/org/apache/spark/sql/delta/VeloxDeltaTransactionObserverSuite.scala
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/execution/TestStoragePartitionedJoins.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/execution/TestTPCHStoragePartitionedJoins.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/extensions/TestGlutenCopyOnWriteDelete.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/extensions/TestGlutenMergeOnReadDelete.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/extensions/TestGlutenMergeOnReadMerge.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/extensions/TestGlutenMergeOnReadUpdate.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/extensions/TestGlutenStoragePartitionedJoinsInRowLevelOperations.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/extensions/TestGlutenSystemFunctionPushDownDQL.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/extensions/TestGlutenSystemFunctionPushDownInRowLevelOperations.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/source/TestFilteredScan.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/source/TestForwardCompatibility.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/source/TestGlutenDataFrameWriterV2.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/source/TestGlutenDataFrameWriterV2Coercion.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/source/TestGlutenDataSourceOptions.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/source/TestGlutenIcebergSourceHiveTables.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/source/TestGlutenIdentityPartitionData.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/source/TestGlutenPositionDeletesTable.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/source/TestGlutenRuntimeFiltering.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/source/TestGlutenSparkMetadataColumns.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/source/TestGlutenSparkStagedScan.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/source/TestIcebergSpark.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/source/TestParquetScan.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/source/TestPartitionPruning.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/source/TestPartitionValues.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/source/TestSparkDataFile.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/source/TestSparkReaderWithBloomFilter.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/source/TestTimestampWithoutZone.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/sql/TestFilterPushDown.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/sql/TestGlutenAggregatePushDown.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/sql/TestGlutenDeleteFrom.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/sql/TestGlutenPartitionedWritesAsSelect.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/sql/TestGlutenPartitionedWritesToBranch.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/sql/TestGlutenPartitionedWritesToWapBranch.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/sql/TestGlutenSelect.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/gluten/sql/TestGlutenTimestampWithoutZone.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/iceberg/spark/CatalogTestBase.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/iceberg/spark/SparkCatalogTestBase.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/iceberg/spark/SparkTestBase.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/iceberg/spark/SparkTestBaseWithCatalog.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/iceberg/spark/TestBase.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/iceberg/spark/TestBaseWithCatalog.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/iceberg/spark/data/AvroDataTest.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/iceberg/spark/data/RandomData.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/iceberg/spark/data/TestHelpers.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/iceberg/spark/extensions/ExtensionsTestBase.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/iceberg/spark/extensions/SparkExtensionsTestBase.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/iceberg/spark/source/GlutenSparkScanBuilder.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/iceberg/spark/source/LogMessage.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/iceberg/spark/source/TestIcebergSourceTablesBase.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/iceberg/spark/source/TestSparkReadProjection.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/iceberg/spark/source/TestSparkReaderDeletes.java
delete mode 100644
backends-velox/src-iceberg-spark34/test/java/org/apache/iceberg/spark/source/TestStructuredStreaming.java
create mode 100644
backends-velox/src-iceberg-upstream/test/java/org/apache/gluten/integration/IcebergExecutionListener.java
create mode 100644
backends-velox/src-iceberg-upstream/test/java/org/apache/gluten/integration/IcebergQueryTestFilter.java
create mode 100644
backends-velox/src-iceberg-upstream/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
copy dev/docker/entrypoint.sh =>
backends-velox/src-iceberg-upstream/test/resources/META-INF/services/org.junit.platform.launcher.PostDiscoveryFilter
(93%)
mode change 100755 => 100644
copy dev/docker/entrypoint.sh =>
backends-velox/src-iceberg-upstream/test/resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener
(93%)
mode change 100755 => 100644
delete mode 100644
backends-velox/src-iceberg/main/java/org/apache/gluten/TestConfUtil.java
delete mode 100644 dev/docker/Dockerfile.centos7-gcc13
delete mode 100644 dev/docker/Dockerfile.centos7-gcc13-static-build
delete mode 100644 dev/docker/Dockerfile.centos7-static-build
delete mode 100755 ep/build-velox/src/setup-centos7.sh
create mode 100644
gluten-flink/planner/src/main/java/org/apache/gluten/rexnode/functions/SubstringRexCallConverter.java
copy
gluten-ut/{spark40/src/test/scala/org/apache/spark/sql/connector/GlutenMergeIntoDataFrameSuite.scala
=>
spark42/src/test/scala/org/apache/spark/sql/connector/GlutenDataSourceV2EnhancedDeleteFilterSuite.scala}
(87%)
create mode 100644
gluten-ut/spark42/src/test/scala/org/apache/spark/sql/connector/GlutenDataSourceV2EnhancedPartitionFilterSuite.scala
copy
gluten-ut/{spark40/src/test/scala/org/apache/spark/sql/connector/GlutenMergeIntoDataFrameSuite.scala
=>
spark42/src/test/scala/org/apache/spark/sql/connector/GlutenDataSourceV2EnhancedRuntimePartitionFilterSuite.scala}
(85%)
create mode 100644
gluten-ut/src-iceberg-upstream/test/java/org/apache/gluten/integration/IcebergExecutionListenerTest.java
create mode 100644
gluten-ut/src-iceberg-upstream/test/java/org/apache/gluten/integration/IcebergQueryTestFilterTest.java
create mode 100644 gluten-ut/src-iceberg-upstream/test/python/test_baseline.py
create mode 100644
gluten-ut/src-iceberg-upstream/test/python/test_build_artifacts.py
create mode 100644 gluten-ut/src-iceberg-upstream/test/python/test_compare.py
create mode 100644 gluten-ut/src-iceberg-upstream/test/python/test_control.py
create mode 100644 gluten-ut/src-iceberg-upstream/test/python/test_flaky.py
create mode 100644 gluten-ut/src-iceberg-upstream/test/python/test_merge.py
create mode 100644 gluten-ut/src-iceberg-upstream/test/python/test_summary.py
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]