diff --git a/Cargo.toml b/Cargo.toml index d95e73a..82f5efa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,12 +6,13 @@ resolver = "2" [workspace.package] authors = ["Apache Sedona "] +description = "A benchmark for assessing geospatial SQL analytics query performance across database systems" edition = "2021" homepage = "https://github.com/apache/sedona-spatialbench/" license = "Apache-2.0" readme = "README.md" repository = "https://github.com/apache/sedona-spatialbench/" -version = "1.1.1" +version = "0.1.0" [workspace.dependencies] geo = "0.31.0" diff --git a/dev/release/README.md b/dev/release/README.md index 745bc93..01db51e 100644 --- a/dev/release/README.md +++ b/dev/release/README.md @@ -21,18 +21,46 @@ ## Verifying a release candidate -Release candidates are verified using the script `verify-release-candidate.sh `. -For example, to verify SpatialBench 0.1.0 RC1, run: +### Testing locally (before creating a release candidate) + +Before creating a release candidate, you should test your local checkout: ```shell # git clone https://github.com/apache/sedona-spatialbench.git && cd sedona-spatialbench # or # cd existing/sedona-spatialbench && git fetch upstream && git switch main && git pull upstream main +dev/release/verify-release-candidate.sh +``` + +This will run all verification tests on your local checkout without requiring any release artifacts. + +### Testing a local tarball + +To create a local tarball for testing: + +```shell +VERSION="0.1.0" && git archive HEAD --prefix=apache-sedona-spatialbench-${VERSION}/ | gzip > apache-sedona-spatialbench-${VERSION}-src.tar.gz +dev/release/verify-release-candidate.sh apache-sedona-spatialbench-${VERSION}-src.tar.gz +``` + +### Verifying an official release candidate + +Once a release candidate has been uploaded to Apache dist, verify it using: + +```shell dev/release/verify-release-candidate.sh 0.1.0 1 ``` -Release verification requires a recent Rust toolchain. This toolchain can be installed -by following instructions from . +This will download the release candidate from `https://dist.apache.org/repos/dist/dev/sedona/` and verify it. + +Release verification requires: +- A recent Rust toolchain (can be installed from ) +- Java (for Apache RAT license checking) +- Python (for RAT report filtering) + +The verification script will: +1. Run Apache RAT to check all files have proper license headers +2. Build and test all Rust crates in the workspace When verifying via Docker or on a smaller machine it may be necessary to limit the number of parallel jobs to avoid running out of memory: @@ -53,72 +81,71 @@ git branch -b branch-0.1.0 git push upstream -u branch-0.1.0:branch-0.1.0 ``` -Before creating a tag, download the tarball from the latest packaging run and -check it locally: - -```shell -dev/release/verify-release-candidate.sh path/to/tarball.tar.gz -``` - When the state of the `branch-x.x.x` branch is clean and checks are complete, the release candidate tag can be created: ```shell -git tag -a sedona-spatialbench-0.1.0-rc1 -m "Tag Apache SpatialBench 0.1.0-rc1" +git tag -a sedona-spatialbench-0.1.0-rc1 -m "Tag Apache Sedona SpatialBench 0.1.0-rc1" git push upstream sedona-spatialbench-0.1.0-rc1 ``` -This will trigger another packaging CI run that, if successful, will create a -pre-release at with the release -artifacts uploaded from the CI run. - -After the release has been created with the appropriate artifacts, the assets -need to be signed with signatures uploaded as release assets. Please create -dev/release/.env from dev/release/.env.example and set the GPG_KEY_ID variable. -The GPG_KEY_ID in dev/release/.env must have its public component listed in the -[Apache Sedona KEYS file](https://dist.apache.org/repos/dist/dev/sedona/KEYS). +### Signing Commands -```shell -# sign-assets.sh -dev/release/sign-assets.sh 0.1.0 1 -``` +Now the assets need to be signed with signatures. -After the assets are signed, they can be committed and uploaded to the -dev/sedona directory of the Apache distribution SVN. A helper script -is provided: +**GPG Signing:** ```shell -# upload-candidate.sh -APACHE_USERNAME=your_apache_username dev/release/upload-candidate.sh 0.1.0 1 +# Sign a file (creates .asc file automatically) +gpg -ab apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz + +# Verify a signature +gpg --verify apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz.asc apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz ``` -## Vote +**SHA512 Checksum:** -An email must now be sent to `dev@sedona.apache.org` calling on developers to follow -the release verification instructions and vote appropriately on the source release. +```shell +# Generate SHA512 checksum +shasum -a 512 apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz > apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz.sha512 -## Publish +# Verify a checksum +shasum -a 512 --check apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz.sha512 +``` -### Upload/tag source release +**Upload to Apache SVN:** -After a successful release vote, the tarball needs to be uploaded to the official -Apache release repository. A helper script is provided: +After the assets are signed, they can be committed and uploaded to the +dev/sedona directory of the Apache distribution SVN: ```shell -# upload-release.sh -APACHE_USERNAME=your_apache_username dev/release/upload-release.sh 0.1.0 1 +# Set version and RC number variables +SEDONA_VERSION="0.1.0" +RC_NUMBER="1" + +# Create the directory in SVN +svn mkdir -m "Adding folder" https://dist.apache.org/repos/dist/dev/sedona/sedona-spatialbench-${SEDONA_VERSION}-rc${RC_NUMBER} + +# Checkout the directory +svn co https://dist.apache.org/repos/dist/dev/sedona/sedona-spatialbench-${SEDONA_VERSION}-rc${RC_NUMBER} tmp + +# Copy files to the checked out directory +cp apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz tmp/ +cp apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz.asc tmp/ +cp apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz.sha512 tmp/ + +# Add and commit the files +cd tmp +svn add apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz* +svn ci -m "Apache SpatialBench ${SEDONA_VERSION} RC${RC_NUMBER}" +cd .. +rm -rf tmp ``` -An official GitHub tag must also be created: - -```shell -git tag -a sedona-spatialbench-0.1.0 -m "SpatialBench 0.1.0" sedona-spatialbench-0.1.0-rc1 -git push upstream sedona-spatialbench-0.1.0 -``` +## Vote -The prerelease located at -can now be edited to point to the official release tag and the GitHub release published -from the UI. +An email must now be sent to `dev@sedona.apache.org` calling on developers to follow +the release verification instructions and vote appropriately on the source release. ## Bump versions @@ -130,13 +157,49 @@ are currently all derived from `Cargo.toml`, which can be updated to: version = "0.2.0" ``` -Development versions and the changelog are derived from the presence of a development -tag on the main branch signifying where development of that version "started". After -the version bump PR merges, that commit should be tagged with the appropriate -development tag: +## Publishing to crates.io -```shell -git tag -a sedona-spatialbench-0.2.0.dev -m "tag dev 0.2.0" -git push upstream sedona-spatialbench-0.2.0.dev -``` +After a successful Apache release, the Rust crates can be published to [crates.io](https://crates.io). +### Prerequisites + +1. **crates.io account**: Create an account at if you don't have one +2. **API token**: Generate an API token from +3. **Login to cargo**: Authenticate cargo with your API token: + ```shell + cargo login + ``` +4. **Verify ownership**: Ensure you have owner permissions for the crates on crates.io. If this is the first publish, you'll automatically become an owner. + +### Pre-publish checks + +Before publishing, verify that: + +1. All tests pass: + ```shell + cargo test --workspace + ``` + +2. The workspace builds successfully: + ```shell + cargo build --workspace --release + ``` + +3. Check for any issues with `dry run`: + ```shell + cargo publish --dry-run + ``` + +### Publishing order + +The crates will be published in dependency order. The correct order is: + +1. `spatialbench` (no workspace dependencies) +2. `spatialbench-arrow` (depends on `spatialbench`) +3. `spatialbench-cli` (depends on both `spatialbench` and `spatialbench-arrow`) + +To publish, run this command: + +```shell +cargo publish +``` \ No newline at end of file diff --git a/dev/release/rat_exclude_files.txt b/dev/release/rat_exclude_files.txt index c3a17d7..d5ceb40 100644 --- a/dev/release/rat_exclude_files.txt +++ b/dev/release/rat_exclude_files.txt @@ -5,7 +5,22 @@ Cargo.lock site/** docs-overrides/** raster/output/** -spatialbench/data/sf-v1/*.tbl.gz -spatialbench/data/sf-v1/*.parquet +spatialbench/data/** dev/release/rat_exclude_files.txt - +.gitignore +.gitkeep +filtered_rat.txt +rat.txt +docs/requirements.txt +docs/javascripts/katex.js +docs/stylesheets/extra.css +target/** +ARCHITECTURE.md +Cargo.toml +README.md +spatialbench-config.yml +docs/queries.md +spatialbench-cli/CONFIGURATION.md +spatialbench-cli/Cargo.toml +spatialbench-cli/README.md +spatialbench-cli/pyproject.toml diff --git a/dev/release/run-rat.sh b/dev/release/run-rat.sh index 78eba22..d5230c7 100755 --- a/dev/release/run-rat.sh +++ b/dev/release/run-rat.sh @@ -18,19 +18,21 @@ # under the License. RAT_VERSION=0.13 +RELEASE_DIR=$(cd "$(dirname "$BASH_SOURCE")"; pwd) +RAT_JAR="${RELEASE_DIR}/apache-rat-${RAT_VERSION}.jar" # download apache rat -if [ ! -f apache-rat-${RAT_VERSION}.jar ]; then - curl -s https://repo1.maven.org/maven2/org/apache/rat/apache-rat/${RAT_VERSION}/apache-rat-${RAT_VERSION}.jar > apache-rat-${RAT_VERSION}.jar +if [ ! -f "${RAT_JAR}" ]; then + curl -s https://repo1.maven.org/maven2/org/apache/rat/apache-rat/${RAT_VERSION}/apache-rat-${RAT_VERSION}.jar > "${RAT_JAR}" fi -RAT="java -jar apache-rat-${RAT_VERSION}.jar -x " - -RELEASE_DIR=$(cd "$(dirname "$BASH_SOURCE")"; pwd) +RAT="java -jar ${RAT_JAR} -x " # generate the rat report -$RAT $1 > rat.txt -python $RELEASE_DIR/check-rat-report.py $RELEASE_DIR/rat_exclude_files.txt rat.txt > filtered_rat.txt +# Run RAT from inside the target directory so it produces relative paths +cd "$1" +$RAT . > rat.txt +python3 $RELEASE_DIR/check-rat-report.py $RELEASE_DIR/rat_exclude_files.txt rat.txt > filtered_rat.txt cat filtered_rat.txt UNAPPROVED=`cat filtered_rat.txt | grep "NOT APPROVED" | wc -l` @@ -41,3 +43,4 @@ else exit 1 fi + diff --git a/dev/release/sign-assets.sh b/dev/release/sign-assets.sh deleted file mode 100755 index 18f56c8..0000000 --- a/dev/release/sign-assets.sh +++ /dev/null @@ -1,149 +0,0 @@ -#!/usr/bin/env bash -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -set -eu - -main() { - local -r source_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - local -r source_top_dir="$( cd "${source_dir}/../../" && pwd )" - pushd "${source_top_dir}" - - if [ "$#" -ne 2 ]; then - echo "Usage: $0 " - exit 1 - fi - - local -r version="$1" - local -r rc_number="$2" - local -r tag="sedona-spatialbench-${version}-rc${rc_number}" - local -r tarball="apache-sedona-spatialbench-${version}" - - : ${REPOSITORY:="apache/sedona-spatialbench"} - - if [[ ! -f "${source_dir}/.env" ]]; then - echo "You must create ${source_dir}/.env" - echo "You can use ${source_dir}/.env.example as a template" - fi - - source "${source_dir}/.env" - - header "Looking for GitHub Actions workflow on ${REPOSITORY}:${tag}" - local run_id="" - while [[ -z "${run_id}" ]] - do - echo "Waiting for run to start..." - run_id=$(gh run list \ - --repo "${REPOSITORY}" \ - --workflow=packaging \ - --json 'databaseId,event,headBranch,status' \ - --jq ".[] | select(.event == \"push\" and .headBranch == \"${tag}\") | .databaseId" | \ - head -n 1) - sleep 1 - done - - header "Found GitHub Actions workflow with ID: ${run_id}" - gh run watch --repo "${REPOSITORY}" --exit-status ${run_id} - gh run view --repo "${REPOSITORY}" "${run_id}" - - header "Downloading assets from release" - local -r download_dir="packages/${tag}" - mkdir -p "${download_dir}" - gh release download \ - "${tag}" \ - --repo "${REPOSITORY}" \ - --dir "${download_dir}" \ - --skip-existing - - header "Upload signatures for source" - upload_asset_signatures "${tag}" $(find "${download_dir}" -type f \( -name 'apache-sedona-spatialbench-*.tar.gz' \)) - - header "Upload signatures for docs" - upload_asset_signatures "${tag}" "${download_dir}/docs.tgz" - - popd -} - -header() { - echo "============================================================" - echo "${1}" - echo "============================================================" -} - -sign_asset() { - local -r asset="$1" - local -r sigfile="${asset}.asc" - - if [[ -f "${sigfile}" ]]; then - if env LANG=C gpg --verify "${sigfile}" "${asset}" >/dev/null 2>&1; then - echo "Valid signature at $(basename "${sigfile}"), skipping" - return - fi - rm "${sigfile}" - fi - - gpg \ - --armor \ - --detach-sign \ - --local-user "${GPG_KEY_ID}" \ - --output "${sigfile}" \ - "${asset}" - echo "Generated $(basename "${sigfile}")" -} - -sum_asset() { - local -r asset="$1" - local -r sumfile="${asset}.sha512" - - local -r digest=$(cd $(dirname "${asset}"); shasum --algorithm 512 $(basename "${asset}")) - if [[ -f "${sumfile}" ]]; then - if [[ "${digest}" = $(cat "${sumfile}") ]]; then - echo "Valid digest at $(basename "${sumfile}"), skipping" - return - fi - fi - - echo "${digest}" > "${sumfile}" - echo "Generated $(basename "${sumfile}")" -} - -upload_asset_signatures() { - local -r tag="${1}" - shift 1 - - local -r assets=("$@") - - for asset in "${assets[@]}"; do - sign_asset "${asset}" - sum_asset "${asset}" - done - - gh release upload \ - --repo "${REPOSITORY}" \ - "${tag}" \ - "${assets[@]/%/.asc}" \ - "${assets[@]/%/.sha512}" - - # Clean up - for asset in "${assets[@]}"; do - rm -f "${asset}" "${asset}.asc" "${asset}.sha512" - done -} - -main "$@" - diff --git a/dev/release/upload-candidate.sh b/dev/release/upload-candidate.sh deleted file mode 100755 index bffba60..0000000 --- a/dev/release/upload-candidate.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/env bash -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - - -set -eu - -main() { - local -r source_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - local -r source_top_dir="$( cd "${source_dir}/../../" && pwd )" - - if [ "$#" -ne 2 ]; then - echo "Usage: $0 " - exit 1 - fi - local -r version="$1" - local -r rc_number="$2" - local -r tag="sedona-spatialbench-${version}-rc${rc_number}" - local -r tarball="apache-sedona-spatialbench-${version}.tar.gz" - - : ${REPOSITORY:="apache/sedona-spatialbench"} - - if [[ ! -f "${source_dir}/.env" ]]; then - echo "You must create ${source_dir}/.env" - echo "You can use ${source_dir}/.env.example as a template" - fi - - source "${source_dir}/.env" - - header "Downloading assets from release" - local -r download_dir="packages/${tag}" - mkdir -p "${download_dir}" - gh release download \ - "${tag}" \ - --dir "${download_dir}" \ - --pattern "${tarball}*" \ - --repo "${REPOSITORY}" \ - --skip-existing - - echo "Uploading to dist.apache.org" - - # check out the sedona RC folder - svn co --depth=empty https://dist.apache.org/repos/dist/dev/sedona tmp - - # add the release candidate for the tag - mkdir -p "tmp/${tag}" - - # copy the rc tarball into the tmp dir - cp ${download_dir}/${tarball}* "tmp/${tag}" - - # commit to svn - svn add "tmp/${tag}" - svn ci --username=$APACHE_USERNAME -m "Apache SpatialBench ${version} RC${rc_number}" "tmp/${tag}" - - # clean up - rm -rf tmp - rm -rf "${download_dir}" - - echo "Uploaded at https://dist.apache.org/repos/dist/dev/sedona/${tag}" -} - -header() { - echo "============================================================" - echo "${1}" - echo "============================================================" -} - -main "$@" - diff --git a/dev/release/upload-release.sh b/dev/release/upload-release.sh deleted file mode 100755 index 71bf530..0000000 --- a/dev/release/upload-release.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env bash -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -set -eu - -main() { - local -r source_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - - if [ "$#" -ne 2 ]; then - echo "Usage: $0 " - exit 1 - fi - local -r version="$1" - local -r rc_number="$2" - local -r tag="sedona-spatialbench-${version}-rc${rc_number}" - - if [[ ! -f "${source_dir}/.env" ]]; then - echo "You must create ${source_dir}/.env" - echo "You can use ${source_dir}/.env.example as a template" - fi - - source "${source_dir}/.env" - - rc_id="sedona-spatialbench-${version}-rc${rc_number}" - release_id="apache-sedona-spatialbench-${version}" - echo "Moving dev/ to release/" - svn \ - mv \ - --username=$APACHE_USERNAME \ - -m "Apache SpatialBench ${version}" \ - https://dist.apache.org/repos/dist/dev/sedona/${rc_id} \ - https://dist.apache.org/repos/dist/release/sedona/${release_id} - - echo "Success! The release is available here:" - echo " https://dist.apache.org/repos/dist/release/sedona/${release_id}" -} - -main "$@" - diff --git a/dev/release/verify-release-candidate.sh b/dev/release/verify-release-candidate.sh index 4a55d9b..3192014 100755 --- a/dev/release/verify-release-candidate.sh +++ b/dev/release/verify-release-candidate.sh @@ -28,7 +28,7 @@ fi check_dependencies() { local missing_deps=0 - local required_deps=("curl" "git" "gpg" "cargo") + local required_deps=("curl" "git" "gpg" "cargo" "java" "python") for dep in "${required_deps[@]}"; do if ! command -v $dep &> /dev/null; then echo "Error: $dep is not installed or not in PATH" @@ -102,12 +102,19 @@ show_info() { SPATIALBENCH_DIST_URL='https://dist.apache.org/repos/dist/dev/sedona' download_dist_file() { - curl \ + local url="${SPATIALBENCH_DIST_URL}/$1" + if ! curl \ --silent \ --show-error \ --fail \ --location \ - --remote-name $SPATIALBENCH_DIST_URL/$1 + --remote-name "$url"; then + echo "Error: Failed to download $url" + echo "This usually means the release candidate has not been uploaded yet." + echo "To test locally, run: $0" + echo "Or to test a local tarball: $0 /path/to/tarball.tar.gz" + exit 1 + fi } download_rc_file() { @@ -196,6 +203,14 @@ test_rust() { popd } +test_rat() { + show_header "Running Apache RAT license check" + + # Use SOURCE_DIR which was computed at script startup (before any directory changes) + # Run RAT check using the run-rat.sh script from the repo + bash "${SOURCE_DIR}/run-rat.sh" "${SPATIALBENCH_SOURCE_DIR}" +} + ensure_source_directory() { show_header "Ensuring source directory" @@ -234,6 +249,10 @@ ensure_source_directory() { test_source_distribution() { pushd $SPATIALBENCH_SOURCE_DIR + if [ ${TEST_RAT} -gt 0 ]; then + test_rat + fi + if [ ${TEST_RUST} -gt 0 ]; then test_rust fi @@ -247,6 +266,7 @@ test_source_distribution() { : ${TEST_DEFAULT:=1} : ${TEST_SOURCE:=${TEST_DEFAULT}} +: ${TEST_RAT:=${TEST_SOURCE}} : ${TEST_RUST:=${TEST_SOURCE}} TEST_SUCCESS=no diff --git a/raster/generator.py b/raster/generator.py index a9ba0cc..0e5d70b 100644 --- a/raster/generator.py +++ b/raster/generator.py @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + import os import numpy as np diff --git a/spatialbench-arrow/Cargo.toml b/spatialbench-arrow/Cargo.toml index 8b0fbe6..a11b7ff 100644 --- a/spatialbench-arrow/Cargo.toml +++ b/spatialbench-arrow/Cargo.toml @@ -1,16 +1,36 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + [package] name = "spatialbench-arrow" -version = "1.1.1" -edition = "2024" +version = "0.1.0" +edition = "2021" authors = ["Apache Sedona "] description = "SpatialBench data generator into Apache Arrow format" +homepage = "https://github.com/apache/sedona-spatialbench" repository = "https://github.com/apache/sedona-spatialbench" readme = "README.md" license = "Apache-2.0" +keywords = ["spatial", "geospatial", "data-generation", "apache-arrow"] +categories = ["science::geo", "database", "data-structures"] [dependencies] arrow = { version = "56", default-features = false, features = ["prettyprint"] } -spatialbench = { path = "../spatialbench", version = "1.1.1" } +spatialbench = { path = "../spatialbench", version = "0.1.0" } geo = { workspace = true } geozero = { workspace = true } diff --git a/spatialbench-arrow/README.md b/spatialbench-arrow/README.md index 59a25ad..95147d8 100644 --- a/spatialbench-arrow/README.md +++ b/spatialbench-arrow/README.md @@ -1,3 +1,22 @@ + + # Spatial Bench Data Generator in Arrow format This crate generates Spatial Bench data directly into [Apache Arrow] format using the [arrow] crate diff --git a/spatialbench-arrow/src/building.rs b/spatialbench-arrow/src/building.rs index 8d16aba..b8ab8ba 100644 --- a/spatialbench-arrow/src/building.rs +++ b/spatialbench-arrow/src/building.rs @@ -1,5 +1,22 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use crate::conversions::string_view_array_from_display_iter; -use crate::{DEFAULT_BATCH_SIZE, RecordBatchIterator}; +use crate::{RecordBatchIterator, DEFAULT_BATCH_SIZE}; use arrow::array::{BinaryArray, Int64Array, RecordBatch}; use arrow::datatypes::{DataType, Field, Schema, SchemaRef}; use geo::Geometry; diff --git a/spatialbench-arrow/src/conversions.rs b/spatialbench-arrow/src/conversions.rs index 63aad6e..5826bda 100644 --- a/spatialbench-arrow/src/conversions.rs +++ b/spatialbench-arrow/src/conversions.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! Routines to convert TPCH types to Arrow types use arrow::array::{StringViewArray, StringViewBuilder}; diff --git a/spatialbench-arrow/src/customer.rs b/spatialbench-arrow/src/customer.rs index 126bdbc..33947f5 100644 --- a/spatialbench-arrow/src/customer.rs +++ b/spatialbench-arrow/src/customer.rs @@ -1,5 +1,22 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use crate::conversions::string_view_array_from_display_iter; -use crate::{DEFAULT_BATCH_SIZE, RecordBatchIterator}; +use crate::{RecordBatchIterator, DEFAULT_BATCH_SIZE}; use arrow::array::{Int64Array, RecordBatch, StringViewArray}; use arrow::datatypes::{DataType, Field, Schema, SchemaRef}; use spatialbench::generators::{CustomerGenerator, CustomerGeneratorIterator}; diff --git a/spatialbench-arrow/src/driver.rs b/spatialbench-arrow/src/driver.rs index 8294397..ba07f50 100644 --- a/spatialbench-arrow/src/driver.rs +++ b/spatialbench-arrow/src/driver.rs @@ -1,5 +1,22 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use crate::conversions::string_view_array_from_display_iter; -use crate::{DEFAULT_BATCH_SIZE, RecordBatchIterator}; +use crate::{RecordBatchIterator, DEFAULT_BATCH_SIZE}; use arrow::array::{Int64Array, RecordBatch, StringViewArray}; use arrow::datatypes::{DataType, Field, Schema, SchemaRef}; use spatialbench::generators::{DriverGenerator, DriverGeneratorIterator}; diff --git a/spatialbench-arrow/src/lib.rs b/spatialbench-arrow/src/lib.rs index ac6fb78..68fd7b5 100644 --- a/spatialbench-arrow/src/lib.rs +++ b/spatialbench-arrow/src/lib.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! Generate Spatial Bench data as Arrow RecordBatches //! //! This crate provides generators for Spatial Bench tables that directly produces diff --git a/spatialbench-arrow/src/trip.rs b/spatialbench-arrow/src/trip.rs index bf866de..cdfb86c 100644 --- a/spatialbench-arrow/src/trip.rs +++ b/spatialbench-arrow/src/trip.rs @@ -1,5 +1,22 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use crate::conversions::{decimal128_array_from_iter, to_arrow_timestamp_millis}; -use crate::{DEFAULT_BATCH_SIZE, RecordBatchIterator}; +use crate::{RecordBatchIterator, DEFAULT_BATCH_SIZE}; use arrow::array::{BinaryArray, Int64Array, RecordBatch, TimestampMillisecondArray}; use arrow::datatypes::{DataType, Field, Schema, SchemaRef, TimeUnit}; use geo::Geometry; diff --git a/spatialbench-arrow/src/vehicle.rs b/spatialbench-arrow/src/vehicle.rs index 8e39013..95d6e7e 100644 --- a/spatialbench-arrow/src/vehicle.rs +++ b/spatialbench-arrow/src/vehicle.rs @@ -1,5 +1,22 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use crate::conversions::string_view_array_from_display_iter; -use crate::{DEFAULT_BATCH_SIZE, RecordBatchIterator}; +use crate::{RecordBatchIterator, DEFAULT_BATCH_SIZE}; use arrow::array::{Int64Array, RecordBatch, StringViewArray}; use arrow::datatypes::{DataType, Field, Schema, SchemaRef}; use spatialbench::generators::{VehicleGenerator, VehicleGeneratorIterator}; diff --git a/spatialbench-arrow/tests/reparse.rs b/spatialbench-arrow/tests/reparse.rs index 889933a..0cda73c 100644 --- a/spatialbench-arrow/tests/reparse.rs +++ b/spatialbench-arrow/tests/reparse.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! Verifies the correctness of the Arrow Spatial Bench generator by parsing the canonical TBL format //! and comparing with the generated Arrow RecordBatches @@ -17,8 +34,8 @@ use std::sync::Arc; use arrow::array::Array; use arrow::array::BinaryArray; use geo::Geometry; -use geozero::ToGeo; use geozero::wkb::Wkb; +use geozero::ToGeo; /// Macro that defines tests for tbl for a given type macro_rules! test_row_type { diff --git a/spatialbench-cli/Cargo.toml b/spatialbench-cli/Cargo.toml index a3c8e87..8c1ff93 100644 --- a/spatialbench-cli/Cargo.toml +++ b/spatialbench-cli/Cargo.toml @@ -1,6 +1,23 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + [package] name = "spatialbench-cli" -version = "1.1.1" +version = "0.1.0" authors = { workspace = true } description = "Blazing fast pure Rust SpatialBench data generator command line tool." readme = "README.md" @@ -8,13 +25,15 @@ edition = { workspace = true } homepage = { workspace = true } license = { workspace = true } repository = { workspace = true } +keywords = ["spatial", "geospatial", "benchmark", "cli", "data-generation"] +categories = ["science::geo", "database", "command-line-utilities", "development-tools"] [dependencies] arrow = "56" parquet = "56" clap = { version = "4.5.32", features = ["derive"] } -spatialbench = { path = "../spatialbench", version = "1.1.1"} -spatialbench-arrow = { path = "../spatialbench-arrow", version = "1.1.1" } +spatialbench = { path = "../spatialbench", version = "0.1.0"} +spatialbench-arrow = { path = "../spatialbench-arrow", version = "0.1.0" } tokio = { version = "1.44.1", features = ["full"]} futures = "0.3.31" num_cpus = "1.0" diff --git a/spatialbench-cli/src/csv.rs b/spatialbench-cli/src/csv.rs index 78f93e5..241dc0c 100644 --- a/spatialbench-cli/src/csv.rs +++ b/spatialbench-cli/src/csv.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! Implementations of [`Source`] for generating data in TBL format use super::generate::Source; use spatialbench::csv::{BuildingCsv, CustomerCsv, DriverCsv, TripCsv, VehicleCsv}; diff --git a/spatialbench-cli/src/generate.rs b/spatialbench-cli/src/generate.rs index bbe3cef..90cba4b 100644 --- a/spatialbench-cli/src/generate.rs +++ b/spatialbench-cli/src/generate.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! Parallel data generation: [`Source`] and [`Sink`] and [`generate_in_chunks`] //! //! These traits and function are used to generate data in parallel and write it to a sink diff --git a/spatialbench-cli/src/main.rs b/spatialbench-cli/src/main.rs index e1b5c4c..425e5d7 100644 --- a/spatialbench-cli/src/main.rs +++ b/spatialbench-cli/src/main.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! Spatial Bench data generation CLI with a dbgen compatible API. //! //! This crate provides a CLI for generating Spatial Bench data and tries to remain close diff --git a/spatialbench-cli/src/output_plan.rs b/spatialbench-cli/src/output_plan.rs index 75e441b..cdab006 100644 --- a/spatialbench-cli/src/output_plan.rs +++ b/spatialbench-cli/src/output_plan.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! * [`OutputLocation`]: where to output the generated data //! * [`OutputPlan`]: an output file that will be generated //! * [`OutputPlanGenerator`]: plans the output files to be generated diff --git a/spatialbench-cli/src/parquet.rs b/spatialbench-cli/src/parquet.rs index 53b60f4..45ffcbd 100644 --- a/spatialbench-cli/src/parquet.rs +++ b/spatialbench-cli/src/parquet.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! Parquet output format use crate::statistics::WriteStatistics; diff --git a/spatialbench-cli/src/plan.rs b/spatialbench-cli/src/plan.rs index fceace9..ed680b1 100644 --- a/spatialbench-cli/src/plan.rs +++ b/spatialbench-cli/src/plan.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! * [`GenerationPlan`]: how to generate a specific Spatial Bench dataset. use crate::{OutputFormat, Table}; diff --git a/spatialbench-cli/src/runner.rs b/spatialbench-cli/src/runner.rs index 882d1cf..a337490 100644 --- a/spatialbench-cli/src/runner.rs +++ b/spatialbench-cli/src/runner.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! [`PlanRunner`] for running [`OutputPlan`]s. use crate::csv::*; diff --git a/spatialbench-cli/src/spatial_config_file.rs b/spatialbench-cli/src/spatial_config_file.rs index 9027da7..876daeb 100644 --- a/spatialbench-cli/src/spatial_config_file.rs +++ b/spatialbench-cli/src/spatial_config_file.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use anyhow::Result; use serde::de::{self, Visitor}; use serde::{Deserialize, Deserializer}; diff --git a/spatialbench-cli/src/statistics.rs b/spatialbench-cli/src/statistics.rs index b4230dd..ff604b4 100644 --- a/spatialbench-cli/src/statistics.rs +++ b/spatialbench-cli/src/statistics.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! Statistics reporter for Spatial Bench data generation. use log::{debug, info}; diff --git a/spatialbench-cli/src/tbl.rs b/spatialbench-cli/src/tbl.rs index 8eeb448..5ee9a1a 100644 --- a/spatialbench-cli/src/tbl.rs +++ b/spatialbench-cli/src/tbl.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! Implementations of [`Source`] for generating data in TBL format use super::generate::Source; diff --git a/spatialbench-cli/src/zone/config.rs b/spatialbench-cli/src/zone/config.rs index 92890a6..9594c8b 100644 --- a/spatialbench-cli/src/zone/config.rs +++ b/spatialbench-cli/src/zone/config.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use anyhow::{anyhow, Result}; use parquet::basic::Compression as ParquetCompression; use std::path::PathBuf; diff --git a/spatialbench-cli/src/zone/datasource.rs b/spatialbench-cli/src/zone/datasource.rs index 1866460..d3c2ea9 100644 --- a/spatialbench-cli/src/zone/datasource.rs +++ b/spatialbench-cli/src/zone/datasource.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use anyhow::Result; use datafusion::{ common::config::ConfigOptions, diff --git a/spatialbench-cli/src/zone/main.rs b/spatialbench-cli/src/zone/main.rs index cfa59e3..83fb017 100644 --- a/spatialbench-cli/src/zone/main.rs +++ b/spatialbench-cli/src/zone/main.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use log::info; use parquet::basic::Compression as ParquetCompression; use std::io; diff --git a/spatialbench-cli/src/zone/mod.rs b/spatialbench-cli/src/zone/mod.rs index 5d8d3ee..4071454 100644 --- a/spatialbench-cli/src/zone/mod.rs +++ b/spatialbench-cli/src/zone/mod.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! Zone table generation module using DataFusion and remote Parquet files mod config; diff --git a/spatialbench-cli/src/zone/partition.rs b/spatialbench-cli/src/zone/partition.rs index b1f3a1d..dd3cfc4 100644 --- a/spatialbench-cli/src/zone/partition.rs +++ b/spatialbench-cli/src/zone/partition.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use crate::zone::stats::ZoneTableStats; use arrow_array::RecordBatch; use datafusion::prelude::*; diff --git a/spatialbench-cli/src/zone/stats.rs b/spatialbench-cli/src/zone/stats.rs index 5ba8ba0..5062af5 100644 --- a/spatialbench-cli/src/zone/stats.rs +++ b/spatialbench-cli/src/zone/stats.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use log::debug; const SUBTYPE_ROWS: &[(&str, i64)] = &[ diff --git a/spatialbench-cli/src/zone/transform.rs b/spatialbench-cli/src/zone/transform.rs index 74d9365..f7815c6 100644 --- a/spatialbench-cli/src/zone/transform.rs +++ b/spatialbench-cli/src/zone/transform.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use anyhow::Result; use arrow_schema::Schema; use datafusion::{prelude::*, sql::TableReference}; diff --git a/spatialbench-cli/src/zone/writer.rs b/spatialbench-cli/src/zone/writer.rs index d8dc824..b22671a 100644 --- a/spatialbench-cli/src/zone/writer.rs +++ b/spatialbench-cli/src/zone/writer.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use anyhow::Result; use arrow_array::RecordBatch; use arrow_schema::SchemaRef; diff --git a/spatialbench-cli/tests/cli_integration.rs b/spatialbench-cli/tests/cli_integration.rs index d1f325c..d840357 100644 --- a/spatialbench-cli/tests/cli_integration.rs +++ b/spatialbench-cli/tests/cli_integration.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use arrow_array::RecordBatch; use assert_cmd::Command; use parquet::arrow::arrow_reader::{ArrowReaderOptions, ParquetRecordBatchReaderBuilder}; diff --git a/spatialbench/Cargo.toml b/spatialbench/Cargo.toml index 5242d35..304f7ea 100644 --- a/spatialbench/Cargo.toml +++ b/spatialbench/Cargo.toml @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + [package] name = "spatialbench" authors = ["Apache Sedona "] @@ -8,6 +25,8 @@ version = { workspace = true } edition = { workspace = true } homepage = { workspace = true } license = { workspace = true } +keywords = ["spatial", "geospatial", "benchmark", "data-generation", "sql"] +categories = ["science::geo", "database", "data-structures", "development-tools"] # Designed to have no depdencies to make it easy to embed in other projects # See ../ARCHITECTURE.md for more details diff --git a/spatialbench/data/README.md b/spatialbench/data/README.md index fa19d21..10306f1 100644 --- a/spatialbench/data/README.md +++ b/spatialbench/data/README.md @@ -1,3 +1,22 @@ + + # TPCH Prepared Test Files This folder stores test files used to ensure consistency with Apache Trino's and diff --git a/spatialbench/src/csv.rs b/spatialbench/src/csv.rs index 37eb9ab..8518a47 100644 --- a/spatialbench/src/csv.rs +++ b/spatialbench/src/csv.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! CSV formatting support for the row struct objects generated by the library. use crate::generators::{Building, Customer, Driver, Trip, Vehicle}; diff --git a/spatialbench/src/dates.rs b/spatialbench/src/dates.rs index d8ccaeb..fae9e79 100644 --- a/spatialbench/src/dates.rs +++ b/spatialbench/src/dates.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! [`TPCHDate`] and date handling use rand::rngs::StdRng; use rand::{Rng, SeedableRng}; diff --git a/spatialbench/src/decimal.rs b/spatialbench/src/decimal.rs index bcf2a27..b3ca3c4 100644 --- a/spatialbench/src/decimal.rs +++ b/spatialbench/src/decimal.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! [`TPCHDecimal`] and decimal handling use std::fmt; diff --git a/spatialbench/src/distribution.rs b/spatialbench/src/distribution.rs index e6455d6..711075a 100644 --- a/spatialbench/src/distribution.rs +++ b/spatialbench/src/distribution.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use crate::random::RowRandomInt; use std::{ io::{self}, diff --git a/spatialbench/src/dists.dss b/spatialbench/src/dists.dss index badb3dd..1299c15 100644 --- a/spatialbench/src/dists.dss +++ b/spatialbench/src/dists.dss @@ -1,3 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. # # $Id: dists.dss,v 1.2 2005/01/03 20:08:58 jms Exp $ # diff --git a/spatialbench/src/generators.rs b/spatialbench/src/generators.rs index 122718f..073e525 100644 --- a/spatialbench/src/generators.rs +++ b/spatialbench/src/generators.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! Generators for each Spatial Bench Tables use crate::dates; use crate::dates::{GenerateUtils, TPCHDate}; diff --git a/spatialbench/src/kde.rs b/spatialbench/src/kde.rs index 07b7a0b..7d92e0a 100644 --- a/spatialbench/src/kde.rs +++ b/spatialbench/src/kde.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use rand::rngs::StdRng; use rand::{Rng, SeedableRng}; diff --git a/spatialbench/src/lib.rs b/spatialbench/src/lib.rs index fc33931..97dcfdd 100644 --- a/spatialbench/src/lib.rs +++ b/spatialbench/src/lib.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! Rust Spatial Bench Data Generator //! //! This crate provides a native Rust implementation of functions and utilities diff --git a/spatialbench/src/q_and_a/answers_sf1.rs b/spatialbench/src/q_and_a/answers_sf1.rs index 4844b44..dcc0285 100644 --- a/spatialbench/src/q_and_a/answers_sf1.rs +++ b/spatialbench/src/q_and_a/answers_sf1.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! TPC-H benchmark answers for scale factor of 1. //! //! Module for exposing the TPC-H answers in TBL format for Scale Factor 1 (SF 1). diff --git a/spatialbench/src/q_and_a/mod.rs b/spatialbench/src/q_and_a/mod.rs index 763ba72..cae4ad7 100644 --- a/spatialbench/src/q_and_a/mod.rs +++ b/spatialbench/src/q_and_a/mod.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! TPC-H Queries and Answers. //! //! This module exposes a bundled query and answer tuple that makes it diff --git a/spatialbench/src/q_and_a/queries.rs b/spatialbench/src/q_and_a/queries.rs index 9f37c69..80d1421 100644 --- a/spatialbench/src/q_and_a/queries.rs +++ b/spatialbench/src/q_and_a/queries.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! TPC-H benchmark queries. /// TPC-H Pricing Summary Report Query (Q1). diff --git a/spatialbench/src/random.rs b/spatialbench/src/random.rs index 2123652..9932ddc 100644 --- a/spatialbench/src/random.rs +++ b/spatialbench/src/random.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! Implementation of the core random number generators. use crate::{distribution::Distribution, text::TextPool}; diff --git a/spatialbench/src/spatial/cache.rs b/spatialbench/src/spatial/cache.rs index ee434c1..ca7d1b5 100644 --- a/spatialbench/src/spatial/cache.rs +++ b/spatialbench/src/spatial/cache.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + #[derive(Clone, Debug)] pub struct ThomasCache { pub cdf: Vec, diff --git a/spatialbench/src/spatial/config.rs b/spatialbench/src/spatial/config.rs index b31fd1e..fdff2e7 100644 --- a/spatialbench/src/spatial/config.rs +++ b/spatialbench/src/spatial/config.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + #[derive(Debug, Clone, Copy)] pub enum DistributionType { Uniform, diff --git a/spatialbench/src/spatial/defaults.rs b/spatialbench/src/spatial/defaults.rs index 4fadc96..91cb2d8 100644 --- a/spatialbench/src/spatial/defaults.rs +++ b/spatialbench/src/spatial/defaults.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use crate::spatial::{ ContinentAffines, DistributionParams, DistributionType, GeomType, SpatialConfig, SpatialGenerator, diff --git a/spatialbench/src/spatial/distributions.rs b/spatialbench/src/spatial/distributions.rs index b80ba8a..40d5e7a 100644 --- a/spatialbench/src/spatial/distributions.rs +++ b/spatialbench/src/spatial/distributions.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use crate::spatial::cache::{HierThomasCache, ThomasCache}; use crate::spatial::geometry::emit_geom; use crate::spatial::utils::{ diff --git a/spatialbench/src/spatial/generator.rs b/spatialbench/src/spatial/generator.rs index 5fcd176..e38b304 100644 --- a/spatialbench/src/spatial/generator.rs +++ b/spatialbench/src/spatial/generator.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use crate::spatial::cache::{HierThomasCache, ThomasCache}; use crate::spatial::distributions::*; use crate::spatial::{DistributionType, SpatialConfig}; diff --git a/spatialbench/src/spatial/geometry.rs b/spatialbench/src/spatial/geometry.rs index b753d57..bbac543 100644 --- a/spatialbench/src/spatial/geometry.rs +++ b/spatialbench/src/spatial/geometry.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use crate::spatial::utils::{ apply_affine, clamp_polygon_to_dateline, crosses_dateline, round_coordinates, wrap_around_longitude, diff --git a/spatialbench/src/spatial/mod.rs b/spatialbench/src/spatial/mod.rs index 2990cbc..8a1cacc 100644 --- a/spatialbench/src/spatial/mod.rs +++ b/spatialbench/src/spatial/mod.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + pub mod cache; pub mod config; pub mod defaults; diff --git a/spatialbench/src/spatial/overrides.rs b/spatialbench/src/spatial/overrides.rs index e087943..8e03bfc 100644 --- a/spatialbench/src/spatial/overrides.rs +++ b/spatialbench/src/spatial/overrides.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use crate::spatial::SpatialGenerator; use once_cell::sync::OnceCell; diff --git a/spatialbench/src/spatial/utils/affine.rs b/spatialbench/src/spatial/utils/affine.rs index 5100cad..4083533 100644 --- a/spatialbench/src/spatial/utils/affine.rs +++ b/spatialbench/src/spatial/utils/affine.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + #[inline] pub fn apply_affine(x: f64, y: f64, m: &[f64; 6]) -> (f64, f64) { (m[0] * x + m[1] * y + m[2], m[3] * x + m[4] * y + m[5]) diff --git a/spatialbench/src/spatial/utils/antimeridian.rs b/spatialbench/src/spatial/utils/antimeridian.rs index 22e9190..89b0a54 100644 --- a/spatialbench/src/spatial/utils/antimeridian.rs +++ b/spatialbench/src/spatial/utils/antimeridian.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use geo::{Centroid, LineString, Polygon}; /// Normalizes longitude values to the valid range [-180, 180] by wrapping around the antimeridian. diff --git a/spatialbench/src/spatial/utils/continent.rs b/spatialbench/src/spatial/utils/continent.rs index 4abee17..ed7ff6d 100644 --- a/spatialbench/src/spatial/utils/continent.rs +++ b/spatialbench/src/spatial/utils/continent.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use crate::spatial::ContinentAffines; use std::f64::consts::PI; diff --git a/spatialbench/src/spatial/utils/mod.rs b/spatialbench/src/spatial/utils/mod.rs index ab79032..2989ad0 100644 --- a/spatialbench/src/spatial/utils/mod.rs +++ b/spatialbench/src/spatial/utils/mod.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + pub mod affine; mod antimeridian; pub mod continent; diff --git a/spatialbench/src/spatial/utils/random.rs b/spatialbench/src/spatial/utils/random.rs index 6eeb1d4..c59c572 100644 --- a/spatialbench/src/spatial/utils/random.rs +++ b/spatialbench/src/spatial/utils/random.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + use rand::rngs::StdRng; use rand::{Rng, SeedableRng}; use std::f64::consts::PI; diff --git a/spatialbench/src/text.rs b/spatialbench/src/text.rs index af14539..e0f6d8e 100644 --- a/spatialbench/src/text.rs +++ b/spatialbench/src/text.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! Implementation of text pool and text generation. //! //! Most of this code has been ported from the Apache Trino SpatialBench generator diff --git a/spatialbench/tests/geometry_tests.rs b/spatialbench/tests/geometry_tests.rs index 3c484e4..8eec747 100644 --- a/spatialbench/tests/geometry_tests.rs +++ b/spatialbench/tests/geometry_tests.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! Geometry validation tests for generated spatial data. //! //! This test suite validates that all generated geometries meet quality and correctness standards: diff --git a/spatialbench/tests/integration_tests.rs b/spatialbench/tests/integration_tests.rs index 1880d79..528cbc0 100644 --- a/spatialbench/tests/integration_tests.rs +++ b/spatialbench/tests/integration_tests.rs @@ -1,3 +1,20 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + //! Consistence test suite to test the `IntoIterator` trait implementation //! for the generators in the `spatialbench` crate.