From 9e28601b8b7ff7a0955510ab2660c7d3789a3ead Mon Sep 17 00:00:00 2001 From: Yury-Fridlyand Date: Wed, 28 Sep 2022 13:59:40 -0700 Subject: [PATCH 01/55] Merge pull request #837 from Bit-Quill/integ-reorganize-workflows (#864) Reorganize GitHub workflows. (cherry picked from commit 10e44ee6439cf130fdc9bff3081503951c42a1cd) Signed-off-by: Yury-Fridlyand --- .github/workflows/bi-connectors.yml | 2 + .github/workflows/codeql-analysis.yml | 63 ++---- .github/workflows/dco.yml | 2 +- .../draft-release-notes-workflow.yml | 5 +- .github/workflows/link-checker.yml | 9 +- .../workflows/sql-cli-release-workflow.yml | 71 ------ .../sql-cli-test-and-build-workflow.yml | 51 +++-- .../workflows/sql-jdbc-push-jdbc-maven.yml | 49 ---- .../workflows/sql-jdbc-release-workflow.yml | 58 ----- .../sql-jdbc-test-and-build-workflow.yml | 17 +- .github/workflows/sql-odbc-main.yml | 40 ++-- .../workflows/sql-odbc-release-workflow.yml | 212 ------------------ .github/workflows/sql-release-workflow.yml | 58 ----- .../workflows/sql-test-and-build-workflow.yml | 46 +++- .github/workflows/sql-test-workflow.yml | 88 ++++++++ .../sql-workbench-release-workflow.yml | 72 ------ .../sql-workbench-test-and-build-workflow.yml | 27 ++- sql-cli/tests/test_opensearch_connection.py | 1 + 18 files changed, 243 insertions(+), 628 deletions(-) delete mode 100644 .github/workflows/sql-cli-release-workflow.yml delete mode 100644 .github/workflows/sql-jdbc-push-jdbc-maven.yml delete mode 100644 .github/workflows/sql-jdbc-release-workflow.yml delete mode 100644 .github/workflows/sql-odbc-release-workflow.yml delete mode 100644 .github/workflows/sql-release-workflow.yml create mode 100644 .github/workflows/sql-test-workflow.yml delete mode 100644 .github/workflows/sql-workbench-release-workflow.yml diff --git a/.github/workflows/bi-connectors.yml b/.github/workflows/bi-connectors.yml index d39314f29e..45c76fd8e6 100644 --- a/.github/workflows/bi-connectors.yml +++ b/.github/workflows/bi-connectors.yml @@ -1,6 +1,8 @@ name: Build connectors for BI tools on: + pull_request: + types: [opened, reopened] push: paths: - 'bi-connectors/PowerBIConnector/**' diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 08d827bd45..92ab3ddcf3 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -1,70 +1,39 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -# -# ******** NOTE ******** -# We have attempted to detect the languages in your repository. Please check -# the `language` matrix defined below to confirm you have the correct set of -# supported CodeQL languages. -# ******** NOTE ******** - name: "CodeQL" on: pull_request: branches: - - master - - opendistro-* + - 'main' + - '[1-9]+.[0-9x]+' + types: [opened, reopened] push: - branches: - - master - - opendistro-* - + branches-ignore: + - 'dependabot/**' + paths: + - '**/*.java' + - '.github/workflows/codeql-analysis.yml' jobs: analyze: name: CodeQL-Scan - runs-on: ubuntu-18.04 - + runs-on: ubuntu-latest + permissions: + security-events: write + actions: read strategy: fail-fast: false matrix: language: [ 'java' ] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] - # Learn more... - # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@v2 with: languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v1 - - # ℹ️ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl - - # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release - + uses: github/codeql-action/autobuild@v2 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/dco.yml b/.github/workflows/dco.yml index 53ed5304c2..cf30ea89dc 100644 --- a/.github/workflows/dco.yml +++ b/.github/workflows/dco.yml @@ -15,4 +15,4 @@ jobs: - name: DCO Check uses: tim-actions/dco@v1.1.0 with: - commits: ${{ steps.get-pr-commits.outputs.commits }} \ No newline at end of file + commits: ${{ steps.get-pr-commits.outputs.commits }} diff --git a/.github/workflows/draft-release-notes-workflow.yml b/.github/workflows/draft-release-notes-workflow.yml index 660a8a1a51..ebd9e7e3bc 100644 --- a/.github/workflows/draft-release-notes-workflow.yml +++ b/.github/workflows/draft-release-notes-workflow.yml @@ -1,9 +1,12 @@ name: Release Drafter on: + pull_request: + types: [opened, reopened] push: branches: - - main + - 'main' + - '[1-9]+.[0-9x]+' jobs: update_release_draft: diff --git a/.github/workflows/link-checker.yml b/.github/workflows/link-checker.yml index b113ef24ec..97b228fe72 100644 --- a/.github/workflows/link-checker.yml +++ b/.github/workflows/link-checker.yml @@ -1,9 +1,12 @@ name: Link Checker + on: - push: - branches: [ main ] pull_request: - branches: [ main ] + types: [opened, reopened] + push: + branches: + - 'main' + - '[1-9]+.[0-9x]+' jobs: linkchecker: diff --git a/.github/workflows/sql-cli-release-workflow.yml b/.github/workflows/sql-cli-release-workflow.yml deleted file mode 100644 index 606d848829..0000000000 --- a/.github/workflows/sql-cli-release-workflow.yml +++ /dev/null @@ -1,71 +0,0 @@ -name: Release SQL CLI Artifacts -# This workflows is triggered on creating tags to main -on: - push: - tags: - - 'v*' - -jobs: - build: - - runs-on: ubuntu-latest - defaults: - run: - working-directory: sql-cli - strategy: - matrix: - python-version: [3.8] - - steps: - - name: Checkout SQL CLI - uses: actions/checkout@v2 - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_STAGING_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_STAGING_SECRET_ACCESS_KEY }} - aws-region: us-east-1 - - - name: Install Dependencies - run: | - python -m pip install --upgrade pip - pip install setuptools wheel twine - - - name: Build - run: | - python setup.py sdist bdist_wheel - - - name: Publish to S3 - shell: bash - run: | - tarball=`ls ./dist/*.tar.gz` - wheel=`ls ./dist/*.whl` - - renamed_wheel=`echo $wheel | sed 's/_/-/g'` - mv "$wheel" "$renamed_wheel" - wheel=`ls ./dist/*.whl` - - # Inject the build number before the suffix - tarball_outfile=`basename ${tarball%.tar.gz}-build-${GITHUB_RUN_NUMBER}.tar.gz` - wheel_outfile=`basename ${wheel%.whl}-build-${GITHUB_RUN_NUMBER}.whl` - - s3_prefix="s3://staging.artifacts.opendistroforelasticsearch.amazon.com/snapshots/elasticsearch-clients/sql-cli/" - - echo "Copying ${tarball} to ${s3_prefix}${tarball_outfile}" - aws s3 cp --quiet $tarball ${s3_prefix}${tarball_outfile} - - echo "Copying ${wheel} to ${s3_prefix}${wheel_outfile}" - aws s3 cp --quiet $wheel ${s3_prefix}${wheel_outfile} - - # TODO: Publish to PyPI - # - name: Publish to PyPI - # env: - # TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} - # TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} - # run: twine upload dist/* diff --git a/.github/workflows/sql-cli-test-and-build-workflow.yml b/.github/workflows/sql-cli-test-and-build-workflow.yml index 3de1ff3aa5..608b65a5ab 100644 --- a/.github/workflows/sql-cli-test-and-build-workflow.yml +++ b/.github/workflows/sql-cli-test-and-build-workflow.yml @@ -1,10 +1,17 @@ name: SQL CLI Test and Build -on: [pull_request, push] +on: + pull_request: + types: [opened, reopened] + push: + branches-ignore: + - 'dependabot/**' + paths: + - 'sql-cli/**' + - '.github/workflows/sql-cli-test-and-build-workflow.yml' jobs: build: - runs-on: ubuntu-latest defaults: run: @@ -12,13 +19,14 @@ jobs: strategy: matrix: python-version: [3.8] + opensearch-version: [ latest ] steps: - name: Checkout SQL CLI - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} @@ -28,26 +36,21 @@ jobs: pip install -r requirements-dev.txt pip install setuptools wheel - #TODO: will setup CI for IT once we have OpenSearch and sql plugin release. Not it only runs UT - # It can also be refactored by launching OpenSearch instance with plugin installed from gradle. - - # - name: Set up ES and install SQL plugin - # run: | - # sudo add-apt-repository ppa:openjdk-r/ppa - # sudo apt update - # sudo apt install openjdk-14-jdk - # sudo apt install unzip - # wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-7.10.0-amd64.deb - # sudo dpkg -i elasticsearch-oss-7.10.0-amd64.deb - # sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install --batch https://d3g5vo6xdbdb9a.cloudfront.net/downloads/elasticsearch-plugins/opensearch-sql/opensearch_sql-1.12.0.0.zip - # sudo systemctl start elasticsearch.service + # tests are designed to run against http://localhost:9200, so we have to disable/remove security plugin + - name: Download and run OpenSearch + run: | + docker run -p 9200:9200 -e "discovery.type=single-node" -e "DISABLE_SECURITY_PLUGIN=true" --name test -d opensearchproject/opensearch:${{ matrix.opensearch-version }} + + - name: Wait for cluster to start + uses: nick-fields/retry@v2 + with: + timeout_seconds: 1 + max_attempts: 30 + command: curl -q localhost:9200 - name: Run Tox Testing run: tox - # - name: Stop ES - # run: sudo systemctl stop elasticsearch.service - - name: Build Artifact run: python setup.py sdist bdist_wheel @@ -57,7 +60,13 @@ jobs: cp -r ./dist/*.tar.gz ./dist/*.whl opensearchsql-builds/ - name: Upload Artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: opensearchsql path: sql-cli/opensearchsql-builds + + - name: Clean up container + if: always() + run: | + docker container stop test + docker container rm test diff --git a/.github/workflows/sql-jdbc-push-jdbc-maven.yml b/.github/workflows/sql-jdbc-push-jdbc-maven.yml deleted file mode 100644 index 3c96447233..0000000000 --- a/.github/workflows/sql-jdbc-push-jdbc-maven.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: Upload sql-jdbc Jar to Maven - -# This workflow will upload the sql-jdbc jar to maven when a new tag is cut -on: - push: - tags: - - v* - -jobs: - upload-jdbc-jar: - runs-on: ubuntu-latest - defaults: - run: - working-directory: sql-jdbc - name: Upload Jar to Maven - steps: - - name: Checkout Repo - uses: actions/checkout@v2 - - - name: Configure AWS CLI - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: us-east-1 - - # Since release workflow uses java 10 - - name: Setup Java - uses: actions/setup-java@v1 - with: - java-version: '10' - - - name: Upload jdbc Jar to Maven - env: - passphrase: ${{ secrets.PASSPHRASE }} - run: | - cd .. - export JAVA10_HOME=$JAVA_HOME - aws s3 cp s3://opendistro-docs/github-actions/pgp-public-key . - aws s3 cp s3://opendistro-docs/github-actions/pgp-private-key . - - gpg --import pgp-public-key - gpg --allow-secret-key-import --import pgp-private-key - - - mkdir /home/runner/.gradle - aws s3 cp s3://opendistro-docs/github-actions/gradle.properties /home/runner/.gradle/ - cd sql-jdbc - ./gradlew publishShadowPublicationToSonatype-stagingRepository -Dcompiler.java=10 -Dbuild.snapshot=false -Djavax.net.ssl.trustStore=$JAVA_HOME/lib/security/cacerts diff --git a/.github/workflows/sql-jdbc-release-workflow.yml b/.github/workflows/sql-jdbc-release-workflow.yml deleted file mode 100644 index 39053615ee..0000000000 --- a/.github/workflows/sql-jdbc-release-workflow.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: Build and Release SQL-JDBC -# This workflow is triggered on creating tags to main or an opensearch release branch -on: - push: - tags: - - "v*" - -jobs: - Release-SQL-JDBC: - strategy: - matrix: - java: [10] - - name: Build and Release JDBC Plugin - runs-on: ubuntu-latest - defaults: - run: - working-directory: sql-jdbc - - steps: - - name: Checkout SQL-JDBC - uses: actions/checkout@v1 - - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: us-east-1 - - - name: Setup Java ${{ matrix.java }} - uses: actions/setup-java@v1 - with: - java-version: ${{ matrix.java }} - - - name: Run build - run: | - ./gradlew publishShadowPublicationToInternal-releasesRepository '-Dorg.gradle.jvmargs=--add-modules java.xml.bind' -Dbuild.snapshot=false - - - name: Configure Staging AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_STAGING_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_STAGING_SECRET_ACCESS_KEY }} - aws-region: us-east-1 - - - name: Publish to S3 - shell: bash - run: | - jar=`ls -1t build/libs/*.jar | grep -v "SNAPSHOT.jar" | grep -v "sources.jar" | head -1` - - # Inject the build number before the suffix - jar_outfile=`basename ${jar%.jar}-build-${GITHUB_RUN_NUMBER}.jar` - - s3_prefix="s3://staging.artifacts.opendistroforelasticsearch.amazon.com/snapshots/elasticsearch-clients/sql-jdbc/" - - echo "Copying ${jar} to ${s3_prefix}${jar_outfile}" - aws s3 cp --quiet $jar ${s3_prefix}${jar_outfile} diff --git a/.github/workflows/sql-jdbc-test-and-build-workflow.yml b/.github/workflows/sql-jdbc-test-and-build-workflow.yml index 52d0dd68f8..b7d9564fc5 100644 --- a/.github/workflows/sql-jdbc-test-and-build-workflow.yml +++ b/.github/workflows/sql-jdbc-test-and-build-workflow.yml @@ -1,6 +1,14 @@ name: SQL JDBC Java CI -on: [push, pull_request] +on: + pull_request: + types: [opened, reopened] + push: + branches-ignore: + - 'dependabot/**' + paths: + - 'sql-jdbc/**' + - '.github/workflows/sql-jdbc-test-and-build-workflow.yml' jobs: build: @@ -15,11 +23,12 @@ jobs: working-directory: sql-jdbc steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 - name: Set up JDK ${{ matrix.java }} - uses: actions/setup-java@v1 + uses: actions/setup-java@v3 with: + distribution: 'temurin' java-version: ${{ matrix.java }} - name: Build with Gradle @@ -31,7 +40,7 @@ jobs: cp ./build/libs/*.jar sql-jdbc-builds - name: Upload Artifacts - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v2 with: name: sql-jdbc path: sql-jdbc/sql-jdbc-builds diff --git a/.github/workflows/sql-odbc-main.yml b/.github/workflows/sql-odbc-main.yml index 0a22780aa9..eee65e5b29 100644 --- a/.github/workflows/sql-odbc-main.yml +++ b/.github/workflows/sql-odbc-main.yml @@ -1,6 +1,14 @@ name: OpenSearch ODBC Driver -on: [push, pull_request] +on: + pull_request: + types: [opened, reopened] + push: + branches-ignore: + - 'dependabot/**' + paths: + - 'sql-odbc/**' + - '.github/workflows/sql-odbc-main.yml' env: CI_OUTPUT_PATH: "sql-odbc/ci-output" @@ -9,6 +17,8 @@ env: ODBC_BUILD_PATH: "./build/odbc/build" AWS_SDK_INSTALL_PATH: "./build/aws-sdk/install" +# Tests are disabled (commented out) in all jobs because they are fail and/or outdated +# Keeping them for the brighten future when we can re-activate them jobs: build-mac: runs-on: macos-10.15 @@ -16,14 +26,14 @@ jobs: run: working-directory: sql-odbc steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 - name: run-cppcheck run: | brew install cppcheck sh run_cppcheck.sh - name: upload-cppcheck-results if: failure() - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v3 with: name: cppcheck-results path: sql-odbc/cppcheck-results.log @@ -61,19 +71,19 @@ jobs: # cp ./bin64/*.log test-output - name: upload-build if: success() - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v3 with: name: mac64-build path: sql-odbc/build-output - name: upload-installer if: success() - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v3 with: name: mac64-installer path: sql-odbc/installer #- name: upload-test-results - # if: success() - # uses: actions/upload-artifact@v1 + # if: always() + # uses: actions/upload-artifact@v3 # with: # name: mac-test-results # path: test-output @@ -83,7 +93,7 @@ jobs: run: working-directory: sql-odbc steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 - name: Get specific version CMake, v3.18.3 uses: lukka/get-cmake@v3.18.3 - name: add-msbuild-to-path @@ -106,19 +116,19 @@ jobs: .\scripts\prepare_ci_output.ps1 $Env:ODBC_BIN_PATH $Env:ODBC_LIB_PATH $Env:ODBC_BUILD_PATH - name: upload-build if: always() - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v3 with: name: windows32-build path: sql-odbc/ci-output/build - name: upload-installer if: always() - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v3 with: name: windows32-installer path: sql-odbc/ci-output/installer #- name: upload-test-results # if: always() - # uses: actions/upload-artifact@v1 + # uses: actions/upload-artifact@v3 # with: # name: windows-test-results # path: $CI_OUTPUT_PATH/test @@ -128,7 +138,7 @@ jobs: run: working-directory: sql-odbc steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 - name: Get specific version CMake, v3.18.3 uses: lukka/get-cmake@v3.18.3 - name: add-msbuild-to-path @@ -151,19 +161,19 @@ jobs: .\scripts\prepare_ci_output.ps1 $Env:ODBC_BIN_PATH $Env:ODBC_LIB_PATH $Env:ODBC_BUILD_PATH - name: upload-build if: always() - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v3 with: name: windows64-build path: sql-odbc/ci-output/build - name: upload-installer if: always() - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v3 with: name: windows64-installer path: sql-odbc/ci-output/installer #- name: upload-test-results # if: always() - # uses: actions/upload-artifact@v1 + # uses: actions/upload-artifact@v3 # with: # name: windows-test-results # path: sql-odbc/ci-output/test-output diff --git a/.github/workflows/sql-odbc-release-workflow.yml b/.github/workflows/sql-odbc-release-workflow.yml deleted file mode 100644 index 0d08865378..0000000000 --- a/.github/workflows/sql-odbc-release-workflow.yml +++ /dev/null @@ -1,212 +0,0 @@ -name: Build and Release SQL-ODBC -# This workflow is triggered on creating tags to main or an opensearch release branch -on: - push: - tags: - - 'v*' - -env: - CI_OUTPUT_PATH: "sql-odbc/ci-output" - ODBC_LIB_PATH: "./build/odbc/lib" - ODBC_BIN_PATH: "./build/odbc/bin" - ODBC_BUILD_PATH: "./build/odbc/build" - AWS_SDK_INSTALL_PATH: "./build/aws-sdk/install" - PLUGIN_NAME: opensearch-sql-odbc - OD_VERSION: 2.3.0.0 - -jobs: - build-mac: - runs-on: macos-10.15 - defaults: - run: - working-directory: sql-odbc - steps: - - uses: actions/checkout@v1 - - name: run-cppcheck - run: | - brew install cppcheck - sh run_cppcheck.sh - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_STAGING_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_STAGING_SECRET_ACCESS_KEY }} - aws-region: us-east-1 - - name: upload-cppcheck-results - if: failure() - uses: actions/upload-artifact@v1 - with: - name: cppcheck-results - path: sql-odbc/cppcheck-results.log - - name: get-dependencies - run: | - brew unlink unixodbc - brew install curl - brew install cmake - brew install libiodbc - - name: configure-and-build-driver - run: | - ./build_mac_release64.sh - - name: build-installer - if: success() - run: | - cd cmake-build64 - cmake ../src - make - cpack . - cd .. - - name: create-output - if: success() - run: | - mkdir build-output - mkdir test-output - mkdir installer - cp ./build/odbc/lib/*.dylib build-output/ - cp ./build/odbc/lib/*.a build-output/ - cp ./cmake-build64/*.pkg installer/ - # cp $(ls -d bin64/* | grep -v "\.") build - - name: upload-build - if: success() - uses: actions/upload-artifact@v1 - with: - name: mac64-build - path: sql-odbc/build-output - - name: upload-installer - if: success() - uses: actions/upload-artifact@v1 - with: - name: mac64-installer - path: sql-odbc/installer - - name: upload-artifacts-s3 - if: success() - run: | - cd installer - - pkg=`ls -1t *.pkg | grep "OpenSearch SQL ODBC Driver" | head -1` - mv "$pkg" "${{ env.PLUGIN_NAME }}-${{ env.OD_VERSION }}-macos-x64.pkg" - pkg=`ls -1t *.pkg | grep "${{ env.PLUGIN_NAME }}-${{ env.OD_VERSION }}-macos-x64.pkg" | head -1` - - # Inject the build number before the suffix - pkg_outfile=`basename ${pkg%.pkg}-build-${GITHUB_RUN_NUMBER}.pkg` - - s3_prefix="s3://staging.artifacts.opendistroforelasticsearch.amazon.com/snapshots/elasticsearch-clients/sql-odbc/" - - echo "Copying ${pkg} to ${s3_prefix}${pkg_outfile}" - aws s3 cp --quiet $pkg ${s3_prefix}${pkg_outfile} - - build-windows32: - runs-on: windows-latest - defaults: - run: - working-directory: sql-odbc - steps: - - uses: actions/checkout@v1 - - name: Get specific version CMake, v3.18.3 - uses: lukka/get-cmake@v3.18.3 - - name: add-msbuild-to-path - uses: microsoft/setup-msbuild@v1.0.2 - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_STAGING_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_STAGING_SECRET_ACCESS_KEY }} - aws-region: us-east-1 - - name: configure-and-build-driver - run: | - .\build_win_release32.ps1 - - name: build-installer - if: success() - run: | - .\scripts\build_installer.ps1 Release Win32 .\src $Env:ODBC_BUILD_PATH $Env:AWS_SDK_INSTALL_PATH - - name: prepare-output - if: always() - run: | - .\scripts\prepare_ci_output.ps1 $Env:ODBC_BIN_PATH $Env:ODBC_LIB_PATH $Env:ODBC_BUILD_PATH - - name: upload-build - if: always() - uses: actions/upload-artifact@v1 - with: - name: windows32-build - path: sql-odbc/ci-output/build - - name: upload-installer - if: always() - uses: actions/upload-artifact@v1 - with: - name: windows32-installer - path: sql-odbc/ci-output/installer - - name: upload-artifacts-s3 - if: success() - shell: bash - run: | - cd ci-output/installer - - msi=`ls -1t *.msi | grep "OpenSearch SQL ODBC Driver" | head -1` - mv "$msi" "${{ env.PLUGIN_NAME }}-${{ env.OD_VERSION }}-windows-x86.msi" - msi=`ls -1t *.msi | grep "${{ env.PLUGIN_NAME }}-${{ env.OD_VERSION }}-windows-x86.msi" | head -1` - - # Inject the build number before the suffix - msi_outfile=`basename ${msi%.msi}-build-${GITHUB_RUN_NUMBER}.msi` - - s3_prefix="s3://staging.artifacts.opendistroforelasticsearch.amazon.com/snapshots/elasticsearch-clients/sql-odbc/" - - echo "Copying ${msi} to ${s3_prefix}${msi_outfile}" - aws s3 cp --quiet $msi ${s3_prefix}${msi_outfile} - - build-windows64: - runs-on: windows-latest - defaults: - run: - working-directory: sql-odbc - steps: - - uses: actions/checkout@v1 - - name: Get specific version CMake, v3.18.3 - uses: lukka/get-cmake@v3.18.3 - - name: add-msbuild-to-path - uses: microsoft/setup-msbuild@v1.0.2 - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_STAGING_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_STAGING_SECRET_ACCESS_KEY }} - aws-region: us-east-1 - - name: configure-and-build-driver - run: | - .\build_win_release64.ps1 - - name: build-installer - if: success() - run: | - .\scripts\build_installer.ps1 Release x64 .\src $Env:ODBC_BUILD_PATH $Env:AWS_SDK_INSTALL_PATH - - name: prepare-output - if: always() - run: | - .\scripts\prepare_ci_output.ps1 $Env:ODBC_BIN_PATH $Env:ODBC_LIB_PATH $Env:ODBC_BUILD_PATH - - name: upload-build - if: always() - uses: actions/upload-artifact@v1 - with: - name: windows64-build - path: sql-odbc/ci-output/build - - name: upload-installer - if: always() - uses: actions/upload-artifact@v1 - with: - name: windows64-installer - path: sql-odbc/ci-output/installer - - name: upload-artifacts-s3 - if: success() - shell: bash - run: | - cd ci-output/installer - - msi=`ls -1t *.msi | grep "OpenSearch SQL ODBC Driver" | head -1` - mv "$msi" "${{ env.PLUGIN_NAME }}-${{ env.OD_VERSION }}-windows-x64.msi" - msi=`ls -1t *.msi | grep "${{ env.PLUGIN_NAME }}-${{ env.OD_VERSION }}-windows-x64.msi" | head -1` - - # Inject the build number before the suffix - msi_outfile=`basename ${msi%.msi}-build-${GITHUB_RUN_NUMBER}.msi` - - s3_prefix="s3://staging.artifacts.opendistroforelasticsearch.amazon.com/snapshots/elasticsearch-clients/sql-odbc/" - - echo "Copying ${msi} to ${s3_prefix}${msi_outfile}" - aws s3 cp --quiet $msi ${s3_prefix}${msi_outfile} - diff --git a/.github/workflows/sql-release-workflow.yml b/.github/workflows/sql-release-workflow.yml deleted file mode 100644 index e371723f34..0000000000 --- a/.github/workflows/sql-release-workflow.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: Release SQL Artifacts -# This workflow is triggered on creating tags to main or an opensearch release branch -on: - push: - tags: - - 'v*' - -jobs: - build: - strategy: - matrix: - java: [14] - - name: Build and Release SQL Plugin - runs-on: ubuntu-latest - - steps: - - name: Checkout SQL - uses: actions/checkout@v1 - - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_STAGING_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_STAGING_SECRET_ACCESS_KEY }} - aws-region: us-east-1 - - - name: Setup Java ${{ matrix.java }} - uses: actions/setup-java@v1 - with: - java-version: ${{ matrix.java }} - - - name: Run build - run: | - ./gradlew build buildDeb buildRpm --no-daemon --refresh-dependencies --console=plain -Dbuild.snapshot=false -x doctest:doctest - - - name: Upload to S3 - shell: bash - run: | - zip=`ls plugin/build/distributions/*.zip` - rpm=`ls plugin/build/distributions/*.rpm` - deb=`ls plugin/build/distributions/*.deb` - - # Inject the build number before the suffix - zip_outfile=`basename ${zip%.zip}-build-${GITHUB_RUN_NUMBER}.zip` - rpm_outfile=`basename ${rpm%.rpm}-build-${GITHUB_RUN_NUMBER}.rpm` - deb_outfile=`basename ${deb%.deb}-build-${GITHUB_RUN_NUMBER}.deb` - - s3_prefix="s3://staging.artifacts.opendistroforelasticsearch.amazon.com/snapshots/elasticsearch-plugins/sql/" - - echo "Copying ${zip} to ${s3_prefix}${zip_outfile}" - aws s3 cp --quiet $zip ${s3_prefix}${zip_outfile} - - echo "Copying ${rpm} to ${s3_prefix}${rpm_outfile}" - aws s3 cp --quiet $rpm ${s3_prefix}${rpm_outfile} - - echo "Copying ${deb} to ${s3_prefix}${deb_outfile}" - aws s3 cp --quiet $deb ${s3_prefix}${deb_outfile} diff --git a/.github/workflows/sql-test-and-build-workflow.yml b/.github/workflows/sql-test-and-build-workflow.yml index fcc63433a8..9d9758f5a1 100644 --- a/.github/workflows/sql-test-and-build-workflow.yml +++ b/.github/workflows/sql-test-and-build-workflow.yml @@ -1,6 +1,22 @@ name: SQL Java CI -on: [push, pull_request] +on: + pull_request: + types: [opened, reopened] + push: + branches-ignore: + - 'dependabot/**' + paths: + - '**/*.java' + - '**/*.g4' + - '!sql-jdbc/**' + - '**gradle*' + - '**lombok*' + - '**checkstyle*' + - 'integ-test/**' + - '**/*.jar' + - '**/*.pom' + - '.github/workflows/sql-test-and-build-workflow.yml' jobs: build: @@ -12,15 +28,16 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 - name: Set up JDK ${{ matrix.java }} - uses: actions/setup-java@v1 + uses: actions/setup-java@v3 with: + distribution: 'temurin' java-version: ${{ matrix.java }} - name: Build with Gradle - run: ./gradlew build assemble + run: ./gradlew --continue build assemble - name: Run backward compatibility tests run: ./scripts/bwctest.sh @@ -32,13 +49,30 @@ jobs: # This step uses the codecov-action Github action: https://github.com/codecov/codecov-action - name: Upload SQL Coverage Report - uses: codecov/codecov-action@v1 + if: always() + uses: codecov/codecov-action@v3 with: flags: sql-engine token: ${{ secrets.CODECOV_TOKEN }} - name: Upload Artifacts - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v2 with: name: opensearch-sql path: opensearch-sql-builds + + - name: Upload test reports + if: always() + uses: actions/upload-artifact@v2 + with: + name: test-reports + path: | + sql/build/reports/** + ppl/build/reports/** + core/build/reports/** + common/build/reports/** + opensearch/build/reports/** + integ-test/build/reports/** + protocol/build/reports/** + legacy/build/reports/** + plugin/build/reports/** diff --git a/.github/workflows/sql-test-workflow.yml b/.github/workflows/sql-test-workflow.yml new file mode 100644 index 0000000000..d869cb9cc7 --- /dev/null +++ b/.github/workflows/sql-test-workflow.yml @@ -0,0 +1,88 @@ +name: SQL Plugin Tests + +on: + workflow_dispatch: + +jobs: + build: + strategy: + matrix: + java: + - 11 + - 17 + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Set up JDK ${{ matrix.java }} + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: ${{ matrix.java }} + + - name: Run tests + id: tests + run: | + # checkstyle + ./gradlew :opensearch:checkstyleMain || echo "* Checkstyle failed for opensearch/src" > report.log + ./gradlew :opensearch:checkstyleTest || echo "* Checkstyle failed for opensearch/test" >> report.log + ./gradlew :sql:checkstyleMain || echo "* Checkstyle failed for sql/src" >> report.log + ./gradlew :sql:checkstyleTest || echo "* Checkstyle failed for sql/test" >> report.log + ./gradlew :ppl:checkstyleMain || echo "* Checkstyle failed for ppl/src" >> report.log + ./gradlew :ppl:checkstyleTest || echo "* Checkstyle failed for ppl/test" >> report.log + ./gradlew :core:checkstyleMain || echo "* Checkstyle failed for core/src" >> report.log + ./gradlew :core:checkstyleTest || echo "* Checkstyle failed for core/test" >> report.log + ./gradlew :common:checkstyleMain || echo "* Checkstyle failed for common/src" >> report.log + ./gradlew :common:checkstyleTest || echo "* Checkstyle failed for common/test" >> report.log + ./gradlew :legacy:checkstyleMain || echo "* Checkstyle failed for legacy/src" >> report.log + ./gradlew :legacy:checkstyleTest || echo "* Checkstyle failed for legacy/test" >> report.log + ./gradlew :protocol:checkstyleMain || echo "* Checkstyle failed for protocol/src" >> report.log + ./gradlew :protocol:checkstyleTest || echo "* Checkstyle failed for protocol/test" >> report.log + ./gradlew :opensearch-sql-plugin:checkstyleMain || echo "* Checkstyle failed for plugin/src" >> report.log + ./gradlew :opensearch-sql-plugin:checkstyleTest || echo "* Checkstyle failed for plugin/test" >> report.log + # Add checkstyle for `integ-test` when fixed + # Unit tests + ./gradlew :opensearch:test || echo "* Unit tests failed for opensearch" >> report.log + ./gradlew :ppl:test || echo "* Unit tests failed for sql" >> report.log + ./gradlew :sql:test || echo "* Unit tests failed for ppl" >> report.log + ./gradlew :core:test || echo "* Unit tests failed for core" >> report.log + ./gradlew :protocol:test || echo "* Unit tests failed for protocol" >> report.log + ./gradlew :opensearch-sql-plugin:test || echo "* Unit tests failed for plugin" >> report.log + ./gradlew :legacy:test || echo "* Unit tests failed for legacy" >> report.log + # jacoco + ./gradlew :opensearch:jacocoTestCoverageVerification || echo "* Jacoco failed for opensearch" >> report.log + ./gradlew :ppl:jacocoTestCoverageVerification || echo "* Jacoco failed for sql" >> report.log + ./gradlew :sql:jacocoTestCoverageVerification || echo "* Jacoco failed for ppl" >> report.log + ./gradlew :core:jacocoTestCoverageVerification || echo "* Jacoco failed for core" >> report.log + ./gradlew :protocol:jacocoTestCoverageVerification || echo "* Jacoco failed for protocol" >> report.log + ./gradlew :opensearch-sql-plugin:jacocoTestCoverageVerification || echo "* Jacoco failed for plugin" >> report.log + # Misc tests + ./gradlew :integ-test:integTest || echo "* Integration test failed" >> report.log + ./gradlew :doctest:doctest || echo "* Doctest failed" >> report.log + ./scripts/bwctest.sh || echo "* Backward compatibility test failed" >> report.log + + - name: Verify test results + run: | + if [[ -e failures.log ]] + then + echo "## FAILED TESTS :facepalm::warning::bangbang:" >> $GITHUB_STEP_SUMMARY + cat failures.log >> $GITHUB_STEP_SUMMARY + exit 1 + fi + + - name: Upload test reports + if: always() + uses: actions/upload-artifact@v2 + with: + name: test-reports + path: | + sql/build/reports/** + ppl/build/reports/** + core/build/reports/** + common/build/reports/** + opensearch/build/reports/** + integ-test/build/reports/** + protocol/build/reports/** + legacy/build/reports/** + plugin/build/reports/** diff --git a/.github/workflows/sql-workbench-release-workflow.yml b/.github/workflows/sql-workbench-release-workflow.yml deleted file mode 100644 index 840428e538..0000000000 --- a/.github/workflows/sql-workbench-release-workflow.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: Release SQL-Workbench Artifacts - -on: - push: - tags: - - 'v*' - -env: - PLUGIN_NAME: query-workbench-dashboards - OPENSEARCH_VERSION: 'main' - OPENSEARCH_PLUGIN_VERSION: 2.3.0.0 - -jobs: - - build: - - runs-on: ubuntu-latest - - steps: - - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_STAGING_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_STAGING_SECRET_ACCESS_KEY }} - aws-region: us-east-1 - - - name: Checkout Plugin - uses: actions/checkout@v1 - - - name: Checkout OpenSearch Dashboards - uses: actions/checkout@v1 - with: - repository: opensearch-project/Opensearch-Dashboards - ref: ${{ env.OPENSEARCH_VERSION }} - path: sql/OpenSearch-Dashboards - - - name: Setup Node - uses: actions/setup-node@v1 - with: - node-version: '14.18.2' - - - name: Move Workbench to Plugins Dir - run: | - mv workbench OpenSearch-Dashboards/plugins - - - name: OpenSearch Dashboards Plugin Bootstrap - uses: nick-invision/retry@v1 - with: - timeout_minutes: 60 - max_attempts: 3 - command: cd OpenSearch-Dashboards/plugins/workbench; yarn osd bootstrap - - - name: Build - run: | - cd OpenSearch-Dashboards/plugins/workbench - yarn build - mv ./build/*.zip ./build/${{ env.PLUGIN_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}.zip - - - name: Upload to S3 - shell: bash - run: | - cd OpenSearch-Dashboards/plugins/workbench - zip=`ls ./build/*.zip` - - # Inject the build number before the suffix - zip_outfile=`basename ${zip%.zip}-build-${GITHUB_RUN_NUMBER}.zip` - - s3_prefix="s3://staging.artifacts.opendistroforelasticsearch.amazon.com/snapshots/kibana-plugins/query-workbench/" - - echo "Copying ${zip} to ${s3_prefix}${zip_outfile}" - aws s3 cp --quiet $zip ${s3_prefix}${zip_outfile} diff --git a/.github/workflows/sql-workbench-test-and-build-workflow.yml b/.github/workflows/sql-workbench-test-and-build-workflow.yml index d4da17bf7f..5269dbd352 100644 --- a/.github/workflows/sql-workbench-test-and-build-workflow.yml +++ b/.github/workflows/sql-workbench-test-and-build-workflow.yml @@ -1,6 +1,14 @@ name: SQL Workbench Test and Build -on: [pull_request, push] +on: + pull_request: + types: [opened, reopened] + push: + branches-ignore: + - 'dependabot/**' + paths: + - 'workbench/**' + - '.github/workflows/sql-workbench-test-and-build-workflow.yml' env: PLUGIN_NAME: query-workbench-dashboards @@ -8,24 +16,21 @@ env: OPENSEARCH_PLUGIN_VERSION: 2.3.0.0 jobs: - build: - runs-on: ubuntu-latest - steps: - name: Checkout Plugin - uses: actions/checkout@v1 + uses: actions/checkout@v3 - name: Checkout OpenSearch Dashboards - uses: actions/checkout@v1 + uses: actions/checkout@v1 # can't update to v3 because `setup-node` fails with: repository: opensearch-project/Opensearch-Dashboards ref: ${{ env.OPENSEARCH_VERSION }} path: OpenSearch-Dashboards - name: Setup Node - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version-file: "../OpenSearch-Dashboards/.nvmrc" registry-url: 'https://registry.npmjs.org' @@ -35,7 +40,7 @@ jobs: mv workbench ../OpenSearch-Dashboards/plugins - name: OpenSearch Dashboards Plugin Bootstrap - uses: nick-invision/retry@v1 + uses: nick-fields/retry@v2 with: timeout_minutes: 60 max_attempts: 3 @@ -47,7 +52,8 @@ jobs: yarn test:jest --coverage - name: Upload coverage - uses: codecov/codecov-action@v1 + if: always() + uses: codecov/codecov-action@v3 with: flags: query-workbench directory: ../OpenSearch-Dashboards/plugins/workbench @@ -60,7 +66,8 @@ jobs: mv ./build/*.zip ./build/${{ env.PLUGIN_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}.zip - name: Upload Artifact - uses: actions/upload-artifact@v1 + if: always() + uses: actions/upload-artifact@v1 # can't update to v3 because upload fails with: name: workbench path: ../OpenSearch-Dashboards/plugins/workbench/build diff --git a/sql-cli/tests/test_opensearch_connection.py b/sql-cli/tests/test_opensearch_connection.py index 1a1aa76ecc..75740881c4 100644 --- a/sql-cli/tests/test_opensearch_connection.py +++ b/sql-cli/tests/test_opensearch_connection.py @@ -39,6 +39,7 @@ def test_query(self, connection): ) @estest + @pytest.mark.skip(reason="Test is not compatible with OpenSearch >= 2.3.0, it returns HTTP/503 instead of HTTP/400") def test_query_nonexistent_index(self, connection): self.load_data_to_es(connection) From e733e7b0e1a75bbf170e487868162b21011e443d Mon Sep 17 00:00:00 2001 From: "opensearch-trigger-bot[bot]" <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Date: Fri, 30 Sep 2022 09:54:42 -0700 Subject: [PATCH 02/55] Trigger build on pull request synchronize (#877) Signed-off-by: vamsi-amazon (cherry picked from commit 5aef2e6f01c2004cadab3f78ca86d8b27898fd09) Co-authored-by: vamsi-amazon --- .github/workflows/bi-connectors.yml | 1 - .github/workflows/codeql-analysis.yml | 1 - .github/workflows/draft-release-notes-workflow.yml | 1 - .github/workflows/link-checker.yml | 1 - .github/workflows/sql-cli-test-and-build-workflow.yml | 1 - .github/workflows/sql-jdbc-test-and-build-workflow.yml | 1 - .github/workflows/sql-odbc-main.yml | 1 - .github/workflows/sql-test-and-build-workflow.yml | 1 - .github/workflows/sql-workbench-test-and-build-workflow.yml | 1 - 9 files changed, 9 deletions(-) diff --git a/.github/workflows/bi-connectors.yml b/.github/workflows/bi-connectors.yml index 45c76fd8e6..0251debb8d 100644 --- a/.github/workflows/bi-connectors.yml +++ b/.github/workflows/bi-connectors.yml @@ -2,7 +2,6 @@ name: Build connectors for BI tools on: pull_request: - types: [opened, reopened] push: paths: - 'bi-connectors/PowerBIConnector/**' diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 92ab3ddcf3..13c4ef0f60 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -5,7 +5,6 @@ on: branches: - 'main' - '[1-9]+.[0-9x]+' - types: [opened, reopened] push: branches-ignore: - 'dependabot/**' diff --git a/.github/workflows/draft-release-notes-workflow.yml b/.github/workflows/draft-release-notes-workflow.yml index ebd9e7e3bc..2e468ec525 100644 --- a/.github/workflows/draft-release-notes-workflow.yml +++ b/.github/workflows/draft-release-notes-workflow.yml @@ -2,7 +2,6 @@ name: Release Drafter on: pull_request: - types: [opened, reopened] push: branches: - 'main' diff --git a/.github/workflows/link-checker.yml b/.github/workflows/link-checker.yml index 97b228fe72..ef6d858d84 100644 --- a/.github/workflows/link-checker.yml +++ b/.github/workflows/link-checker.yml @@ -2,7 +2,6 @@ name: Link Checker on: pull_request: - types: [opened, reopened] push: branches: - 'main' diff --git a/.github/workflows/sql-cli-test-and-build-workflow.yml b/.github/workflows/sql-cli-test-and-build-workflow.yml index 608b65a5ab..9a8f5052a1 100644 --- a/.github/workflows/sql-cli-test-and-build-workflow.yml +++ b/.github/workflows/sql-cli-test-and-build-workflow.yml @@ -2,7 +2,6 @@ name: SQL CLI Test and Build on: pull_request: - types: [opened, reopened] push: branches-ignore: - 'dependabot/**' diff --git a/.github/workflows/sql-jdbc-test-and-build-workflow.yml b/.github/workflows/sql-jdbc-test-and-build-workflow.yml index b7d9564fc5..2d71c61413 100644 --- a/.github/workflows/sql-jdbc-test-and-build-workflow.yml +++ b/.github/workflows/sql-jdbc-test-and-build-workflow.yml @@ -2,7 +2,6 @@ name: SQL JDBC Java CI on: pull_request: - types: [opened, reopened] push: branches-ignore: - 'dependabot/**' diff --git a/.github/workflows/sql-odbc-main.yml b/.github/workflows/sql-odbc-main.yml index eee65e5b29..6e01be6bc3 100644 --- a/.github/workflows/sql-odbc-main.yml +++ b/.github/workflows/sql-odbc-main.yml @@ -2,7 +2,6 @@ name: OpenSearch ODBC Driver on: pull_request: - types: [opened, reopened] push: branches-ignore: - 'dependabot/**' diff --git a/.github/workflows/sql-test-and-build-workflow.yml b/.github/workflows/sql-test-and-build-workflow.yml index 9d9758f5a1..b70092713e 100644 --- a/.github/workflows/sql-test-and-build-workflow.yml +++ b/.github/workflows/sql-test-and-build-workflow.yml @@ -2,7 +2,6 @@ name: SQL Java CI on: pull_request: - types: [opened, reopened] push: branches-ignore: - 'dependabot/**' diff --git a/.github/workflows/sql-workbench-test-and-build-workflow.yml b/.github/workflows/sql-workbench-test-and-build-workflow.yml index 5269dbd352..de73624de3 100644 --- a/.github/workflows/sql-workbench-test-and-build-workflow.yml +++ b/.github/workflows/sql-workbench-test-and-build-workflow.yml @@ -2,7 +2,6 @@ name: SQL Workbench Test and Build on: pull_request: - types: [opened, reopened] push: branches-ignore: - 'dependabot/**' From 93f8f7d55e652d42ae5ad04726d134af934c9071 Mon Sep 17 00:00:00 2001 From: "opensearch-trigger-bot[bot]" <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 15:43:26 -0700 Subject: [PATCH 03/55] [Backport main] add groupId to pluginzip publication (#909) Signed-off-by: Peng Huo Co-authored-by: Peng Huo --- plugin/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/plugin/build.gradle b/plugin/build.gradle index c1aae613bd..dc8c209997 100644 --- a/plugin/build.gradle +++ b/plugin/build.gradle @@ -55,6 +55,7 @@ publishing { pom { name = 'opensearch-sql' description = 'OpenSearch SQL' + groupId = "org.opensearch.plugin" licenses { license { name = 'The Apache License, Version 2.0' From 2b17988aea48d068f557cf67ac91c18d51137b88 Mon Sep 17 00:00:00 2001 From: Yury-Fridlyand Date: Wed, 19 Oct 2022 14:57:49 -0700 Subject: [PATCH 04/55] Merge pull request #911 from Bit-Quill/fix-old-broken-links (#932) Fix broken links (cherry picked from commit 4b50a014c6f5701f3061ad950073895b39f68a67) Signed-off-by: Yury-Fridlyand --- .../opendistro-for-elasticsearch-sql.release-notes-1.3.0.0.md | 4 ++-- release-notes/opensearch-sql.release-notes-1.2.0.0.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/release-notes/opendistro-for-elasticsearch-sql.release-notes-1.3.0.0.md b/release-notes/opendistro-for-elasticsearch-sql.release-notes-1.3.0.0.md index 1140eb330a..17715e2fac 100644 --- a/release-notes/opendistro-for-elasticsearch-sql.release-notes-1.3.0.0.md +++ b/release-notes/opendistro-for-elasticsearch-sql.release-notes-1.3.0.0.md @@ -10,7 +10,7 @@ * Enhancement [#260](https://github.com/opendistro-for-elasticsearch/sql/pull/260): Support string operators: ASCII, RTRIM, LTRIM, LOCATE, LENGTH, REPLACE * Enhancement [#254](https://github.com/opendistro-for-elasticsearch/sql/issues/254): Support SELECT * Enhancement [#251](https://github.com/opendistro-for-elasticsearch/sql/pull/251): Support number operators: POWER, ATAN2, COT, SIGN/SIGNUM -* Enhancement [#215](https://github.com/opendistro-for-elasticsearch/sql/issues215): Support ordinal in GROUP/ORDER BY clause +* Enhancement [#215](https://github.com/opendistro-for-elasticsearch/sql/issues/215): Support ordinal in GROUP/ORDER BY clause * Enhancement [#213](https://github.com/opendistro-for-elasticsearch/sql/issues/213): Support `.` syntax * Enhancement [#212](https://github.com/opendistro-for-elasticsearch/sql/issues/212): Support Quoted identifiers * Enhancement [#199](https://github.com/opendistro-for-elasticsearch/sql/issues/199): Support NOT operator with nested field query @@ -36,4 +36,4 @@ * BugFix [#125](https://github.com/opendistro-for-elasticsearch/sql/issues/125): Parsing Exception when WHERE clause has true/false in CONDITION * BugFix [#122](https://github.com/opendistro-for-elasticsearch/sql/issues/122): Query with custom-function doesn't respect LIMIT * BugFix [#121](https://github.com/opendistro-for-elasticsearch/sql/issues/121): Dot/period at start of index name fails to parse -* BugFix [#111](https://github.com/opendistro-for-elasticsearch/sql/issues/111): JDBC format of aggregation query with date_format adds unnecessary column bug \ No newline at end of file +* BugFix [#111](https://github.com/opendistro-for-elasticsearch/sql/issues/111): JDBC format of aggregation query with date_format adds unnecessary column bug diff --git a/release-notes/opensearch-sql.release-notes-1.2.0.0.md b/release-notes/opensearch-sql.release-notes-1.2.0.0.md index c35ca1c4b9..8fa0077b46 100644 --- a/release-notes/opensearch-sql.release-notes-1.2.0.0.md +++ b/release-notes/opensearch-sql.release-notes-1.2.0.0.md @@ -5,7 +5,7 @@ Compatible with OpenSearch and OpenSearch Dashboards Version 1.2.0 * Add new protocol for visualization response format ([#251](https://github.com/opensearch-project/sql/pull/251)) ### Enhancements -* Add conversion support for datetime as per https://github.com/kylepbi… ([#267](https://github.com/opensearch-project/sql/pull/267)) +* Add conversion support for datetime as per https://github.com/kylepbit ([#267](https://github.com/opensearch-project/sql/pull/267)) * Optimized type converting in DSL filters ([#272](https://github.com/opensearch-project/sql/pull/272)) ### Documentation From 5dfc2e5ba5d38ce1d0ec35a7904036765e786908 Mon Sep 17 00:00:00 2001 From: Peng Huo Date: Thu, 20 Oct 2022 09:55:21 -0700 Subject: [PATCH 05/55] Bump version to 3.0 (#831) * Bump version to 3.0 Signed-off-by: Peng Huo --- .../draft-release-notes-workflow.yml | 2 +- .../sql-workbench-test-and-build-workflow.yml | 2 +- build.gradle | 8 ++- doctest/build.gradle | 4 +- integ-test/build.gradle | 8 ++- .../sql/correctness/CorrectnessIT.java | 9 +-- .../tests/OpenSearchConnectionTest.java | 6 +- .../opensearch/sql/legacy/AggregationIT.java | 10 +-- .../sql/legacy/CsvFormatResponseIT.java | 31 ++++++++- .../org/opensearch/sql/legacy/JdbcTestIT.java | 16 ++--- .../sql/legacy/OpenSearchSQLRestTestCase.java | 69 +++++++++++-------- .../unittest/LocalClusterStateTest.java | 3 +- .../sql/legacy/util/CheckScriptContents.java | 3 +- .../util/MultipleIndexClusterUtils.java | 6 +- .../resources/mappings/field_mappings.json | 5 +- .../test/resources/mappings/semantics.json | 5 +- .../src/test/resources/mappings/accounts.json | 5 +- .../test/resources/mappings/accounts2.json | 5 +- plugin/build.gradle | 1 + workbench/opensearch_dashboards.json | 4 +- workbench/package.json | 2 +- 21 files changed, 133 insertions(+), 71 deletions(-) diff --git a/.github/workflows/draft-release-notes-workflow.yml b/.github/workflows/draft-release-notes-workflow.yml index 2e468ec525..858e663d6b 100644 --- a/.github/workflows/draft-release-notes-workflow.yml +++ b/.github/workflows/draft-release-notes-workflow.yml @@ -18,6 +18,6 @@ jobs: with: config-name: draft-release-notes-config.yml tag: (None) - version: 2.3.0.0 + version: 3.0.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/sql-workbench-test-and-build-workflow.yml b/.github/workflows/sql-workbench-test-and-build-workflow.yml index de73624de3..3024c522cb 100644 --- a/.github/workflows/sql-workbench-test-and-build-workflow.yml +++ b/.github/workflows/sql-workbench-test-and-build-workflow.yml @@ -12,7 +12,7 @@ on: env: PLUGIN_NAME: query-workbench-dashboards OPENSEARCH_VERSION: 'main' - OPENSEARCH_PLUGIN_VERSION: 2.3.0.0 + OPENSEARCH_PLUGIN_VERSION: 3.0.0.0 jobs: build: diff --git a/build.gradle b/build.gradle index c96655a5c1..42be5c8b84 100644 --- a/build.gradle +++ b/build.gradle @@ -6,9 +6,9 @@ buildscript { ext { - opensearch_version = System.getProperty("opensearch.version", "2.3.0-SNAPSHOT") + opensearch_version = System.getProperty("opensearch.version", "3.0.0-SNAPSHOT") spring_version = "5.3.22" - jackson_version = "2.13.3" + jackson_version = "2.13.4" isSnapshot = "true" == System.getProperty("build.snapshot", "true") buildVersionQualifier = System.getProperty("build.version_qualifier", "") version_tokens = opensearch_version.tokenize('-') @@ -44,6 +44,8 @@ plugins { // Repository on root level is for dependencies that project code depends on. And this block must be placed after plugins{} repositories { mavenLocal() + // todo. remove this when lucene 9.4.0 is released + maven { url "https://d1nvenhzbhpy0q.cloudfront.net/snapshots/lucene/" } maven { url "https://aws.oss.sonatype.org/content/repositories/snapshots" } mavenCentral() // For Elastic Libs that you can use to get started coding until open OpenSearch libs are available } @@ -66,6 +68,8 @@ allprojects { subprojects { repositories { mavenLocal() + // todo. remove this when lucene 9.4.0 is released + maven { url "https://d1nvenhzbhpy0q.cloudfront.net/snapshots/lucene/" } maven { url "https://aws.oss.sonatype.org/content/repositories/snapshots" } mavenCentral() } diff --git a/doctest/build.gradle b/doctest/build.gradle index eec5a791b8..60b6fd7464 100644 --- a/doctest/build.gradle +++ b/doctest/build.gradle @@ -45,7 +45,9 @@ task stopOpenSearch(type: KillProcessTask) doctest.dependsOn startOpenSearch doctest.finalizedBy stopOpenSearch -build.dependsOn doctest +// disable doctest for 3.0 in case no opensearch-ml-3.0 snapshot. +// https://github.com/opensearch-project/sql/issues/942 +// build.dependsOn doctest clean.dependsOn(cleanBootstrap) // 2.0.0-alpha1-SNAPSHOT -> 2.0.0.0-alpha1-SNAPSHOT diff --git a/integ-test/build.gradle b/integ-test/build.gradle index 5e0a53bf1a..b9630c8211 100644 --- a/integ-test/build.gradle +++ b/integ-test/build.gradle @@ -58,6 +58,7 @@ configurations.all { resolutionStrategy.force "com.fasterxml.jackson.core:jackson-databind:${jackson_version}" resolutionStrategy.force "org.jetbrains.kotlin:kotlin-stdlib:1.6.0" resolutionStrategy.force "org.jetbrains.kotlin:kotlin-stdlib-common:1.6.0" + resolutionStrategy.force 'org.slf4j:slf4j-api:1.7.36' } dependencies { @@ -189,17 +190,18 @@ task compileJdbc(type: Exec) { } } -String bwcVersion = "1.1.0.0"; +String baseVersion = "2.4.0" +String bwcVersion = baseVersion + ".0"; String baseName = "sqlBwcCluster" String bwcFilePath = "src/test/resources/bwc/" String bwcSqlPlugin = "opensearch-sql-" + bwcVersion + ".zip" -String bwcRemoteFile = "https://ci.opensearch.org/ci/dbc/bundle-build/1.1.0/20210930/linux/x64/builds/opensearch/plugins/" + bwcSqlPlugin +String bwcRemoteFile = "https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/${baseVersion}/latest/linux/x64/tar/builds/opensearch/plugins/" + bwcSqlPlugin 2.times { i -> testClusters { "${baseName}$i" { testDistribution = "ARCHIVE" - versions = ["1.1.0", opensearch_version] + versions = [baseVersion, opensearch_version] numberOfNodes = 3 plugin(provider(new Callable() { @Override diff --git a/integ-test/src/test/java/org/opensearch/sql/correctness/CorrectnessIT.java b/integ-test/src/test/java/org/opensearch/sql/correctness/CorrectnessIT.java index a6f3e561b3..889f60f4ad 100644 --- a/integ-test/src/test/java/org/opensearch/sql/correctness/CorrectnessIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/correctness/CorrectnessIT.java @@ -11,6 +11,7 @@ import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope; import com.google.common.collect.Maps; +import java.net.URISyntaxException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -18,7 +19,7 @@ import java.util.Date; import java.util.Map; import java.util.TimeZone; -import org.apache.http.HttpHost; +import org.apache.hc.core5.http.HttpHost; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.json.JSONObject; @@ -43,7 +44,7 @@ public class CorrectnessIT extends OpenSearchIntegTestCase { private static final Logger LOG = LogManager.getLogger(); @Test - public void performComparisonTest() { + public void performComparisonTest() throws URISyntaxException { TestConfig config = new TestConfig(getCmdLineArgs()); LOG.info("Starting comparison test {}", config); @@ -73,7 +74,7 @@ private Map getCmdLineArgs() { return Maps.fromProperties(System.getProperties()); } - private DBConnection getThisDBConnection(TestConfig config) { + private DBConnection getThisDBConnection(TestConfig config) throws URISyntaxException { String dbUrl = config.getDbConnectionUrl(); if (dbUrl.isEmpty()) { return getOpenSearchConnection(config); @@ -84,7 +85,7 @@ private DBConnection getThisDBConnection(TestConfig config) { /** * Use OpenSearch cluster given on CLI arg or internal embedded in SQLIntegTestCase */ - private DBConnection getOpenSearchConnection(TestConfig config) { + private DBConnection getOpenSearchConnection(TestConfig config) throws URISyntaxException { RestClient client; String openSearchHost = config.getOpenSearchHostUrl(); if (openSearchHost.isEmpty()) { diff --git a/integ-test/src/test/java/org/opensearch/sql/correctness/tests/OpenSearchConnectionTest.java b/integ-test/src/test/java/org/opensearch/sql/correctness/tests/OpenSearchConnectionTest.java index 73659525f2..5b33884814 100644 --- a/integ-test/src/test/java/org/opensearch/sql/correctness/tests/OpenSearchConnectionTest.java +++ b/integ-test/src/test/java/org/opensearch/sql/correctness/tests/OpenSearchConnectionTest.java @@ -17,8 +17,8 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.util.Arrays; -import org.apache.http.ProtocolVersion; -import org.apache.http.message.BasicStatusLine; +import org.apache.hc.core5.http.ProtocolVersion; +import org.apache.hc.core5.http.message.StatusLine; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -48,7 +48,7 @@ public void setUp() throws IOException { Response response = mock(Response.class); when(client.performRequest(any(Request.class))).thenReturn(response); when(response.getStatusLine()) - .thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 2, 0), 200, "")); + .thenReturn(new StatusLine(new ProtocolVersion("HTTP", 2, 0), 200, "")); } @Test diff --git a/integ-test/src/test/java/org/opensearch/sql/legacy/AggregationIT.java b/integ-test/src/test/java/org/opensearch/sql/legacy/AggregationIT.java index 1d530efa5e..5c9cd6943c 100644 --- a/integ-test/src/test/java/org/opensearch/sql/legacy/AggregationIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/legacy/AggregationIT.java @@ -166,13 +166,13 @@ public void percentileTest() throws IOException { 0.6); Assert .assertEquals(35.0, getDoubleAggregationValue(result, "PERCENTILES(age)", "values", "75.0"), - 0.001); + 0.6); Assert .assertEquals(39.0, getDoubleAggregationValue(result, "PERCENTILES(age)", "values", "95.0"), - 0.001); + 0.6); Assert .assertEquals(40.0, getDoubleAggregationValue(result, "PERCENTILES(age)", "values", "99.0"), - 0.001); + 0.6); } @Test @@ -183,9 +183,9 @@ public void percentileTestSpecific() throws IOException { Assert.assertThat(getTotalHits(result), equalTo(1000)); Assert.assertEquals(25.0, - getDoubleAggregationValue(result, "PERCENTILES(age,25.0,75.0)", "values", "25.0"), 0.001); + getDoubleAggregationValue(result, "PERCENTILES(age,25.0,75.0)", "values", "25.0"), 0.6); Assert.assertEquals(35.0, - getDoubleAggregationValue(result, "PERCENTILES(age,25.0,75.0)", "values", "75.0"), 0.001); + getDoubleAggregationValue(result, "PERCENTILES(age,25.0,75.0)", "values", "75.0"), 0.6); } @Test diff --git a/integ-test/src/test/java/org/opensearch/sql/legacy/CsvFormatResponseIT.java b/integ-test/src/test/java/org/opensearch/sql/legacy/CsvFormatResponseIT.java index 9a08302577..d562794409 100644 --- a/integ-test/src/test/java/org/opensearch/sql/legacy/CsvFormatResponseIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/legacy/CsvFormatResponseIT.java @@ -486,7 +486,36 @@ public void percentileAggregationTest() throws Exception { List lines = csvResult.getLines(); Assert.assertEquals(1, lines.size()); - Assert.assertEquals("32.0,32.0,34.0,36.0,38.0,40.0,40.0", lines.get(0)); + + List result = + Arrays.stream(lines.get(0).split(",")) + .mapToDouble(Double::valueOf) + .boxed() + .collect(Collectors.toList()); + assertEquals(7, result.size()); + assertEquals(32.0, result.get(0), 0.6); + assertEquals(32.0, result.get(1), 0.6); + assertEquals(34.0, result.get(2), 0.6); + + assertEquals("32.0,32.0,34.0,36.0,38.0,40.0,40.0", lines.get(0), 0.6); + } + + private void assertEquals(String expected, String actual, Double delta) { + List actualList = + Arrays.stream(actual.split(",")) + .mapToDouble(Double::valueOf) + .boxed() + .collect(Collectors.toList()); + List expectedList = + Arrays.stream(expected.split(",")) + .mapToDouble(Double::valueOf) + .boxed() + .collect(Collectors.toList()); + + assertEquals(expectedList.size(), actualList.size()); + for (int i = 0; i < expectedList.size(); i++) { + assertEquals(expectedList.get(i), actualList.get(i), delta); + } } @Test diff --git a/integ-test/src/test/java/org/opensearch/sql/legacy/JdbcTestIT.java b/integ-test/src/test/java/org/opensearch/sql/legacy/JdbcTestIT.java index 74f999f368..c50a03f596 100644 --- a/integ-test/src/test/java/org/opensearch/sql/legacy/JdbcTestIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/legacy/JdbcTestIT.java @@ -35,10 +35,10 @@ public void testPercentilesQuery() { JSONObject percentileRow = (JSONObject) response.query("/datarows/0/0"); - assertThat(percentileRow.getDouble("25.0"), equalTo(31.5)); - assertThat(percentileRow.getDouble("50.0"), equalTo(33.5)); - assertThat(percentileRow.getDouble("75.0"), equalTo(36.5)); - assertThat(percentileRow.getDouble("99.9"), equalTo(39.0)); + assertEquals(31.5, percentileRow.getDouble("25.0"), 0.6); + assertEquals(33.5, percentileRow.getDouble("50.0"), 0.6); + assertEquals(36.5, percentileRow.getDouble("75.0"), 0.6); + assertEquals(39.0, percentileRow.getDouble("99.9"), 0.6); } // https://github.com/opensearch-project/sql/issues/537 @@ -53,10 +53,10 @@ public void testSlowQuery() throws IOException { assertThat(response.getJSONArray("datarows").length(), equalTo(1)); JSONObject percentileRow = (JSONObject) response.query("/datarows/0/0"); - assertThat(percentileRow.getDouble("25.0"), equalTo(31.5)); - assertThat(percentileRow.getDouble("50.0"), equalTo(33.5)); - assertThat(percentileRow.getDouble("75.0"), equalTo(36.5)); - assertThat(percentileRow.getDouble("99.9"), equalTo(39.0)); + assertEquals(31.5, percentileRow.getDouble("25.0"), 0.6); + assertEquals(33.5, percentileRow.getDouble("50.0"), 0.6); + assertEquals(36.5, percentileRow.getDouble("75.0"), 0.6); + assertEquals(39.0, percentileRow.getDouble("99.9"), 0.6); wipeAllClusterSettings(); } diff --git a/integ-test/src/test/java/org/opensearch/sql/legacy/OpenSearchSQLRestTestCase.java b/integ-test/src/test/java/org/opensearch/sql/legacy/OpenSearchSQLRestTestCase.java index 0369ee715a..72daa286e8 100644 --- a/integ-test/src/test/java/org/opensearch/sql/legacy/OpenSearchSQLRestTestCase.java +++ b/integ-test/src/test/java/org/opensearch/sql/legacy/OpenSearchSQLRestTestCase.java @@ -9,16 +9,20 @@ import java.io.IOException; import java.util.Map; import java.util.Optional; -import org.apache.http.Header; -import org.apache.http.HttpHost; -import org.apache.http.auth.AuthScope; -import org.apache.http.auth.UsernamePasswordCredentials; -import org.apache.http.client.CredentialsProvider; -import org.apache.http.conn.ssl.NoopHostnameVerifier; -import org.apache.http.impl.client.BasicCredentialsProvider; -import org.apache.http.message.BasicHeader; -import org.apache.http.ssl.SSLContextBuilder; -import org.apache.http.util.EntityUtils; +import org.apache.hc.client5.http.auth.AuthScope; +import org.apache.hc.client5.http.auth.UsernamePasswordCredentials; +import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider; +import org.apache.hc.client5.http.impl.nio.PoolingAsyncClientConnectionManagerBuilder; +import org.apache.hc.client5.http.ssl.ClientTlsStrategyBuilder; +import org.apache.hc.client5.http.ssl.NoopHostnameVerifier; +import org.apache.hc.core5.http.Header; +import org.apache.hc.core5.http.HttpHost; +import org.apache.hc.core5.http.ParseException; +import org.apache.hc.core5.http.io.entity.EntityUtils; +import org.apache.hc.core5.http.message.BasicHeader; +import org.apache.hc.core5.http.nio.ssl.TlsStrategy; +import org.apache.hc.core5.ssl.SSLContextBuilder; +import org.apache.hc.core5.util.Timeout; import org.json.JSONArray; import org.json.JSONObject; import org.opensearch.client.Request; @@ -56,7 +60,7 @@ protected String getProtocol() { protected RestClient buildClient(Settings settings, HttpHost[] hosts) throws IOException { RestClientBuilder builder = RestClient.builder(hosts); if (isHttps()) { - configureHttpsClient(builder, settings); + configureHttpsClient(builder, settings, hosts[0]); } else { configureClient(builder, settings); } @@ -68,19 +72,24 @@ protected RestClient buildClient(Settings settings, HttpHost[] hosts) throws IOE protected static void wipeAllOpenSearchIndices() throws IOException { // include all the indices, included hidden indices. // https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-indices.html#cat-indices-api-query-params - Response response = client().performRequest(new Request("GET", "/_cat/indices?format=json&expand_wildcards=all")); - JSONArray jsonArray = new JSONArray(EntityUtils.toString(response.getEntity(), "UTF-8")); - for (Object object : jsonArray) { - JSONObject jsonObject = (JSONObject) object; - String indexName = jsonObject.getString("index"); - //.opendistro_security isn't allowed to delete from cluster - if (!indexName.startsWith(".opensearch_dashboards") && !indexName.startsWith(".opendistro")) { - client().performRequest(new Request("DELETE", "/" + indexName)); + try { + Response response = client().performRequest(new Request("GET", "/_cat/indices?format=json&expand_wildcards=all")); + JSONArray jsonArray = new JSONArray(EntityUtils.toString(response.getEntity(), "UTF-8")); + for (Object object : jsonArray) { + JSONObject jsonObject = (JSONObject) object; + String indexName = jsonObject.getString("index"); + //.opendistro_security isn't allowed to delete from cluster + if (!indexName.startsWith(".opensearch_dashboards") && !indexName.startsWith(".opendistro")) { + client().performRequest(new Request("DELETE", "/" + indexName)); + } } + } catch (ParseException e) { + throw new IOException(e); } } - protected static void configureHttpsClient(RestClientBuilder builder, Settings settings) + protected static void configureHttpsClient(RestClientBuilder builder, Settings settings, + HttpHost httpHost) throws IOException { Map headers = ThreadContext.buildDefaultHeaders(settings); Header[] defaultHeaders = new Header[headers.size()]; @@ -94,15 +103,21 @@ protected static void configureHttpsClient(RestClientBuilder builder, Settings s .orElseThrow(() -> new RuntimeException("user name is missing")); String password = Optional.ofNullable(System.getProperty("password")) .orElseThrow(() -> new RuntimeException("password is missing")); - CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); + BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider - .setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password)); + .setCredentials(new AuthScope(httpHost), new UsernamePasswordCredentials(userName, + password.toCharArray())); try { - return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider) - //disable the certificate since our testing cluster just uses the default security configuration - .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE) - .setSSLContext(SSLContextBuilder.create() + final TlsStrategy tlsStrategy = ClientTlsStrategyBuilder.create() + .setSslContext(SSLContextBuilder.create() .loadTrustMaterial(null, (chains, authType) -> true) + .build()) + .setHostnameVerifier(NoopHostnameVerifier.INSTANCE) + .build(); + + return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider) + .setConnectionManager(PoolingAsyncClientConnectionManagerBuilder.create() + .setTlsStrategy(tlsStrategy) .build()); } catch (Exception e) { throw new RuntimeException(e); @@ -114,7 +129,7 @@ protected static void configureHttpsClient(RestClientBuilder builder, Settings s TimeValue.parseTimeValue(socketTimeoutString == null ? "60s" : socketTimeoutString, CLIENT_SOCKET_TIMEOUT); builder.setRequestConfigCallback( - conf -> conf.setSocketTimeout(Math.toIntExact(socketTimeout.getMillis()))); + conf -> conf.setResponseTimeout(Timeout.ofMilliseconds(Math.toIntExact(socketTimeout.getMillis())))); if (settings.hasValue(CLIENT_PATH_PREFIX)) { builder.setPathPrefix(settings.get(CLIENT_PATH_PREFIX)); } diff --git a/legacy/src/test/java/org/opensearch/sql/legacy/unittest/LocalClusterStateTest.java b/legacy/src/test/java/org/opensearch/sql/legacy/unittest/LocalClusterStateTest.java index 67ad4b9ba2..b23b24413a 100644 --- a/legacy/src/test/java/org/opensearch/sql/legacy/unittest/LocalClusterStateTest.java +++ b/legacy/src/test/java/org/opensearch/sql/legacy/unittest/LocalClusterStateTest.java @@ -106,7 +106,8 @@ public class LocalClusterStateTest { " }\n" + " },\n" + " \"mapping_version\": \"1\",\n" + - " \"settings_version\": \"1\"\n" + + " \"settings_version\": \"1\",\n" + + " \"aliases_version\": \"1\"\n" + //======================================================= " }\n" + "}"; diff --git a/legacy/src/test/java/org/opensearch/sql/legacy/util/CheckScriptContents.java b/legacy/src/test/java/org/opensearch/sql/legacy/util/CheckScriptContents.java index f427170cfc..0f9ee88c69 100644 --- a/legacy/src/test/java/org/opensearch/sql/legacy/util/CheckScriptContents.java +++ b/legacy/src/test/java/org/opensearch/sql/legacy/util/CheckScriptContents.java @@ -189,7 +189,8 @@ public static void stubMockClient(Client mockClient) { " }\n" + " },\n" + " \"mapping_version\": \"1\",\n" + - " \"settings_version\": \"1\"\n" + + " \"settings_version\": \"1\",\n" + + " \"aliases_version\": \"1\"\n" + //======================================================= " }\n" + "}"; diff --git a/legacy/src/test/java/org/opensearch/sql/legacy/util/MultipleIndexClusterUtils.java b/legacy/src/test/java/org/opensearch/sql/legacy/util/MultipleIndexClusterUtils.java index 0213cac01b..1a3ee07f88 100644 --- a/legacy/src/test/java/org/opensearch/sql/legacy/util/MultipleIndexClusterUtils.java +++ b/legacy/src/test/java/org/opensearch/sql/legacy/util/MultipleIndexClusterUtils.java @@ -83,7 +83,8 @@ public class MultipleIndexClusterUtils { " }\n" + " },\n" + " \"mapping_version\": \"1\",\n" + - " \"settings_version\": \"1\"\n" + + " \"settings_version\": \"1\",\n" + + " \"aliases_version\": \"1\"\n" + " }\n" + "}"; @@ -134,7 +135,8 @@ public class MultipleIndexClusterUtils { " }\n" + " },\n" + " \"mapping_version\": \"1\",\n" + - " \"settings_version\": \"1\"\n" + + " \"settings_version\": \"1\",\n" + + " \"aliases_version\": \"1\"\n" + " }\n" + "}"; diff --git a/legacy/src/test/resources/mappings/field_mappings.json b/legacy/src/test/resources/mappings/field_mappings.json index bf059d0ae9..997e794d1b 100644 --- a/legacy/src/test/resources/mappings/field_mappings.json +++ b/legacy/src/test/resources/mappings/field_mappings.json @@ -67,6 +67,7 @@ } }, "mapping_version": "1", - "settings_version": "1" + "settings_version": "1", + "aliases_version": "1" } -} \ No newline at end of file +} diff --git a/legacy/src/test/resources/mappings/semantics.json b/legacy/src/test/resources/mappings/semantics.json index 46de8f2eaa..e6e7be958e 100644 --- a/legacy/src/test/resources/mappings/semantics.json +++ b/legacy/src/test/resources/mappings/semantics.json @@ -87,6 +87,7 @@ } }, "mapping_version": "1", - "settings_version": "1" + "settings_version": "1", + "aliases_version": "1" } -} \ No newline at end of file +} diff --git a/opensearch/src/test/resources/mappings/accounts.json b/opensearch/src/test/resources/mappings/accounts.json index a7024b6490..5431568304 100644 --- a/opensearch/src/test/resources/mappings/accounts.json +++ b/opensearch/src/test/resources/mappings/accounts.json @@ -87,6 +87,7 @@ } }, "mapping_version": "1", - "settings_version": "1" + "settings_version": "1", + "aliases_version": "1" } -} \ No newline at end of file +} diff --git a/opensearch/src/test/resources/mappings/accounts2.json b/opensearch/src/test/resources/mappings/accounts2.json index d300b8c523..0a5937fd36 100644 --- a/opensearch/src/test/resources/mappings/accounts2.json +++ b/opensearch/src/test/resources/mappings/accounts2.json @@ -88,6 +88,7 @@ } }, "mapping_version": "1", - "settings_version": "1" + "settings_version": "1", + "aliases_version": "1" } -} \ No newline at end of file +} diff --git a/plugin/build.gradle b/plugin/build.gradle index dc8c209997..ce362f08d7 100644 --- a/plugin/build.gradle +++ b/plugin/build.gradle @@ -91,6 +91,7 @@ configurations.all { resolutionStrategy.force "com.fasterxml.jackson.core:jackson-databind:${jackson_version}" resolutionStrategy.force "org.jetbrains.kotlin:kotlin-stdlib:1.6.0" resolutionStrategy.force "org.jetbrains.kotlin:kotlin-stdlib-common:1.6.0" + resolutionStrategy.force 'org.slf4j:slf4j-api:1.7.36' } compileJava { options.compilerArgs.addAll(["-processor", 'lombok.launch.AnnotationProcessorHider$AnnotationProcessor']) diff --git a/workbench/opensearch_dashboards.json b/workbench/opensearch_dashboards.json index 79aefec25f..972bedd4ef 100644 --- a/workbench/opensearch_dashboards.json +++ b/workbench/opensearch_dashboards.json @@ -1,7 +1,7 @@ { "id": "queryWorkbenchDashboards", - "version": "2.3.0.0", - "opensearchDashboardsVersion": "2.3.0", + "version": "3.0.0.0", + "opensearchDashboardsVersion": "3.0.0", "server": true, "ui": true, "requiredPlugins": ["navigation"], diff --git a/workbench/package.json b/workbench/package.json index 2fddbb9937..a7a3c727d1 100644 --- a/workbench/package.json +++ b/workbench/package.json @@ -1,6 +1,6 @@ { "name": "opensearch-query-workbench", - "version": "2.3.0.0", + "version": "3.0.0.0", "description": "Query Workbench", "main": "index.js", "license": "Apache-2.0", From 6c0d7c658e0919433c31d532c534e559c719a47d Mon Sep 17 00:00:00 2001 From: Derek Ho Date: Tue, 25 Oct 2022 19:22:04 -0400 Subject: [PATCH 06/55] [Backport main] #907 - enable windows and macos CI for sql and workbench (#962) * Merge pull request #907 from derek-ho/enable-windows-macos feat: enable ci for windows and macos (cherry picked from commit 0699baa2ae47fb72af9721986df669e786655cd2) Signed-off-by: Derek Ho * always and os==ubuntu Signed-off-by: Derek Ho Signed-off-by: Derek Ho --- .../workflows/sql-test-and-build-workflow.yml | 29 +- .../sql-workbench-test-and-build-workflow.yml | 14 +- .../unittest/utils/PrettyFormatterTest.java | 6 +- .../AggregationQueryBuilderTest.java | 693 +++++++++--------- .../dsl/MetricAggregationBuilderTest.java | 247 +++---- .../format/CsvResponseFormatterTest.java | 41 +- .../format/RawResponseFormatterTest.java | 53 +- workbench/package.json | 2 +- 8 files changed, 553 insertions(+), 532 deletions(-) diff --git a/.github/workflows/sql-test-and-build-workflow.yml b/.github/workflows/sql-test-and-build-workflow.yml index b70092713e..3d063a2bfc 100644 --- a/.github/workflows/sql-test-and-build-workflow.yml +++ b/.github/workflows/sql-test-and-build-workflow.yml @@ -20,25 +20,32 @@ on: jobs: build: strategy: + # Run all jobs + fail-fast: false matrix: - java: - - 11 - - 17 - runs-on: ubuntu-latest + entry: + - { os: ubuntu-latest, java: 11 } + - { os: windows-latest, java: 11, os_build_args: -x doctest -x integTest -x jacocoTestReport -x compileJdbc} + - { os: macos-latest, java: 11, os_build_args: -x doctest -x integTest -x jacocoTestReport -x compileJdbc } + - { os: ubuntu-latest, java: 17 } + - { os: windows-latest, java: 17, os_build_args: -x doctest -x integTest -x jacocoTestReport -x compileJdbc } + - { os: macos-latest, java: 17, os_build_args: -x doctest -x integTest -x jacocoTestReport -x compileJdbc } + runs-on: ${{ matrix.entry.os }} steps: - uses: actions/checkout@v3 - + - name: Set up JDK ${{ matrix.java }} uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: ${{ matrix.java }} - + java-version: ${{ matrix.entry.java }} + - name: Build with Gradle - run: ./gradlew --continue build assemble + run: ./gradlew --continue build ${{ matrix.entry.os_build_args }} - name: Run backward compatibility tests + if: ${{ matrix.entry.os == 'ubuntu-latest' }} run: ./scripts/bwctest.sh - name: Create Artifact Path @@ -48,7 +55,7 @@ jobs: # This step uses the codecov-action Github action: https://github.com/codecov/codecov-action - name: Upload SQL Coverage Report - if: always() + if: ${{ always() && matrix.entry.os == 'ubuntu-latest' }} uses: codecov/codecov-action@v3 with: flags: sql-engine @@ -57,11 +64,11 @@ jobs: - name: Upload Artifacts uses: actions/upload-artifact@v2 with: - name: opensearch-sql + name: opensearch-sql-${{ matrix.entry.os }} path: opensearch-sql-builds - name: Upload test reports - if: always() + if: ${{ always() && matrix.entry.os == 'ubuntu-latest' }} uses: actions/upload-artifact@v2 with: name: test-reports diff --git a/.github/workflows/sql-workbench-test-and-build-workflow.yml b/.github/workflows/sql-workbench-test-and-build-workflow.yml index 3024c522cb..88f2a17f5c 100644 --- a/.github/workflows/sql-workbench-test-and-build-workflow.yml +++ b/.github/workflows/sql-workbench-test-and-build-workflow.yml @@ -16,8 +16,15 @@ env: jobs: build: - runs-on: ubuntu-latest + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + runs-on: ${{ matrix.os }} steps: + - name: Enable longer filenames + if: ${{ matrix.os == 'windows-latest' }} + run: git config --system core.longpaths true + - name: Checkout Plugin uses: actions/checkout@v3 @@ -51,7 +58,7 @@ jobs: yarn test:jest --coverage - name: Upload coverage - if: always() + if: ${{ always() && matrix.os == 'ubuntu-latest' }} uses: codecov/codecov-action@v3 with: flags: query-workbench @@ -68,5 +75,6 @@ jobs: if: always() uses: actions/upload-artifact@v1 # can't update to v3 because upload fails with: - name: workbench + name: workbench-${{ matrix.os }} path: ../OpenSearch-Dashboards/plugins/workbench/build + \ No newline at end of file diff --git a/legacy/src/test/java/org/opensearch/sql/legacy/unittest/utils/PrettyFormatterTest.java b/legacy/src/test/java/org/opensearch/sql/legacy/unittest/utils/PrettyFormatterTest.java index fc20d818e6..f876b14110 100644 --- a/legacy/src/test/java/org/opensearch/sql/legacy/unittest/utils/PrettyFormatterTest.java +++ b/legacy/src/test/java/org/opensearch/sql/legacy/unittest/utils/PrettyFormatterTest.java @@ -31,11 +31,13 @@ public void assertFormatterWithoutContentInside() throws IOException { public void assertFormatterOutputsPrettyJson() throws IOException { String explainFormattedPrettyFilePath = TestUtils.getResourceFilePath( "/src/test/resources/expectedOutput/explain_format_pretty.json"); - String explainFormattedPretty = Files.toString(new File(explainFormattedPrettyFilePath), StandardCharsets.UTF_8); + String explainFormattedPretty = Files.toString(new File(explainFormattedPrettyFilePath), StandardCharsets.UTF_8) + .replaceAll("\r", ""); String explainFormattedOnelineFilePath = TestUtils.getResourceFilePath( "/src/test/resources/explain_format_oneline.json"); - String explainFormattedOneline = Files.toString(new File(explainFormattedOnelineFilePath), StandardCharsets.UTF_8); + String explainFormattedOneline = Files.toString(new File(explainFormattedOnelineFilePath), StandardCharsets.UTF_8) + .replaceAll("\r", ""); String result = JsonPrettyFormatter.format(explainFormattedOneline); assertThat(result, equalTo(explainFormattedPretty)); diff --git a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/aggregation/AggregationQueryBuilderTest.java b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/aggregation/AggregationQueryBuilderTest.java index 04aedc0f01..3614d82e59 100644 --- a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/aggregation/AggregationQueryBuilderTest.java +++ b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/aggregation/AggregationQueryBuilderTest.java @@ -12,6 +12,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doAnswer; +import static org.opensearch.sql.common.utils.StringUtils.format; import static org.opensearch.sql.data.type.ExprCoreType.DATE; import static org.opensearch.sql.data.type.ExprCoreType.DOUBLE; import static org.opensearch.sql.data.type.ExprCoreType.INTEGER; @@ -72,31 +73,31 @@ void set_up() { @Test void should_build_composite_aggregation_for_field_reference() { - assertEquals( - "{\n" - + " \"composite_buckets\" : {\n" - + " \"composite\" : {\n" - + " \"size\" : 1000,\n" - + " \"sources\" : [ {\n" - + " \"name\" : {\n" - + " \"terms\" : {\n" - + " \"field\" : \"name\",\n" - + " \"missing_bucket\" : true,\n" - + " \"missing_order\" : \"first\",\n" - + " \"order\" : \"asc\"\n" - + " }\n" - + " }\n" - + " } ]\n" - + " },\n" - + " \"aggregations\" : {\n" - + " \"avg(age)\" : {\n" - + " \"avg\" : {\n" - + " \"field\" : \"age\"\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"composite_buckets\" : {%n" + + " \"composite\" : {%n" + + " \"size\" : 1000,%n" + + " \"sources\" : [ {%n" + + " \"name\" : {%n" + + " \"terms\" : {%n" + + " \"field\" : \"name\",%n" + + " \"missing_bucket\" : true,%n" + + " \"missing_order\" : \"first\",%n" + + " \"order\" : \"asc\"%n" + + " }%n" + + " }%n" + + " } ]%n" + + " },%n" + + " \"aggregations\" : {%n" + + " \"avg(age)\" : {%n" + + " \"avg\" : {%n" + + " \"field\" : \"age\"%n" + + " }%n" + + " }%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("avg(age)", new AvgAggregator(Arrays.asList(ref("age", INTEGER)), INTEGER))), @@ -105,31 +106,31 @@ void should_build_composite_aggregation_for_field_reference() { @Test void should_build_composite_aggregation_for_field_reference_with_order() { - assertEquals( - "{\n" - + " \"composite_buckets\" : {\n" - + " \"composite\" : {\n" - + " \"size\" : 1000,\n" - + " \"sources\" : [ {\n" - + " \"name\" : {\n" - + " \"terms\" : {\n" - + " \"field\" : \"name\",\n" - + " \"missing_bucket\" : true,\n" - + " \"missing_order\" : \"last\",\n" - + " \"order\" : \"desc\"\n" - + " }\n" - + " }\n" - + " } ]\n" - + " },\n" - + " \"aggregations\" : {\n" - + " \"avg(age)\" : {\n" - + " \"avg\" : {\n" - + " \"field\" : \"age\"\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"composite_buckets\" : {%n" + + " \"composite\" : {%n" + + " \"size\" : 1000,%n" + + " \"sources\" : [ {%n" + + " \"name\" : {%n" + + " \"terms\" : {%n" + + " \"field\" : \"name\",%n" + + " \"missing_bucket\" : true,%n" + + " \"missing_order\" : \"last\",%n" + + " \"order\" : \"desc\"%n" + + " }%n" + + " }%n" + + " } ]%n" + + " },%n" + + " \"aggregations\" : {%n" + + " \"avg(age)\" : {%n" + + " \"avg\" : {%n" + + " \"field\" : \"age\"%n" + + " }%n" + + " }%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("avg(age)", new AvgAggregator(Arrays.asList(ref("age", INTEGER)), INTEGER))), @@ -152,31 +153,31 @@ void should_build_type_mapping_for_field_reference() { @Test void should_build_composite_aggregation_for_field_reference_of_keyword() { - assertEquals( - "{\n" - + " \"composite_buckets\" : {\n" - + " \"composite\" : {\n" - + " \"size\" : 1000,\n" - + " \"sources\" : [ {\n" - + " \"name\" : {\n" - + " \"terms\" : {\n" - + " \"field\" : \"name.keyword\",\n" - + " \"missing_bucket\" : true,\n" - + " \"missing_order\" : \"first\",\n" - + " \"order\" : \"asc\"\n" - + " }\n" - + " }\n" - + " } ]\n" - + " },\n" - + " \"aggregations\" : {\n" - + " \"avg(age)\" : {\n" - + " \"avg\" : {\n" - + " \"field\" : \"age\"\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"composite_buckets\" : {%n" + + " \"composite\" : {%n" + + " \"size\" : 1000,%n" + + " \"sources\" : [ {%n" + + " \"name\" : {%n" + + " \"terms\" : {%n" + + " \"field\" : \"name.keyword\",%n" + + " \"missing_bucket\" : true,%n" + + " \"missing_order\" : \"first\",%n" + + " \"order\" : \"asc\"%n" + + " }%n" + + " }%n" + + " } ]%n" + + " },%n" + + " \"aggregations\" : {%n" + + " \"avg(age)\" : {%n" + + " \"avg\" : {%n" + + " \"field\" : \"age\"%n" + + " }%n" + + " }%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("avg(age)", new AvgAggregator(Arrays.asList(ref("age", INTEGER)), INTEGER))), @@ -201,37 +202,37 @@ void should_build_composite_aggregation_for_expression() { Expression expr = invocation.getArgument(0); return expr.toString(); }).when(serializer).serialize(any()); - assertEquals( - "{\n" - + " \"composite_buckets\" : {\n" - + " \"composite\" : {\n" - + " \"size\" : 1000,\n" - + " \"sources\" : [ {\n" - + " \"age\" : {\n" - + " \"terms\" : {\n" - + " \"script\" : {\n" - + " \"source\" : \"asin(age)\",\n" - + " \"lang\" : \"opensearch_query_expression\"\n" - + " },\n" - + " \"missing_bucket\" : true,\n" - + " \"missing_order\" : \"first\",\n" - + " \"order\" : \"asc\"\n" - + " }\n" - + " }\n" - + " } ]\n" - + " },\n" - + " \"aggregations\" : {\n" - + " \"avg(balance)\" : {\n" - + " \"avg\" : {\n" - + " \"script\" : {\n" - + " \"source\" : \"abs(balance)\",\n" - + " \"lang\" : \"opensearch_query_expression\"\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"composite_buckets\" : {%n" + + " \"composite\" : {%n" + + " \"size\" : 1000,%n" + + " \"sources\" : [ {%n" + + " \"age\" : {%n" + + " \"terms\" : {%n" + + " \"script\" : {%n" + + " \"source\" : \"asin(age)\",%n" + + " \"lang\" : \"opensearch_query_expression\"%n" + + " },%n" + + " \"missing_bucket\" : true,%n" + + " \"missing_order\" : \"first\",%n" + + " \"order\" : \"asc\"%n" + + " }%n" + + " }%n" + + " } ]%n" + + " },%n" + + " \"aggregations\" : {%n" + + " \"avg(balance)\" : {%n" + + " \"avg\" : {%n" + + " \"script\" : {%n" + + " \"source\" : \"abs(balance)\",%n" + + " \"lang\" : \"opensearch_query_expression\"%n" + + " }%n" + + " }%n" + + " }%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("avg(balance)", new AvgAggregator( @@ -241,40 +242,40 @@ void should_build_composite_aggregation_for_expression() { @Test void should_build_composite_aggregation_follow_with_order_by_position() { - assertEquals( - "{\n" - + " \"composite_buckets\" : {\n" - + " \"composite\" : {\n" - + " \"size\" : 1000,\n" - + " \"sources\" : [ {\n" - + " \"name\" : {\n" - + " \"terms\" : {\n" - + " \"field\" : \"name\",\n" - + " \"missing_bucket\" : true,\n" - + " \"missing_order\" : \"last\",\n" - + " \"order\" : \"desc\"\n" - + " }\n" - + " }\n" - + " }, {\n" - + " \"age\" : {\n" - + " \"terms\" : {\n" - + " \"field\" : \"age\",\n" - + " \"missing_bucket\" : true,\n" - + " \"missing_order\" : \"first\",\n" - + " \"order\" : \"asc\"\n" - + " }\n" - + " }\n" - + " } ]\n" - + " },\n" - + " \"aggregations\" : {\n" - + " \"avg(balance)\" : {\n" - + " \"avg\" : {\n" - + " \"field\" : \"balance\"\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"composite_buckets\" : {%n" + + " \"composite\" : {%n" + + " \"size\" : 1000,%n" + + " \"sources\" : [ {%n" + + " \"name\" : {%n" + + " \"terms\" : {%n" + + " \"field\" : \"name\",%n" + + " \"missing_bucket\" : true,%n" + + " \"missing_order\" : \"last\",%n" + + " \"order\" : \"desc\"%n" + + " }%n" + + " }%n" + + " }, {%n" + + " \"age\" : {%n" + + " \"terms\" : {%n" + + " \"field\" : \"age\",%n" + + " \"missing_bucket\" : true,%n" + + " \"missing_order\" : \"first\",%n" + + " \"order\" : \"asc\"%n" + + " }%n" + + " }%n" + + " } ]%n" + + " },%n" + + " \"aggregations\" : {%n" + + " \"avg(balance)\" : {%n" + + " \"avg\" : {%n" + + " \"field\" : \"balance\"%n" + + " }%n" + + " }%n" + + " }%n" + + " }%n" + + "}"), buildQuery( agg(named("avg(balance)", avg(ref("balance", INTEGER), INTEGER))), group(named("age", ref("age", INTEGER)), named("name", ref("name", STRING))), @@ -298,14 +299,14 @@ void should_build_type_mapping_for_expression() { @Test void should_build_aggregation_without_bucket() { - assertEquals( - "{\n" - + " \"avg(balance)\" : {\n" - + " \"avg\" : {\n" - + " \"field\" : \"balance\"\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"avg(balance)\" : {%n" + + " \"avg\" : {%n" + + " \"field\" : \"balance\"%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("avg(balance)", new AvgAggregator( @@ -315,29 +316,29 @@ void should_build_aggregation_without_bucket() { @Test void should_build_filter_aggregation() { - assertEquals( - "{\n" - + " \"avg(age) filter(where age > 34)\" : {\n" - + " \"filter\" : {\n" - + " \"range\" : {\n" - + " \"age\" : {\n" - + " \"from\" : 20,\n" - + " \"to\" : null,\n" - + " \"include_lower\" : false,\n" - + " \"include_upper\" : true,\n" - + " \"boost\" : 1.0\n" - + " }\n" - + " }\n" - + " },\n" - + " \"aggregations\" : {\n" - + " \"avg(age) filter(where age > 34)\" : {\n" - + " \"avg\" : {\n" - + " \"field\" : \"age\"\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"avg(age) filter(where age > 34)\" : {%n" + + " \"filter\" : {%n" + + " \"range\" : {%n" + + " \"age\" : {%n" + + " \"from\" : 20,%n" + + " \"to\" : null,%n" + + " \"include_lower\" : false,%n" + + " \"include_upper\" : true,%n" + + " \"boost\" : 1.0%n" + + " }%n" + + " }%n" + + " },%n" + + " \"aggregations\" : {%n" + + " \"avg(age) filter(where age > 34)\" : {%n" + + " \"avg\" : {%n" + + " \"field\" : \"age\"%n" + + " }%n" + + " }%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList(named("avg(age) filter(where age > 34)", new AvgAggregator(Arrays.asList(ref("age", INTEGER)), INTEGER) @@ -347,46 +348,46 @@ void should_build_filter_aggregation() { @Test void should_build_filter_aggregation_group_by() { - assertEquals( - "{\n" - + " \"composite_buckets\" : {\n" - + " \"composite\" : {\n" - + " \"size\" : 1000,\n" - + " \"sources\" : [ {\n" - + " \"gender\" : {\n" - + " \"terms\" : {\n" - + " \"field\" : \"gender\",\n" - + " \"missing_bucket\" : true,\n" - + " \"missing_order\" : \"first\",\n" - + " \"order\" : \"asc\"\n" - + " }\n" - + " }\n" - + " } ]\n" - + " },\n" - + " \"aggregations\" : {\n" - + " \"avg(age) filter(where age > 34)\" : {\n" - + " \"filter\" : {\n" - + " \"range\" : {\n" - + " \"age\" : {\n" - + " \"from\" : 20,\n" - + " \"to\" : null,\n" - + " \"include_lower\" : false,\n" - + " \"include_upper\" : true,\n" - + " \"boost\" : 1.0\n" - + " }\n" - + " }\n" - + " },\n" - + " \"aggregations\" : {\n" - + " \"avg(age) filter(where age > 34)\" : {\n" - + " \"avg\" : {\n" - + " \"field\" : \"age\"\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"composite_buckets\" : {%n" + + " \"composite\" : {%n" + + " \"size\" : 1000,%n" + + " \"sources\" : [ {%n" + + " \"gender\" : {%n" + + " \"terms\" : {%n" + + " \"field\" : \"gender\",%n" + + " \"missing_bucket\" : true,%n" + + " \"missing_order\" : \"first\",%n" + + " \"order\" : \"asc\"%n" + + " }%n" + + " }%n" + + " } ]%n" + + " },%n" + + " \"aggregations\" : {%n" + + " \"avg(age) filter(where age > 34)\" : {%n" + + " \"filter\" : {%n" + + " \"range\" : {%n" + + " \"age\" : {%n" + + " \"from\" : 20,%n" + + " \"to\" : null,%n" + + " \"include_lower\" : false,%n" + + " \"include_upper\" : true,%n" + + " \"boost\" : 1.0%n" + + " }%n" + + " }%n" + + " },%n" + + " \"aggregations\" : {%n" + + " \"avg(age) filter(where age > 34)\" : {%n" + + " \"avg\" : {%n" + + " \"field\" : \"age\"%n" + + " }%n" + + " }%n" + + " }%n" + + " }%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList(named("avg(age) filter(where age > 34)", new AvgAggregator(Arrays.asList(ref("age", INTEGER)), INTEGER) @@ -408,32 +409,32 @@ void should_build_type_mapping_without_bucket() { @Test void should_build_histogram() { - assertEquals( - "{\n" - + " \"composite_buckets\" : {\n" - + " \"composite\" : {\n" - + " \"size\" : 1000,\n" - + " \"sources\" : [ {\n" - + " \"SpanExpression(field=age, value=10, unit=NONE)\" : {\n" - + " \"histogram\" : {\n" - + " \"field\" : \"age\",\n" - + " \"missing_bucket\" : true,\n" - + " \"missing_order\" : \"first\",\n" - + " \"order\" : \"asc\",\n" - + " \"interval\" : 10.0\n" - + " }\n" - + " }\n" - + " } ]\n" - + " },\n" - + " \"aggregations\" : {\n" - + " \"count(a)\" : {\n" - + " \"value_count\" : {\n" - + " \"field\" : \"a\"\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"composite_buckets\" : {%n" + + " \"composite\" : {%n" + + " \"size\" : 1000,%n" + + " \"sources\" : [ {%n" + + " \"SpanExpression(field=age, value=10, unit=NONE)\" : {%n" + + " \"histogram\" : {%n" + + " \"field\" : \"age\",%n" + + " \"missing_bucket\" : true,%n" + + " \"missing_order\" : \"first\",%n" + + " \"order\" : \"asc\",%n" + + " \"interval\" : 10.0%n" + + " }%n" + + " }%n" + + " } ]%n" + + " },%n" + + " \"aggregations\" : {%n" + + " \"count(a)\" : {%n" + + " \"value_count\" : {%n" + + " \"field\" : \"a\"%n" + + " }%n" + + " }%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("count(a)", new CountAggregator(Arrays.asList(ref("a", INTEGER)), INTEGER))), @@ -442,37 +443,37 @@ void should_build_histogram() { @Test void should_build_histogram_two_metrics() { - assertEquals( - "{\n" - + " \"composite_buckets\" : {\n" - + " \"composite\" : {\n" - + " \"size\" : 1000,\n" - + " \"sources\" : [ {\n" - + " \"SpanExpression(field=age, value=10, unit=NONE)\" : {\n" - + " \"histogram\" : {\n" - + " \"field\" : \"age\",\n" - + " \"missing_bucket\" : true,\n" - + " \"missing_order\" : \"first\",\n" - + " \"order\" : \"asc\",\n" - + " \"interval\" : 10.0\n" - + " }\n" - + " }\n" - + " } ]\n" - + " },\n" - + " \"aggregations\" : {\n" - + " \"count(a)\" : {\n" - + " \"value_count\" : {\n" - + " \"field\" : \"a\"\n" - + " }\n" - + " },\n" - + " \"avg(b)\" : {\n" - + " \"avg\" : {\n" - + " \"field\" : \"b\"\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"composite_buckets\" : {%n" + + " \"composite\" : {%n" + + " \"size\" : 1000,%n" + + " \"sources\" : [ {%n" + + " \"SpanExpression(field=age, value=10, unit=NONE)\" : {%n" + + " \"histogram\" : {%n" + + " \"field\" : \"age\",%n" + + " \"missing_bucket\" : true,%n" + + " \"missing_order\" : \"first\",%n" + + " \"order\" : \"asc\",%n" + + " \"interval\" : 10.0%n" + + " }%n" + + " }%n" + + " } ]%n" + + " },%n" + + " \"aggregations\" : {%n" + + " \"count(a)\" : {%n" + + " \"value_count\" : {%n" + + " \"field\" : \"a\"%n" + + " }%n" + + " },%n" + + " \"avg(b)\" : {%n" + + " \"avg\" : {%n" + + " \"field\" : \"b\"%n" + + " }%n" + + " }%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("count(a)", new CountAggregator(Arrays.asList(ref("a", INTEGER)), INTEGER)), @@ -482,32 +483,32 @@ void should_build_histogram_two_metrics() { @Test void fixed_interval_time_span() { - assertEquals( - "{\n" - + " \"composite_buckets\" : {\n" - + " \"composite\" : {\n" - + " \"size\" : 1000,\n" - + " \"sources\" : [ {\n" - + " \"SpanExpression(field=timestamp, value=1, unit=H)\" : {\n" - + " \"date_histogram\" : {\n" - + " \"field\" : \"timestamp\",\n" - + " \"missing_bucket\" : true,\n" - + " \"missing_order\" : \"first\",\n" - + " \"order\" : \"asc\",\n" - + " \"fixed_interval\" : \"1h\"\n" - + " }\n" - + " }\n" - + " } ]\n" - + " },\n" - + " \"aggregations\" : {\n" - + " \"count(a)\" : {\n" - + " \"value_count\" : {\n" - + " \"field\" : \"a\"\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"composite_buckets\" : {%n" + + " \"composite\" : {%n" + + " \"size\" : 1000,%n" + + " \"sources\" : [ {%n" + + " \"SpanExpression(field=timestamp, value=1, unit=H)\" : {%n" + + " \"date_histogram\" : {%n" + + " \"field\" : \"timestamp\",%n" + + " \"missing_bucket\" : true,%n" + + " \"missing_order\" : \"first\",%n" + + " \"order\" : \"asc\",%n" + + " \"fixed_interval\" : \"1h\"%n" + + " }%n" + + " }%n" + + " } ]%n" + + " },%n" + + " \"aggregations\" : {%n" + + " \"count(a)\" : {%n" + + " \"value_count\" : {%n" + + " \"field\" : \"a\"%n" + + " }%n" + + " }%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("count(a)", new CountAggregator(Arrays.asList(ref("a", INTEGER)), INTEGER))), @@ -516,32 +517,32 @@ void fixed_interval_time_span() { @Test void calendar_interval_time_span() { - assertEquals( - "{\n" - + " \"composite_buckets\" : {\n" - + " \"composite\" : {\n" - + " \"size\" : 1000,\n" - + " \"sources\" : [ {\n" - + " \"SpanExpression(field=date, value=1, unit=W)\" : {\n" - + " \"date_histogram\" : {\n" - + " \"field\" : \"date\",\n" - + " \"missing_bucket\" : true,\n" - + " \"missing_order\" : \"first\",\n" - + " \"order\" : \"asc\",\n" - + " \"calendar_interval\" : \"1w\"\n" - + " }\n" - + " }\n" - + " } ]\n" - + " },\n" - + " \"aggregations\" : {\n" - + " \"count(a)\" : {\n" - + " \"value_count\" : {\n" - + " \"field\" : \"a\"\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"composite_buckets\" : {%n" + + " \"composite\" : {%n" + + " \"size\" : 1000,%n" + + " \"sources\" : [ {%n" + + " \"SpanExpression(field=date, value=1, unit=W)\" : {%n" + + " \"date_histogram\" : {%n" + + " \"field\" : \"date\",%n" + + " \"missing_bucket\" : true,%n" + + " \"missing_order\" : \"first\",%n" + + " \"order\" : \"asc\",%n" + + " \"calendar_interval\" : \"1w\"%n" + + " }%n" + + " }%n" + + " } ]%n" + + " },%n" + + " \"aggregations\" : {%n" + + " \"count(a)\" : {%n" + + " \"value_count\" : {%n" + + " \"field\" : \"a\"%n" + + " }%n" + + " }%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("count(a)", new CountAggregator(Arrays.asList(ref("a", INTEGER)), INTEGER))), @@ -550,32 +551,32 @@ void calendar_interval_time_span() { @Test void general_span() { - assertEquals( - "{\n" - + " \"composite_buckets\" : {\n" - + " \"composite\" : {\n" - + " \"size\" : 1000,\n" - + " \"sources\" : [ {\n" - + " \"SpanExpression(field=age, value=1, unit=NONE)\" : {\n" - + " \"histogram\" : {\n" - + " \"field\" : \"age\",\n" - + " \"missing_bucket\" : true,\n" - + " \"missing_order\" : \"first\",\n" - + " \"order\" : \"asc\",\n" - + " \"interval\" : 1.0\n" - + " }\n" - + " }\n" - + " } ]\n" - + " },\n" - + " \"aggregations\" : {\n" - + " \"count(a)\" : {\n" - + " \"value_count\" : {\n" - + " \"field\" : \"a\"\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"composite_buckets\" : {%n" + + " \"composite\" : {%n" + + " \"size\" : 1000,%n" + + " \"sources\" : [ {%n" + + " \"SpanExpression(field=age, value=1, unit=NONE)\" : {%n" + + " \"histogram\" : {%n" + + " \"field\" : \"age\",%n" + + " \"missing_bucket\" : true,%n" + + " \"missing_order\" : \"first\",%n" + + " \"order\" : \"asc\",%n" + + " \"interval\" : 1.0%n" + + " }%n" + + " }%n" + + " } ]%n" + + " },%n" + + " \"aggregations\" : {%n" + + " \"count(a)\" : {%n" + + " \"value_count\" : {%n" + + " \"field\" : \"a\"%n" + + " }%n" + + " }%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("count(a)", new CountAggregator(Arrays.asList(ref("a", INTEGER)), INTEGER))), diff --git a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/aggregation/dsl/MetricAggregationBuilderTest.java b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/aggregation/dsl/MetricAggregationBuilderTest.java index 845e32ba83..5161b35021 100644 --- a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/aggregation/dsl/MetricAggregationBuilderTest.java +++ b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/aggregation/dsl/MetricAggregationBuilderTest.java @@ -9,6 +9,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.when; +import static org.opensearch.sql.common.utils.StringUtils.format; import static org.opensearch.sql.data.type.ExprCoreType.INTEGER; import static org.opensearch.sql.data.type.ExprCoreType.STRING; import static org.opensearch.sql.expression.DSL.literal; @@ -62,14 +63,14 @@ void set_up() { @Test void should_build_avg_aggregation() { - assertEquals( - "{\n" - + " \"avg(age)\" : {\n" - + " \"avg\" : {\n" - + " \"field\" : \"age\"\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"avg(age)\" : {%n" + + " \"avg\" : {%n" + + " \"field\" : \"age\"%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("avg(age)", @@ -78,14 +79,14 @@ void should_build_avg_aggregation() { @Test void should_build_sum_aggregation() { - assertEquals( - "{\n" - + " \"sum(age)\" : {\n" - + " \"sum\" : {\n" - + " \"field\" : \"age\"\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"sum(age)\" : {%n" + + " \"sum\" : {%n" + + " \"field\" : \"age\"%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("sum(age)", @@ -94,14 +95,14 @@ void should_build_sum_aggregation() { @Test void should_build_count_aggregation() { - assertEquals( - "{\n" - + " \"count(age)\" : {\n" - + " \"value_count\" : {\n" - + " \"field\" : \"age\"\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"count(age)\" : {%n" + + " \"value_count\" : {%n" + + " \"field\" : \"age\"%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("count(age)", @@ -110,14 +111,14 @@ void should_build_count_aggregation() { @Test void should_build_count_star_aggregation() { - assertEquals( - "{\n" - + " \"count(*)\" : {\n" - + " \"value_count\" : {\n" - + " \"field\" : \"_index\"\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"count(*)\" : {%n" + + " \"value_count\" : {%n" + + " \"field\" : \"_index\"%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("count(*)", @@ -126,14 +127,14 @@ void should_build_count_star_aggregation() { @Test void should_build_count_other_literal_aggregation() { - assertEquals( - "{\n" - + " \"count(1)\" : {\n" - + " \"value_count\" : {\n" - + " \"field\" : \"_index\"\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"count(1)\" : {%n" + + " \"value_count\" : {%n" + + " \"field\" : \"_index\"%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("count(1)", @@ -142,14 +143,14 @@ void should_build_count_other_literal_aggregation() { @Test void should_build_min_aggregation() { - assertEquals( - "{\n" - + " \"min(age)\" : {\n" - + " \"min\" : {\n" - + " \"field\" : \"age\"\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"min(age)\" : {%n" + + " \"min\" : {%n" + + " \"field\" : \"age\"%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("min(age)", @@ -158,14 +159,14 @@ void should_build_min_aggregation() { @Test void should_build_max_aggregation() { - assertEquals( - "{\n" - + " \"max(age)\" : {\n" - + " \"max\" : {\n" - + " \"field\" : \"age\"\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"max(age)\" : {%n" + + " \"max\" : {%n" + + " \"field\" : \"age\"%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("max(age)", @@ -174,15 +175,15 @@ void should_build_max_aggregation() { @Test void should_build_varPop_aggregation() { - assertEquals( - "{\n" - + " \"var_pop(age)\" : {\n" - + " \"extended_stats\" : {\n" - + " \"field\" : \"age\",\n" - + " \"sigma\" : 2.0\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"var_pop(age)\" : {%n" + + " \"extended_stats\" : {%n" + + " \"field\" : \"age\",%n" + + " \"sigma\" : 2.0%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("var_pop(age)", @@ -191,15 +192,15 @@ void should_build_varPop_aggregation() { @Test void should_build_varSamp_aggregation() { - assertEquals( - "{\n" - + " \"var_samp(age)\" : {\n" - + " \"extended_stats\" : {\n" - + " \"field\" : \"age\",\n" - + " \"sigma\" : 2.0\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"var_samp(age)\" : {%n" + + " \"extended_stats\" : {%n" + + " \"field\" : \"age\",%n" + + " \"sigma\" : 2.0%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("var_samp(age)", @@ -208,15 +209,15 @@ void should_build_varSamp_aggregation() { @Test void should_build_stddevPop_aggregation() { - assertEquals( - "{\n" - + " \"stddev_pop(age)\" : {\n" - + " \"extended_stats\" : {\n" - + " \"field\" : \"age\",\n" - + " \"sigma\" : 2.0\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"stddev_pop(age)\" : {%n" + + " \"extended_stats\" : {%n" + + " \"field\" : \"age\",%n" + + " \"sigma\" : 2.0%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("stddev_pop(age)", @@ -225,15 +226,15 @@ void should_build_stddevPop_aggregation() { @Test void should_build_stddevSamp_aggregation() { - assertEquals( - "{\n" - + " \"stddev_samp(age)\" : {\n" - + " \"extended_stats\" : {\n" - + " \"field\" : \"age\",\n" - + " \"sigma\" : 2.0\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"stddev_samp(age)\" : {%n" + + " \"extended_stats\" : {%n" + + " \"field\" : \"age\",%n" + + " \"sigma\" : 2.0%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Arrays.asList( named("stddev_samp(age)", @@ -242,14 +243,14 @@ void should_build_stddevSamp_aggregation() { @Test void should_build_cardinality_aggregation() { - assertEquals( - "{\n" - + " \"count(distinct name)\" : {\n" - + " \"cardinality\" : {\n" - + " \"field\" : \"name\"\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"count(distinct name)\" : {%n" + + " \"cardinality\" : {%n" + + " \"field\" : \"name\"%n" + + " }%n" + + " }%n" + + "}"), buildQuery( Collections.singletonList(named("count(distinct name)", new CountAggregator( Collections.singletonList(ref("name", STRING)), INTEGER).distinct(true))))); @@ -257,29 +258,29 @@ void should_build_cardinality_aggregation() { @Test void should_build_filtered_cardinality_aggregation() { - assertEquals( - "{\n" - + " \"count(distinct name) filter(where age > 30)\" : {\n" - + " \"filter\" : {\n" - + " \"range\" : {\n" - + " \"age\" : {\n" - + " \"from\" : 30,\n" - + " \"to\" : null,\n" - + " \"include_lower\" : false,\n" - + " \"include_upper\" : true,\n" - + " \"boost\" : 1.0\n" - + " }\n" - + " }\n" - + " },\n" - + " \"aggregations\" : {\n" - + " \"count(distinct name) filter(where age > 30)\" : {\n" - + " \"cardinality\" : {\n" - + " \"field\" : \"name\"\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + "}", + assertEquals(format( + "{%n" + + " \"count(distinct name) filter(where age > 30)\" : {%n" + + " \"filter\" : {%n" + + " \"range\" : {%n" + + " \"age\" : {%n" + + " \"from\" : 30,%n" + + " \"to\" : null,%n" + + " \"include_lower\" : false,%n" + + " \"include_upper\" : true,%n" + + " \"boost\" : 1.0%n" + + " }%n" + + " }%n" + + " },%n" + + " \"aggregations\" : {%n" + + " \"count(distinct name) filter(where age > 30)\" : {%n" + + " \"cardinality\" : {%n" + + " \"field\" : \"name\"%n" + + " }%n" + + " }%n" + + " }%n" + + " }%n" + + "}"), buildQuery(Collections.singletonList(named( "count(distinct name) filter(where age > 30)", new CountAggregator(Collections.singletonList(ref("name", STRING)), INTEGER) diff --git a/protocol/src/test/java/org/opensearch/sql/protocol/response/format/CsvResponseFormatterTest.java b/protocol/src/test/java/org/opensearch/sql/protocol/response/format/CsvResponseFormatterTest.java index 8998086afc..7008b51fa6 100644 --- a/protocol/src/test/java/org/opensearch/sql/protocol/response/format/CsvResponseFormatterTest.java +++ b/protocol/src/test/java/org/opensearch/sql/protocol/response/format/CsvResponseFormatterTest.java @@ -7,6 +7,7 @@ package org.opensearch.sql.protocol.response.format; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.opensearch.sql.common.utils.StringUtils.format; import static org.opensearch.sql.data.model.ExprValueUtils.LITERAL_MISSING; import static org.opensearch.sql.data.model.ExprValueUtils.LITERAL_NULL; import static org.opensearch.sql.data.model.ExprValueUtils.stringValue; @@ -37,8 +38,8 @@ void formatResponse() { tupleValue(ImmutableMap.of("name", "John", "age", 20)), tupleValue(ImmutableMap.of("name", "Smith", "age", 30)))); CsvResponseFormatter formatter = new CsvResponseFormatter(); - String expected = "name,age\nJohn,20\nSmith,30"; - assertEquals(expected, formatter.format(response)); + String expected = "name,age%nJohn,20%nSmith,30"; + assertEquals(format(expected), formatter.format(response)); } @Test @@ -51,9 +52,9 @@ void sanitizeHeaders() { QueryResult response = new QueryResult(schema, Arrays.asList( tupleValue(ImmutableMap.of( "=firstname", "John", "+lastname", "Smith", "-city", "Seattle", "@age", 20)))); - String expected = "'=firstname,'+lastname,'-city,'@age\n" + String expected = "'=firstname,'+lastname,'-city,'@age%n" + "John,Smith,Seattle,20"; - assertEquals(expected, formatter.format(response)); + assertEquals(format(expected), formatter.format(response)); } @Test @@ -67,14 +68,14 @@ void sanitizeData() { tupleValue(ImmutableMap.of("city", "-Seattle")), tupleValue(ImmutableMap.of("city", "@Seattle")), tupleValue(ImmutableMap.of("city", "Seattle=")))); - String expected = "city\n" - + "Seattle\n" - + "'=Seattle\n" - + "'+Seattle\n" - + "'-Seattle\n" - + "'@Seattle\n" + String expected = "city%n" + + "Seattle%n" + + "'=Seattle%n" + + "'+Seattle%n" + + "'-Seattle%n" + + "'@Seattle%n" + "Seattle="; - assertEquals(expected, formatter.format(response)); + assertEquals(format(expected), formatter.format(response)); } @Test @@ -84,9 +85,9 @@ void quoteIfRequired() { new ExecutionEngine.Schema.Column(",,age", ",,age", INTEGER))); QueryResult response = new QueryResult(schema, Arrays.asList( tupleValue(ImmutableMap.of("na,me", "John,Smith", ",,age", "30,,,")))); - String expected = "\"na,me\",\",,age\"\n" + String expected = "\"na,me\",\",,age\"%n" + "\"John,Smith\",\"30,,,\""; - assertEquals(expected, formatter.format(response)); + assertEquals(format(expected), formatter.format(response)); } @Test @@ -105,10 +106,10 @@ void escapeSanitize() { QueryResult response = new QueryResult(schema, Arrays.asList( tupleValue(ImmutableMap.of("city", "=Seattle")), tupleValue(ImmutableMap.of("city", ",,Seattle")))); - String expected = "city\n" - + "=Seattle\n" + String expected = "city%n" + + "=Seattle%n" + "\",,Seattle\""; - assertEquals(expected, escapeFormatter.format(response)); + assertEquals(format(expected), escapeFormatter.format(response)); } @Test @@ -122,11 +123,11 @@ void replaceNullValues() { ImmutableMap.of("firstname", LITERAL_NULL, "city", stringValue("Seattle"))), ExprTupleValue.fromExprValueMap( ImmutableMap.of("firstname", stringValue("John"), "city", LITERAL_MISSING)))); - String expected = "name,city\n" - + "John,Seattle\n" - + ",Seattle\n" + String expected = "name,city%n" + + "John,Seattle%n" + + ",Seattle%n" + "John,"; - assertEquals(expected, formatter.format(response)); + assertEquals(format(expected), formatter.format(response)); } } diff --git a/protocol/src/test/java/org/opensearch/sql/protocol/response/format/RawResponseFormatterTest.java b/protocol/src/test/java/org/opensearch/sql/protocol/response/format/RawResponseFormatterTest.java index 87d2d6f57f..24b5a4431d 100644 --- a/protocol/src/test/java/org/opensearch/sql/protocol/response/format/RawResponseFormatterTest.java +++ b/protocol/src/test/java/org/opensearch/sql/protocol/response/format/RawResponseFormatterTest.java @@ -7,6 +7,7 @@ package org.opensearch.sql.protocol.response.format; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.opensearch.sql.common.utils.StringUtils.format; import static org.opensearch.sql.data.model.ExprValueUtils.LITERAL_MISSING; import static org.opensearch.sql.data.model.ExprValueUtils.LITERAL_NULL; import static org.opensearch.sql.data.model.ExprValueUtils.stringValue; @@ -36,8 +37,8 @@ void formatResponse() { QueryResult response = new QueryResult(schema, Arrays.asList( tupleValue(ImmutableMap.of("name", "John", "age", 20)), tupleValue(ImmutableMap.of("name", "Smith", "age", 30)))); - String expected = "name|age\nJohn|20\nSmith|30"; - assertEquals(expected, rawFormater.format(response)); + String expected = "name|age%nJohn|20%nSmith|30"; + assertEquals(format(expected), rawFormater.format(response)); } @Test @@ -50,9 +51,9 @@ void sanitizeHeaders() { QueryResult response = new QueryResult(schema, Arrays.asList( tupleValue(ImmutableMap.of( "=firstname", "John", "+lastname", "Smith", "-city", "Seattle", "@age", 20)))); - String expected = "=firstname|+lastname|-city|@age\n" + String expected = "=firstname|+lastname|-city|@age%n" + "John|Smith|Seattle|20"; - assertEquals(expected, rawFormater.format(response)); + assertEquals(format(expected), rawFormater.format(response)); } @Test @@ -66,14 +67,14 @@ void sanitizeData() { tupleValue(ImmutableMap.of("city", "-Seattle")), tupleValue(ImmutableMap.of("city", "@Seattle")), tupleValue(ImmutableMap.of("city", "Seattle=")))); - String expected = "city\n" - + "Seattle\n" - + "=Seattle\n" - + "+Seattle\n" - + "-Seattle\n" - + "@Seattle\n" + String expected = "city%n" + + "Seattle%n" + + "=Seattle%n" + + "+Seattle%n" + + "-Seattle%n" + + "@Seattle%n" + "Seattle="; - assertEquals(expected, rawFormater.format(response)); + assertEquals(format(expected), rawFormater.format(response)); } @Test @@ -83,9 +84,9 @@ void quoteIfRequired() { new ExecutionEngine.Schema.Column("||age", "||age", INTEGER))); QueryResult response = new QueryResult(schema, Arrays.asList( tupleValue(ImmutableMap.of("na|me", "John|Smith", "||age", "30|||")))); - String expected = "\"na|me\"|\"||age\"\n" + String expected = "\"na|me\"|\"||age\"%n" + "\"John|Smith\"|\"30|||\""; - assertEquals(expected, rawFormater.format(response)); + assertEquals(format(expected), rawFormater.format(response)); } @Test @@ -104,10 +105,10 @@ void escapeSanitize() { QueryResult response = new QueryResult(schema, Arrays.asList( tupleValue(ImmutableMap.of("city", "=Seattle")), tupleValue(ImmutableMap.of("city", "||Seattle")))); - String expected = "city\n" - + "=Seattle\n" + String expected = "city%n" + + "=Seattle%n" + "\"||Seattle\""; - assertEquals(expected, escapeFormatter.format(response)); + assertEquals(format(expected), escapeFormatter.format(response)); } @Test @@ -117,10 +118,10 @@ void senstiveCharater() { QueryResult response = new QueryResult(schema, Arrays.asList( tupleValue(ImmutableMap.of("city", "@Seattle")), tupleValue(ImmutableMap.of("city", "++Seattle")))); - String expected = "city\n" - + "@Seattle\n" + String expected = "city%n" + + "@Seattle%n" + "++Seattle"; - assertEquals(expected, rawFormater.format(response)); + assertEquals(format(expected), rawFormater.format(response)); } @Test @@ -131,10 +132,10 @@ void senstiveCharaterWithSanitize() { QueryResult response = new QueryResult(schema, Arrays.asList( tupleValue(ImmutableMap.of("city", "@Seattle")), tupleValue(ImmutableMap.of("city", "++Seattle|||")))); - String expected = "city\n" - + "@Seattle\n" + String expected = "city%n" + + "@Seattle%n" + "\"++Seattle|||\""; - assertEquals(expected, testFormater.format(response)); + assertEquals(format(expected), testFormater.format(response)); } @Test @@ -148,11 +149,11 @@ void replaceNullValues() { ImmutableMap.of("firstname", LITERAL_NULL, "city", stringValue("Seattle"))), ExprTupleValue.fromExprValueMap( ImmutableMap.of("firstname", stringValue("John"), "city", LITERAL_MISSING)))); - String expected = "name|city\n" - + "John|Seattle\n" - + "|Seattle\n" + String expected = "name|city%n" + + "John|Seattle%n" + + "|Seattle%n" + "John|"; - assertEquals(expected, rawFormater.format(response)); + assertEquals(format(expected), rawFormater.format(response)); } } diff --git a/workbench/package.json b/workbench/package.json index a7a3c727d1..7425f9b058 100644 --- a/workbench/package.json +++ b/workbench/package.json @@ -16,7 +16,7 @@ "start": "plugin-helpers start", "test:server": "plugin-helpers test:server", "test:browser": "plugin-helpers test:browser", - "test:jest": "NODE_PATH=../../node_modules ../../node_modules/.bin/jest --config ./test/jest.config.js", + "test:jest": "../../node_modules/.bin/jest --config ./test/jest.config.js", "build": "yarn plugin_helpers build", "plugin_helpers": "node ../../scripts/plugin_helpers" }, From d28c17df226cf15047860c838d82089fb9727a9d Mon Sep 17 00:00:00 2001 From: "opensearch-trigger-bot[bot]" <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Date: Mon, 7 Nov 2022 12:53:19 -0800 Subject: [PATCH 07/55] Add release note (#1033) (#1035) Signed-off-by: Chen Dai (cherry picked from commit 9944f2e9a263ee06e7da99d72cc88f7eb267633f) Co-authored-by: Chen Dai --- .../opensearch-sql.release-notes-2.4.0.0.md | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 release-notes/opensearch-sql.release-notes-2.4.0.0.md diff --git a/release-notes/opensearch-sql.release-notes-2.4.0.0.md b/release-notes/opensearch-sql.release-notes-2.4.0.0.md new file mode 100644 index 0000000000..95b5b3a100 --- /dev/null +++ b/release-notes/opensearch-sql.release-notes-2.4.0.0.md @@ -0,0 +1,82 @@ +Compatible with OpenSearch and OpenSearch Dashboards Version 2.4.0 + +### Features + +#### Data Source Management + +* Catalog Implementation ([#819](https://github.com/opensearch-project/sql/pull/819)) +* Catalog to Datasource changes ([#1027](https://github.com/opensearch-project/sql/pull/1027)) + +#### Prometheus Support + +* Prometheus Connector Initial Code ([#878](https://github.com/opensearch-project/sql/pull/878)) +* Restricted catalog name to [a-zA-Z0-9_-] characters ([#876](https://github.com/opensearch-project/sql/pull/876)) +* Table function for supporting prometheus query_range function ([#875](https://github.com/opensearch-project/sql/pull/875)) +* List tables/metrics using information_schema in source command. ([#914](https://github.com/opensearch-project/sql/pull/914)) +* [Backport 2.4] Prometheus select metric and stats queries. ([#1020](https://github.com/opensearch-project/sql/pull/1020)) + +#### Log Pattern Command + +* Add patterns and grok command ([#813](https://github.com/opensearch-project/sql/pull/813)) + +#### ML Command + +* Add category_field to AD command in PPL ([#952](https://github.com/opensearch-project/sql/pull/952)) +* A Generic ML Command in PPL ([#971](https://github.com/opensearch-project/sql/pull/971)) + +### Enhancements + +* Add datetime functions `FROM_UNIXTIME` and `UNIX_TIMESTAMP` ([#835](https://github.com/opensearch-project/sql/pull/835)) +* Adding `CONVERT_TZ` and `DATETIME` functions to SQL and PPL ([#848](https://github.com/opensearch-project/sql/pull/848)) +* Add Support for Highlight Wildcard in SQL ([#827](https://github.com/opensearch-project/sql/pull/827)) +* Update SQL CLI to use AWS session token. ([#918](https://github.com/opensearch-project/sql/pull/918)) +* Add `typeof` function. ([#867](https://github.com/opensearch-project/sql/pull/867)) +* Show catalogs ([#925](https://github.com/opensearch-project/sql/pull/925)) +* Add functions `PERIOD_ADD` and `PERIOD_DIFF`. ([#933](https://github.com/opensearch-project/sql/pull/933)) +* Add take() aggregation function in PPL ([#949](https://github.com/opensearch-project/sql/pull/949)) +* Describe Table with catalog name. ([#989](https://github.com/opensearch-project/sql/pull/989)) +* Catalog Enhancements ([#988](https://github.com/opensearch-project/sql/pull/988)) +* Rework on error reporting to make it more verbose and human-friendly. ([#839](https://github.com/opensearch-project/sql/pull/839)) + +### Bug Fixes + +* Fix EqualsAndHashCode Annotation Warning Messages ([#847](https://github.com/opensearch-project/sql/pull/847)) +* Remove duplicated png file ([#865](https://github.com/opensearch-project/sql/pull/865)) +* Fix NPE with multiple queries containing DOT(.) in index name. ([#870](https://github.com/opensearch-project/sql/pull/870)) +* Update JDBC driver version ([#941](https://github.com/opensearch-project/sql/pull/941)) +* Fix result order of parse with other run time fields ([#934](https://github.com/opensearch-project/sql/pull/934)) +* AD timefield name issue ([#919](https://github.com/opensearch-project/sql/pull/919)) +* [Backport 2.4] Add function name as identifier in antlr ([#1018](https://github.com/opensearch-project/sql/pull/1018)) +* [Backport 2.4] Fix incorrect results returned by `min`, `max` and `avg` ([#1022](https://github.com/opensearch-project/sql/pull/1022)) + +### Infrastructure + +* Fix failing ODBC workflow ([#828](https://github.com/opensearch-project/sql/pull/828)) +* Reorganize GitHub workflows. ([#837](https://github.com/opensearch-project/sql/pull/837)) +* Update com.fasterxml.jackson to 2.13.4 to match opensearch repo. ([#858](https://github.com/opensearch-project/sql/pull/858)) +* Trigger build on pull request synchronize action. ([#873](https://github.com/opensearch-project/sql/pull/873)) +* Update Jetty Dependency ([#872](https://github.com/opensearch-project/sql/pull/872)) +* Fix manual CI workflow and add `name` option. ([#904](https://github.com/opensearch-project/sql/pull/904)) +* add groupId to pluginzip publication ([#906](https://github.com/opensearch-project/sql/pull/906)) +* Enable ci for windows and macos ([#907](https://github.com/opensearch-project/sql/pull/907)) +* Update group to groupId ([#908](https://github.com/opensearch-project/sql/pull/908)) +* Enable ignored and disabled tests ([#926](https://github.com/opensearch-project/sql/pull/926)) +* Update version of `jackson-databind` for `sql-jdbc` only ([#943](https://github.com/opensearch-project/sql/pull/943)) +* Add security policy for ml-commons library ([#945](https://github.com/opensearch-project/sql/pull/945)) +* Change condition to always upload coverage for linux workbench ([#967](https://github.com/opensearch-project/sql/pull/967)) +* Bump ansi-regex for workbench ([#975](https://github.com/opensearch-project/sql/pull/975)) +* Removed json-smart in the JDBC driver ([#978](https://github.com/opensearch-project/sql/pull/978)) +* Update MacOS Version for ODBC Driver ([#987](https://github.com/opensearch-project/sql/pull/987)) +* Update Jackson Databind version to 2.13.4.2 ([#992](https://github.com/opensearch-project/sql/pull/992)) +* [Backport 2.4] Bump sql-cli version to 1.1.0 ([#1024](https://github.com/opensearch-project/sql/pull/1024)) + +### Documentation + +* Add Forum link in SQL plugin README.md ([#809](https://github.com/opensearch-project/sql/pull/809)) +* Fix indentation of patterns example ([#880](https://github.com/opensearch-project/sql/pull/880)) +* Update docs - missing changes for #754. ([#884](https://github.com/opensearch-project/sql/pull/884)) +* Fix broken links ([#911](https://github.com/opensearch-project/sql/pull/911)) +* Adding docs related to catalog. ([#963](https://github.com/opensearch-project/sql/pull/963)) +* SHOW CATALOGS documentation and integ tests ([#977](https://github.com/opensearch-project/sql/pull/977)) +* [Backport 2.4] Add document for ml command. ([#1017](https://github.com/opensearch-project/sql/pull/1017)) + From ee0fdc8c0603296ae5e1c9daf3c325de6aa3ea17 Mon Sep 17 00:00:00 2001 From: Peng Huo Date: Wed, 9 Nov 2022 12:03:51 -0800 Subject: [PATCH 08/55] resolve conflict version Signed-off-by: Peng Huo --- build.gradle | 4 ++-- integ-test/build.gradle | 1 + plugin/build.gradle | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index f0742b8b84..daf16f10ce 100644 --- a/build.gradle +++ b/build.gradle @@ -8,8 +8,8 @@ buildscript { ext { opensearch_version = System.getProperty("opensearch.version", "3.0.0-SNAPSHOT") spring_version = "5.3.22" - jackson_version = "2.14.0" - jackson_databind_version = "2.14.0" + jackson_version = "2.13.4" + jackson_databind_version = "2.13.4" isSnapshot = "true" == System.getProperty("build.snapshot", "true") buildVersionQualifier = System.getProperty("build.version_qualifier", "") version_tokens = opensearch_version.tokenize('-') diff --git a/integ-test/build.gradle b/integ-test/build.gradle index cb7ae60b05..04287a5aaf 100644 --- a/integ-test/build.gradle +++ b/integ-test/build.gradle @@ -68,6 +68,7 @@ configurations.all { resolutionStrategy.force "org.jetbrains.kotlin:kotlin-stdlib:1.6.0" resolutionStrategy.force "org.jetbrains.kotlin:kotlin-stdlib-common:1.6.0" resolutionStrategy.force "com.squareup.okhttp3:okhttp:4.9.3" + resolutionStrategy.force "org.slf4j:slf4j-api:1.7.36" } dependencies { diff --git a/plugin/build.gradle b/plugin/build.gradle index 6a0900c3cc..1520292514 100644 --- a/plugin/build.gradle +++ b/plugin/build.gradle @@ -93,6 +93,7 @@ configurations.all { resolutionStrategy.force "org.jetbrains.kotlin:kotlin-stdlib:1.6.0" resolutionStrategy.force "org.jetbrains.kotlin:kotlin-stdlib-common:1.6.0" resolutionStrategy.force "com.squareup.okhttp3:okhttp:4.9.3" + resolutionStrategy.force "org.slf4j:slf4j-api:1.7.36" } compileJava { options.compilerArgs.addAll(["-processor", 'lombok.launch.AnnotationProcessorHider$AnnotationProcessor']) From ef1d0d71f10254ce8f405d45ae738687fdc36b32 Mon Sep 17 00:00:00 2001 From: Peng Huo Date: Mon, 21 Nov 2022 16:34:14 -0800 Subject: [PATCH 09/55] bump jackson version to 2.14.0 Signed-off-by: Peng Huo --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 03a5df5f93..e04a6fb79a 100644 --- a/build.gradle +++ b/build.gradle @@ -8,8 +8,8 @@ buildscript { ext { opensearch_version = System.getProperty("opensearch.version", "3.0.0-SNAPSHOT") spring_version = "5.3.22" - jackson_version = "2.13.4" - jackson_databind_version = "2.13.4" + jackson_version = "2.14.0" + jackson_databind_version = "2.14.0" isSnapshot = "true" == System.getProperty("build.snapshot", "true") buildVersionQualifier = System.getProperty("build.version_qualifier", "") version_tokens = opensearch_version.tokenize('-') From 6e5610c508a88dd3322bca139a6d6fdae1999e9d Mon Sep 17 00:00:00 2001 From: Peng Huo Date: Tue, 6 Dec 2022 11:42:58 -0800 Subject: [PATCH 10/55] upgrad jackson Signed-off-by: Peng Huo --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index e04a6fb79a..7a0b1e96fd 100644 --- a/build.gradle +++ b/build.gradle @@ -8,8 +8,8 @@ buildscript { ext { opensearch_version = System.getProperty("opensearch.version", "3.0.0-SNAPSHOT") spring_version = "5.3.22" - jackson_version = "2.14.0" - jackson_databind_version = "2.14.0" + jackson_version = "2.14.1" + jackson_databind_version = "2.14.1" isSnapshot = "true" == System.getProperty("build.snapshot", "true") buildVersionQualifier = System.getProperty("build.version_qualifier", "") version_tokens = opensearch_version.tokenize('-') From 1d18620070025a19e6236322d235acde538ab8e3 Mon Sep 17 00:00:00 2001 From: Peng Huo Date: Tue, 6 Dec 2022 13:12:55 -0800 Subject: [PATCH 11/55] upgrade bwc baseVersion to 2.5.0 Signed-off-by: Peng Huo --- integ-test/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integ-test/build.gradle b/integ-test/build.gradle index 38c2f9790b..146a00fddd 100644 --- a/integ-test/build.gradle +++ b/integ-test/build.gradle @@ -238,7 +238,7 @@ task compileJdbc(type: Exec) { } } -String baseVersion = "2.4.0" +String baseVersion = "2.5.0" String bwcVersion = baseVersion + ".0"; String baseName = "sqlBwcCluster" String bwcFilePath = "src/test/resources/bwc/" From c923e80cd654ee8136c74180bf0bd6231044ff71 Mon Sep 17 00:00:00 2001 From: Margarit Hakobyan Date: Fri, 9 Dec 2022 10:24:22 -0800 Subject: [PATCH 12/55] Add reverse() string function to V2 SQL Engine(#1154) * Add reverse() string function to V2 SQL engine Signed-off-by: Margarit Hakobyan --- .../org/opensearch/sql/expression/DSL.java | 4 ++++ .../function/BuiltinFunctionName.java | 1 + .../sql/expression/text/TextFunction.java | 16 +++++++++++++ .../sql/expression/text/TextFunctionTest.java | 12 ++++++++++ docs/user/dql/functions.rst | 23 +++++++++++++++++++ docs/user/ppl/functions/string.rst | 23 +++++++++++++++++++ .../opensearch/sql/ppl/TextFunctionIT.java | 5 ++++ .../opensearch/sql/sql/TextFunctionIT.java | 14 +++++++++++ ppl/src/main/antlr/OpenSearchPPLLexer.g4 | 1 + ppl/src/main/antlr/OpenSearchPPLParser.g4 | 2 +- sql/src/main/antlr/OpenSearchSQLLexer.g4 | 1 + sql/src/main/antlr/OpenSearchSQLParser.g4 | 2 +- 12 files changed, 102 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/opensearch/sql/expression/DSL.java b/core/src/main/java/org/opensearch/sql/expression/DSL.java index 3b601f98a3..fc425c6c20 100644 --- a/core/src/main/java/org/opensearch/sql/expression/DSL.java +++ b/core/src/main/java/org/opensearch/sql/expression/DSL.java @@ -486,6 +486,10 @@ public static FunctionExpression replace(Expression... expressions) { return compile(FunctionProperties.None, BuiltinFunctionName.REPLACE, expressions); } + public static FunctionExpression reverse(Expression... expressions) { + return compile(FunctionProperties.None, BuiltinFunctionName.REVERSE, expressions); + } + public static FunctionExpression and(Expression... expressions) { return compile(FunctionProperties.None, BuiltinFunctionName.AND, expressions); } diff --git a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java index 0b7701d8a9..b23c7613d6 100644 --- a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java +++ b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java @@ -167,6 +167,7 @@ public enum BuiltinFunctionName { POSITION(FunctionName.of("position")), REGEXP(FunctionName.of("regexp")), REPLACE(FunctionName.of("replace")), + REVERSE(FunctionName.of("reverse")), RIGHT(FunctionName.of("right")), RTRIM(FunctionName.of("rtrim")), STRCMP(FunctionName.of("strcmp")), diff --git a/core/src/main/java/org/opensearch/sql/expression/text/TextFunction.java b/core/src/main/java/org/opensearch/sql/expression/text/TextFunction.java index 5915700bf1..25eb25489c 100644 --- a/core/src/main/java/org/opensearch/sql/expression/text/TextFunction.java +++ b/core/src/main/java/org/opensearch/sql/expression/text/TextFunction.java @@ -49,6 +49,7 @@ public void register(BuiltinFunctionRepository repository) { repository.register(ltrim()); repository.register(position()); repository.register(replace()); + repository.register(reverse()); repository.register(right()); repository.register(rtrim()); repository.register(strcmp()); @@ -268,6 +269,17 @@ private DefaultFunctionResolver replace() { impl(nullMissingHandling(TextFunction::exprReplace), STRING, STRING, STRING, STRING)); } + /** + * REVERSE(str) returns reversed string of the string supplied as an argument + * Returns NULL if the argument is NULL. + * Supports the following signature: + * (STRING) -> STRING + */ + private DefaultFunctionResolver reverse() { + return define(BuiltinFunctionName.REVERSE.getName(), + impl(nullMissingHandling(TextFunction::exprReverse), STRING, STRING)); + } + private static ExprValue exprSubstrStart(ExprValue exprValue, ExprValue start) { int startIdx = start.integerValue(); if (startIdx == 0) { @@ -331,5 +343,9 @@ private static ExprValue exprLocate(ExprValue subStr, ExprValue str, ExprValue p private static ExprValue exprReplace(ExprValue str, ExprValue from, ExprValue to) { return new ExprStringValue(str.stringValue().replaceAll(from.stringValue(), to.stringValue())); } + + private static ExprValue exprReverse(ExprValue str) { + return new ExprStringValue(new StringBuilder(str.stringValue()).reverse().toString()); + } } diff --git a/core/src/test/java/org/opensearch/sql/expression/text/TextFunctionTest.java b/core/src/test/java/org/opensearch/sql/expression/text/TextFunctionTest.java index 5e32678b94..515b436c82 100644 --- a/core/src/test/java/org/opensearch/sql/expression/text/TextFunctionTest.java +++ b/core/src/test/java/org/opensearch/sql/expression/text/TextFunctionTest.java @@ -412,6 +412,18 @@ void replace() { assertEquals(missingValue(), eval(DSL.replace(missingRef, DSL.literal("a"), DSL.literal("b")))); } + @Test + void reverse() { + FunctionExpression expression = DSL.reverse(DSL.literal("abcde")); + assertEquals(STRING, expression.type()); + assertEquals("edcba", eval(expression).stringValue()); + + when(nullRef.type()).thenReturn(STRING); + assertEquals(nullValue(), eval(DSL.reverse(nullRef))); + when(missingRef.type()).thenReturn(STRING); + assertEquals(missingValue(), eval(DSL.reverse(missingRef))); + } + void testConcatString(List strings) { String expected = null; if (strings.stream().noneMatch(Objects::isNull)) { diff --git a/docs/user/dql/functions.rst b/docs/user/dql/functions.rst index 7be50ccffb..843d6c7e45 100644 --- a/docs/user/dql/functions.rst +++ b/docs/user/dql/functions.rst @@ -2468,6 +2468,29 @@ Example:: +--------------------------------------------------+ +REVERSE +------- + +Description +>>>>>>>>>>> + +Usage: REVERSE(str) returns reversed string of the string supplied as an argument. Returns NULL if the argument is NULL. + +Argument type: STRING + +Return type: STRING + +Example:: + + os> SELECT REVERSE('abcde'), REVERSE(null) + fetched rows / total rows = 1/1 + +--------------------+-----------------+ + | REVERSE('abcde') | REVERSE(null) | + |--------------------+-----------------| + | edcba | null | + +--------------------+-----------------+ + + RIGHT ----- diff --git a/docs/user/ppl/functions/string.rst b/docs/user/ppl/functions/string.rst index b14acc88e0..361bc2ef37 100644 --- a/docs/user/ppl/functions/string.rst +++ b/docs/user/ppl/functions/string.rst @@ -175,6 +175,29 @@ Example:: +-------------------------------------+---------------------------------------+ +REVERSE +----- + +Description +>>>>>>>>>>> + +Usage: REVERSE(str) returns reversed string of the string supplied as an argument. + +Argument type: STRING + +Return type: STRING + +Example:: + + os> source=people | eval `REVERSE('abcde')` = REVERSE('abcde') | fields `REVERSE('abcde')` + fetched rows / total rows = 1/1 + +--------------------+ + | REVERSE('abcde') | + |--------------------| + | edcba | + +--------------------+ + + RIGHT ----- diff --git a/integ-test/src/test/java/org/opensearch/sql/ppl/TextFunctionIT.java b/integ-test/src/test/java/org/opensearch/sql/ppl/TextFunctionIT.java index 84717900ca..7c48bceab0 100644 --- a/integ-test/src/test/java/org/opensearch/sql/ppl/TextFunctionIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/ppl/TextFunctionIT.java @@ -139,4 +139,9 @@ public void testLocate() throws IOException { public void testReplace() throws IOException { verifyQuery("replace", "", ", 'world', ' opensearch'", "hello", " opensearch", "hello opensearch"); } + + @Test + public void testReverse() throws IOException { + verifyQuery("reverse", "", "", "olleh", "dlrow", "dlrowolleh"); + } } diff --git a/integ-test/src/test/java/org/opensearch/sql/sql/TextFunctionIT.java b/integ-test/src/test/java/org/opensearch/sql/sql/TextFunctionIT.java index c907b36a63..175cafd31e 100644 --- a/integ-test/src/test/java/org/opensearch/sql/sql/TextFunctionIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/sql/TextFunctionIT.java @@ -41,12 +41,26 @@ void verifyQuery(String query, String type, Integer output) throws IOException { verifyDataRows(result, rows(output)); } + void verifyQueryWithNullOutput(String query, String type) throws IOException { + JSONObject result = executeQuery("select 'test null'," + query); + verifySchema(result, schema(query, null, type), + schema("'test null'", null, type)); + verifyDataRows(result, rows("test null", null)); + } + @Test public void testRegexp() throws IOException { verifyQuery("'a' regexp 'b'", "integer", 0); verifyQuery("'a' regexp '.*'", "integer", 1); } + @Test + public void testReverse() throws IOException { + verifyQuery("reverse('hello')", "keyword", "olleh"); + verifyQuery("reverse('')", "keyword", ""); + verifyQueryWithNullOutput("reverse(null)", "keyword"); + } + @Test public void testSubstr() throws IOException { verifyQuery("substr('hello', 2)", "keyword", "ello"); diff --git a/ppl/src/main/antlr/OpenSearchPPLLexer.g4 b/ppl/src/main/antlr/OpenSearchPPLLexer.g4 index 8c0340e7f1..9282c42308 100644 --- a/ppl/src/main/antlr/OpenSearchPPLLexer.g4 +++ b/ppl/src/main/antlr/OpenSearchPPLLexer.g4 @@ -290,6 +290,7 @@ LEFT: 'LEFT'; ASCII: 'ASCII'; LOCATE: 'LOCATE'; REPLACE: 'REPLACE'; +REVERSE: 'REVERSE'; CAST: 'CAST'; // BOOL FUNCTIONS diff --git a/ppl/src/main/antlr/OpenSearchPPLParser.g4 b/ppl/src/main/antlr/OpenSearchPPLParser.g4 index 6dba1ae783..a0d6553875 100644 --- a/ppl/src/main/antlr/OpenSearchPPLParser.g4 +++ b/ppl/src/main/antlr/OpenSearchPPLParser.g4 @@ -487,7 +487,7 @@ systemFunctionBase textFunctionBase : SUBSTR | SUBSTRING | TRIM | LTRIM | RTRIM | LOWER | UPPER | CONCAT | CONCAT_WS | LENGTH | STRCMP - | RIGHT | LEFT | ASCII | LOCATE | REPLACE + | RIGHT | LEFT | ASCII | LOCATE | REPLACE | REVERSE ; positionFunctionName diff --git a/sql/src/main/antlr/OpenSearchSQLLexer.g4 b/sql/src/main/antlr/OpenSearchSQLLexer.g4 index a18aee8f10..a359f48be3 100644 --- a/sql/src/main/antlr/OpenSearchSQLLexer.g4 +++ b/sql/src/main/antlr/OpenSearchSQLLexer.g4 @@ -243,6 +243,7 @@ REPLACE: 'REPLACE'; RINT: 'RINT'; ROUND: 'ROUND'; RTRIM: 'RTRIM'; +REVERSE: 'REVERSE'; SIGN: 'SIGN'; SIGNUM: 'SIGNUM'; SIN: 'SIN'; diff --git a/sql/src/main/antlr/OpenSearchSQLParser.g4 b/sql/src/main/antlr/OpenSearchSQLParser.g4 index 6e8e0e08fe..58d4be1813 100644 --- a/sql/src/main/antlr/OpenSearchSQLParser.g4 +++ b/sql/src/main/antlr/OpenSearchSQLParser.g4 @@ -454,7 +454,7 @@ dateTimeFunctionName textFunctionName : SUBSTR | SUBSTRING | TRIM | LTRIM | RTRIM | LOWER | UPPER | CONCAT | CONCAT_WS | SUBSTR | LENGTH | STRCMP | RIGHT | LEFT - | ASCII | LOCATE | REPLACE + | ASCII | LOCATE | REPLACE | REVERSE ; flowControlFunctionName From c5e8fc09b40e8440389e6c91d67144d48560eba2 Mon Sep 17 00:00:00 2001 From: Andriy Redko Date: Fri, 9 Dec 2022 18:13:19 -0500 Subject: [PATCH 13/55] Update Jackson to 2.14.1 and fix dependency resolution issues (#1150) Signed-off-by: Andriy Redko Signed-off-by: Andriy Redko --- build.gradle | 4 ++-- integ-test/build.gradle | 2 ++ plugin/build.gradle | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index a9a171da01..b6f64560db 100644 --- a/build.gradle +++ b/build.gradle @@ -8,8 +8,8 @@ buildscript { ext { opensearch_version = System.getProperty("opensearch.version", "2.4.0-SNAPSHOT") spring_version = "5.3.22" - jackson_version = "2.14.0" - jackson_databind_version = "2.14.0" + jackson_version = "2.14.1" + jackson_databind_version = "2.14.1" isSnapshot = "true" == System.getProperty("build.snapshot", "true") buildVersionQualifier = System.getProperty("build.version_qualifier", "") version_tokens = opensearch_version.tokenize('-') diff --git a/integ-test/build.gradle b/integ-test/build.gradle index 6c10d55262..8adfd84b40 100644 --- a/integ-test/build.gradle +++ b/integ-test/build.gradle @@ -66,6 +66,8 @@ configurations.all { resolutionStrategy.force 'commons-codec:commons-codec:1.13' resolutionStrategy.force 'com.google.guava:guava:31.0.1-jre' resolutionStrategy.force "com.fasterxml.jackson.core:jackson-core:${jackson_version}" + resolutionStrategy.force "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:${jackson_version}" + resolutionStrategy.force "com.fasterxml.jackson.dataformat:jackson-dataformat-smile:${jackson_version}" resolutionStrategy.force "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:${jackson_version}" resolutionStrategy.force "com.fasterxml.jackson.core:jackson-databind:${jackson_databind_version}" resolutionStrategy.force "org.jetbrains.kotlin:kotlin-stdlib:1.6.0" diff --git a/plugin/build.gradle b/plugin/build.gradle index d2bdb87275..d689da0f57 100644 --- a/plugin/build.gradle +++ b/plugin/build.gradle @@ -89,6 +89,8 @@ configurations.all { // enforce 1.1.3, https://www.whitesourcesoftware.com/vulnerability-database/WS-2019-0379 resolutionStrategy.force 'commons-codec:commons-codec:1.13' resolutionStrategy.force 'com.google.guava:guava:31.0.1-jre' + resolutionStrategy.force "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:${jackson_version}" + resolutionStrategy.force "com.fasterxml.jackson.dataformat:jackson-dataformat-smile:${jackson_version}" resolutionStrategy.force "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:${jackson_version}" resolutionStrategy.force "com.fasterxml.jackson.core:jackson-databind:${jackson_databind_version}" resolutionStrategy.force "org.jetbrains.kotlin:kotlin-stdlib:1.6.0" From f8fbef7242b84d0e04769efb6e1a71e287ab6e9a Mon Sep 17 00:00:00 2001 From: Peng Huo Date: Mon, 12 Dec 2022 15:47:30 -0800 Subject: [PATCH 14/55] Change LIKE operator case-insensitive match (#1160) Signed-off-by: Peng Huo --- .../main/java/org/opensearch/sql/utils/OperatorUtils.java | 5 +++-- docs/user/dql/expressions.rst | 6 +++--- docs/user/ppl/functions/string.rst | 4 ++-- .../opensearch/storage/script/filter/lucene/LikeQuery.java | 2 +- .../storage/script/filter/FilterQueryBuilderTest.java | 2 ++ 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/org/opensearch/sql/utils/OperatorUtils.java b/core/src/main/java/org/opensearch/sql/utils/OperatorUtils.java index 26a21251eb..f4ece6a190 100644 --- a/core/src/main/java/org/opensearch/sql/utils/OperatorUtils.java +++ b/core/src/main/java/org/opensearch/sql/utils/OperatorUtils.java @@ -22,8 +22,9 @@ public class OperatorUtils { * @return if text matches pattern returns true; else return false. */ public static ExprBooleanValue matches(ExprValue text, ExprValue pattern) { - return ExprBooleanValue - .of(Pattern.compile(patternToRegex(pattern.stringValue())).matcher(text.stringValue()) + return ExprBooleanValue.of( + Pattern.compile(patternToRegex(pattern.stringValue()), Pattern.CASE_INSENSITIVE) + .matcher(text.stringValue()) .matches()); } diff --git a/docs/user/dql/expressions.rst b/docs/user/dql/expressions.rst index a167ce29b5..89fcd7f0af 100644 --- a/docs/user/dql/expressions.rst +++ b/docs/user/dql/expressions.rst @@ -149,12 +149,12 @@ Here is an example for different type of comparison operators:: LIKE ---- -expr LIKE pattern. The expr is string value, pattern is supports literal text, a percent ( % ) character for a wildcard, and an underscore ( _ ) character for a single character match:: +expr LIKE pattern. The expr is string value, pattern is supports literal text, a percent ( % ) character for a wildcard, and an underscore ( _ ) character for a single character match, pattern is case insensitive:: - os> SELECT 'axyzb' LIKE 'a%b', 'acb' LIKE 'a_b', 'axyzb' NOT LIKE 'a%b', 'acb' NOT LIKE 'a_b'; + os> SELECT 'axyzb' LIKE 'a%b', 'acb' LIKE 'A_B', 'axyzb' NOT LIKE 'a%b', 'acb' NOT LIKE 'a_b'; fetched rows / total rows = 1/1 +----------------------+--------------------+--------------------------+------------------------+ - | 'axyzb' LIKE 'a%b' | 'acb' LIKE 'a_b' | 'axyzb' NOT LIKE 'a%b' | 'acb' NOT LIKE 'a_b' | + | 'axyzb' LIKE 'a%b' | 'acb' LIKE 'A_B' | 'axyzb' NOT LIKE 'a%b' | 'acb' NOT LIKE 'a_b' | |----------------------+--------------------+--------------------------+------------------------| | True | True | False | False | +----------------------+--------------------+--------------------------+------------------------+ diff --git a/docs/user/ppl/functions/string.rst b/docs/user/ppl/functions/string.rst index 361bc2ef37..0503759cbd 100644 --- a/docs/user/ppl/functions/string.rst +++ b/docs/user/ppl/functions/string.rst @@ -87,7 +87,7 @@ LIKE Description >>>>>>>>>>> -Usage: like(string, PATTERN) return true if the string match the PATTERN. +Usage: like(string, PATTERN) return true if the string match the PATTERN, PATTERN is case insensitive. There are two wildcards often used in conjunction with the LIKE operator: @@ -96,7 +96,7 @@ There are two wildcards often used in conjunction with the LIKE operator: Example:: - os> source=people | eval `LIKE('hello world', '_ello%')` = LIKE('hello world', '_ello%') | fields `LIKE('hello world', '_ello%')` + os> source=people | eval `LIKE('hello world', '_ello%')` = LIKE('hello world', '_ELLO%') | fields `LIKE('hello world', '_ello%')` fetched rows / total rows = 1/1 +---------------------------------+ | LIKE('hello world', '_ello%') | diff --git a/opensearch/src/main/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/LikeQuery.java b/opensearch/src/main/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/LikeQuery.java index dbf0e5544c..ad47ba437a 100644 --- a/opensearch/src/main/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/LikeQuery.java +++ b/opensearch/src/main/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/LikeQuery.java @@ -32,6 +32,6 @@ public QueryBuilder build(FunctionExpression func) { */ protected WildcardQueryBuilder createBuilder(String field, String query) { String matchText = StringUtils.convertSqlWildcardToLucene(query); - return QueryBuilders.wildcardQuery(field, matchText); + return QueryBuilders.wildcardQuery(field, matchText).caseInsensitive(true); } } diff --git a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/FilterQueryBuilderTest.java b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/FilterQueryBuilderTest.java index cea4e2488a..f3e4fe7afd 100644 --- a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/FilterQueryBuilderTest.java +++ b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/FilterQueryBuilderTest.java @@ -132,6 +132,7 @@ void should_build_wildcard_query_for_like_expression() { + " \"wildcard\" : {\n" + " \"name\" : {\n" + " \"wildcard\" : \"*John?\",\n" + + " \"case_insensitive\" : true,\n" + " \"boost\" : 1.0\n" + " }\n" + " }\n" @@ -282,6 +283,7 @@ void should_use_keyword_for_multi_field_in_like_expression() { + " \"wildcard\" : {\n" + " \"name.keyword\" : {\n" + " \"wildcard\" : \"John*\",\n" + + " \"case_insensitive\" : true,\n" + " \"boost\" : 1.0\n" + " }\n" + " }\n" From 32ad2ffe0af966bf7951879214923a1b11f5a91c Mon Sep 17 00:00:00 2001 From: "opensearch-trigger-bot[bot]" <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Date: Mon, 12 Dec 2022 16:41:57 -0800 Subject: [PATCH 15/55] Increment version to 2.5.0-SNAPSHOT (#999) Signed-off-by: opensearch-ci-bot Signed-off-by: opensearch-ci-bot Co-authored-by: opensearch-ci-bot --- .github/workflows/sql-workbench-test-and-build-workflow.yml | 2 +- build.gradle | 2 +- workbench/opensearch_dashboards.json | 4 ++-- workbench/package.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/sql-workbench-test-and-build-workflow.yml b/.github/workflows/sql-workbench-test-and-build-workflow.yml index 06005f3a3a..c837f9669b 100644 --- a/.github/workflows/sql-workbench-test-and-build-workflow.yml +++ b/.github/workflows/sql-workbench-test-and-build-workflow.yml @@ -12,7 +12,7 @@ on: env: PLUGIN_NAME: query-workbench-dashboards OPENSEARCH_VERSION: 'main' - OPENSEARCH_PLUGIN_VERSION: 2.4.0.0 + OPENSEARCH_PLUGIN_VERSION: 2.5.0.0 jobs: build: diff --git a/build.gradle b/build.gradle index b6f64560db..d1c253c1dd 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { ext { - opensearch_version = System.getProperty("opensearch.version", "2.4.0-SNAPSHOT") + opensearch_version = System.getProperty("opensearch.version", "2.5.0-SNAPSHOT") spring_version = "5.3.22" jackson_version = "2.14.1" jackson_databind_version = "2.14.1" diff --git a/workbench/opensearch_dashboards.json b/workbench/opensearch_dashboards.json index c8203b8db1..1bd7b74c8e 100644 --- a/workbench/opensearch_dashboards.json +++ b/workbench/opensearch_dashboards.json @@ -1,7 +1,7 @@ { "id": "queryWorkbenchDashboards", - "version": "2.4.0.0", - "opensearchDashboardsVersion": "2.4.0", + "version": "2.5.0.0", + "opensearchDashboardsVersion": "2.5.0", "server": true, "ui": true, "requiredPlugins": ["navigation"], diff --git a/workbench/package.json b/workbench/package.json index 8a2f5c6c71..08fd7dcb02 100644 --- a/workbench/package.json +++ b/workbench/package.json @@ -1,6 +1,6 @@ { "name": "opensearch-query-workbench", - "version": "2.4.0.0", + "version": "2.5.0.0", "description": "Query Workbench", "main": "index.js", "license": "Apache-2.0", From 5073215f813bad5fdad0d5d37a20c7cb100296fd Mon Sep 17 00:00:00 2001 From: Peng Huo Date: Wed, 14 Dec 2022 10:19:53 -0800 Subject: [PATCH 16/55] Using jackson and jackson_databind version defined in OpenSearch (#1169) Signed-off-by: Peng Huo --- build.gradle | 6 ++++-- core/build.gradle | 6 +++--- integ-test/build.gradle | 10 +++++----- opensearch/build.gradle | 6 +++--- plugin/build.gradle | 16 ++++++++-------- prometheus/build.gradle | 6 +++--- protocol/build.gradle | 8 ++++---- 7 files changed, 30 insertions(+), 28 deletions(-) diff --git a/build.gradle b/build.gradle index 7a0b1e96fd..ca1c091a78 100644 --- a/build.gradle +++ b/build.gradle @@ -8,8 +8,6 @@ buildscript { ext { opensearch_version = System.getProperty("opensearch.version", "3.0.0-SNAPSHOT") spring_version = "5.3.22" - jackson_version = "2.14.1" - jackson_databind_version = "2.14.1" isSnapshot = "true" == System.getProperty("build.snapshot", "true") buildVersionQualifier = System.getProperty("build.version_qualifier", "") version_tokens = opensearch_version.tokenize('-') @@ -69,6 +67,10 @@ plugins { id 'jacoco' } +// import versions defined in https://github.com/opensearch-project/OpenSearch/blob/main/buildSrc/src/main/java/org/opensearch/gradle/OpenSearchJavaPlugin.java#L94 +// versions https://github.com/opensearch-project/OpenSearch/blob/main/buildSrc/version.properties +apply plugin: 'opensearch.java' + // Repository on root level is for dependencies that project code depends on. And this block must be placed after plugins{} repositories { mavenLocal() diff --git a/core/build.gradle b/core/build.gradle index fe7126fed5..0b8ffc422c 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -40,9 +40,9 @@ dependencies { api group: 'org.apache.commons', name: 'commons-lang3', version: '3.10' api group: 'com.facebook.presto', name: 'presto-matching', version: '0.240' api group: 'org.apache.commons', name: 'commons-math3', version: '3.6.1' - api "com.fasterxml.jackson.core:jackson-core:${jackson_version}" - api "com.fasterxml.jackson.core:jackson-databind:${jackson_databind_version}" - api "com.fasterxml.jackson.core:jackson-annotations:${jackson_version}" + api "com.fasterxml.jackson.core:jackson-core:${versions.jackson}" + api "com.fasterxml.jackson.core:jackson-databind:${versions.jackson_databind}" + api "com.fasterxml.jackson.core:jackson-annotations:${versions.jackson}" api project(':common') testImplementation('org.junit.jupiter:junit-jupiter:5.6.2') diff --git a/integ-test/build.gradle b/integ-test/build.gradle index ceae64684c..961605557a 100644 --- a/integ-test/build.gradle +++ b/integ-test/build.gradle @@ -62,11 +62,11 @@ configurations.all { // enforce 1.1.3, https://www.whitesourcesoftware.com/vulnerability-database/WS-2019-0379 resolutionStrategy.force 'commons-codec:commons-codec:1.13' resolutionStrategy.force 'com.google.guava:guava:31.0.1-jre' - resolutionStrategy.force "com.fasterxml.jackson.core:jackson-core:${jackson_version}" - resolutionStrategy.force "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:${jackson_version}" - resolutionStrategy.force "com.fasterxml.jackson.dataformat:jackson-dataformat-smile:${jackson_version}" - resolutionStrategy.force "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:${jackson_version}" - resolutionStrategy.force "com.fasterxml.jackson.core:jackson-databind:${jackson_databind_version}" + resolutionStrategy.force "com.fasterxml.jackson.core:jackson-core:${versions.jackson}" + resolutionStrategy.force "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:${versions.jackson}" + resolutionStrategy.force "com.fasterxml.jackson.dataformat:jackson-dataformat-smile:${versions.jackson}" + resolutionStrategy.force "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:${versions.jackson}" + resolutionStrategy.force "com.fasterxml.jackson.core:jackson-databind:${versions.jackson_databind}" resolutionStrategy.force "org.jetbrains.kotlin:kotlin-stdlib:1.6.0" resolutionStrategy.force "org.jetbrains.kotlin:kotlin-stdlib-common:1.6.0" resolutionStrategy.force "com.squareup.okhttp3:okhttp:4.9.3" diff --git a/opensearch/build.gradle b/opensearch/build.gradle index 7ad7d63546..6eeab86fff 100644 --- a/opensearch/build.gradle +++ b/opensearch/build.gradle @@ -32,9 +32,9 @@ dependencies { api project(':core') api group: 'org.opensearch', name: 'opensearch', version: "${opensearch_version}" implementation "io.github.resilience4j:resilience4j-retry:1.5.0" - implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: "${jackson_version}" - implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: "${jackson_databind_version}" - implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-cbor', version: "${jackson_version}" + implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: "${versions.jackson}" + implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: "${versions.jackson_databind}" + implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-cbor', version: "${versions.jackson}" implementation group: 'org.json', name: 'json', version:'20180813' compileOnly group: 'org.opensearch.client', name: 'opensearch-rest-high-level-client', version: "${opensearch_version}" implementation group: 'org.opensearch', name:'opensearch-ml-client', version: "${opensearch_build}" diff --git a/plugin/build.gradle b/plugin/build.gradle index d689da0f57..4097b2c7e5 100644 --- a/plugin/build.gradle +++ b/plugin/build.gradle @@ -85,14 +85,14 @@ configurations.all { // conflict with spring-jcl exclude group: "commons-logging", module: "commons-logging" // enforce 2.12.6, https://github.com/opensearch-project/sql/issues/424 - resolutionStrategy.force "com.fasterxml.jackson.core:jackson-core:${jackson_version}" + resolutionStrategy.force "com.fasterxml.jackson.core:jackson-core:${versions.jackson}" // enforce 1.1.3, https://www.whitesourcesoftware.com/vulnerability-database/WS-2019-0379 resolutionStrategy.force 'commons-codec:commons-codec:1.13' resolutionStrategy.force 'com.google.guava:guava:31.0.1-jre' - resolutionStrategy.force "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:${jackson_version}" - resolutionStrategy.force "com.fasterxml.jackson.dataformat:jackson-dataformat-smile:${jackson_version}" - resolutionStrategy.force "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:${jackson_version}" - resolutionStrategy.force "com.fasterxml.jackson.core:jackson-databind:${jackson_databind_version}" + resolutionStrategy.force "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:${versions.jackson}" + resolutionStrategy.force "com.fasterxml.jackson.dataformat:jackson-dataformat-smile:${versions.jackson}" + resolutionStrategy.force "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:${versions.jackson}" + resolutionStrategy.force "com.fasterxml.jackson.core:jackson-databind:${versions.jackson_databind}" resolutionStrategy.force "org.jetbrains.kotlin:kotlin-stdlib:1.6.0" resolutionStrategy.force "org.jetbrains.kotlin:kotlin-stdlib-common:1.6.0" resolutionStrategy.force "com.squareup.okhttp3:okhttp:4.9.3" @@ -111,9 +111,9 @@ compileTestJava { dependencies { api group: 'org.springframework', name: 'spring-beans', version: "${spring_version}" - api "com.fasterxml.jackson.core:jackson-core:${jackson_version}" - api "com.fasterxml.jackson.core:jackson-databind:${jackson_databind_version}" - api "com.fasterxml.jackson.core:jackson-annotations:${jackson_version}" + api "com.fasterxml.jackson.core:jackson-core:${versions.jackson}" + api "com.fasterxml.jackson.core:jackson-databind:${versions.jackson_databind}" + api "com.fasterxml.jackson.core:jackson-annotations:${versions.jackson}" api project(":ppl") api project(':legacy') diff --git a/prometheus/build.gradle b/prometheus/build.gradle index b11c23fd25..7cf1e56085 100644 --- a/prometheus/build.gradle +++ b/prometheus/build.gradle @@ -17,9 +17,9 @@ repositories { dependencies { api project(':core') implementation "io.github.resilience4j:resilience4j-retry:1.5.0" - implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: "${jackson_version}" - implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: "${jackson_databind_version}" - implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-cbor', version: "${jackson_version}" + implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: "${versions.jackson}" + implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: "${versions.jackson_databind}" + implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-cbor', version: "${versions.jackson}" implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.9.3' implementation 'com.github.babbel:okhttp-aws-signer:1.0.2' implementation group: 'org.json', name: 'json', version: '20180813' diff --git a/protocol/build.gradle b/protocol/build.gradle index 9c41fbf101..5d32a235ea 100644 --- a/protocol/build.gradle +++ b/protocol/build.gradle @@ -30,9 +30,9 @@ plugins { dependencies { implementation group: 'com.google.guava', name: 'guava', version: '31.0.1-jre' - implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: "${jackson_version}" - implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: "${jackson_databind_version}" - implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-cbor', version: "${jackson_version}" + implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: "${versions.jackson}" + implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: "${versions.jackson_databind}" + implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-cbor', version: "${versions.jackson}" implementation 'com.google.code.gson:gson:2.8.9' implementation project(':core') implementation project(':opensearch') @@ -44,7 +44,7 @@ dependencies { } configurations.all { - resolutionStrategy.force "com.fasterxml.jackson.core:jackson-databind:${jackson_databind_version}" + resolutionStrategy.force "com.fasterxml.jackson.core:jackson-databind:${versions.jackson_databind}" } test { From ab46fdd97b4a766954820edb49799d2972eece06 Mon Sep 17 00:00:00 2001 From: Chen Dai Date: Fri, 16 Dec 2022 09:37:50 -0800 Subject: [PATCH 17/55] Fix arithmetic operator precedence (#1172) * Fix precedence by reordering grammar rule Signed-off-by: Chen Dai * Fix precedence in PPL Signed-off-by: Chen Dai Signed-off-by: Chen Dai --- ppl/src/main/antlr/OpenSearchPPLParser.g4 | 14 +++++------ .../sql/ppl/parser/AstExpressionBuilder.java | 12 ++++------ .../ppl/parser/AstExpressionBuilderTest.java | 24 +++++++++++++++++++ sql/src/main/antlr/OpenSearchSQLParser.g4 | 11 +++++---- .../sql/sql/parser/AstExpressionBuilder.java | 2 +- .../sql/parser/AstExpressionBuilderTest.java | 11 +++++++++ 6 files changed, 53 insertions(+), 21 deletions(-) diff --git a/ppl/src/main/antlr/OpenSearchPPLParser.g4 b/ppl/src/main/antlr/OpenSearchPPLParser.g4 index a0d6553875..d7491abb51 100644 --- a/ppl/src/main/antlr/OpenSearchPPLParser.g4 +++ b/ppl/src/main/antlr/OpenSearchPPLParser.g4 @@ -254,11 +254,15 @@ comparisonExpression ; valueExpression - : left=valueExpression binaryOperator right=valueExpression #binaryArithmetic - | LT_PRTHS left=valueExpression binaryOperator - right=valueExpression RT_PRTHS #parentheticBinaryArithmetic + : left=valueExpression + binaryOperator=(STAR | DIVIDE | MODULE) + right=valueExpression #binaryArithmetic + | left=valueExpression + binaryOperator=(PLUS | MINUS) + right=valueExpression #binaryArithmetic | primaryExpression #valueExpressionDefault | positionFunction #positionFunctionCall + | LT_PRTHS valueExpression RT_PRTHS #parentheticValueExpr ; primaryExpression @@ -499,10 +503,6 @@ comparisonOperator : EQUAL | NOT_EQUAL | LESS | NOT_LESS | GREATER | NOT_GREATER | REGEXP ; -binaryOperator - : PLUS | MINUS | STAR | DIVIDE | MODULE - ; - singleFieldRelevanceFunctionName : MATCH diff --git a/ppl/src/main/java/org/opensearch/sql/ppl/parser/AstExpressionBuilder.java b/ppl/src/main/java/org/opensearch/sql/ppl/parser/AstExpressionBuilder.java index 68608e23ad..d4df4cf7dd 100644 --- a/ppl/src/main/java/org/opensearch/sql/ppl/parser/AstExpressionBuilder.java +++ b/ppl/src/main/java/org/opensearch/sql/ppl/parser/AstExpressionBuilder.java @@ -33,7 +33,7 @@ import static org.opensearch.sql.ppl.antlr.parser.OpenSearchPPLParser.LogicalOrContext; import static org.opensearch.sql.ppl.antlr.parser.OpenSearchPPLParser.LogicalXorContext; import static org.opensearch.sql.ppl.antlr.parser.OpenSearchPPLParser.MultiFieldRelevanceFunctionContext; -import static org.opensearch.sql.ppl.antlr.parser.OpenSearchPPLParser.ParentheticBinaryArithmeticContext; +import static org.opensearch.sql.ppl.antlr.parser.OpenSearchPPLParser.ParentheticValueExprContext; import static org.opensearch.sql.ppl.antlr.parser.OpenSearchPPLParser.PercentileAggFunctionContext; import static org.opensearch.sql.ppl.antlr.parser.OpenSearchPPLParser.SingleFieldRelevanceFunctionContext; import static org.opensearch.sql.ppl.antlr.parser.OpenSearchPPLParser.SortFieldContext; @@ -154,18 +154,14 @@ public UnresolvedExpression visitInExpr(InExprContext ctx) { @Override public UnresolvedExpression visitBinaryArithmetic(BinaryArithmeticContext ctx) { return new Function( - ctx.binaryOperator().getText(), + ctx.binaryOperator.getText(), Arrays.asList(visit(ctx.left), visit(ctx.right)) ); } @Override - public UnresolvedExpression visitParentheticBinaryArithmetic( - ParentheticBinaryArithmeticContext ctx) { - return new Function( - ctx.binaryOperator().getText(), - Arrays.asList(visit(ctx.left), visit(ctx.right)) - ); + public UnresolvedExpression visitParentheticValueExpr(ParentheticValueExprContext ctx) { + return visit(ctx.valueExpression()); // Discard parenthesis around } /** diff --git a/ppl/src/test/java/org/opensearch/sql/ppl/parser/AstExpressionBuilderTest.java b/ppl/src/test/java/org/opensearch/sql/ppl/parser/AstExpressionBuilderTest.java index dbdfb71aa7..cd0787695a 100644 --- a/ppl/src/test/java/org/opensearch/sql/ppl/parser/AstExpressionBuilderTest.java +++ b/ppl/src/test/java/org/opensearch/sql/ppl/parser/AstExpressionBuilderTest.java @@ -226,6 +226,30 @@ public void testLiteralValueBinaryOperationExpr() { )); } + @Test + public void testBinaryOperationExprWithParentheses() { + assertEqual("source = t | where a = (1 + 2) * 3", + filter( + relation("t"), + compare("=", + field("a"), + function("*", + function("+", intLiteral(1), intLiteral(2)), + intLiteral(3))))); + } + + @Test + public void testBinaryOperationExprPrecedence() { + assertEqual("source = t | where a = 1 + 2 * 3", + filter( + relation("t"), + compare("=", + field("a"), + function("+", + intLiteral(1), + function("*", intLiteral(2), intLiteral(3)))))); + } + @Test public void testCompareExpr() { assertEqual("source=t a='b'", diff --git a/sql/src/main/antlr/OpenSearchSQLParser.g4 b/sql/src/main/antlr/OpenSearchSQLParser.g4 index 58d4be1813..bc76480d18 100644 --- a/sql/src/main/antlr/OpenSearchSQLParser.g4 +++ b/sql/src/main/antlr/OpenSearchSQLParser.g4 @@ -292,11 +292,12 @@ expressionAtom | columnName #fullColumnNameExpressionAtom | functionCall #functionCallExpressionAtom | LR_BRACKET expression RR_BRACKET #nestedExpressionAtom - | left=expressionAtom mathOperator right=expressionAtom #mathExpressionAtom - ; - -mathOperator - : PLUS | MINUS | STAR | DIVIDE | MODULE + | left=expressionAtom + mathOperator=(STAR | DIVIDE | MODULE) + right=expressionAtom #mathExpressionAtom + | left=expressionAtom + mathOperator=(PLUS | MINUS) + right=expressionAtom #mathExpressionAtom ; comparisonOperator diff --git a/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java b/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java index bae22595ca..4b1a15425c 100644 --- a/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java +++ b/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java @@ -120,7 +120,7 @@ public UnresolvedExpression visitQualifiedName(QualifiedNameContext ctx) { @Override public UnresolvedExpression visitMathExpressionAtom(MathExpressionAtomContext ctx) { return new Function( - ctx.mathOperator().getText(), + ctx.mathOperator.getText(), Arrays.asList(visit(ctx.left), visit(ctx.right)) ); } diff --git a/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java b/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java index 9af4119fdf..31eb3d2f05 100644 --- a/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java +++ b/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java @@ -153,6 +153,17 @@ public void canBuildArithmeticExpression() { ); } + @Test + public void canBuildArithmeticExpressionPrecedence() { + assertEquals( + function("+", + intLiteral(1), + function("*", + intLiteral(2), intLiteral(3))), + buildExprAst("1 + 2 * 3") + ); + } + @Test public void canBuildFunctionWithoutArguments() { assertEquals( From eb595c7fcd3916fb26f5f639ca378c3a2e633684 Mon Sep 17 00:00:00 2001 From: "opensearch-trigger-bot[bot]" <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Date: Fri, 16 Dec 2022 14:47:47 -0800 Subject: [PATCH 18/55] Add BETWEEN expression in v2 engine (#1163) (#1187) * Add between grammar and in-memory impl Signed-off-by: Chen Dai * Add comparison test for between Signed-off-by: Chen Dai * Add doctest for between Signed-off-by: Chen Dai * Add not between support Signed-off-by: Chen Dai * Fix doctest failure Signed-off-by: Chen Dai * Refactor to rewrite to basic comparison expression Signed-off-by: Chen Dai * Clean up unused code Signed-off-by: Chen Dai * Prepare to publish PR Signed-off-by: Chen Dai Signed-off-by: Chen Dai (cherry picked from commit 6c0af83978ed0d8a6e3a4f7a4800932141578c3f) Co-authored-by: Chen Dai --- .../sql/analysis/ExpressionAnalyzer.java | 14 +++++ .../sql/ast/AbstractNodeVisitor.java | 5 ++ .../org/opensearch/sql/ast/dsl/AstDSL.java | 8 +++ .../sql/ast/expression/Between.java | 40 ++++++++++++ .../sql/analysis/ExpressionAnalyzerTest.java | 16 +++++ docs/user/dql/expressions.rst | 21 +++++++ sql/src/main/antlr/OpenSearchSQLParser.g4 | 1 + .../sql/sql/parser/AstExpressionBuilder.java | 61 +++++++++++++------ .../sql/parser/AstExpressionBuilderTest.java | 20 ++++++ 9 files changed, 169 insertions(+), 17 deletions(-) create mode 100644 core/src/main/java/org/opensearch/sql/ast/expression/Between.java diff --git a/core/src/main/java/org/opensearch/sql/analysis/ExpressionAnalyzer.java b/core/src/main/java/org/opensearch/sql/analysis/ExpressionAnalyzer.java index 719c3adbce..ff3c01d5b8 100644 --- a/core/src/main/java/org/opensearch/sql/analysis/ExpressionAnalyzer.java +++ b/core/src/main/java/org/opensearch/sql/analysis/ExpressionAnalyzer.java @@ -6,6 +6,11 @@ package org.opensearch.sql.analysis; +import static org.opensearch.sql.ast.dsl.AstDSL.and; +import static org.opensearch.sql.ast.dsl.AstDSL.compare; +import static org.opensearch.sql.expression.function.BuiltinFunctionName.GTE; +import static org.opensearch.sql.expression.function.BuiltinFunctionName.LTE; + import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; @@ -22,6 +27,7 @@ import org.opensearch.sql.ast.expression.AggregateFunction; import org.opensearch.sql.ast.expression.AllFields; import org.opensearch.sql.ast.expression.And; +import org.opensearch.sql.ast.expression.Between; import org.opensearch.sql.ast.expression.Case; import org.opensearch.sql.ast.expression.Cast; import org.opensearch.sql.ast.expression.Compare; @@ -229,6 +235,14 @@ public Expression visitCompare(Compare node, AnalysisContext context) { functionName, Arrays.asList(left, right)); } + @Override + public Expression visitBetween(Between node, AnalysisContext context) { + return and( + compare(">=", node.getValue(), node.getLowerBound()), + compare("<=", node.getValue(), node.getUpperBound()) + ).accept(this, context); + } + @Override public Expression visitCase(Case node, AnalysisContext context) { List whens = new ArrayList<>(); diff --git a/core/src/main/java/org/opensearch/sql/ast/AbstractNodeVisitor.java b/core/src/main/java/org/opensearch/sql/ast/AbstractNodeVisitor.java index fe993c899e..393de05164 100644 --- a/core/src/main/java/org/opensearch/sql/ast/AbstractNodeVisitor.java +++ b/core/src/main/java/org/opensearch/sql/ast/AbstractNodeVisitor.java @@ -12,6 +12,7 @@ import org.opensearch.sql.ast.expression.And; import org.opensearch.sql.ast.expression.Argument; import org.opensearch.sql.ast.expression.AttributeList; +import org.opensearch.sql.ast.expression.Between; import org.opensearch.sql.ast.expression.Case; import org.opensearch.sql.ast.expression.Cast; import org.opensearch.sql.ast.expression.Compare; @@ -173,6 +174,10 @@ public T visitCompare(Compare node, C context) { return visitChildren(node, context); } + public T visitBetween(Between node, C context) { + return visitChildren(node, context); + } + public T visitArgument(Argument node, C context) { return visitChildren(node, context); } diff --git a/core/src/main/java/org/opensearch/sql/ast/dsl/AstDSL.java b/core/src/main/java/org/opensearch/sql/ast/dsl/AstDSL.java index 2959cae4a1..039b6380f7 100644 --- a/core/src/main/java/org/opensearch/sql/ast/dsl/AstDSL.java +++ b/core/src/main/java/org/opensearch/sql/ast/dsl/AstDSL.java @@ -16,6 +16,7 @@ import org.opensearch.sql.ast.expression.AllFields; import org.opensearch.sql.ast.expression.And; import org.opensearch.sql.ast.expression.Argument; +import org.opensearch.sql.ast.expression.Between; import org.opensearch.sql.ast.expression.Case; import org.opensearch.sql.ast.expression.Cast; import org.opensearch.sql.ast.expression.Compare; @@ -59,6 +60,7 @@ import org.opensearch.sql.ast.tree.TableFunction; import org.opensearch.sql.ast.tree.UnresolvedPlan; import org.opensearch.sql.ast.tree.Values; +import org.opensearch.sql.expression.function.BuiltinFunctionName; /** * Class of static methods to create specific node instances. @@ -320,6 +322,12 @@ public static UnresolvedExpression compare( return new Compare(operator, left, right); } + public static UnresolvedExpression between(UnresolvedExpression value, + UnresolvedExpression lowerBound, + UnresolvedExpression upperBound) { + return new Between(value, lowerBound, upperBound); + } + public static Argument argument(String argName, Literal argValue) { return new Argument(argName, argValue); } diff --git a/core/src/main/java/org/opensearch/sql/ast/expression/Between.java b/core/src/main/java/org/opensearch/sql/ast/expression/Between.java new file mode 100644 index 0000000000..886c9a9282 --- /dev/null +++ b/core/src/main/java/org/opensearch/sql/ast/expression/Between.java @@ -0,0 +1,40 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.sql.ast.expression; + +import java.util.Arrays; +import java.util.List; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.opensearch.sql.ast.AbstractNodeVisitor; +import org.opensearch.sql.ast.Node; + +/** + * Unresolved expression for BETWEEN. + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class Between extends UnresolvedExpression { + + /** Value for range check. */ + private final UnresolvedExpression value; + + /** Lower bound of the range (inclusive). */ + private final UnresolvedExpression lowerBound; + + /** Upper bound of the range (inclusive). */ + private final UnresolvedExpression upperBound; + + @Override + public List getChild() { + return Arrays.asList(value, lowerBound, upperBound); + } + + @Override + public T accept(AbstractNodeVisitor nodeVisitor, C context) { + return nodeVisitor.visitBetween(this, context); + } +} diff --git a/core/src/test/java/org/opensearch/sql/analysis/ExpressionAnalyzerTest.java b/core/src/test/java/org/opensearch/sql/analysis/ExpressionAnalyzerTest.java index 7114b220ab..a69b27fc61 100644 --- a/core/src/test/java/org/opensearch/sql/analysis/ExpressionAnalyzerTest.java +++ b/core/src/test/java/org/opensearch/sql/analysis/ExpressionAnalyzerTest.java @@ -107,6 +107,22 @@ public void qualified_name() { ); } + @Test + public void between() { + assertAnalyzeEqual( + DSL.and( + DSL.gte( + DSL.ref("integer_value", INTEGER), + DSL.literal(20)), + DSL.lte( + DSL.ref("integer_value", INTEGER), + DSL.literal(30))), + AstDSL.between( + qualifiedName("integer_value"), + AstDSL.intLiteral(20), + AstDSL.intLiteral(30))); + } + @Test public void case_value() { assertAnalyzeEqual( diff --git a/docs/user/dql/expressions.rst b/docs/user/dql/expressions.rst index 89fcd7f0af..09818c902d 100644 --- a/docs/user/dql/expressions.rst +++ b/docs/user/dql/expressions.rst @@ -132,6 +132,10 @@ Operators +----------------+----------------------------------------+ | NOT IN | NOT IN value list test | +----------------+----------------------------------------+ +| BETWEEN | Between a range (endpoint inclusive) | ++----------------+----------------------------------------+ +| NOT BETWEEN | Not between a range (BETWEEN negation) | ++----------------+----------------------------------------+ Basic Comparison Operator ------------------------- @@ -199,6 +203,23 @@ Here is an example for IN value test:: | True | True | +---------------+-------------------+ +BETWEEN range test +------------------ + +Here is an example for range test by BETWEEN expression:: + + os> SELECT + ... 1 BETWEEN 1 AND 3, + ... 4 BETWEEN 1 AND 3, + ... 4 NOT BETWEEN 1 AND 3; + fetched rows / total rows = 1/1 + +---------------------+---------------------+-------------------------+ + | 1 BETWEEN 1 AND 3 | 4 BETWEEN 1 AND 3 | 4 NOT BETWEEN 1 AND 3 | + |---------------------+---------------------+-------------------------| + | True | False | True | + +---------------------+---------------------+-------------------------+ + + Function Call ============= diff --git a/sql/src/main/antlr/OpenSearchSQLParser.g4 b/sql/src/main/antlr/OpenSearchSQLParser.g4 index bc76480d18..47a43362ea 100644 --- a/sql/src/main/antlr/OpenSearchSQLParser.g4 +++ b/sql/src/main/antlr/OpenSearchSQLParser.g4 @@ -278,6 +278,7 @@ predicate : expressionAtom #expressionAtomPredicate | left=predicate comparisonOperator right=predicate #binaryComparisonPredicate | predicate IS nullNotnull #isNullPredicate + | predicate NOT? BETWEEN predicate AND predicate #betweenPredicate | left=predicate NOT? LIKE right=predicate #likePredicate | left=predicate REGEXP right=predicate #regexpPredicate | predicate NOT? IN '(' expressions ')' #inPredicate diff --git a/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java b/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java index 4b1a15425c..06de8d7d05 100644 --- a/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java +++ b/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java @@ -6,6 +6,8 @@ package org.opensearch.sql.sql.parser; +import static org.opensearch.sql.ast.dsl.AstDSL.between; +import static org.opensearch.sql.ast.dsl.AstDSL.not; import static org.opensearch.sql.ast.dsl.AstDSL.qualifiedName; import static org.opensearch.sql.ast.dsl.AstDSL.stringLiteral; import static org.opensearch.sql.expression.function.BuiltinFunctionName.IS_NOT_NULL; @@ -14,6 +16,9 @@ import static org.opensearch.sql.expression.function.BuiltinFunctionName.NOT_LIKE; import static org.opensearch.sql.expression.function.BuiltinFunctionName.POSITION; import static org.opensearch.sql.expression.function.BuiltinFunctionName.REGEXP; +import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.AlternateMultiMatchFieldContext; +import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.AlternateMultiMatchQueryContext; +import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.BetweenPredicateContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.BinaryComparisonPredicateContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.BooleanContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.CaseFuncAlternativeContext; @@ -24,16 +29,25 @@ import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.DataTypeFunctionCallContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.DateLiteralContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.DistinctCountFunctionCallContext; +import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.FilterClauseContext; +import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.FilteredAggregationFunctionCallContext; +import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.FunctionArgContext; +import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.HighlightFunctionCallContext; +import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.InPredicateContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.IsNullPredicateContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.LikePredicateContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.MathExpressionAtomContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.MultiFieldRelevanceFunctionContext; +import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.NoFieldRelevanceFunctionContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.NotExpressionContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.NullLiteralContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.OverClauseContext; +import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.PositionFunctionContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.QualifiedNameContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.RegexpPredicateContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.RegularAggregateFunctionCallContext; +import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.RelevanceArgContext; +import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.RelevanceFieldAndWeightContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.ScalarFunctionCallContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.ScalarWindowFunctionContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.ShowDescribePatternContext; @@ -82,7 +96,6 @@ import org.opensearch.sql.ast.tree.Sort.SortOption; import org.opensearch.sql.common.utils.StringUtils; import org.opensearch.sql.expression.function.BuiltinFunctionName; -import org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser; import org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.AndExpressionContext; import org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.ColumnNameContext; import org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.IdentContext; @@ -137,7 +150,7 @@ public UnresolvedExpression visitScalarFunctionCall(ScalarFunctionCallContext ct @Override public UnresolvedExpression visitHighlightFunctionCall( - OpenSearchSQLParser.HighlightFunctionCallContext ctx) { + HighlightFunctionCallContext ctx) { ImmutableMap.Builder builder = ImmutableMap.builder(); ctx.highlightFunction().highlightArg().forEach(v -> builder.put( v.highlightArgName().getText().toLowerCase(), @@ -151,7 +164,7 @@ public UnresolvedExpression visitHighlightFunctionCall( @Override public UnresolvedExpression visitPositionFunction( - OpenSearchSQLParser.PositionFunctionContext ctx) { + PositionFunctionContext ctx) { return new Function( POSITION.getName().getFunctionName(), Arrays.asList(visitFunctionArg(ctx.functionArg(0)), @@ -184,7 +197,7 @@ public UnresolvedExpression visitShowDescribePattern( @Override public UnresolvedExpression visitFilteredAggregationFunctionCall( - OpenSearchSQLParser.FilteredAggregationFunctionCallContext ctx) { + FilteredAggregationFunctionCallContext ctx) { AggregateFunction agg = (AggregateFunction) visit(ctx.aggregateFunction()); return agg.condition(visit(ctx.filterClause())); } @@ -241,7 +254,7 @@ public UnresolvedExpression visitCountStarFunctionCall(CountStarFunctionCallCont } @Override - public UnresolvedExpression visitFilterClause(OpenSearchSQLParser.FilterClauseContext ctx) { + public UnresolvedExpression visitFilterClause(FilterClauseContext ctx) { return visit(ctx.expression()); } @@ -253,6 +266,20 @@ public UnresolvedExpression visitIsNullPredicate(IsNullPredicateContext ctx) { Arrays.asList(visit(ctx.predicate()))); } + @Override + public UnresolvedExpression visitBetweenPredicate(BetweenPredicateContext ctx) { + UnresolvedExpression func = + between( + visit(ctx.predicate(0)), + visit(ctx.predicate(1)), + visit(ctx.predicate(2))); + + if (ctx.NOT() != null) { + func = not(func); + } + return func; + } + @Override public UnresolvedExpression visitLikePredicate(LikePredicateContext ctx) { return new Function( @@ -268,7 +295,7 @@ public UnresolvedExpression visitRegexpPredicate(RegexpPredicateContext ctx) { } @Override - public UnresolvedExpression visitInPredicate(OpenSearchSQLParser.InPredicateContext ctx) { + public UnresolvedExpression visitInPredicate(InPredicateContext ctx) { UnresolvedExpression field = visit(ctx.predicate()); List inLists = ctx .expressions() @@ -392,7 +419,7 @@ public UnresolvedExpression visitConvertedDataType( @Override public UnresolvedExpression visitNoFieldRelevanceFunction( - OpenSearchSQLParser.NoFieldRelevanceFunctionContext ctx) { + NoFieldRelevanceFunctionContext ctx) { return new Function( ctx.noFieldRelevanceFunctionName().getText().toLowerCase(), noFieldRelevanceArguments(ctx)); @@ -415,7 +442,7 @@ public UnresolvedExpression visitMultiFieldRelevanceFunction( if ((funcName.equalsIgnoreCase(BuiltinFunctionName.MULTI_MATCH.toString()) || funcName.equalsIgnoreCase(BuiltinFunctionName.MULTIMATCH.toString()) || funcName.equalsIgnoreCase(BuiltinFunctionName.MULTIMATCHQUERY.toString())) - && ! ctx.getRuleContexts(OpenSearchSQLParser.AlternateMultiMatchQueryContext.class) + && ! ctx.getRuleContexts(AlternateMultiMatchQueryContext.class) .isEmpty()) { return new Function( ctx.multiFieldRelevanceFunctionName().getText().toLowerCase(), @@ -428,7 +455,7 @@ public UnresolvedExpression visitMultiFieldRelevanceFunction( } private Function buildFunction(String functionName, - List arg) { + List arg) { return new Function( functionName, arg @@ -447,7 +474,7 @@ private QualifiedName visitIdentifiers(List identifiers) { ); } - private void fillRelevanceArgs(List args, + private void fillRelevanceArgs(List args, ImmutableList.Builder builder) { // To support old syntax we must support argument keys as quoted strings. args.forEach(v -> builder.add(v.argName == null @@ -459,7 +486,7 @@ private void fillRelevanceArgs(List arg } private List noFieldRelevanceArguments( - OpenSearchSQLParser.NoFieldRelevanceFunctionContext ctx) { + NoFieldRelevanceFunctionContext ctx) { // all the arguments are defaulted to string values // to skip environment resolving and function signature resolving ImmutableList.Builder builder = ImmutableList.builder(); @@ -470,7 +497,7 @@ private List noFieldRelevanceArguments( } private List singleFieldRelevanceArguments( - OpenSearchSQLParser.SingleFieldRelevanceFunctionContext ctx) { + SingleFieldRelevanceFunctionContext ctx) { // all the arguments are defaulted to string values // to skip environment resolving and function signature resolving ImmutableList.Builder builder = ImmutableList.builder(); @@ -485,12 +512,12 @@ private List singleFieldRelevanceArguments( private List multiFieldRelevanceArguments( - OpenSearchSQLParser.MultiFieldRelevanceFunctionContext ctx) { + MultiFieldRelevanceFunctionContext ctx) { // all the arguments are defaulted to string values // to skip environment resolving and function signature resolving ImmutableList.Builder builder = ImmutableList.builder(); var fields = new RelevanceFieldList(ctx - .getRuleContexts(OpenSearchSQLParser.RelevanceFieldAndWeightContext.class) + .getRuleContexts(RelevanceFieldAndWeightContext.class) .stream() .collect(Collectors.toMap( f -> StringUtils.unquoteText(f.field.getText()), @@ -509,14 +536,14 @@ private List multiFieldRelevanceArguments( * @return : Returns list of all arguments for relevance function. */ private List alternateMultiMatchArguments( - OpenSearchSQLParser.MultiFieldRelevanceFunctionContext ctx) { + MultiFieldRelevanceFunctionContext ctx) { // all the arguments are defaulted to string values // to skip environment resolving and function signature resolving ImmutableList.Builder builder = ImmutableList.builder(); Map fieldAndWeightMap = new HashMap<>(); String[] fieldAndWeights = StringUtils.unquoteText( - ctx.getRuleContexts(OpenSearchSQLParser.AlternateMultiMatchFieldContext.class) + ctx.getRuleContexts(AlternateMultiMatchFieldContext.class) .stream().findFirst().get().argVal.getText()).split(","); for (var fieldAndWeight : fieldAndWeights) { @@ -527,7 +554,7 @@ private List alternateMultiMatchArguments( builder.add(new UnresolvedArgument("fields", new RelevanceFieldList(fieldAndWeightMap))); - ctx.getRuleContexts(OpenSearchSQLParser.AlternateMultiMatchQueryContext.class) + ctx.getRuleContexts(AlternateMultiMatchQueryContext.class) .stream().findFirst().ifPresent( arg -> builder.add(new UnresolvedArgument("query", diff --git a/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java b/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java index 31eb3d2f05..8b6cca779c 100644 --- a/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java +++ b/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java @@ -9,6 +9,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.opensearch.sql.ast.dsl.AstDSL.aggregate; import static org.opensearch.sql.ast.dsl.AstDSL.and; +import static org.opensearch.sql.ast.dsl.AstDSL.between; import static org.opensearch.sql.ast.dsl.AstDSL.booleanLiteral; import static org.opensearch.sql.ast.dsl.AstDSL.caseWhen; import static org.opensearch.sql.ast.dsl.AstDSL.dateLiteral; @@ -272,6 +273,25 @@ public void canBuildRegexpExpression() { ); } + @Test + public void canBuildBetweenExpression() { + assertEquals( + between( + qualifiedName("age"), intLiteral(10), intLiteral(30)), + buildExprAst("age BETWEEN 10 AND 30") + ); + } + + @Test + public void canBuildNotBetweenExpression() { + assertEquals( + not( + between( + qualifiedName("age"), intLiteral(10), intLiteral(30))), + buildExprAst("age NOT BETWEEN 10 AND 30") + ); + } + @Test public void canBuildLogicalExpression() { assertEquals( From 94b6beca3b46d359ec7cbeaf81c6bf1ac9371ce2 Mon Sep 17 00:00:00 2001 From: MitchellGale-BitQuill <104795536+MitchellGale-BitQuill@users.noreply.github.com> Date: Tue, 20 Dec 2022 11:17:48 -0800 Subject: [PATCH 19/55] Adding UTC_DATE, UTC_TIME, UTC_TIMESTAMP (#1193) * Updated UTC TIME Functions for like now FunctionProperties. Signed-off-by: MitchellGale-BitQuill * Finished updates to tests. Signed-off-by: MitchellGale-BitQuill * Removed unused import. Signed-off-by: MitchellGale-BitQuill * Addressed PR comments. Signed-off-by: MitchellGale-BitQuill * Removed extra import. Signed-off-by: MitchellGale-BitQuill * removed `DateTimeFunction` used within class. Signed-off-by: MitchellGale-BitQuill Signed-off-by: MitchellGale-BitQuill --- .../org/opensearch/sql/expression/DSL.java | 16 +++++ .../expression/datetime/DateTimeFunction.java | 63 +++++++++++++++++ .../function/BuiltinFunctionName.java | 3 + .../datetime/NowLikeFunctionTest.java | 28 ++++++++ docs/user/dql/functions.rst | 68 ++++++++++++++++++ docs/user/ppl/functions/datetime.rst | 69 +++++++++++++++++++ .../sql/ppl/DateTimeFunctionIT.java | 30 ++++++++ .../sql/sql/DateTimeFunctionIT.java | 35 ++++++++++ .../ppl/antlr/NowLikeFunctionParserTest.java | 5 +- .../ppl/parser/AstNowLikeFunctionTest.java | 5 +- sql/src/main/antlr/OpenSearchSQLLexer.g4 | 2 +- .../sql/sql/antlr/SQLSyntaxParserTest.java | 5 +- .../sql/parser/AstNowLikeFunctionTest.java | 7 +- 13 files changed, 330 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/org/opensearch/sql/expression/DSL.java b/core/src/main/java/org/opensearch/sql/expression/DSL.java index fc425c6c20..26a15c0ee4 100644 --- a/core/src/main/java/org/opensearch/sql/expression/DSL.java +++ b/core/src/main/java/org/opensearch/sql/expression/DSL.java @@ -768,6 +768,22 @@ public static FunctionExpression current_date(FunctionProperties functionPropert return compile(functionProperties, BuiltinFunctionName.CURRENT_DATE, args); } + public static FunctionExpression utc_date(FunctionProperties functionProperties, + Expression... args) { + return compile(functionProperties, BuiltinFunctionName.UTC_DATE, args); + } + + public static FunctionExpression utc_time(FunctionProperties functionProperties, + Expression... args) { + return compile(functionProperties, BuiltinFunctionName.UTC_TIME, args); + } + + public static FunctionExpression utc_timestamp(FunctionProperties functionProperties, + Expression... args) { + return compile(functionProperties, BuiltinFunctionName.UTC_TIMESTAMP, args); + + } + @SuppressWarnings("unchecked") private static T compile(FunctionProperties functionProperties, diff --git a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java index a111f672af..ed8063d8ff 100644 --- a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java +++ b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java @@ -63,6 +63,7 @@ import org.opensearch.sql.expression.function.DefaultFunctionResolver; import org.opensearch.sql.expression.function.FunctionDSL; import org.opensearch.sql.expression.function.FunctionName; +import org.opensearch.sql.expression.function.FunctionProperties; import org.opensearch.sql.expression.function.FunctionResolver; import org.opensearch.sql.utils.DateTimeUtils; @@ -126,6 +127,9 @@ public void register(BuiltinFunctionRepository repository) { repository.register(time()); repository.register(time_to_sec()); repository.register(timestamp()); + repository.register(utc_date()); + repository.register(utc_time()); + repository.register(utc_timestamp()); repository.register(date_format()); repository.register(to_days()); repository.register(unix_timestamp()); @@ -566,6 +570,33 @@ private FunctionResolver unix_timestamp() { ); } + /** + * UTC_DATE(). return the current UTC Date in format yyyy-MM-dd + */ + private DefaultFunctionResolver utc_date() { + return define(BuiltinFunctionName.UTC_DATE.getName(), + implWithProperties(functionProperties + -> exprUtcDate(functionProperties), DATE)); + } + + /** + * UTC_TIME(). return the current UTC Time in format HH:mm:ss + */ + private DefaultFunctionResolver utc_time() { + return define(BuiltinFunctionName.UTC_TIME.getName(), + implWithProperties(functionProperties + -> exprUtcTime(functionProperties), TIME)); + } + + /** + * UTC_TIMESTAMP(). return the current UTC TimeStamp in format yyyy-MM-dd HH:mm:ss + */ + private DefaultFunctionResolver utc_timestamp() { + return define(BuiltinFunctionName.UTC_TIMESTAMP.getName(), + implWithProperties(functionProperties + -> exprUtcTimeStamp(functionProperties), DATETIME)); + } + /** * WEEK(DATE[,mode]). return the week number for date. */ @@ -1063,6 +1094,38 @@ private ExprValue exprTimeToSec(ExprValue time) { return new ExprLongValue(time.timeValue().toSecondOfDay()); } + /** + * UTC_DATE implementation for ExprValue. + * + * @param functionProperties FunctionProperties. + * @return ExprValue. + */ + private ExprValue exprUtcDate(FunctionProperties functionProperties) { + return new ExprDateValue(exprUtcTimeStamp(functionProperties).dateValue()); + } + + /** + * UTC_TIME implementation for ExprValue. + * + * @param functionProperties FunctionProperties. + * @return ExprValue. + */ + private ExprValue exprUtcTime(FunctionProperties functionProperties) { + return new ExprTimeValue(exprUtcTimeStamp(functionProperties).timeValue()); + } + + /** + * UTC_TIMESTAMP implementation for ExprValue. + * + * @param functionProperties FunctionProperties. + * @return ExprValue. + */ + private ExprValue exprUtcTimeStamp(FunctionProperties functionProperties) { + var zdt = ZonedDateTime.now(functionProperties.getQueryStartClock()) + .withZoneSameInstant(ZoneId.of("UTC")); + return new ExprDatetimeValue(zdt.toLocalDateTime()); + } + /** * To_days implementation for ExprValue. * diff --git a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java index b23c7613d6..28d423676b 100644 --- a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java +++ b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java @@ -90,6 +90,9 @@ public enum BuiltinFunctionName { TIMESTAMP(FunctionName.of("timestamp")), DATE_FORMAT(FunctionName.of("date_format")), TO_DAYS(FunctionName.of("to_days")), + UTC_DATE(FunctionName.of("utc_date")), + UTC_TIME(FunctionName.of("utc_time")), + UTC_TIMESTAMP(FunctionName.of("utc_timestamp")), UNIX_TIMESTAMP(FunctionName.of("unix_timestamp")), WEEK(FunctionName.of("week")), WEEK_OF_YEAR(FunctionName.of("week_of_year")), diff --git a/core/src/test/java/org/opensearch/sql/expression/datetime/NowLikeFunctionTest.java b/core/src/test/java/org/opensearch/sql/expression/datetime/NowLikeFunctionTest.java index 6f7548b5cb..4b8a4aac5e 100644 --- a/core/src/test/java/org/opensearch/sql/expression/datetime/NowLikeFunctionTest.java +++ b/core/src/test/java/org/opensearch/sql/expression/datetime/NowLikeFunctionTest.java @@ -19,10 +19,13 @@ import java.time.LocalDateTime; import java.time.LocalTime; import java.time.Period; +import java.time.ZoneId; +import java.time.ZonedDateTime; import java.time.temporal.ChronoUnit; import java.time.temporal.Temporal; import java.time.temporal.TemporalUnit; import java.util.List; +import java.util.TimeZone; import java.util.concurrent.Callable; import java.util.function.BiFunction; import java.util.function.Function; @@ -103,6 +106,31 @@ void current_date() { () -> LocalDate.now(functionProperties.getQueryStartClock())); } + @Test + void utc_date() { + test_now_like_functions(DSL::utc_date, DATE, false, + () -> utcDateTimeNow(functionProperties).toLocalDate()); + } + + @Test + void utc_time() { + test_now_like_functions(DSL::utc_time, TIME, false, + () -> utcDateTimeNow(functionProperties).toLocalTime()); + } + + @Test + void utc_timestamp() { + test_now_like_functions(DSL::utc_timestamp, DATETIME, false, + () -> utcDateTimeNow(functionProperties)); + } + + private static LocalDateTime utcDateTimeNow(FunctionProperties functionProperties) { + ZonedDateTime zonedDateTime = + LocalDateTime.now(functionProperties.getQueryStartClock()) + .atZone(TimeZone.getDefault().toZoneId()); + return zonedDateTime.withZoneSameInstant(ZoneId.of("UTC")).toLocalDateTime(); + } + /** * Check how NOW-like functions are processed. * diff --git a/docs/user/dql/functions.rst b/docs/user/dql/functions.rst index 843d6c7e45..733a555c81 100644 --- a/docs/user/dql/functions.rst +++ b/docs/user/dql/functions.rst @@ -2119,6 +2119,74 @@ Examples:: +----------------------------------------------------+ +UTC_DATE +-------- + +Description +>>>>>>>>>>> + +Returns the current UTC date as a value in 'YYYY-MM-DD'. + +Return type: DATE + +Specification: UTC_DATE() -> DATE + +Example:: + + > SELECT UTC_DATE(); + fetched rows / total rows = 1/1 + +--------------+ + | utc_date() | + |--------------| + | 2022-10-03 | + +--------------+ + + +UTC_TIME +-------- + +Description +>>>>>>>>>>> + +Returns the current UTC time as a value in 'hh:mm:ss'. + +Return type: TIME + +Specification: UTC_TIME() -> TIME + +Example:: + + > SELECT UTC_TIME(); + fetched rows / total rows = 1/1 + +--------------+ + | utc_time() | + |--------------| + | 17:54:27 | + +--------------+ + + +UTC_TIMESTAMP +------------- + +Description +>>>>>>>>>>> + +Returns the current UTC timestamp as a value in 'YYYY-MM-DD hh:mm:ss'. + +Return type: DATETIME + +Specification: UTC_TIMESTAMP() -> DATETIME + +Example:: + + > SELECT UTC_TIMESTAMP(); + fetched rows / total rows = 1/1 + +---------------------+ + | utc_timestamp() | + |---------------------| + | 2022-10-03 17:54:28 | + +---------------------+ + WEEK ---- diff --git a/docs/user/ppl/functions/datetime.rst b/docs/user/ppl/functions/datetime.rst index ca191e2426..99ccc8e360 100644 --- a/docs/user/ppl/functions/datetime.rst +++ b/docs/user/ppl/functions/datetime.rst @@ -1251,6 +1251,75 @@ Example:: +--------------------------+-----------------------------+ +UTC_DATE +-------- + +Description +>>>>>>>>>>> + +Returns the current UTC date as a value in 'YYYY-MM-DD'. + +Return type: DATE + +Specification: UTC_DATE() -> DATE + +Example:: + + > source=people | eval `UTC_DATE()` = UTC_DATE() | fields `UTC_DATE()` + fetched rows / total rows = 1/1 + +--------------+ + | UTC_DATE() | + |--------------| + | 2022-10-03 | + +--------------+ + + +UTC_TIME +-------- + +Description +>>>>>>>>>>> + +Returns the current UTC time as a value in 'hh:mm:ss'. + +Return type: TIME + +Specification: UTC_TIME() -> TIME + +Example:: + + > source=people | eval `UTC_TIME()` = UTC_TIME() | fields `UTC_TIME()` + fetched rows / total rows = 1/1 + +--------------+ + | UTC_TIME() | + |--------------| + | 17:54:27 | + +--------------+ + + +UTC_TIMESTAMP +------------- + +Description +>>>>>>>>>>> + +Returns the current UTC timestamp as a value in 'YYYY-MM-DD hh:mm:ss'. + +Return type: DATETIME + +Specification: UTC_TIMESTAMP() -> DATETIME + +Example:: + + > source=people | eval `UTC_TIMESTAMP()` = UTC_TIMESTAMP() | fields `UTC_TIMESTAMP()` + fetched rows / total rows = 1/1 + +---------------------+ + | UTC_TIMESTAMP() | + |---------------------| + | 2022-10-03 17:54:28 | + +---------------------+ + + WEEK ---- diff --git a/integ-test/src/test/java/org/opensearch/sql/ppl/DateTimeFunctionIT.java b/integ-test/src/test/java/org/opensearch/sql/ppl/DateTimeFunctionIT.java index afabc241fe..004d8a0648 100644 --- a/integ-test/src/test/java/org/opensearch/sql/ppl/DateTimeFunctionIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/ppl/DateTimeFunctionIT.java @@ -6,8 +6,11 @@ package org.opensearch.sql.ppl; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.opensearch.sql.legacy.TestsConstants.TEST_INDEX_DATE; import static org.opensearch.sql.legacy.TestsConstants.TEST_INDEX_PEOPLE2; +import static org.opensearch.sql.sql.DateTimeFunctionIT.utcDateTimeNow; import static org.opensearch.sql.util.MatcherUtils.rows; import static org.opensearch.sql.util.MatcherUtils.schema; import static org.opensearch.sql.util.MatcherUtils.verifySchema; @@ -754,6 +757,33 @@ private List> nowLikeFunctionsData() { .put("referenceGetter", (Supplier) LocalDate::now) .put("parser", (BiFunction) LocalDate::parse) .put("serializationPattern", "uuuu-MM-dd") + .build(), + ImmutableMap.builder() + .put("name", "utc_date") + .put("hasFsp", false) + .put("hasShortcut", false) + .put("constValue", true) + .put("referenceGetter", (Supplier) ()-> utcDateTimeNow().toLocalDate()) + .put("parser", (BiFunction) LocalDate::parse) + .put("serializationPattern", "uuuu-MM-dd") + .build(), + ImmutableMap.builder() + .put("name", "utc_time") + .put("hasFsp", false) + .put("hasShortcut", false) + .put("constValue", true) + .put("referenceGetter", (Supplier) ()-> utcDateTimeNow().toLocalTime()) + .put("parser", (BiFunction) LocalTime::parse) + .put("serializationPattern", "HH:mm:ss") + .build(), + ImmutableMap.builder() + .put("name", "utc_timestamp") + .put("hasFsp", false) + .put("hasShortcut", false) + .put("constValue", true) + .put("referenceGetter", (Supplier) ()-> utcDateTimeNow()) + .put("parser", (BiFunction) LocalDateTime::parse) + .put("serializationPattern", "uuuu-MM-dd HH:mm:ss") .build() ); } diff --git a/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java b/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java index 3503877d64..f60bd1efb0 100644 --- a/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java @@ -24,6 +24,8 @@ import java.time.LocalDateTime; import java.time.LocalTime; import java.time.Period; +import java.time.ZoneId; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; import java.time.temporal.ChronoField; @@ -640,6 +642,12 @@ public void testMakeDate() throws IOException { verifyDataRows(result, rows("1945-01-06", "1989-06-06")); } + public static LocalDateTime utcDateTimeNow() { + ZonedDateTime zonedDateTime = + LocalDateTime.now().atZone(TimeZone.getDefault().toZoneId()); + return zonedDateTime.withZoneSameInstant(ZoneId.of("UTC")).toLocalDateTime(); + } + private List> nowLikeFunctionsData() { return List.of( ImmutableMap.builder() @@ -722,6 +730,33 @@ private List> nowLikeFunctionsData() { .put("referenceGetter", (Supplier) LocalDate::now) .put("parser", (BiFunction) LocalDate::parse) .put("serializationPattern", "uuuu-MM-dd") + .build(), + ImmutableMap.builder() + .put("name", "utc_date") + .put("hasFsp", false) + .put("hasShortcut", false) + .put("constValue", true) + .put("referenceGetter", (Supplier) (()-> utcDateTimeNow().toLocalDate())) + .put("parser", (BiFunction) LocalDate::parse) + .put("serializationPattern", "uuuu-MM-dd") + .build(), + ImmutableMap.builder() + .put("name", "utc_time") + .put("hasFsp", false) + .put("hasShortcut", false) + .put("constValue", true) + .put("referenceGetter", (Supplier) (()-> utcDateTimeNow().toLocalTime())) + .put("parser", (BiFunction) LocalTime::parse) + .put("serializationPattern", "HH:mm:ss") + .build(), + ImmutableMap.builder() + .put("name", "utc_timestamp") + .put("hasFsp", false) + .put("hasShortcut", false) + .put("constValue", true) + .put("referenceGetter", (Supplier) DateTimeFunctionIT::utcDateTimeNow) + .put("parser", (BiFunction) LocalDateTime::parse) + .put("serializationPattern", "uuuu-MM-dd HH:mm:ss") .build() ); } diff --git a/ppl/src/test/java/org/opensearch/sql/ppl/antlr/NowLikeFunctionParserTest.java b/ppl/src/test/java/org/opensearch/sql/ppl/antlr/NowLikeFunctionParserTest.java index dda404f29a..fb849f6de7 100644 --- a/ppl/src/test/java/org/opensearch/sql/ppl/antlr/NowLikeFunctionParserTest.java +++ b/ppl/src/test/java/org/opensearch/sql/ppl/antlr/NowLikeFunctionParserTest.java @@ -46,7 +46,10 @@ public static Iterable functionNames() { {"curtime", true, false}, {"current_time", true, true}, {"curdate", false, false}, - {"current_date", false, true} + {"current_date", false, true}, + {"utc_date", false, false}, + {"utc_time", false, false}, + {"utc_timestamp", false, false} }); } diff --git a/ppl/src/test/java/org/opensearch/sql/ppl/parser/AstNowLikeFunctionTest.java b/ppl/src/test/java/org/opensearch/sql/ppl/parser/AstNowLikeFunctionTest.java index 711e780f3b..ddcde513dd 100644 --- a/ppl/src/test/java/org/opensearch/sql/ppl/parser/AstNowLikeFunctionTest.java +++ b/ppl/src/test/java/org/opensearch/sql/ppl/parser/AstNowLikeFunctionTest.java @@ -56,7 +56,10 @@ public static Iterable functionNames() { {"curtime", false, false}, {"current_time", false, false}, {"curdate", false, false}, - {"current_date", false, false} + {"current_date", false, false}, + {"utc_date", false, false}, + {"utc_time", false, false}, + {"utc_timestamp", false, false} }); } diff --git a/sql/src/main/antlr/OpenSearchSQLLexer.g4 b/sql/src/main/antlr/OpenSearchSQLLexer.g4 index a359f48be3..01016992e9 100644 --- a/sql/src/main/antlr/OpenSearchSQLLexer.g4 +++ b/sql/src/main/antlr/OpenSearchSQLLexer.g4 @@ -258,9 +258,9 @@ TIME_TO_SEC: 'TIME_TO_SEC'; TIMESTAMP: 'TIMESTAMP'; TRUNCATE: 'TRUNCATE'; TO_DAYS: 'TO_DAYS'; -UTC_DATE: 'UTC_DATE'; UNIX_TIMESTAMP: 'UNIX_TIMESTAMP'; UPPER: 'UPPER'; +UTC_DATE: 'UTC_DATE'; UTC_TIME: 'UTC_TIME'; UTC_TIMESTAMP: 'UTC_TIMESTAMP'; diff --git a/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java b/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java index bfd0f93ec9..778a62ebd8 100644 --- a/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java +++ b/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java @@ -167,7 +167,10 @@ private static Stream nowLikeFunctionsData() { Arguments.of("curtime", true, false), Arguments.of("current_time", true, true), Arguments.of("curdate", false, false), - Arguments.of("current_date", false, true) + Arguments.of("current_date", false, true), + Arguments.of("utc_date", false, true), + Arguments.of("utc_time", false, true), + Arguments.of("utc_timestamp", false, true) ); } diff --git a/sql/src/test/java/org/opensearch/sql/sql/parser/AstNowLikeFunctionTest.java b/sql/src/test/java/org/opensearch/sql/sql/parser/AstNowLikeFunctionTest.java index 19b48ca0bd..4ce2a2d3f7 100644 --- a/sql/src/test/java/org/opensearch/sql/sql/parser/AstNowLikeFunctionTest.java +++ b/sql/src/test/java/org/opensearch/sql/sql/parser/AstNowLikeFunctionTest.java @@ -32,8 +32,11 @@ private static Stream allFunctions() { "curtime", "localtimestamp", "localtime", - "now", - "sysdate") + "now", + "sysdate", + "utc_date", + "utc_time", + "utc_timestamp") .map(Arguments::of); } From d03c176c10f6914a0efe972535bd3565b86fe077 Mon Sep 17 00:00:00 2001 From: Forest Vey <36905077+forestmvey@users.noreply.github.com> Date: Tue, 20 Dec 2022 11:33:20 -0800 Subject: [PATCH 20/55] Validate field and fields parameters in relevance search functions (#1067) Change relevance functions that query fields to throw a SemanticCheckException when a field is queried that does not exist. Signed-off-by: forestmvey --- .../function/OpenSearchFunctions.java | 22 +++---- .../function/RelevanceFunctionResolver.java | 11 ---- .../sql/analysis/ExpressionAnalyzerTest.java | 50 +++++++------- .../org/opensearch/sql/config/TestConfig.java | 2 + .../RelevanceFunctionResolverTest.java | 11 +--- .../java/org/opensearch/sql/sql/MatchIT.java | 37 +++++++++++ .../lucene/relevance/SingleFieldQuery.java | 3 +- .../script/filter/FilterQueryBuilderTest.java | 66 +++++++++++-------- .../lucene/MatchBoolPrefixQueryTest.java | 11 +++- .../lucene/MatchPhrasePrefixQueryTest.java | 26 +++++--- .../filter/lucene/MatchPhraseQueryTest.java | 65 ++++++++++++------ .../script/filter/lucene/MatchQueryTest.java | 53 ++++++++++----- .../filter/lucene/WildcardQueryTest.java | 11 +++- .../relevance/SingleFieldQueryTest.java | 20 +++++- .../sql/ppl/parser/AstExpressionBuilder.java | 2 +- .../ppl/parser/AstExpressionBuilderTest.java | 2 +- .../sql/sql/parser/AstExpressionBuilder.java | 2 +- .../sql/parser/AstExpressionBuilderTest.java | 18 ++--- 18 files changed, 259 insertions(+), 153 deletions(-) diff --git a/core/src/main/java/org/opensearch/sql/expression/function/OpenSearchFunctions.java b/core/src/main/java/org/opensearch/sql/expression/function/OpenSearchFunctions.java index d8efe42640..842cf25cd6 100644 --- a/core/src/main/java/org/opensearch/sql/expression/function/OpenSearchFunctions.java +++ b/core/src/main/java/org/opensearch/sql/expression/function/OpenSearchFunctions.java @@ -5,10 +5,6 @@ package org.opensearch.sql.expression.function; -import static org.opensearch.sql.data.type.ExprCoreType.STRING; -import static org.opensearch.sql.data.type.ExprCoreType.STRUCT; - -import com.google.common.collect.ImmutableMap; import java.util.List; import java.util.stream.Collectors; import lombok.experimental.UtilityClass; @@ -48,46 +44,46 @@ public void register(BuiltinFunctionRepository repository) { private static FunctionResolver match_bool_prefix() { FunctionName name = BuiltinFunctionName.MATCH_BOOL_PREFIX.getName(); - return new RelevanceFunctionResolver(name, STRING); + return new RelevanceFunctionResolver(name); } private static FunctionResolver match(BuiltinFunctionName match) { FunctionName funcName = match.getName(); - return new RelevanceFunctionResolver(funcName, STRING); + return new RelevanceFunctionResolver(funcName); } private static FunctionResolver match_phrase_prefix() { FunctionName funcName = BuiltinFunctionName.MATCH_PHRASE_PREFIX.getName(); - return new RelevanceFunctionResolver(funcName, STRING); + return new RelevanceFunctionResolver(funcName); } private static FunctionResolver match_phrase(BuiltinFunctionName matchPhrase) { FunctionName funcName = matchPhrase.getName(); - return new RelevanceFunctionResolver(funcName, STRING); + return new RelevanceFunctionResolver(funcName); } private static FunctionResolver multi_match(BuiltinFunctionName multiMatchName) { - return new RelevanceFunctionResolver(multiMatchName.getName(), STRUCT); + return new RelevanceFunctionResolver(multiMatchName.getName()); } private static FunctionResolver simple_query_string() { FunctionName funcName = BuiltinFunctionName.SIMPLE_QUERY_STRING.getName(); - return new RelevanceFunctionResolver(funcName, STRUCT); + return new RelevanceFunctionResolver(funcName); } private static FunctionResolver query() { FunctionName funcName = BuiltinFunctionName.QUERY.getName(); - return new RelevanceFunctionResolver(funcName, STRING); + return new RelevanceFunctionResolver(funcName); } private static FunctionResolver query_string() { FunctionName funcName = BuiltinFunctionName.QUERY_STRING.getName(); - return new RelevanceFunctionResolver(funcName, STRUCT); + return new RelevanceFunctionResolver(funcName); } private static FunctionResolver wildcard_query(BuiltinFunctionName wildcardQuery) { FunctionName funcName = wildcardQuery.getName(); - return new RelevanceFunctionResolver(funcName, STRING); + return new RelevanceFunctionResolver(funcName); } public static class OpenSearchFunction extends FunctionExpression { diff --git a/core/src/main/java/org/opensearch/sql/expression/function/RelevanceFunctionResolver.java b/core/src/main/java/org/opensearch/sql/expression/function/RelevanceFunctionResolver.java index 7066622e1b..ef0ac9226c 100644 --- a/core/src/main/java/org/opensearch/sql/expression/function/RelevanceFunctionResolver.java +++ b/core/src/main/java/org/opensearch/sql/expression/function/RelevanceFunctionResolver.java @@ -20,9 +20,6 @@ public class RelevanceFunctionResolver @Getter private final FunctionName functionName; - @Getter - private final ExprType declaredFirstParamType; - @Override public Pair resolve(FunctionSignature unresolvedSignature) { if (!unresolvedSignature.getFunctionName().equals(functionName)) { @@ -30,14 +27,6 @@ public Pair resolve(FunctionSignature unreso functionName.getFunctionName(), unresolvedSignature.getFunctionName().getFunctionName())); } List paramTypes = unresolvedSignature.getParamTypeList(); - ExprType providedFirstParamType = paramTypes.get(0); - - // Check if the first parameter is of the specified type. - if (!declaredFirstParamType.equals(providedFirstParamType)) { - throw new SemanticCheckException( - getWrongParameterErrorMessage(0, providedFirstParamType, declaredFirstParamType)); - } - // Check if all but the first parameter are of type STRING. for (int i = 1; i < paramTypes.size(); i++) { ExprType paramType = paramTypes.get(i); diff --git a/core/src/test/java/org/opensearch/sql/analysis/ExpressionAnalyzerTest.java b/core/src/test/java/org/opensearch/sql/analysis/ExpressionAnalyzerTest.java index a69b27fc61..5a8ae6b8cd 100644 --- a/core/src/test/java/org/opensearch/sql/analysis/ExpressionAnalyzerTest.java +++ b/core/src/test/java/org/opensearch/sql/analysis/ExpressionAnalyzerTest.java @@ -374,10 +374,10 @@ public void named_non_parse_expression() { void match_bool_prefix_expression() { assertAnalyzeEqual( DSL.match_bool_prefix( - DSL.namedArgument("field", DSL.literal("fieldA")), + DSL.namedArgument("field", DSL.literal("field_value1")), DSL.namedArgument("query", DSL.literal("sample query"))), AstDSL.function("match_bool_prefix", - AstDSL.unresolvedArg("field", stringLiteral("fieldA")), + AstDSL.unresolvedArg("field", stringLiteral("field_value1")), AstDSL.unresolvedArg("query", stringLiteral("sample query")))); } @@ -418,11 +418,11 @@ void multi_match_expression() { DSL.multi_match( DSL.namedArgument("fields", DSL.literal( new ExprTupleValue(new LinkedHashMap<>(ImmutableMap.of( - "field", ExprValueUtils.floatValue(1.F)))))), + "field_value1", ExprValueUtils.floatValue(1.F)))))), DSL.namedArgument("query", DSL.literal("sample query"))), AstDSL.function("multi_match", AstDSL.unresolvedArg("fields", new RelevanceFieldList(Map.of( - "field", 1.F))), + "field_value1", 1.F))), AstDSL.unresolvedArg("query", stringLiteral("sample query")))); } @@ -432,12 +432,12 @@ void multi_match_expression_with_params() { DSL.multi_match( DSL.namedArgument("fields", DSL.literal( new ExprTupleValue(new LinkedHashMap<>(ImmutableMap.of( - "field", ExprValueUtils.floatValue(1.F)))))), + "field_value1", ExprValueUtils.floatValue(1.F)))))), DSL.namedArgument("query", DSL.literal("sample query")), DSL.namedArgument("analyzer", DSL.literal("keyword"))), AstDSL.function("multi_match", AstDSL.unresolvedArg("fields", new RelevanceFieldList(Map.of( - "field", 1.F))), + "field_value1", 1.F))), AstDSL.unresolvedArg("query", stringLiteral("sample query")), AstDSL.unresolvedArg("analyzer", stringLiteral("keyword")))); } @@ -448,12 +448,12 @@ void multi_match_expression_two_fields() { DSL.multi_match( DSL.namedArgument("fields", DSL.literal( new ExprTupleValue(new LinkedHashMap<>(ImmutableMap.of( - "field1", ExprValueUtils.floatValue(1.F), - "field2", ExprValueUtils.floatValue(.3F)))))), + "field_value1", ExprValueUtils.floatValue(1.F), + "field_value2", ExprValueUtils.floatValue(.3F)))))), DSL.namedArgument("query", DSL.literal("sample query"))), AstDSL.function("multi_match", AstDSL.unresolvedArg("fields", new RelevanceFieldList(ImmutableMap.of( - "field1", 1.F, "field2", .3F))), + "field_value1", 1.F, "field_value2", .3F))), AstDSL.unresolvedArg("query", stringLiteral("sample query")))); } @@ -463,11 +463,11 @@ void simple_query_string_expression() { DSL.simple_query_string( DSL.namedArgument("fields", DSL.literal( new ExprTupleValue(new LinkedHashMap<>(ImmutableMap.of( - "field", ExprValueUtils.floatValue(1.F)))))), + "field_value1", ExprValueUtils.floatValue(1.F)))))), DSL.namedArgument("query", DSL.literal("sample query"))), AstDSL.function("simple_query_string", AstDSL.unresolvedArg("fields", new RelevanceFieldList(Map.of( - "field", 1.F))), + "field_value1", 1.F))), AstDSL.unresolvedArg("query", stringLiteral("sample query")))); } @@ -477,12 +477,12 @@ void simple_query_string_expression_with_params() { DSL.simple_query_string( DSL.namedArgument("fields", DSL.literal( new ExprTupleValue(new LinkedHashMap<>(ImmutableMap.of( - "field", ExprValueUtils.floatValue(1.F)))))), + "field_value1", ExprValueUtils.floatValue(1.F)))))), DSL.namedArgument("query", DSL.literal("sample query")), DSL.namedArgument("analyzer", DSL.literal("keyword"))), AstDSL.function("simple_query_string", AstDSL.unresolvedArg("fields", new RelevanceFieldList(Map.of( - "field", 1.F))), + "field_value1", 1.F))), AstDSL.unresolvedArg("query", stringLiteral("sample query")), AstDSL.unresolvedArg("analyzer", stringLiteral("keyword")))); } @@ -493,12 +493,12 @@ void simple_query_string_expression_two_fields() { DSL.simple_query_string( DSL.namedArgument("fields", DSL.literal( new ExprTupleValue(new LinkedHashMap<>(ImmutableMap.of( - "field1", ExprValueUtils.floatValue(1.F), - "field2", ExprValueUtils.floatValue(.3F)))))), + "field_value1", ExprValueUtils.floatValue(1.F), + "field_value2", ExprValueUtils.floatValue(.3F)))))), DSL.namedArgument("query", DSL.literal("sample query"))), AstDSL.function("simple_query_string", AstDSL.unresolvedArg("fields", new RelevanceFieldList(ImmutableMap.of( - "field1", 1.F, "field2", .3F))), + "field_value1", 1.F, "field_value2", .3F))), AstDSL.unresolvedArg("query", stringLiteral("sample query")))); } @@ -517,11 +517,11 @@ void query_string_expression() { DSL.query_string( DSL.namedArgument("fields", DSL.literal( new ExprTupleValue(new LinkedHashMap<>(ImmutableMap.of( - "field", ExprValueUtils.floatValue(1.F)))))), + "field_value1", ExprValueUtils.floatValue(1.F)))))), DSL.namedArgument("query", DSL.literal("query_value"))), AstDSL.function("query_string", AstDSL.unresolvedArg("fields", new RelevanceFieldList(Map.of( - "field", 1.F))), + "field_value1", 1.F))), AstDSL.unresolvedArg("query", stringLiteral("query_value")))); } @@ -531,12 +531,12 @@ void query_string_expression_with_params() { DSL.query_string( DSL.namedArgument("fields", DSL.literal( new ExprTupleValue(new LinkedHashMap<>(ImmutableMap.of( - "field", ExprValueUtils.floatValue(1.F)))))), + "field_value1", ExprValueUtils.floatValue(1.F)))))), DSL.namedArgument("query", DSL.literal("query_value")), DSL.namedArgument("escape", DSL.literal("false"))), AstDSL.function("query_string", AstDSL.unresolvedArg("fields", new RelevanceFieldList(Map.of( - "field", 1.F))), + "field_value1", 1.F))), AstDSL.unresolvedArg("query", stringLiteral("query_value")), AstDSL.unresolvedArg("escape", stringLiteral("false")))); } @@ -547,12 +547,12 @@ void query_string_expression_two_fields() { DSL.query_string( DSL.namedArgument("fields", DSL.literal( new ExprTupleValue(new LinkedHashMap<>(ImmutableMap.of( - "field1", ExprValueUtils.floatValue(1.F), - "field2", ExprValueUtils.floatValue(.3F)))))), + "field_value1", ExprValueUtils.floatValue(1.F), + "field_value2", ExprValueUtils.floatValue(.3F)))))), DSL.namedArgument("query", DSL.literal("query_value"))), AstDSL.function("query_string", AstDSL.unresolvedArg("fields", new RelevanceFieldList(ImmutableMap.of( - "field1", 1.F, "field2", .3F))), + "field_value1", 1.F, "field_value2", .3F))), AstDSL.unresolvedArg("query", stringLiteral("query_value")))); } @@ -588,7 +588,7 @@ void wildcard_query_expression_all_params() { public void match_phrase_prefix_all_params() { assertAnalyzeEqual( DSL.match_phrase_prefix( - DSL.namedArgument("field", "test"), + DSL.namedArgument("field", "field_value1"), DSL.namedArgument("query", "search query"), DSL.namedArgument("slop", "3"), DSL.namedArgument("boost", "1.5"), @@ -597,7 +597,7 @@ public void match_phrase_prefix_all_params() { DSL.namedArgument("zero_terms_query", "NONE") ), AstDSL.function("match_phrase_prefix", - unresolvedArg("field", stringLiteral("test")), + unresolvedArg("field", stringLiteral("field_value1")), unresolvedArg("query", stringLiteral("search query")), unresolvedArg("slop", stringLiteral("3")), unresolvedArg("boost", stringLiteral("1.5")), diff --git a/core/src/test/java/org/opensearch/sql/config/TestConfig.java b/core/src/test/java/org/opensearch/sql/config/TestConfig.java index a0ef436162..4159ae12ff 100644 --- a/core/src/test/java/org/opensearch/sql/config/TestConfig.java +++ b/core/src/test/java/org/opensearch/sql/config/TestConfig.java @@ -57,6 +57,8 @@ public class TestConfig { .put("struct_value", ExprCoreType.STRUCT) .put("array_value", ExprCoreType.ARRAY) .put("timestamp_value", ExprCoreType.TIMESTAMP) + .put("field_value1", ExprCoreType.STRING) + .put("field_value2", ExprCoreType.STRING) .build(); @Bean diff --git a/core/src/test/java/org/opensearch/sql/expression/function/RelevanceFunctionResolverTest.java b/core/src/test/java/org/opensearch/sql/expression/function/RelevanceFunctionResolverTest.java index d8547057c4..deba721481 100644 --- a/core/src/test/java/org/opensearch/sql/expression/function/RelevanceFunctionResolverTest.java +++ b/core/src/test/java/org/opensearch/sql/expression/function/RelevanceFunctionResolverTest.java @@ -24,7 +24,7 @@ class RelevanceFunctionResolverTest { @BeforeEach void setUp() { - resolver = new RelevanceFunctionResolver(sampleFuncName, STRING); + resolver = new RelevanceFunctionResolver(sampleFuncName); } @Test @@ -44,15 +44,6 @@ void resolve_invalid_name_test() { exception.getMessage()); } - @Test - void resolve_invalid_first_param_type_test() { - var sig = new FunctionSignature(sampleFuncName, List.of(INTEGER)); - Exception exception = assertThrows(SemanticCheckException.class, - () -> resolver.resolve(sig)); - assertEquals("Expected type STRING instead of INTEGER for parameter #1", - exception.getMessage()); - } - @Test void resolve_invalid_third_param_type_test() { var sig = new FunctionSignature(sampleFuncName, List.of(STRING, STRING, INTEGER, STRING)); diff --git a/integ-test/src/test/java/org/opensearch/sql/sql/MatchIT.java b/integ-test/src/test/java/org/opensearch/sql/sql/MatchIT.java index 09e3504e4a..b113e83477 100644 --- a/integ-test/src/test/java/org/opensearch/sql/sql/MatchIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/sql/MatchIT.java @@ -15,6 +15,7 @@ import org.json.JSONObject; import org.junit.Test; import org.opensearch.sql.legacy.SQLIntegTestCase; +import org.opensearch.sql.legacy.utils.StringUtils; public class MatchIT extends SQLIntegTestCase { @Override @@ -36,6 +37,42 @@ public void match_in_having() throws IOException { verifyDataRows(result, rows("Bates")); } + @Test + public void missing_field_test() { + String query = StringUtils.format("SELECT * FROM %s WHERE match(invalid, 'Bates')", TEST_INDEX_ACCOUNT); + final RuntimeException exception = + expectThrows(RuntimeException.class, () -> executeJdbcRequest(query)); + + assertTrue(exception.getMessage() + .contains("can't resolve Symbol(namespace=FIELD_NAME, name=invalid) in type env")); + + assertTrue(exception.getMessage().contains("SemanticCheckException")); + } + + @Test + public void missing_quoted_field_test() { + String query = StringUtils.format("SELECT * FROM %s WHERE match('invalid', 'Bates')", TEST_INDEX_ACCOUNT); + final RuntimeException exception = + expectThrows(RuntimeException.class, () -> executeJdbcRequest(query)); + + assertTrue(exception.getMessage() + .contains("can't resolve Symbol(namespace=FIELD_NAME, name=invalid) in type env")); + + assertTrue(exception.getMessage().contains("SemanticCheckException")); + } + + @Test + public void missing_backtick_field_test() { + String query = StringUtils.format("SELECT * FROM %s WHERE match(`invalid`, 'Bates')", TEST_INDEX_ACCOUNT); + final RuntimeException exception = + expectThrows(RuntimeException.class, () -> executeJdbcRequest(query)); + + assertTrue(exception.getMessage() + .contains("can't resolve Symbol(namespace=FIELD_NAME, name=invalid) in type env")); + + assertTrue(exception.getMessage().contains("SemanticCheckException")); + } + @Test public void matchquery_in_where() throws IOException { JSONObject result = executeJdbcRequest("SELECT firstname FROM " + TEST_INDEX_ACCOUNT + " WHERE matchquery(lastname, 'Bates')"); diff --git a/opensearch/src/main/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/relevance/SingleFieldQuery.java b/opensearch/src/main/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/relevance/SingleFieldQuery.java index a7d7584d4f..ec110dfd8b 100644 --- a/opensearch/src/main/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/relevance/SingleFieldQuery.java +++ b/opensearch/src/main/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/relevance/SingleFieldQuery.java @@ -10,6 +10,7 @@ import org.opensearch.index.query.QueryBuilder; import org.opensearch.sql.exception.SemanticCheckException; import org.opensearch.sql.expression.NamedArgumentExpression; +import org.opensearch.sql.expression.ReferenceExpression; /** * Base class to represent builder class for relevance queries like match_query, match_bool_prefix, @@ -36,7 +37,7 @@ protected T createQueryBuilder(List arguments) { .orElseThrow(() -> new SemanticCheckException("'query' parameter is missing")); return createBuilder( - field.getValue().valueOf().stringValue(), + ((ReferenceExpression)field.getValue()).getAttr(), query.getValue().valueOf().stringValue()); } diff --git a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/FilterQueryBuilderTest.java b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/FilterQueryBuilderTest.java index f3e4fe7afd..2ad1f59d39 100644 --- a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/FilterQueryBuilderTest.java +++ b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/FilterQueryBuilderTest.java @@ -53,6 +53,7 @@ import org.opensearch.sql.expression.Expression; import org.opensearch.sql.expression.FunctionExpression; import org.opensearch.sql.expression.LiteralExpression; +import org.opensearch.sql.expression.ReferenceExpression; import org.opensearch.sql.opensearch.storage.serialization.ExpressionSerializer; @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) @@ -313,7 +314,8 @@ void should_build_match_query_with_default_parameters() { + "}", buildQuery( DSL.match( - DSL.namedArgument("field", literal("message")), + DSL.namedArgument("field", + new ReferenceExpression("message", OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", literal("search query"))))); } @@ -341,7 +343,8 @@ void should_build_match_query_with_custom_parameters() { + "}", buildQuery( DSL.match( - DSL.namedArgument("field", literal("message")), + DSL.namedArgument("field", + new ReferenceExpression("message", OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", literal("search query")), DSL.namedArgument("operator", literal("AND")), DSL.namedArgument("analyzer", literal("keyword")), @@ -360,7 +363,8 @@ void should_build_match_query_with_custom_parameters() { @Test void match_invalid_parameter() { FunctionExpression expr = DSL.match( - DSL.namedArgument("field", literal("message")), + DSL.namedArgument("field", + new ReferenceExpression("message", OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", literal("search query")), DSL.namedArgument("invalid_parameter", literal("invalid_value"))); var msg = assertThrows(SemanticCheckException.class, () -> buildQuery(expr)).getMessage(); @@ -433,7 +437,8 @@ void should_build_match_phrase_query_with_default_parameters() { + "}", buildQuery( DSL.match_phrase( - DSL.namedArgument("field", literal("message")), + DSL.namedArgument("field", + new ReferenceExpression("message", OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", literal("search query"))))); } @@ -625,8 +630,9 @@ void should_build_match_phrase_query_with_custom_parameters() { + "}", buildQuery( DSL.match_phrase( + DSL.namedArgument("field", + new ReferenceExpression("message", OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("boost", literal("1.2")), - DSL.namedArgument("field", literal("message")), DSL.namedArgument("query", literal("search query")), DSL.namedArgument("analyzer", literal("keyword")), DSL.namedArgument("slop", literal("2")), @@ -636,7 +642,8 @@ void should_build_match_phrase_query_with_custom_parameters() { @Test void wildcard_query_invalid_parameter() { FunctionExpression expr = DSL.wildcard_query( - DSL.namedArgument("field", literal("field")), + DSL.namedArgument("field", + new ReferenceExpression("field", OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", literal("search query*")), DSL.namedArgument("invalid_parameter", literal("invalid_value"))); assertThrows(SemanticCheckException.class, () -> buildQuery(expr), @@ -655,7 +662,8 @@ void wildcard_query_convert_sql_wildcard_to_lucene() { + " }\n" + "}", buildQuery(DSL.wildcard_query( - DSL.namedArgument("field", literal("field")), + DSL.namedArgument("field", + new ReferenceExpression("field", OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", literal("search query%"))))); assertJsonEquals("{\n" @@ -667,7 +675,8 @@ void wildcard_query_convert_sql_wildcard_to_lucene() { + " }\n" + "}", buildQuery(DSL.wildcard_query( - DSL.namedArgument("field", literal("field")), + DSL.namedArgument("field", + new ReferenceExpression("field", OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", literal("search query_"))))); } @@ -682,7 +691,8 @@ void wildcard_query_escape_wildcards_characters() { + " }\n" + "}", buildQuery(DSL.wildcard_query( - DSL.namedArgument("field", literal("field")), + DSL.namedArgument("field", + new ReferenceExpression("field", OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", literal("search query\\%"))))); assertJsonEquals("{\n" @@ -694,7 +704,8 @@ void wildcard_query_escape_wildcards_characters() { + " }\n" + "}", buildQuery(DSL.wildcard_query( - DSL.namedArgument("field", literal("field")), + DSL.namedArgument("field", + new ReferenceExpression("field", OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", literal("search query\\_"))))); assertJsonEquals("{\n" @@ -706,7 +717,8 @@ void wildcard_query_escape_wildcards_characters() { + " }\n" + "}", buildQuery(DSL.wildcard_query( - DSL.namedArgument("field", literal("field")), + DSL.namedArgument("field", + new ReferenceExpression("field", OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", literal("search query\\*"))))); assertJsonEquals("{\n" @@ -718,7 +730,8 @@ void wildcard_query_escape_wildcards_characters() { + " }\n" + "}", buildQuery(DSL.wildcard_query( - DSL.namedArgument("field", literal("field")), + DSL.namedArgument("field", + new ReferenceExpression("field", OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", literal("search query\\?"))))); } @@ -733,7 +746,8 @@ void should_build_wildcard_query_with_default_parameters() { + " }\n" + "}", buildQuery(DSL.wildcard_query( - DSL.namedArgument("field", literal("field")), + DSL.namedArgument("field", + new ReferenceExpression("field", OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", literal("search query*"))))); } @@ -750,7 +764,8 @@ void should_build_wildcard_query_query_with_custom_parameters() { + " }\n" + "}", buildQuery(DSL.wildcard_query( - DSL.namedArgument("field", literal("field")), + DSL.namedArgument("field", + new ReferenceExpression("field", OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", literal("search query*")), DSL.namedArgument("boost", literal("0.6")), DSL.namedArgument("case_insensitive", literal("true")), @@ -1088,7 +1103,8 @@ void simple_query_string_invalid_parameter() { @Test void match_phrase_invalid_parameter() { FunctionExpression expr = DSL.match_phrase( - DSL.namedArgument("field", literal("message")), + DSL.namedArgument("field", + new ReferenceExpression("message", OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", literal("search query")), DSL.namedArgument("invalid_parameter", literal("invalid_value"))); var msg = assertThrows(SemanticCheckException.class, () -> buildQuery(expr)).getMessage(); @@ -1097,7 +1113,8 @@ void match_phrase_invalid_parameter() { @Test void relevancy_func_invalid_arg_values() { - final var field = DSL.namedArgument("field", literal("message")); + final var field = DSL.namedArgument("field", + new ReferenceExpression("message", OPENSEARCH_TEXT_KEYWORD)); final var fields = DSL.namedArgument("fields", DSL.literal( new ExprTupleValue(new LinkedHashMap<>(ImmutableMap.of( "field1", ExprValueUtils.floatValue(1.F), @@ -1175,18 +1192,11 @@ void should_build_match_bool_prefix_query_with_default_parameters() { + "}", buildQuery( DSL.match_bool_prefix( - DSL.namedArgument("field", literal("message")), + DSL.namedArgument("field", + new ReferenceExpression("message", OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", literal("search query"))))); } - @Test - void multi_match_missing_fields() { - var msg = assertThrows(SemanticCheckException.class, () -> - DSL.multi_match( - DSL.namedArgument("query", literal("search query")))).getMessage(); - assertEquals("Expected type STRUCT instead of STRING for parameter #1", msg); - } - @Test void multi_match_missing_fields_even_with_struct() { FunctionExpression expr = DSL.multi_match( @@ -1227,7 +1237,8 @@ void should_build_match_phrase_prefix_query_with_default_parameters() { + "}", buildQuery( DSL.match_phrase_prefix( - DSL.namedArgument("field", literal("message")), + DSL.namedArgument("field", + new ReferenceExpression("message", OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", literal("search query"))))); } @@ -1248,7 +1259,8 @@ void should_build_match_phrase_prefix_query_with_non_default_parameters() { + "}", buildQuery( DSL.match_phrase_prefix( - DSL.namedArgument("field", literal("message")), + DSL.namedArgument("field", + new ReferenceExpression("message", OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", literal("search query")), DSL.namedArgument("boost", literal("1.2")), DSL.namedArgument("max_expansions", literal("42")), diff --git a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/MatchBoolPrefixQueryTest.java b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/MatchBoolPrefixQueryTest.java index 162c55fcaf..34ef29f091 100644 --- a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/MatchBoolPrefixQueryTest.java +++ b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/MatchBoolPrefixQueryTest.java @@ -23,8 +23,10 @@ import org.opensearch.sql.expression.Expression; import org.opensearch.sql.expression.FunctionExpression; import org.opensearch.sql.expression.NamedArgumentExpression; +import org.opensearch.sql.expression.ReferenceExpression; import org.opensearch.sql.expression.env.Environment; import org.opensearch.sql.expression.function.FunctionName; +import org.opensearch.sql.opensearch.data.type.OpenSearchDataType; import org.opensearch.sql.opensearch.storage.script.filter.lucene.relevance.MatchBoolPrefixQuery; @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) @@ -33,7 +35,8 @@ public class MatchBoolPrefixQueryTest { private final FunctionName matchBoolPrefix = FunctionName.of("match_bool_prefix"); static Stream> generateValidData() { - NamedArgumentExpression field = DSL.namedArgument("field", DSL.literal("field_value")); + NamedArgumentExpression field = DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)); NamedArgumentExpression query = DSL.namedArgument("query", DSL.literal("query_value")); return List.of( DSL.namedArgument("fuzziness", DSL.literal("AUTO")), @@ -58,7 +61,8 @@ public void test_valid_arguments(List validArgs) { @Test public void test_valid_when_two_arguments() { List arguments = List.of( - DSL.namedArgument("field", "field_value"), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "query_value")); Assertions.assertNotNull(matchBoolPrefixQuery.build(new MatchExpression(arguments))); } @@ -80,7 +84,8 @@ public void test_SyntaxCheckException_when_one_argument() { @Test public void test_SemanticCheckException_when_invalid_argument() { List arguments = List.of( - DSL.namedArgument("field", "field_value"), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "query_value"), DSL.namedArgument("unsupported", "unsupported_value")); Assertions.assertThrows(SemanticCheckException.class, diff --git a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/MatchPhrasePrefixQueryTest.java b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/MatchPhrasePrefixQueryTest.java index a0b9e5f318..e02f112677 100644 --- a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/MatchPhrasePrefixQueryTest.java +++ b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/MatchPhrasePrefixQueryTest.java @@ -20,8 +20,10 @@ import org.opensearch.sql.expression.DSL; import org.opensearch.sql.expression.Expression; import org.opensearch.sql.expression.FunctionExpression; +import org.opensearch.sql.expression.ReferenceExpression; import org.opensearch.sql.expression.env.Environment; import org.opensearch.sql.expression.function.FunctionName; +import org.opensearch.sql.opensearch.data.type.OpenSearchDataType; import org.opensearch.sql.opensearch.storage.script.filter.lucene.relevance.MatchPhrasePrefixQuery; @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) @@ -39,7 +41,8 @@ public void test_SyntaxCheckException_when_no_arguments() { @Test public void test_SyntaxCheckException_when_one_argument() { - List arguments = List.of(DSL.namedArgument("field", "test")); + List arguments = List.of(DSL.namedArgument("field", + new ReferenceExpression("test", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD))); assertThrows(SyntaxCheckException.class, () -> matchPhrasePrefixQuery.build(new MatchPhraseExpression(arguments))); } @@ -47,7 +50,8 @@ public void test_SyntaxCheckException_when_one_argument() { @Test public void test_SyntaxCheckException_when_invalid_parameter() { List arguments = List.of( - DSL.namedArgument("field", "test"), + DSL.namedArgument("field", + new ReferenceExpression("test", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "test2"), DSL.namedArgument("unsupported", "3")); Assertions.assertThrows(SemanticCheckException.class, @@ -57,7 +61,8 @@ public void test_SyntaxCheckException_when_invalid_parameter() { @Test public void test_analyzer_parameter() { List arguments = List.of( - DSL.namedArgument("field", "t1"), + DSL.namedArgument("field", + new ReferenceExpression("t1", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "t2"), DSL.namedArgument("analyzer", "standard") ); @@ -67,7 +72,8 @@ public void test_analyzer_parameter() { @Test public void build_succeeds_with_two_arguments() { List arguments = List.of( - DSL.namedArgument("field", "test"), + DSL.namedArgument("field", + new ReferenceExpression("test", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "test2")); Assertions.assertNotNull(matchPhrasePrefixQuery.build(new MatchPhraseExpression(arguments))); } @@ -75,7 +81,8 @@ public void build_succeeds_with_two_arguments() { @Test public void test_slop_parameter() { List arguments = List.of( - DSL.namedArgument("field", "t1"), + DSL.namedArgument("field", + new ReferenceExpression("t1", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "t2"), DSL.namedArgument("slop", "2") ); @@ -85,7 +92,8 @@ public void test_slop_parameter() { @Test public void test_zero_terms_query_parameter() { List arguments = List.of( - DSL.namedArgument("field", "t1"), + DSL.namedArgument("field", + new ReferenceExpression("t1", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "t2"), DSL.namedArgument("zero_terms_query", "ALL") ); @@ -95,7 +103,8 @@ public void test_zero_terms_query_parameter() { @Test public void test_zero_terms_query_parameter_lower_case() { List arguments = List.of( - DSL.namedArgument("field", "t1"), + DSL.namedArgument("field", + new ReferenceExpression("t1", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "t2"), DSL.namedArgument("zero_terms_query", "all") ); @@ -105,7 +114,8 @@ public void test_zero_terms_query_parameter_lower_case() { @Test public void test_boost_parameter() { List arguments = List.of( - DSL.namedArgument("field", "t1"), + DSL.namedArgument("field", + new ReferenceExpression("test", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "t2"), DSL.namedArgument("boost", "0.1") ); diff --git a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/MatchPhraseQueryTest.java b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/MatchPhraseQueryTest.java index 6a298326b7..dd6296279c 100644 --- a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/MatchPhraseQueryTest.java +++ b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/MatchPhraseQueryTest.java @@ -20,8 +20,10 @@ import org.opensearch.sql.expression.DSL; import org.opensearch.sql.expression.Expression; import org.opensearch.sql.expression.FunctionExpression; +import org.opensearch.sql.expression.ReferenceExpression; import org.opensearch.sql.expression.env.Environment; import org.opensearch.sql.expression.function.FunctionName; +import org.opensearch.sql.opensearch.data.type.OpenSearchDataType; import org.opensearch.sql.opensearch.storage.script.filter.lucene.relevance.MatchPhraseQuery; @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) @@ -41,7 +43,8 @@ public void test_SyntaxCheckException_when_no_arguments() { @Test public void test_SyntaxCheckException_when_one_argument() { - List arguments = List.of(DSL.namedArgument("field", "test")); + List arguments = List.of(DSL.namedArgument("field", + new ReferenceExpression("test", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD))); assertThrows(SyntaxCheckException.class, () -> matchPhraseQuery.build(new MatchPhraseExpression(arguments))); } @@ -49,7 +52,8 @@ public void test_SyntaxCheckException_when_one_argument() { @Test public void test_SyntaxCheckException_when_invalid_parameter() { List arguments = List.of( - DSL.namedArgument("field", "test"), + DSL.namedArgument("field", + new ReferenceExpression("test", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "test2"), DSL.namedArgument("unsupported", "3")); Assertions.assertThrows(SemanticCheckException.class, @@ -59,7 +63,8 @@ public void test_SyntaxCheckException_when_invalid_parameter() { @Test public void test_analyzer_parameter() { List arguments = List.of( - DSL.namedArgument("field", "t1"), + DSL.namedArgument("field", + new ReferenceExpression("t1", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "t2"), DSL.namedArgument("analyzer", "standard") ); @@ -69,7 +74,8 @@ public void test_analyzer_parameter() { @Test public void build_succeeds_with_two_arguments() { List arguments = List.of( - DSL.namedArgument("field", "test"), + DSL.namedArgument("field", + new ReferenceExpression("test", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "test2")); Assertions.assertNotNull(matchPhraseQuery.build(new MatchPhraseExpression(arguments))); } @@ -77,7 +83,8 @@ public void build_succeeds_with_two_arguments() { @Test public void test_slop_parameter() { List arguments = List.of( - DSL.namedArgument("field", "t1"), + DSL.namedArgument("field", + new ReferenceExpression("t1", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "t2"), DSL.namedArgument("slop", "2") ); @@ -87,7 +94,8 @@ public void test_slop_parameter() { @Test public void test_zero_terms_query_parameter() { List arguments = List.of( - DSL.namedArgument("field", "t1"), + DSL.namedArgument("field", + new ReferenceExpression("t1", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "t2"), DSL.namedArgument("zero_terms_query", "ALL") ); @@ -97,7 +105,8 @@ public void test_zero_terms_query_parameter() { @Test public void test_zero_terms_query_parameter_lower_case() { List arguments = List.of( - DSL.namedArgument("field", "t1"), + DSL.namedArgument("field", + new ReferenceExpression("t1", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "t2"), DSL.namedArgument("zero_terms_query", "all") ); @@ -114,7 +123,8 @@ public void test_SyntaxCheckException_when_no_arguments_match_phrase_syntax() { @Test public void test_SyntaxCheckException_when_one_argument_match_phrase_syntax() { - List arguments = List.of(DSL.namedArgument("field", "test")); + List arguments = List.of(DSL.namedArgument("field", + new ReferenceExpression("test", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD))); assertThrows(SyntaxCheckException.class, () -> matchPhraseQuery.build(new MatchPhraseExpression( arguments, matchPhraseWithUnderscoreName))); @@ -124,7 +134,8 @@ public void test_SyntaxCheckException_when_one_argument_match_phrase_syntax() { @Test public void test_SyntaxCheckException_when_invalid_parameter_match_phrase_syntax() { List arguments = List.of( - DSL.namedArgument("field", "test"), + DSL.namedArgument("field", + new ReferenceExpression("test", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "test2"), DSL.namedArgument("unsupported", "3")); Assertions.assertThrows(SemanticCheckException.class, @@ -135,7 +146,8 @@ public void test_SyntaxCheckException_when_invalid_parameter_match_phrase_syntax @Test public void test_analyzer_parameter_match_phrase_syntax() { List arguments = List.of( - DSL.namedArgument("field", "t1"), + DSL.namedArgument("field", + new ReferenceExpression("t1", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "t2"), DSL.namedArgument("analyzer", "standard") ); @@ -146,7 +158,8 @@ public void test_analyzer_parameter_match_phrase_syntax() { @Test public void build_succeeds_with_two_arguments_match_phrase_syntax() { List arguments = List.of( - DSL.namedArgument("field", "test"), + DSL.namedArgument("field", + new ReferenceExpression("test", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "test2")); Assertions.assertNotNull(matchPhraseQuery.build(new MatchPhraseExpression( arguments, matchPhraseWithUnderscoreName))); @@ -155,7 +168,8 @@ public void build_succeeds_with_two_arguments_match_phrase_syntax() { @Test public void test_slop_parameter_match_phrase_syntax() { List arguments = List.of( - DSL.namedArgument("field", "t1"), + DSL.namedArgument("field", + new ReferenceExpression("t1", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "t2"), DSL.namedArgument("slop", "2") ); @@ -166,7 +180,8 @@ public void test_slop_parameter_match_phrase_syntax() { @Test public void test_zero_terms_query_parameter_match_phrase_syntax() { List arguments = List.of( - DSL.namedArgument("field", "t1"), + DSL.namedArgument("field", + new ReferenceExpression("t1", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "t2"), DSL.namedArgument("zero_terms_query", "ALL") ); @@ -177,7 +192,8 @@ public void test_zero_terms_query_parameter_match_phrase_syntax() { @Test public void test_zero_terms_query_parameter_lower_case_match_phrase_syntax() { List arguments = List.of( - DSL.namedArgument("field", "t1"), + DSL.namedArgument("field", + new ReferenceExpression("t1", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "t2"), DSL.namedArgument("zero_terms_query", "all") ); @@ -195,7 +211,8 @@ public void test_SyntaxCheckException_when_no_arguments_matchphrase_syntax() { @Test public void test_SyntaxCheckException_when_one_argument_matchphrase_syntax() { - List arguments = List.of(DSL.namedArgument("field", "test")); + List arguments = List.of(DSL.namedArgument("field", + new ReferenceExpression("test", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD))); assertThrows(SyntaxCheckException.class, () -> matchPhraseQuery.build(new MatchPhraseExpression( arguments, matchPhraseQueryName))); @@ -205,7 +222,8 @@ public void test_SyntaxCheckException_when_one_argument_matchphrase_syntax() { @Test public void test_SyntaxCheckException_when_invalid_parameter_matchphrase_syntax() { List arguments = List.of( - DSL.namedArgument("field", "test"), + DSL.namedArgument("field", + new ReferenceExpression("test", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "test2"), DSL.namedArgument("unsupported", "3")); Assertions.assertThrows(SemanticCheckException.class, @@ -216,7 +234,8 @@ public void test_SyntaxCheckException_when_invalid_parameter_matchphrase_syntax( @Test public void test_analyzer_parameter_matchphrase_syntax() { List arguments = List.of( - DSL.namedArgument("field", "t1"), + DSL.namedArgument("field", + new ReferenceExpression("t1", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "t2"), DSL.namedArgument("analyzer", "standard") ); @@ -227,7 +246,8 @@ public void test_analyzer_parameter_matchphrase_syntax() { @Test public void build_succeeds_with_two_arguments_matchphrase_syntax() { List arguments = List.of( - DSL.namedArgument("field", "test"), + DSL.namedArgument("field", + new ReferenceExpression("test", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "test2")); Assertions.assertNotNull(matchPhraseQuery.build(new MatchPhraseExpression( arguments, matchPhraseQueryName))); @@ -236,7 +256,8 @@ public void build_succeeds_with_two_arguments_matchphrase_syntax() { @Test public void test_slop_parameter_matchphrase_syntax() { List arguments = List.of( - DSL.namedArgument("field", "t1"), + DSL.namedArgument("field", + new ReferenceExpression("t1", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "t2"), DSL.namedArgument("slop", "2") ); @@ -247,7 +268,8 @@ public void test_slop_parameter_matchphrase_syntax() { @Test public void test_zero_terms_query_parameter_matchphrase_syntax() { List arguments = List.of( - DSL.namedArgument("field", "t1"), + DSL.namedArgument("field", + new ReferenceExpression("t1", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "t2"), DSL.namedArgument("zero_terms_query", "ALL") ); @@ -258,7 +280,8 @@ public void test_zero_terms_query_parameter_matchphrase_syntax() { @Test public void test_zero_terms_query_parameter_lower_case_matchphrase_syntax() { List arguments = List.of( - DSL.namedArgument("field", "t1"), + DSL.namedArgument("field", + new ReferenceExpression("t1", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", "t2"), DSL.namedArgument("zero_terms_query", "all") ); diff --git a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/MatchQueryTest.java b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/MatchQueryTest.java index e18b477745..f7d1f1aa9a 100644 --- a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/MatchQueryTest.java +++ b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/MatchQueryTest.java @@ -23,8 +23,10 @@ import org.opensearch.sql.expression.Expression; import org.opensearch.sql.expression.FunctionExpression; import org.opensearch.sql.expression.NamedArgumentExpression; +import org.opensearch.sql.expression.ReferenceExpression; import org.opensearch.sql.expression.env.Environment; import org.opensearch.sql.expression.function.FunctionName; +import org.opensearch.sql.opensearch.data.type.OpenSearchDataType; import org.opensearch.sql.opensearch.storage.script.filter.lucene.relevance.MatchQuery; @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) @@ -39,71 +41,85 @@ public class MatchQueryTest { static Stream> generateValidData() { return Stream.of( List.of( - DSL.namedArgument("field", DSL.literal("field_value")), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", DSL.literal("query_value")) ), List.of( - DSL.namedArgument("field", DSL.literal("field_value")), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", DSL.literal("query_value")), DSL.namedArgument("analyzer", DSL.literal("standard")) ), List.of( - DSL.namedArgument("field", DSL.literal("field_value")), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", DSL.literal("query_value")), DSL.namedArgument("auto_generate_synonyms_phrase_query", DSL.literal("true")) ), List.of( - DSL.namedArgument("field", DSL.literal("field_value")), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", DSL.literal("query_value")), DSL.namedArgument("fuzziness", DSL.literal("AUTO")) ), List.of( - DSL.namedArgument("field", DSL.literal("field_value")), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", DSL.literal("query_value")), DSL.namedArgument("max_expansions", DSL.literal("50")) ), List.of( - DSL.namedArgument("field", DSL.literal("field_value")), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", DSL.literal("query_value")), DSL.namedArgument("prefix_length", DSL.literal("0")) ), List.of( - DSL.namedArgument("field", DSL.literal("field_value")), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", DSL.literal("query_value")), DSL.namedArgument("fuzzy_transpositions", DSL.literal("true")) ), List.of( - DSL.namedArgument("field", DSL.literal("field_value")), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", DSL.literal("query_value")), DSL.namedArgument("fuzzy_rewrite", DSL.literal("constant_score")) ), List.of( - DSL.namedArgument("field", DSL.literal("field_value")), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", DSL.literal("query_value")), DSL.namedArgument("lenient", DSL.literal("false")) ), List.of( - DSL.namedArgument("field", DSL.literal("field_value")), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", DSL.literal("query_value")), DSL.namedArgument("operator", DSL.literal("OR")) ), List.of( - DSL.namedArgument("field", DSL.literal("field_value")), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", DSL.literal("query_value")), DSL.namedArgument("minimum_should_match", DSL.literal("3")) ), List.of( - DSL.namedArgument("field", DSL.literal("field_value")), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", DSL.literal("query_value")), DSL.namedArgument("zero_terms_query", DSL.literal("NONE")) ), List.of( - DSL.namedArgument("field", DSL.literal("field_value")), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", DSL.literal("query_value")), DSL.namedArgument("zero_terms_query", DSL.literal("none")) ), List.of( - DSL.namedArgument("field", DSL.literal("field_value")), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), DSL.namedArgument("query", DSL.literal("query_value")), DSL.namedArgument("boost", DSL.literal("1")) ) @@ -133,7 +149,8 @@ public void test_SyntaxCheckException_when_one_argument() { @Test public void test_SemanticCheckException_when_invalid_parameter() { List arguments = List.of( - namedArgument("field", "field_value"), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), namedArgument("query", "query_value"), namedArgument("unsupported", "unsupported_value")); Assertions.assertThrows(SemanticCheckException.class, @@ -166,7 +183,8 @@ public void test_SyntaxCheckException_when_one_argument_matchquery_syntax() { @Test public void test_SemanticCheckException_when_invalid_parameter_matchquery_syntax() { List arguments = List.of( - namedArgument("field", "field_value"), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), namedArgument("query", "query_value"), namedArgument("unsupported", "unsupported_value")); Assertions.assertThrows(SemanticCheckException.class, @@ -200,7 +218,8 @@ public void test_SyntaxCheckException_when_one_argument_match_query_syntax() { @Test public void test_SemanticCheckException_when_invalid_parameter_match_query_syntax() { List arguments = List.of( - namedArgument("field", "field_value"), + DSL.namedArgument("field", + new ReferenceExpression("field_value", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), namedArgument("query", "query_value"), namedArgument("unsupported", "unsupported_value")); Assertions.assertThrows(SemanticCheckException.class, diff --git a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/WildcardQueryTest.java b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/WildcardQueryTest.java index ce7a39d91a..684036595c 100644 --- a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/WildcardQueryTest.java +++ b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/WildcardQueryTest.java @@ -22,8 +22,10 @@ import org.opensearch.sql.exception.SemanticCheckException; import org.opensearch.sql.expression.Expression; import org.opensearch.sql.expression.FunctionExpression; +import org.opensearch.sql.expression.ReferenceExpression; import org.opensearch.sql.expression.env.Environment; import org.opensearch.sql.expression.function.FunctionName; +import org.opensearch.sql.opensearch.data.type.OpenSearchDataType; import org.opensearch.sql.opensearch.storage.script.filter.lucene.relevance.WildcardQuery; @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) @@ -34,7 +36,8 @@ class WildcardQueryTest { static Stream> generateValidData() { return Stream.of( List.of( - namedArgument("field", "title"), + namedArgument("field", + new ReferenceExpression("title", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), namedArgument("query", "query_value*"), namedArgument("boost", "0.7"), namedArgument("case_insensitive", "false"), @@ -59,7 +62,8 @@ public void test_SyntaxCheckException_when_no_arguments() { @Test public void test_SyntaxCheckException_when_one_argument() { - List arguments = List.of(namedArgument("field", "title")); + List arguments = List.of(namedArgument("field", + new ReferenceExpression("title", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD))); assertThrows(SyntaxCheckException.class, () -> wildcardQueryQuery.build(new WildcardQueryExpression(arguments))); } @@ -67,7 +71,8 @@ public void test_SyntaxCheckException_when_one_argument() { @Test public void test_SemanticCheckException_when_invalid_parameter() { List arguments = List.of( - namedArgument("field", "title"), + namedArgument("field", + new ReferenceExpression("title", OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), namedArgument("query", "query_value*"), namedArgument("unsupported", "unsupported_value")); Assertions.assertThrows(SemanticCheckException.class, diff --git a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/relevance/SingleFieldQueryTest.java b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/relevance/SingleFieldQueryTest.java index b2d650602b..67f22178bc 100644 --- a/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/relevance/SingleFieldQueryTest.java +++ b/opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/relevance/SingleFieldQueryTest.java @@ -19,6 +19,8 @@ import org.opensearch.sql.data.model.ExprValueUtils; import org.opensearch.sql.expression.DSL; import org.opensearch.sql.expression.LiteralExpression; +import org.opensearch.sql.expression.ReferenceExpression; +import org.opensearch.sql.opensearch.data.type.OpenSearchDataType; class SingleFieldQueryTest { SingleFieldQuery query; @@ -35,12 +37,26 @@ void setUp() { } @Test - void createQueryBuilderTest() { + void createQueryBuilderTestTypeTextKeyword() { String sampleQuery = "sample query"; String sampleField = "fieldA"; query.createQueryBuilder(List.of(DSL.namedArgument("field", - new LiteralExpression(ExprValueUtils.stringValue(sampleField))), + new ReferenceExpression(sampleField, OpenSearchDataType.OPENSEARCH_TEXT_KEYWORD)), + DSL.namedArgument("query", + new LiteralExpression(ExprValueUtils.stringValue(sampleQuery))))); + + verify(query).createBuilder(eq(sampleField), + eq(sampleQuery)); + } + + @Test + void createQueryBuilderTestTypeText() { + String sampleQuery = "sample query"; + String sampleField = "fieldA"; + + query.createQueryBuilder(List.of(DSL.namedArgument("field", + new ReferenceExpression(sampleField, OpenSearchDataType.OPENSEARCH_TEXT)), DSL.namedArgument("query", new LiteralExpression(ExprValueUtils.stringValue(sampleQuery))))); diff --git a/ppl/src/main/java/org/opensearch/sql/ppl/parser/AstExpressionBuilder.java b/ppl/src/main/java/org/opensearch/sql/ppl/parser/AstExpressionBuilder.java index d4df4cf7dd..c9823b67f9 100644 --- a/ppl/src/main/java/org/opensearch/sql/ppl/parser/AstExpressionBuilder.java +++ b/ppl/src/main/java/org/opensearch/sql/ppl/parser/AstExpressionBuilder.java @@ -368,7 +368,7 @@ private List singleFieldRelevanceArguments( // to skip environment resolving and function signature resolving ImmutableList.Builder builder = ImmutableList.builder(); builder.add(new UnresolvedArgument("field", - new Literal(StringUtils.unquoteText(ctx.field.getText()), DataType.STRING))); + new QualifiedName(StringUtils.unquoteText(ctx.field.getText())))); builder.add(new UnresolvedArgument("query", new Literal(StringUtils.unquoteText(ctx.query.getText()), DataType.STRING))); ctx.relevanceArg().forEach(v -> builder.add(new UnresolvedArgument( diff --git a/ppl/src/test/java/org/opensearch/sql/ppl/parser/AstExpressionBuilderTest.java b/ppl/src/test/java/org/opensearch/sql/ppl/parser/AstExpressionBuilderTest.java index cd0787695a..aa573449b6 100644 --- a/ppl/src/test/java/org/opensearch/sql/ppl/parser/AstExpressionBuilderTest.java +++ b/ppl/src/test/java/org/opensearch/sql/ppl/parser/AstExpressionBuilderTest.java @@ -729,7 +729,7 @@ public void canBuildMatchRelevanceFunctionWithArguments() { relation("test"), function( "match", - unresolvedArg("field", stringLiteral("message")), + unresolvedArg("field", qualifiedName("message")), unresolvedArg("query", stringLiteral("test query")), unresolvedArg("analyzer", stringLiteral("keyword")) ) diff --git a/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java b/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java index 06de8d7d05..20ed1322e0 100644 --- a/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java +++ b/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java @@ -502,7 +502,7 @@ private List singleFieldRelevanceArguments( // to skip environment resolving and function signature resolving ImmutableList.Builder builder = ImmutableList.builder(); builder.add(new UnresolvedArgument("field", - new Literal(StringUtils.unquoteText(ctx.field.getText()), DataType.STRING))); + new QualifiedName(StringUtils.unquoteText(ctx.field.getText())))); builder.add(new UnresolvedArgument("query", new Literal(StringUtils.unquoteText(ctx.query.getText()), DataType.STRING))); fillRelevanceArgs(ctx.relevanceArg(), builder); diff --git a/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java b/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java index 8b6cca779c..113a828f0e 100644 --- a/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java +++ b/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java @@ -494,7 +494,7 @@ public void filteredDistinctCount() { public void matchPhraseQueryAllParameters() { assertEquals( AstDSL.function("matchphrasequery", - unresolvedArg("field", stringLiteral("test")), + unresolvedArg("field", qualifiedName("test")), unresolvedArg("query", stringLiteral("search query")), unresolvedArg("slop", stringLiteral("3")), unresolvedArg("analyzer", stringLiteral("standard")), @@ -510,7 +510,7 @@ public void matchPhraseQueryAllParameters() { public void matchPhrasePrefixAllParameters() { assertEquals( AstDSL.function("match_phrase_prefix", - unresolvedArg("field", stringLiteral("test")), + unresolvedArg("field", qualifiedName("test")), unresolvedArg("query", stringLiteral("search query")), unresolvedArg("slop", stringLiteral("3")), unresolvedArg("boost", stringLiteral("1.5")), @@ -527,13 +527,13 @@ public void matchPhrasePrefixAllParameters() { @Test public void relevanceMatch() { assertEquals(AstDSL.function("match", - unresolvedArg("field", stringLiteral("message")), + unresolvedArg("field", qualifiedName("message")), unresolvedArg("query", stringLiteral("search query"))), buildExprAst("match('message', 'search query')") ); assertEquals(AstDSL.function("match", - unresolvedArg("field", stringLiteral("message")), + unresolvedArg("field", qualifiedName("message")), unresolvedArg("query", stringLiteral("search query")), unresolvedArg("analyzer", stringLiteral("keyword")), unresolvedArg("operator", stringLiteral("AND"))), @@ -543,13 +543,13 @@ public void relevanceMatch() { @Test public void relevanceMatchQuery() { assertEquals(AstDSL.function("matchquery", - unresolvedArg("field", stringLiteral("message")), + unresolvedArg("field", qualifiedName("message")), unresolvedArg("query", stringLiteral("search query"))), buildExprAst("matchquery('message', 'search query')") ); assertEquals(AstDSL.function("matchquery", - unresolvedArg("field", stringLiteral("message")), + unresolvedArg("field", qualifiedName("message")), unresolvedArg("query", stringLiteral("search query")), unresolvedArg("analyzer", stringLiteral("keyword")), unresolvedArg("operator", stringLiteral("AND"))), @@ -559,13 +559,13 @@ public void relevanceMatchQuery() { @Test public void relevanceMatch_Query() { assertEquals(AstDSL.function("match_query", - unresolvedArg("field", stringLiteral("message")), + unresolvedArg("field", qualifiedName("message")), unresolvedArg("query", stringLiteral("search query"))), buildExprAst("match_query('message', 'search query')") ); assertEquals(AstDSL.function("match_query", - unresolvedArg("field", stringLiteral("message")), + unresolvedArg("field", qualifiedName("message")), unresolvedArg("query", stringLiteral("search query")), unresolvedArg("analyzer", stringLiteral("keyword")), unresolvedArg("operator", stringLiteral("AND"))), @@ -671,7 +671,7 @@ public void relevanceQuery_string() { @Test public void relevanceWildcard_query() { assertEquals(AstDSL.function("wildcard_query", - unresolvedArg("field", stringLiteral("field")), + unresolvedArg("field", qualifiedName("field")), unresolvedArg("query", stringLiteral("search query*")), unresolvedArg("boost", stringLiteral("1.5")), unresolvedArg("case_insensitive", stringLiteral("true")), From 18661b4ed0a6f613ae91b052774751a0ea4f17c7 Mon Sep 17 00:00:00 2001 From: "opensearch-trigger-bot[bot]" <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Date: Thu, 22 Dec 2022 09:04:49 -0800 Subject: [PATCH 21/55] Add table write operator and builder (#1094) (#1171) * Add table write operator and builder Signed-off-by: Chen Dai * Add UT for all new classes Signed-off-by: Chen Dai * Rename child field Signed-off-by: Chen Dai * Add columns field Signed-off-by: Chen Dai * Update javadoc to prepare PR Signed-off-by: Chen Dai Signed-off-by: Chen Dai (cherry picked from commit c494d92c8d4b5e5a45d859c3ce3f3ed92bff5e8b) Co-authored-by: Chen Dai --- .../sql/planner/DefaultImplementor.java | 6 ++ .../sql/planner/logical/LogicalPlanDSL.java | 4 ++ .../logical/LogicalPlanNodeVisitor.java | 9 +++ .../sql/planner/logical/LogicalWrite.java | 42 +++++++++++ .../optimizer/LogicalPlanOptimizer.java | 4 +- .../planner/optimizer/pattern/Patterns.java | 11 +++ .../rule/write/CreateTableWriteBuilder.java | 48 +++++++++++++ .../physical/PhysicalPlanNodeVisitor.java | 5 ++ .../org/opensearch/sql/storage/Table.java | 13 ++++ .../sql/storage/write/TableWriteBuilder.java | 40 +++++++++++ .../sql/storage/write/TableWriteOperator.java | 41 +++++++++++ .../sql/planner/DefaultImplementorTest.java | 15 ++++ .../logical/LogicalPlanNodeVisitorTest.java | 17 +++++ .../optimizer/LogicalPlanOptimizerTest.java | 35 ++++++++++ .../optimizer/pattern/PatternsTest.java | 1 + .../storage/write/TableWriteOperatorTest.java | 70 +++++++++++++++++++ 16 files changed, 360 insertions(+), 1 deletion(-) create mode 100644 core/src/main/java/org/opensearch/sql/planner/logical/LogicalWrite.java create mode 100644 core/src/main/java/org/opensearch/sql/planner/optimizer/rule/write/CreateTableWriteBuilder.java create mode 100644 core/src/main/java/org/opensearch/sql/storage/write/TableWriteBuilder.java create mode 100644 core/src/main/java/org/opensearch/sql/storage/write/TableWriteOperator.java create mode 100644 core/src/test/java/org/opensearch/sql/storage/write/TableWriteOperatorTest.java diff --git a/core/src/main/java/org/opensearch/sql/planner/DefaultImplementor.java b/core/src/main/java/org/opensearch/sql/planner/DefaultImplementor.java index 4a5276418d..4a6d4d8222 100644 --- a/core/src/main/java/org/opensearch/sql/planner/DefaultImplementor.java +++ b/core/src/main/java/org/opensearch/sql/planner/DefaultImplementor.java @@ -35,6 +35,7 @@ import org.opensearch.sql.planner.physical.ValuesOperator; import org.opensearch.sql.planner.physical.WindowOperator; import org.opensearch.sql.storage.read.TableScanBuilder; +import org.opensearch.sql.storage.write.TableWriteBuilder; /** * Default implementor for implementing logical to physical translation. "Default" here means all @@ -129,6 +130,11 @@ public PhysicalPlan visitTableScanBuilder(TableScanBuilder plan, C context) { return plan.build(); } + @Override + public PhysicalPlan visitTableWriteBuilder(TableWriteBuilder plan, C context) { + return plan.build(visitChild(plan, context)); + } + @Override public PhysicalPlan visitRelation(LogicalRelation node, C context) { throw new UnsupportedOperationException("Storage engine is responsible for " diff --git a/core/src/main/java/org/opensearch/sql/planner/logical/LogicalPlanDSL.java b/core/src/main/java/org/opensearch/sql/planner/logical/LogicalPlanDSL.java index b18e099afa..a192966287 100644 --- a/core/src/main/java/org/opensearch/sql/planner/logical/LogicalPlanDSL.java +++ b/core/src/main/java/org/opensearch/sql/planner/logical/LogicalPlanDSL.java @@ -32,6 +32,10 @@ @UtilityClass public class LogicalPlanDSL { + public static LogicalPlan write(LogicalPlan input, Table table, List columns) { + return new LogicalWrite(input, table, columns); + } + public static LogicalPlan aggregation( LogicalPlan input, List aggregatorList, List groupByList) { return new LogicalAggregation(input, aggregatorList, groupByList); diff --git a/core/src/main/java/org/opensearch/sql/planner/logical/LogicalPlanNodeVisitor.java b/core/src/main/java/org/opensearch/sql/planner/logical/LogicalPlanNodeVisitor.java index 0386eb6e2a..9a41072fe7 100644 --- a/core/src/main/java/org/opensearch/sql/planner/logical/LogicalPlanNodeVisitor.java +++ b/core/src/main/java/org/opensearch/sql/planner/logical/LogicalPlanNodeVisitor.java @@ -7,6 +7,7 @@ package org.opensearch.sql.planner.logical; import org.opensearch.sql.storage.read.TableScanBuilder; +import org.opensearch.sql.storage.write.TableWriteBuilder; /** * The visitor of {@link LogicalPlan}. @@ -28,6 +29,14 @@ public R visitTableScanBuilder(TableScanBuilder plan, C context) { return visitNode(plan, context); } + public R visitWrite(LogicalWrite plan, C context) { + return visitNode(plan, context); + } + + public R visitTableWriteBuilder(TableWriteBuilder plan, C context) { + return visitNode(plan, context); + } + public R visitFilter(LogicalFilter plan, C context) { return visitNode(plan, context); } diff --git a/core/src/main/java/org/opensearch/sql/planner/logical/LogicalWrite.java b/core/src/main/java/org/opensearch/sql/planner/logical/LogicalWrite.java new file mode 100644 index 0000000000..496e6009e3 --- /dev/null +++ b/core/src/main/java/org/opensearch/sql/planner/logical/LogicalWrite.java @@ -0,0 +1,42 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.sql.planner.logical; + +import java.util.Collections; +import java.util.List; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.ToString; +import org.opensearch.sql.storage.Table; + +/** + * Logical operator for insert statement. + */ +@EqualsAndHashCode(callSuper = true) +@Getter +@ToString +public class LogicalWrite extends LogicalPlan { + + /** Table that handles the write operation. */ + private final Table table; + + /** Optional column name list specified in insert statement. */ + private final List columns; + + /** + * Construct a logical write with given child node, table and column name list. + */ + public LogicalWrite(LogicalPlan child, Table table, List columns) { + super(Collections.singletonList(child)); + this.table = table; + this.columns = columns; + } + + @Override + public R accept(LogicalPlanNodeVisitor visitor, C context) { + return visitor.visitWrite(this, context); + } +} diff --git a/core/src/main/java/org/opensearch/sql/planner/optimizer/LogicalPlanOptimizer.java b/core/src/main/java/org/opensearch/sql/planner/optimizer/LogicalPlanOptimizer.java index f241e76993..70847b869b 100644 --- a/core/src/main/java/org/opensearch/sql/planner/optimizer/LogicalPlanOptimizer.java +++ b/core/src/main/java/org/opensearch/sql/planner/optimizer/LogicalPlanOptimizer.java @@ -17,6 +17,7 @@ import org.opensearch.sql.planner.optimizer.rule.PushFilterUnderSort; import org.opensearch.sql.planner.optimizer.rule.read.CreateTableScanBuilder; import org.opensearch.sql.planner.optimizer.rule.read.TableScanPushDown; +import org.opensearch.sql.planner.optimizer.rule.write.CreateTableWriteBuilder; /** * {@link LogicalPlan} Optimizer. @@ -55,7 +56,8 @@ public static LogicalPlanOptimizer create() { TableScanPushDown.PUSH_DOWN_SORT, TableScanPushDown.PUSH_DOWN_LIMIT, TableScanPushDown.PUSH_DOWN_HIGHLIGHT, - TableScanPushDown.PUSH_DOWN_PROJECT)); + TableScanPushDown.PUSH_DOWN_PROJECT, + new CreateTableWriteBuilder())); } /** diff --git a/core/src/main/java/org/opensearch/sql/planner/optimizer/pattern/Patterns.java b/core/src/main/java/org/opensearch/sql/planner/optimizer/pattern/Patterns.java index 0ba478594a..856d8df7ea 100644 --- a/core/src/main/java/org/opensearch/sql/planner/optimizer/pattern/Patterns.java +++ b/core/src/main/java/org/opensearch/sql/planner/optimizer/pattern/Patterns.java @@ -20,6 +20,7 @@ import org.opensearch.sql.planner.logical.LogicalProject; import org.opensearch.sql.planner.logical.LogicalRelation; import org.opensearch.sql.planner.logical.LogicalSort; +import org.opensearch.sql.planner.logical.LogicalWrite; import org.opensearch.sql.storage.Table; import org.opensearch.sql.storage.read.TableScanBuilder; @@ -110,4 +111,14 @@ public static Property table() { ? Optional.of(((LogicalRelation) plan).getTable()) : Optional.empty()); } + + /** + * Logical write with table field. + */ + public static Property writeTable() { + return Property.optionalProperty("table", + plan -> plan instanceof LogicalWrite + ? Optional.of(((LogicalWrite) plan).getTable()) + : Optional.empty()); + } } diff --git a/core/src/main/java/org/opensearch/sql/planner/optimizer/rule/write/CreateTableWriteBuilder.java b/core/src/main/java/org/opensearch/sql/planner/optimizer/rule/write/CreateTableWriteBuilder.java new file mode 100644 index 0000000000..4fbf676862 --- /dev/null +++ b/core/src/main/java/org/opensearch/sql/planner/optimizer/rule/write/CreateTableWriteBuilder.java @@ -0,0 +1,48 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.sql.planner.optimizer.rule.write; + +import static org.opensearch.sql.planner.optimizer.pattern.Patterns.writeTable; + +import com.facebook.presto.matching.Capture; +import com.facebook.presto.matching.Captures; +import com.facebook.presto.matching.Pattern; +import lombok.Getter; +import lombok.experimental.Accessors; +import org.opensearch.sql.planner.logical.LogicalPlan; +import org.opensearch.sql.planner.logical.LogicalWrite; +import org.opensearch.sql.planner.optimizer.Rule; +import org.opensearch.sql.storage.Table; +import org.opensearch.sql.storage.write.TableWriteBuilder; + +/** + * Rule that replaces logical write operator with {@link TableWriteBuilder} for later optimization + * and transforming to physical operator. + */ +public class CreateTableWriteBuilder implements Rule { + + /** Capture the table inside matched logical relation operator. */ + private final Capture
capture; + + /** Pattern that matches logical relation operator. */ + @Accessors(fluent = true) + @Getter + private final Pattern pattern; + + /** + * Construct create table write builder rule. + */ + public CreateTableWriteBuilder() { + this.capture = Capture.newCapture(); + this.pattern = Pattern.typeOf(LogicalWrite.class) + .with(writeTable().capturedAs(capture)); + } + + @Override + public LogicalPlan apply(LogicalWrite plan, Captures captures) { + return captures.get(capture).createWriteBuilder(plan); + } +} diff --git a/core/src/main/java/org/opensearch/sql/planner/physical/PhysicalPlanNodeVisitor.java b/core/src/main/java/org/opensearch/sql/planner/physical/PhysicalPlanNodeVisitor.java index 63dd05cc6b..d4bc4a1ea9 100644 --- a/core/src/main/java/org/opensearch/sql/planner/physical/PhysicalPlanNodeVisitor.java +++ b/core/src/main/java/org/opensearch/sql/planner/physical/PhysicalPlanNodeVisitor.java @@ -7,6 +7,7 @@ package org.opensearch.sql.planner.physical; import org.opensearch.sql.storage.TableScanOperator; +import org.opensearch.sql.storage.write.TableWriteOperator; /** * The visitor of {@link PhysicalPlan}. @@ -36,6 +37,10 @@ public R visitTableScan(TableScanOperator node, C context) { return visitNode(node, context); } + public R visitTableWrite(TableWriteOperator node, C context) { + return visitNode(node, context); + } + public R visitProject(ProjectOperator node, C context) { return visitNode(node, context); } diff --git a/core/src/main/java/org/opensearch/sql/storage/Table.java b/core/src/main/java/org/opensearch/sql/storage/Table.java index ae0aaaf17b..496281fa8d 100644 --- a/core/src/main/java/org/opensearch/sql/storage/Table.java +++ b/core/src/main/java/org/opensearch/sql/storage/Table.java @@ -10,8 +10,10 @@ import org.opensearch.sql.data.type.ExprType; import org.opensearch.sql.executor.streaming.StreamingSource; import org.opensearch.sql.planner.logical.LogicalPlan; +import org.opensearch.sql.planner.logical.LogicalWrite; import org.opensearch.sql.planner.physical.PhysicalPlan; import org.opensearch.sql.storage.read.TableScanBuilder; +import org.opensearch.sql.storage.write.TableWriteBuilder; /** * Table. @@ -73,6 +75,17 @@ default TableScanBuilder createScanBuilder() { return null; // TODO: Enforce all subclasses to implement this later } + /* + * Create table write builder for logical to physical transformation. + * + * @param plan logical write plan + * @return table write builder + */ + default TableWriteBuilder createWriteBuilder(LogicalWrite plan) { + throw new UnsupportedOperationException( + "Write operation is not supported on current table"); + } + /** * Translate {@link Table} to {@link StreamingSource} if possible. */ diff --git a/core/src/main/java/org/opensearch/sql/storage/write/TableWriteBuilder.java b/core/src/main/java/org/opensearch/sql/storage/write/TableWriteBuilder.java new file mode 100644 index 0000000000..54dfa5d557 --- /dev/null +++ b/core/src/main/java/org/opensearch/sql/storage/write/TableWriteBuilder.java @@ -0,0 +1,40 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.sql.storage.write; + +import java.util.Collections; +import org.opensearch.sql.planner.logical.LogicalPlan; +import org.opensearch.sql.planner.logical.LogicalPlanNodeVisitor; +import org.opensearch.sql.planner.physical.PhysicalPlan; + +/** + * A {@link TableWriteBuilder} represents transition state between logical planning and physical + * planning for table write operator. The concrete implementation class gets involved in the logical + * optimization through this abstraction and thus transform to specific {@link TableWriteOperator} + * in a certain storage engine. + */ +public abstract class TableWriteBuilder extends LogicalPlan { + + /** + * Construct table write builder with child node. + */ + public TableWriteBuilder(LogicalPlan child) { + super(Collections.singletonList(child)); + } + + /** + * Build table write operator with given child node. + * + * @param child child operator node + * @return table write operator + */ + public abstract TableWriteOperator build(PhysicalPlan child); + + @Override + public R accept(LogicalPlanNodeVisitor visitor, C context) { + return visitor.visitTableWriteBuilder(this, context); + } +} diff --git a/core/src/main/java/org/opensearch/sql/storage/write/TableWriteOperator.java b/core/src/main/java/org/opensearch/sql/storage/write/TableWriteOperator.java new file mode 100644 index 0000000000..92cdc6eb41 --- /dev/null +++ b/core/src/main/java/org/opensearch/sql/storage/write/TableWriteOperator.java @@ -0,0 +1,41 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.sql.storage.write; + +import java.util.Collections; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.opensearch.sql.planner.physical.PhysicalPlan; +import org.opensearch.sql.planner.physical.PhysicalPlanNodeVisitor; + +/** + * {@link TableWriteOperator} is the abstraction for data source to implement different physical + * write operator on a data source. This is also to avoid "polluting" physical plan visitor by + * concrete table scan implementation. + */ +@RequiredArgsConstructor +public abstract class TableWriteOperator extends PhysicalPlan { + + /** Input physical node. */ + protected final PhysicalPlan input; + + @Override + public R accept(PhysicalPlanNodeVisitor visitor, C context) { + return visitor.visitTableWrite(this, context); + } + + @Override + public List getChild() { + return Collections.singletonList(input); + } + + /** + * Explain the execution plan. + * + * @return explain output + */ + public abstract String explain(); +} diff --git a/core/src/test/java/org/opensearch/sql/planner/DefaultImplementorTest.java b/core/src/test/java/org/opensearch/sql/planner/DefaultImplementorTest.java index 2322e4684e..017cfb60ea 100644 --- a/core/src/test/java/org/opensearch/sql/planner/DefaultImplementorTest.java +++ b/core/src/test/java/org/opensearch/sql/planner/DefaultImplementorTest.java @@ -58,6 +58,8 @@ import org.opensearch.sql.storage.Table; import org.opensearch.sql.storage.TableScanOperator; import org.opensearch.sql.storage.read.TableScanBuilder; +import org.opensearch.sql.storage.write.TableWriteBuilder; +import org.opensearch.sql.storage.write.TableWriteOperator; @ExtendWith(MockitoExtension.class) class DefaultImplementorTest { @@ -212,4 +214,17 @@ public TableScanOperator build() { }; assertEquals(tableScanOperator, tableScanBuilder.accept(implementor, null)); } + + @Test + public void visitTableWriteBuilderShouldBuildTableWriteOperator() { + LogicalPlan child = values(); + TableWriteOperator tableWriteOperator = Mockito.mock(TableWriteOperator.class); + TableWriteBuilder logicalPlan = new TableWriteBuilder(child) { + @Override + public TableWriteOperator build(PhysicalPlan child) { + return tableWriteOperator; + } + }; + assertEquals(tableWriteOperator, logicalPlan.accept(implementor, null)); + } } diff --git a/core/src/test/java/org/opensearch/sql/planner/logical/LogicalPlanNodeVisitorTest.java b/core/src/test/java/org/opensearch/sql/planner/logical/LogicalPlanNodeVisitorTest.java index 33c6b02c38..341bcbc29e 100644 --- a/core/src/test/java/org/opensearch/sql/planner/logical/LogicalPlanNodeVisitorTest.java +++ b/core/src/test/java/org/opensearch/sql/planner/logical/LogicalPlanNodeVisitorTest.java @@ -12,6 +12,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.stream.Collectors; @@ -31,9 +32,12 @@ import org.opensearch.sql.expression.ReferenceExpression; import org.opensearch.sql.expression.aggregation.Aggregator; import org.opensearch.sql.expression.window.WindowDefinition; +import org.opensearch.sql.planner.physical.PhysicalPlan; import org.opensearch.sql.storage.Table; import org.opensearch.sql.storage.TableScanOperator; import org.opensearch.sql.storage.read.TableScanBuilder; +import org.opensearch.sql.storage.write.TableWriteBuilder; +import org.opensearch.sql.storage.write.TableWriteOperator; /** * Todo. Temporary added for UT coverage, Will be removed. @@ -83,6 +87,19 @@ public TableScanOperator build() { assertNull(tableScanBuilder.accept(new LogicalPlanNodeVisitor() { }, null)); + LogicalPlan write = LogicalPlanDSL.write(null, table, Collections.emptyList()); + assertNull(write.accept(new LogicalPlanNodeVisitor() { + }, null)); + + TableWriteBuilder tableWriteBuilder = new TableWriteBuilder(null) { + @Override + public TableWriteOperator build(PhysicalPlan child) { + return null; + } + }; + assertNull(tableWriteBuilder.accept(new LogicalPlanNodeVisitor() { + }, null)); + LogicalPlan filter = LogicalPlanDSL.filter(relation, expression); assertNull(filter.accept(new LogicalPlanNodeVisitor() { }, null)); diff --git a/core/src/test/java/org/opensearch/sql/planner/optimizer/LogicalPlanOptimizerTest.java b/core/src/test/java/org/opensearch/sql/planner/optimizer/LogicalPlanOptimizerTest.java index e2510ec464..7516aa1809 100644 --- a/core/src/test/java/org/opensearch/sql/planner/optimizer/LogicalPlanOptimizerTest.java +++ b/core/src/test/java/org/opensearch/sql/planner/optimizer/LogicalPlanOptimizerTest.java @@ -7,6 +7,7 @@ package org.opensearch.sql.planner.optimizer; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import static org.opensearch.sql.data.model.ExprValueUtils.integerValue; @@ -20,6 +21,8 @@ import static org.opensearch.sql.planner.logical.LogicalPlanDSL.project; import static org.opensearch.sql.planner.logical.LogicalPlanDSL.relation; import static org.opensearch.sql.planner.logical.LogicalPlanDSL.sort; +import static org.opensearch.sql.planner.logical.LogicalPlanDSL.values; +import static org.opensearch.sql.planner.logical.LogicalPlanDSL.write; import com.google.common.collect.ImmutableList; import java.util.Collections; @@ -39,6 +42,7 @@ import org.opensearch.sql.planner.physical.PhysicalPlan; import org.opensearch.sql.storage.Table; import org.opensearch.sql.storage.read.TableScanBuilder; +import org.opensearch.sql.storage.write.TableWriteBuilder; @ExtendWith(MockitoExtension.class) class LogicalPlanOptimizerTest { @@ -270,6 +274,37 @@ public PhysicalPlan implement(LogicalPlan plan) { ); } + @Test + void table_support_write_builder_should_be_replaced() { + Mockito.reset(table, tableScanBuilder); + TableWriteBuilder writeBuilder = Mockito.mock(TableWriteBuilder.class); + when(table.createWriteBuilder(any())).thenReturn(writeBuilder); + + assertEquals( + writeBuilder, + optimize(write(values(), table, Collections.emptyList())) + ); + } + + @Test + void table_not_support_write_builder_should_report_error() { + Mockito.reset(table, tableScanBuilder); + Table table = new Table() { + @Override + public Map getFieldTypes() { + return null; + } + + @Override + public PhysicalPlan implement(LogicalPlan plan) { + return null; + } + }; + + assertThrows(UnsupportedOperationException.class, + () -> table.createWriteBuilder(null)); + } + private LogicalPlan optimize(LogicalPlan plan) { final LogicalPlanOptimizer optimizer = LogicalPlanOptimizer.create(); final LogicalPlan optimize = optimizer.optimize(plan); diff --git a/core/src/test/java/org/opensearch/sql/planner/optimizer/pattern/PatternsTest.java b/core/src/test/java/org/opensearch/sql/planner/optimizer/pattern/PatternsTest.java index 61d192362a..9f90fd8d05 100644 --- a/core/src/test/java/org/opensearch/sql/planner/optimizer/pattern/PatternsTest.java +++ b/core/src/test/java/org/opensearch/sql/planner/optimizer/pattern/PatternsTest.java @@ -35,5 +35,6 @@ void source_is_empty() { void table_is_empty() { plan = Mockito.mock(LogicalFilter.class); assertFalse(Patterns.table().getFunction().apply(plan).isPresent()); + assertFalse(Patterns.writeTable().getFunction().apply(plan).isPresent()); } } diff --git a/core/src/test/java/org/opensearch/sql/storage/write/TableWriteOperatorTest.java b/core/src/test/java/org/opensearch/sql/storage/write/TableWriteOperatorTest.java new file mode 100644 index 0000000000..8780b08276 --- /dev/null +++ b/core/src/test/java/org/opensearch/sql/storage/write/TableWriteOperatorTest.java @@ -0,0 +1,70 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.sql.storage.write; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.Collections; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.opensearch.sql.data.model.ExprValue; +import org.opensearch.sql.planner.physical.PhysicalPlan; +import org.opensearch.sql.planner.physical.PhysicalPlanNodeVisitor; + +@ExtendWith(MockitoExtension.class) +class TableWriteOperatorTest { + + @Mock + private PhysicalPlan child; + + private TableWriteOperator tableWrite; + + @BeforeEach + void setUp() { + tableWrite = new TableWriteOperator(child) { + @Override + public String explain() { + return "explain"; + } + + @Override + public boolean hasNext() { + return false; + } + + @Override + public ExprValue next() { + return null; + } + }; + } + + @Test + void testAccept() { + Boolean isVisited = tableWrite.accept(new PhysicalPlanNodeVisitor<>() { + @Override + protected Boolean visitNode(PhysicalPlan node, Object context) { + return (node instanceof TableWriteOperator); + } + + @Override + public Boolean visitTableWrite(TableWriteOperator node, Object context) { + return super.visitTableWrite(node, context); + } + }, null); + + assertTrue(isVisited); + } + + @Test + void testGetChild() { + assertEquals(Collections.singletonList(child), tableWrite.getChild()); + } +} \ No newline at end of file From 0a02009acdbe99806869e9d6bf791bf814846827 Mon Sep 17 00:00:00 2001 From: Peng Huo Date: Fri, 23 Dec 2022 09:26:22 -0800 Subject: [PATCH 22/55] Deprecated Spring IoC and using Guice instead (#1177) * Deprecated Spring IoC and using Guice instead Signed-off-by: Peng Huo * fix checkstyle issue Signed-off-by: Peng Huo * Pass injector to action Signed-off-by: Peng Huo * update Signed-off-by: Peng Huo Signed-off-by: Peng Huo --- build.gradle | 1 - core/build.gradle | 3 - .../opensearch/sql/analysis/AnalyzerTest.java | 11 +- .../sql/analysis/AnalyzerTestBase.java | 52 ++------ .../sql/analysis/ExpressionAnalyzerTest.java | 8 -- .../ExpressionReferenceOptimizerTest.java | 7 -- .../analysis/NamedExpressionAnalyzerTest.java | 7 -- .../sql/analysis/QualifierAnalyzerTest.java | 7 -- .../sql/analysis/SelectAnalyzeTest.java | 7 -- .../SelectExpressionAnalyzerTest.java | 6 - .../WindowExpressionAnalyzerTest.java | 10 -- .../org/opensearch/sql/config/TestConfig.java | 7 -- .../sql/executor/QueryServiceTest.java | 2 - .../sql/expression/ExpressionTestBase.java | 18 +-- .../FunctionPropertiesTestConfig.java | 17 --- .../planner/logical/LogicalDedupeTest.java | 7 -- .../sql/planner/logical/LogicalEvalTest.java | 6 - .../sql/planner/logical/LogicalSortTest.java | 7 -- .../physical/PhysicalPlanTestBase.java | 2 - integ-test/build.gradle | 2 +- .../org/opensearch/sql/ppl/StandaloneIT.java | 113 ++++++++++++------ .../opensearch/sql/ppl/StreamingQueryIT.java | 9 +- .../sql/legacy/plugin/RestSQLQueryAction.java | 10 +- .../sql/legacy/plugin/RestSqlAction.java | 12 +- .../legacy/plugin/RestSQLQueryActionTest.java | 35 +++--- plugin/build.gradle | 3 +- .../org/opensearch/sql/plugin/SQLPlugin.java | 40 +++---- .../plugin/config/OpenSearchPluginConfig.java | 108 ----------------- .../plugin/config/OpenSearchPluginModule.java | 103 ++++++++++++++++ .../transport/TransportPPLQueryAction.java | 36 +++--- ppl/build.gradle | 2 - .../sql/ppl/config/PPLServiceConfig.java | 40 ------- .../opensearch/sql/ppl/PPLServiceTest.java | 33 +---- sql/build.gradle | 2 - .../sql/sql/config/SQLServiceConfig.java | 47 -------- .../opensearch/sql/sql/SQLServiceTest.java | 13 +- 36 files changed, 257 insertions(+), 536 deletions(-) delete mode 100644 core/src/test/java/org/opensearch/sql/expression/function/FunctionPropertiesTestConfig.java delete mode 100644 plugin/src/main/java/org/opensearch/sql/plugin/config/OpenSearchPluginConfig.java create mode 100644 plugin/src/main/java/org/opensearch/sql/plugin/config/OpenSearchPluginModule.java delete mode 100644 ppl/src/main/java/org/opensearch/sql/ppl/config/PPLServiceConfig.java delete mode 100644 sql/src/main/java/org/opensearch/sql/sql/config/SQLServiceConfig.java diff --git a/build.gradle b/build.gradle index ca1c091a78..6f227f89b8 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,6 @@ buildscript { ext { opensearch_version = System.getProperty("opensearch.version", "3.0.0-SNAPSHOT") - spring_version = "5.3.22" isSnapshot = "true" == System.getProperty("build.snapshot", "true") buildVersionQualifier = System.getProperty("build.version_qualifier", "") version_tokens = opensearch_version.tokenize('-') diff --git a/core/build.gradle b/core/build.gradle index 0b8ffc422c..791d64df65 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -35,8 +35,6 @@ repositories { dependencies { api group: 'com.google.guava', name: 'guava', version: '31.0.1-jre' - api group: 'org.springframework', name: 'spring-context', version: "${spring_version}" - api group: 'org.springframework', name: 'spring-beans', version: "${spring_version}" api group: 'org.apache.commons', name: 'commons-lang3', version: '3.10' api group: 'com.facebook.presto', name: 'presto-matching', version: '0.240' api group: 'org.apache.commons', name: 'commons-math3', version: '3.6.1' @@ -47,7 +45,6 @@ dependencies { testImplementation('org.junit.jupiter:junit-jupiter:5.6.2') testImplementation group: 'org.hamcrest', name: 'hamcrest-library', version: '2.1' - testImplementation group: 'org.springframework', name: 'spring-test', version: "${spring_version}" testImplementation group: 'org.mockito', name: 'mockito-core', version: '3.12.4' testImplementation group: 'org.mockito', name: 'mockito-junit-jupiter', version: '3.12.4' } diff --git a/core/src/test/java/org/opensearch/sql/analysis/AnalyzerTest.java b/core/src/test/java/org/opensearch/sql/analysis/AnalyzerTest.java index 044949ea35..1db29a6a42 100644 --- a/core/src/test/java/org/opensearch/sql/analysis/AnalyzerTest.java +++ b/core/src/test/java/org/opensearch/sql/analysis/AnalyzerTest.java @@ -65,7 +65,6 @@ import org.apache.commons.lang3.tuple.Pair; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.opensearch.sql.ast.dsl.AstDSL; import org.opensearch.sql.ast.expression.Argument; import org.opensearch.sql.ast.expression.DataType; @@ -89,15 +88,7 @@ import org.opensearch.sql.planner.logical.LogicalProject; import org.opensearch.sql.planner.logical.LogicalRelation; import org.opensearch.sql.planner.physical.datasource.DataSourceTable; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit.jupiter.SpringExtension; - -@Configuration -@ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = {AnalyzerTest.class}) -@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) + class AnalyzerTest extends AnalyzerTestBase { @Test diff --git a/core/src/test/java/org/opensearch/sql/analysis/AnalyzerTestBase.java b/core/src/test/java/org/opensearch/sql/analysis/AnalyzerTestBase.java index c68ba2653e..51c1f06433 100644 --- a/core/src/test/java/org/opensearch/sql/analysis/AnalyzerTestBase.java +++ b/core/src/test/java/org/opensearch/sql/analysis/AnalyzerTestBase.java @@ -13,6 +13,7 @@ import com.google.common.collect.ImmutableSet; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import org.apache.commons.lang3.tuple.Pair; import org.opensearch.sql.analysis.symbol.Namespace; @@ -39,8 +40,6 @@ import org.opensearch.sql.planner.physical.PhysicalPlan; import org.opensearch.sql.storage.StorageEngine; import org.opensearch.sql.storage.Table; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; public class AnalyzerTestBase { @@ -49,14 +48,12 @@ protected Map typeMapping() { return TestConfig.typeMapping; } - @Bean protected StorageEngine storageEngine() { return (dataSourceSchemaName, tableName) -> table; } - @Bean protected Table table() { - return new Table() { + return Optional.ofNullable(table).orElseGet(() -> new Table() { @Override public boolean exists() { return true; @@ -76,31 +73,13 @@ public Map getFieldTypes() { public PhysicalPlan implement(LogicalPlan plan) { throw new UnsupportedOperationException(); } - }; - } - - @Bean - protected Table dataSourceTable() { - return new Table() { - @Override - public Map getFieldTypes() { - return typeMapping(); - } - - @Override - public PhysicalPlan implement(LogicalPlan plan) { - throw new UnsupportedOperationException(); - } - }; + }); } - @Bean protected DataSourceService dataSourceService() { - return new DefaultDataSourceService(); + return Optional.ofNullable(dataSourceService).orElseGet(DefaultDataSourceService::new); } - - @Bean protected SymbolTable symbolTable() { SymbolTable symbolTable = new SymbolTable(); typeMapping().entrySet() @@ -110,7 +89,6 @@ protected SymbolTable symbolTable() { return symbolTable; } - @Bean protected Environment typeEnv() { return var -> { if (var instanceof ReferenceExpression) { @@ -123,25 +101,16 @@ protected Environment typeEnv() { }; } - @Autowired - protected AnalysisContext analysisContext; - - @Autowired - protected ExpressionAnalyzer expressionAnalyzer; + protected AnalysisContext analysisContext = analysisContext(typeEnvironment(symbolTable())); - @Autowired - protected Analyzer analyzer; + protected ExpressionAnalyzer expressionAnalyzer = expressionAnalyzer(); - @Autowired - protected Table table; + protected Table table = table(); - @Autowired - protected DataSourceService dataSourceService; + protected DataSourceService dataSourceService = dataSourceService(); - @Autowired - protected Environment typeEnv; + protected Analyzer analyzer = analyzer(expressionAnalyzer(), dataSourceService, table); - @Bean protected Analyzer analyzer(ExpressionAnalyzer expressionAnalyzer, DataSourceService dataSourceService, Table table) { @@ -167,17 +136,14 @@ public FunctionName getFunctionName() { return new Analyzer(expressionAnalyzer, dataSourceService, functionRepository); } - @Bean protected TypeEnvironment typeEnvironment(SymbolTable symbolTable) { return new TypeEnvironment(null, symbolTable); } - @Bean protected AnalysisContext analysisContext(TypeEnvironment typeEnvironment) { return new AnalysisContext(typeEnvironment); } - @Bean protected ExpressionAnalyzer expressionAnalyzer() { return new ExpressionAnalyzer(BuiltinFunctionRepository.getInstance()); } diff --git a/core/src/test/java/org/opensearch/sql/analysis/ExpressionAnalyzerTest.java b/core/src/test/java/org/opensearch/sql/analysis/ExpressionAnalyzerTest.java index 5a8ae6b8cd..c7a11658e3 100644 --- a/core/src/test/java/org/opensearch/sql/analysis/ExpressionAnalyzerTest.java +++ b/core/src/test/java/org/opensearch/sql/analysis/ExpressionAnalyzerTest.java @@ -31,7 +31,6 @@ import java.util.List; import java.util.Map; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.opensearch.sql.analysis.symbol.Namespace; import org.opensearch.sql.analysis.symbol.Symbol; import org.opensearch.sql.ast.dsl.AstDSL; @@ -48,15 +47,8 @@ import org.opensearch.sql.expression.DSL; import org.opensearch.sql.expression.Expression; import org.opensearch.sql.expression.FunctionExpression; -import org.opensearch.sql.expression.function.FunctionPropertiesTestConfig; import org.opensearch.sql.expression.window.aggregation.AggregateWindowFunction; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit.jupiter.SpringExtension; -@Configuration -@ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = {FunctionPropertiesTestConfig.class, AnalyzerTestBase.class}) class ExpressionAnalyzerTest extends AnalyzerTestBase { @Test diff --git a/core/src/test/java/org/opensearch/sql/analysis/ExpressionReferenceOptimizerTest.java b/core/src/test/java/org/opensearch/sql/analysis/ExpressionReferenceOptimizerTest.java index 287cff0e3a..89d5f699e3 100644 --- a/core/src/test/java/org/opensearch/sql/analysis/ExpressionReferenceOptimizerTest.java +++ b/core/src/test/java/org/opensearch/sql/analysis/ExpressionReferenceOptimizerTest.java @@ -14,20 +14,13 @@ import com.google.common.collect.ImmutableList; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.opensearch.sql.expression.DSL; import org.opensearch.sql.expression.Expression; import org.opensearch.sql.expression.function.BuiltinFunctionRepository; import org.opensearch.sql.expression.window.WindowDefinition; import org.opensearch.sql.planner.logical.LogicalPlan; import org.opensearch.sql.planner.logical.LogicalPlanDSL; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit.jupiter.SpringExtension; -@Configuration -@ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = {AnalyzerTest.class}) class ExpressionReferenceOptimizerTest extends AnalyzerTestBase { @Test diff --git a/core/src/test/java/org/opensearch/sql/analysis/NamedExpressionAnalyzerTest.java b/core/src/test/java/org/opensearch/sql/analysis/NamedExpressionAnalyzerTest.java index 913593add3..e9c891905c 100644 --- a/core/src/test/java/org/opensearch/sql/analysis/NamedExpressionAnalyzerTest.java +++ b/core/src/test/java/org/opensearch/sql/analysis/NamedExpressionAnalyzerTest.java @@ -11,19 +11,12 @@ import java.util.HashMap; import java.util.Map; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.opensearch.sql.ast.dsl.AstDSL; import org.opensearch.sql.ast.expression.Alias; import org.opensearch.sql.ast.expression.HighlightFunction; import org.opensearch.sql.ast.expression.Literal; import org.opensearch.sql.expression.NamedExpression; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit.jupiter.SpringExtension; -@Configuration -@ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = {AnalyzerTestBase.class}) class NamedExpressionAnalyzerTest extends AnalyzerTestBase { @Test void visit_named_select_item() { diff --git a/core/src/test/java/org/opensearch/sql/analysis/QualifierAnalyzerTest.java b/core/src/test/java/org/opensearch/sql/analysis/QualifierAnalyzerTest.java index 8c87b24d3e..5833ef6ae4 100644 --- a/core/src/test/java/org/opensearch/sql/analysis/QualifierAnalyzerTest.java +++ b/core/src/test/java/org/opensearch/sql/analysis/QualifierAnalyzerTest.java @@ -13,18 +13,11 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.opensearch.sql.analysis.symbol.Namespace; import org.opensearch.sql.analysis.symbol.Symbol; import org.opensearch.sql.common.antlr.SyntaxCheckException; import org.opensearch.sql.data.type.ExprType; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit.jupiter.SpringExtension; -@Configuration -@ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = {AnalyzerTestBase.class}) class QualifierAnalyzerTest extends AnalyzerTestBase { private QualifierAnalyzer qualifierAnalyzer; diff --git a/core/src/test/java/org/opensearch/sql/analysis/SelectAnalyzeTest.java b/core/src/test/java/org/opensearch/sql/analysis/SelectAnalyzeTest.java index 82f3a87e30..3bd90f0081 100644 --- a/core/src/test/java/org/opensearch/sql/analysis/SelectAnalyzeTest.java +++ b/core/src/test/java/org/opensearch/sql/analysis/SelectAnalyzeTest.java @@ -17,20 +17,13 @@ import com.google.common.collect.ImmutableMap; import java.util.Map; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.opensearch.sql.ast.dsl.AstDSL; import org.opensearch.sql.ast.expression.AllFields; import org.opensearch.sql.data.type.ExprCoreType; import org.opensearch.sql.data.type.ExprType; import org.opensearch.sql.expression.DSL; import org.opensearch.sql.planner.logical.LogicalPlanDSL; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit.jupiter.SpringExtension; -@Configuration -@ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = {SelectAnalyzeTest.class}) public class SelectAnalyzeTest extends AnalyzerTestBase { @Override diff --git a/core/src/test/java/org/opensearch/sql/analysis/SelectExpressionAnalyzerTest.java b/core/src/test/java/org/opensearch/sql/analysis/SelectExpressionAnalyzerTest.java index a9fb03d2d5..b2fe29b509 100644 --- a/core/src/test/java/org/opensearch/sql/analysis/SelectExpressionAnalyzerTest.java +++ b/core/src/test/java/org/opensearch/sql/analysis/SelectExpressionAnalyzerTest.java @@ -24,14 +24,8 @@ import org.opensearch.sql.ast.expression.UnresolvedExpression; import org.opensearch.sql.expression.DSL; import org.opensearch.sql.expression.NamedExpression; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit.jupiter.SpringExtension; -@Configuration -@ExtendWith(SpringExtension.class) @ExtendWith(MockitoExtension.class) -@ContextConfiguration(classes = {SelectExpressionAnalyzerTest.class}) public class SelectExpressionAnalyzerTest extends AnalyzerTestBase { @Mock diff --git a/core/src/test/java/org/opensearch/sql/analysis/WindowExpressionAnalyzerTest.java b/core/src/test/java/org/opensearch/sql/analysis/WindowExpressionAnalyzerTest.java index cf0a90a436..dd4361ad6a 100644 --- a/core/src/test/java/org/opensearch/sql/analysis/WindowExpressionAnalyzerTest.java +++ b/core/src/test/java/org/opensearch/sql/analysis/WindowExpressionAnalyzerTest.java @@ -21,10 +21,7 @@ import java.util.Collections; import org.apache.commons.lang3.tuple.ImmutablePair; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayNameGeneration; -import org.junit.jupiter.api.DisplayNameGenerator; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.opensearch.sql.ast.dsl.AstDSL; import org.opensearch.sql.ast.expression.Alias; import org.opensearch.sql.ast.tree.Sort.SortOption; @@ -34,14 +31,7 @@ import org.opensearch.sql.planner.logical.LogicalPlanDSL; import org.opensearch.sql.planner.logical.LogicalRelation; import org.opensearch.sql.planner.logical.LogicalSort; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit.jupiter.SpringExtension; -@Configuration -@ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = {SelectExpressionAnalyzerTest.class}) -@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) class WindowExpressionAnalyzerTest extends AnalyzerTestBase { private LogicalPlan child; diff --git a/core/src/test/java/org/opensearch/sql/config/TestConfig.java b/core/src/test/java/org/opensearch/sql/config/TestConfig.java index 4159ae12ff..74dde6c2e9 100644 --- a/core/src/test/java/org/opensearch/sql/config/TestConfig.java +++ b/core/src/test/java/org/opensearch/sql/config/TestConfig.java @@ -22,13 +22,10 @@ import org.opensearch.sql.planner.physical.PhysicalPlan; import org.opensearch.sql.storage.StorageEngine; import org.opensearch.sql.storage.Table; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; /** * Configuration will be used for UT. */ -@Configuration public class TestConfig { public static final String INT_TYPE_NULL_VALUE_FIELD = "int_null_value"; public static final String INT_TYPE_MISSING_VALUE_FIELD = "int_missing_value"; @@ -61,7 +58,6 @@ public class TestConfig { .put("field_value2", ExprCoreType.STRING) .build(); - @Bean protected StorageEngine storageEngine() { return new StorageEngine() { @Override @@ -91,8 +87,6 @@ public PhysicalPlan implement(LogicalPlan plan) { }; } - - @Bean protected SymbolTable symbolTable() { SymbolTable symbolTable = new SymbolTable(); typeMapping.entrySet() @@ -102,7 +96,6 @@ protected SymbolTable symbolTable() { return symbolTable; } - @Bean protected Environment typeEnv() { return var -> { if (var instanceof ReferenceExpression) { diff --git a/core/src/test/java/org/opensearch/sql/executor/QueryServiceTest.java b/core/src/test/java/org/opensearch/sql/executor/QueryServiceTest.java index 431efd9fb4..4df38027f4 100644 --- a/core/src/test/java/org/opensearch/sql/executor/QueryServiceTest.java +++ b/core/src/test/java/org/opensearch/sql/executor/QueryServiceTest.java @@ -32,11 +32,9 @@ import org.opensearch.sql.planner.logical.LogicalPlan; import org.opensearch.sql.planner.physical.PhysicalPlan; import org.opensearch.sql.storage.split.Split; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; @ExtendWith(MockitoExtension.class) class QueryServiceTest { - private AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); private QueryService queryService; diff --git a/core/src/test/java/org/opensearch/sql/expression/ExpressionTestBase.java b/core/src/test/java/org/opensearch/sql/expression/ExpressionTestBase.java index c73bd8ac18..3d735d6762 100644 --- a/core/src/test/java/org/opensearch/sql/expression/ExpressionTestBase.java +++ b/core/src/test/java/org/opensearch/sql/expression/ExpressionTestBase.java @@ -29,33 +29,18 @@ import com.google.common.collect.ImmutableMap; import java.util.List; import java.util.function.Function; -import org.junit.jupiter.api.extension.ExtendWith; -import org.opensearch.sql.config.TestConfig; import org.opensearch.sql.data.model.ExprValue; import org.opensearch.sql.data.type.ExprType; import org.opensearch.sql.expression.env.Environment; import org.opensearch.sql.expression.function.BuiltinFunctionName; import org.opensearch.sql.expression.function.FunctionProperties; -import org.opensearch.sql.expression.function.FunctionPropertiesTestConfig; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit.jupiter.SpringExtension; -@Configuration -@ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = {FunctionPropertiesTestConfig.class, ExpressionTestBase.class, - TestConfig.class}) public class ExpressionTestBase { - @Autowired - protected FunctionProperties functionProperties; + protected FunctionProperties functionProperties = new FunctionProperties(); - @Autowired protected Environment typeEnv; - @Bean protected static Environment valueEnv() { return var -> { if (var instanceof ReferenceExpression) { @@ -95,7 +80,6 @@ protected static Environment valueEnv() { }; } - @Bean protected Environment typeEnv() { return typeEnv; } diff --git a/core/src/test/java/org/opensearch/sql/expression/function/FunctionPropertiesTestConfig.java b/core/src/test/java/org/opensearch/sql/expression/function/FunctionPropertiesTestConfig.java deleted file mode 100644 index dfc9b543ae..0000000000 --- a/core/src/test/java/org/opensearch/sql/expression/function/FunctionPropertiesTestConfig.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -package org.opensearch.sql.expression.function; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Configuration -public class FunctionPropertiesTestConfig { - @Bean - FunctionProperties functionProperties() { - return new FunctionProperties(); - } -} diff --git a/core/src/test/java/org/opensearch/sql/planner/logical/LogicalDedupeTest.java b/core/src/test/java/org/opensearch/sql/planner/logical/LogicalDedupeTest.java index 84cef2cbf3..fe751506ce 100644 --- a/core/src/test/java/org/opensearch/sql/planner/logical/LogicalDedupeTest.java +++ b/core/src/test/java/org/opensearch/sql/planner/logical/LogicalDedupeTest.java @@ -18,16 +18,9 @@ import static org.opensearch.sql.data.type.ExprCoreType.INTEGER; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.opensearch.sql.analysis.AnalyzerTestBase; import org.opensearch.sql.expression.DSL; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit.jupiter.SpringExtension; -@Configuration -@ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = {AnalyzerTestBase.class}) class LogicalDedupeTest extends AnalyzerTestBase { @Test public void analyze_dedup_with_two_field_with_default_option() { diff --git a/core/src/test/java/org/opensearch/sql/planner/logical/LogicalEvalTest.java b/core/src/test/java/org/opensearch/sql/planner/logical/LogicalEvalTest.java index 63429453f9..55bc793045 100644 --- a/core/src/test/java/org/opensearch/sql/planner/logical/LogicalEvalTest.java +++ b/core/src/test/java/org/opensearch/sql/planner/logical/LogicalEvalTest.java @@ -16,13 +16,7 @@ import org.opensearch.sql.analysis.AnalyzerTestBase; import org.opensearch.sql.ast.dsl.AstDSL; import org.opensearch.sql.expression.DSL; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit.jupiter.SpringExtension; -@Configuration -@ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = {AnalyzerTestBase.class}) @ExtendWith(MockitoExtension.class) public class LogicalEvalTest extends AnalyzerTestBase { diff --git a/core/src/test/java/org/opensearch/sql/planner/logical/LogicalSortTest.java b/core/src/test/java/org/opensearch/sql/planner/logical/LogicalSortTest.java index deeda2b82c..1a33795009 100644 --- a/core/src/test/java/org/opensearch/sql/planner/logical/LogicalSortTest.java +++ b/core/src/test/java/org/opensearch/sql/planner/logical/LogicalSortTest.java @@ -19,17 +19,10 @@ import org.apache.commons.lang3.tuple.ImmutablePair; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.opensearch.sql.analysis.AnalyzerTestBase; import org.opensearch.sql.ast.tree.Sort.SortOption; import org.opensearch.sql.expression.DSL; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit.jupiter.SpringExtension; -@Configuration -@ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = {AnalyzerTestBase.class}) class LogicalSortTest extends AnalyzerTestBase { @Test public void analyze_sort_with_two_field_with_default_option() { diff --git a/core/src/test/java/org/opensearch/sql/planner/physical/PhysicalPlanTestBase.java b/core/src/test/java/org/opensearch/sql/planner/physical/PhysicalPlanTestBase.java index 97bf8ebb79..a5bb61f2f7 100644 --- a/core/src/test/java/org/opensearch/sql/planner/physical/PhysicalPlanTestBase.java +++ b/core/src/test/java/org/opensearch/sql/planner/physical/PhysicalPlanTestBase.java @@ -22,7 +22,6 @@ import org.opensearch.sql.expression.Expression; import org.opensearch.sql.expression.ReferenceExpression; import org.opensearch.sql.expression.env.Environment; -import org.springframework.context.annotation.Bean; public class PhysicalPlanTestBase { @@ -183,7 +182,6 @@ public class PhysicalPlanTestBase { "errors", 8))) .build(); - @Bean protected Environment typeEnv() { return var -> { if (var instanceof ReferenceExpression) { diff --git a/integ-test/build.gradle b/integ-test/build.gradle index 961605557a..d4737e58f3 100644 --- a/integ-test/build.gradle +++ b/integ-test/build.gradle @@ -58,7 +58,7 @@ loggerUsageCheck.enabled = false configurations.all { resolutionStrategy.force 'junit:junit:4.13.2' - exclude group: "commons-logging", module: "commons-logging" + resolutionStrategy.force "commons-logging:commons-logging:1.2" // enforce 1.1.3, https://www.whitesourcesoftware.com/vulnerability-database/WS-2019-0379 resolutionStrategy.force 'commons-codec:commons-codec:1.13' resolutionStrategy.force 'com.google.guava:guava:31.0.1-jre' diff --git a/integ-test/src/test/java/org/opensearch/sql/ppl/StandaloneIT.java b/integ-test/src/test/java/org/opensearch/sql/ppl/StandaloneIT.java index 33050e7200..71988a8e31 100644 --- a/integ-test/src/test/java/org/opensearch/sql/ppl/StandaloneIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/ppl/StandaloneIT.java @@ -16,10 +16,16 @@ import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicReference; +import lombok.RequiredArgsConstructor; import org.junit.jupiter.api.Test; import org.opensearch.client.Request; import org.opensearch.client.RestClient; import org.opensearch.client.RestHighLevelClient; +import org.opensearch.common.inject.AbstractModule; +import org.opensearch.common.inject.Injector; +import org.opensearch.common.inject.ModulesBuilder; +import org.opensearch.common.inject.Provides; +import org.opensearch.common.inject.Singleton; import org.opensearch.sql.analysis.Analyzer; import org.opensearch.sql.analysis.ExpressionAnalyzer; import org.opensearch.sql.common.response.ResponseListener; @@ -32,27 +38,27 @@ import org.opensearch.sql.executor.QueryService; import org.opensearch.sql.executor.execution.QueryPlanFactory; import org.opensearch.sql.expression.function.BuiltinFunctionRepository; -import org.opensearch.sql.expression.function.FunctionProperties; import org.opensearch.sql.monitor.AlwaysHealthyMonitor; +import org.opensearch.sql.monitor.ResourceMonitor; import org.opensearch.sql.opensearch.client.OpenSearchClient; import org.opensearch.sql.opensearch.client.OpenSearchRestClient; import org.opensearch.sql.opensearch.executor.OpenSearchExecutionEngine; +import org.opensearch.sql.opensearch.executor.protector.ExecutionProtector; import org.opensearch.sql.opensearch.executor.protector.OpenSearchExecutionProtector; +import org.opensearch.sql.opensearch.security.SecurityAccess; import org.opensearch.sql.opensearch.storage.OpenSearchDataSourceFactory; +import org.opensearch.sql.opensearch.storage.OpenSearchStorageEngine; import org.opensearch.sql.planner.Planner; import org.opensearch.sql.planner.optimizer.LogicalPlanOptimizer; -import org.opensearch.sql.ppl.config.PPLServiceConfig; +import org.opensearch.sql.ppl.antlr.PPLSyntaxParser; import org.opensearch.sql.ppl.domain.PPLQueryRequest; import org.opensearch.sql.protocol.response.QueryResult; import org.opensearch.sql.protocol.response.format.SimpleJsonResponseFormatter; +import org.opensearch.sql.sql.SQLService; +import org.opensearch.sql.sql.antlr.SQLSyntaxParser; import org.opensearch.sql.storage.DataSourceFactory; +import org.opensearch.sql.storage.StorageEngine; import org.opensearch.sql.util.ExecuteOnCallerThreadQueryManager; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.config.ConfigurableBeanFactory; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Scope; /** * Run PPL with query engine outside OpenSearch cluster. This IT doesn't require our plugin @@ -67,27 +73,19 @@ public class StandaloneIT extends PPLIntegTestCase { @Override public void init() { - // Using client() defined in ODFERestTestCase. restClient = new InternalRestHighLevelClient(client()); - OpenSearchClient client = new OpenSearchRestClient(restClient); - AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); - context.registerBean(ExecutionEngine.class, () -> new OpenSearchExecutionEngine(client, - new OpenSearchExecutionProtector(new AlwaysHealthyMonitor()))); - context.registerBean(OpenSearchClient.class, () -> client); - context.registerBean(Settings.class, () -> defaultSettings()); - context.registerBean(FunctionProperties.class, FunctionProperties::new); DataSourceService dataSourceService = new DataSourceServiceImpl( new ImmutableSet.Builder() .add(new OpenSearchDataSourceFactory(client, defaultSettings())) .build()); dataSourceService.addDataSource(defaultOpenSearchDataSourceMetadata()); - context.registerBean(DataSourceService.class, () -> dataSourceService); - context.register(StandaloneConfig.class); - context.register(PPLServiceConfig.class); - context.refresh(); - pplService = context.getBean(PPLService.class); + ModulesBuilder modules = new ModulesBuilder(); + modules.add(new StandaloneModule(new InternalRestHighLevelClient(client()), defaultSettings(), dataSourceService)); + Injector injector = modules.createInjector(); + pplService = + SecurityAccess.doPrivileged(() -> injector.getInstance(PPLService.class)); } @Test @@ -170,27 +168,68 @@ public InternalRestHighLevelClient(RestClient restClient) { } } - @Configuration - static class StandaloneConfig { - @Autowired - private DataSourceService dataSourceService; + @RequiredArgsConstructor + public class StandaloneModule extends AbstractModule { + + private final RestHighLevelClient client; + + private final Settings settings; + + private final DataSourceService dataSourceService; + + private final BuiltinFunctionRepository functionRepository = + BuiltinFunctionRepository.getInstance(); - @Autowired - private ExecutionEngine executionEngine; + @Override + protected void configure() {} - @Bean - QueryManager queryManager() { + @Provides + public OpenSearchClient openSearchClient() { + return new OpenSearchRestClient(client); + } + + @Provides + public StorageEngine storageEngine(OpenSearchClient client) { + return new OpenSearchStorageEngine(client, settings); + } + + @Provides + public ExecutionEngine executionEngine(OpenSearchClient client, ExecutionProtector protector) { + return new OpenSearchExecutionEngine(client, protector); + } + + @Provides + public ResourceMonitor resourceMonitor() { + return new AlwaysHealthyMonitor(); + } + + @Provides + public ExecutionProtector protector(ResourceMonitor resourceMonitor) { + return new OpenSearchExecutionProtector(resourceMonitor); + } + + @Provides + @Singleton + public QueryManager queryManager() { return new ExecuteOnCallerThreadQueryManager(); } - @Bean - @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) - QueryPlanFactory queryExecutionFactory() { - BuiltinFunctionRepository functionRepository = BuiltinFunctionRepository.getInstance(); - Analyzer analyzer = new Analyzer(new ExpressionAnalyzer(functionRepository), - dataSourceService, functionRepository); - Planner planner = - new Planner(LogicalPlanOptimizer.create()); + @Provides + public PPLService pplService(QueryManager queryManager, QueryPlanFactory queryPlanFactory) { + return new PPLService(new PPLSyntaxParser(), queryManager, queryPlanFactory); + } + + @Provides + public SQLService sqlService(QueryManager queryManager, QueryPlanFactory queryPlanFactory) { + return new SQLService(new SQLSyntaxParser(), queryManager, queryPlanFactory); + } + + @Provides + public QueryPlanFactory queryPlanFactory(ExecutionEngine executionEngine) { + Analyzer analyzer = + new Analyzer( + new ExpressionAnalyzer(functionRepository), dataSourceService, functionRepository); + Planner planner = new Planner(LogicalPlanOptimizer.create()); return new QueryPlanFactory(new QueryService(analyzer, executionEngine, planner)); } } diff --git a/integ-test/src/test/java/org/opensearch/sql/ppl/StreamingQueryIT.java b/integ-test/src/test/java/org/opensearch/sql/ppl/StreamingQueryIT.java index 2a00e14d34..50929782c8 100644 --- a/integ-test/src/test/java/org/opensearch/sql/ppl/StreamingQueryIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/ppl/StreamingQueryIT.java @@ -41,7 +41,6 @@ import org.opensearch.sql.planner.Planner; import org.opensearch.sql.planner.optimizer.LogicalPlanOptimizer; import org.opensearch.sql.storage.DataSourceFactory; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; @ThreadLeakFilters(filters = {StreamingQueryIT.HadoopFSThreadsFilter.class}) public class StreamingQueryIT extends PPLIntegTestCase { @@ -111,9 +110,6 @@ void close() throws IOException { } class StreamingQuery { - - final AnnotationConfigApplicationContext context; - final DefaultQueryManager queryManager; final QueryService queryService; @@ -124,15 +120,13 @@ class StreamingQuery { public StreamingQuery(java.nio.file.Path tempDir) { result.set(0); - context = new AnnotationConfigApplicationContext(); - context.refresh(); + DataSourceService dataSourceService = new DataSourceServiceImpl( new ImmutableSet.Builder() .add(new FSDataSourceFactory(tempDir.toUri(), result)) .build()); dataSourceService.addDataSource(fsDataSourceMetadata()); - context.registerBean(DataSourceService.class, () -> dataSourceService); storageEngine = (FSStorageEngine) dataSourceService.getDataSource(DATASOURCE_NAME).getStorageEngine(); final BuiltinFunctionRepository functionRepository = BuiltinFunctionRepository.getInstance(); @@ -175,7 +169,6 @@ void close() throws InterruptedException, IOException { assertTrue(queryManager.cancel(queryId)); storageEngine.close(); - context.close(); queryManager.awaitTermination(5, TimeUnit.SECONDS); } } diff --git a/legacy/src/main/java/org/opensearch/sql/legacy/plugin/RestSQLQueryAction.java b/legacy/src/main/java/org/opensearch/sql/legacy/plugin/RestSQLQueryAction.java index a5a3ac5a4f..bc97f71b47 100644 --- a/legacy/src/main/java/org/opensearch/sql/legacy/plugin/RestSQLQueryAction.java +++ b/legacy/src/main/java/org/opensearch/sql/legacy/plugin/RestSQLQueryAction.java @@ -15,6 +15,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.opensearch.client.node.NodeClient; +import org.opensearch.common.inject.Injector; import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.BytesRestResponse; import org.opensearch.rest.RestChannel; @@ -36,7 +37,6 @@ import org.opensearch.sql.protocol.response.format.ResponseFormatter; import org.opensearch.sql.sql.SQLService; import org.opensearch.sql.sql.domain.SQLQueryRequest; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; /** * New SQL REST action handler. This will not be registered to OpenSearch unless: @@ -49,14 +49,14 @@ public class RestSQLQueryAction extends BaseRestHandler { public static final RestChannelConsumer NOT_SUPPORTED_YET = null; - private final AnnotationConfigApplicationContext applicationContext; + private final Injector injector; /** * Constructor of RestSQLQueryAction. */ - public RestSQLQueryAction(AnnotationConfigApplicationContext applicationContext) { + public RestSQLQueryAction(Injector injector) { super(); - this.applicationContext = applicationContext; + this.injector = injector; } @Override @@ -91,7 +91,7 @@ public RestChannelConsumer prepareRequest( } SQLService sqlService = - SecurityAccess.doPrivileged(() -> applicationContext.getBean(SQLService.class)); + SecurityAccess.doPrivileged(() -> injector.getInstance(SQLService.class)); if (request.isExplainRequest()) { return channel -> diff --git a/legacy/src/main/java/org/opensearch/sql/legacy/plugin/RestSqlAction.java b/legacy/src/main/java/org/opensearch/sql/legacy/plugin/RestSqlAction.java index de09bcee1a..88ed42010b 100644 --- a/legacy/src/main/java/org/opensearch/sql/legacy/plugin/RestSqlAction.java +++ b/legacy/src/main/java/org/opensearch/sql/legacy/plugin/RestSqlAction.java @@ -26,6 +26,7 @@ import org.apache.logging.log4j.Logger; import org.opensearch.client.Client; import org.opensearch.client.node.NodeClient; +import org.opensearch.common.inject.Injector; import org.opensearch.common.settings.Settings; import org.opensearch.index.IndexNotFoundException; import org.opensearch.rest.BaseRestHandler; @@ -62,7 +63,6 @@ import org.opensearch.sql.legacy.utils.JsonPrettyFormatter; import org.opensearch.sql.legacy.utils.QueryDataAnonymizer; import org.opensearch.sql.sql.domain.SQLQueryRequest; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class RestSqlAction extends BaseRestHandler { @@ -87,16 +87,10 @@ public class RestSqlAction extends BaseRestHandler { */ private final RestSQLQueryAction newSqlQueryHandler; - /** - * Application context used to create SQLService for each request. - */ - private final AnnotationConfigApplicationContext applicationContext; - - public RestSqlAction(Settings settings, AnnotationConfigApplicationContext applicationContext) { + public RestSqlAction(Settings settings, Injector injector) { super(); this.allowExplicitIndex = MULTI_ALLOW_EXPLICIT_INDEX.get(settings); - this.newSqlQueryHandler = new RestSQLQueryAction(applicationContext); - this.applicationContext = applicationContext; + this.newSqlQueryHandler = new RestSQLQueryAction(injector); } @Override diff --git a/legacy/src/test/java/org/opensearch/sql/legacy/plugin/RestSQLQueryActionTest.java b/legacy/src/test/java/org/opensearch/sql/legacy/plugin/RestSQLQueryActionTest.java index 3eafbd32d9..1bc34edf50 100644 --- a/legacy/src/test/java/org/opensearch/sql/legacy/plugin/RestSQLQueryActionTest.java +++ b/legacy/src/test/java/org/opensearch/sql/legacy/plugin/RestSQLQueryActionTest.java @@ -23,20 +23,19 @@ import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; import org.opensearch.client.node.NodeClient; +import org.opensearch.common.inject.Injector; +import org.opensearch.common.inject.ModulesBuilder; import org.opensearch.common.util.concurrent.ThreadContext; import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.RestChannel; import org.opensearch.rest.RestRequest; -import org.opensearch.sql.datasource.DataSourceService; import org.opensearch.sql.common.antlr.SyntaxCheckException; -import org.opensearch.sql.executor.ExecutionEngine; import org.opensearch.sql.executor.QueryManager; import org.opensearch.sql.executor.execution.QueryPlanFactory; -import org.opensearch.sql.sql.config.SQLServiceConfig; +import org.opensearch.sql.sql.SQLService; +import org.opensearch.sql.sql.antlr.SQLSyntaxParser; import org.opensearch.sql.sql.domain.SQLQueryRequest; -import org.opensearch.sql.storage.StorageEngine; import org.opensearch.threadpool.ThreadPool; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; @RunWith(MockitoJUnitRunner.class) public class RestSQLQueryActionTest extends BaseRestHandler { @@ -52,25 +51,19 @@ public class RestSQLQueryActionTest extends BaseRestHandler { @Mock private QueryPlanFactory factory; - @Mock - private ExecutionEngine.Schema schema; - @Mock private RestChannel restChannel; - private AnnotationConfigApplicationContext context; + private Injector injector; @Before public void setup() { nodeClient = new NodeClient(org.opensearch.common.settings.Settings.EMPTY, threadPool); - context = new AnnotationConfigApplicationContext(); - context.registerBean(StorageEngine.class, () -> Mockito.mock(StorageEngine.class)); - context.registerBean(ExecutionEngine.class, () -> Mockito.mock(ExecutionEngine.class)); - context.registerBean(DataSourceService.class, () -> Mockito.mock(DataSourceService.class)); - context.registerBean(QueryManager.class, () -> queryManager); - context.registerBean(QueryPlanFactory.class, () -> factory); - context.register(SQLServiceConfig.class); - context.refresh(); + ModulesBuilder modules = new ModulesBuilder(); + modules.add(b -> { + b.bind(SQLService.class).toInstance(new SQLService(new SQLSyntaxParser(), queryManager, factory)); + }); + injector = modules.createInjector(); Mockito.lenient().when(threadPool.getThreadContext()) .thenReturn(new ThreadContext(org.opensearch.common.settings.Settings.EMPTY)); } @@ -83,7 +76,7 @@ public void handleQueryThatCanSupport() throws Exception { QUERY_API_ENDPOINT, ""); - RestSQLQueryAction queryAction = new RestSQLQueryAction(context); + RestSQLQueryAction queryAction = new RestSQLQueryAction(injector); queryAction.prepareRequest(request, (channel, exception) -> { fail(); }, (channel, exception) -> { @@ -99,7 +92,7 @@ public void handleExplainThatCanSupport() throws Exception { EXPLAIN_API_ENDPOINT, ""); - RestSQLQueryAction queryAction = new RestSQLQueryAction(context); + RestSQLQueryAction queryAction = new RestSQLQueryAction(injector); queryAction.prepareRequest(request, (channel, exception) -> { fail(); }, (channel, exception) -> { @@ -117,7 +110,7 @@ public void queryThatNotSupportIsHandledByFallbackHandler() throws Exception { ""); AtomicBoolean fallback = new AtomicBoolean(false); - RestSQLQueryAction queryAction = new RestSQLQueryAction(context); + RestSQLQueryAction queryAction = new RestSQLQueryAction(injector); queryAction.prepareRequest(request, (channel, exception) -> { fallback.set(true); assertTrue(exception instanceof SyntaxCheckException); @@ -142,7 +135,7 @@ public void queryExecutionFailedIsHandledByExecutionErrorHandler() throws Except .submit(any()); AtomicBoolean executionErrorHandler = new AtomicBoolean(false); - RestSQLQueryAction queryAction = new RestSQLQueryAction(context); + RestSQLQueryAction queryAction = new RestSQLQueryAction(injector); queryAction.prepareRequest(request, (channel, exception) -> { assertTrue(exception instanceof SyntaxCheckException); }, (channel, exception) -> { diff --git a/plugin/build.gradle b/plugin/build.gradle index 4097b2c7e5..04f57b0ca6 100644 --- a/plugin/build.gradle +++ b/plugin/build.gradle @@ -83,7 +83,7 @@ thirdPartyAudit.enabled = false configurations.all { resolutionStrategy.force 'junit:junit:4.13.2' // conflict with spring-jcl - exclude group: "commons-logging", module: "commons-logging" + resolutionStrategy.force "commons-logging:commons-logging:1.2" // enforce 2.12.6, https://github.com/opensearch-project/sql/issues/424 resolutionStrategy.force "com.fasterxml.jackson.core:jackson-core:${versions.jackson}" // enforce 1.1.3, https://www.whitesourcesoftware.com/vulnerability-database/WS-2019-0379 @@ -110,7 +110,6 @@ compileTestJava { } dependencies { - api group: 'org.springframework', name: 'spring-beans', version: "${spring_version}" api "com.fasterxml.jackson.core:jackson-core:${versions.jackson}" api "com.fasterxml.jackson.core:jackson-databind:${versions.jackson_databind}" api "com.fasterxml.jackson.core:jackson-annotations:${versions.jackson}" diff --git a/plugin/src/main/java/org/opensearch/sql/plugin/SQLPlugin.java b/plugin/src/main/java/org/opensearch/sql/plugin/SQLPlugin.java index fab14966d8..98826c6f62 100644 --- a/plugin/src/main/java/org/opensearch/sql/plugin/SQLPlugin.java +++ b/plugin/src/main/java/org/opensearch/sql/plugin/SQLPlugin.java @@ -31,6 +31,8 @@ import org.opensearch.cluster.metadata.IndexNameExpressionResolver; import org.opensearch.cluster.node.DiscoveryNodes; import org.opensearch.cluster.service.ClusterService; +import org.opensearch.common.inject.Injector; +import org.opensearch.common.inject.ModulesBuilder; import org.opensearch.common.io.stream.NamedWriteableRegistry; import org.opensearch.common.settings.ClusterSettings; import org.opensearch.common.settings.IndexScopedSettings; @@ -67,7 +69,7 @@ import org.opensearch.sql.opensearch.storage.OpenSearchDataSourceFactory; import org.opensearch.sql.opensearch.storage.script.ExpressionScriptEngine; import org.opensearch.sql.opensearch.storage.serialization.DefaultExpressionSerializer; -import org.opensearch.sql.plugin.config.OpenSearchPluginConfig; +import org.opensearch.sql.plugin.config.OpenSearchPluginModule; import org.opensearch.sql.plugin.datasource.DataSourceSettings; import org.opensearch.sql.plugin.rest.RestPPLQueryAction; import org.opensearch.sql.plugin.rest.RestPPLStatsAction; @@ -75,15 +77,12 @@ import org.opensearch.sql.plugin.transport.PPLQueryAction; import org.opensearch.sql.plugin.transport.TransportPPLQueryAction; import org.opensearch.sql.plugin.transport.TransportPPLQueryResponse; -import org.opensearch.sql.ppl.config.PPLServiceConfig; import org.opensearch.sql.prometheus.storage.PrometheusStorageFactory; -import org.opensearch.sql.sql.config.SQLServiceConfig; import org.opensearch.sql.storage.DataSourceFactory; import org.opensearch.threadpool.ExecutorBuilder; import org.opensearch.threadpool.FixedExecutorBuilder; import org.opensearch.threadpool.ThreadPool; import org.opensearch.watcher.ResourceWatcherService; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class SQLPlugin extends Plugin implements ActionPlugin, ScriptPlugin, ReloadablePlugin { @@ -98,10 +97,10 @@ public class SQLPlugin extends Plugin implements ActionPlugin, ScriptPlugin, Rel private NodeClient client; - private AnnotationConfigApplicationContext applicationContext; - private DataSourceService dataSourceService; + private Injector injector; + public String name() { return "sql"; } @@ -127,7 +126,7 @@ public List getRestHandlers( return Arrays.asList( new RestPPLQueryAction(pluginSettings, settings), - new RestSqlAction(settings, applicationContext), + new RestSqlAction(settings, injector), new RestSqlStatsAction(settings, restController), new RestPPLStatsAction(settings, restController), new RestQuerySettingsAction(settings, restController)); @@ -172,25 +171,16 @@ public Collection createComponents( LocalClusterState.state().setClusterService(clusterService); LocalClusterState.state().setPluginSettings((OpenSearchSettings) pluginSettings); - this.applicationContext = new AnnotationConfigApplicationContext(); - SecurityAccess.doPrivileged( - () -> { - applicationContext.registerBean(ClusterService.class, () -> clusterService); - applicationContext.registerBean(NodeClient.class, () -> (NodeClient) client); - applicationContext.registerBean( - org.opensearch.sql.common.setting.Settings.class, () -> pluginSettings); - applicationContext.registerBean( - DataSourceService.class, () -> dataSourceService); - applicationContext.register(OpenSearchPluginConfig.class); - applicationContext.register(PPLServiceConfig.class); - applicationContext.register(SQLServiceConfig.class); - applicationContext.refresh(); - return null; - }); + ModulesBuilder modules = new ModulesBuilder(); + modules.add(new OpenSearchPluginModule()); + modules.add(b -> { + b.bind(NodeClient.class).toInstance((NodeClient) client); + b.bind(org.opensearch.sql.common.setting.Settings.class).toInstance(pluginSettings); + b.bind(DataSourceService.class).toInstance(dataSourceService); + }); - // return objects used by Guice to inject dependencies for e.g., - // transport action handler constructors - return ImmutableList.of(applicationContext); + injector = modules.createInjector(); + return ImmutableList.of(dataSourceService); } @Override diff --git a/plugin/src/main/java/org/opensearch/sql/plugin/config/OpenSearchPluginConfig.java b/plugin/src/main/java/org/opensearch/sql/plugin/config/OpenSearchPluginConfig.java deleted file mode 100644 index 1a98510aad..0000000000 --- a/plugin/src/main/java/org/opensearch/sql/plugin/config/OpenSearchPluginConfig.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - - -package org.opensearch.sql.plugin.config; - -import org.opensearch.client.node.NodeClient; -import org.opensearch.sql.analysis.Analyzer; -import org.opensearch.sql.analysis.ExpressionAnalyzer; -import org.opensearch.sql.common.setting.Settings; -import org.opensearch.sql.datasource.DataSourceService; -import org.opensearch.sql.executor.ExecutionEngine; -import org.opensearch.sql.executor.QueryManager; -import org.opensearch.sql.executor.QueryService; -import org.opensearch.sql.executor.execution.QueryPlanFactory; -import org.opensearch.sql.expression.function.BuiltinFunctionRepository; -import org.opensearch.sql.monitor.ResourceMonitor; -import org.opensearch.sql.opensearch.client.OpenSearchClient; -import org.opensearch.sql.opensearch.client.OpenSearchNodeClient; -import org.opensearch.sql.opensearch.executor.OpenSearchExecutionEngine; -import org.opensearch.sql.opensearch.executor.OpenSearchQueryManager; -import org.opensearch.sql.opensearch.executor.protector.ExecutionProtector; -import org.opensearch.sql.opensearch.executor.protector.OpenSearchExecutionProtector; -import org.opensearch.sql.opensearch.monitor.OpenSearchMemoryHealthy; -import org.opensearch.sql.opensearch.monitor.OpenSearchResourceMonitor; -import org.opensearch.sql.opensearch.storage.OpenSearchStorageEngine; -import org.opensearch.sql.planner.Planner; -import org.opensearch.sql.planner.optimizer.LogicalPlanOptimizer; -import org.opensearch.sql.storage.StorageEngine; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.config.ConfigurableBeanFactory; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Scope; - -/** - * OpenSearch plugin config that injects cluster service and node client from plugin - * and initialize OpenSearch storage and execution engine. - */ -@Configuration -public class OpenSearchPluginConfig { - - @Autowired - private NodeClient nodeClient; - - @Autowired - private Settings settings; - - @Autowired - private DataSourceService dataSourceService; - - @Bean - @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) - public OpenSearchClient client() { - return new OpenSearchNodeClient(nodeClient); - } - - @Bean - @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) - public StorageEngine storageEngine() { - return new OpenSearchStorageEngine(client(), settings); - } - - @Bean - @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) - public ExecutionEngine executionEngine() { - return new OpenSearchExecutionEngine(client(), protector()); - } - - @Bean - @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) - public ResourceMonitor resourceMonitor() { - return new OpenSearchResourceMonitor(settings, new OpenSearchMemoryHealthy()); - } - - @Bean - @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) - public ExecutionProtector protector() { - return new OpenSearchExecutionProtector(resourceMonitor()); - } - - /** - * Per node singleton object. - */ - @Bean - public QueryManager queryManager() { - return new OpenSearchQueryManager(nodeClient); - } - - /** - * QueryPlanFactory. - */ - @Bean - @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) - public QueryPlanFactory queryExecutionFactory() { - BuiltinFunctionRepository functionRepository = BuiltinFunctionRepository.getInstance(); - Analyzer analyzer = new Analyzer(new ExpressionAnalyzer(functionRepository), - dataSourceService, functionRepository); - Planner planner = - new Planner(LogicalPlanOptimizer.create()); - return new QueryPlanFactory(new QueryService(analyzer, executionEngine(), planner)); - } -} diff --git a/plugin/src/main/java/org/opensearch/sql/plugin/config/OpenSearchPluginModule.java b/plugin/src/main/java/org/opensearch/sql/plugin/config/OpenSearchPluginModule.java new file mode 100644 index 0000000000..5ab4bbaecd --- /dev/null +++ b/plugin/src/main/java/org/opensearch/sql/plugin/config/OpenSearchPluginModule.java @@ -0,0 +1,103 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.sql.plugin.config; + +import lombok.RequiredArgsConstructor; +import org.opensearch.client.node.NodeClient; +import org.opensearch.common.inject.AbstractModule; +import org.opensearch.common.inject.Provides; +import org.opensearch.common.inject.Singleton; +import org.opensearch.sql.analysis.Analyzer; +import org.opensearch.sql.analysis.ExpressionAnalyzer; +import org.opensearch.sql.common.setting.Settings; +import org.opensearch.sql.datasource.DataSourceService; +import org.opensearch.sql.executor.ExecutionEngine; +import org.opensearch.sql.executor.QueryManager; +import org.opensearch.sql.executor.QueryService; +import org.opensearch.sql.executor.execution.QueryPlanFactory; +import org.opensearch.sql.expression.function.BuiltinFunctionRepository; +import org.opensearch.sql.monitor.ResourceMonitor; +import org.opensearch.sql.opensearch.client.OpenSearchClient; +import org.opensearch.sql.opensearch.client.OpenSearchNodeClient; +import org.opensearch.sql.opensearch.executor.OpenSearchExecutionEngine; +import org.opensearch.sql.opensearch.executor.OpenSearchQueryManager; +import org.opensearch.sql.opensearch.executor.protector.ExecutionProtector; +import org.opensearch.sql.opensearch.executor.protector.OpenSearchExecutionProtector; +import org.opensearch.sql.opensearch.monitor.OpenSearchMemoryHealthy; +import org.opensearch.sql.opensearch.monitor.OpenSearchResourceMonitor; +import org.opensearch.sql.opensearch.storage.OpenSearchStorageEngine; +import org.opensearch.sql.planner.Planner; +import org.opensearch.sql.planner.optimizer.LogicalPlanOptimizer; +import org.opensearch.sql.ppl.PPLService; +import org.opensearch.sql.ppl.antlr.PPLSyntaxParser; +import org.opensearch.sql.sql.SQLService; +import org.opensearch.sql.sql.antlr.SQLSyntaxParser; +import org.opensearch.sql.storage.StorageEngine; + +@RequiredArgsConstructor +public class OpenSearchPluginModule extends AbstractModule { + + private final BuiltinFunctionRepository functionRepository = + BuiltinFunctionRepository.getInstance(); + + @Override + protected void configure() { + } + + @Provides + public OpenSearchClient openSearchClient(NodeClient nodeClient) { + return new OpenSearchNodeClient(nodeClient); + } + + @Provides + public StorageEngine storageEngine(OpenSearchClient client, Settings settings) { + return new OpenSearchStorageEngine(client, settings); + } + + @Provides + public ExecutionEngine executionEngine(OpenSearchClient client, ExecutionProtector protector) { + return new OpenSearchExecutionEngine(client, protector); + } + + @Provides + public ResourceMonitor resourceMonitor(Settings settings) { + return new OpenSearchResourceMonitor(settings, new OpenSearchMemoryHealthy()); + } + + @Provides + public ExecutionProtector protector(ResourceMonitor resourceMonitor) { + return new OpenSearchExecutionProtector(resourceMonitor); + } + + @Provides + @Singleton + public QueryManager queryManager(NodeClient nodeClient) { + return new OpenSearchQueryManager(nodeClient); + } + + @Provides + public PPLService pplService(QueryManager queryManager, QueryPlanFactory queryPlanFactory) { + return new PPLService(new PPLSyntaxParser(), queryManager, queryPlanFactory); + } + + @Provides + public SQLService sqlService(QueryManager queryManager, QueryPlanFactory queryPlanFactory) { + return new SQLService(new SQLSyntaxParser(), queryManager, queryPlanFactory); + } + + /** + * {@link QueryPlanFactory}. + */ + @Provides + public QueryPlanFactory queryPlanFactory( + DataSourceService dataSourceService, ExecutionEngine executionEngine) { + Analyzer analyzer = + new Analyzer( + new ExpressionAnalyzer(functionRepository), dataSourceService, functionRepository); + Planner planner = new Planner(LogicalPlanOptimizer.create()); + return new QueryPlanFactory(new QueryService(analyzer, executionEngine, planner)); + } +} diff --git a/plugin/src/main/java/org/opensearch/sql/plugin/transport/TransportPPLQueryAction.java b/plugin/src/main/java/org/opensearch/sql/plugin/transport/TransportPPLQueryAction.java index af57c91e5c..6825b2ac92 100644 --- a/plugin/src/main/java/org/opensearch/sql/plugin/transport/TransportPPLQueryAction.java +++ b/plugin/src/main/java/org/opensearch/sql/plugin/transport/TransportPPLQueryAction.java @@ -16,14 +16,18 @@ import org.opensearch.client.node.NodeClient; import org.opensearch.cluster.service.ClusterService; import org.opensearch.common.inject.Inject; +import org.opensearch.common.inject.Injector; +import org.opensearch.common.inject.ModulesBuilder; import org.opensearch.sql.common.response.ResponseListener; -import org.opensearch.sql.common.setting.Settings; import org.opensearch.sql.common.utils.QueryContext; +import org.opensearch.sql.datasource.DataSourceService; +import org.opensearch.sql.datasource.DataSourceServiceImpl; import org.opensearch.sql.executor.ExecutionEngine; import org.opensearch.sql.legacy.metrics.MetricName; import org.opensearch.sql.legacy.metrics.Metrics; import org.opensearch.sql.opensearch.security.SecurityAccess; import org.opensearch.sql.opensearch.setting.OpenSearchSettings; +import org.opensearch.sql.plugin.config.OpenSearchPluginModule; import org.opensearch.sql.ppl.PPLService; import org.opensearch.sql.ppl.domain.PPLQueryRequest; import org.opensearch.sql.protocol.response.QueryResult; @@ -36,21 +40,12 @@ import org.opensearch.sql.protocol.response.format.VisualizationResponseFormatter; import org.opensearch.tasks.Task; import org.opensearch.transport.TransportService; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; /** Send PPL query transport action. */ public class TransportPPLQueryAction extends HandledTransportAction { - private final NodeClient client; - - /** Cluster service required by bean initialization. */ - private final ClusterService clusterService; - - /** Settings required by been initialization. */ - private final Settings pluginSettings; - - private final AnnotationConfigApplicationContext applicationContext; + private final Injector injector; /** Constructor of TransportPPLQueryAction. */ @Inject @@ -59,12 +54,19 @@ public TransportPPLQueryAction( ActionFilters actionFilters, NodeClient client, ClusterService clusterService, - AnnotationConfigApplicationContext applicationContext) { + DataSourceServiceImpl dataSourceService) { super(PPLQueryAction.NAME, transportService, actionFilters, TransportPPLQueryRequest::new); - this.client = client; - this.clusterService = clusterService; - this.pluginSettings = new OpenSearchSettings(clusterService.getClusterSettings()); - this.applicationContext = applicationContext; + + ModulesBuilder modules = new ModulesBuilder(); + modules.add(new OpenSearchPluginModule()); + modules.add( + b -> { + b.bind(NodeClient.class).toInstance(client); + b.bind(org.opensearch.sql.common.setting.Settings.class) + .toInstance(new OpenSearchSettings(clusterService.getClusterSettings())); + b.bind(DataSourceService.class).toInstance(dataSourceService); + }); + this.injector = modules.createInjector(); } /** @@ -80,7 +82,7 @@ protected void doExecute( QueryContext.addRequestId(); PPLService pplService = - SecurityAccess.doPrivileged(() -> applicationContext.getBean(PPLService.class)); + SecurityAccess.doPrivileged(() -> injector.getInstance(PPLService.class)); TransportPPLQueryRequest transportRequest = TransportPPLQueryRequest.fromActionRequest(request); // in order to use PPL service, we need to convert TransportPPLQueryRequest to PPLQueryRequest PPLQueryRequest transformedRequest = transportRequest.toPPLQueryRequest(); diff --git a/ppl/build.gradle b/ppl/build.gradle index 1c605f4372..9e2ce321a4 100644 --- a/ppl/build.gradle +++ b/ppl/build.gradle @@ -47,8 +47,6 @@ dependencies { implementation "org.antlr:antlr4-runtime:4.7.1" implementation group: 'com.google.guava', name: 'guava', version: '31.0.1-jre' api group: 'org.json', name: 'json', version: '20180813' - implementation group: 'org.springframework', name: 'spring-context', version: "${spring_version}" - implementation group: 'org.springframework', name: 'spring-beans', version: "${spring_version}" implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version:'2.17.1' api project(':common') api project(':core') diff --git a/ppl/src/main/java/org/opensearch/sql/ppl/config/PPLServiceConfig.java b/ppl/src/main/java/org/opensearch/sql/ppl/config/PPLServiceConfig.java deleted file mode 100644 index 1067bbaa6b..0000000000 --- a/ppl/src/main/java/org/opensearch/sql/ppl/config/PPLServiceConfig.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - - -package org.opensearch.sql.ppl.config; - -import org.opensearch.sql.executor.QueryManager; -import org.opensearch.sql.executor.execution.QueryPlanFactory; -import org.opensearch.sql.ppl.PPLService; -import org.opensearch.sql.ppl.antlr.PPLSyntaxParser; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.config.ConfigurableBeanFactory; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Scope; - -@Configuration -public class PPLServiceConfig { - - @Autowired - private QueryManager queryManager; - - @Autowired - private QueryPlanFactory queryPlanFactory; - - /** - * The registration of OpenSearch storage engine happens here because - * OpenSearchStorageEngine is dependent on NodeClient. - * - * @return PPLService. - */ - @Bean - @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) - public PPLService pplService() { - return new PPLService(new PPLSyntaxParser(), queryManager, queryPlanFactory); - } - -} diff --git a/ppl/src/test/java/org/opensearch/sql/ppl/PPLServiceTest.java b/ppl/src/test/java/org/opensearch/sql/ppl/PPLServiceTest.java index a1b1ccaf14..178335a126 100644 --- a/ppl/src/test/java/org/opensearch/sql/ppl/PPLServiceTest.java +++ b/ppl/src/test/java/org/opensearch/sql/ppl/PPLServiceTest.java @@ -19,20 +19,15 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.opensearch.sql.common.response.ResponseListener; -import org.opensearch.sql.datasource.DataSourceService; import org.opensearch.sql.executor.DefaultQueryManager; import org.opensearch.sql.executor.ExecutionEngine; import org.opensearch.sql.executor.ExecutionEngine.ExplainResponse; import org.opensearch.sql.executor.ExecutionEngine.ExplainResponseNode; import org.opensearch.sql.executor.ExecutionEngine.QueryResponse; -import org.opensearch.sql.executor.QueryManager; import org.opensearch.sql.executor.QueryService; import org.opensearch.sql.executor.execution.QueryPlanFactory; -import org.opensearch.sql.expression.function.FunctionProperties; -import org.opensearch.sql.ppl.config.PPLServiceConfig; +import org.opensearch.sql.ppl.antlr.PPLSyntaxParser; import org.opensearch.sql.ppl.domain.PPLQueryRequest; -import org.opensearch.sql.storage.StorageEngine; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; @RunWith(MockitoJUnitRunner.class) public class PPLServiceTest { @@ -41,42 +36,24 @@ public class PPLServiceTest { private static String EXPLAIN = "/_plugins/_ppl/_explain"; - private AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); - private PPLService pplService; - @Mock - private QueryService queryService; - - @Mock - private StorageEngine storageEngine; - - @Mock - private ExecutionEngine executionEngine; + private DefaultQueryManager queryManager; @Mock - private DataSourceService dataSourceService; + private QueryService queryService; @Mock private ExecutionEngine.Schema schema; - private DefaultQueryManager queryManager; - /** * Setup the test context. */ @Before public void setUp() { queryManager = DefaultQueryManager.defaultQueryManager(); - context.registerBean(QueryManager.class, () -> queryManager); - context.registerBean(QueryPlanFactory.class, () -> new QueryPlanFactory(queryService)); - context.registerBean(StorageEngine.class, () -> storageEngine); - context.registerBean(ExecutionEngine.class, () -> executionEngine); - context.registerBean(DataSourceService.class, () -> dataSourceService); - context.registerBean(FunctionProperties.class, FunctionProperties::new); - context.register(PPLServiceConfig.class); - context.refresh(); - pplService = context.getBean(PPLService.class); + pplService = new PPLService(new PPLSyntaxParser(), queryManager, + new QueryPlanFactory(queryService)); } @After diff --git a/sql/build.gradle b/sql/build.gradle index 13a7ceba53..5c85231b77 100644 --- a/sql/build.gradle +++ b/sql/build.gradle @@ -47,8 +47,6 @@ dependencies { implementation "org.antlr:antlr4-runtime:4.7.1" implementation group: 'com.google.guava', name: 'guava', version: '31.0.1-jre' implementation group: 'org.json', name: 'json', version:'20180813' - implementation group: 'org.springframework', name: 'spring-context', version: "${spring_version}" - implementation group: 'org.springframework', name: 'spring-beans', version: "${spring_version}" implementation project(':common') implementation project(':core') api project(':protocol') diff --git a/sql/src/main/java/org/opensearch/sql/sql/config/SQLServiceConfig.java b/sql/src/main/java/org/opensearch/sql/sql/config/SQLServiceConfig.java deleted file mode 100644 index 4287883c34..0000000000 --- a/sql/src/main/java/org/opensearch/sql/sql/config/SQLServiceConfig.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - - -package org.opensearch.sql.sql.config; - -import org.opensearch.sql.executor.QueryManager; -import org.opensearch.sql.executor.execution.QueryPlanFactory; -import org.opensearch.sql.sql.SQLService; -import org.opensearch.sql.sql.antlr.SQLSyntaxParser; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.config.ConfigurableBeanFactory; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Scope; - -/** - * SQL service configuration for Spring container initialization. - */ -@Configuration -public class SQLServiceConfig { - - @Autowired - private QueryManager queryManager; - - @Autowired - private QueryPlanFactory queryExecutionFactory; - - /** - * The registration of OpenSearch storage engine happens here because - * OpenSearchStorageEngine is dependent on NodeClient. - * - * @return SQLService. - */ - @Bean - @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) - public SQLService sqlService() { - return new SQLService( - new SQLSyntaxParser(), - queryManager, - queryExecutionFactory); - } - -} - diff --git a/sql/src/test/java/org/opensearch/sql/sql/SQLServiceTest.java b/sql/src/test/java/org/opensearch/sql/sql/SQLServiceTest.java index 9abe37cd06..a351c30609 100644 --- a/sql/src/test/java/org/opensearch/sql/sql/SQLServiceTest.java +++ b/sql/src/test/java/org/opensearch/sql/sql/SQLServiceTest.java @@ -26,12 +26,10 @@ import org.opensearch.sql.executor.ExecutionEngine; import org.opensearch.sql.executor.ExecutionEngine.ExplainResponse; import org.opensearch.sql.executor.ExecutionEngine.ExplainResponseNode; -import org.opensearch.sql.executor.QueryManager; import org.opensearch.sql.executor.QueryService; import org.opensearch.sql.executor.execution.QueryPlanFactory; -import org.opensearch.sql.sql.config.SQLServiceConfig; +import org.opensearch.sql.sql.antlr.SQLSyntaxParser; import org.opensearch.sql.sql.domain.SQLQueryRequest; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; @ExtendWith(MockitoExtension.class) class SQLServiceTest { @@ -40,8 +38,6 @@ class SQLServiceTest { private static String EXPLAIN = "/_plugins/_sql/_explain"; - private AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); - private SQLService sqlService; private DefaultQueryManager queryManager; @@ -55,11 +51,8 @@ class SQLServiceTest { @BeforeEach public void setUp() { queryManager = DefaultQueryManager.defaultQueryManager(); - context.registerBean(QueryManager.class, () -> queryManager); - context.registerBean(QueryPlanFactory.class, () -> new QueryPlanFactory(queryService)); - context.register(SQLServiceConfig.class); - context.refresh(); - sqlService = context.getBean(SQLService.class); + sqlService = new SQLService(new SQLSyntaxParser(), queryManager, + new QueryPlanFactory(queryService)); } @AfterEach From 91ef34d396d400aec0db5cad6cfdd9e665ddb9d9 Mon Sep 17 00:00:00 2001 From: Chen Dai Date: Fri, 23 Dec 2022 10:01:31 -0800 Subject: [PATCH 23/55] Fix back quoted alias of FROM subquery (#1189) * Unquote from subquery alias Signed-off-by: Chen Dai * Add comparison test case Signed-off-by: Chen Dai * Add more comparison test case Signed-off-by: Chen Dai * Update doc to remove limitations Signed-off-by: Chen Dai Signed-off-by: Chen Dai --- docs/user/limitations/limitations.rst | 17 --------------- .../resources/correctness/bugfixes/550.txt | 2 ++ .../opensearch/sql/sql/parser/AstBuilder.java | 3 ++- .../sql/sql/parser/AstBuilderTest.java | 21 +++++++++++++++++++ 4 files changed, 25 insertions(+), 18 deletions(-) create mode 100644 integ-test/src/test/resources/correctness/bugfixes/550.txt diff --git a/docs/user/limitations/limitations.rst b/docs/user/limitations/limitations.rst index d6e763a73d..8ce75a0e25 100644 --- a/docs/user/limitations/limitations.rst +++ b/docs/user/limitations/limitations.rst @@ -34,23 +34,6 @@ Aggregation over expression is not supported for now. You can only apply aggrega Here's a link to the Github issue - [Issue #288](https://github.com/opendistro-for-elasticsearch/sql/issues/288). -Limitations on Subqueries -========================= - -Subqueries in the FROM clause ------------------------------ - -Subquery in the `FROM` clause in this format: `SELECT outer FROM (SELECT inner)` is supported only when the query is merged into one query. For example, the following query is supported:: - - SELECT t.f, t.d - FROM ( - SELECT FlightNum as f, DestCountry as d - FROM opensearch_dashboards_sample_data_flights - WHERE OriginCountry = 'US') t - -But, if the outer query has `GROUP BY` or `ORDER BY`, then it's not supported. - - Limitations on JOINs ==================== diff --git a/integ-test/src/test/resources/correctness/bugfixes/550.txt b/integ-test/src/test/resources/correctness/bugfixes/550.txt new file mode 100644 index 0000000000..902e3b0d20 --- /dev/null +++ b/integ-test/src/test/resources/correctness/bugfixes/550.txt @@ -0,0 +1,2 @@ +SELECT ABS(`flights`.`AvgTicketPrice`) FROM (SELECT `AvgTicketPrice` FROM `opensearch_dashboards_sample_data_flights`) AS `flights` GROUP BY ABS(`flights`.`AvgTicketPrice`) +SELECT `b`.`Origin`, `b`.`avgPrice` FROM (SELECT `a`.`Origin` AS `Origin`, AVG(`AvgTicketPrice`) AS `avgPrice` FROM (SELECT `Origin`, `AvgTicketPrice` FROM `opensearch_dashboards_sample_data_flights` WHERE `FlightDelay` = True) AS `a` GROUP BY `a`.`Origin`) AS `b` ORDER BY `b`.`avgPrice` DESC diff --git a/sql/src/main/java/org/opensearch/sql/sql/parser/AstBuilder.java b/sql/src/main/java/org/opensearch/sql/sql/parser/AstBuilder.java index 6edce6eb15..02a7f7d1b9 100644 --- a/sql/src/main/java/org/opensearch/sql/sql/parser/AstBuilder.java +++ b/sql/src/main/java/org/opensearch/sql/sql/parser/AstBuilder.java @@ -170,7 +170,8 @@ public UnresolvedPlan visitTableAsRelation(TableAsRelationContext ctx) { @Override public UnresolvedPlan visitSubqueryAsRelation(SubqueryAsRelationContext ctx) { - return new RelationSubquery(visit(ctx.subquery), ctx.alias().getText()); + String subqueryAlias = StringUtils.unquoteIdentifier(ctx.alias().getText()); + return new RelationSubquery(visit(ctx.subquery), subqueryAlias); } @Override diff --git a/sql/src/test/java/org/opensearch/sql/sql/parser/AstBuilderTest.java b/sql/src/test/java/org/opensearch/sql/sql/parser/AstBuilderTest.java index 2aed4f2834..fafb143291 100644 --- a/sql/src/test/java/org/opensearch/sql/sql/parser/AstBuilderTest.java +++ b/sql/src/test/java/org/opensearch/sql/sql/parser/AstBuilderTest.java @@ -518,6 +518,27 @@ public void can_build_from_subquery() { ); } + @Test + public void can_build_from_subquery_with_backquoted_alias() { + assertEquals( + project( + relationSubquery( + project( + relation("test"), + alias("firstname", qualifiedName("firstname"), "firstName")), + "a"), + alias("a.firstName", qualifiedName("a", "firstName")) + ), + buildAST( + "SELECT a.firstName " + + "FROM ( " + + " SELECT `firstname` AS `firstName` " + + " FROM `test` " + + ") AS `a`" + ) + ); + } + @Test public void can_build_show_all_tables() { assertEquals( From 2f4924a9b0a8a120f092c23c303cd908504b1f46 Mon Sep 17 00:00:00 2001 From: Chen Dai Date: Tue, 3 Jan 2023 09:26:36 -0800 Subject: [PATCH 24/55] Allow common keywords and scalar function name used as identifier (#1191) * Allow score, type and scalar function name as identifier Signed-off-by: Chen Dai * Revert score and ignore failed IT Signed-off-by: Chen Dai * Add comparison test to address PR comment Signed-off-by: Chen Dai Signed-off-by: Chen Dai --- .../sql/legacy/AggregationExpressionIT.java | 1 + .../org/opensearch/sql/legacy/JdbcTestIT.java | 1 + .../correctness/queries/aggregation.txt | 3 +- .../antlr/OpenSearchSQLIdentifierParser.g4 | 68 ------------------- sql/src/main/antlr/OpenSearchSQLParser.g4 | 36 +++++++++- .../parser/AstQualifiedNameBuilderTest.java | 4 ++ 6 files changed, 42 insertions(+), 71 deletions(-) delete mode 100644 sql/src/main/antlr/OpenSearchSQLIdentifierParser.g4 diff --git a/integ-test/src/test/java/org/opensearch/sql/legacy/AggregationExpressionIT.java b/integ-test/src/test/java/org/opensearch/sql/legacy/AggregationExpressionIT.java index d4374dcbaf..854a33fc91 100644 --- a/integ-test/src/test/java/org/opensearch/sql/legacy/AggregationExpressionIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/legacy/AggregationExpressionIT.java @@ -121,6 +121,7 @@ public void hasGroupKeyMaxAddLiteralShouldPass() { rows("f", 1)); } + @Ignore("Handled by v2 engine which returns 'name': 'Log(MAX(age) + MIN(age))' instead") @Test public void noGroupKeyLogMaxAddMinShouldPass() { JSONObject response = executeJdbcRequest(String.format( diff --git a/integ-test/src/test/java/org/opensearch/sql/legacy/JdbcTestIT.java b/integ-test/src/test/java/org/opensearch/sql/legacy/JdbcTestIT.java index c50a03f596..bd72877e1c 100644 --- a/integ-test/src/test/java/org/opensearch/sql/legacy/JdbcTestIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/legacy/JdbcTestIT.java @@ -165,6 +165,7 @@ public void functionWithoutAliasShouldHaveEntireFunctionAsNameInSchema() { ); } + @Ignore("Handled by v2 engine which returns 'name': 'substring(lastname, 1, 2)' instead") @Test public void functionWithAliasShouldHaveAliasAsNameInSchema() { assertThat( diff --git a/integ-test/src/test/resources/correctness/queries/aggregation.txt b/integ-test/src/test/resources/correctness/queries/aggregation.txt index 0c0648a937..9b610cb885 100644 --- a/integ-test/src/test/resources/correctness/queries/aggregation.txt +++ b/integ-test/src/test/resources/correctness/queries/aggregation.txt @@ -11,4 +11,5 @@ SELECT VAR_SAMP(AvgTicketPrice) FROM opensearch_dashboards_sample_data_flights SELECT STDDEV_POP(AvgTicketPrice) FROM opensearch_dashboards_sample_data_flights SELECT STDDEV_SAMP(AvgTicketPrice) FROM opensearch_dashboards_sample_data_flights SELECT COUNT(DISTINCT Origin), COUNT(DISTINCT Dest) FROM opensearch_dashboards_sample_data_flights -SELECT COUNT(DISTINCT Origin) FROM (SELECT * FROM opensearch_dashboards_sample_data_flights) AS flights \ No newline at end of file +SELECT COUNT(DISTINCT Origin) FROM (SELECT * FROM opensearch_dashboards_sample_data_flights) AS flights +SELECT LOG(MAX(AvgTicketPrice) + MIN(AvgTicketPrice)) FROM opensearch_dashboards_sample_data_flights \ No newline at end of file diff --git a/sql/src/main/antlr/OpenSearchSQLIdentifierParser.g4 b/sql/src/main/antlr/OpenSearchSQLIdentifierParser.g4 deleted file mode 100644 index cd65e5066c..0000000000 --- a/sql/src/main/antlr/OpenSearchSQLIdentifierParser.g4 +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -/* -MySQL (Positive Technologies) grammar -The MIT License (MIT). -Copyright (c) 2015-2017, Ivan Kochurkin (kvanttt@gmail.com), Positive Technologies. -Copyright (c) 2017, Ivan Khudyashev (IHudyashov@ptsecurity.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -parser grammar OpenSearchSQLIdentifierParser; - -options { tokenVocab=OpenSearchSQLLexer; } - - -// Identifiers - -tableName - : qualifiedName - ; - -columnName - : qualifiedName - ; - -alias - : ident - ; - -qualifiedName - : ident (DOT ident)* - ; - -ident - : DOT? ID - | BACKTICK_QUOTE_ID - | keywordsCanBeId - ; - -keywordsCanBeId - : FULL - | FIELD | D | T | TS // OD SQL and ODBC special - | COUNT | SUM | AVG | MAX | MIN - | TIMESTAMP | DATE | TIME | DAYOFWEEK - | FIRST | LAST - | CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP | LOCALTIME | LOCALTIMESTAMP | UTC_TIMESTAMP | UTC_DATE | UTC_TIME - | CURDATE | CURTIME | NOW - ; diff --git a/sql/src/main/antlr/OpenSearchSQLParser.g4 b/sql/src/main/antlr/OpenSearchSQLParser.g4 index 47a43362ea..217ad9bff6 100644 --- a/sql/src/main/antlr/OpenSearchSQLParser.g4 +++ b/sql/src/main/antlr/OpenSearchSQLParser.g4 @@ -30,8 +30,6 @@ THE SOFTWARE. parser grammar OpenSearchSQLParser; -import OpenSearchSQLIdentifierParser; - options { tokenVocab=OpenSearchSQLLexer; } @@ -561,3 +559,37 @@ alternateMultiMatchField | argName=alternateMultiMatchArgName EQUAL_SYMBOL LT_SQR_PRTHS argVal=relevanceArgValue RT_SQR_PRTHS ; + + +// Identifiers + +tableName + : qualifiedName + ; + +columnName + : qualifiedName + ; + +alias + : ident + ; + +qualifiedName + : ident (DOT ident)* + ; + +ident + : DOT? ID + | BACKTICK_QUOTE_ID + | keywordsCanBeId + | scalarFunctionName + ; + +keywordsCanBeId + : FULL + | FIELD | D | T | TS // OD SQL and ODBC special + | COUNT | SUM | AVG | MAX | MIN + | FIRST | LAST + | TYPE // TODO: Type is keyword required by relevancy function. Remove this when relevancy functions moved out + ; diff --git a/sql/src/test/java/org/opensearch/sql/sql/parser/AstQualifiedNameBuilderTest.java b/sql/src/test/java/org/opensearch/sql/sql/parser/AstQualifiedNameBuilderTest.java index 92b535144f..28665dd7ef 100644 --- a/sql/src/test/java/org/opensearch/sql/sql/parser/AstQualifiedNameBuilderTest.java +++ b/sql/src/test/java/org/opensearch/sql/sql/parser/AstQualifiedNameBuilderTest.java @@ -51,6 +51,10 @@ public void canBuildQualifiedIdentifier() { buildFromQualifiers("account.location.city").expectQualifiedName("account", "location", "city"); } + @Test + public void commonKeywordCanBeUsedAsIdentifier() { + buildFromIdentifier("type").expectQualifiedName("type"); + } @Test public void functionNameCanBeUsedAsIdentifier() { From 771481911f7af1f2d00ef2c4a09021613628454c Mon Sep 17 00:00:00 2001 From: Margarit Hakobyan Date: Tue, 3 Jan 2023 09:49:21 -0800 Subject: [PATCH 25/55] Fix truncate() function (#1197) * Fix truncate() function (#188) Signed-off-by: Margarit Hakobyan Signed-off-by: Margarit Hakobyan --- .../arthmetic/MathematicalFunction.java | 16 ++++----- .../arthmetic/MathematicalFunctionTest.java | 35 ++++++++++--------- .../sql/sql/MathematicalFunctionIT.java | 24 +++++++++++++ 3 files changed, 51 insertions(+), 24 deletions(-) diff --git a/core/src/main/java/org/opensearch/sql/expression/operator/arthmetic/MathematicalFunction.java b/core/src/main/java/org/opensearch/sql/expression/operator/arthmetic/MathematicalFunction.java index 0e4df086fb..4424243860 100644 --- a/core/src/main/java/org/opensearch/sql/expression/operator/arthmetic/MathematicalFunction.java +++ b/core/src/main/java/org/opensearch/sql/expression/operator/arthmetic/MathematicalFunction.java @@ -500,26 +500,26 @@ private static DefaultFunctionResolver truncate() { FunctionDSL.impl( FunctionDSL.nullMissingHandling( (x, y) -> new ExprLongValue( - new BigDecimal(x.integerValue()).setScale(y.integerValue(), - RoundingMode.DOWN).longValue())), + BigDecimal.valueOf(x.integerValue()).setScale(y.integerValue(), + RoundingMode.DOWN).longValue())), LONG, INTEGER, INTEGER), FunctionDSL.impl( FunctionDSL.nullMissingHandling( (x, y) -> new ExprLongValue( - new BigDecimal(x.integerValue()).setScale(y.integerValue(), - RoundingMode.DOWN).longValue())), + BigDecimal.valueOf(x.longValue()).setScale(y.integerValue(), + RoundingMode.DOWN).longValue())), LONG, LONG, INTEGER), FunctionDSL.impl( FunctionDSL.nullMissingHandling( (x, y) -> new ExprDoubleValue( - new BigDecimal(x.floatValue()).setScale(y.integerValue(), - RoundingMode.DOWN).doubleValue())), + BigDecimal.valueOf(x.floatValue()).setScale(y.integerValue(), + RoundingMode.DOWN).doubleValue())), DOUBLE, FLOAT, INTEGER), FunctionDSL.impl( FunctionDSL.nullMissingHandling( (x, y) -> new ExprDoubleValue( - new BigDecimal(x.doubleValue()).setScale(y.integerValue(), - RoundingMode.DOWN).doubleValue())), + BigDecimal.valueOf(x.doubleValue()).setScale(y.integerValue(), + RoundingMode.DOWN).doubleValue())), DOUBLE, DOUBLE, INTEGER)); } diff --git a/core/src/test/java/org/opensearch/sql/expression/operator/arthmetic/MathematicalFunctionTest.java b/core/src/test/java/org/opensearch/sql/expression/operator/arthmetic/MathematicalFunctionTest.java index 3d7cdaeb41..d6d15e9315 100644 --- a/core/src/test/java/org/opensearch/sql/expression/operator/arthmetic/MathematicalFunctionTest.java +++ b/core/src/test/java/org/opensearch/sql/expression/operator/arthmetic/MathematicalFunctionTest.java @@ -192,12 +192,12 @@ public void ceil_int_value(Integer value) { assertThat( ceil.valueOf(valueEnv()), allOf(hasType(INTEGER), hasValue((int) Math.ceil(value)))); - assertEquals(String.format("ceil(%s)", value.toString()), ceil.toString()); + assertEquals(String.format("ceil(%s)", value), ceil.toString()); FunctionExpression ceiling = DSL.ceiling(DSL.literal(value)); assertThat( ceiling.valueOf(valueEnv()), allOf(hasType(INTEGER), hasValue((int) Math.ceil(value)))); - assertEquals(String.format("ceiling(%s)", value.toString()), ceiling.toString()); + assertEquals(String.format("ceiling(%s)", value), ceiling.toString()); } /** @@ -209,12 +209,12 @@ public void ceil_long_value(Long value) { FunctionExpression ceil = DSL.ceil(DSL.literal(value)); assertThat( ceil.valueOf(valueEnv()), allOf(hasType(INTEGER), hasValue((int) Math.ceil(value)))); - assertEquals(String.format("ceil(%s)", value.toString()), ceil.toString()); + assertEquals(String.format("ceil(%s)", value), ceil.toString()); FunctionExpression ceiling = DSL.ceiling(DSL.literal(value)); assertThat( ceiling.valueOf(valueEnv()), allOf(hasType(INTEGER), hasValue((int) Math.ceil(value)))); - assertEquals(String.format("ceiling(%s)", value.toString()), ceiling.toString()); + assertEquals(String.format("ceiling(%s)", value), ceiling.toString()); } /** @@ -226,12 +226,12 @@ public void ceil_float_value(Float value) { FunctionExpression ceil = DSL.ceil(DSL.literal(value)); assertThat( ceil.valueOf(valueEnv()), allOf(hasType(INTEGER), hasValue((int) Math.ceil(value)))); - assertEquals(String.format("ceil(%s)", value.toString()), ceil.toString()); + assertEquals(String.format("ceil(%s)", value), ceil.toString()); FunctionExpression ceiling = DSL.ceiling(DSL.literal(value)); assertThat( ceiling.valueOf(valueEnv()), allOf(hasType(INTEGER), hasValue((int) Math.ceil(value)))); - assertEquals(String.format("ceiling(%s)", value.toString()), ceiling.toString()); + assertEquals(String.format("ceiling(%s)", value), ceiling.toString()); } /** @@ -243,12 +243,12 @@ public void ceil_double_value(Double value) { FunctionExpression ceil = DSL.ceil(DSL.literal(value)); assertThat( ceil.valueOf(valueEnv()), allOf(hasType(INTEGER), hasValue((int) Math.ceil(value)))); - assertEquals(String.format("ceil(%s)", value.toString()), ceil.toString()); + assertEquals(String.format("ceil(%s)", value), ceil.toString()); FunctionExpression ceiling = DSL.ceiling(DSL.literal(value)); assertThat( ceiling.valueOf(valueEnv()), allOf(hasType(INTEGER), hasValue((int) Math.ceil(value)))); - assertEquals(String.format("ceiling(%s)", value.toString()), ceiling.toString()); + assertEquals(String.format("ceiling(%s)", value), ceiling.toString()); } /** @@ -1721,12 +1721,12 @@ public void sqrt_missing_value() { * Test truncate with integer value. */ @ParameterizedTest(name = "truncate({0}, {1})") - @ValueSource(ints = {2, -2}) + @ValueSource(ints = {2, -2, Integer.MAX_VALUE, Integer.MIN_VALUE}) public void truncate_int_value(Integer value) { FunctionExpression truncate = DSL.truncate(DSL.literal(value), DSL.literal(1)); assertThat( truncate.valueOf(valueEnv()), allOf(hasType(LONG), - hasValue(new BigDecimal(value).setScale(1, RoundingMode.DOWN).longValue()))); + hasValue(BigDecimal.valueOf(value).setScale(1, RoundingMode.DOWN).longValue()))); assertEquals(String.format("truncate(%s, 1)", value), truncate.toString()); } @@ -1734,12 +1734,12 @@ public void truncate_int_value(Integer value) { * Test truncate with long value. */ @ParameterizedTest(name = "truncate({0}, {1})") - @ValueSource(longs = {2L, -2L}) + @ValueSource(longs = {2L, -2L, Long.MAX_VALUE, Long.MIN_VALUE}) public void truncate_long_value(Long value) { FunctionExpression truncate = DSL.truncate(DSL.literal(value), DSL.literal(1)); assertThat( truncate.valueOf(valueEnv()), allOf(hasType(LONG), - hasValue(new BigDecimal(value).setScale(1, RoundingMode.DOWN).longValue()))); + hasValue(BigDecimal.valueOf(value).setScale(1, RoundingMode.DOWN).longValue()))); assertEquals(String.format("truncate(%s, 1)", value), truncate.toString()); } @@ -1747,12 +1747,12 @@ public void truncate_long_value(Long value) { * Test truncate with float value. */ @ParameterizedTest(name = "truncate({0}, {1})") - @ValueSource(floats = {2F, -2F}) + @ValueSource(floats = {2F, -2F, Float.MAX_VALUE, Float.MIN_VALUE}) public void truncate_float_value(Float value) { FunctionExpression truncate = DSL.truncate(DSL.literal(value), DSL.literal(1)); assertThat( truncate.valueOf(valueEnv()), allOf(hasType(DOUBLE), - hasValue(new BigDecimal(value).setScale(1, RoundingMode.DOWN).doubleValue()))); + hasValue(BigDecimal.valueOf(value).setScale(1, RoundingMode.DOWN).doubleValue()))); assertEquals(String.format("truncate(%s, 1)", value), truncate.toString()); } @@ -1760,12 +1760,15 @@ public void truncate_float_value(Float value) { * Test truncate with double value. */ @ParameterizedTest(name = "truncate({0}, {1})") - @ValueSource(doubles = {2D, -2D}) + @ValueSource(doubles = {2D, -9.223372036854776e+18D, -2147483649.0D, -2147483648.0D, + -32769.0D, -32768.0D, -34.84D, -2.0D, -1.2D, -1.0D, 0.0D, 1.0D, + 1.3D, 2.0D, 1004.3D, 32767.0D, 32768.0D, 2147483647.0D, 2147483648.0D, + 9.223372036854776e+18D, Double.MAX_VALUE, Double.MIN_VALUE}) public void truncate_double_value(Double value) { FunctionExpression truncate = DSL.truncate(DSL.literal(value), DSL.literal(1)); assertThat( truncate.valueOf(valueEnv()), allOf(hasType(DOUBLE), - hasValue(new BigDecimal(value).setScale(1, RoundingMode.DOWN).doubleValue()))); + hasValue(BigDecimal.valueOf(value).setScale(1, RoundingMode.DOWN).doubleValue()))); assertEquals(String.format("truncate(%s, 1)", value), truncate.toString()); } diff --git a/integ-test/src/test/java/org/opensearch/sql/sql/MathematicalFunctionIT.java b/integ-test/src/test/java/org/opensearch/sql/sql/MathematicalFunctionIT.java index efa16ba9d7..f2d1bb7d28 100644 --- a/integ-test/src/test/java/org/opensearch/sql/sql/MathematicalFunctionIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/sql/MathematicalFunctionIT.java @@ -142,6 +142,30 @@ public void testTruncate() throws IOException { result = executeQuery("select truncate(-56, -1)"); verifySchema(result, schema("truncate(-56, -1)", null, "long")); verifyDataRows(result, rows(-50)); + + result = executeQuery("select truncate(33.33344, -1)"); + verifySchema(result, schema("truncate(33.33344, -1)", null, "double")); + verifyDataRows(result, rows(30.0)); + + result = executeQuery("select truncate(33.33344, 2)"); + verifySchema(result, schema("truncate(33.33344, 2)", null, "double")); + verifyDataRows(result, rows(33.33)); + + result = executeQuery("select truncate(33.33344, 100)"); + verifySchema(result, schema("truncate(33.33344, 100)", null, "double")); + verifyDataRows(result, rows(33.33344)); + + result = executeQuery("select truncate(33.33344, 0)"); + verifySchema(result, schema("truncate(33.33344, 0)", null, "double")); + verifyDataRows(result, rows(33.0)); + + result = executeQuery("select truncate(33.33344, 4)"); + verifySchema(result, schema("truncate(33.33344, 4)", null, "double")); + verifyDataRows(result, rows(33.3334)); + + result = executeQuery(String.format("select truncate(%s, 6)", Math.PI)); + verifySchema(result, schema(String.format("truncate(%s, 6)", Math.PI), null, "double")); + verifyDataRows(result, rows(3.141592)); } @Test From 2c46797d0dc931f3f796d9693bc4866fd4dcac32 Mon Sep 17 00:00:00 2001 From: GabeFernandez310 Date: Tue, 3 Jan 2023 10:07:54 -0800 Subject: [PATCH 26/55] Add Minute_Of_Day Function To SQL Plugin (#1207) Signed-off-by: GabeFernandez310 Signed-off-by: GabeFernandez310 --- .../org/opensearch/sql/expression/DSL.java | 4 + .../expression/datetime/DateTimeFunction.java | 26 +++++++ .../function/BuiltinFunctionName.java | 1 + .../datetime/DateTimeFunctionTest.java | 73 +++++++++++++++++++ docs/user/dql/functions.rst | 22 ++++++ .../sql/sql/DateTimeFunctionIT.java | 24 ++++++ sql/src/main/antlr/OpenSearchSQLParser.g4 | 1 + .../sql/sql/antlr/SQLSyntaxParserTest.java | 8 ++ 8 files changed, 159 insertions(+) diff --git a/core/src/main/java/org/opensearch/sql/expression/DSL.java b/core/src/main/java/org/opensearch/sql/expression/DSL.java index 26a15c0ee4..dfe380b507 100644 --- a/core/src/main/java/org/opensearch/sql/expression/DSL.java +++ b/core/src/main/java/org/opensearch/sql/expression/DSL.java @@ -354,6 +354,10 @@ public static FunctionExpression minute(Expression... expressions) { return compile(FunctionProperties.None, BuiltinFunctionName.MINUTE, expressions); } + public static FunctionExpression minute_of_day(Expression... expressions) { + return compile(FunctionProperties.None, BuiltinFunctionName.MINUTE_OF_DAY, expressions); + } + public static FunctionExpression month(Expression... expressions) { return compile(FunctionProperties.None, BuiltinFunctionName.MONTH, expressions); } diff --git a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java index ed8063d8ff..be3966188f 100644 --- a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java +++ b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java @@ -6,6 +6,7 @@ package org.opensearch.sql.expression.datetime; +import static java.time.temporal.ChronoUnit.MINUTES; import static java.time.temporal.ChronoUnit.MONTHS; import static org.opensearch.sql.data.type.ExprCoreType.DATE; import static org.opensearch.sql.data.type.ExprCoreType.DATETIME; @@ -114,6 +115,7 @@ public void register(BuiltinFunctionRepository repository) { repository.register(maketime()); repository.register(microsecond()); repository.register(minute()); + repository.register(minute_of_day()); repository.register(month(BuiltinFunctionName.MONTH)); repository.register(month(BuiltinFunctionName.MONTH_OF_YEAR)); repository.register(monthName()); @@ -436,6 +438,19 @@ private DefaultFunctionResolver minute() { ); } + /** + * MINUTE(STRING/TIME/DATETIME/TIMESTAMP). return the minute value for time. + */ + private DefaultFunctionResolver minute_of_day() { + return define(BuiltinFunctionName.MINUTE_OF_DAY.getName(), + impl(nullMissingHandling(DateTimeFunction::exprMinuteOfDay), INTEGER, STRING), + impl(nullMissingHandling(DateTimeFunction::exprMinuteOfDay), INTEGER, TIME), + impl(nullMissingHandling(DateTimeFunction::exprMinuteOfDay), INTEGER, DATE), + impl(nullMissingHandling(DateTimeFunction::exprMinuteOfDay), INTEGER, DATETIME), + impl(nullMissingHandling(DateTimeFunction::exprMinuteOfDay), INTEGER, TIMESTAMP) + ); + } + /** * MONTH(STRING/DATE/DATETIME/TIMESTAMP). return the month for date (1-12). */ @@ -933,6 +948,17 @@ private ExprValue exprMinute(ExprValue time) { return new ExprIntegerValue(time.timeValue().getMinute()); } + /** + * Minute_of_day implementation for ExprValue. + * + * @param time ExprValue of Time/String type. + * @return ExprValue. + */ + private ExprValue exprMinuteOfDay(ExprValue time) { + return new ExprIntegerValue( + MINUTES.between(LocalTime.MIN, time.timeValue())); + } + /** * Month for date implementation for ExprValue. * diff --git a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java index 28d423676b..e461419f04 100644 --- a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java +++ b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java @@ -77,6 +77,7 @@ public enum BuiltinFunctionName { MAKETIME(FunctionName.of("maketime")), MICROSECOND(FunctionName.of("microsecond")), MINUTE(FunctionName.of("minute")), + MINUTE_OF_DAY(FunctionName.of("minute_of_day")), MONTH(FunctionName.of("month")), MONTH_OF_YEAR(FunctionName.of("month_of_year")), MONTHNAME(FunctionName.of("monthname")), diff --git a/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java b/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java index 092b64d5d7..29a0843287 100644 --- a/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java +++ b/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java @@ -614,6 +614,37 @@ public void hour() { assertEquals("hour(\"2020-08-17 01:02:03\")", expression.toString()); } + private void testInvalidMinuteOfDay(String date) { + FunctionExpression expression = DSL.minute_of_day(DSL.literal(new ExprDateValue(date))); + eval(expression); + } + + @Test + public void invalidMinuteOfDay() { + lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); + lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); + + assertThrows(SemanticCheckException.class, + () -> testInvalidMinuteOfDay("2022-12-14 12:23:3400")); + assertThrows(SemanticCheckException.class, + () -> testInvalidMinuteOfDay("2022-12-14 12:2300:34")); + assertThrows(SemanticCheckException.class, + () -> testInvalidMinuteOfDay("2022-12-14 1200:23:34")); + assertThrows(SemanticCheckException.class, + () -> testInvalidMinuteOfDay("2022-12-1400 12:23:34")); + assertThrows(SemanticCheckException.class, + () -> testInvalidMinuteOfDay("2022-1200-14 12:23:34")); + assertThrows(SemanticCheckException.class, + () -> testInvalidMinuteOfDay("12:23:3400")); + assertThrows(SemanticCheckException.class, + () -> testInvalidMinuteOfDay("12:2300:34")); + assertThrows(SemanticCheckException.class, + () -> testInvalidMinuteOfDay("1200:23:34")); + assertThrows(SemanticCheckException.class, + () -> testInvalidMinuteOfDay("asdfasdfasdf")); + + } + @Test public void microsecond() { when(nullRef.type()).thenReturn(TIME); @@ -691,6 +722,48 @@ public void minute() { assertEquals("minute(\"2020-08-17 01:02:03\")", expression.toString()); } + private void testMinuteOfDay(String date, int value) { + FunctionExpression expression = DSL.minute_of_day(DSL.literal(new ExprTimeValue(date))); + assertEquals(INTEGER, expression.type()); + assertEquals(integerValue(value), eval(expression)); + } + + @Test + public void minuteOfDay() { + when(nullRef.type()).thenReturn(TIME); + when(missingRef.type()).thenReturn(TIME); + assertEquals(nullValue(), eval(DSL.minute_of_day(nullRef))); + assertEquals(missingValue(), eval(DSL.minute_of_day(missingRef))); + + FunctionExpression expression = DSL.minute_of_day(DSL.literal(new ExprTimeValue("01:02:03"))); + assertEquals(INTEGER, expression.type()); + assertEquals(integerValue(62), eval(expression)); + assertEquals("minute_of_day(TIME '01:02:03')", expression.toString()); + + expression = DSL.minute_of_day(DSL.literal("01:02:03")); + assertEquals(INTEGER, expression.type()); + assertEquals(integerValue(62), eval(expression)); + assertEquals("minute_of_day(\"01:02:03\")", expression.toString()); + + expression = DSL.minute_of_day(DSL.literal(new ExprTimestampValue("2020-08-17 01:02:03"))); + assertEquals(INTEGER, expression.type()); + assertEquals(integerValue(62), expression.valueOf(env)); + assertEquals("minute_of_day(TIMESTAMP '2020-08-17 01:02:03')", expression.toString()); + + expression = DSL.minute_of_day(DSL.literal(new ExprDatetimeValue("2020-08-17 01:02:03"))); + assertEquals(INTEGER, expression.type()); + assertEquals(integerValue(62), expression.valueOf(env)); + assertEquals("minute_of_day(DATETIME '2020-08-17 01:02:03')", expression.toString()); + + expression = DSL.minute_of_day(DSL.literal("2020-08-17 01:02:03")); + assertEquals(INTEGER, expression.type()); + assertEquals(integerValue(62), expression.valueOf(env)); + assertEquals("minute_of_day(\"2020-08-17 01:02:03\")", expression.toString()); + + testMinuteOfDay("2020-08-17 23:59:59", 1439); + testMinuteOfDay("2020-08-17 00:00:01", 0); + } + @Test public void month() { when(nullRef.type()).thenReturn(DATE); diff --git a/docs/user/dql/functions.rst b/docs/user/dql/functions.rst index 733a555c81..6c6e77a24b 100644 --- a/docs/user/dql/functions.rst +++ b/docs/user/dql/functions.rst @@ -1762,6 +1762,28 @@ Example:: | 2 | +-----------------------------+ +MINUTE_OF_DAY +------ + +Description +>>>>>>>>>>> + +Usage: minute_of_day(time) returns the minute value for time within a 24 hour day, in the range 0 to 1439. + +Argument type: STRING/TIME/DATETIME/TIMESTAMP + +Return type: INTEGER + +Example:: + + os> SELECT MINUTE_OF_DAY((TIME '01:02:03')) + fetched rows / total rows = 1/1 + +------------------------------------+ + | MINUTE_OF_DAY((TIME '01:02:03')) | + |------------------------------------| + | 62 | + +------------------------------------+ + MONTH ----- diff --git a/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java b/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java index f60bd1efb0..957275852f 100644 --- a/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java @@ -366,6 +366,30 @@ public void testMinute() throws IOException { verifyDataRows(result, rows(30)); } + + @Test + public void testMinuteOfDay() throws IOException { + JSONObject result = executeQuery("select minute_of_day(timestamp('2020-09-16 17:30:00'))"); + verifySchema(result, schema("minute_of_day(timestamp('2020-09-16 17:30:00'))", null, "integer")); + verifyDataRows(result, rows(1050)); + + result = executeQuery("select minute_of_day(datetime('2020-09-16 17:30:00'))"); + verifySchema(result, schema("minute_of_day(datetime('2020-09-16 17:30:00'))", null, "integer")); + verifyDataRows(result, rows(1050)); + + result = executeQuery("select minute_of_day(time('17:30:00'))"); + verifySchema(result, schema("minute_of_day(time('17:30:00'))", null, "integer")); + verifyDataRows(result, rows(1050)); + + result = executeQuery("select minute_of_day('2020-09-16 17:30:00')"); + verifySchema(result, schema("minute_of_day('2020-09-16 17:30:00')", null, "integer")); + verifyDataRows(result, rows(1050)); + + result = executeQuery("select minute_of_day('17:30:00')"); + verifySchema(result, schema("minute_of_day('17:30:00')", null, "integer")); + verifyDataRows(result, rows(1050)); + } + @Test public void testMonth() throws IOException { JSONObject result = executeQuery("select month(date('2020-09-16'))"); diff --git a/sql/src/main/antlr/OpenSearchSQLParser.g4 b/sql/src/main/antlr/OpenSearchSQLParser.g4 index 217ad9bff6..859d96c505 100644 --- a/sql/src/main/antlr/OpenSearchSQLParser.g4 +++ b/sql/src/main/antlr/OpenSearchSQLParser.g4 @@ -433,6 +433,7 @@ dateTimeFunctionName | MAKETIME | MICROSECOND | MINUTE + | MINUTE_OF_DAY | MONTH | MONTHNAME | NOW diff --git a/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java b/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java index 778a62ebd8..5c9ccaa3ec 100644 --- a/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java +++ b/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java @@ -451,6 +451,14 @@ public void can_parse_match_phrase_relevance_function() { assertNotNull(parser.parse("SELECT * FROM test WHERE match_phrase(column, 100500)")); } + @Test + public void can_parse_minute_of_day_function() { + assertNotNull(parser.parse("SELECT minute_of_day(\"12:23:34\");")); + assertNotNull(parser.parse("SELECT minute_of_day('12:23:34');"));; + assertNotNull(parser.parse("SELECT minute_of_day(\"2022-12-14 12:23:34\");"));; + assertNotNull(parser.parse("SELECT minute_of_day('2022-12-14 12:23:34');"));; + } + @Test public void can_parse_wildcard_query_relevance_function() { assertNotNull( From 683d92ff26281c1ab05771e8cbaab7a1421f4915 Mon Sep 17 00:00:00 2001 From: Yury-Fridlyand Date: Tue, 3 Jan 2023 12:04:18 -0800 Subject: [PATCH 27/55] Suppress report uploading failure in CI. (#1180) Signed-off-by: Yury-Fridlyand Signed-off-by: Yury-Fridlyand --- .github/workflows/sql-test-and-build-workflow.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/sql-test-and-build-workflow.yml b/.github/workflows/sql-test-and-build-workflow.yml index 25e0387cf3..14ce737bc3 100644 --- a/.github/workflows/sql-test-and-build-workflow.yml +++ b/.github/workflows/sql-test-and-build-workflow.yml @@ -70,6 +70,7 @@ jobs: - name: Upload test reports if: ${{ always() && matrix.entry.os == 'ubuntu-latest' }} uses: actions/upload-artifact@v2 + continue-on-error: true with: name: test-reports path: | From 2d34d9e245196d8239a8a55bb3fc7fcb57de73bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Jan 2023 08:43:08 -0800 Subject: [PATCH 28/55] Bump json5 from 2.2.1 to 2.2.3 in /workbench (#1217) Bumps [json5](https://github.com/json5/json5) from 2.2.1 to 2.2.3. - [Release notes](https://github.com/json5/json5/releases) - [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md) - [Commits](https://github.com/json5/json5/compare/v2.2.1...v2.2.3) --- updated-dependencies: - dependency-name: json5 dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- workbench/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/workbench/yarn.lock b/workbench/yarn.lock index 58182914c4..ce780beeef 100644 --- a/workbench/yarn.lock +++ b/workbench/yarn.lock @@ -1678,9 +1678,9 @@ json-stringify-safe@~5.0.1: integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json5@2.x: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== jsonfile@^6.0.1: version "6.1.0" From 1b58f7d07fd4f002e57a0b7121d32a40e013a489 Mon Sep 17 00:00:00 2001 From: Yury-Fridlyand Date: Wed, 4 Jan 2023 09:27:14 -0800 Subject: [PATCH 29/55] Disallow unquoted literals in `LIKE` clause in `DESCRIBE` statement (#1181) * Allow quoted literals only in `DESCRIBE` and `SHOW` clauses. Tests. Signed-off-by: Yury-Fridlyand * Fix doctest after rebase. Signed-off-by: Yury-Fridlyand * Fix doctest after rebase. - Typo fix. Signed-off-by: Yury-Fridlyand * Update syntax section. Signed-off-by: Yury-Fridlyand Signed-off-by: Yury-Fridlyand Signed-off-by: Yury-Fridlyand --- docs/category.json | 3 +- docs/user/dql/metadata.rst | 120 ++++++++---------- docs/user/img/rdd/showFilter.png | Bin 6355 -> 0 bytes docs/user/img/rdd/showStatement.png | Bin 8542 -> 0 bytes .../java/org/opensearch/sql/sql/AdminIT.java | 44 +++++-- sql/src/main/antlr/OpenSearchSQLParser.g4 | 7 +- .../sql/sql/parser/AstExpressionBuilder.java | 6 +- .../sql/sql/antlr/SQLSyntaxParserTest.java | 33 +++++ .../sql/sql/parser/AstBuilderTest.java | 35 +---- 9 files changed, 129 insertions(+), 119 deletions(-) delete mode 100644 docs/user/img/rdd/showFilter.png delete mode 100644 docs/user/img/rdd/showStatement.png diff --git a/docs/category.json b/docs/category.json index b8feaa654a..e90c674a2e 100644 --- a/docs/category.json +++ b/docs/category.json @@ -46,6 +46,7 @@ "user/dql/window.rst", "user/beyond/partiql.rst", "user/dql/aggregations.rst", - "user/dql/complex.rst" + "user/dql/complex.rst", + "user/dql/metadata.rst" ] } diff --git a/docs/user/dql/metadata.rst b/docs/user/dql/metadata.rst index 7ffc2ffe38..5b34455974 100644 --- a/docs/user/dql/metadata.rst +++ b/docs/user/dql/metadata.rst @@ -21,13 +21,11 @@ You can query your indices metadata by ``SHOW`` and ``DESCRIBE`` statement. Thes Syntax ------ -Rule ``showStatement``: +``SHOW TABLES LIKE ""`` -.. image:: /docs/user/img/rdd/showStatement.png +``DESCRIBE TABLES LIKE "" [COLUMNS LIKE ""]`` -Rule ``showFilter``: - -.. image:: /docs/user/img/rdd/showFilter.png +Pattern accepts SQL style wildcards where `_` mathes any character and `%` matches any characters. Example 1: Show All Indices Information --------------------------------------- @@ -36,21 +34,19 @@ Example 1: Show All Indices Information SQL query:: - POST /_plugins/_sql - { - "query" : "SHOW TABLES LIKE %" - } - -Result set: - -+---------+-----------+----------------+----------+-------+--------+----------+---------+-------------------------+--------------+ -|TABLE_CAT|TABLE_SCHEM| TABLE_NAME|TABLE_TYPE|REMARKS|TYPE_CAT|TYPE_SCHEM|TYPE_NAME|SELF_REFERENCING_COL_NAME|REF_GENERATION| -+=========+===========+================+==========+=======+========+==========+=========+=========================+==============+ -|integTest| null| accounts|BASE TABLE| null| null| null| null| null| null| -+---------+-----------+----------------+----------+-------+--------+----------+---------+-------------------------+--------------+ -|integTest| null|employees_nested|BASE TABLE| null| null| null| null| null| null| -+---------+-----------+----------------+----------+-------+--------+----------+---------+-------------------------+--------------+ - + os> SHOW TABLES LIKE '%' + fetched rows / total rows = 7/7 + +----------------+---------------+--------------+--------------+-----------+------------+--------------+-------------+-----------------------------+------------------+ + | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | TYPE_CAT | TYPE_SCHEM | TYPE_NAME | SELF_REFERENCING_COL_NAME | REF_GENERATION | + |----------------+---------------+--------------+--------------+-----------+------------+--------------+-------------+-----------------------------+------------------| + | docTestCluster | null | account2 | BASE TABLE | null | null | null | null | null | null | + | docTestCluster | null | accounts | BASE TABLE | null | null | null | null | null | null | + | docTestCluster | null | apache | BASE TABLE | null | null | null | null | null | null | + | docTestCluster | null | books | BASE TABLE | null | null | null | null | null | null | + | docTestCluster | null | nyc_taxi | BASE TABLE | null | null | null | null | null | null | + | docTestCluster | null | people | BASE TABLE | null | null | null | null | null | null | + | docTestCluster | null | wildcard | BASE TABLE | null | null | null | null | null | null | + +----------------+---------------+--------------+--------------+-----------+------------+--------------+-------------+-----------------------------+------------------+ Example 2: Show Specific Index Information ------------------------------------------ @@ -59,19 +55,14 @@ Here is an example that searches metadata for index name prefixed by 'acc'. Besi SQL query:: - POST /_plugins/_sql - { - "query" : "SHOW TABLES LIKE acc%" - } - -Result set: - -+---------+-----------+----------+----------+-------+--------+----------+---------+-------------------------+--------------+ -|TABLE_CAT|TABLE_SCHEM|TABLE_NAME|TABLE_TYPE|REMARKS|TYPE_CAT|TYPE_SCHEM|TYPE_NAME|SELF_REFERENCING_COL_NAME|REF_GENERATION| -+=========+===========+==========+==========+=======+========+==========+=========+=========================+==============+ -|integTest| null| accounts|BASE TABLE| null| null| null| null| null| null| -+---------+-----------+----------+----------+-------+--------+----------+---------+-------------------------+--------------+ - + os> SHOW TABLES LIKE "acc%" + fetched rows / total rows = 2/2 + +----------------+---------------+--------------+--------------+-----------+------------+--------------+-------------+-----------------------------+------------------+ + | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | TYPE_CAT | TYPE_SCHEM | TYPE_NAME | SELF_REFERENCING_COL_NAME | REF_GENERATION | + |----------------+---------------+--------------+--------------+-----------+------------+--------------+-------------+-----------------------------+------------------| + | docTestCluster | null | account2 | BASE TABLE | null | null | null | null | null | null | + | docTestCluster | null | accounts | BASE TABLE | null | null | null | null | null | null | + +----------------+---------------+--------------+--------------+-----------+------------+--------------+-------------+-----------------------------+------------------+ Example 3: Describe Index Fields Information -------------------------------------------- @@ -80,37 +71,36 @@ Example 3: Describe Index Fields Information SQL query:: - POST /_plugins/_sql - { - "query" : "DESCRIBE TABLES LIKE accounts" - } - -Result set: - -+---------+-----------+----------+--------------+---------+---------+-----------+-------------+--------------+--------------+--------+-------+----------+-------------+----------------+-----------------+----------------+-----------+-------------+------------+-----------+----------------+----------------+------------------+ -|TABLE_CAT|TABLE_SCHEM|TABLE_NAME| COLUMN_NAME|DATA_TYPE|TYPE_NAME|COLUMN_SIZE|BUFFER_LENGTH|DECIMAL_DIGITS|NUM_PREC_RADIX|NULLABLE|REMARKS|COLUMN_DEF|SQL_DATA_TYPE|SQL_DATETIME_SUB|CHAR_OCTET_LENGTH|ORDINAL_POSITION|IS_NULLABLE|SCOPE_CATALOG|SCOPE_SCHEMA|SCOPE_TABLE|SOURCE_DATA_TYPE|IS_AUTOINCREMENT|IS_GENERATEDCOLUMN| -+=========+===========+==========+==============+=========+=========+===========+=============+==============+==============+========+=======+==========+=============+================+=================+================+===========+=============+============+===========+================+================+==================+ -|integTest| null| accounts|account_number| null| long| null| null| null| 10| 2| null| null| null| null| null| 1| | null| null| null| null| NO| | -+---------+-----------+----------+--------------+---------+---------+-----------+-------------+--------------+--------------+--------+-------+----------+-------------+----------------+-----------------+----------------+-----------+-------------+------------+-----------+----------------+----------------+------------------+ -|integTest| null| accounts| firstname| null| text| null| null| null| 10| 2| null| null| null| null| null| 2| | null| null| null| null| NO| | -+---------+-----------+----------+--------------+---------+---------+-----------+-------------+--------------+--------------+--------+-------+----------+-------------+----------------+-----------------+----------------+-----------+-------------+------------+-----------+----------------+----------------+------------------+ -|integTest| null| accounts| address| null| text| null| null| null| 10| 2| null| null| null| null| null| 3| | null| null| null| null| NO| | -+---------+-----------+----------+--------------+---------+---------+-----------+-------------+--------------+--------------+--------+-------+----------+-------------+----------------+-----------------+----------------+-----------+-------------+------------+-----------+----------------+----------------+------------------+ -|integTest| null| accounts| balance| null| long| null| null| null| 10| 2| null| null| null| null| null| 4| | null| null| null| null| NO| | -+---------+-----------+----------+--------------+---------+---------+-----------+-------------+--------------+--------------+--------+-------+----------+-------------+----------------+-----------------+----------------+-----------+-------------+------------+-----------+----------------+----------------+------------------+ -|integTest| null| accounts| gender| null| text| null| null| null| 10| 2| null| null| null| null| null| 5| | null| null| null| null| NO| | -+---------+-----------+----------+--------------+---------+---------+-----------+-------------+--------------+--------------+--------+-------+----------+-------------+----------------+-----------------+----------------+-----------+-------------+------------+-----------+----------------+----------------+------------------+ -|integTest| null| accounts| city| null| text| null| null| null| 10| 2| null| null| null| null| null| 6| | null| null| null| null| NO| | -+---------+-----------+----------+--------------+---------+---------+-----------+-------------+--------------+--------------+--------+-------+----------+-------------+----------------+-----------------+----------------+-----------+-------------+------------+-----------+----------------+----------------+------------------+ -|integTest| null| accounts| employer| null| text| null| null| null| 10| 2| null| null| null| null| null| 7| | null| null| null| null| NO| | -+---------+-----------+----------+--------------+---------+---------+-----------+-------------+--------------+--------------+--------+-------+----------+-------------+----------------+-----------------+----------------+-----------+-------------+------------+-----------+----------------+----------------+------------------+ -|integTest| null| accounts| state| null| text| null| null| null| 10| 2| null| null| null| null| null| 8| | null| null| null| null| NO| | -+---------+-----------+----------+--------------+---------+---------+-----------+-------------+--------------+--------------+--------+-------+----------+-------------+----------------+-----------------+----------------+-----------+-------------+------------+-----------+----------------+----------------+------------------+ -|integTest| null| accounts| age| null| long| null| null| null| 10| 2| null| null| null| null| null| 9| | null| null| null| null| NO| | -+---------+-----------+----------+--------------+---------+---------+-----------+-------------+--------------+--------------+--------+-------+----------+-------------+----------------+-----------------+----------------+-----------+-------------+------------+-----------+----------------+----------------+------------------+ -|integTest| null| accounts| email| null| text| null| null| null| 10| 2| null| null| null| null| null| 10| | null| null| null| null| NO| | -+---------+-----------+----------+--------------+---------+---------+-----------+-------------+--------------+--------------+--------+-------+----------+-------------+----------------+-----------------+----------------+-----------+-------------+------------+-----------+----------------+----------------+------------------+ -|integTest| null| accounts| lastname| null| text| null| null| null| 10| 2| null| null| null| null| null| 11| | null| null| null| null| NO| | -+---------+-----------+----------+--------------+---------+---------+-----------+-------------+--------------+--------------+--------+-------+----------+-------------+----------------+-----------------+----------------+-----------+-------------+------------+-----------+----------------+----------------+------------------+ + os> DESCRIBE TABLES LIKE 'accounts' + fetched rows / total rows = 11/11 + +----------------+---------------+--------------+----------------+-------------+-------------+---------------+-----------------+------------------+------------------+------------+-----------+--------------+-----------------+--------------------+---------------------+--------------------+---------------+-----------------+----------------+---------------+--------------------+--------------------+----------------------+ + | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | COLUMN_NAME | DATA_TYPE | TYPE_NAME | COLUMN_SIZE | BUFFER_LENGTH | DECIMAL_DIGITS | NUM_PREC_RADIX | NULLABLE | REMARKS | COLUMN_DEF | SQL_DATA_TYPE | SQL_DATETIME_SUB | CHAR_OCTET_LENGTH | ORDINAL_POSITION | IS_NULLABLE | SCOPE_CATALOG | SCOPE_SCHEMA | SCOPE_TABLE | SOURCE_DATA_TYPE | IS_AUTOINCREMENT | IS_GENERATEDCOLUMN | + |----------------+---------------+--------------+----------------+-------------+-------------+---------------+-----------------+------------------+------------------+------------+-----------+--------------+-----------------+--------------------+---------------------+--------------------+---------------+-----------------+----------------+---------------+--------------------+--------------------+----------------------| + | docTestCluster | null | accounts | account_number | null | long | null | null | null | 10 | 2 | null | null | null | null | null | 0 | | null | null | null | null | NO | | + | docTestCluster | null | accounts | firstname | null | text | null | null | null | 10 | 2 | null | null | null | null | null | 1 | | null | null | null | null | NO | | + | docTestCluster | null | accounts | address | null | text | null | null | null | 10 | 2 | null | null | null | null | null | 2 | | null | null | null | null | NO | | + | docTestCluster | null | accounts | balance | null | long | null | null | null | 10 | 2 | null | null | null | null | null | 3 | | null | null | null | null | NO | | + | docTestCluster | null | accounts | gender | null | text | null | null | null | 10 | 2 | null | null | null | null | null | 4 | | null | null | null | null | NO | | + | docTestCluster | null | accounts | city | null | text | null | null | null | 10 | 2 | null | null | null | null | null | 5 | | null | null | null | null | NO | | + | docTestCluster | null | accounts | employer | null | text | null | null | null | 10 | 2 | null | null | null | null | null | 6 | | null | null | null | null | NO | | + | docTestCluster | null | accounts | state | null | text | null | null | null | 10 | 2 | null | null | null | null | null | 7 | | null | null | null | null | NO | | + | docTestCluster | null | accounts | age | null | long | null | null | null | 10 | 2 | null | null | null | null | null | 8 | | null | null | null | null | NO | | + | docTestCluster | null | accounts | email | null | text | null | null | null | 10 | 2 | null | null | null | null | null | 9 | | null | null | null | null | NO | | + | docTestCluster | null | accounts | lastname | null | text | null | null | null | 10 | 2 | null | null | null | null | null | 10 | | null | null | null | null | NO | | + +----------------+---------------+--------------+----------------+-------------+-------------+---------------+-----------------+------------------+------------------+------------+-----------+--------------+-----------------+--------------------+---------------------+--------------------+---------------+-----------------+----------------+---------------+--------------------+--------------------+----------------------+ + +Example 4: Describe Index With Fields Filter +-------------------------------------------- +``DESCRIBE`` statement fields that can match the search pattern for indices that can match the search pattern. + +SQL query:: + os> DESCRIBE TABLES LIKE "accounts" COLUMNS LIKE "%name" + fetched rows / total rows = 2/2 + +----------------+---------------+--------------+---------------+-------------+-------------+---------------+-----------------+------------------+------------------+------------+-----------+--------------+-----------------+--------------------+---------------------+--------------------+---------------+-----------------+----------------+---------------+--------------------+--------------------+----------------------+ + | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | COLUMN_NAME | DATA_TYPE | TYPE_NAME | COLUMN_SIZE | BUFFER_LENGTH | DECIMAL_DIGITS | NUM_PREC_RADIX | NULLABLE | REMARKS | COLUMN_DEF | SQL_DATA_TYPE | SQL_DATETIME_SUB | CHAR_OCTET_LENGTH | ORDINAL_POSITION | IS_NULLABLE | SCOPE_CATALOG | SCOPE_SCHEMA | SCOPE_TABLE | SOURCE_DATA_TYPE | IS_AUTOINCREMENT | IS_GENERATEDCOLUMN | + |----------------+---------------+--------------+---------------+-------------+-------------+---------------+-----------------+------------------+------------------+------------+-----------+--------------+-----------------+--------------------+---------------------+--------------------+---------------+-----------------+----------------+---------------+--------------------+--------------------+----------------------| + | docTestCluster | null | accounts | firstname | null | text | null | null | null | 10 | 2 | null | null | null | null | null | 1 | | null | null | null | null | NO | | + | docTestCluster | null | accounts | lastname | null | text | null | null | null | 10 | 2 | null | null | null | null | null | 10 | | null | null | null | null | NO | | + +----------------+---------------+--------------+---------------+-------------+-------------+---------------+-----------------+------------------+------------------+------------+-----------+--------------+-----------------+--------------------+---------------------+--------------------+---------------+-----------------+----------------+---------------+--------------------+--------------------+----------------------+ diff --git a/docs/user/img/rdd/showFilter.png b/docs/user/img/rdd/showFilter.png deleted file mode 100644 index 47dbc0746e3cbe425b0d80b2d680ec9f173f8b8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6355 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 EKbY57eE%++n%{001b|RF!lA0OBLUyY1~; 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 assertThrows(SyntaxCheckException.class, + () -> parser.parse("DESCRIBE TABLES LIKE bank")), + () -> assertThrows(SyntaxCheckException.class, + () -> parser.parse("DESCRIBE TABLES LIKE %bank%")), + () -> assertThrows(SyntaxCheckException.class, + () -> parser.parse("DESCRIBE TABLES LIKE `bank`")), + () -> assertThrows(SyntaxCheckException.class, + () -> parser.parse("DESCRIBE TABLES LIKE %bank% COLUMNS LIKE %status%")), + () -> assertThrows(SyntaxCheckException.class, + () -> parser.parse("DESCRIBE TABLES LIKE 'bank' COLUMNS LIKE status")), + () -> assertNotNull(parser.parse("DESCRIBE TABLES LIKE 'bank' COLUMNS LIKE \"status\"")), + () -> assertNotNull(parser.parse("DESCRIBE TABLES LIKE \"bank\" COLUMNS LIKE 'status'")) + ); + } + + @Test + public void show_request_accepts_only_quoted_string_literals() { + assertAll( + () -> assertThrows(SyntaxCheckException.class, + () -> parser.parse("SHOW TABLES LIKE bank")), + () -> assertThrows(SyntaxCheckException.class, + () -> parser.parse("SHOW TABLES LIKE %bank%")), + () -> assertThrows(SyntaxCheckException.class, + () -> parser.parse("SHOW TABLES LIKE `bank`")), + () -> assertNotNull(parser.parse("SHOW TABLES LIKE 'bank'")), + () -> assertNotNull(parser.parse("SHOW TABLES LIKE \"bank\"")) + ); + } + @ParameterizedTest @MethodSource({ "matchPhraseComplexQueries", diff --git a/sql/src/test/java/org/opensearch/sql/sql/parser/AstBuilderTest.java b/sql/src/test/java/org/opensearch/sql/sql/parser/AstBuilderTest.java index fafb143291..64a7445dc8 100644 --- a/sql/src/test/java/org/opensearch/sql/sql/parser/AstBuilderTest.java +++ b/sql/src/test/java/org/opensearch/sql/sql/parser/AstBuilderTest.java @@ -567,10 +567,6 @@ public void can_build_show_selected_tables() { ); } - /** - * Todo, ideally the identifier (%) couldn't be used in LIKE operator, only the string literal - * is allowed. - */ @Test public void show_compatible_with_old_engine_syntax() { assertEquals( @@ -581,18 +577,7 @@ public void show_compatible_with_old_engine_syntax() { ), AllFields.of() ), - buildAST("SHOW TABLES LIKE %") - ); - } - - @Test - public void describe_compatible_with_old_engine_syntax() { - assertEquals( - project( - relation(mappingTable("a_c%")), - AllFields.of() - ), - buildAST("DESCRIBE TABLES LIKE a_c%") + buildAST("SHOW TABLES LIKE '%'") ); } @@ -621,24 +606,6 @@ public void can_build_describe_selected_tables_field_filter() { ); } - /** - * Todo, ideally the identifier (%) couldn't be used in LIKE operator, only the string literal - * is allowed. - */ - @Test - public void describe_and_column_compatible_with_old_engine_syntax() { - assertEquals( - project( - filter( - relation(mappingTable("a_c%")), - function("like", qualifiedName("COLUMN_NAME"), stringLiteral("name%")) - ), - AllFields.of() - ), - buildAST("DESCRIBE TABLES LIKE a_c% COLUMNS LIKE name%") - ); - } - @Test public void can_build_alias_by_keywords() { assertEquals( From f4ab469b7ac3f8efb9d8714e63d5b10886c6d566 Mon Sep 17 00:00:00 2001 From: "Daniel (dB.) Doubrovkine" Date: Fri, 6 Jan 2023 11:47:08 -0500 Subject: [PATCH 30/55] Updated MAINTAINERS.md to match recommended opensearch-project format. (#1224) Signed-off-by: dblock Signed-off-by: dblock --- MAINTAINERS.md | 26 ++++++++++++++------------ sql-cli/MAINTAINERS.md | 25 ++++++++++++++----------- sql-jdbc/MAINTAINERS.md | 20 +++++++++++--------- sql-odbc/MAINTAINERS.md | 20 +++++++++++--------- 4 files changed, 50 insertions(+), 41 deletions(-) diff --git a/MAINTAINERS.md b/MAINTAINERS.md index ba4ce45209..073b4e206c 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -1,14 +1,16 @@ -# OpenSearch SQL Maintainers +## Overview -## Maintainers +This document contains a list of maintainers in this repo. See [opensearch-project/.github/RESPONSIBILITIES.md](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md#maintainer-responsibilities) that explains what the role of maintainer means, what maintainers do in this and other repos, and how they should be doing it. If you're interested in contributing, and becoming a maintainer, see [CONTRIBUTING](CONTRIBUTING.md). -| Maintainer | GitHub ID | Affiliation | -| --------------- | --------- | ----------- | -| Anirudha (Ani) Jadhav | [anirudha](https://github.com/anirudha) | Amazon | -| Peng Huo | [penghuo](https://github.com/penghuo) | Amazon | -| Chen Dai | [dai-chen](https://github.com/dai-chen) | Amazon | -| Chloe Zhang | [chloe-zh](https://github.com/chloe-zh) | Amazon | -| Nick Knize | [nknize](https://github.com/nknize) | Amazon | -| Charlotte Henkle | [CEHENKLE](https://github.com/CEHENKLE) | Amazon | -| Max Ksyunz | [MaxKsyunz](https://github.com/MaxKsyunz) | BitQuill | -| Yury Fridlyand | [Yury-Fridlyand](https://github.com/Yury-Fridlyand) | BitQuill | \ No newline at end of file +## Current Maintainers + +| Maintainer | GitHub ID | Affiliation | +| --------------------- | --------------------------------------------------- | ----------- | +| Anirudha (Ani) Jadhav | [anirudha](https://github.com/anirudha) | Amazon | +| Peng Huo | [penghuo](https://github.com/penghuo) | Amazon | +| Chen Dai | [dai-chen](https://github.com/dai-chen) | Amazon | +| Chloe Zhang | [chloe-zh](https://github.com/chloe-zh) | Amazon | +| Nick Knize | [nknize](https://github.com/nknize) | Amazon | +| Charlotte Henkle | [CEHENKLE](https://github.com/CEHENKLE) | Amazon | +| Max Ksyunz | [MaxKsyunz](https://github.com/MaxKsyunz) | BitQuill | +| Yury Fridlyand | [Yury-Fridlyand](https://github.com/Yury-Fridlyand) | BitQuill | \ No newline at end of file diff --git a/sql-cli/MAINTAINERS.md b/sql-cli/MAINTAINERS.md index 098ae18733..e32b745ea4 100644 --- a/sql-cli/MAINTAINERS.md +++ b/sql-cli/MAINTAINERS.md @@ -1,13 +1,16 @@ -# OpenSearch Maintainers - -## Maintainers -| Maintainer | GitHub ID | Affiliation | -| --------------- | --------- | ----------- | -| Abbas Hussain | [abbashus](https://github.com/abbashus) | Amazon | -| Alolita Sharma | [alolita](https://github.com/alolita) | Amazon | -| Anirudha Jadhav | [anirudha](https://github.com/anirudha) | Amazon | -| Chloe Zhang | [chloe-zh](https://github.com/chloe-zh) | Amazon | -| Joshua Li | [joshuali925](https://github.com/joshuali925) | Amazon | -| Zhongnan Su | [zhongnansu](https://github.com/CEHENKLE) | Amazon | +## Overview + +This document contains a list of maintainers in this repo. See [opensearch-project/.github/RESPONSIBILITIES.md](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md#maintainer-responsibilities) that explains what the role of maintainer means, what maintainers do in this and other repos, and how they should be doing it. If you're interested in contributing, and becoming a maintainer, see [CONTRIBUTING](CONTRIBUTING.md). + +## Current Maintainers + +| Maintainer | GitHub ID | Affiliation | +| --------------- | --------------------------------------------- | ----------- | +| Abbas Hussain | [abbashus](https://github.com/abbashus) | Amazon | +| Alolita Sharma | [alolita](https://github.com/alolita) | Amazon | +| Anirudha Jadhav | [anirudha](https://github.com/anirudha) | Amazon | +| Chloe Zhang | [chloe-zh](https://github.com/chloe-zh) | Amazon | +| Joshua Li | [joshuali925](https://github.com/joshuali925) | Amazon | +| Zhongnan Su | [zhongnansu](https://github.com/CEHENKLE) | Amazon | diff --git a/sql-jdbc/MAINTAINERS.md b/sql-jdbc/MAINTAINERS.md index ff390ab74f..76346cc04c 100644 --- a/sql-jdbc/MAINTAINERS.md +++ b/sql-jdbc/MAINTAINERS.md @@ -1,11 +1,13 @@ -# OpenSearch JDBC Maintainers +## Overview -## Maintainers +This document contains a list of maintainers in this repo. See [opensearch-project/.github/RESPONSIBILITIES.md](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md#maintainer-responsibilities) that explains what the role of maintainer means, what maintainers do in this and other repos, and how they should be doing it. If you're interested in contributing, and becoming a maintainer, see [CONTRIBUTING](CONTRIBUTING.md). -| Maintainer | GitHub ID | Affiliation | -| --------------- | --------- | ----------- | -| Anirudha (Ani) Jadhav | [anirudha](https://github.com/anirudha) | Amazon | -| Peng Huo | [penghuo](https://github.com/penghuo) | Amazon | -| Chloe | [chloe-zh](https://github.com/chloe-zh) | Amazon | -| Chen Dai | [dai-chen](https://github.com/dai-chen) | Amazon | -| Harold Wang | [harold-wang](https://github.com/harold-wang) | Amazon | +## Current Maintainers + +| Maintainer | GitHub ID | Affiliation | +| --------------------- | --------------------------------------------- | ----------- | +| Anirudha (Ani) Jadhav | [anirudha](https://github.com/anirudha) | Amazon | +| Peng Huo | [penghuo](https://github.com/penghuo) | Amazon | +| Chloe | [chloe-zh](https://github.com/chloe-zh) | Amazon | +| Chen Dai | [dai-chen](https://github.com/dai-chen) | Amazon | +| Harold Wang | [harold-wang](https://github.com/harold-wang) | Amazon | diff --git a/sql-odbc/MAINTAINERS.md b/sql-odbc/MAINTAINERS.md index 59838756d9..76346cc04c 100644 --- a/sql-odbc/MAINTAINERS.md +++ b/sql-odbc/MAINTAINERS.md @@ -1,11 +1,13 @@ -# OpenSearch ODBC Maintainers +## Overview -## Maintainers +This document contains a list of maintainers in this repo. See [opensearch-project/.github/RESPONSIBILITIES.md](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md#maintainer-responsibilities) that explains what the role of maintainer means, what maintainers do in this and other repos, and how they should be doing it. If you're interested in contributing, and becoming a maintainer, see [CONTRIBUTING](CONTRIBUTING.md). -| Maintainer | GitHub ID | Affiliation | -| --------------- | --------- | ----------- | -| Anirudha (Ani) Jadhav | [anirudha](https://github.com/anirudha) | Amazon | -| Peng Huo | [penghuo](https://github.com/penghuo) | Amazon | -| Chloe | [chloe-zh](https://github.com/chloe-zh) | Amazon | -| Chen Dai | [dai-chen](https://github.com/dai-chen) | Amazon | -| Harold Wang | [harold-wang](https://github.com/harold-wang) | Amazon | +## Current Maintainers + +| Maintainer | GitHub ID | Affiliation | +| --------------------- | --------------------------------------------- | ----------- | +| Anirudha (Ani) Jadhav | [anirudha](https://github.com/anirudha) | Amazon | +| Peng Huo | [penghuo](https://github.com/penghuo) | Amazon | +| Chloe | [chloe-zh](https://github.com/chloe-zh) | Amazon | +| Chen Dai | [dai-chen](https://github.com/dai-chen) | Amazon | +| Harold Wang | [harold-wang](https://github.com/harold-wang) | Amazon | From 438c44d0f495061755a31f35ef97262b78c8de01 Mon Sep 17 00:00:00 2001 From: Yury-Fridlyand Date: Fri, 6 Jan 2023 09:19:36 -0800 Subject: [PATCH 31/55] Add `TIMEDIFF` and `DATEDIFF` functions. (#131) (#1195) * Add `TIMEDIFF` and `DATEDIFF` functions. Signed-off-by: Yury-Fridlyand Signed-off-by: Yury-Fridlyand Co-authored-by: Max Ksyunz Signed-off-by: Yury-Fridlyand Signed-off-by: Yury-Fridlyand Co-authored-by: Max Ksyunz --- .../sql/data/model/ExprDateValue.java | 3 +- .../sql/data/model/ExprDatetimeValue.java | 3 +- .../sql/data/model/ExprTimeValue.java | 15 ++- .../sql/data/model/ExprTimestampValue.java | 2 +- .../sql/data/model/ExprValueUtils.java | 28 ++++++ .../expression/datetime/DateTimeFunction.java | 91 +++++++++++++++++++ .../function/BuiltinFunctionName.java | 2 + .../sql/expression/function/FunctionDSL.java | 91 ++++++++++++++----- .../opensearch/sql/utils/DateTimeUtils.java | 15 +++ .../sql/data/model/DateTimeValueTest.java | 33 +++++-- .../sql/expression/datetime/DateDiffTest.java | 77 ++++++++++++++++ .../expression/datetime/DateTimeTestBase.java | 36 ++++++-- .../sql/expression/datetime/TimeDiffTest.java | 42 +++++++++ .../function/FunctionDSLTestBase.java | 2 + ...nctionDSLimplWithPropertiesTwoArgTest.java | 33 +++++++ .../FunctionDSLnullMissingHandlingTest.java | 35 +++++++ docs/user/dql/functions.rst | 43 +++++++++ docs/user/ppl/functions/datetime.rst | 43 +++++++++ .../sql/ppl/DateTimeFunctionIT.java | 23 +++++ .../sql/sql/DateTimeFunctionIT.java | 21 +++++ ppl/src/main/antlr/OpenSearchPPLLexer.g4 | 2 + ppl/src/main/antlr/OpenSearchPPLParser.g4 | 2 + sql/src/main/antlr/OpenSearchSQLLexer.g4 | 2 + sql/src/main/antlr/OpenSearchSQLParser.g4 | 2 + 24 files changed, 599 insertions(+), 47 deletions(-) create mode 100644 core/src/test/java/org/opensearch/sql/expression/datetime/DateDiffTest.java create mode 100644 core/src/test/java/org/opensearch/sql/expression/datetime/TimeDiffTest.java create mode 100644 core/src/test/java/org/opensearch/sql/expression/function/FunctionDSLimplWithPropertiesTwoArgTest.java diff --git a/core/src/main/java/org/opensearch/sql/data/model/ExprDateValue.java b/core/src/main/java/org/opensearch/sql/data/model/ExprDateValue.java index 7617e156ba..f665627838 100644 --- a/core/src/main/java/org/opensearch/sql/data/model/ExprDateValue.java +++ b/core/src/main/java/org/opensearch/sql/data/model/ExprDateValue.java @@ -13,7 +13,6 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; -import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; @@ -69,7 +68,7 @@ public LocalDateTime datetimeValue() { @Override public Instant timestampValue() { - return ZonedDateTime.of(date, timeValue(), ZoneId.systemDefault()).toInstant(); + return ZonedDateTime.of(date, timeValue(), ExprTimestampValue.ZONE).toInstant(); } @Override diff --git a/core/src/main/java/org/opensearch/sql/data/model/ExprDatetimeValue.java b/core/src/main/java/org/opensearch/sql/data/model/ExprDatetimeValue.java index f5f80f133f..628106b048 100644 --- a/core/src/main/java/org/opensearch/sql/data/model/ExprDatetimeValue.java +++ b/core/src/main/java/org/opensearch/sql/data/model/ExprDatetimeValue.java @@ -11,7 +11,6 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; -import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; @@ -71,7 +70,7 @@ public LocalTime timeValue() { @Override public Instant timestampValue() { - return ZonedDateTime.of(datetime, ZoneId.of("UTC")).toInstant(); + return ZonedDateTime.of(datetime, ExprTimestampValue.ZONE).toInstant(); } @Override diff --git a/core/src/main/java/org/opensearch/sql/data/model/ExprTimeValue.java b/core/src/main/java/org/opensearch/sql/data/model/ExprTimeValue.java index 6cc4021d2e..d77a2615d2 100644 --- a/core/src/main/java/org/opensearch/sql/data/model/ExprTimeValue.java +++ b/core/src/main/java/org/opensearch/sql/data/model/ExprTimeValue.java @@ -13,7 +13,6 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; -import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeParseException; import java.util.Objects; @@ -21,6 +20,7 @@ import org.opensearch.sql.data.type.ExprCoreType; import org.opensearch.sql.data.type.ExprType; import org.opensearch.sql.exception.SemanticCheckException; +import org.opensearch.sql.expression.function.FunctionProperties; /** * Expression Time Value. @@ -57,6 +57,19 @@ public LocalTime timeValue() { return time; } + public LocalDate dateValue(FunctionProperties functionProperties) { + return LocalDate.now(functionProperties.getQueryStartClock()); + } + + public LocalDateTime datetimeValue(FunctionProperties functionProperties) { + return LocalDateTime.of(dateValue(functionProperties), timeValue()); + } + + public Instant timestampValue(FunctionProperties functionProperties) { + return ZonedDateTime.of(dateValue(functionProperties), timeValue(), ExprTimestampValue.ZONE) + .toInstant(); + } + @Override public String toString() { return String.format("TIME '%s'", value()); diff --git a/core/src/main/java/org/opensearch/sql/data/model/ExprTimestampValue.java b/core/src/main/java/org/opensearch/sql/data/model/ExprTimestampValue.java index 219a4c2663..a7ae605a7f 100644 --- a/core/src/main/java/org/opensearch/sql/data/model/ExprTimestampValue.java +++ b/core/src/main/java/org/opensearch/sql/data/model/ExprTimestampValue.java @@ -30,7 +30,7 @@ public class ExprTimestampValue extends AbstractExprValue { /** * todo. only support UTC now. */ - private static final ZoneId ZONE = ZoneId.of("UTC"); + public static final ZoneId ZONE = ZoneId.of("UTC"); private final Instant timestamp; diff --git a/core/src/main/java/org/opensearch/sql/data/model/ExprValueUtils.java b/core/src/main/java/org/opensearch/sql/data/model/ExprValueUtils.java index 407b6df5b3..44e0350d31 100644 --- a/core/src/main/java/org/opensearch/sql/data/model/ExprValueUtils.java +++ b/core/src/main/java/org/opensearch/sql/data/model/ExprValueUtils.java @@ -6,6 +6,10 @@ package org.opensearch.sql.data.model; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; import java.time.temporal.TemporalAmount; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -61,6 +65,22 @@ public static ExprValue intervalValue(TemporalAmount value) { return new ExprIntervalValue(value); } + public static ExprValue dateValue(LocalDate value) { + return new ExprDateValue(value); + } + + public static ExprValue datetimeValue(LocalDateTime value) { + return new ExprDatetimeValue(value); + } + + public static ExprValue timeValue(LocalTime value) { + return new ExprTimeValue(value); + } + + public static ExprValue timestampValue(Instant value) { + return new ExprTimestampValue(value); + } + /** * {@link ExprTupleValue} constructor. */ @@ -115,6 +135,14 @@ public static ExprValue fromObjectValue(Object o) { return stringValue((String) o); } else if (o instanceof Float) { return floatValue((Float) o); + } else if (o instanceof LocalDate) { + return dateValue((LocalDate) o); + } else if (o instanceof LocalDateTime) { + return datetimeValue((LocalDateTime) o); + } else if (o instanceof LocalTime) { + return timeValue((LocalTime) o); + } else if (o instanceof Instant) { + return timestampValue((Instant) o); } else { throw new ExpressionEvaluationException("unsupported object " + o.getClass()); } diff --git a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java index be3966188f..6ee5a79172 100644 --- a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java +++ b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java @@ -6,6 +6,7 @@ package org.opensearch.sql.expression.datetime; +import static java.time.temporal.ChronoUnit.DAYS; import static java.time.temporal.ChronoUnit.MINUTES; import static java.time.temporal.ChronoUnit.MONTHS; import static org.opensearch.sql.data.type.ExprCoreType.DATE; @@ -21,17 +22,20 @@ import static org.opensearch.sql.expression.function.FunctionDSL.impl; import static org.opensearch.sql.expression.function.FunctionDSL.implWithProperties; import static org.opensearch.sql.expression.function.FunctionDSL.nullMissingHandling; +import static org.opensearch.sql.expression.function.FunctionDSL.nullMissingHandlingWithProperties; import static org.opensearch.sql.utils.DateTimeFormatters.DATE_FORMATTER_LONG_YEAR; import static org.opensearch.sql.utils.DateTimeFormatters.DATE_FORMATTER_SHORT_YEAR; import static org.opensearch.sql.utils.DateTimeFormatters.DATE_TIME_FORMATTER_LONG_YEAR; import static org.opensearch.sql.utils.DateTimeFormatters.DATE_TIME_FORMATTER_SHORT_YEAR; import static org.opensearch.sql.utils.DateTimeFormatters.DATE_TIME_FORMATTER_STRICT_WITH_TZ; +import static org.opensearch.sql.utils.DateTimeUtils.extractDate; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; import java.time.Clock; import java.time.DateTimeException; +import java.time.Duration; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; @@ -97,6 +101,7 @@ public void register(BuiltinFunctionRepository repository) { repository.register(current_time()); repository.register(current_timestamp()); repository.register(date()); + repository.register(datediff()); repository.register(datetime()); repository.register(date_add()); repository.register(date_sub()); @@ -128,6 +133,7 @@ public void register(BuiltinFunctionRepository repository) { repository.register(sysdate()); repository.register(time()); repository.register(time_to_sec()); + repository.register(timediff()); repository.register(timestamp()); repository.register(utc_date()); repository.register(utc_time()); @@ -267,6 +273,46 @@ private DefaultFunctionResolver date() { impl(nullMissingHandling(DateTimeFunction::exprDate), DATE, TIMESTAMP)); } + /* + * Calculates the difference of date part of given values. + * (DATE/DATETIME/TIMESTAMP/TIME, DATE/DATETIME/TIMESTAMP/TIME) -> LONG + */ + private DefaultFunctionResolver datediff() { + return define(BuiltinFunctionName.DATEDIFF.getName(), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprDateDiff), + LONG, DATE, DATE), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprDateDiff), + LONG, DATETIME, DATE), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprDateDiff), + LONG, DATE, DATETIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprDateDiff), + LONG, DATETIME, DATETIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprDateDiff), + LONG, DATE, TIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprDateDiff), + LONG, TIME, DATE), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprDateDiff), + LONG, TIME, TIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprDateDiff), + LONG, TIMESTAMP, DATE), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprDateDiff), + LONG, DATE, TIMESTAMP), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprDateDiff), + LONG, TIMESTAMP, TIMESTAMP), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprDateDiff), + LONG, TIMESTAMP, TIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprDateDiff), + LONG, TIME, TIMESTAMP), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprDateDiff), + LONG, TIMESTAMP, DATETIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprDateDiff), + LONG, DATETIME, TIMESTAMP), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprDateDiff), + LONG, TIME, DATETIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprDateDiff), + LONG, DATETIME, TIME)); + } + /** * Specify a datetime with time zone field and a time zone to convert to. * Returns a local date time. @@ -538,6 +584,22 @@ private DefaultFunctionResolver time() { impl(nullMissingHandling(DateTimeFunction::exprTime), TIME, TIMESTAMP)); } + /** + * Returns different between two times as a time. + * (TIME, TIME) -> TIME + * MySQL has these signatures too + * (DATE, DATE) -> TIME // result is > 24 hours + * (DATETIME, DATETIME) -> TIME // result is > 24 hours + * (TIMESTAMP, TIMESTAMP) -> TIME // result is > 24 hours + * (x, x) -> NULL // when args have different types + * (STRING, STRING) -> TIME // argument strings contain same types only + * (STRING, STRING) -> NULL // argument strings are different types + */ + private DefaultFunctionResolver timediff() { + return define(BuiltinFunctionName.TIMEDIFF.getName(), + impl(nullMissingHandling(DateTimeFunction::exprTimeDiff), TIME, TIME, TIME)); + } + /** * TIME_TO_SEC(STRING/TIME/DATETIME/TIMESTAMP). return the time argument, converted to seconds. */ @@ -737,6 +799,22 @@ private ExprValue exprDate(ExprValue exprValue) { } } + /** + * Calculate the value in days from one date to the other. + * Only the date parts of the values are used in the calculation. + * + * @param first The first value. + * @param second The second value. + * @return The diff. + */ + private ExprValue exprDateDiff(FunctionProperties functionProperties, + ExprValue first, ExprValue second) { + // java inverses the value, so we have to swap 1 and 2 + return new ExprLongValue(DAYS.between( + extractDate(second, functionProperties), + extractDate(first, functionProperties))); + } + /** * DateTime implementation for ExprValue. * @@ -1096,6 +1174,19 @@ private ExprValue exprTime(ExprValue exprValue) { } } + /** + * Calculate the time difference between two times. + * + * @param first The first value. + * @param second The second value. + * @return The diff. + */ + private ExprValue exprTimeDiff(ExprValue first, ExprValue second) { + // java inverses the value, so we have to swap 1 and 2 + return new ExprTimeValue(LocalTime.MIN.plus( + Duration.between(second.timeValue(), first.timeValue()))); + } + /** * Timestamp implementation for ExprValue. * diff --git a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java index e461419f04..50c8682c62 100644 --- a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java +++ b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java @@ -61,6 +61,7 @@ public enum BuiltinFunctionName { ADDDATE(FunctionName.of("adddate")), CONVERT_TZ(FunctionName.of("convert_tz")), DATE(FunctionName.of("date")), + DATEDIFF(FunctionName.of("datediff")), DATETIME(FunctionName.of("datetime")), DATE_ADD(FunctionName.of("date_add")), DATE_SUB(FunctionName.of("date_sub")), @@ -87,6 +88,7 @@ public enum BuiltinFunctionName { SECOND(FunctionName.of("second")), SUBDATE(FunctionName.of("subdate")), TIME(FunctionName.of("time")), + TIMEDIFF(FunctionName.of("timediff")), TIME_TO_SEC(FunctionName.of("time_to_sec")), TIMESTAMP(FunctionName.of("timestamp")), DATE_FORMAT(FunctionName.of("date_format")), diff --git a/core/src/main/java/org/opensearch/sql/expression/function/FunctionDSL.java b/core/src/main/java/org/opensearch/sql/expression/function/FunctionDSL.java index 5b182f76f4..1bf38f7722 100644 --- a/core/src/main/java/org/opensearch/sql/expression/function/FunctionDSL.java +++ b/core/src/main/java/org/opensearch/sql/expression/function/FunctionDSL.java @@ -137,6 +137,52 @@ public String toString() { }; } + /** + * Implementation of a function that takes two arguments, returns a value, and + * requires FunctionProperties to complete. + * + * @param function {@link ExprValue} based unary function. + * @param returnType return type. + * @param args1Type first argument type. + * @param args2Type second argument type. + * @return Unary Function Implementation. + */ + public static SerializableFunction> + implWithProperties( + SerializableTriFunction function, + ExprType returnType, + ExprType args1Type, + ExprType args2Type) { + + return functionName -> { + FunctionSignature functionSignature = + new FunctionSignature(functionName, Arrays.asList(args1Type, args2Type)); + FunctionBuilder functionBuilder = + (functionProperties, arguments) -> new FunctionExpression(functionName, arguments) { + @Override + public ExprValue valueOf(Environment valueEnv) { + ExprValue arg1 = arguments.get(0).valueOf(valueEnv); + ExprValue arg2 = arguments.get(1).valueOf(valueEnv); + return function.apply(functionProperties, arg1, arg2); + } + + @Override + public ExprType type() { + return returnType; + } + + @Override + public String toString() { + return String.format("%s(%s)", functionName, + arguments.stream() + .map(Object::toString) + .collect(Collectors.joining(", "))); + } + }; + return Pair.of(functionSignature, functionBuilder); + }; + } + /** * No Arg Function Implementation. * @@ -181,31 +227,8 @@ public static SerializableFunction { - FunctionSignature functionSignature = - new FunctionSignature(functionName, Arrays.asList(args1Type, args2Type)); - FunctionBuilder functionBuilder = - (functionProperties, arguments) -> new FunctionExpression(functionName, arguments) { - @Override - public ExprValue valueOf(Environment valueEnv) { - ExprValue arg1 = arguments.get(0).valueOf(valueEnv); - ExprValue arg2 = arguments.get(1).valueOf(valueEnv); - return function.apply(arg1, arg2); - } - - @Override - public ExprType type() { - return returnType; - } - - @Override - public String toString() { - return String.format("%s(%s, %s)", functionName, arguments.get(0).toString(), - arguments.get(1).toString()); - } - }; - return Pair.of(functionSignature, functionBuilder); - }; + return implWithProperties((fp, arg1, arg2) -> + function.apply(arg1, arg2), returnType, args1Type, args2Type); } /** @@ -317,4 +340,22 @@ public SerializableTriFunction nullM } }; } + + /** + * Wrapper for the ExprValue function that takes 2 arguments and is aware of FunctionProperties, + * with default NULL and MISSING handling. + */ + public static SerializableTriFunction + nullMissingHandlingWithProperties( + SerializableTriFunction implementation) { + return (functionProperties, v1, v2) -> { + if (v1.isMissing() || v2.isMissing()) { + return ExprValueUtils.missingValue(); + } else if (v1.isNull() || v2.isNull()) { + return ExprValueUtils.nullValue(); + } else { + return implementation.apply(functionProperties, v1, v2); + } + }; + } } diff --git a/core/src/main/java/org/opensearch/sql/utils/DateTimeUtils.java b/core/src/main/java/org/opensearch/sql/utils/DateTimeUtils.java index 5a99af3f83..28bb4e6918 100644 --- a/core/src/main/java/org/opensearch/sql/utils/DateTimeUtils.java +++ b/core/src/main/java/org/opensearch/sql/utils/DateTimeUtils.java @@ -6,10 +6,14 @@ package org.opensearch.sql.utils; import java.time.Instant; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; import lombok.experimental.UtilityClass; +import org.opensearch.sql.data.model.ExprTimeValue; +import org.opensearch.sql.data.model.ExprValue; +import org.opensearch.sql.expression.function.FunctionProperties; @UtilityClass public class DateTimeUtils { @@ -125,4 +129,15 @@ public Boolean isValidMySqlTimeZoneId(ZoneId zone) { && (passedTzValidator.isAfter(minTzValidator) || passedTzValidator.isEqual(minTzValidator)); } + + /** + * Extracts LocalDate from a datetime ExprValue. + * Uses `FunctionProperties` for `ExprTimeValue`. + */ + public static LocalDate extractDate(ExprValue value, + FunctionProperties functionProperties) { + return value instanceof ExprTimeValue + ? ((ExprTimeValue) value).dateValue(functionProperties) + : value.dateValue(); + } } diff --git a/core/src/test/java/org/opensearch/sql/data/model/DateTimeValueTest.java b/core/src/test/java/org/opensearch/sql/data/model/DateTimeValueTest.java index 3a7df17d90..a335478e19 100644 --- a/core/src/test/java/org/opensearch/sql/data/model/DateTimeValueTest.java +++ b/core/src/test/java/org/opensearch/sql/data/model/DateTimeValueTest.java @@ -15,11 +15,11 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; -import java.time.ZoneId; import java.time.ZonedDateTime; import org.junit.jupiter.api.Test; import org.opensearch.sql.exception.ExpressionEvaluationException; import org.opensearch.sql.exception.SemanticCheckException; +import org.opensearch.sql.expression.function.FunctionProperties; public class DateTimeValueTest { @@ -27,14 +27,33 @@ public class DateTimeValueTest { @Test public void timeValueInterfaceTest() { - ExprValue timeValue = new ExprTimeValue("01:01:01"); + ExprTimeValue timeValue = new ExprTimeValue("01:01:01"); assertEquals(TIME, timeValue.type()); + assertEquals(LocalTime.parse("01:01:01"), timeValue.timeValue()); + // It is prohibited to acquire values which include date part from `ExprTimeValue` + // without a FunctionProperties object + var exception = assertThrows(ExpressionEvaluationException.class, timeValue::dateValue); + assertEquals("invalid to get dateValue from value of type TIME", exception.getMessage()); + exception = assertThrows(ExpressionEvaluationException.class, timeValue::datetimeValue); + assertEquals("invalid to get datetimeValue from value of type TIME", exception.getMessage()); + exception = assertThrows(ExpressionEvaluationException.class, timeValue::timestampValue); + assertEquals("invalid to get timestampValue from value of type TIME", exception.getMessage()); + + var functionProperties = new FunctionProperties(); + var today = LocalDate.now(functionProperties.getQueryStartClock()); + + assertEquals(today, timeValue.dateValue(functionProperties)); + assertEquals(today.atTime(1, 1, 1), timeValue.datetimeValue(functionProperties)); + assertEquals(ZonedDateTime.of(LocalTime.parse("01:01:01").atDate(today), + ExprTimestampValue.ZONE).toInstant(), timeValue.timestampValue(functionProperties)); + assertEquals("01:01:01", timeValue.value()); assertEquals("TIME '01:01:01'", timeValue.toString()); - assertThrows(ExpressionEvaluationException.class, () -> integerValue(1).timeValue(), - "invalid to get timeValue from value of type INTEGER"); + exception = assertThrows(ExpressionEvaluationException.class, + () -> integerValue(1).timeValue()); + assertEquals("invalid to get timeValue from value of type INTEGER", exception.getMessage()); } @Test @@ -43,7 +62,7 @@ public void timestampValueInterfaceTest() { assertEquals(TIMESTAMP, timestampValue.type()); assertEquals(ZonedDateTime.of(LocalDateTime.parse("2020-07-07T01:01:01"), - ZoneId.of("UTC")).toInstant(), timestampValue.timestampValue()); + ExprTimestampValue.ZONE).toInstant(), timestampValue.timestampValue()); assertEquals("2020-07-07 01:01:01", timestampValue.value()); assertEquals("TIMESTAMP '2020-07-07 01:01:01'", timestampValue.toString()); assertEquals(LocalDate.parse("2020-07-07"), timestampValue.dateValue()); @@ -61,7 +80,7 @@ public void dateValueInterfaceTest() { assertEquals(LocalTime.parse("00:00:00"), dateValue.timeValue()); assertEquals(LocalDateTime.parse("2012-07-07T00:00:00"), dateValue.datetimeValue()); assertEquals(ZonedDateTime.of(LocalDateTime.parse("2012-07-07T00:00:00"), - ZoneId.systemDefault()).toInstant(), dateValue.timestampValue()); + ExprTimestampValue.ZONE).toInstant(), dateValue.timestampValue()); ExpressionEvaluationException exception = assertThrows(ExpressionEvaluationException.class, () -> integerValue(1).dateValue()); assertEquals("invalid to get dateValue from value of type INTEGER", @@ -76,7 +95,7 @@ public void datetimeValueInterfaceTest() { assertEquals(LocalDate.parse("2020-08-17"), datetimeValue.dateValue()); assertEquals(LocalTime.parse("19:44:00"), datetimeValue.timeValue()); assertEquals(ZonedDateTime.of(LocalDateTime.parse("2020-08-17T19:44:00"), - ZoneId.of("UTC")).toInstant(), datetimeValue.timestampValue()); + ExprTimestampValue.ZONE).toInstant(), datetimeValue.timestampValue()); assertEquals("DATETIME '2020-08-17 19:44:00'", datetimeValue.toString()); assertThrows(ExpressionEvaluationException.class, () -> integerValue(1).datetimeValue(), "invalid to get datetimeValue from value of type INTEGER"); diff --git a/core/src/test/java/org/opensearch/sql/expression/datetime/DateDiffTest.java b/core/src/test/java/org/opensearch/sql/expression/datetime/DateDiffTest.java new file mode 100644 index 0000000000..72c1ceba03 --- /dev/null +++ b/core/src/test/java/org/opensearch/sql/expression/datetime/DateDiffTest.java @@ -0,0 +1,77 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.sql.expression.datetime; + +import static java.time.temporal.ChronoUnit.DAYS; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; +import java.time.temporal.Temporal; +import java.util.TimeZone; +import java.util.stream.Stream; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +public class DateDiffTest extends DateTimeTestBase { + + private static final LocalTime timeSample1 = LocalTime.of(12, 42); + private static final LocalTime timeSample2 = LocalTime.of(7, 40); + private static final LocalDate dateSample1 = LocalDate.of(2022, 6, 6); + private static final LocalDate dateSample2 = LocalDate.of(1961, 4, 12); + private static final LocalDate dateSample3 = LocalDate.of(1993, 3, 4); + private static final LocalDate epochStart = LocalDate.of(1970, 1, 1); + private static final LocalDate dateNow = LocalDate.now(); + private static final LocalDateTime dateTimeSample1 = LocalDateTime.of(1961, 4, 12, 9, 7); + private static final LocalDateTime dateTimeSample2 = LocalDateTime.of(1993, 3, 4, 5, 6); + + // Function signature is: + // (DATE/DATETIME/TIMESTAMP/TIME, DATE/DATETIME/TIMESTAMP/TIME) -> LONG + private static Stream getTestData() { + // Arguments are: first argument for `DATE_DIFF` function, second argument and expected result. + return Stream.of( + Arguments.of(timeSample1, timeSample2, 0L), + Arguments.of(timeSample1, dateNow, 0L), + Arguments.of(timeSample1, LocalDateTime.now(), 0L), + Arguments.of(timeSample1, + Instant.now().plusMillis(TimeZone.getDefault().getRawOffset()), 0L), + Arguments.of(dateSample1, timeSample1, + -DAYS.between(dateSample1, dateNow)), + Arguments.of(dateSample1, dateSample3, + -DAYS.between(dateSample1, dateSample3)), + Arguments.of(dateSample1, dateTimeSample1, + -DAYS.between(dateSample1, dateSample2)), + Arguments.of(dateSample1, Instant.ofEpochSecond(42), + -DAYS.between(dateSample1, epochStart)), + Arguments.of(dateTimeSample1, LocalTime.now(), + -DAYS.between(dateSample2, dateNow)), + Arguments.of(dateTimeSample1, dateSample3, + -DAYS.between(dateSample2, dateSample3)), + Arguments.of(dateTimeSample1, dateTimeSample2, + -DAYS.between(dateSample2, dateSample3)), + Arguments.of(dateTimeSample1, Instant.ofEpochSecond(0), + -DAYS.between(dateSample2, epochStart)), + Arguments.of(Instant.ofEpochSecond(0), LocalTime.MAX, + -DAYS.between(epochStart, dateNow)), + Arguments.of(Instant.ofEpochSecond(0), dateSample3, + -DAYS.between(epochStart, dateSample3)), + Arguments.of(Instant.ofEpochSecond(0), dateTimeSample2, + -DAYS.between(epochStart, dateSample3)), + Arguments.of(Instant.ofEpochSecond(0), Instant.now(), + -DAYS.between(epochStart, LocalDateTime.now(ZoneId.of("UTC")))) + ); + } + + @ParameterizedTest + @MethodSource("getTestData") + public void try_different_data(Temporal arg1, Temporal arg2, Long expectedResult) { + assertEquals(expectedResult, datediff(arg1, arg2)); + } +} diff --git a/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeTestBase.java b/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeTestBase.java index 555759f1b1..7517b27944 100644 --- a/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeTestBase.java +++ b/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeTestBase.java @@ -5,10 +5,14 @@ package org.opensearch.sql.expression.datetime; +import static org.opensearch.sql.data.model.ExprValueUtils.fromObjectValue; +import static org.opensearch.sql.data.type.ExprCoreType.DOUBLE; + import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; +import java.time.temporal.Temporal; import java.util.List; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.extension.ExtendWith; @@ -18,6 +22,7 @@ import org.opensearch.sql.data.model.ExprDatetimeValue; import org.opensearch.sql.data.model.ExprMissingValue; import org.opensearch.sql.data.model.ExprNullValue; +import org.opensearch.sql.data.model.ExprTimeValue; import org.opensearch.sql.data.model.ExprTimestampValue; import org.opensearch.sql.data.model.ExprValue; import org.opensearch.sql.expression.DSL; @@ -38,14 +43,6 @@ public class DateTimeTestBase extends ExpressionTestBase { @Mock protected Environment env; - - protected static FunctionProperties functionProperties; - - @BeforeAll - public static void setup() { - functionProperties = new FunctionProperties(); - } - protected Expression nullRef = DSL.literal(ExprNullValue.of()); protected Expression missingRef = DSL.literal(ExprMissingValue.of()); @@ -54,6 +51,17 @@ protected ExprValue eval(Expression expression) { return expression.valueOf(env); } + protected FunctionExpression datediff(Expression first, Expression second) { + return (FunctionExpression) functionRepository.compile( + functionProperties, + BuiltinFunctionName.DATEDIFF.getName(), List.of(first, second)); + } + + protected Long datediff(Temporal first, Temporal second) { + return datediff(DSL.literal(fromObjectValue(first)), DSL.literal(fromObjectValue(second))) + .valueOf(null).longValue(); + } + protected LocalDateTime fromUnixTime(Double value) { return fromUnixTime(DSL.literal(value)).valueOf().datetimeValue(); } @@ -92,7 +100,6 @@ protected FunctionExpression maketime(Expression hour, Expression minute, Expres BuiltinFunctionName.MAKETIME.getName(), List.of(hour, minute, second)); } - protected LocalTime maketime(Double hour, Double minute, Double second) { return maketime(DSL.literal(hour), DSL.literal(minute), DSL.literal(second)) .valueOf().timeValue(); @@ -130,6 +137,17 @@ protected Integer period_diff(Integer first, Integer second) { .valueOf().integerValue(); } + protected FunctionExpression timediff(Expression first, Expression second) { + return (FunctionExpression) functionRepository.compile( + functionProperties, + BuiltinFunctionName.TIMEDIFF.getName(), List.of(first, second)); + } + + protected LocalTime timediff(LocalTime first, LocalTime second) { + return timediff(DSL.literal(new ExprTimeValue(first)), DSL.literal(new ExprTimeValue(second))) + .valueOf(null).timeValue(); + } + protected FunctionExpression unixTimeStampExpr() { return (FunctionExpression) functionRepository.compile( functionProperties, BuiltinFunctionName.UNIX_TIMESTAMP.getName(), List.of()); diff --git a/core/src/test/java/org/opensearch/sql/expression/datetime/TimeDiffTest.java b/core/src/test/java/org/opensearch/sql/expression/datetime/TimeDiffTest.java new file mode 100644 index 0000000000..8bfb09bd49 --- /dev/null +++ b/core/src/test/java/org/opensearch/sql/expression/datetime/TimeDiffTest.java @@ -0,0 +1,42 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.sql.expression.datetime; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.time.LocalTime; +import java.util.stream.Stream; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import org.opensearch.sql.data.model.ExprTimeValue; +import org.opensearch.sql.expression.DSL; + +public class TimeDiffTest extends DateTimeTestBase { + + private static Stream getTestData() { + return Stream.of( + Arguments.of(LocalTime.of(12, 42), LocalTime.of(7, 40), LocalTime.of(5, 2)), + Arguments.of(LocalTime.of(7, 40), LocalTime.of(12, 42), LocalTime.of(18, 58)), + Arguments.of(LocalTime.of(7, 40), LocalTime.of(7, 40), LocalTime.of(0, 0)), + Arguments.of(LocalTime.MAX, LocalTime.MIN, LocalTime.MAX) + ); + } + + /** + * Test `TIME_DIFF` function with different data. + * @param arg1 First argument. + * @param arg2 Second argument. + * @param expectedResult Expected result. + */ + @ParameterizedTest + @MethodSource("getTestData") + public void try_different_data(LocalTime arg1, LocalTime arg2, LocalTime expectedResult) { + assertEquals(expectedResult, timediff(arg1, arg2)); + assertEquals(expectedResult, eval(timediff(DSL.literal(new ExprTimeValue(arg1)), + DSL.literal(new ExprTimeValue(arg2)))).timeValue()); + } +} diff --git a/core/src/test/java/org/opensearch/sql/expression/function/FunctionDSLTestBase.java b/core/src/test/java/org/opensearch/sql/expression/function/FunctionDSLTestBase.java index 193066e626..63c6ea3329 100644 --- a/core/src/test/java/org/opensearch/sql/expression/function/FunctionDSLTestBase.java +++ b/core/src/test/java/org/opensearch/sql/expression/function/FunctionDSLTestBase.java @@ -52,6 +52,8 @@ public int compareTo(ExprValue o) { static final SerializableFunction oneArg = v -> ANY; static final SerializableBiFunction oneArgWithProperties = (functionProperties, v) -> ANY; + static final SerializableTriFunction + twoArgWithProperties = (functionProperties, v1, v2) -> ANY; static final SerializableBiFunction twoArgs = (v1, v2) -> ANY; diff --git a/core/src/test/java/org/opensearch/sql/expression/function/FunctionDSLimplWithPropertiesTwoArgTest.java b/core/src/test/java/org/opensearch/sql/expression/function/FunctionDSLimplWithPropertiesTwoArgTest.java new file mode 100644 index 0000000000..18444a476e --- /dev/null +++ b/core/src/test/java/org/opensearch/sql/expression/function/FunctionDSLimplWithPropertiesTwoArgTest.java @@ -0,0 +1,33 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.sql.expression.function; + +import java.util.List; +import org.apache.commons.lang3.tuple.Pair; +import org.opensearch.sql.data.model.ExprValue; +import org.opensearch.sql.expression.DSL; +import org.opensearch.sql.expression.Expression; + +class FunctionDSLimplWithPropertiesTwoArgTest extends FunctionDSLimplTestBase { + + @Override + SerializableFunction> + getImplementationGenerator() { + SerializableTriFunction functionBody + = (fp, arg1, arg2) -> ANY; + return FunctionDSL.implWithProperties(functionBody, ANY_TYPE, ANY_TYPE, ANY_TYPE); + } + + @Override + List getSampleArguments() { + return List.of(DSL.literal(ANY), DSL.literal(ANY)); + } + + @Override + String getExpected_toString() { + return "sample(ANY, ANY)"; + } +} diff --git a/core/src/test/java/org/opensearch/sql/expression/function/FunctionDSLnullMissingHandlingTest.java b/core/src/test/java/org/opensearch/sql/expression/function/FunctionDSLnullMissingHandlingTest.java index 64cac278f6..17f1de355f 100644 --- a/core/src/test/java/org/opensearch/sql/expression/function/FunctionDSLnullMissingHandlingTest.java +++ b/core/src/test/java/org/opensearch/sql/expression/function/FunctionDSLnullMissingHandlingTest.java @@ -47,6 +47,41 @@ void nullMissingHandling_oneArg_FunctionProperties_apply() { nullMissingHandlingWithProperties(oneArgWithProperties).apply(functionProperties, ANY)); } + @Test + void nullMissingHandling_twoArgs_FunctionProperties_nullValue_firstArg() { + assertEquals(NULL, + nullMissingHandlingWithProperties(twoArgWithProperties) + .apply(functionProperties, NULL, ANY)); + } + + @Test + void nullMissingHandling_twoArgs_FunctionProperties_nullValue_secondArg() { + assertEquals(NULL, + nullMissingHandlingWithProperties(twoArgWithProperties) + .apply(functionProperties, ANY, NULL)); + } + + @Test + void nullMissingHandling_twoArgs_FunctionProperties_missingValue_firstArg() { + assertEquals(MISSING, + nullMissingHandlingWithProperties(twoArgWithProperties) + .apply(functionProperties, MISSING, ANY)); + } + + @Test + void nullMissingHandling_twoArgs_FunctionProperties_missingValue_secondArg() { + assertEquals(MISSING, + nullMissingHandlingWithProperties(twoArgWithProperties) + .apply(functionProperties, ANY, MISSING)); + } + + @Test + void nullMissingHandling_twoArgs_FunctionProperties_apply() { + assertEquals(ANY, + nullMissingHandlingWithProperties(twoArgWithProperties) + .apply(functionProperties, ANY, ANY)); + } + @Test void nullMissingHandling_twoArgs_firstArg_nullValue() { assertEquals(NULL, nullMissingHandling(twoArgs).apply(NULL, ANY)); diff --git a/docs/user/dql/functions.rst b/docs/user/dql/functions.rst index 6c6e77a24b..7f7284c95b 100644 --- a/docs/user/dql/functions.rst +++ b/docs/user/dql/functions.rst @@ -1353,6 +1353,26 @@ Example:: +-------------------------------------------------+-----------------------------------+-------------------------------------------------+ +DATEDIFF +-------- + +Usage: Calculates the difference of date parts of the given values. If the first argument is time, today's date is used. + +Argument type: DATE/DATETIME/TIMESTAMP/TIME, DATE/DATETIME/TIMESTAMP/TIME + +Return type: LONG + +Example:: + + os> SELECT DATEDIFF(TIMESTAMP('2000-01-02 00:00:00'), TIMESTAMP('2000-01-01 23:59:59')) AS `'2000-01-02' - '2000-01-01'`, DATEDIFF(DATE('2001-02-01'), TIMESTAMP('2004-01-01 00:00:00')) AS `'2001-02-01' - '2004-01-01'`, DATEDIFF(TIME('23:59:59'), TIME('00:00:00')) AS `today - today` + fetched rows / total rows = 1/1 + +-------------------------------+-------------------------------+-----------------+ + | '2000-01-02' - '2000-01-01' | '2001-02-01' - '2004-01-01' | today - today | + |-------------------------------+-------------------------------+-----------------| + | 1 | -1064 | 0 | + +-------------------------------+-------------------------------+-----------------+ + + DAY --- @@ -2061,6 +2081,29 @@ Example:: +--------------------------------+ +TIMEDIFF +-------- + +Description +>>>>>>>>>>> + +Usage: returns the difference between two time expressions as a time. + +Argument type: TIME, TIME + +Return type: TIME + +Example:: + + os> SELECT TIMEDIFF('23:59:59', '13:00:00') + fetched rows / total rows = 1/1 + +------------------------------------+ + | TIMEDIFF('23:59:59', '13:00:00') | + |------------------------------------| + | 10:59:59 | + +------------------------------------+ + + TIMESTAMP --------- diff --git a/docs/user/ppl/functions/datetime.rst b/docs/user/ppl/functions/datetime.rst index 99ccc8e360..60a8660c7a 100644 --- a/docs/user/ppl/functions/datetime.rst +++ b/docs/user/ppl/functions/datetime.rst @@ -537,6 +537,26 @@ Example:: +-------------------------------------------------+-----------------------------------+-------------------------------------------------+ +DATEDIFF +-------- + +Usage: Calculates the difference of date parts of given values. If the first argument is time, today's date is used. + +Argument type: DATE/DATETIME/TIMESTAMP/TIME, DATE/DATETIME/TIMESTAMP/TIME + +Return type: LONG + +Example:: + + os> source=people | eval `'2000-01-02' - '2000-01-01'` = DATEDIFF(TIMESTAMP('2000-01-02 00:00:00'), TIMESTAMP('2000-01-01 23:59:59')), `'2001-02-01' - '2004-01-01'` = DATEDIFF(DATE('2001-02-01'), TIMESTAMP('2004-01-01 00:00:00')), `today - today` = DATEDIFF(TIME('23:59:59'), TIME('00:00:00')) | fields `'2000-01-02' - '2000-01-01'`, `'2001-02-01' - '2004-01-01'`, `today - today` + fetched rows / total rows = 1/1 + +-------------------------------+-------------------------------+-----------------+ + | '2000-01-02' - '2000-01-01' | '2001-02-01' - '2004-01-01' | today - today | + |-------------------------------+-------------------------------+-----------------| + | 1 | -1064 | 0 | + +-------------------------------+-------------------------------+-----------------+ + + DAY --- @@ -1179,6 +1199,29 @@ Example:: +---------------------------------+ +TIMEDIFF +-------- + +Description +>>>>>>>>>>> + +Usage: returns the difference between two time expressions as a time. + +Argument type: TIME, TIME + +Return type: TIME + +Example:: + + os> source=people | eval `TIMEDIFF('23:59:59', '13:00:00')` = TIMEDIFF('23:59:59', '13:00:00') | fields `TIMEDIFF('23:59:59', '13:00:00')` + fetched rows / total rows = 1/1 + +------------------------------------+ + | TIMEDIFF('23:59:59', '13:00:00') | + |------------------------------------| + | 10:59:59 | + +------------------------------------+ + + TIMESTAMP --------- diff --git a/integ-test/src/test/java/org/opensearch/sql/ppl/DateTimeFunctionIT.java b/integ-test/src/test/java/org/opensearch/sql/ppl/DateTimeFunctionIT.java index 004d8a0648..9f59caefc6 100644 --- a/integ-test/src/test/java/org/opensearch/sql/ppl/DateTimeFunctionIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/ppl/DateTimeFunctionIT.java @@ -906,4 +906,27 @@ public void testPeriodDiff() throws IOException { verifySchema(result, schema("f1", null, "integer"), schema("f2", null, "integer")); verifySome(result.getJSONArray("datarows"), rows(11, -25)); } + + public void testDateDiff() throws IOException { + var result = executeQuery(String.format("source=%s | eval" + + " `'2000-01-02' - '2000-01-01'` = DATEDIFF(TIMESTAMP('2000-01-02 00:00:00'), TIMESTAMP('2000-01-01 23:59:59'))," + + " `'2001-02-01' - '2004-01-01'` = DATEDIFF(DATE('2001-02-01'), TIMESTAMP('2004-01-01 00:00:00'))," + + " `'2004-01-01' - '2002-02-01'` = DATEDIFF(TIMESTAMP('2004-01-01 00:00:00'), DATETIME('2002-02-01 14:25:30'))," + + " `today - today` = DATEDIFF(TIME('23:59:59'), TIME('00:00:00'))" + + " | fields `'2000-01-02' - '2000-01-01'`, `'2001-02-01' - '2004-01-01'`, `'2004-01-01' - '2002-02-01'`, `today - today`", TEST_INDEX_DATE)); + verifySchema(result, + schema("'2000-01-02' - '2000-01-01'", null, "long"), + schema("'2001-02-01' - '2004-01-01'", null, "long"), + schema("'2004-01-01' - '2002-02-01'", null, "long"), + schema("today - today", null, "long")); + verifySome(result.getJSONArray("datarows"), rows(1, -1064, 699, 0)); + } + + @Test + public void testTimeDiff() throws IOException { + var result = executeQuery(String.format( + "source=%s | eval f = TIMEDIFF('23:59:59', '13:00:00') | fields f", TEST_INDEX_DATE)); + verifySchema(result, schema("f", null, "time")); + verifySome(result.getJSONArray("datarows"), rows("10:59:59")); + } } diff --git a/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java b/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java index 957275852f..e135f15523 100644 --- a/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java @@ -904,6 +904,27 @@ public void testPeriodDiff() throws IOException { verifyDataRows(result, rows(11, -25)); } + public void testDateDiff() throws IOException { + var result = executeQuery("SELECT" + + " DATEDIFF(TIMESTAMP('2000-01-02 00:00:00'), TIMESTAMP('2000-01-01 23:59:59')) AS `'2000-01-02' - '2000-01-01'`," + + " DATEDIFF(DATE('2001-02-01'), TIMESTAMP('2004-01-01 00:00:00')) AS `'2001-02-01' - '2004-01-01'`," + + " DATEDIFF(TIMESTAMP('2004-01-01 00:00:00'), DATETIME('2002-02-01 14:25:30')) AS `'2004-01-01' - '2002-02-01'`," + + " DATEDIFF(TIME('23:59:59'), TIME('00:00:00')) AS `today - today`"); + verifySchema(result, + schema("DATEDIFF(TIMESTAMP('2000-01-02 00:00:00'), TIMESTAMP('2000-01-01 23:59:59'))", "'2000-01-02' - '2000-01-01'", "long"), + schema("DATEDIFF(DATE('2001-02-01'), TIMESTAMP('2004-01-01 00:00:00'))", "'2001-02-01' - '2004-01-01'", "long"), + schema("DATEDIFF(TIMESTAMP('2004-01-01 00:00:00'), DATETIME('2002-02-01 14:25:30'))", "'2004-01-01' - '2002-02-01'", "long"), + schema("DATEDIFF(TIME('23:59:59'), TIME('00:00:00'))", "today - today", "long")); + verifyDataRows(result, rows(1, -1064, 699, 0)); + } + + @Test + public void testTimeDiff() throws IOException { + var result = executeQuery("select TIMEDIFF('23:59:59', '13:00:00') as f"); + verifySchema(result, schema("TIMEDIFF('23:59:59', '13:00:00')", "f", "time")); + verifyDataRows(result, rows("10:59:59")); + } + protected JSONObject executeQuery(String query) throws IOException { Request request = new Request("POST", QUERY_API_ENDPOINT); request.setJsonEntity(String.format(Locale.ROOT, "{\n" + " \"query\": \"%s\"\n" + "}", query)); diff --git a/ppl/src/main/antlr/OpenSearchPPLLexer.g4 b/ppl/src/main/antlr/OpenSearchPPLLexer.g4 index 9282c42308..778d9fb3f9 100644 --- a/ppl/src/main/antlr/OpenSearchPPLLexer.g4 +++ b/ppl/src/main/antlr/OpenSearchPPLLexer.g4 @@ -247,6 +247,7 @@ DATE: 'DATE'; DATE_ADD: 'DATE_ADD'; DATE_FORMAT: 'DATE_FORMAT'; DATE_SUB: 'DATE_SUB'; +DATEDIFF: 'DATEDIFF'; DAYNAME: 'DAYNAME'; DAYOFMONTH: 'DAYOFMONTH'; DAYOFWEEK: 'DAYOFWEEK'; @@ -265,6 +266,7 @@ SUBDATE: 'SUBDATE'; SYSDATE: 'SYSDATE'; TIME: 'TIME'; TIME_TO_SEC: 'TIME_TO_SEC'; +TIMEDIFF: 'TIMEDIFF'; TIMESTAMP: 'TIMESTAMP'; TO_DAYS: 'TO_DAYS'; UTC_DATE: 'UTC_DATE'; diff --git a/ppl/src/main/antlr/OpenSearchPPLParser.g4 b/ppl/src/main/antlr/OpenSearchPPLParser.g4 index d7491abb51..cb9bfae32f 100644 --- a/ppl/src/main/antlr/OpenSearchPPLParser.g4 +++ b/ppl/src/main/antlr/OpenSearchPPLParser.g4 @@ -441,6 +441,7 @@ dateAndTimeFunctionBase | DATE_ADD | DATE_FORMAT | DATE_SUB + | DATEDIFF | DATETIME | DAY | DAYNAME @@ -469,6 +470,7 @@ dateAndTimeFunctionBase | SYSDATE | TIME | TIME_TO_SEC + | TIMEDIFF | TIMESTAMP | TO_DAYS | UNIX_TIMESTAMP diff --git a/sql/src/main/antlr/OpenSearchSQLLexer.g4 b/sql/src/main/antlr/OpenSearchSQLLexer.g4 index 01016992e9..63fd51fc5d 100644 --- a/sql/src/main/antlr/OpenSearchSQLLexer.g4 +++ b/sql/src/main/antlr/OpenSearchSQLLexer.g4 @@ -200,6 +200,7 @@ DATE: 'DATE'; DATE_ADD: 'DATE_ADD'; DATE_FORMAT: 'DATE_FORMAT'; DATE_SUB: 'DATE_SUB'; +DATEDIFF: 'DATEDIFF'; DAYNAME: 'DAYNAME'; DAYOFMONTH: 'DAYOFMONTH'; DAYOFWEEK: 'DAYOFWEEK'; @@ -254,6 +255,7 @@ SUBTRACT: 'SUBTRACT'; SYSDATE: 'SYSDATE'; TAN: 'TAN'; TIME: 'TIME'; +TIMEDIFF: 'TIMEDIFF'; TIME_TO_SEC: 'TIME_TO_SEC'; TIMESTAMP: 'TIMESTAMP'; TRUNCATE: 'TRUNCATE'; diff --git a/sql/src/main/antlr/OpenSearchSQLParser.g4 b/sql/src/main/antlr/OpenSearchSQLParser.g4 index 91ccb4d16d..4975a1e7c7 100644 --- a/sql/src/main/antlr/OpenSearchSQLParser.g4 +++ b/sql/src/main/antlr/OpenSearchSQLParser.g4 @@ -415,6 +415,7 @@ dateTimeFunctionName | DATE_ADD | DATE_FORMAT | DATE_SUB + | DATEDIFF | DATETIME | DAY | DAYNAME @@ -440,6 +441,7 @@ dateTimeFunctionName | SYSDATE | TIME | TIME_TO_SEC + | TIMEDIFF | TIMESTAMP | TO_DAYS | UNIX_TIMESTAMP From b919ba023a48f0d73a58c94a79354b6ffe291384 Mon Sep 17 00:00:00 2001 From: GabeFernandez310 Date: Fri, 6 Jan 2023 10:36:52 -0800 Subject: [PATCH 32/55] Add Alternate Syntax For Match_Query And Other Functions (#1166) Added Tests And Implementation For Match_Query, Match_Phrase, and Multi_Match Functions Signed-off-by: GabeFernandez310 Signed-off-by: GabeFernandez310 --- docs/user/dql/functions.rst | 55 +++++++++++++ .../opensearch/sql/legacy/MethodQueryIT.java | 2 +- .../java/org/opensearch/sql/sql/MatchIT.java | 33 +++++++- .../org/opensearch/sql/sql/MatchPhraseIT.java | 28 ++++++- .../org/opensearch/sql/sql/MultiMatchIT.java | 31 +++++++ sql/src/main/antlr/OpenSearchSQLParser.g4 | 27 ++++++- .../sql/sql/parser/AstExpressionBuilder.java | 43 ++++++++++ .../sql/sql/antlr/SQLSyntaxParserTest.java | 24 ++++++ .../sql/parser/AstExpressionBuilderTest.java | 81 +++++++++++++++++++ 9 files changed, 320 insertions(+), 4 deletions(-) diff --git a/docs/user/dql/functions.rst b/docs/user/dql/functions.rst index 7f7284c95b..1726c92054 100644 --- a/docs/user/dql/functions.rst +++ b/docs/user/dql/functions.rst @@ -3044,6 +3044,16 @@ Another example to show how to set custom values for the optional parameters:: | Bond | +------------+ + The matchquery function also supports an alternative syntax:: + + os> SELECT firstname FROM accounts WHERE firstname = matchquery('Hattie'); + fetched rows / total rows = 1/1 + +-------------+ + | firstname | + |-------------| + | Hattie | + +-------------+ + MATCH_QUERY ----- @@ -3073,6 +3083,16 @@ Another example to show how to set custom values for the optional parameters:: | Bond | +------------+ +The match_query function also supports an alternative syntax:: + + os> SELECT firstname FROM accounts WHERE firstname = match_query('Hattie'); + fetched rows / total rows = 1/1 + +-------------+ + | firstname | + |-------------| + | Hattie | + +-------------+ + MATCH_PHRASE ------------ @@ -3112,6 +3132,23 @@ Another example to show how to set custom values for the optional parameters:: | Alan Alexander Milne | Winnie-the-Pooh | +----------------------+--------------------------+ +The match_phrase function also supports an alternative syntax:: + + os> SELECT firstname FROM accounts WHERE firstname = match_phrase('Hattie'); + fetched rows / total rows = 1/1 + +-------------+ + | firstname | + |-------------| + | Hattie | + +-------------+ + + os> SELECT firstname FROM accounts WHERE firstname = matchphrase('Hattie'); + fetched rows / total rows = 1/1 + +-------------+ + | firstname | + |-------------| + | Hattie | + +-------------+ MATCH_BOOL_PREFIX ----- @@ -3255,6 +3292,24 @@ Another example to show how to set custom values for the optional parameters:: | 1 | The House at Pooh Corner | Alan Alexander Milne | +------+--------------------------+----------------------+ +The multi_match function also supports an alternative syntax:: + + os> SELECT firstname FROM accounts WHERE firstname = multi_match('Hattie'); + fetched rows / total rows = 1/1 + +-------------+ + | firstname | + |-------------| + | Hattie | + +-------------+ + + os> SELECT firstname FROM accounts WHERE firstname = multimatch('Hattie'); + fetched rows / total rows = 1/1 + +-------------+ + | firstname | + |-------------| + | Hattie | + +-------------+ + SIMPLE_QUERY_STRING ------------------- diff --git a/integ-test/src/test/java/org/opensearch/sql/legacy/MethodQueryIT.java b/integ-test/src/test/java/org/opensearch/sql/legacy/MethodQueryIT.java index b1b6b24ada..fdbbb0f6ba 100644 --- a/integ-test/src/test/java/org/opensearch/sql/legacy/MethodQueryIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/legacy/MethodQueryIT.java @@ -54,7 +54,7 @@ public void matchQueryTest() throws IOException { "select address from %s where address= matchQuery('880 Holmes Lane') limit 3", TestsConstants.TEST_INDEX_ACCOUNT)); Assert.assertThat(result, - containsString("{\"match\":{\"address\":{\"query\":\"880 Holmes Lane\"")); + containsString("{\\\"match\\\":{\\\"address\\\":{\\\"query\\\":\\\"880 Holmes Lane\\\"")); } /** diff --git a/integ-test/src/test/java/org/opensearch/sql/sql/MatchIT.java b/integ-test/src/test/java/org/opensearch/sql/sql/MatchIT.java index b113e83477..28573fdd10 100644 --- a/integ-test/src/test/java/org/opensearch/sql/sql/MatchIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/sql/MatchIT.java @@ -103,7 +103,7 @@ public void match_query_in_having() throws IOException { } @Test - public void alternate_syntaxes_return_the_same_results() throws IOException { + public void match_aliases_return_the_same_results() throws IOException { String query1 = "SELECT lastname FROM " + TEST_INDEX_ACCOUNT + " HAVING match(firstname, 'Nanette')"; JSONObject result1 = executeJdbcRequest(query1); @@ -116,4 +116,35 @@ public void alternate_syntaxes_return_the_same_results() throws IOException { assertEquals(result1.getInt("total"), result2.getInt("total")); assertEquals(result1.getInt("total"), result3.getInt("total")); } + + @Test + public void match_query_alternate_syntax() throws IOException { + JSONObject result = executeJdbcRequest( + "SELECT lastname FROM " + TEST_INDEX_ACCOUNT + " WHERE lastname = match_query('Bates')"); + verifySchema(result, schema("lastname", "text")); + verifyDataRows(result, rows("Bates")); + } + + @Test + public void matchquery_alternate_syntax() throws IOException { + JSONObject result = executeJdbcRequest( + "SELECT lastname FROM " + TEST_INDEX_ACCOUNT + " WHERE lastname = matchquery('Bates')"); + verifySchema(result, schema("lastname", "text")); + verifyDataRows(result, rows("Bates")); + } + + @Test + public void match_alternate_syntaxes_return_the_same_results() throws IOException { + String query1 = "SELECT * FROM " + + TEST_INDEX_ACCOUNT + " WHERE match(firstname, 'Nanette')"; + JSONObject result1 = executeJdbcRequest(query1); + String query2 = "SELECT * FROM " + + TEST_INDEX_ACCOUNT + " WHERE firstname = match_query('Nanette')"; + JSONObject result2 = executeJdbcRequest(query2); + String query3 = "SELECT * FROM " + + TEST_INDEX_ACCOUNT + " WHERE firstname = matchquery('Nanette')"; + JSONObject result3 = executeJdbcRequest(query3); + assertEquals(result1.getInt("total"), result2.getInt("total")); + assertEquals(result1.getInt("total"), result3.getInt("total")); + } } diff --git a/integ-test/src/test/java/org/opensearch/sql/sql/MatchPhraseIT.java b/integ-test/src/test/java/org/opensearch/sql/sql/MatchPhraseIT.java index b870a60604..3b7e65dcc6 100644 --- a/integ-test/src/test/java/org/opensearch/sql/sql/MatchPhraseIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/sql/MatchPhraseIT.java @@ -51,7 +51,7 @@ public void test_match_phrase_with_slop() throws IOException { } @Test - public void test_alternate_syntax_for_match_phrase_returns_same_result() throws IOException { + public void test_aliases_for_match_phrase_returns_same_result() throws IOException { String query1 = "SELECT phrase FROM %s WHERE matchphrase(phrase, 'quick fox')"; String query2 = "SELECT phrase FROM %s WHERE match_phrase(phrase, 'quick fox')"; String query3 = "SELECT phrase FROM %s WHERE matchphrasequery(phrase, 'quick fox')"; @@ -61,4 +61,30 @@ public void test_alternate_syntax_for_match_phrase_returns_same_result() throws assertTrue(result1.similar(result2)); assertTrue(result1.similar(result3)); } + + @Test + public void match_phrase_alternate_syntax() throws IOException { + String query = "SELECT phrase FROM %s WHERE phrase = match_phrase('quick fox')"; + JSONObject result = executeJdbcRequest(String.format(query, TEST_INDEX_PHRASE)); + verifyDataRows(result, rows("quick fox"), rows("quick fox here")); + } + + @Test + public void matchphrase_alternate_syntax() throws IOException { + String query = "SELECT phrase FROM %s WHERE phrase = matchphrase('quick fox')"; + JSONObject result = executeJdbcRequest(String.format(query, TEST_INDEX_PHRASE)); + verifyDataRows(result, rows("quick fox"), rows("quick fox here")); + } + + @Test + public void match_phrase_alternate_syntaxes_return_the_same_results() throws IOException { + String query1 = "SELECT phrase FROM %s WHERE matchphrase(phrase, 'quick fox')"; + String query2 = "SELECT phrase FROM %s WHERE phrase = matchphrase('quick fox')"; + String query3 = "SELECT phrase FROM %s WHERE phrase = match_phrase('quick fox')"; + JSONObject result1 = executeJdbcRequest(String.format(query1, TEST_INDEX_PHRASE)); + JSONObject result2 = executeJdbcRequest(String.format(query2, TEST_INDEX_PHRASE)); + JSONObject result3 = executeJdbcRequest(String.format(query3, TEST_INDEX_PHRASE)); + assertTrue(result1.similar(result2)); + assertTrue(result1.similar(result3)); + } } diff --git a/integ-test/src/test/java/org/opensearch/sql/sql/MultiMatchIT.java b/integ-test/src/test/java/org/opensearch/sql/sql/MultiMatchIT.java index 24ce45fd20..07c89b4cdf 100644 --- a/integ-test/src/test/java/org/opensearch/sql/sql/MultiMatchIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/sql/MultiMatchIT.java @@ -124,4 +124,35 @@ public void test_all_params_multimatchquery_alternate_parameter_syntax() { JSONObject result = executeJdbcRequest(query); assertEquals(2, result.getInt("total")); } + + @Test + public void multi_match_alternate_syntax() throws IOException { + String query = "SELECT Id FROM " + TEST_INDEX_BEER + + " WHERE CreationDate = multi_match('2014-01-22');"; + var result = new JSONObject(executeQuery(query, "jdbc")); + assertEquals(8, result.getInt("total")); + } + + @Test + public void multimatch_alternate_syntax() throws IOException { + String query = "SELECT Id FROM " + TEST_INDEX_BEER + + " WHERE CreationDate = multimatch('2014-01-22');"; + var result = new JSONObject(executeQuery(query, "jdbc")); + assertEquals(8, result.getInt("total")); + } + + @Test + public void multi_match_alternate_syntaxes_return_the_same_results() throws IOException { + String query1 = "SELECT Id FROM " + TEST_INDEX_BEER + + " WHERE multi_match(['CreationDate'], '2014-01-22');"; + String query2 = "SELECT Id FROM " + TEST_INDEX_BEER + + " WHERE CreationDate = multi_match('2014-01-22');"; + String query3 = "SELECT Id FROM " + TEST_INDEX_BEER + + " WHERE CreationDate = multimatch('2014-01-22');"; + var result1 = new JSONObject(executeQuery(query1, "jdbc")); + var result2 = new JSONObject(executeQuery(query2, "jdbc")); + var result3 = new JSONObject(executeQuery(query3, "jdbc")); + assertEquals(result1.getInt("total"), result2.getInt("total")); + assertEquals(result1.getInt("total"), result3.getInt("total")); + } } diff --git a/sql/src/main/antlr/OpenSearchSQLParser.g4 b/sql/src/main/antlr/OpenSearchSQLParser.g4 index 4975a1e7c7..6d9f7b9f8b 100644 --- a/sql/src/main/antlr/OpenSearchSQLParser.g4 +++ b/sql/src/main/antlr/OpenSearchSQLParser.g4 @@ -323,6 +323,10 @@ positionFunction : POSITION LR_BRACKET functionArg IN functionArg RR_BRACKET ; +matchQueryAltSyntaxFunction + : field=relevanceField EQUAL_SYMBOL MATCH_QUERY LR_BRACKET query=relevanceQuery RR_BRACKET + ; + scalarFunctionName : mathematicalFunctionName | dateTimeFunctionName @@ -340,7 +344,8 @@ specificFunction ; relevanceFunction - : noFieldRelevanceFunction | singleFieldRelevanceFunction | multiFieldRelevanceFunction + : noFieldRelevanceFunction | singleFieldRelevanceFunction | multiFieldRelevanceFunction | altSingleFieldRelevanceFunction | altMultiFieldRelevanceFunction + ; noFieldRelevanceFunction @@ -362,6 +367,14 @@ multiFieldRelevanceFunction alternateMultiMatchQuery COMMA alternateMultiMatchField (COMMA relevanceArg)* RR_BRACKET ; +altSingleFieldRelevanceFunction + : field=relevanceField EQUAL_SYMBOL altSyntaxFunctionName=altSingleFieldRelevanceFunctionName LR_BRACKET query=relevanceQuery (COMMA relevanceArg)* RR_BRACKET + ; + +altMultiFieldRelevanceFunction + : field=relevanceField EQUAL_SYMBOL altSyntaxFunctionName=altMultiFieldRelevanceFunctionName LR_BRACKET query=relevanceQuery (COMMA relevanceArg)* RR_BRACKET + ; + convertedDataType : typeName=DATE | typeName=TIME @@ -482,6 +495,18 @@ multiFieldRelevanceFunctionName | QUERY_STRING ; +altSingleFieldRelevanceFunctionName + : MATCH_QUERY + | MATCHQUERY + | MATCH_PHRASE + | MATCHPHRASE + ; + +altMultiFieldRelevanceFunctionName + : MULTI_MATCH + | MULTIMATCH + ; + functionArgs : (functionArg (COMMA functionArg)*)? ; diff --git a/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java b/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java index c05c127781..1c01f8aaf7 100644 --- a/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java +++ b/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java @@ -429,6 +429,14 @@ public UnresolvedExpression visitSingleFieldRelevanceFunction( singleFieldRelevanceArguments(ctx)); } + @Override + public UnresolvedExpression visitAltSingleFieldRelevanceFunction( + OpenSearchSQLParser.AltSingleFieldRelevanceFunctionContext ctx) { + return new Function( + ctx.altSyntaxFunctionName.getText().toLowerCase(), + altSingleFieldRelevanceFunctionArguments(ctx)); + } + @Override public UnresolvedExpression visitMultiFieldRelevanceFunction( MultiFieldRelevanceFunctionContext ctx) { @@ -450,6 +458,14 @@ public UnresolvedExpression visitMultiFieldRelevanceFunction( } } + @Override + public UnresolvedExpression visitAltMultiFieldRelevanceFunction( + OpenSearchSQLParser.AltMultiFieldRelevanceFunctionContext ctx) { + return new Function( + ctx.altSyntaxFunctionName.getText().toLowerCase(), + altMultiFieldRelevanceFunctionArguments(ctx)); + } + private Function buildFunction(String functionName, List arg) { return new Function( @@ -506,6 +522,18 @@ private List singleFieldRelevanceArguments( } + private List altSingleFieldRelevanceFunctionArguments( + OpenSearchSQLParser.AltSingleFieldRelevanceFunctionContext ctx) { + // all the arguments are defaulted to string values + // to skip environment resolving and function signature resolving + ImmutableList.Builder builder = ImmutableList.builder(); + builder.add(new UnresolvedArgument("field", + new Literal(StringUtils.unquoteText(ctx.field.getText()), DataType.STRING))); + builder.add(new UnresolvedArgument("query", + new Literal(StringUtils.unquoteText(ctx.query.getText()), DataType.STRING))); + fillRelevanceArgs(ctx.relevanceArg(), builder); + return builder.build(); + } private List multiFieldRelevanceArguments( MultiFieldRelevanceFunctionContext ctx) { @@ -561,4 +589,19 @@ private List alternateMultiMatchArguments( return builder.build(); } + + private List altMultiFieldRelevanceFunctionArguments( + OpenSearchSQLParser.AltMultiFieldRelevanceFunctionContext ctx) { + // all the arguments are defaulted to string values + // to skip environment resolving and function signature resolving + var map = new HashMap(); + map.put(ctx.field.getText(), 1F); + ImmutableList.Builder builder = ImmutableList.builder(); + var fields = new RelevanceFieldList(map); + builder.add(new UnresolvedArgument("fields", fields)); + builder.add(new UnresolvedArgument("query", + new Literal(StringUtils.unquoteText(ctx.query.getText()), DataType.STRING))); + fillRelevanceArgs(ctx.relevanceArg(), builder); + return builder.build(); + } } diff --git a/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java b/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java index 6f1f8d7955..82e1b0b848 100644 --- a/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java +++ b/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java @@ -542,6 +542,30 @@ private static Stream matchPhraseComplexQueries() { ); } + @Test + public void canParseMatchQueryAlternateSyntax() { + assertNotNull(parser.parse("SELECT * FROM test WHERE Field = matchquery('query')")); + assertNotNull(parser.parse("SELECT * FROM test WHERE Field = matchquery(\"query\")")); + assertNotNull(parser.parse("SELECT * FROM test WHERE Field = match_query('query')")); + assertNotNull(parser.parse("SELECT * FROM test WHERE Field = match_query(\"query\")")); + } + + @Test + public void canParseMatchPhraseAlternateSyntax() { + assertNotNull(parser.parse("SELECT * FROM test WHERE Field = match_phrase('query')")); + assertNotNull(parser.parse("SELECT * FROM test WHERE Field = match_phrase(\"query\")")); + assertNotNull(parser.parse("SELECT * FROM test WHERE Field = matchphrase('query')")); + assertNotNull(parser.parse("SELECT * FROM test WHERE Field = matchphrase(\"query\")")); + } + + @Test + public void canParseMultiMatchAlternateSyntax() { + assertNotNull(parser.parse("SELECT * FROM test WHERE Field = multi_match('query')")); + assertNotNull(parser.parse("SELECT * FROM test WHERE Field = multi_match(\"query\")")); + assertNotNull(parser.parse("SELECT * FROM test WHERE Field = multimatch('query')")); + assertNotNull(parser.parse("SELECT * FROM test WHERE Field = multimatch(\"query\")")); + } + private static Stream matchPhraseQueryComplexQueries() { return Stream.of( "SELECT * FROM t WHERE matchphrasequery(c, 3)", diff --git a/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java b/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java index 113a828f0e..0bc44cdffd 100644 --- a/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java +++ b/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java @@ -572,6 +572,87 @@ public void relevanceMatch_Query() { buildExprAst("match_query('message', 'search query', analyzer='keyword', operator='AND')")); } + @Test + public void relevanceMatchQueryAltSyntax() { + assertEquals(AstDSL.function("match_query", + unresolvedArg("field", stringLiteral("message")), + unresolvedArg("query", stringLiteral("search query"))), + buildExprAst("message = match_query('search query')") + ); + + assertEquals(AstDSL.function("match_query", + unresolvedArg("field", stringLiteral("message")), + unresolvedArg("query", stringLiteral("search query"))), + buildExprAst("message = match_query(\"search query\")") + ); + + assertEquals(AstDSL.function("matchquery", + unresolvedArg("field", stringLiteral("message")), + unresolvedArg("query", stringLiteral("search query"))), + buildExprAst("message = matchquery('search query')") + ); + + assertEquals(AstDSL.function("matchquery", + unresolvedArg("field", stringLiteral("message")), + unresolvedArg("query", stringLiteral("search query"))), + buildExprAst("message = matchquery(\"search query\")") + ); + } + + @Test + public void relevanceMatchPhraseAltSyntax() { + assertEquals(AstDSL.function("match_phrase", + unresolvedArg("field", stringLiteral("message")), + unresolvedArg("query", stringLiteral("search query"))), + buildExprAst("message = match_phrase('search query')") + ); + + assertEquals(AstDSL.function("match_phrase", + unresolvedArg("field", stringLiteral("message")), + unresolvedArg("query", stringLiteral("search query"))), + buildExprAst("message = match_phrase(\"search query\")") + ); + + assertEquals(AstDSL.function("matchphrase", + unresolvedArg("field", stringLiteral("message")), + unresolvedArg("query", stringLiteral("search query"))), + buildExprAst("message = matchphrase('search query')") + ); + + assertEquals(AstDSL.function("matchphrase", + unresolvedArg("field", stringLiteral("message")), + unresolvedArg("query", stringLiteral("search query"))), + buildExprAst("message = matchphrase(\"search query\")") + ); + } + + @Test + public void relevanceMultiMatchAltSyntax() { + assertEquals(AstDSL.function("multi_match", + unresolvedArg("fields", new RelevanceFieldList(ImmutableMap.of("field1", 1.F))), + unresolvedArg("query", stringLiteral("search query"))), + buildExprAst("field1 = multi_match('search query')") + ); + + assertEquals(AstDSL.function("multi_match", + unresolvedArg("fields", new RelevanceFieldList(ImmutableMap.of("field1", 1.F))), + unresolvedArg("query", stringLiteral("search query"))), + buildExprAst("field1 = multi_match(\"search query\")") + ); + + assertEquals(AstDSL.function("multimatch", + unresolvedArg("fields", new RelevanceFieldList(ImmutableMap.of("field1", 1.F))), + unresolvedArg("query", stringLiteral("search query"))), + buildExprAst("field1 = multimatch('search query')") + ); + + assertEquals(AstDSL.function("multimatch", + unresolvedArg("fields", new RelevanceFieldList(ImmutableMap.of("field1", 1.F))), + unresolvedArg("query", stringLiteral("search query"))), + buildExprAst("field1 = multimatch(\"search query\")") + ); + } + @Test public void relevanceMulti_match() { assertEquals(AstDSL.function("multi_match", From dce7d0e73e9df173e7afdabd8c7d8a6e65a8a4d3 Mon Sep 17 00:00:00 2001 From: GabeFernandez310 Date: Fri, 6 Jan 2023 10:59:22 -0800 Subject: [PATCH 33/55] Add Second_Of_Minute Function As An Alias Of The Second Function (#1231) Added Testing And Implementation For Second_Of_Minute Function Signed-off-by: GabeFernandez310 Signed-off-by: GabeFernandez310 --- .../org/opensearch/sql/expression/DSL.java | 4 + .../expression/datetime/DateTimeFunction.java | 12 ++- .../function/BuiltinFunctionName.java | 1 + .../datetime/DateTimeFunctionTest.java | 76 +++++++++++++++++++ docs/user/dql/functions.rst | 9 +++ .../sql/sql/DateTimeFunctionIT.java | 45 +++++++++++ sql/src/main/antlr/OpenSearchSQLParser.g4 | 1 + .../sql/sql/antlr/SQLSyntaxParserTest.java | 8 ++ 8 files changed, 152 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/opensearch/sql/expression/DSL.java b/core/src/main/java/org/opensearch/sql/expression/DSL.java index dfe380b507..7899e47a71 100644 --- a/core/src/main/java/org/opensearch/sql/expression/DSL.java +++ b/core/src/main/java/org/opensearch/sql/expression/DSL.java @@ -378,6 +378,10 @@ public static FunctionExpression second(Expression... expressions) { return compile(FunctionProperties.None, BuiltinFunctionName.SECOND, expressions); } + public static FunctionExpression second_of_minute(Expression... expressions) { + return compile(FunctionProperties.None, BuiltinFunctionName.SECOND_OF_MINUTE, expressions); + } + public static FunctionExpression subdate(Expression... expressions) { return compile(FunctionProperties.None, BuiltinFunctionName.SUBDATE, expressions); } diff --git a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java index 6ee5a79172..a29429fc04 100644 --- a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java +++ b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java @@ -9,6 +9,7 @@ import static java.time.temporal.ChronoUnit.DAYS; import static java.time.temporal.ChronoUnit.MINUTES; import static java.time.temporal.ChronoUnit.MONTHS; +import static java.time.temporal.ChronoUnit.SECONDS; import static org.opensearch.sql.data.type.ExprCoreType.DATE; import static org.opensearch.sql.data.type.ExprCoreType.DATETIME; import static org.opensearch.sql.data.type.ExprCoreType.DOUBLE; @@ -128,7 +129,8 @@ public void register(BuiltinFunctionRepository repository) { repository.register(period_add()); repository.register(period_diff()); repository.register(quarter()); - repository.register(second()); + repository.register(second(BuiltinFunctionName.SECOND)); + repository.register(second(BuiltinFunctionName.SECOND_OF_MINUTE)); repository.register(subdate()); repository.register(sysdate()); repository.register(time()); @@ -557,10 +559,11 @@ private DefaultFunctionResolver quarter() { /** * SECOND(STRING/TIME/DATETIME/TIMESTAMP). return the second value for time. */ - private DefaultFunctionResolver second() { - return define(BuiltinFunctionName.SECOND.getName(), + private DefaultFunctionResolver second(BuiltinFunctionName name) { + return define(name.getName(), impl(nullMissingHandling(DateTimeFunction::exprSecond), INTEGER, STRING), impl(nullMissingHandling(DateTimeFunction::exprSecond), INTEGER, TIME), + impl(nullMissingHandling(DateTimeFunction::exprSecond), INTEGER, DATE), impl(nullMissingHandling(DateTimeFunction::exprSecond), INTEGER, DATETIME), impl(nullMissingHandling(DateTimeFunction::exprSecond), INTEGER, TIMESTAMP) ); @@ -1131,7 +1134,8 @@ private ExprValue exprQuarter(ExprValue date) { * @return ExprValue. */ private ExprValue exprSecond(ExprValue time) { - return new ExprIntegerValue(time.timeValue().getSecond()); + return new ExprIntegerValue( + (SECONDS.between(LocalTime.MIN, time.timeValue()) % 60)); } /** diff --git a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java index 50c8682c62..06b46b6888 100644 --- a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java +++ b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java @@ -86,6 +86,7 @@ public enum BuiltinFunctionName { PERIOD_DIFF(FunctionName.of("period_diff")), QUARTER(FunctionName.of("quarter")), SECOND(FunctionName.of("second")), + SECOND_OF_MINUTE(FunctionName.of("second_of_minute")), SUBDATE(FunctionName.of("subdate")), TIME(FunctionName.of("time")), TIMEDIFF(FunctionName.of("timediff")), diff --git a/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java b/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java index 29a0843287..7a486fc8d4 100644 --- a/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java +++ b/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java @@ -28,10 +28,14 @@ import com.google.common.collect.ImmutableList; import java.time.LocalDate; import java.util.List; +import java.util.stream.Stream; import lombok.AllArgsConstructor; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.opensearch.sql.data.model.ExprDateValue; @@ -46,6 +50,7 @@ import org.opensearch.sql.expression.Expression; import org.opensearch.sql.expression.ExpressionTestBase; import org.opensearch.sql.expression.FunctionExpression; +import org.opensearch.sql.expression.LiteralExpression; import org.opensearch.sql.expression.env.Environment; @ExtendWith(MockitoExtension.class) @@ -904,6 +909,77 @@ public void second() { assertEquals("second(DATETIME '2020-08-17 01:02:03')", expression.toString()); } + private void secondOfMinuteQuery(FunctionExpression dateExpression, int second, String testExpr) { + assertEquals(INTEGER, dateExpression.type()); + assertEquals(integerValue(second), eval(dateExpression)); + assertEquals(testExpr, dateExpression.toString()); + } + + private static Stream getTestDataForSecondOfMinute() { + return Stream.of( + Arguments.of( + DSL.literal(new ExprTimeValue("01:02:03")), + 3, + "second_of_minute(TIME '01:02:03')"), + Arguments.of( + DSL.literal("01:02:03"), + 3, + "second_of_minute(\"01:02:03\")"), + Arguments.of( + DSL.literal("2020-08-17 01:02:03"), + 3, + "second_of_minute(\"2020-08-17 01:02:03\")"), + Arguments.of( + + DSL.literal(new ExprTimestampValue("2020-08-17 01:02:03")), + 3, + "second_of_minute(TIMESTAMP '2020-08-17 01:02:03')"), + Arguments.of( + + DSL.literal(new ExprDatetimeValue("2020-08-17 01:02:03")), + 3, + "second_of_minute(DATETIME '2020-08-17 01:02:03')") + ); + } + + @ParameterizedTest(name = "{2}") + @MethodSource("getTestDataForSecondOfMinute") + public void secondOfMinute(LiteralExpression arg, int expectedResult, String expectedString) { + lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); + lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); + + secondOfMinuteQuery(DSL.second_of_minute(arg), expectedResult, expectedString); + } + + private void invalidSecondOfMinuteQuery(String time) { + FunctionExpression expression = DSL.second_of_minute(DSL.literal(new ExprTimeValue(time))); + eval(expression); + } + + @Test + public void secondOfMinuteInvalidArguments() { + when(nullRef.type()).thenReturn(TIME); + when(missingRef.type()).thenReturn(TIME); + + assertAll( + () -> assertEquals(nullValue(), eval(DSL.second_of_minute(nullRef))), + () -> assertEquals(missingValue(), eval(DSL.second_of_minute(missingRef))), + //Invalid Seconds + () -> assertThrows(SemanticCheckException.class, + () -> invalidSecondOfMinuteQuery("12:23:61")), + //Invalid Minutes + () -> assertThrows(SemanticCheckException.class, + () -> invalidSecondOfMinuteQuery("12:61:34")), + //Invalid Hours + () -> assertThrows(SemanticCheckException.class, + () -> invalidSecondOfMinuteQuery("25:23:34")), + //incorrect format + () -> assertThrows(SemanticCheckException.class, + () -> invalidSecondOfMinuteQuery("asdfasdf")) + ); + } + + @Test public void subdate() { FunctionExpression expr = DSL.subdate(DSL.date(DSL.literal("2020-08-26")), DSL.literal(7)); diff --git a/docs/user/dql/functions.rst b/docs/user/dql/functions.rst index 1726c92054..f95947a7b5 100644 --- a/docs/user/dql/functions.rst +++ b/docs/user/dql/functions.rst @@ -1961,6 +1961,7 @@ Description >>>>>>>>>>> Usage: second(time) returns the second for time, in the range 0 to 59. +The function `second_of_minute`_ is provided as an alias Argument type: STRING/TIME/DATETIME/TIMESTAMP @@ -1976,6 +1977,14 @@ Example:: | 3 | +-----------------------------+ + os> SELECT SECOND_OF_MINUTE(time('01:02:03')) + fetched rows / total rows = 1/1 + +--------------------------------------+ + | SECOND_OF_MINUTE(time('01:02:03')) | + |--------------------------------------| + | 3 | + +--------------------------------------+ + SUBDATE ------- diff --git a/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java b/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java index e135f15523..62bb033af3 100644 --- a/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java @@ -493,6 +493,51 @@ public void testSecond() throws IOException { verifyDataRows(result, rows(0)); } + @Test + public void testSecondOfMinute() throws IOException { + JSONObject result = executeQuery("select second_of_minute(timestamp('2020-09-16 17:30:00'))"); + verifySchema(result, schema("second_of_minute(timestamp('2020-09-16 17:30:00'))", null, "integer")); + verifyDataRows(result, rows(0)); + + result = executeQuery("select second_of_minute(time('17:30:00'))"); + verifySchema(result, schema("second_of_minute(time('17:30:00'))", null, "integer")); + verifyDataRows(result, rows(0)); + + result = executeQuery("select second_of_minute('2020-09-16 17:30:00')"); + verifySchema(result, schema("second_of_minute('2020-09-16 17:30:00')", null, "integer")); + verifyDataRows(result, rows(0)); + + result = executeQuery("select second_of_minute('17:30:00')"); + verifySchema(result, schema("second_of_minute('17:30:00')", null, "integer")); + verifyDataRows(result, rows(0)); + } + + @Test + public void testSecondFunctionAliasesReturnTheSameResults() throws IOException { + JSONObject result1 = executeQuery("SELECT second('2022-11-22 12:23:34')"); + JSONObject result2 = executeQuery("SELECT second_of_minute('2022-11-22 12:23:34')"); + verifyDataRows(result1, rows(34)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + + result1 = executeQuery(String.format( + "SELECT second(datetime(CAST(time0 AS STRING))) FROM %s", TEST_INDEX_CALCS)); + result2 = executeQuery(String.format( + "SELECT second_of_minute(datetime(CAST(time0 AS STRING))) FROM %s", TEST_INDEX_CALCS)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + + result1 = executeQuery(String.format( + "SELECT second(CAST(time0 AS STRING)) FROM %s", TEST_INDEX_CALCS)); + result2 = executeQuery(String.format( + "SELECT second_of_minute(CAST(time0 AS STRING)) FROM %s", TEST_INDEX_CALCS)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + + result1 = executeQuery(String.format( + "SELECT second(CAST(datetime0 AS timestamp)) FROM %s", TEST_INDEX_CALCS)); + result2 = executeQuery(String.format( + "SELECT second_of_minute(CAST(datetime0 AS timestamp)) FROM %s", TEST_INDEX_CALCS)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + } + @Test public void testSubDate() throws IOException { JSONObject result = diff --git a/sql/src/main/antlr/OpenSearchSQLParser.g4 b/sql/src/main/antlr/OpenSearchSQLParser.g4 index 6d9f7b9f8b..9e827d03f8 100644 --- a/sql/src/main/antlr/OpenSearchSQLParser.g4 +++ b/sql/src/main/antlr/OpenSearchSQLParser.g4 @@ -450,6 +450,7 @@ dateTimeFunctionName | PERIOD_DIFF | QUARTER | SECOND + | SECOND_OF_MINUTE | SUBDATE | SYSDATE | TIME diff --git a/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java b/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java index 82e1b0b848..130534af10 100644 --- a/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java +++ b/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java @@ -269,6 +269,14 @@ public void can_parse_multi_match_relevance_function() { + "operator='AND', tie_breaker=0.3, type = \"most_fields\", fuzziness = \"AUTO\")")); } + @Test + public void can_parse_second_functions() { + assertNotNull(parser.parse("SELECT second('12:23:34')")); + assertNotNull(parser.parse("SELECT second_of_minute('2022-11-18')")); + assertNotNull(parser.parse("SELECT second('2022-11-18 12:23:34')")); + assertNotNull(parser.parse("SELECT second_of_minute('2022-11-18 12:23:34')")); + } + @Test public void can_parse_simple_query_string_relevance_function() { assertNotNull(parser.parse( From 61e2374eace01945bb8b083c8b19859e5042e228 Mon Sep 17 00:00:00 2001 From: GabeFernandez310 Date: Fri, 6 Jan 2023 11:00:13 -0800 Subject: [PATCH 34/55] Add Minute_Of_Hour Function As An Alias Of Minute Function (#196) (#1230) Added Testing And Implementation For Minute_Of_Hour Function Signed-off-by: GabeFernandez310 Signed-off-by: GabeFernandez310 --- .../org/opensearch/sql/expression/DSL.java | 4 + .../expression/datetime/DateTimeFunction.java | 11 ++- .../function/BuiltinFunctionName.java | 1 + .../datetime/DateTimeFunctionTest.java | 81 ++++++++++++++++++- docs/user/dql/functions.rst | 13 +-- .../sql/sql/DateTimeFunctionIT.java | 46 +++++++++++ sql/src/main/antlr/OpenSearchSQLParser.g4 | 1 + .../sql/sql/antlr/SQLSyntaxParserTest.java | 9 +++ 8 files changed, 155 insertions(+), 11 deletions(-) diff --git a/core/src/main/java/org/opensearch/sql/expression/DSL.java b/core/src/main/java/org/opensearch/sql/expression/DSL.java index 7899e47a71..b3972af86d 100644 --- a/core/src/main/java/org/opensearch/sql/expression/DSL.java +++ b/core/src/main/java/org/opensearch/sql/expression/DSL.java @@ -358,6 +358,10 @@ public static FunctionExpression minute_of_day(Expression... expressions) { return compile(FunctionProperties.None, BuiltinFunctionName.MINUTE_OF_DAY, expressions); } + public static FunctionExpression minute_of_hour(Expression... expressions) { + return compile(FunctionProperties.None, BuiltinFunctionName.MINUTE_OF_HOUR, expressions); + } + public static FunctionExpression month(Expression... expressions) { return compile(FunctionProperties.None, BuiltinFunctionName.MONTH, expressions); } diff --git a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java index a29429fc04..4ad395537f 100644 --- a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java +++ b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java @@ -120,8 +120,9 @@ public void register(BuiltinFunctionRepository repository) { repository.register(makedate()); repository.register(maketime()); repository.register(microsecond()); - repository.register(minute()); + repository.register(minute(BuiltinFunctionName.MINUTE)); repository.register(minute_of_day()); + repository.register(minute(BuiltinFunctionName.MINUTE_OF_HOUR)); repository.register(month(BuiltinFunctionName.MONTH)); repository.register(month(BuiltinFunctionName.MONTH_OF_YEAR)); repository.register(monthName()); @@ -477,11 +478,12 @@ private DefaultFunctionResolver microsecond() { /** * MINUTE(STRING/TIME/DATETIME/TIMESTAMP). return the minute value for time. */ - private DefaultFunctionResolver minute() { - return define(BuiltinFunctionName.MINUTE.getName(), + private DefaultFunctionResolver minute(BuiltinFunctionName name) { + return define(name.getName(), impl(nullMissingHandling(DateTimeFunction::exprMinute), INTEGER, STRING), impl(nullMissingHandling(DateTimeFunction::exprMinute), INTEGER, TIME), impl(nullMissingHandling(DateTimeFunction::exprMinute), INTEGER, DATETIME), + impl(nullMissingHandling(DateTimeFunction::exprMinute), INTEGER, DATE), impl(nullMissingHandling(DateTimeFunction::exprMinute), INTEGER, TIMESTAMP) ); } @@ -1026,7 +1028,8 @@ private ExprValue exprMicrosecond(ExprValue time) { * @return ExprValue. */ private ExprValue exprMinute(ExprValue time) { - return new ExprIntegerValue(time.timeValue().getMinute()); + return new ExprIntegerValue( + (MINUTES.between(LocalTime.MIN, time.timeValue()) % 60)); } /** diff --git a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java index 06b46b6888..eff36c9f64 100644 --- a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java +++ b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java @@ -79,6 +79,7 @@ public enum BuiltinFunctionName { MICROSECOND(FunctionName.of("microsecond")), MINUTE(FunctionName.of("minute")), MINUTE_OF_DAY(FunctionName.of("minute_of_day")), + MINUTE_OF_HOUR(FunctionName.of("minute_of_hour")), MONTH(FunctionName.of("month")), MONTH_OF_YEAR(FunctionName.of("month_of_year")), MONTHNAME(FunctionName.of("monthname")), diff --git a/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java b/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java index 7a486fc8d4..617f3f7d3e 100644 --- a/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java +++ b/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java @@ -732,7 +732,7 @@ private void testMinuteOfDay(String date, int value) { assertEquals(INTEGER, expression.type()); assertEquals(integerValue(value), eval(expression)); } - + @Test public void minuteOfDay() { when(nullRef.type()).thenReturn(TIME); @@ -769,6 +769,85 @@ public void minuteOfDay() { testMinuteOfDay("2020-08-17 00:00:01", 0); } + private void minuteOfHourQuery(FunctionExpression dateExpression, int minute, String testExpr) { + assertAll( + () -> assertEquals(INTEGER, dateExpression.type()), + () -> assertEquals(integerValue(minute), eval(dateExpression)), + () -> assertEquals(testExpr, dateExpression.toString()) + ); + } + + private static Stream getTestDataForMinuteOfHour() { + return Stream.of( + Arguments.of( + DSL.literal(new ExprTimeValue("01:02:03")), + 2, + "minute_of_hour(TIME '01:02:03')"), + Arguments.of( + DSL.literal("01:02:03"), + 2, + "minute_of_hour(\"01:02:03\")"), + Arguments.of( + DSL.literal(new ExprTimestampValue("2020-08-17 01:02:03")), + 2, + "minute_of_hour(TIMESTAMP '2020-08-17 01:02:03')"), + Arguments.of( + DSL.literal(new ExprDatetimeValue("2020-08-17 01:02:03")), + 2, + "minute_of_hour(DATETIME '2020-08-17 01:02:03')"), + Arguments.of( + DSL.literal("2020-08-17 01:02:03"), + 2, + "minute_of_hour(\"2020-08-17 01:02:03\")") + ); + } + + @ParameterizedTest(name = "{2}") + @MethodSource("getTestDataForMinuteOfHour") + public void minuteOfHour(LiteralExpression arg, int expectedResult, String expectedString) { + lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); + lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); + + minuteOfHourQuery(DSL.minute_of_hour(arg), expectedResult, expectedString); + } + + private void invalidMinuteOfHourQuery(String time) { + FunctionExpression expression = DSL.minute_of_hour(DSL.literal(new ExprTimeValue(time))); + eval(expression); + } + + @Test + public void minuteOfHourInvalidArguments() { + when(nullRef.type()).thenReturn(TIME); + when(missingRef.type()).thenReturn(TIME); + + assertAll( + () -> assertEquals(nullValue(), eval(DSL.minute_of_hour(nullRef))), + () -> assertEquals(missingValue(), eval(DSL.minute_of_hour(missingRef))), + + //Invalid Seconds + () -> assertThrows( + SemanticCheckException.class, + () -> invalidMinuteOfHourQuery("12:23:61")), + + //Invalid Minutes + () -> assertThrows( + SemanticCheckException.class, + () -> invalidMinuteOfHourQuery("12:61:34")), + + //Invalid Hours + () -> assertThrows( + SemanticCheckException.class, + () -> invalidMinuteOfHourQuery("25:23:34")), + + //incorrect format + () -> assertThrows( + SemanticCheckException.class, + () -> invalidMinuteOfHourQuery("asdfasdf")) + ); + } + + @Test public void month() { when(nullRef.type()).thenReturn(DATE); diff --git a/docs/user/dql/functions.rst b/docs/user/dql/functions.rst index f95947a7b5..0ca2a6bad4 100644 --- a/docs/user/dql/functions.rst +++ b/docs/user/dql/functions.rst @@ -1767,6 +1767,7 @@ Description >>>>>>>>>>> Usage: minute(time) returns the minute for time, in the range 0 to 59. +The `minute_of_hour` function is provided as an alias. Argument type: STRING/TIME/DATETIME/TIMESTAMP @@ -1774,13 +1775,13 @@ Return type: INTEGER Example:: - os> SELECT MINUTE((TIME '01:02:03')) + os> SELECT MINUTE(time('01:02:03')), MINUTE_OF_HOUR(time('01:02:03')) fetched rows / total rows = 1/1 - +-----------------------------+ - | MINUTE((TIME '01:02:03')) | - |-----------------------------| - | 2 | - +-----------------------------+ + +----------------------------+------------------------------------+ + | MINUTE(time('01:02:03')) | MINUTE_OF_HOUR(time('01:02:03')) | + |----------------------------+------------------------------------| + | 2 | 2 | + +----------------------------+------------------------------------+ MINUTE_OF_DAY ------ diff --git a/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java b/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java index 62bb033af3..6255ccf010 100644 --- a/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java @@ -390,6 +390,52 @@ public void testMinuteOfDay() throws IOException { verifyDataRows(result, rows(1050)); } + @Test + public void testMinuteOfHour() throws IOException { + JSONObject result = executeQuery("select minute_of_hour(timestamp('2020-09-16 17:30:00'))"); + verifySchema(result, schema( + "minute_of_hour(timestamp('2020-09-16 17:30:00'))", null, "integer")); + verifyDataRows(result, rows(30)); + + result = executeQuery("select minute_of_hour(time('17:30:00'))"); + verifySchema(result, schema("minute_of_hour(time('17:30:00'))", null, "integer")); + verifyDataRows(result, rows(30)); + + result = executeQuery("select minute_of_hour('2020-09-16 17:30:00')"); + verifySchema(result, schema("minute_of_hour('2020-09-16 17:30:00')", null, "integer")); + verifyDataRows(result, rows(30)); + + result = executeQuery("select minute_of_hour('17:30:00')"); + verifySchema(result, schema("minute_of_hour('17:30:00')", null, "integer")); + verifyDataRows(result, rows(30)); + } + + @Test + public void testMinuteFunctionAliasesReturnTheSameResults() throws IOException { + JSONObject result1 = executeQuery("SELECT minute('11:30:00')"); + JSONObject result2 = executeQuery("SELECT minute_of_hour('11:30:00')"); + verifyDataRows(result1, rows(30)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + + result1 = executeQuery(String.format( + "SELECT minute(datetime(CAST(time0 AS STRING))) FROM %s", TEST_INDEX_CALCS)); + result2 = executeQuery(String.format( + "SELECT minute_of_hour(datetime(CAST(time0 AS STRING))) FROM %s", TEST_INDEX_CALCS)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + + result1 = executeQuery(String.format( + "SELECT minute(CAST(time0 AS STRING)) FROM %s", TEST_INDEX_CALCS)); + result2 = executeQuery(String.format( + "SELECT minute_of_hour(CAST(time0 AS STRING)) FROM %s", TEST_INDEX_CALCS)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + + result1 = executeQuery(String.format( + "SELECT minute(CAST(datetime0 AS timestamp)) FROM %s", TEST_INDEX_CALCS)); + result2 = executeQuery(String.format( + "SELECT minute_of_hour(CAST(datetime0 AS timestamp)) FROM %s", TEST_INDEX_CALCS)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + } + @Test public void testMonth() throws IOException { JSONObject result = executeQuery("select month(date('2020-09-16'))"); diff --git a/sql/src/main/antlr/OpenSearchSQLParser.g4 b/sql/src/main/antlr/OpenSearchSQLParser.g4 index 9e827d03f8..0ef7e21b42 100644 --- a/sql/src/main/antlr/OpenSearchSQLParser.g4 +++ b/sql/src/main/antlr/OpenSearchSQLParser.g4 @@ -443,6 +443,7 @@ dateTimeFunctionName | MICROSECOND | MINUTE | MINUTE_OF_DAY + | MINUTE_OF_HOUR | MONTH | MONTHNAME | NOW diff --git a/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java b/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java index 130534af10..eee476a56a 100644 --- a/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java +++ b/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java @@ -207,6 +207,15 @@ public void can_parse_dayofyear_functions() { assertNotNull(parser.parse("SELECT day_of_year('2022-11-18')")); } + @Test + public void can_parse_minute_functions() { + assertNotNull(parser.parse("SELECT minute('12:23:34')")); + assertNotNull(parser.parse("SELECT minute_of_hour('12:23:34')")); + + assertNotNull(parser.parse("SELECT minute('2022-12-20 12:23:34')")); + assertNotNull(parser.parse("SELECT minute_of_hour('2022-12-20 12:23:34')")); + } + @Test public void can_parse_month_of_year_function() { assertNotNull(parser.parse("SELECT month('2022-11-18')")); From bac9c37f3020ea04b581c12c7a492d17ffe9636b Mon Sep 17 00:00:00 2001 From: GabeFernandez310 Date: Fri, 6 Jan 2023 11:06:20 -0800 Subject: [PATCH 35/55] Add Day_Of_Week Function As An Alias Of DayOfWeek (#190) (#1228) Added Implementation And Testing For Day_Of_Week Function Signed-off-by: GabeFernandez310 Signed-off-by: GabeFernandez310 --- .../org/opensearch/sql/expression/DSL.java | 10 +- .../expression/datetime/DateTimeFunction.java | 24 ++- .../function/BuiltinFunctionName.java | 1 + .../datetime/DateTimeFunctionTest.java | 162 +++++++++++++++--- docs/user/dql/functions.rst | 15 +- .../sql/sql/DateTimeFunctionIT.java | 43 +++++ sql/src/main/antlr/OpenSearchSQLParser.g4 | 1 + .../sql/sql/antlr/SQLSyntaxParserTest.java | 6 + 8 files changed, 226 insertions(+), 36 deletions(-) diff --git a/core/src/main/java/org/opensearch/sql/expression/DSL.java b/core/src/main/java/org/opensearch/sql/expression/DSL.java index b3972af86d..bb343cd5f9 100644 --- a/core/src/main/java/org/opensearch/sql/expression/DSL.java +++ b/core/src/main/java/org/opensearch/sql/expression/DSL.java @@ -326,8 +326,9 @@ public static FunctionExpression dayofmonth(Expression... expressions) { return compile(FunctionProperties.None, BuiltinFunctionName.DAYOFMONTH, expressions); } - public static FunctionExpression dayofweek(Expression... expressions) { - return compile(FunctionProperties.None, BuiltinFunctionName.DAYOFWEEK, expressions); + public static FunctionExpression dayofweek( + FunctionProperties functionProperties, Expression... expressions) { + return compile(functionProperties, BuiltinFunctionName.DAYOFWEEK, expressions); } public static FunctionExpression dayofyear(Expression... expressions) { @@ -338,6 +339,11 @@ public static FunctionExpression day_of_year(Expression... expressions) { return compile(FunctionProperties.None, BuiltinFunctionName.DAY_OF_YEAR, expressions); } + public static FunctionExpression day_of_week( + FunctionProperties functionProperties, Expression... expressions) { + return compile(functionProperties, BuiltinFunctionName.DAY_OF_WEEK, expressions); + } + public static FunctionExpression from_days(Expression... expressions) { return compile(FunctionProperties.None, BuiltinFunctionName.FROM_DAYS, expressions); } diff --git a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java index 4ad395537f..37f5babe89 100644 --- a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java +++ b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java @@ -109,7 +109,8 @@ public void register(BuiltinFunctionRepository repository) { repository.register(day()); repository.register(dayName()); repository.register(dayOfMonth()); - repository.register(dayOfWeek()); + repository.register(dayOfWeek(BuiltinFunctionName.DAYOFWEEK.getName())); + repository.register(dayOfWeek(BuiltinFunctionName.DAY_OF_WEEK.getName())); repository.register(dayOfYear(BuiltinFunctionName.DAYOFYEAR)); repository.register(dayOfYear(BuiltinFunctionName.DAY_OF_YEAR)); repository.register(from_days()); @@ -401,11 +402,14 @@ private DefaultFunctionResolver dayOfMonth() { } /** - * DAYOFWEEK(STRING/DATE/DATETIME/TIMESTAMP). + * DAYOFWEEK(STRING/DATE/DATETIME/TIME/TIMESTAMP). * return the weekday index for date (1 = Sunday, 2 = Monday, …, 7 = Saturday). */ - private DefaultFunctionResolver dayOfWeek() { - return define(BuiltinFunctionName.DAYOFWEEK.getName(), + private DefaultFunctionResolver dayOfWeek(FunctionName name) { + return define(name, + implWithProperties(nullMissingHandlingWithProperties( + (functionProperties, arg) -> DateTimeFunction.dayOfWeekToday( + functionProperties.getQueryStartClock())), INTEGER, TIME), impl(nullMissingHandling(DateTimeFunction::exprDayOfWeek), INTEGER, DATE), impl(nullMissingHandling(DateTimeFunction::exprDayOfWeek), INTEGER, DATETIME), impl(nullMissingHandling(DateTimeFunction::exprDayOfWeek), INTEGER, TIMESTAMP), @@ -728,6 +732,16 @@ private DefaultFunctionResolver date_format() { ); } + /** + * Day of Week implementation for ExprValue when passing in an arguemt of type TIME. + * + * @param clock Current clock taken from function properties + * @return ExprValue. + */ + private ExprValue dayOfWeekToday(Clock clock) { + return new ExprIntegerValue((formatNow(clock).getDayOfWeek().getValue() % 7) + 1); + } + /** * ADDDATE function implementation for ExprValue. * @@ -900,7 +914,7 @@ private ExprValue exprDayOfMonth(ExprValue date) { /** * Day of Week implementation for ExprValue. * - * @param date ExprValue of Date/String type. + * @param date ExprValue of Date/Datetime/String/Timstamp type. * @return ExprValue. */ private ExprValue exprDayOfWeek(ExprValue date) { diff --git a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java index eff36c9f64..3fca0a6fc8 100644 --- a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java +++ b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java @@ -70,6 +70,7 @@ public enum BuiltinFunctionName { DAYOFMONTH(FunctionName.of("dayofmonth")), DAYOFWEEK(FunctionName.of("dayofweek")), DAYOFYEAR(FunctionName.of("dayofyear")), + DAY_OF_WEEK(FunctionName.of("day_of_week")), DAY_OF_YEAR(FunctionName.of("day_of_year")), FROM_DAYS(FunctionName.of("from_days")), FROM_UNIXTIME(FunctionName.of("from_unixtime")), diff --git a/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java b/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java index 617f3f7d3e..7761c1e94c 100644 --- a/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java +++ b/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java @@ -435,32 +435,150 @@ public void dayOfMonth() { assertEquals(integerValue(8), eval(expression)); } + private void dayOfWeekQuery( + FunctionExpression dateExpression, + int dayOfWeek, + String testExpr) { + assertEquals(INTEGER, dateExpression.type()); + assertEquals(integerValue(dayOfWeek), eval(dateExpression)); + assertEquals(testExpr, dateExpression.toString()); + } + @Test public void dayOfWeek() { + lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); + lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); + + FunctionExpression expression1 = DSL.dayofweek( + functionProperties, + DSL.literal(new ExprDateValue("2020-08-07"))); + FunctionExpression expression2 = DSL.dayofweek( + functionProperties, + DSL.literal(new ExprDateValue("2020-08-09"))); + FunctionExpression expression3 = DSL.dayofweek( + functionProperties, + DSL.literal("2020-08-09")); + FunctionExpression expression4 = DSL.dayofweek( + functionProperties, + DSL.literal("2020-08-09 01:02:03")); + + assertAll( + () -> dayOfWeekQuery(expression1, 6, "dayofweek(DATE '2020-08-07')"), + + () -> dayOfWeekQuery(expression2, 1, "dayofweek(DATE '2020-08-09')"), + + () -> dayOfWeekQuery(expression3, 1, "dayofweek(\"2020-08-09\")"), + + () -> dayOfWeekQuery(expression4, 1, "dayofweek(\"2020-08-09 01:02:03\")") + ); + } + + private void dayOfWeekWithUnderscoresQuery( + FunctionExpression dateExpression, + int dayOfWeek, + String testExpr) { + assertEquals(INTEGER, dateExpression.type()); + assertEquals(integerValue(dayOfWeek), eval(dateExpression)); + assertEquals(testExpr, dateExpression.toString()); + } + + @Test + public void dayOfWeekWithUnderscores() { + lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); + lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); + + FunctionExpression expression1 = DSL.day_of_week( + functionProperties, + DSL.literal(new ExprDateValue("2020-08-07"))); + FunctionExpression expression2 = DSL.day_of_week( + functionProperties, + DSL.literal(new ExprDateValue("2020-08-09"))); + FunctionExpression expression3 = DSL.day_of_week( + functionProperties, + DSL.literal("2020-08-09")); + FunctionExpression expression4 = DSL.day_of_week( + functionProperties, + DSL.literal("2020-08-09 01:02:03")); + + assertAll( + () -> dayOfWeekWithUnderscoresQuery(expression1, 6, "day_of_week(DATE '2020-08-07')"), + + () -> dayOfWeekWithUnderscoresQuery(expression2, 1, "day_of_week(DATE '2020-08-09')"), + + () -> dayOfWeekWithUnderscoresQuery(expression3, 1, "day_of_week(\"2020-08-09\")"), + + () -> dayOfWeekWithUnderscoresQuery( + expression4, 1, "day_of_week(\"2020-08-09 01:02:03\")") + ); + } + + @Test + public void testDayOfWeekWithTimeType() { + lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); + lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); + FunctionExpression expression = DSL.day_of_week( + functionProperties, DSL.literal(new ExprTimeValue("12:23:34"))); + + assertAll( + () -> assertEquals(INTEGER, eval(expression).type()), + () -> assertEquals(( + LocalDate.now( + functionProperties.getQueryStartClock()).getDayOfWeek().getValue() % 7) + 1, + eval(expression).integerValue()), + () -> assertEquals("day_of_week(TIME '12:23:34')", expression.toString()) + ); + } + + private void testInvalidDayOfWeek(String date) { + FunctionExpression expression = DSL.day_of_week( + functionProperties, DSL.literal(new ExprDateValue(date))); + eval(expression); + } + + @Test + public void dayOfWeekWithUnderscoresLeapYear() { + lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); + lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); + + assertAll( + //Feb. 29 of a leap year + () -> dayOfWeekWithUnderscoresQuery(DSL.day_of_week( + functionProperties, + DSL.literal("2020-02-29")), 7, "day_of_week(\"2020-02-29\")"), + //day after Feb. 29 of a leap year + () -> dayOfWeekWithUnderscoresQuery(DSL.day_of_week( + functionProperties, + DSL.literal("2020-03-01")), 1, "day_of_week(\"2020-03-01\")"), + //Feb. 28 of a non-leap year + () -> dayOfWeekWithUnderscoresQuery(DSL.day_of_week( + functionProperties, + DSL.literal("2021-02-28")), 1, "day_of_week(\"2021-02-28\")"), + //Feb. 29 of a non-leap year + () -> assertThrows( + SemanticCheckException.class, () -> testInvalidDayOfWeek("2021-02-29")) + ); + } + + @Test + public void dayOfWeekWithUnderscoresInvalidArgument() { when(nullRef.type()).thenReturn(DATE); when(missingRef.type()).thenReturn(DATE); - assertEquals(nullValue(), eval(DSL.dayofweek(nullRef))); - assertEquals(missingValue(), eval(DSL.dayofweek(missingRef))); - - FunctionExpression expression = DSL.dayofweek(DSL.literal(new ExprDateValue("2020-08-07"))); - assertEquals(INTEGER, expression.type()); - assertEquals("dayofweek(DATE '2020-08-07')", expression.toString()); - assertEquals(integerValue(6), eval(expression)); + assertEquals(nullValue(), eval(DSL.day_of_week(functionProperties, nullRef))); + assertEquals(missingValue(), eval(DSL.day_of_week(functionProperties, missingRef))); - expression = DSL.dayofweek(DSL.literal(new ExprDateValue("2020-08-09"))); - assertEquals(INTEGER, expression.type()); - assertEquals("dayofweek(DATE '2020-08-09')", expression.toString()); - assertEquals(integerValue(1), eval(expression)); + assertAll( + //40th day of the month + () -> assertThrows(SemanticCheckException.class, + () -> testInvalidDayOfWeek("2021-02-40")), - expression = DSL.dayofweek(DSL.literal("2020-08-09")); - assertEquals(INTEGER, expression.type()); - assertEquals("dayofweek(\"2020-08-09\")", expression.toString()); - assertEquals(integerValue(1), eval(expression)); + //13th month of the year + () -> assertThrows(SemanticCheckException.class, + () -> testInvalidDayOfWeek("2021-13-29")), - expression = DSL.dayofweek(DSL.literal("2020-08-09 01:02:03")); - assertEquals(INTEGER, expression.type()); - assertEquals("dayofweek(\"2020-08-09 01:02:03\")", expression.toString()); - assertEquals(integerValue(1), eval(expression)); + //incorrect format + () -> assertThrows(SemanticCheckException.class, + () -> testInvalidDayOfWeek("asdfasdf")) + ); } @Test @@ -486,7 +604,7 @@ public void dayOfYear() { assertEquals(integerValue(220), eval(expression)); } - public void testDayOfYearWithUnderscores(String date, int dayOfYear) { + private void testDayOfYearWithUnderscores(String date, int dayOfYear) { FunctionExpression expression = DSL.day_of_year(DSL.literal(new ExprDateValue(date))); assertEquals(INTEGER, expression.type()); assertEquals(integerValue(dayOfYear), eval(expression)); @@ -553,7 +671,7 @@ public void dayOfYearWithUnderscoresLeapYear() { ); } - public void testInvalidDayOfYear(String date) { + private void testInvalidDayOfYear(String date) { FunctionExpression expression = DSL.day_of_year(DSL.literal(new ExprDateValue(date))); eval(expression); } @@ -871,7 +989,7 @@ public void month() { assertEquals(integerValue(8), eval(expression)); } - public void testInvalidDates(String date) throws SemanticCheckException { + private void testInvalidDates(String date) throws SemanticCheckException { FunctionExpression expression = DSL.month_of_year(DSL.literal(new ExprDateValue(date))); eval(expression); } diff --git a/docs/user/dql/functions.rst b/docs/user/dql/functions.rst index 0ca2a6bad4..be5e788ca6 100644 --- a/docs/user/dql/functions.rst +++ b/docs/user/dql/functions.rst @@ -1454,20 +1454,21 @@ Description Usage: dayofweek(date) returns the weekday index for date (1 = Sunday, 2 = Monday, …, 7 = Saturday). +The `day_of_week` function is also provided as an alias. + Argument type: STRING/DATE/DATETIME/TIMESTAMP Return type: INTEGER Example:: - os> SELECT DAYOFWEEK(DATE('2020-08-26')) + os> SELECT DAYOFWEEK('2020-08-26'), DAY_OF_WEEK('2020-08-26') fetched rows / total rows = 1/1 - +---------------------------------+ - | DAYOFWEEK(DATE('2020-08-26')) | - |---------------------------------| - | 4 | - +---------------------------------+ - + +---------------------------+-----------------------------+ + | DAYOFWEEK('2020-08-26') | DAY_OF_WEEK('2020-08-26') | + |---------------------------+-----------------------------| + | 4 | 4 | + +---------------------------+-----------------------------+ DAYOFYEAR diff --git a/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java b/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java index 6255ccf010..95e232ab21 100644 --- a/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java @@ -219,6 +219,49 @@ public void testDayOfWeek() throws IOException { verifyDataRows(result, rows(4)); } + @Test + public void testDayOfWeekWithUnderscores() throws IOException { + JSONObject result = executeQuery("select day_of_week(date('2020-09-16'))"); + verifySchema(result, schema("day_of_week(date('2020-09-16'))", null, "integer")); + verifyDataRows(result, rows(4)); + + result = executeQuery("select day_of_week('2020-09-16')"); + verifySchema(result, schema("day_of_week('2020-09-16')", null, "integer")); + verifyDataRows(result, rows(4)); + } + + @Test + public void testDayOfWeekAliasesReturnTheSameResults() throws IOException { + JSONObject result1 = executeQuery("SELECT dayofweek(date('2022-11-22'))"); + JSONObject result2 = executeQuery("SELECT day_of_week(date('2022-11-22'))"); + verifyDataRows(result1, rows(3)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + + result1 = executeQuery(String.format( + "SELECT dayofweek(CAST(date0 AS date)) FROM %s", TEST_INDEX_CALCS)); + result2 = executeQuery(String.format( + "SELECT day_of_week(CAST(date0 AS date)) FROM %s", TEST_INDEX_CALCS)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + + result1 = executeQuery(String.format( + "SELECT dayofweek(datetime(CAST(time0 AS STRING))) FROM %s", TEST_INDEX_CALCS)); + result2 = executeQuery(String.format( + "SELECT day_of_week(datetime(CAST(time0 AS STRING))) FROM %s", TEST_INDEX_CALCS)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + + result1 = executeQuery(String.format( + "SELECT dayofweek(CAST(time0 AS STRING)) FROM %s", TEST_INDEX_CALCS)); + result2 = executeQuery(String.format( + "SELECT day_of_week(CAST(time0 AS STRING)) FROM %s", TEST_INDEX_CALCS)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + + result1 = executeQuery(String.format( + "SELECT dayofweek(CAST(datetime0 AS timestamp)) FROM %s", TEST_INDEX_CALCS)); + result2 = executeQuery(String.format( + "SELECT day_of_week(CAST(datetime0 AS timestamp)) FROM %s", TEST_INDEX_CALCS)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + } + @Test public void testDayOfYear() throws IOException { JSONObject result = executeQuery("select dayofyear(date('2020-09-16'))"); diff --git a/sql/src/main/antlr/OpenSearchSQLParser.g4 b/sql/src/main/antlr/OpenSearchSQLParser.g4 index 0ef7e21b42..e8db0de53b 100644 --- a/sql/src/main/antlr/OpenSearchSQLParser.g4 +++ b/sql/src/main/antlr/OpenSearchSQLParser.g4 @@ -435,6 +435,7 @@ dateTimeFunctionName | DAYOFMONTH | DAYOFWEEK | DAYOFYEAR + | DAY_OF_WEEK | FROM_DAYS | FROM_UNIXTIME | HOUR diff --git a/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java b/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java index eee476a56a..32715a64e1 100644 --- a/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java +++ b/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java @@ -201,6 +201,12 @@ public void can_parse_week_of_year_functions() { assertNotNull(parser.parse("SELECT week_of_year('2022-11-18')")); } + @Test + public void can_parse_day_of_week_functions() { + assertNotNull(parser.parse("SELECT dayofweek('2022-11-18')")); + assertNotNull(parser.parse("SELECT day_of_week('2022-11-18')")); + } + @Test public void can_parse_dayofyear_functions() { assertNotNull(parser.parse("SELECT dayofyear('2022-11-18')")); From 57e3250c143949b061f6d7b1ed8f171a2fd7d8a9 Mon Sep 17 00:00:00 2001 From: GabeFernandez310 Date: Fri, 6 Jan 2023 12:06:22 -0800 Subject: [PATCH 36/55] Fixed Imports Signed-off-by: GabeFernandez310 --- .../sql/sql/parser/AstExpressionBuilder.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java b/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java index 1c01f8aaf7..14044cbb30 100644 --- a/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java +++ b/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java @@ -16,8 +16,9 @@ import static org.opensearch.sql.expression.function.BuiltinFunctionName.NOT_LIKE; import static org.opensearch.sql.expression.function.BuiltinFunctionName.POSITION; import static org.opensearch.sql.expression.function.BuiltinFunctionName.REGEXP; +import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.AltMultiFieldRelevanceFunctionContext; +import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.AltSingleFieldRelevanceFunctionContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.AlternateMultiMatchFieldContext; -import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.AlternateMultiMatchQueryContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.BetweenPredicateContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.BinaryComparisonPredicateContext; import static org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.BooleanContext; @@ -96,6 +97,7 @@ import org.opensearch.sql.ast.tree.Sort.SortOption; import org.opensearch.sql.common.utils.StringUtils; import org.opensearch.sql.expression.function.BuiltinFunctionName; +import org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.AlternateMultiMatchQueryContext; import org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.AndExpressionContext; import org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.ColumnNameContext; import org.opensearch.sql.sql.antlr.parser.OpenSearchSQLParser.IdentContext; @@ -431,7 +433,7 @@ public UnresolvedExpression visitSingleFieldRelevanceFunction( @Override public UnresolvedExpression visitAltSingleFieldRelevanceFunction( - OpenSearchSQLParser.AltSingleFieldRelevanceFunctionContext ctx) { + AltSingleFieldRelevanceFunctionContext ctx) { return new Function( ctx.altSyntaxFunctionName.getText().toLowerCase(), altSingleFieldRelevanceFunctionArguments(ctx)); @@ -460,7 +462,7 @@ public UnresolvedExpression visitMultiFieldRelevanceFunction( @Override public UnresolvedExpression visitAltMultiFieldRelevanceFunction( - OpenSearchSQLParser.AltMultiFieldRelevanceFunctionContext ctx) { + AltMultiFieldRelevanceFunctionContext ctx) { return new Function( ctx.altSyntaxFunctionName.getText().toLowerCase(), altMultiFieldRelevanceFunctionArguments(ctx)); @@ -523,7 +525,7 @@ private List singleFieldRelevanceArguments( private List altSingleFieldRelevanceFunctionArguments( - OpenSearchSQLParser.AltSingleFieldRelevanceFunctionContext ctx) { + AltSingleFieldRelevanceFunctionContext ctx) { // all the arguments are defaulted to string values // to skip environment resolving and function signature resolving ImmutableList.Builder builder = ImmutableList.builder(); @@ -591,7 +593,7 @@ private List alternateMultiMatchArguments( } private List altMultiFieldRelevanceFunctionArguments( - OpenSearchSQLParser.AltMultiFieldRelevanceFunctionContext ctx) { + AltMultiFieldRelevanceFunctionContext ctx) { // all the arguments are defaulted to string values // to skip environment resolving and function signature resolving var map = new HashMap(); From 864099c7ac7c0055c2d7abd2d42c793637ff6937 Mon Sep 17 00:00:00 2001 From: GabeFernandez310 Date: Fri, 6 Jan 2023 14:27:20 -0800 Subject: [PATCH 37/55] Fixed Casting Issue Signed-off-by: GabeFernandez310 --- .../org/opensearch/sql/sql/parser/AstExpressionBuilder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java b/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java index 14044cbb30..e40f2edb03 100644 --- a/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java +++ b/sql/src/main/java/org/opensearch/sql/sql/parser/AstExpressionBuilder.java @@ -530,7 +530,7 @@ private List altSingleFieldRelevanceFunctionArguments( // to skip environment resolving and function signature resolving ImmutableList.Builder builder = ImmutableList.builder(); builder.add(new UnresolvedArgument("field", - new Literal(StringUtils.unquoteText(ctx.field.getText()), DataType.STRING))); + new QualifiedName(StringUtils.unquoteText(ctx.field.getText())))); builder.add(new UnresolvedArgument("query", new Literal(StringUtils.unquoteText(ctx.query.getText()), DataType.STRING))); fillRelevanceArgs(ctx.relevanceArg(), builder); From a707e3f3a5e5df7f809ef89836cbb97275a70d94 Mon Sep 17 00:00:00 2001 From: GabeFernandez310 Date: Fri, 6 Jan 2023 14:57:14 -0800 Subject: [PATCH 38/55] Fixed Unit Tests Signed-off-by: GabeFernandez310 --- .../sql/parser/AstExpressionBuilderTest.java | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java b/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java index 0bc44cdffd..23d3ddbc49 100644 --- a/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java +++ b/sql/src/test/java/org/opensearch/sql/sql/parser/AstExpressionBuilderTest.java @@ -576,26 +576,26 @@ public void relevanceMatch_Query() { public void relevanceMatchQueryAltSyntax() { assertEquals(AstDSL.function("match_query", unresolvedArg("field", stringLiteral("message")), - unresolvedArg("query", stringLiteral("search query"))), - buildExprAst("message = match_query('search query')") + unresolvedArg("query", stringLiteral("search query"))).toString(), + buildExprAst("message = match_query('search query')").toString() ); assertEquals(AstDSL.function("match_query", unresolvedArg("field", stringLiteral("message")), - unresolvedArg("query", stringLiteral("search query"))), - buildExprAst("message = match_query(\"search query\")") + unresolvedArg("query", stringLiteral("search query"))).toString(), + buildExprAst("message = match_query(\"search query\")").toString() ); assertEquals(AstDSL.function("matchquery", unresolvedArg("field", stringLiteral("message")), - unresolvedArg("query", stringLiteral("search query"))), - buildExprAst("message = matchquery('search query')") + unresolvedArg("query", stringLiteral("search query"))).toString(), + buildExprAst("message = matchquery('search query')").toString() ); assertEquals(AstDSL.function("matchquery", unresolvedArg("field", stringLiteral("message")), - unresolvedArg("query", stringLiteral("search query"))), - buildExprAst("message = matchquery(\"search query\")") + unresolvedArg("query", stringLiteral("search query"))).toString(), + buildExprAst("message = matchquery(\"search query\")").toString() ); } @@ -603,26 +603,26 @@ public void relevanceMatchQueryAltSyntax() { public void relevanceMatchPhraseAltSyntax() { assertEquals(AstDSL.function("match_phrase", unresolvedArg("field", stringLiteral("message")), - unresolvedArg("query", stringLiteral("search query"))), - buildExprAst("message = match_phrase('search query')") + unresolvedArg("query", stringLiteral("search query"))).toString(), + buildExprAst("message = match_phrase('search query')").toString() ); assertEquals(AstDSL.function("match_phrase", unresolvedArg("field", stringLiteral("message")), - unresolvedArg("query", stringLiteral("search query"))), - buildExprAst("message = match_phrase(\"search query\")") + unresolvedArg("query", stringLiteral("search query"))).toString(), + buildExprAst("message = match_phrase(\"search query\")").toString() ); assertEquals(AstDSL.function("matchphrase", unresolvedArg("field", stringLiteral("message")), - unresolvedArg("query", stringLiteral("search query"))), - buildExprAst("message = matchphrase('search query')") + unresolvedArg("query", stringLiteral("search query"))).toString(), + buildExprAst("message = matchphrase('search query')").toString() ); assertEquals(AstDSL.function("matchphrase", unresolvedArg("field", stringLiteral("message")), - unresolvedArg("query", stringLiteral("search query"))), - buildExprAst("message = matchphrase(\"search query\")") + unresolvedArg("query", stringLiteral("search query"))).toString(), + buildExprAst("message = matchphrase(\"search query\")").toString() ); } From ee949ccc128eed78d32b6993948036a93e974bd4 Mon Sep 17 00:00:00 2001 From: vamsi-amazon Date: Fri, 6 Jan 2023 18:02:54 -0800 Subject: [PATCH 39/55] Fixed error with single timestamp query (#1244) Signed-off-by: vamsi-amazon Signed-off-by: vamsi-amazon --- .../SeriesSelectionQueryBuilder.java | 4 ++- .../storage/PrometheusMetricTableTest.java | 31 ++++++++++++++++++- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/prometheus/src/main/java/org/opensearch/sql/prometheus/storage/querybuilder/SeriesSelectionQueryBuilder.java b/prometheus/src/main/java/org/opensearch/sql/prometheus/storage/querybuilder/SeriesSelectionQueryBuilder.java index baa235aa89..c749c12758 100644 --- a/prometheus/src/main/java/org/opensearch/sql/prometheus/storage/querybuilder/SeriesSelectionQueryBuilder.java +++ b/prometheus/src/main/java/org/opensearch/sql/prometheus/storage/querybuilder/SeriesSelectionQueryBuilder.java @@ -37,7 +37,9 @@ public static String build(String metricName, Expression filterCondition) { SeriesSelectionExpressionNodeVisitor seriesSelectionExpressionNodeVisitor = new SeriesSelectionExpressionNodeVisitor(); String selectorQuery = filterCondition.accept(seriesSelectionExpressionNodeVisitor, null); - return metricName + "{" + selectorQuery + "}"; + if (selectorQuery != null) { + return metricName + "{" + selectorQuery + "}"; + } } return metricName; } diff --git a/prometheus/src/test/java/org/opensearch/sql/prometheus/storage/PrometheusMetricTableTest.java b/prometheus/src/test/java/org/opensearch/sql/prometheus/storage/PrometheusMetricTableTest.java index 7e2de95604..b03b0b9ebc 100644 --- a/prometheus/src/test/java/org/opensearch/sql/prometheus/storage/PrometheusMetricTableTest.java +++ b/prometheus/src/test/java/org/opensearch/sql/prometheus/storage/PrometheusMetricTableTest.java @@ -303,7 +303,7 @@ void testTimeRangeResolverWithOutEndTimeInFilter() { new PrometheusMetricTable(client, "prometheus_http_total_requests"); - //Both endTime and startTime are set. + //Only endTime is set. List finalProjectList = new ArrayList<>(); finalProjectList.add(DSL.named(VALUE, DSL.ref(VALUE, STRING))); finalProjectList.add(DSL.named(TIMESTAMP, DSL.ref(TIMESTAMP, ExprCoreType.TIMESTAMP))); @@ -724,6 +724,35 @@ void testImplementWithRelationAndFilter() { assertEquals(List.of(VALUE, TIMESTAMP), outputFields); } + @Test + void testImplementWithRelationAndTimestampFilter() { + List finalProjectList = new ArrayList<>(); + finalProjectList.add(DSL.named(VALUE, DSL.ref(VALUE, STRING))); + finalProjectList.add(DSL.named(TIMESTAMP, DSL.ref(TIMESTAMP, ExprCoreType.TIMESTAMP))); + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Long endTime = new Date(System.currentTimeMillis()).getTime(); + PrometheusMetricTable prometheusMetricTable = + new PrometheusMetricTable(client, "prometheus_http_total_requests"); + LogicalPlan logicalPlan = project(indexScan("prometheus_http_total_requests", + DSL.lte(DSL.ref("@timestamp", ExprCoreType.TIMESTAMP), + DSL.literal( + fromObjectValue(dateFormat.format(new Date(endTime)), + ExprCoreType.TIMESTAMP))) + ), finalProjectList, null); + PhysicalPlan physicalPlan = prometheusMetricTable.implement(logicalPlan); + assertTrue(physicalPlan instanceof ProjectOperator); + assertTrue(((ProjectOperator) physicalPlan).getInput() instanceof PrometheusMetricScan); + PrometheusQueryRequest request + = ((PrometheusMetricScan) ((ProjectOperator) physicalPlan).getInput()).getRequest(); + assertEquals((3600 / 250) + "s", request.getStep()); + assertEquals("prometheus_http_total_requests", + request.getPromQl()); + List projectList = ((ProjectOperator) physicalPlan).getProjectList(); + List outputFields + = projectList.stream().map(NamedExpression::getName).collect(Collectors.toList()); + assertEquals(List.of(VALUE, TIMESTAMP), outputFields); + } + @Test void testOptimize() { PrometheusQueryRequest prometheusQueryRequest = new PrometheusQueryRequest(); From 151f4cc877c9964b6ce2d7118d3249c5b42eb941 Mon Sep 17 00:00:00 2001 From: Chen Dai Date: Mon, 9 Jan 2023 10:17:29 -0800 Subject: [PATCH 40/55] Support JOIN query on object field with unexpanded name (#1229) * Resolve sub object field in search hit source Signed-off-by: Chen Dai * Rename to unexpanded object Signed-off-by: Chen Dai * Update IT with where condition Signed-off-by: Chen Dai * Fix test index mapping Signed-off-by: Chen Dai Signed-off-by: Chen Dai --- .../org/opensearch/sql/legacy/HashJoinIT.java | 21 ++++++ .../sql/legacy/SQLIntegTestCase.java | 5 ++ .../org/opensearch/sql/legacy/TestUtils.java | 5 ++ .../opensearch/sql/legacy/TestsConstants.java | 1 + .../unexpanded_object_index_mapping.json | 27 ++++++++ .../test/resources/unexpanded_objects.json | 8 +++ .../physical/node/scroll/SearchHitRow.java | 7 ++ .../node/scroll/SearchHitRowTest.java | 65 +++++++++++++++++++ 8 files changed, 139 insertions(+) create mode 100644 integ-test/src/test/resources/indexDefinitions/unexpanded_object_index_mapping.json create mode 100644 integ-test/src/test/resources/unexpanded_objects.json create mode 100644 legacy/src/test/java/org/opensearch/sql/legacy/query/planner/physical/node/scroll/SearchHitRowTest.java diff --git a/integ-test/src/test/java/org/opensearch/sql/legacy/HashJoinIT.java b/integ-test/src/test/java/org/opensearch/sql/legacy/HashJoinIT.java index 284d034cd8..9cd497e675 100644 --- a/integ-test/src/test/java/org/opensearch/sql/legacy/HashJoinIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/legacy/HashJoinIT.java @@ -9,6 +9,11 @@ import static org.hamcrest.Matchers.equalTo; import static org.opensearch.sql.legacy.TestsConstants.TEST_INDEX_ACCOUNT; import static org.opensearch.sql.legacy.TestsConstants.TEST_INDEX_GAME_OF_THRONES; +import static org.opensearch.sql.legacy.TestsConstants.TEST_INDEX_UNEXPANDED_OBJECT; +import static org.opensearch.sql.util.MatcherUtils.columnName; +import static org.opensearch.sql.util.MatcherUtils.rows; +import static org.opensearch.sql.util.MatcherUtils.verifyColumn; +import static org.opensearch.sql.util.MatcherUtils.verifyDataRows; import java.io.IOException; import java.util.HashSet; @@ -55,6 +60,7 @@ public class HashJoinIT extends SQLIntegTestCase { protected void init() throws Exception { loadIndex(Index.ACCOUNT); loadIndex(Index.GAME_OF_THRONES); + loadIndex(Index.UNEXPANDED_OBJECT); } @Test @@ -69,6 +75,21 @@ public void leftJoin() throws IOException { testJoin("LEFT JOIN"); } + @Test + public void innerJoinUnexpandedObjectField() { + String query = String.format(Locale.ROOT, + "SELECT " + + "a.id.serial, b.id.serial " + + "FROM %1$s AS a " + + "JOIN %1$s AS b " + + "ON a.id.serial = b.attributes.hardware.correlate_id " + + "WHERE b.attributes.hardware.platform = 'Linux' ", + TEST_INDEX_UNEXPANDED_OBJECT); + + JSONObject response = executeJdbcRequest(query); + verifyDataRows(response, rows(3, 1), rows(3, 3)); + } + @Test public void innerJoinWithObjectField() throws IOException { testJoinWithObjectField("INNER JOIN", ""); diff --git a/integ-test/src/test/java/org/opensearch/sql/legacy/SQLIntegTestCase.java b/integ-test/src/test/java/org/opensearch/sql/legacy/SQLIntegTestCase.java index 80348b2a8b..0cfc4a6aa6 100644 --- a/integ-test/src/test/java/org/opensearch/sql/legacy/SQLIntegTestCase.java +++ b/integ-test/src/test/java/org/opensearch/sql/legacy/SQLIntegTestCase.java @@ -57,6 +57,7 @@ import static org.opensearch.sql.legacy.TestUtils.getPhraseIndexMapping; import static org.opensearch.sql.legacy.TestUtils.getResponseBody; import static org.opensearch.sql.legacy.TestUtils.getStringIndexMapping; +import static org.opensearch.sql.legacy.TestUtils.getUnexpandedObjectIndexMapping; import static org.opensearch.sql.legacy.TestUtils.getWeblogsIndexMapping; import static org.opensearch.sql.legacy.TestUtils.isIndexExist; import static org.opensearch.sql.legacy.TestUtils.loadDataByRestClient; @@ -517,6 +518,10 @@ public enum Index { "joinType", getJoinTypeIndexMapping(), "src/test/resources/join_objects.json"), + UNEXPANDED_OBJECT(TestsConstants.TEST_INDEX_UNEXPANDED_OBJECT, + "unexpandedObject", + getUnexpandedObjectIndexMapping(), + "src/test/resources/unexpanded_objects.json"), BANK(TestsConstants.TEST_INDEX_BANK, "account", getBankIndexMapping(), diff --git a/integ-test/src/test/java/org/opensearch/sql/legacy/TestUtils.java b/integ-test/src/test/java/org/opensearch/sql/legacy/TestUtils.java index 8f8ee4a70f..30cee86e15 100644 --- a/integ-test/src/test/java/org/opensearch/sql/legacy/TestUtils.java +++ b/integ-test/src/test/java/org/opensearch/sql/legacy/TestUtils.java @@ -188,6 +188,11 @@ public static String getJoinTypeIndexMapping() { return getMappingFile(mappingFile); } + public static String getUnexpandedObjectIndexMapping() { + String mappingFile = "unexpanded_object_index_mapping.json"; + return getMappingFile(mappingFile); + } + public static String getBankIndexMapping() { String mappingFile = "bank_index_mapping.json"; return getMappingFile(mappingFile); diff --git a/integ-test/src/test/java/org/opensearch/sql/legacy/TestsConstants.java b/integ-test/src/test/java/org/opensearch/sql/legacy/TestsConstants.java index aff269fcce..c79314af6a 100644 --- a/integ-test/src/test/java/org/opensearch/sql/legacy/TestsConstants.java +++ b/integ-test/src/test/java/org/opensearch/sql/legacy/TestsConstants.java @@ -36,6 +36,7 @@ public class TestsConstants { TEST_INDEX + "_nested_type_with_quotes"; public final static String TEST_INDEX_EMPLOYEE_NESTED = TEST_INDEX + "_employee_nested"; public final static String TEST_INDEX_JOIN_TYPE = TEST_INDEX + "_join_type"; + public final static String TEST_INDEX_UNEXPANDED_OBJECT = TEST_INDEX + "_unexpanded_object"; public final static String TEST_INDEX_BANK = TEST_INDEX + "_bank"; public final static String TEST_INDEX_BANK_TWO = TEST_INDEX_BANK + "_two"; public final static String TEST_INDEX_BANK_WITH_NULL_VALUES = diff --git a/integ-test/src/test/resources/indexDefinitions/unexpanded_object_index_mapping.json b/integ-test/src/test/resources/indexDefinitions/unexpanded_object_index_mapping.json new file mode 100644 index 0000000000..8275147375 --- /dev/null +++ b/integ-test/src/test/resources/indexDefinitions/unexpanded_object_index_mapping.json @@ -0,0 +1,27 @@ +{ + "mappings": { + "properties": { + "id": { + "properties": { + "serial": { + "type": "integer" + } + } + }, + "attributes": { + "properties": { + "hardware": { + "properties": { + "correlate_id": { + "type": "integer" + }, + "platform": { + "type": "keyword" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/integ-test/src/test/resources/unexpanded_objects.json b/integ-test/src/test/resources/unexpanded_objects.json new file mode 100644 index 0000000000..e1df2570cc --- /dev/null +++ b/integ-test/src/test/resources/unexpanded_objects.json @@ -0,0 +1,8 @@ +{"index":{"_id":"1"}} +{"id.serial" : 1 , "attributes.hardware.correlate_id": 3, "attributes.hardware.platform": "Linux"} +{"index":{"_id":"2"}} +{"id.serial" : 2 , "attributes.hardware.correlate_id": 3, "attributes.hardware.platform": "Windows"} +{"index":{"_id":"3"}} +{"id.serial" : 3 , "attributes.hardware.correlate_id": 3, "attributes.hardware.platform": "Linux"} +{"index":{"_id":"4"}} +{"id.serial" : 4 , "attributes.hardware.correlate_id": 100, "attributes.hardware.platform": "Linux"} diff --git a/legacy/src/main/java/org/opensearch/sql/legacy/query/planner/physical/node/scroll/SearchHitRow.java b/legacy/src/main/java/org/opensearch/sql/legacy/query/planner/physical/node/scroll/SearchHitRow.java index 8f418deadb..b8cc2bb965 100644 --- a/legacy/src/main/java/org/opensearch/sql/legacy/query/planner/physical/node/scroll/SearchHitRow.java +++ b/legacy/src/main/java/org/opensearch/sql/legacy/query/planner/physical/node/scroll/SearchHitRow.java @@ -134,6 +134,13 @@ private Object getValueOfPath(Object source, String path, boolean isIgnoreFirstD if (dot == -1) { return ((Map) source).get(path); } + + // Object field name maybe unexpanded without recursive object structure + // ex. {"a.b.c": value} instead of {"a": {"b": {"c": value}}}} + if (((Map) source).containsKey(path)) { + return ((Map) source).get(path); + } + return getValueOfPath( ((Map) source).get(path.substring(0, dot)), path.substring(dot + 1), diff --git a/legacy/src/test/java/org/opensearch/sql/legacy/query/planner/physical/node/scroll/SearchHitRowTest.java b/legacy/src/test/java/org/opensearch/sql/legacy/query/planner/physical/node/scroll/SearchHitRowTest.java new file mode 100644 index 0000000000..6c2f789a47 --- /dev/null +++ b/legacy/src/test/java/org/opensearch/sql/legacy/query/planner/physical/node/scroll/SearchHitRowTest.java @@ -0,0 +1,65 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.sql.legacy.query.planner.physical.node.scroll; + +import static org.junit.Assert.assertEquals; +import static org.opensearch.sql.legacy.query.planner.physical.Row.RowKey; + +import com.google.common.collect.ImmutableMap; +import org.junit.Test; +import org.opensearch.common.bytes.BytesArray; +import org.opensearch.search.SearchHit; + +public class SearchHitRowTest { + + @Test + public void testKeyWithObjectField() { + SearchHit hit = new SearchHit(1); + hit.sourceRef(new BytesArray("{\"id\": {\"serial\": 3}}")); + SearchHitRow row = new SearchHitRow(hit, "a"); + RowKey key = row.key(new String[]{"id.serial"}); + + Object[] data = key.keys(); + assertEquals(1, data.length); + assertEquals(3, data[0]); + } + + @Test + public void testKeyWithUnexpandedObjectField() { + SearchHit hit = new SearchHit(1); + hit.sourceRef(new BytesArray("{\"attributes.hardware.correlate_id\": 10}")); + SearchHitRow row = new SearchHitRow(hit, "a"); + RowKey key = row.key(new String[]{"attributes.hardware.correlate_id"}); + + Object[] data = key.keys(); + assertEquals(1, data.length); + assertEquals(10, data[0]); + } + + @Test + public void testRetainWithObjectField() { + SearchHit hit = new SearchHit(1); + hit.sourceRef(new BytesArray("{\"a.id\": {\"serial\": 3}}")); + SearchHitRow row = new SearchHitRow(hit, ""); + row.retain(ImmutableMap.of("a.id.serial", "")); + + SearchHit expected = new SearchHit(1); + expected.sourceRef(new BytesArray("{\"a.id\": {\"serial\": 3}}")); + assertEquals(expected, row.data()); + } + + @Test + public void testRetainWithUnexpandedObjectField() { + SearchHit hit = new SearchHit(1); + hit.sourceRef(new BytesArray("{\"a.attributes.hardware.correlate_id\": 10}")); + SearchHitRow row = new SearchHitRow(hit, ""); + row.retain(ImmutableMap.of("a.attributes.hardware.correlate_id", "")); + + SearchHit expected = new SearchHit(1); + expected.sourceRef(new BytesArray("{\"a.attributes.hardware.correlate_id\": 10}")); + assertEquals(expected, row.data()); + } +} \ No newline at end of file From 7630f87335d62f7fd5ec3eb5c49697c97f94296d Mon Sep 17 00:00:00 2001 From: Yury-Fridlyand Date: Mon, 9 Jan 2023 10:23:28 -0800 Subject: [PATCH 41/55] Add functions `ADDTIME` and `SUBTIME`. (#132) (#1194) * Add functions `ADDTIME` and `SUBTIME`. (#132) Signed-off-by: Yury-Fridlyand --- .../expression/datetime/DateTimeFunction.java | 140 ++++++++++++++++++ .../function/BuiltinFunctionName.java | 2 + .../opensearch/sql/utils/DateTimeUtils.java | 11 ++ .../datetime/AddTimeAndSubTimeTest.java | 127 ++++++++++++++++ .../expression/datetime/DateTimeTestBase.java | 34 +++-- docs/user/dql/functions.rst | 122 +++++++++++++++ docs/user/ppl/functions/datetime.rst | 125 +++++++++++++++- .../sql/ppl/DateTimeFunctionIT.java | 36 +++++ .../sql/sql/DateTimeFunctionIT.java | 33 +++++ ppl/src/main/antlr/OpenSearchPPLLexer.g4 | 2 + ppl/src/main/antlr/OpenSearchPPLParser.g4 | 2 + sql/src/main/antlr/OpenSearchSQLLexer.g4 | 2 + sql/src/main/antlr/OpenSearchSQLParser.g4 | 2 + 13 files changed, 626 insertions(+), 12 deletions(-) create mode 100644 core/src/test/java/org/opensearch/sql/expression/datetime/AddTimeAndSubTimeTest.java diff --git a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java index 37f5babe89..064d6ea857 100644 --- a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java +++ b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java @@ -30,6 +30,7 @@ import static org.opensearch.sql.utils.DateTimeFormatters.DATE_TIME_FORMATTER_SHORT_YEAR; import static org.opensearch.sql.utils.DateTimeFormatters.DATE_TIME_FORMATTER_STRICT_WITH_TZ; import static org.opensearch.sql.utils.DateTimeUtils.extractDate; +import static org.opensearch.sql.utils.DateTimeUtils.extractDateTime; import java.math.BigDecimal; import java.math.RoundingMode; @@ -95,6 +96,7 @@ public class DateTimeFunction { */ public void register(BuiltinFunctionRepository repository) { repository.register(adddate()); + repository.register(addtime()); repository.register(convert_tz()); repository.register(curtime()); repository.register(curdate()); @@ -134,6 +136,7 @@ public void register(BuiltinFunctionRepository repository) { repository.register(second(BuiltinFunctionName.SECOND)); repository.register(second(BuiltinFunctionName.SECOND_OF_MINUTE)); repository.register(subdate()); + repository.register(subtime()); repository.register(sysdate()); repository.register(time()); repository.register(time_to_sec()); @@ -249,6 +252,52 @@ private DefaultFunctionResolver adddate() { return add_date(BuiltinFunctionName.ADDDATE.getName()); } + /** + * Adds expr2 to expr1 and returns the result. + * (TIME, TIME/DATE/DATETIME/TIMESTAMP) -> TIME + * (DATE/DATETIME/TIMESTAMP, TIME/DATE/DATETIME/TIMESTAMP) -> DATETIME + * TODO: MySQL has these signatures too + * (STRING, STRING/TIME) -> STRING // second arg - string with time only + * (x, STRING) -> NULL // second arg - string with timestamp + * (x, STRING/DATE) -> x // second arg - string with date only + */ + private DefaultFunctionResolver addtime() { + return define(BuiltinFunctionName.ADDTIME.getName(), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprAddTime), + TIME, TIME, TIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprAddTime), + TIME, TIME, DATE), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprAddTime), + TIME, TIME, DATETIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprAddTime), + TIME, TIME, TIMESTAMP), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprAddTime), + DATETIME, DATETIME, TIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprAddTime), + DATETIME, DATETIME, DATE), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprAddTime), + DATETIME, DATETIME, DATETIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprAddTime), + DATETIME, DATETIME, TIMESTAMP), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprAddTime), + DATETIME, DATE, TIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprAddTime), + DATETIME, DATE, DATE), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprAddTime), + DATETIME, DATE, DATETIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprAddTime), + DATETIME, DATE, TIMESTAMP), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprAddTime), + DATETIME, TIMESTAMP, TIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprAddTime), + DATETIME, TIMESTAMP, DATE), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprAddTime), + DATETIME, TIMESTAMP, DATETIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprAddTime), + DATETIME, TIMESTAMP, TIMESTAMP) + ); + } + /** * Converts date/time from a specified timezone to another specified timezone. * The supported signatures: @@ -579,6 +628,52 @@ private DefaultFunctionResolver subdate() { return sub_date(BuiltinFunctionName.SUBDATE.getName()); } + /** + * Subtracts expr2 from expr1 and returns the result. + * (TIME, TIME/DATE/DATETIME/TIMESTAMP) -> TIME + * (DATE/DATETIME/TIMESTAMP, TIME/DATE/DATETIME/TIMESTAMP) -> DATETIME + * TODO: MySQL has these signatures too + * (STRING, STRING/TIME) -> STRING // second arg - string with time only + * (x, STRING) -> NULL // second arg - string with timestamp + * (x, STRING/DATE) -> x // second arg - string with date only + */ + private DefaultFunctionResolver subtime() { + return define(BuiltinFunctionName.SUBTIME.getName(), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprSubTime), + TIME, TIME, TIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprSubTime), + TIME, TIME, DATE), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprSubTime), + TIME, TIME, DATETIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprSubTime), + TIME, TIME, TIMESTAMP), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprSubTime), + DATETIME, DATETIME, TIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprSubTime), + DATETIME, DATETIME, DATE), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprSubTime), + DATETIME, DATETIME, DATETIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprSubTime), + DATETIME, DATETIME, TIMESTAMP), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprSubTime), + DATETIME, DATE, TIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprSubTime), + DATETIME, DATE, DATE), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprSubTime), + DATETIME, DATE, DATETIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprSubTime), + DATETIME, DATE, TIMESTAMP), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprSubTime), + DATETIME, TIMESTAMP, TIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprSubTime), + DATETIME, TIMESTAMP, DATE), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprSubTime), + DATETIME, TIMESTAMP, DATETIME), + implWithProperties(nullMissingHandlingWithProperties(DateTimeFunction::exprSubTime), + DATETIME, TIMESTAMP, TIMESTAMP) + ); + } + /** * Extracts the time part of a date and time value. * Also to construct a time type. The supported signatures: @@ -768,6 +863,39 @@ private ExprValue exprAddDateDays(ExprValue date, ExprValue days) { : exprValue); } + /** + * Adds or subtracts time to/from date and returns the result. + * + * @param functionProperties A FunctionProperties object. + * @param temporal A Date/Time/Datetime/Timestamp value to change. + * @param temporalDelta A Date/Time/Datetime/Timestamp object to add/subtract time from. + * @param isAdd A flag: true to add, false to subtract. + * @return A value calculated. + */ + private ExprValue exprApplyTime(FunctionProperties functionProperties, + ExprValue temporal, ExprValue temporalDelta, Boolean isAdd) { + var interval = Duration.between(LocalTime.MIN, temporalDelta.timeValue()); + var result = isAdd + ? extractDateTime(temporal, functionProperties).plus(interval) + : extractDateTime(temporal, functionProperties).minus(interval); + return temporal.type() == TIME + ? new ExprTimeValue(result.toLocalTime()) + : new ExprDatetimeValue(result); + } + + /** + * Adds time to date and returns the result. + * + * @param functionProperties A FunctionProperties object. + * @param temporal A Date/Time/Datetime/Timestamp value to change. + * @param temporalDelta A Date/Time/Datetime/Timestamp object to add time from. + * @return A value calculated. + */ + private ExprValue exprAddTime(FunctionProperties functionProperties, + ExprValue temporal, ExprValue temporalDelta) { + return exprApplyTime(functionProperties, temporal, temporalDelta, true); + } + /** * CONVERT_TZ function implementation for ExprValue. * Returns null for time zones outside of +13:00 and -12:00. @@ -1181,6 +1309,18 @@ private ExprValue exprSubDateInterval(ExprValue date, ExprValue expr) { : exprValue); } + /** + * Subtracts expr2 from expr1 and returns the result. + * + * @param temporal A Date/Time/Datetime/Timestamp value to change. + * @param temporalDelta A Date/Time/Datetime/Timestamp to subtract time from. + * @return A value calculated. + */ + private ExprValue exprSubTime(FunctionProperties functionProperties, + ExprValue temporal, ExprValue temporalDelta) { + return exprApplyTime(functionProperties, temporal, temporalDelta, false); + } + /** * Time implementation for ExprValue. * diff --git a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java index 3fca0a6fc8..5572f41a9f 100644 --- a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java +++ b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java @@ -59,6 +59,7 @@ public enum BuiltinFunctionName { * Date and Time Functions. */ ADDDATE(FunctionName.of("adddate")), + ADDTIME(FunctionName.of("addtime")), CONVERT_TZ(FunctionName.of("convert_tz")), DATE(FunctionName.of("date")), DATEDIFF(FunctionName.of("datediff")), @@ -90,6 +91,7 @@ public enum BuiltinFunctionName { SECOND(FunctionName.of("second")), SECOND_OF_MINUTE(FunctionName.of("second_of_minute")), SUBDATE(FunctionName.of("subdate")), + SUBTIME(FunctionName.of("subtime")), TIME(FunctionName.of("time")), TIMEDIFF(FunctionName.of("timediff")), TIME_TO_SEC(FunctionName.of("time_to_sec")), diff --git a/core/src/main/java/org/opensearch/sql/utils/DateTimeUtils.java b/core/src/main/java/org/opensearch/sql/utils/DateTimeUtils.java index 28bb4e6918..06d40ea6aa 100644 --- a/core/src/main/java/org/opensearch/sql/utils/DateTimeUtils.java +++ b/core/src/main/java/org/opensearch/sql/utils/DateTimeUtils.java @@ -130,6 +130,17 @@ public Boolean isValidMySqlTimeZoneId(ZoneId zone) { || passedTzValidator.isEqual(minTzValidator)); } + /** + * Extracts LocalDateTime from a datetime ExprValue. + * Uses `FunctionProperties` for `ExprTimeValue`. + */ + public static LocalDateTime extractDateTime(ExprValue value, + FunctionProperties functionProperties) { + return value instanceof ExprTimeValue + ? ((ExprTimeValue) value).datetimeValue(functionProperties) + : value.datetimeValue(); + } + /** * Extracts LocalDate from a datetime ExprValue. * Uses `FunctionProperties` for `ExprTimeValue`. diff --git a/core/src/test/java/org/opensearch/sql/expression/datetime/AddTimeAndSubTimeTest.java b/core/src/test/java/org/opensearch/sql/expression/datetime/AddTimeAndSubTimeTest.java new file mode 100644 index 0000000000..e917e2ee62 --- /dev/null +++ b/core/src/test/java/org/opensearch/sql/expression/datetime/AddTimeAndSubTimeTest.java @@ -0,0 +1,127 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.sql.expression.datetime; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.opensearch.sql.data.type.ExprCoreType.DATETIME; +import static org.opensearch.sql.data.type.ExprCoreType.TIME; + +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.temporal.Temporal; +import java.util.stream.Stream; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +public class AddTimeAndSubTimeTest extends DateTimeTestBase { + + @Test + // (TIME, TIME/DATE/DATETIME/TIMESTAMP) -> TIME + public void return_time_when_first_arg_is_time() { + var res = addtime(LocalTime.of(21, 0), LocalTime.of(0, 5)); + assertEquals(TIME, res.type()); + assertEquals(LocalTime.of(21, 5), res.timeValue()); + + res = subtime(LocalTime.of(21, 0), LocalTime.of(0, 5)); + assertEquals(TIME, res.type()); + assertEquals(LocalTime.of(20, 55), res.timeValue()); + + res = addtime(LocalTime.of(12, 20), Instant.ofEpochSecond(42)); + assertEquals(TIME, res.type()); + assertEquals(LocalTime.of(12, 20, 42), res.timeValue()); + + res = subtime(LocalTime.of(10, 0), Instant.ofEpochSecond(42)); + assertEquals(TIME, res.type()); + assertEquals(LocalTime.of(9, 59, 18), res.timeValue()); + + res = addtime(LocalTime.of(2, 3, 4), LocalDateTime.of(1961, 4, 12, 9, 7)); + assertEquals(TIME, res.type()); + assertEquals(LocalTime.of(11, 10, 4), res.timeValue()); + + res = subtime(LocalTime.of(12, 3, 4), LocalDateTime.of(1961, 4, 12, 9, 7)); + assertEquals(TIME, res.type()); + assertEquals(LocalTime.of(2, 56, 4), res.timeValue()); + + res = addtime(LocalTime.of(9, 7), LocalDate.now()); + assertEquals(TIME, res.type()); + assertEquals(LocalTime.of(9, 7), res.timeValue()); + + res = subtime(LocalTime.of(9, 7), LocalDate.of(1961, 4, 12)); + assertEquals(TIME, res.type()); + assertEquals(LocalTime.of(9, 7), res.timeValue()); + } + + @Test + public void time_limited_by_24_hours() { + var res = addtime(LocalTime.of(21, 0), LocalTime.of(14, 5)); + assertEquals(TIME, res.type()); + assertEquals(LocalTime.of(11, 5), res.timeValue()); + + res = subtime(LocalTime.of(14, 0), LocalTime.of(21, 5)); + assertEquals(TIME, res.type()); + assertEquals(LocalTime.of(16, 55), res.timeValue()); + } + + // Function signature is: + // (DATE/DATETIME/TIMESTAMP, TIME/DATE/DATETIME/TIMESTAMP) -> DATETIME + private static Stream getTestData() { + return Stream.of( + // DATETIME and TIME/DATE/DATETIME/TIMESTAMP + Arguments.of(LocalDateTime.of(1961, 4, 12, 9, 7), LocalTime.of(1, 48), + LocalDateTime.of(1961, 4, 12, 10, 55), LocalDateTime.of(1961, 4, 12, 7, 19)), + Arguments.of(LocalDateTime.of(1961, 4, 12, 9, 7), LocalDate.of(2000, 1, 1), + LocalDateTime.of(1961, 4, 12, 9, 7), LocalDateTime.of(1961, 4, 12, 9, 7)), + Arguments.of(LocalDateTime.of(1961, 4, 12, 9, 7), LocalDateTime.of(1235, 5, 6, 1, 48), + LocalDateTime.of(1961, 4, 12, 10, 55), LocalDateTime.of(1961, 4, 12, 7, 19)), + Arguments.of(LocalDateTime.of(1961, 4, 12, 9, 7), Instant.ofEpochSecond(42), + LocalDateTime.of(1961, 4, 12, 9, 7, 42), LocalDateTime.of(1961, 4, 12, 9, 6, 18)), + // DATE and TIME/DATE/DATETIME/TIMESTAMP + Arguments.of(LocalDate.of(1961, 4, 12), LocalTime.of(9, 7), + LocalDateTime.of(1961, 4, 12, 9, 7), LocalDateTime.of(1961, 4, 11, 14, 53)), + Arguments.of(LocalDate.of(1961, 4, 12), LocalDate.of(2000, 1, 1), + LocalDateTime.of(1961, 4, 12, 0, 0), LocalDateTime.of(1961, 4, 12, 0, 0)), + Arguments.of(LocalDate.of(1961, 4, 12), LocalDateTime.of(1235, 5, 6, 1, 48), + LocalDateTime.of(1961, 4, 12, 1, 48), LocalDateTime.of(1961, 4, 11, 22, 12)), + Arguments.of(LocalDate.of(1961, 4, 12), Instant.ofEpochSecond(42), + LocalDateTime.of(1961, 4, 12, 0, 0, 42), LocalDateTime.of(1961, 4, 11, 23, 59, 18)), + // TIMESTAMP and TIME/DATE/DATETIME/TIMESTAMP + Arguments.of(Instant.ofEpochSecond(42), LocalTime.of(9, 7), + LocalDateTime.of(1970, 1, 1, 9, 7, 42), LocalDateTime.of(1969, 12, 31, 14, 53, 42)), + Arguments.of(Instant.ofEpochSecond(42), LocalDate.of(1961, 4, 12), + LocalDateTime.of(1970, 1, 1, 0, 0, 42), LocalDateTime.of(1970, 1, 1, 0, 0, 42)), + Arguments.of(Instant.ofEpochSecond(42), LocalDateTime.of(1961, 4, 12, 9, 7), + LocalDateTime.of(1970, 1, 1, 9, 7, 42), LocalDateTime.of(1969, 12, 31, 14, 53, 42)), + Arguments.of(Instant.ofEpochSecond(42), Instant.ofEpochMilli(42), + LocalDateTime.of(1970, 1, 1, 0, 0, 42, 42000000), + LocalDateTime.of(1970, 1, 1, 0, 0, 41, 958000000)) + ); + } + + /** + * Check that `ADDTIME` and `SUBTIME` functions result value and type. + * @param arg1 First argument. + * @param arg2 Second argument. + * @param addTimeExpectedResult Expected result for `ADDTIME`. + * @param subTimeExpectedResult Expected result for `SUBTIME`. + */ + @ParameterizedTest + @MethodSource("getTestData") + public void return_datetime_when_first_arg_is_not_time(Temporal arg1, Temporal arg2, + LocalDateTime addTimeExpectedResult, + LocalDateTime subTimeExpectedResult) { + var res = addtime(arg1, arg2); + assertEquals(DATETIME, res.type()); + assertEquals(addTimeExpectedResult, res.datetimeValue()); + + res = subtime(arg1, arg2); + assertEquals(DATETIME, res.type()); + assertEquals(subTimeExpectedResult, res.datetimeValue()); + } +} diff --git a/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeTestBase.java b/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeTestBase.java index 7517b27944..d8829ea41a 100644 --- a/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeTestBase.java +++ b/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeTestBase.java @@ -14,10 +14,6 @@ import java.time.LocalTime; import java.time.temporal.Temporal; import java.util.List; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; import org.opensearch.sql.data.model.ExprDateValue; import org.opensearch.sql.data.model.ExprDatetimeValue; import org.opensearch.sql.data.model.ExprMissingValue; @@ -29,26 +25,31 @@ import org.opensearch.sql.expression.Expression; import org.opensearch.sql.expression.ExpressionTestBase; import org.opensearch.sql.expression.FunctionExpression; -import org.opensearch.sql.expression.env.Environment; import org.opensearch.sql.expression.function.BuiltinFunctionName; import org.opensearch.sql.expression.function.BuiltinFunctionRepository; -import org.opensearch.sql.expression.function.FunctionProperties; -@ExtendWith(MockitoExtension.class) public class DateTimeTestBase extends ExpressionTestBase { protected final BuiltinFunctionRepository functionRepository = BuiltinFunctionRepository.getInstance(); - @Mock - protected Environment env; - protected Expression nullRef = DSL.literal(ExprNullValue.of()); protected Expression missingRef = DSL.literal(ExprMissingValue.of()); protected ExprValue eval(Expression expression) { - return expression.valueOf(env); + return expression.valueOf(); + } + + protected FunctionExpression addtime(Expression date, Expression interval) { + return (FunctionExpression) functionRepository.compile( + functionProperties, + BuiltinFunctionName.ADDTIME.getName(), List.of(date, interval)); + } + + protected ExprValue addtime(Temporal first, Temporal second) { + return addtime(DSL.literal(fromObjectValue(first)), DSL.literal(fromObjectValue(second))) + .valueOf(null); } protected FunctionExpression datediff(Expression first, Expression second) { @@ -137,6 +138,17 @@ protected Integer period_diff(Integer first, Integer second) { .valueOf().integerValue(); } + protected FunctionExpression subtime(Expression date, Expression interval) { + return (FunctionExpression) functionRepository.compile( + functionProperties, + BuiltinFunctionName.SUBTIME.getName(), List.of(date, interval)); + } + + protected ExprValue subtime(Temporal first, Temporal second) { + return subtime(DSL.literal(fromObjectValue(first)), DSL.literal(fromObjectValue(second))) + .valueOf(null); + } + protected FunctionExpression timediff(Expression first, Expression second) { return (FunctionExpression) functionRepository.compile( functionProperties, diff --git a/docs/user/dql/functions.rst b/docs/user/dql/functions.rst index be5e788ca6..9a824fe449 100644 --- a/docs/user/dql/functions.rst +++ b/docs/user/dql/functions.rst @@ -873,6 +873,67 @@ Example:: +------------------------------------------------+----------------------------------+------------------------------------------------+ +ADDTIME +------- + +Description +>>>>>>>>>>> + +Usage: addtime(expr1, expr2) adds expr2 to expr1 and returns the result. If argument is TIME, today's date is used; if argument is DATE, time at midnight is used. + +Argument type: DATE/DATETIME/TIMESTAMP/TIME, DATE/DATETIME/TIMESTAMP/TIME + +Return type map: + +(DATE/DATETIME/TIMESTAMP, DATE/DATETIME/TIMESTAMP/TIME) -> DATETIME + +(TIME, DATE/DATETIME/TIMESTAMP/TIME) -> TIME + +Antonyms: `SUBTIME`_ + +Example:: + + os> SELECT ADDTIME(DATE('2008-12-12'), DATE('2008-11-15')) AS `'2008-12-12' + 0 ` + fetched rows / total rows = 1/1 + +---------------------+ + | '2008-12-12' + 0 | + |---------------------| + | 2008-12-12 00:00:00 | + +---------------------+ + + os> SELECT ADDTIME(TIME('23:59:59'), DATE('2004-01-01')) AS `'23:59:59' + 0` + fetched rows / total rows = 1/1 + +------------------+ + | '23:59:59' + 0 | + |------------------| + | 23:59:59 | + +------------------+ + + os> SELECT ADDTIME(DATE('2004-01-01'), TIME('23:59:59')) AS `'2004-01-01' + '23:59:59'` + fetched rows / total rows = 1/1 + +-----------------------------+ + | '2004-01-01' + '23:59:59' | + |-----------------------------| + | 2004-01-01 23:59:59 | + +-----------------------------+ + + os> SELECT ADDTIME(TIME('10:20:30'), TIME('00:05:42')) AS `'10:20:30' + '00:05:42'` + fetched rows / total rows = 1/1 + +---------------------------+ + | '10:20:30' + '00:05:42' | + |---------------------------| + | 10:26:12 | + +---------------------------+ + + os> SELECT ADDTIME(TIMESTAMP('2007-02-28 10:20:30'), DATETIME('2002-03-04 20:40:50')) AS `'2007-02-28 10:20:30' + '20:40:50'` + fetched rows / total rows = 1/1 + +--------------------------------------+ + | '2007-02-28 10:20:30' + '20:40:50' | + |--------------------------------------| + | 2007-03-01 07:01:20 | + +--------------------------------------+ + + CONVERT_TZ ---------- @@ -2019,6 +2080,67 @@ Example:: +------------------------------------------------+----------------------------------+------------------------------------------------+ +SUBTIME +------- + +Description +>>>>>>>>>>> + +Usage: subtime(expr1, expr2) subtracts expr2 from expr1 and returns the result. If argument is TIME, today's date is used; if argument is DATE, time at midnight is used. + +Argument type: DATE/DATETIME/TIMESTAMP/TIME, DATE/DATETIME/TIMESTAMP/TIME + +Return type map: + +(DATE/DATETIME/TIMESTAMP, DATE/DATETIME/TIMESTAMP/TIME) -> DATETIME + +(TIME, DATE/DATETIME/TIMESTAMP/TIME) -> TIME + +Antonyms: `ADDTIME`_ + +Example:: + + os> SELECT SUBTIME(DATE('2008-12-12'), DATE('2008-11-15')) AS `'2008-12-12' - 0` + fetched rows / total rows = 1/1 + +---------------------+ + | '2008-12-12' - 0 | + |---------------------| + | 2008-12-12 00:00:00 | + +---------------------+ + + os> SELECT SUBTIME(TIME('23:59:59'), DATE('2004-01-01')) AS `'23:59:59' - 0` + fetched rows / total rows = 1/1 + +------------------+ + | '23:59:59' - 0 | + |------------------| + | 23:59:59 | + +------------------+ + + os> SELECT SUBTIME(DATE('2004-01-01'), TIME('23:59:59')) AS `'2004-01-01' - '23:59:59'` + fetched rows / total rows = 1/1 + +-----------------------------+ + | '2004-01-01' - '23:59:59' | + |-----------------------------| + | 2003-12-31 00:00:01 | + +-----------------------------+ + + os> SELECT SUBTIME(TIME('10:20:30'), TIME('00:05:42')) AS `'10:20:30' - '00:05:42'` + fetched rows / total rows = 1/1 + +---------------------------+ + | '10:20:30' - '00:05:42' | + |---------------------------| + | 10:14:48 | + +---------------------------+ + + os> SELECT SUBTIME(TIMESTAMP('2007-03-01 10:20:30'), DATETIME('2002-03-04 20:40:50')) AS `'2007-03-01 10:20:30' - '20:40:50'` + fetched rows / total rows = 1/1 + +--------------------------------------+ + | '2007-03-01 10:20:30' - '20:40:50' | + |--------------------------------------| + | 2007-02-28 13:39:40 | + +--------------------------------------+ + + SYSDATE ------- diff --git a/docs/user/ppl/functions/datetime.rst b/docs/user/ppl/functions/datetime.rst index 60a8660c7a..5e54d8e80f 100644 --- a/docs/user/ppl/functions/datetime.rst +++ b/docs/user/ppl/functions/datetime.rst @@ -38,8 +38,70 @@ Example:: | 2020-08-26 01:00:00 | 2020-08-27 | 2020-08-27 01:01:01 | +------------------------------------------------+----------------------------------+------------------------------------------------+ + +ADDTIME +------- + +Description +>>>>>>>>>>> + +Usage: addtime(expr1, expr2) adds expr2 to expr1 and returns the result. If argument is TIME, today's date is used; if argument is DATE, time at midnight is used. + +Argument type: DATE/DATETIME/TIMESTAMP/TIME, DATE/DATETIME/TIMESTAMP/TIME + +Return type map: + +(DATE/DATETIME/TIMESTAMP, DATE/DATETIME/TIMESTAMP/TIME) -> DATETIME + +(TIME, DATE/DATETIME/TIMESTAMP/TIME) -> TIME + +Antonyms: `SUBTIME`_ + +Example:: + + os> source=people | eval `'2008-12-12' + 0` = ADDTIME(DATE('2008-12-12'), DATE('2008-11-15')) | fields `'2008-12-12' + 0` + fetched rows / total rows = 1/1 + +---------------------+ + | '2008-12-12' + 0 | + |---------------------| + | 2008-12-12 00:00:00 | + +---------------------+ + + os> source=people | eval `'23:59:59' + 0` = ADDTIME(TIME('23:59:59'), DATE('2004-01-01')) | fields `'23:59:59' + 0` + fetched rows / total rows = 1/1 + +------------------+ + | '23:59:59' + 0 | + |------------------| + | 23:59:59 | + +------------------+ + + os> source=people | eval `'2004-01-01' + '23:59:59'` = ADDTIME(DATE('2004-01-01'), TIME('23:59:59')) | fields `'2004-01-01' + '23:59:59'` + fetched rows / total rows = 1/1 + +-----------------------------+ + | '2004-01-01' + '23:59:59' | + |-----------------------------| + | 2004-01-01 23:59:59 | + +-----------------------------+ + + os> source=people | eval `'10:20:30' + '00:05:42'` = ADDTIME(TIME('10:20:30'), TIME('00:05:42')) | fields `'10:20:30' + '00:05:42'` + fetched rows / total rows = 1/1 + +---------------------------+ + | '10:20:30' + '00:05:42' | + |---------------------------| + | 10:26:12 | + +---------------------------+ + + os> source=people | eval `'2007-02-28 10:20:30' + '20:40:50'` = ADDTIME(TIMESTAMP('2007-02-28 10:20:30'), DATETIME('2002-03-04 20:40:50')) | fields `'2007-02-28 10:20:30' + '20:40:50'` + fetched rows / total rows = 1/1 + +--------------------------------------+ + | '2007-02-28 10:20:30' + '20:40:50' | + |--------------------------------------| + | 2007-03-01 07:01:20 | + +--------------------------------------+ + + CONVERT_TZ ----- +---------- Description >>>>>>>>>>> @@ -1102,6 +1164,67 @@ Example:: +------------------------------------------------+----------------------------------+------------------------------------------------+ +SUBTIME +------- + +Description +>>>>>>>>>>> + +Usage: subtime(expr1, expr2) subtracts expr2 from expr1 and returns the result. If argument is TIME, today's date is used; if argument is DATE, time at midnight is used. + +Argument type: DATE/DATETIME/TIMESTAMP/TIME, DATE/DATETIME/TIMESTAMP/TIME + +Return type map: + +(DATE/DATETIME/TIMESTAMP, DATE/DATETIME/TIMESTAMP/TIME) -> DATETIME + +(TIME, DATE/DATETIME/TIMESTAMP/TIME) -> TIME + +Antonyms: `ADDTIME`_ + +Example:: + + os> source=people | eval `'2008-12-12' - 0` = SUBTIME(DATE('2008-12-12'), DATE('2008-11-15')) | fields `'2008-12-12' - 0` + fetched rows / total rows = 1/1 + +---------------------+ + | '2008-12-12' - 0 | + |---------------------| + | 2008-12-12 00:00:00 | + +---------------------+ + + os> source=people | eval `'23:59:59' - 0` = SUBTIME(TIME('23:59:59'), DATE('2004-01-01')) | fields `'23:59:59' - 0` + fetched rows / total rows = 1/1 + +------------------+ + | '23:59:59' - 0 | + |------------------| + | 23:59:59 | + +------------------+ + + os> source=people | eval `'2004-01-01' - '23:59:59'` = SUBTIME(DATE('2004-01-01'), TIME('23:59:59')) | fields `'2004-01-01' - '23:59:59'` + fetched rows / total rows = 1/1 + +-----------------------------+ + | '2004-01-01' - '23:59:59' | + |-----------------------------| + | 2003-12-31 00:00:01 | + +-----------------------------+ + + os> source=people | eval `'10:20:30' - '00:05:42'` = SUBTIME(TIME('10:20:30'), TIME('00:05:42')) | fields `'10:20:30' - '00:05:42'` + fetched rows / total rows = 1/1 + +---------------------------+ + | '10:20:30' - '00:05:42' | + |---------------------------| + | 10:14:48 | + +---------------------------+ + + os> source=people | eval `'2007-03-01 10:20:30' - '20:40:50'` = SUBTIME(TIMESTAMP('2007-03-01 10:20:30'), DATETIME('2002-03-04 20:40:50')) | fields `'2007-03-01 10:20:30' - '20:40:50'` + fetched rows / total rows = 1/1 + +--------------------------------------+ + | '2007-03-01 10:20:30' - '20:40:50' | + |--------------------------------------| + | 2007-02-28 13:39:40 | + +--------------------------------------+ + + SYSDATE ------- diff --git a/integ-test/src/test/java/org/opensearch/sql/ppl/DateTimeFunctionIT.java b/integ-test/src/test/java/org/opensearch/sql/ppl/DateTimeFunctionIT.java index 9f59caefc6..23f2df69c8 100644 --- a/integ-test/src/test/java/org/opensearch/sql/ppl/DateTimeFunctionIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/ppl/DateTimeFunctionIT.java @@ -865,6 +865,42 @@ public void testNowLikeFunctions() throws IOException { TimeZone.setDefault(testTz); } + @Test + public void testAddTime() throws IOException { + var result = executeQuery(String.format("source=%s | eval" + + " `'2008-12-12' + 0` = ADDTIME(DATE('2008-12-12'), DATE('2008-11-15'))," + + " `'23:59:59' + 0` = ADDTIME(TIME('23:59:59'), DATE('2004-01-01'))," + + " `'2004-01-01' + '23:59:59'` = ADDTIME(DATE('2004-01-01'), TIME('23:59:59'))," + + " `'10:20:30' + '00:05:42'` = ADDTIME(TIME('10:20:30'), TIME('00:05:42'))," + + " `'15:42:13' + '09:07:00'` = ADDTIME(TIMESTAMP('1999-12-31 15:42:13'), DATETIME('1961-04-12 09:07:00'))" + + " | fields `'2008-12-12' + 0`, `'23:59:59' + 0`, `'2004-01-01' + '23:59:59'`, `'10:20:30' + '00:05:42'`, `'15:42:13' + '09:07:00'`", TEST_INDEX_DATE)); + verifySchema(result, + schema("'2008-12-12' + 0", null, "datetime"), + schema("'23:59:59' + 0", null, "time"), + schema("'2004-01-01' + '23:59:59'", null, "datetime"), + schema("'10:20:30' + '00:05:42'", null, "time"), + schema("'15:42:13' + '09:07:00'", null, "datetime")); + verifySome(result.getJSONArray("datarows"), rows("2008-12-12 00:00:00", "23:59:59", "2004-01-01 23:59:59", "10:26:12", "2000-01-01 00:49:13")); + } + + @Test + public void testSubTime() throws IOException { + var result = executeQuery(String.format("source=%s | eval" + + " `'2008-12-12' - 0` = SUBTIME(DATE('2008-12-12'), DATE('2008-11-15'))," + + " `'23:59:59' - 0` = SUBTIME(TIME('23:59:59'), DATE('2004-01-01'))," + + " `'2004-01-01' - '23:59:59'` = SUBTIME(DATE('2004-01-01'), TIME('23:59:59'))," + + " `'10:20:30' - '00:05:42'` = SUBTIME(TIME('10:20:30'), TIME('00:05:42'))," + + " `'15:42:13' - '09:07:00'` = SUBTIME(TIMESTAMP('1999-12-31 15:42:13'), DATETIME('1961-04-12 09:07:00'))" + + " | fields `'2008-12-12' - 0`, `'23:59:59' - 0`, `'2004-01-01' - '23:59:59'`, `'10:20:30' - '00:05:42'`, `'15:42:13' - '09:07:00'`", TEST_INDEX_DATE)); + verifySchema(result, + schema("'2008-12-12' - 0", null, "datetime"), + schema("'23:59:59' - 0", null, "time"), + schema("'2004-01-01' - '23:59:59'", null, "datetime"), + schema("'10:20:30' - '00:05:42'", null, "time"), + schema("'15:42:13' - '09:07:00'", null, "datetime")); + verifySome(result.getJSONArray("datarows"), rows("2008-12-12 00:00:00", "23:59:59", "2003-12-31 00:00:01", "10:14:48", "1999-12-31 06:35:13")); + } + @Test public void testFromUnixTime() throws IOException { var result = executeQuery(String.format( diff --git a/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java b/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java index 95e232ab21..85661bfa97 100644 --- a/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java @@ -1038,6 +1038,39 @@ public void testPeriodDiff() throws IOException { verifyDataRows(result, rows(11, -25)); } + public void testAddTime() throws IOException { + var result = executeQuery("SELECT" + + " ADDTIME(DATE('2008-12-12'), DATE('2008-11-15')) AS `'2008-12-12' + 0`," + + " ADDTIME(TIME('23:59:59'), DATE('2004-01-01')) AS `'23:59:59' + 0`," + + " ADDTIME(DATE('2004-01-01'), TIME('23:59:59')) AS `'2004-01-01' + '23:59:59'`," + + " ADDTIME(TIME('10:20:30'), TIME('00:05:42')) AS `'10:20:30' + '00:05:42'`," + + " ADDTIME(TIMESTAMP('1999-12-31 15:42:13'), DATETIME('1961-04-12 09:07:00')) AS `'15:42:13' + '09:07:00'`"); + verifySchema(result, + schema("ADDTIME(DATE('2008-12-12'), DATE('2008-11-15'))", "'2008-12-12' + 0", "datetime"), + schema("ADDTIME(TIME('23:59:59'), DATE('2004-01-01'))", "'23:59:59' + 0", "time"), + schema("ADDTIME(DATE('2004-01-01'), TIME('23:59:59'))", "'2004-01-01' + '23:59:59'", "datetime"), + schema("ADDTIME(TIME('10:20:30'), TIME('00:05:42'))", "'10:20:30' + '00:05:42'", "time"), + schema("ADDTIME(TIMESTAMP('1999-12-31 15:42:13'), DATETIME('1961-04-12 09:07:00'))", "'15:42:13' + '09:07:00'", "datetime")); + verifyDataRows(result, rows("2008-12-12 00:00:00", "23:59:59", "2004-01-01 23:59:59", "10:26:12", "2000-01-01 00:49:13")); + } + + @Test + public void testSubTime() throws IOException { + var result = executeQuery("SELECT" + + " SUBTIME(DATE('2008-12-12'), DATE('2008-11-15')) AS `'2008-12-12' - 0`," + + " SUBTIME(TIME('23:59:59'), DATE('2004-01-01')) AS `'23:59:59' - 0`," + + " SUBTIME(DATE('2004-01-01'), TIME('23:59:59')) AS `'2004-01-01' - '23:59:59'`," + + " SUBTIME(TIME('10:20:30'), TIME('00:05:42')) AS `'10:20:30' - '00:05:42'`," + + " SUBTIME(TIMESTAMP('1999-12-31 15:42:13'), DATETIME('1961-04-12 09:07:00')) AS `'15:42:13' - '09:07:00'`"); + verifySchema(result, + schema("SUBTIME(DATE('2008-12-12'), DATE('2008-11-15'))", "'2008-12-12' - 0", "datetime"), + schema("SUBTIME(TIME('23:59:59'), DATE('2004-01-01'))", "'23:59:59' - 0", "time"), + schema("SUBTIME(DATE('2004-01-01'), TIME('23:59:59'))", "'2004-01-01' - '23:59:59'", "datetime"), + schema("SUBTIME(TIME('10:20:30'), TIME('00:05:42'))", "'10:20:30' - '00:05:42'", "time"), + schema("SUBTIME(TIMESTAMP('1999-12-31 15:42:13'), DATETIME('1961-04-12 09:07:00'))", "'15:42:13' - '09:07:00'", "datetime")); + verifyDataRows(result, rows("2008-12-12 00:00:00", "23:59:59", "2003-12-31 00:00:01", "10:14:48", "1999-12-31 06:35:13")); + } + public void testDateDiff() throws IOException { var result = executeQuery("SELECT" + " DATEDIFF(TIMESTAMP('2000-01-02 00:00:00'), TIMESTAMP('2000-01-01 23:59:59')) AS `'2000-01-02' - '2000-01-01'`," diff --git a/ppl/src/main/antlr/OpenSearchPPLLexer.g4 b/ppl/src/main/antlr/OpenSearchPPLLexer.g4 index 778d9fb3f9..12c24bd531 100644 --- a/ppl/src/main/antlr/OpenSearchPPLLexer.g4 +++ b/ppl/src/main/antlr/OpenSearchPPLLexer.g4 @@ -243,6 +243,7 @@ CURRENT_DATE: 'CURRENT_DATE'; CURRENT_TIME: 'CURRENT_TIME'; CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'; CURTIME: 'CURTIME'; +ADDTIME: 'ADDTIME'; DATE: 'DATE'; DATE_ADD: 'DATE_ADD'; DATE_FORMAT: 'DATE_FORMAT'; @@ -263,6 +264,7 @@ NOW: 'NOW'; PERIOD_ADD: 'PERIOD_ADD'; PERIOD_DIFF: 'PERIOD_DIFF'; SUBDATE: 'SUBDATE'; +SUBTIME: 'SUBTIME'; SYSDATE: 'SYSDATE'; TIME: 'TIME'; TIME_TO_SEC: 'TIME_TO_SEC'; diff --git a/ppl/src/main/antlr/OpenSearchPPLParser.g4 b/ppl/src/main/antlr/OpenSearchPPLParser.g4 index cb9bfae32f..dbb63ef12a 100644 --- a/ppl/src/main/antlr/OpenSearchPPLParser.g4 +++ b/ppl/src/main/antlr/OpenSearchPPLParser.g4 @@ -433,6 +433,7 @@ trigonometricFunctionName dateAndTimeFunctionBase : ADDDATE + | ADDTIME | CONVERT_TZ | CURRENT_DATE | CURRENT_TIME @@ -467,6 +468,7 @@ dateAndTimeFunctionBase | QUARTER | SECOND | SUBDATE + | SUBTIME | SYSDATE | TIME | TIME_TO_SEC diff --git a/sql/src/main/antlr/OpenSearchSQLLexer.g4 b/sql/src/main/antlr/OpenSearchSQLLexer.g4 index 63fd51fc5d..941c1a4c4e 100644 --- a/sql/src/main/antlr/OpenSearchSQLLexer.g4 +++ b/sql/src/main/antlr/OpenSearchSQLLexer.g4 @@ -176,6 +176,7 @@ TABLES: 'TABLES'; ABS: 'ABS'; ACOS: 'ACOS'; ADD: 'ADD'; +ADDTIME: 'ADDTIME'; ASCII: 'ASCII'; ASIN: 'ASIN'; ATAN: 'ATAN'; @@ -251,6 +252,7 @@ SIN: 'SIN'; SINH: 'SINH'; SQRT: 'SQRT'; SUBDATE: 'SUBDATE'; +SUBTIME: 'SUBTIME'; SUBTRACT: 'SUBTRACT'; SYSDATE: 'SYSDATE'; TAN: 'TAN'; diff --git a/sql/src/main/antlr/OpenSearchSQLParser.g4 b/sql/src/main/antlr/OpenSearchSQLParser.g4 index e8db0de53b..26e7885288 100644 --- a/sql/src/main/antlr/OpenSearchSQLParser.g4 +++ b/sql/src/main/antlr/OpenSearchSQLParser.g4 @@ -421,6 +421,7 @@ trigonometricFunctionName dateTimeFunctionName : datetimeConstantLiteral | ADDDATE + | ADDTIME | CONVERT_TZ | CURDATE | CURTIME @@ -454,6 +455,7 @@ dateTimeFunctionName | SECOND | SECOND_OF_MINUTE | SUBDATE + | SUBTIME | SYSDATE | TIME | TIME_TO_SEC From dc5578aaaa1281e2f80b8599fee9e24c7a3d4b4a Mon Sep 17 00:00:00 2001 From: MitchellGale-BitQuill <104795536+MitchellGale-BitQuill@users.noreply.github.com> Date: Mon, 9 Jan 2023 12:25:35 -0800 Subject: [PATCH 42/55] Add support for long value return for CEIL, CEILING and FLOOR math functions (#1205) * Added long fix for CEIL, CEILING and FLOOR functions using LONG instead of INT for RETURN. Signed-off-by: MitchellGale-BitQuill * Revert changes to JDBCConnection.java. Signed-off-by: MitchellGale-BitQuill * Addressed PR comments. Signed-off-by: MitchellGale-BitQuill * Made fixes to rst files. Signed-off-by: MitchellGale-BitQuill * Simplify docs according to PR feedback. Signed-off-by: Yury-Fridlyand Signed-off-by: MitchellGale-BitQuill Signed-off-by: Yury-Fridlyand Co-authored-by: Yury-Fridlyand --- .../arthmetic/MathematicalFunction.java | 12 ++-- .../arthmetic/MathematicalFunctionTest.java | 69 ++++++++++++------- docs/user/dql/functions.rst | 67 ++++++++++++++++-- docs/user/ppl/functions/math.rst | 69 ++++++++++++++----- .../sql/legacy/TypeInformationIT.java | 2 +- .../sql/ppl/MathematicalFunctionIT.java | 6 +- .../sql/sql/MathematicalFunctionIT.java | 15 ++++ .../expressions/mathematical_functions.txt | 22 +++--- 8 files changed, 195 insertions(+), 67 deletions(-) diff --git a/core/src/main/java/org/opensearch/sql/expression/operator/arthmetic/MathematicalFunction.java b/core/src/main/java/org/opensearch/sql/expression/operator/arthmetic/MathematicalFunction.java index 4424243860..20b7928307 100644 --- a/core/src/main/java/org/opensearch/sql/expression/operator/arthmetic/MathematicalFunction.java +++ b/core/src/main/java/org/opensearch/sql/expression/operator/arthmetic/MathematicalFunction.java @@ -119,16 +119,16 @@ private static DefaultFunctionResolver abs() { private static DefaultFunctionResolver ceil() { return FunctionDSL.define(BuiltinFunctionName.CEIL.getName(), FunctionDSL.impl( - FunctionDSL.nullMissingHandling(v -> new ExprIntegerValue(Math.ceil(v.doubleValue()))), - INTEGER, DOUBLE) + FunctionDSL.nullMissingHandling(v -> new ExprLongValue(Math.ceil(v.doubleValue()))), + LONG, DOUBLE) ); } private static DefaultFunctionResolver ceiling() { return FunctionDSL.define(BuiltinFunctionName.CEILING.getName(), FunctionDSL.impl( - FunctionDSL.nullMissingHandling(v -> new ExprIntegerValue(Math.ceil(v.doubleValue()))), - INTEGER, DOUBLE) + FunctionDSL.nullMissingHandling(v -> new ExprLongValue(Math.ceil(v.doubleValue()))), + LONG, DOUBLE) ); } @@ -204,8 +204,8 @@ private static DefaultFunctionResolver exp() { private static DefaultFunctionResolver floor() { return FunctionDSL.define(BuiltinFunctionName.FLOOR.getName(), FunctionDSL.impl( - FunctionDSL.nullMissingHandling(v -> new ExprIntegerValue(Math.floor(v.doubleValue()))), - INTEGER, DOUBLE) + FunctionDSL.nullMissingHandling(v -> new ExprLongValue(Math.floor(v.doubleValue()))), + LONG, DOUBLE) ); } diff --git a/core/src/test/java/org/opensearch/sql/expression/operator/arthmetic/MathematicalFunctionTest.java b/core/src/test/java/org/opensearch/sql/expression/operator/arthmetic/MathematicalFunctionTest.java index d6d15e9315..3a03ba79ad 100644 --- a/core/src/test/java/org/opensearch/sql/expression/operator/arthmetic/MathematicalFunctionTest.java +++ b/core/src/test/java/org/opensearch/sql/expression/operator/arthmetic/MathematicalFunctionTest.java @@ -191,13 +191,13 @@ public void ceil_int_value(Integer value) { FunctionExpression ceil = DSL.ceil(DSL.literal(value)); assertThat( ceil.valueOf(valueEnv()), - allOf(hasType(INTEGER), hasValue((int) Math.ceil(value)))); - assertEquals(String.format("ceil(%s)", value), ceil.toString()); + allOf(hasType(LONG), hasValue((long) Math.ceil(value)))); + assertEquals(String.format("ceil(%s)", value.toString()), ceil.toString()); FunctionExpression ceiling = DSL.ceiling(DSL.literal(value)); assertThat( - ceiling.valueOf(valueEnv()), allOf(hasType(INTEGER), hasValue((int) Math.ceil(value)))); - assertEquals(String.format("ceiling(%s)", value), ceiling.toString()); + ceiling.valueOf(valueEnv()), allOf(hasType(LONG), hasValue((long) Math.ceil(value)))); + assertEquals(String.format("ceiling(%s)", value.toString()), ceiling.toString()); } /** @@ -208,13 +208,30 @@ public void ceil_int_value(Integer value) { public void ceil_long_value(Long value) { FunctionExpression ceil = DSL.ceil(DSL.literal(value)); assertThat( - ceil.valueOf(valueEnv()), allOf(hasType(INTEGER), hasValue((int) Math.ceil(value)))); - assertEquals(String.format("ceil(%s)", value), ceil.toString()); + ceil.valueOf(valueEnv()), allOf(hasType(LONG), hasValue((long) Math.ceil(value)))); + assertEquals(String.format("ceil(%s)", value.toString()), ceil.toString()); FunctionExpression ceiling = DSL.ceiling(DSL.literal(value)); assertThat( - ceiling.valueOf(valueEnv()), allOf(hasType(INTEGER), hasValue((int) Math.ceil(value)))); - assertEquals(String.format("ceiling(%s)", value), ceiling.toString()); + ceiling.valueOf(valueEnv()), allOf(hasType(LONG), hasValue((long) Math.ceil(value)))); + assertEquals(String.format("ceiling(%s)", value.toString()), ceiling.toString()); + } + + /** + * Test ceil/ceiling with long value. + */ + @ParameterizedTest(name = "ceil({0})") + @ValueSource(longs = {9223372036854775805L, -9223372036854775805L}) + public void ceil_long_value_long(Long value) { + FunctionExpression ceil = DSL.ceil(DSL.literal(value)); + assertThat( + ceil.valueOf(valueEnv()), allOf(hasType(LONG), hasValue((long) Math.ceil(value)))); + assertEquals(String.format("ceil(%s)", value.toString()), ceil.toString()); + + FunctionExpression ceiling = DSL.ceiling(DSL.literal(value)); + assertThat( + ceiling.valueOf(valueEnv()), allOf(hasType(LONG), hasValue((long) Math.ceil(value)))); + assertEquals(String.format("ceiling(%s)", value.toString()), ceiling.toString()); } /** @@ -225,13 +242,13 @@ public void ceil_long_value(Long value) { public void ceil_float_value(Float value) { FunctionExpression ceil = DSL.ceil(DSL.literal(value)); assertThat( - ceil.valueOf(valueEnv()), allOf(hasType(INTEGER), hasValue((int) Math.ceil(value)))); - assertEquals(String.format("ceil(%s)", value), ceil.toString()); + ceil.valueOf(valueEnv()), allOf(hasType(LONG), hasValue((long) Math.ceil(value)))); + assertEquals(String.format("ceil(%s)", value.toString()), ceil.toString()); FunctionExpression ceiling = DSL.ceiling(DSL.literal(value)); assertThat( - ceiling.valueOf(valueEnv()), allOf(hasType(INTEGER), hasValue((int) Math.ceil(value)))); - assertEquals(String.format("ceiling(%s)", value), ceiling.toString()); + ceiling.valueOf(valueEnv()), allOf(hasType(LONG), hasValue((long) Math.ceil(value)))); + assertEquals(String.format("ceiling(%s)", value.toString()), ceiling.toString()); } /** @@ -242,13 +259,13 @@ public void ceil_float_value(Float value) { public void ceil_double_value(Double value) { FunctionExpression ceil = DSL.ceil(DSL.literal(value)); assertThat( - ceil.valueOf(valueEnv()), allOf(hasType(INTEGER), hasValue((int) Math.ceil(value)))); - assertEquals(String.format("ceil(%s)", value), ceil.toString()); + ceil.valueOf(valueEnv()), allOf(hasType(LONG), hasValue((long) Math.ceil(value)))); + assertEquals(String.format("ceil(%s)", value.toString()), ceil.toString()); FunctionExpression ceiling = DSL.ceiling(DSL.literal(value)); assertThat( - ceiling.valueOf(valueEnv()), allOf(hasType(INTEGER), hasValue((int) Math.ceil(value)))); - assertEquals(String.format("ceiling(%s)", value), ceiling.toString()); + ceiling.valueOf(valueEnv()), allOf(hasType(LONG), hasValue((long) Math.ceil(value)))); + assertEquals(String.format("ceiling(%s)", value.toString()), ceiling.toString()); } /** @@ -257,11 +274,11 @@ public void ceil_double_value(Double value) { @Test public void ceil_null_value() { FunctionExpression ceil = DSL.ceil(DSL.ref(DOUBLE_TYPE_NULL_VALUE_FIELD, DOUBLE)); - assertEquals(INTEGER, ceil.type()); + assertEquals(LONG, ceil.type()); assertTrue(ceil.valueOf(valueEnv()).isNull()); FunctionExpression ceiling = DSL.ceiling(DSL.ref(DOUBLE_TYPE_NULL_VALUE_FIELD, DOUBLE)); - assertEquals(INTEGER, ceiling.type()); + assertEquals(LONG, ceiling.type()); assertTrue(ceiling.valueOf(valueEnv()).isNull()); } @@ -271,11 +288,11 @@ public void ceil_null_value() { @Test public void ceil_missing_value() { FunctionExpression ceil = DSL.ceil(DSL.ref(DOUBLE_TYPE_MISSING_VALUE_FIELD, DOUBLE)); - assertEquals(INTEGER, ceil.type()); + assertEquals(LONG, ceil.type()); assertTrue(ceil.valueOf(valueEnv()).isMissing()); FunctionExpression ceiling = DSL.ceiling(DSL.ref(DOUBLE_TYPE_MISSING_VALUE_FIELD, DOUBLE)); - assertEquals(INTEGER, ceiling.type()); + assertEquals(LONG, ceiling.type()); assertTrue(ceiling.valueOf(valueEnv()).isMissing()); } @@ -557,7 +574,7 @@ public void floor_int_value(Integer value) { FunctionExpression floor = DSL.floor(DSL.literal(value)); assertThat( floor.valueOf(valueEnv()), - allOf(hasType(INTEGER), hasValue((int) Math.floor(value)))); + allOf(hasType(LONG), hasValue((long) Math.floor(value)))); assertEquals(String.format("floor(%s)", value.toString()), floor.toString()); } @@ -570,7 +587,7 @@ public void floor_long_value(Long value) { FunctionExpression floor = DSL.floor(DSL.literal(value)); assertThat( floor.valueOf(valueEnv()), - allOf(hasType(INTEGER), hasValue((int) Math.floor(value)))); + allOf(hasType(LONG), hasValue((long) Math.floor(value)))); assertEquals(String.format("floor(%s)", value.toString()), floor.toString()); } @@ -583,7 +600,7 @@ public void floor_float_value(Float value) { FunctionExpression floor = DSL.floor(DSL.literal(value)); assertThat( floor.valueOf(valueEnv()), - allOf(hasType(INTEGER), hasValue((int) Math.floor(value)))); + allOf(hasType(LONG), hasValue((long) Math.floor(value)))); assertEquals(String.format("floor(%s)", value.toString()), floor.toString()); } @@ -596,7 +613,7 @@ public void floor_double_value(Double value) { FunctionExpression floor = DSL.floor(DSL.literal(value)); assertThat( floor.valueOf(valueEnv()), - allOf(hasType(INTEGER), hasValue((int) Math.floor(value)))); + allOf(hasType(LONG), hasValue((long) Math.floor(value)))); assertEquals(String.format("floor(%s)", value.toString()), floor.toString()); } @@ -606,7 +623,7 @@ public void floor_double_value(Double value) { @Test public void floor_null_value() { FunctionExpression floor = DSL.floor(DSL.ref(DOUBLE_TYPE_NULL_VALUE_FIELD, DOUBLE)); - assertEquals(INTEGER, floor.type()); + assertEquals(LONG, floor.type()); assertTrue(floor.valueOf(valueEnv()).isNull()); } @@ -616,7 +633,7 @@ public void floor_null_value() { @Test public void floor_missing_value() { FunctionExpression floor = DSL.floor(DSL.ref(DOUBLE_TYPE_MISSING_VALUE_FIELD, DOUBLE)); - assertEquals(INTEGER, floor.type()); + assertEquals(LONG, floor.type()); assertTrue(floor.valueOf(valueEnv()).isMissing()); } diff --git a/docs/user/dql/functions.rst b/docs/user/dql/functions.rst index 9a824fe449..3dbfedd143 100644 --- a/docs/user/dql/functions.rst +++ b/docs/user/dql/functions.rst @@ -231,12 +231,42 @@ Example:: CEIL ---- +An alias for `CEILING`_ function. + + +CEILING +------- + Description >>>>>>>>>>> -Specifications: +Usage: CEILING(T) takes the ceiling of value T. + +Note: `CEIL`_ and CEILING functions have the same implementation & functionality + +Limitation: CEILING only works as expected when IEEE 754 double type displays decimal when stored. + +Argument type: INTEGER/LONG/FLOAT/DOUBLE + +Return type: LONG + +Example:: + + os> SELECT CEILING(0), CEILING(50.00005), CEILING(-50.00005); + fetched rows / total rows = 1/1 + +--------------+---------------------+----------------------+ + | CEILING(0) | CEILING(50.00005) | CEILING(-50.00005) | + |--------------+---------------------+----------------------| + | 0 | 51 | -50 | + +--------------+---------------------+----------------------+ -1. CEIL(NUMBER T) -> T + os> SELECT CEILING(3147483647.12345), CEILING(113147483647.12345), CEILING(3147483647.00001); + fetched rows / total rows = 1/1 + +-----------------------------+-------------------------------+-----------------------------+ + | CEILING(3147483647.12345) | CEILING(113147483647.12345) | CEILING(3147483647.00001) | + |-----------------------------+-------------------------------+-----------------------------| + | 3147483648 | 113147483648 | 3147483648 | + +-----------------------------+-------------------------------+-----------------------------+ CONV @@ -424,10 +454,39 @@ FLOOR Description >>>>>>>>>>> -Specifications: +Usage: FLOOR(T) takes the floor of value T. + +Limitation: FLOOR only works as expected when IEEE 754 double type displays decimal when stored. + +Argument type: INTEGER/LONG/FLOAT/DOUBLE + +Return type: LONG + +Example:: -1. FLOOR(NUMBER T) -> T + os> SELECT FLOOR(0), FLOOR(50.00005), FLOOR(-50.00005); + fetched rows / total rows = 1/1 + +------------+-------------------+--------------------+ + | FLOOR(0) | FLOOR(50.00005) | FLOOR(-50.00005) | + |------------+-------------------+--------------------| + | 0 | 50 | -51 | + +------------+-------------------+--------------------+ + os> SELECT FLOOR(3147483647.12345), FLOOR(113147483647.12345), FLOOR(3147483647.00001); + fetched rows / total rows = 1/1 + +---------------------------+-----------------------------+---------------------------+ + | FLOOR(3147483647.12345) | FLOOR(113147483647.12345) | FLOOR(3147483647.00001) | + |---------------------------+-----------------------------+---------------------------| + | 3147483647 | 113147483647 | 3147483647 | + +---------------------------+-----------------------------+---------------------------+ + + os> SELECT FLOOR(282474973688888.022), FLOOR(9223372036854775807.022), FLOOR(9223372036854775807.0000001); + fetched rows / total rows = 1/1 + +------------------------------+----------------------------------+--------------------------------------+ + | FLOOR(282474973688888.022) | FLOOR(9223372036854775807.022) | FLOOR(9223372036854775807.0000001) | + |------------------------------+----------------------------------+--------------------------------------| + | 282474973688888 | 9223372036854775807 | 9223372036854775807 | + +------------------------------+----------------------------------+--------------------------------------+ LN -- diff --git a/docs/user/ppl/functions/math.rst b/docs/user/ppl/functions/math.rst index 69f94091e7..20bd1d6a70 100644 --- a/docs/user/ppl/functions/math.rst +++ b/docs/user/ppl/functions/math.rst @@ -127,24 +127,42 @@ Example:: CEIL ---- +An alias for `CEILING`_ function. + + +CEILING +------- + Description >>>>>>>>>>> -Usage: ceil(x) return the smallest integer value this is greater or equal to x. +Usage: CEILING(T) takes the ceiling of value T. + +Note: `CEIL`_ and CEILING functions have the same implementation & functionality + +Limitation: CEILING only works as expected when IEEE 754 double type displays decimal when stored. Argument type: INTEGER/LONG/FLOAT/DOUBLE -Return type: INTEGER +Return type: LONG Example:: - os> source=people | eval `CEIL(2.75)` = CEIL(2.75) | fields `CEIL(2.75)` + os> source=people | eval `CEILING(0)` = CEILING(0), `CEILING(50.00005)` = CEILING(50.00005), `CEILING(-50.00005)` = CEILING(-50.00005) | fields `CEILING(0)`, `CEILING(50.00005)`, `CEILING(-50.00005)` fetched rows / total rows = 1/1 - +--------------+ - | CEIL(2.75) | - |--------------| - | 3 | - +--------------+ + +--------------+---------------------+----------------------+ + | CEILING(0) | CEILING(50.00005) | CEILING(-50.00005) | + |--------------+---------------------+----------------------| + | 0 | 51 | -50 | + +--------------+---------------------+----------------------+ + + os> source=people | eval `CEILING(3147483647.12345)` = CEILING(3147483647.12345), `CEILING(113147483647.12345)` = CEILING(113147483647.12345), `CEILING(3147483647.00001)` = CEILING(3147483647.00001) | fields `CEILING(3147483647.12345)`, `CEILING(113147483647.12345)`, `CEILING(3147483647.00001)` + fetched rows / total rows = 1/1 + +-----------------------------+-------------------------------+-----------------------------+ + | CEILING(3147483647.12345) | CEILING(113147483647.12345) | CEILING(3147483647.00001) | + |-----------------------------+-------------------------------+-----------------------------| + | 3147483648 | 113147483648 | 3147483648 | + +-----------------------------+-------------------------------+-----------------------------+ CONV @@ -310,22 +328,39 @@ FLOOR Description >>>>>>>>>>> -Usage: floor(x) return the largest integer value this is smaller or equal to x. +Usage: FLOOR(T) takes the floor of value T. -Argument type: INTEGER/LONG/FLOAT/DOUBLE +Limitation: FLOOR only works as expected when IEEE 754 double type displays decimal when stored. -Return type: INTEGER +Argument type: a: INTEGER/LONG/FLOAT/DOUBLE + +Return type: LONG Example:: - os> source=people | eval `FLOOR(2.75)` = FLOOR(2.75) | fields `FLOOR(2.75)` + os> source=people | eval `FLOOR(0)` = FLOOR(0), `FLOOR(50.00005)` = FLOOR(50.00005), `FLOOR(-50.00005)` = FLOOR(-50.00005) | fields `FLOOR(0)`, `FLOOR(50.00005)`, `FLOOR(-50.00005)` fetched rows / total rows = 1/1 - +---------------+ - | FLOOR(2.75) | - |---------------| - | 2 | - +---------------+ + +------------+-------------------+--------------------+ + | FLOOR(0) | FLOOR(50.00005) | FLOOR(-50.00005) | + |------------+-------------------+--------------------| + | 0 | 50 | -51 | + +------------+-------------------+--------------------+ + os> source=people | eval `FLOOR(3147483647.12345)` = FLOOR(3147483647.12345), `FLOOR(113147483647.12345)` = FLOOR(113147483647.12345), `FLOOR(3147483647.00001)` = FLOOR(3147483647.00001) | fields `FLOOR(3147483647.12345)`, `FLOOR(113147483647.12345)`, `FLOOR(3147483647.00001)` + fetched rows / total rows = 1/1 + +---------------------------+-----------------------------+---------------------------+ + | FLOOR(3147483647.12345) | FLOOR(113147483647.12345) | FLOOR(3147483647.00001) | + |---------------------------+-----------------------------+---------------------------| + | 3147483647 | 113147483647 | 3147483647 | + +---------------------------+-----------------------------+---------------------------+ + + os> source=people | eval `FLOOR(282474973688888.022)` = FLOOR(282474973688888.022), `FLOOR(9223372036854775807.022)` = FLOOR(9223372036854775807.022), `FLOOR(9223372036854775807.0000001)` = FLOOR(9223372036854775807.0000001) | fields `FLOOR(282474973688888.022)`, `FLOOR(9223372036854775807.022)`, `FLOOR(9223372036854775807.0000001)` + fetched rows / total rows = 1/1 + +------------------------------+----------------------------------+--------------------------------------+ + | FLOOR(282474973688888.022) | FLOOR(9223372036854775807.022) | FLOOR(9223372036854775807.0000001) | + |------------------------------+----------------------------------+--------------------------------------| + | 282474973688888 | 9223372036854775807 | 9223372036854775807 | + +------------------------------+----------------------------------+--------------------------------------+ LN -- diff --git a/integ-test/src/test/java/org/opensearch/sql/legacy/TypeInformationIT.java b/integ-test/src/test/java/org/opensearch/sql/legacy/TypeInformationIT.java index 01c8d33467..2bd3835a3a 100644 --- a/integ-test/src/test/java/org/opensearch/sql/legacy/TypeInformationIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/legacy/TypeInformationIT.java @@ -40,7 +40,7 @@ public void testCeilWithLongFieldReturnsLong() { executeJdbcRequest("SELECT CEIL(balance) FROM " + TestsConstants.TEST_INDEX_ACCOUNT + " ORDER BY balance LIMIT 5"); - verifySchema(response, schema("CEIL(balance)", null, "integer")); + verifySchema(response, schema("CEIL(balance)", null, "long")); } /* diff --git a/integ-test/src/test/java/org/opensearch/sql/ppl/MathematicalFunctionIT.java b/integ-test/src/test/java/org/opensearch/sql/ppl/MathematicalFunctionIT.java index f6fe93dc5f..6dd2d3916f 100644 --- a/integ-test/src/test/java/org/opensearch/sql/ppl/MathematicalFunctionIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/ppl/MathematicalFunctionIT.java @@ -46,7 +46,7 @@ public void testCeil() throws IOException { executeQuery( String.format( "source=%s | eval f = ceil(age) | fields f", TEST_INDEX_BANK)); - verifySchema(result, schema("f", null, "integer")); + verifySchema(result, schema("f", null, "long")); verifyDataRows( result, rows(32), rows(36), rows(28), rows(33), rows(36), rows(39), rows(34)); @@ -58,7 +58,7 @@ public void testCeiling() throws IOException { executeQuery( String.format( "source=%s | eval f = ceiling(age) | fields f", TEST_INDEX_BANK)); - verifySchema(result, schema("f", null, "integer")); + verifySchema(result, schema("f", null, "long")); verifyDataRows( result, rows(32), rows(36), rows(28), rows(33), rows(36), rows(39), rows(34)); @@ -94,7 +94,7 @@ public void testFloor() throws IOException { executeQuery( String.format( "source=%s | eval f = floor(age) | fields f", TEST_INDEX_BANK)); - verifySchema(result, schema("f", null, "integer")); + verifySchema(result, schema("f", null, "long")); verifyDataRows( result, rows(32), rows(36), rows(28), rows(33), rows(36), rows(39), rows(34)); diff --git a/integ-test/src/test/java/org/opensearch/sql/sql/MathematicalFunctionIT.java b/integ-test/src/test/java/org/opensearch/sql/sql/MathematicalFunctionIT.java index f2d1bb7d28..b8767eb2f1 100644 --- a/integ-test/src/test/java/org/opensearch/sql/sql/MathematicalFunctionIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/sql/MathematicalFunctionIT.java @@ -40,6 +40,21 @@ public void testPI() throws IOException { verifyDataRows(result, rows(3.141592653589793)); } + @Test + public void testCeil() throws IOException { + JSONObject result = executeQuery("select ceil(0)"); + verifySchema(result, schema("ceil(0)", null, "long")); + verifyDataRows(result, rows(0)); + + result = executeQuery("select ceil(2147483646.9)"); + verifySchema(result, schema("ceil(2147483646.9)", null, "long")); + verifyDataRows(result, rows(2147483647)); + + result = executeQuery("select ceil(92233720368547807.9)"); + verifySchema(result, schema("ceil(92233720368547807.9)", null, "long")); + verifyDataRows(result, rows(92233720368547808L)); + } + @Test public void testConv() throws IOException { JSONObject result = executeQuery("select conv(11, 10, 16)"); diff --git a/integ-test/src/test/resources/correctness/expressions/mathematical_functions.txt b/integ-test/src/test/resources/correctness/expressions/mathematical_functions.txt index c99ca6c7a9..cb479e2eba 100644 --- a/integ-test/src/test/resources/correctness/expressions/mathematical_functions.txt +++ b/integ-test/src/test/resources/correctness/expressions/mathematical_functions.txt @@ -5,20 +5,22 @@ abs(-1.234) abs(0.0) abs(4.321) abs(abs(-1.2) * -1) -ceil(1) -ceil(-1) -ceil(0.0) -ceil(0.4999) -ceil(abs(1)) +# During comparison with H2 and SQLite it expects ceil and floor to be stored as INT values. This casts to resolve. +CAST(ceil(1) AS INT) +CAST(ceil(-1) AS INT) +CAST(ceil(0.0) AS INT) +CAST(ceil(0.4999) AS INT) +CAST(ceil(abs(1)) AS INT) +# CAST(CEIL(2147483647 + 0.6) AS INT) will fail because the cast limits the return to be INT_MAX (21474883647) which is not an H2 or SQLite limitation exp(0) exp(1) exp(-1) exp(exp(1) + ceil(-1)) -floor(1) -floor(-1) -floor(0.0) -floor(0.4999) -floor(abs(-1)) +CAST(floor(1) AS INT) +CAST(floor(-1) AS INT) +CAST(floor(0.0) AS INT) +CAST(floor(0.4999) AS INT) +CAST(floor(abs(-1)) AS INT) log(2) log(2.1) log(log(2)) From 6e72f1816efccb3a62f74ed49576d7c4920fcd0e Mon Sep 17 00:00:00 2001 From: GabeFernandez310 Date: Mon, 9 Jan 2023 15:36:29 -0800 Subject: [PATCH 43/55] Add Support For `TIME` Type in "*_OF_YEAR" Functions (#199) (#1223) Added Support And Tests For Time Type in day_of_year, week_of_year, month_of_year Functions Signed-off-by: GabeFernandez310 --- .../org/opensearch/sql/expression/DSL.java | 20 +- .../expression/datetime/DateTimeFunction.java | 30 + .../sql/expression/function/FunctionDSL.java | 4 +- .../datetime/DateTimeFunctionTest.java | 558 ++++++++++++------ ...ctionDSLimplWithPropertiesTwoArgsTest.java | 34 ++ docs/user/dql/functions.rst | 17 +- sql/src/main/antlr/OpenSearchSQLParser.g4 | 6 +- 7 files changed, 461 insertions(+), 208 deletions(-) create mode 100644 core/src/test/java/org/opensearch/sql/expression/function/FunctionDSLimplWithPropertiesTwoArgsTest.java diff --git a/core/src/main/java/org/opensearch/sql/expression/DSL.java b/core/src/main/java/org/opensearch/sql/expression/DSL.java index bb343cd5f9..611053f0bf 100644 --- a/core/src/main/java/org/opensearch/sql/expression/DSL.java +++ b/core/src/main/java/org/opensearch/sql/expression/DSL.java @@ -335,8 +335,9 @@ public static FunctionExpression dayofyear(Expression... expressions) { return compile(FunctionProperties.None, BuiltinFunctionName.DAYOFYEAR, expressions); } - public static FunctionExpression day_of_year(Expression... expressions) { - return compile(FunctionProperties.None, BuiltinFunctionName.DAY_OF_YEAR, expressions); + public static FunctionExpression day_of_year( + FunctionProperties functionProperties, Expression... expressions) { + return compile(functionProperties, BuiltinFunctionName.DAY_OF_YEAR, expressions); } public static FunctionExpression day_of_week( @@ -372,8 +373,9 @@ public static FunctionExpression month(Expression... expressions) { return compile(FunctionProperties.None, BuiltinFunctionName.MONTH, expressions); } - public static FunctionExpression month_of_year(Expression... expressions) { - return compile(FunctionProperties.None, BuiltinFunctionName.MONTH_OF_YEAR, expressions); + public static FunctionExpression month_of_year( + FunctionProperties functionProperties, Expression... expressions) { + return compile(functionProperties, BuiltinFunctionName.MONTH_OF_YEAR, expressions); } public static FunctionExpression monthname(Expression... expressions) { @@ -416,12 +418,14 @@ public static FunctionExpression to_days(Expression... expressions) { return compile(FunctionProperties.None, BuiltinFunctionName.TO_DAYS, expressions); } - public static FunctionExpression week(Expression... expressions) { - return compile(FunctionProperties.None, BuiltinFunctionName.WEEK, expressions); + public static FunctionExpression week( + FunctionProperties functionProperties, Expression... expressions) { + return compile(functionProperties, BuiltinFunctionName.WEEK, expressions); } - public static FunctionExpression week_of_year(Expression... expressions) { - return compile(FunctionProperties.None, BuiltinFunctionName.WEEK_OF_YEAR, expressions); + public static FunctionExpression week_of_year( + FunctionProperties functionProperties, Expression... expressions) { + return compile(functionProperties, BuiltinFunctionName.WEEK_OF_YEAR, expressions); } public static FunctionExpression year(Expression... expressions) { diff --git a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java index 064d6ea857..68227d1ba4 100644 --- a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java +++ b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java @@ -89,6 +89,9 @@ public class DateTimeFunction { // 32536771199.999999, or equivalent '3001-01-18 23:59:59.999999' UTC private static final Double MYSQL_MAX_TIMESTAMP = 32536771200d; + // Mode used for week/week_of_year function by default when no argument is provided + private static final ExprIntegerValue DEFAULT_WEEK_OF_YEAR_MODE = new ExprIntegerValue(0); + /** * Register Date and Time Functions. * @@ -472,6 +475,9 @@ private DefaultFunctionResolver dayOfWeek(FunctionName name) { */ private DefaultFunctionResolver dayOfYear(BuiltinFunctionName dayOfYear) { return define(dayOfYear.getName(), + implWithProperties(nullMissingHandlingWithProperties((functionProperties, arg) + -> DateTimeFunction.dayOfYearToday( + functionProperties.getQueryStartClock())), INTEGER, TIME), impl(nullMissingHandling(DateTimeFunction::exprDayOfYear), INTEGER, DATE), impl(nullMissingHandling(DateTimeFunction::exprDayOfYear), INTEGER, DATETIME), impl(nullMissingHandling(DateTimeFunction::exprDayOfYear), INTEGER, TIMESTAMP), @@ -559,6 +565,9 @@ private DefaultFunctionResolver minute_of_day() { */ private DefaultFunctionResolver month(BuiltinFunctionName month) { return define(month.getName(), + implWithProperties(nullMissingHandlingWithProperties((functionProperties, arg) + -> DateTimeFunction.monthOfYearToday( + functionProperties.getQueryStartClock())), INTEGER, TIME), impl(nullMissingHandling(DateTimeFunction::exprMonth), INTEGER, DATE), impl(nullMissingHandling(DateTimeFunction::exprMonth), INTEGER, DATETIME), impl(nullMissingHandling(DateTimeFunction::exprMonth), INTEGER, TIMESTAMP), @@ -783,10 +792,18 @@ private DefaultFunctionResolver utc_timestamp() { */ private DefaultFunctionResolver week(BuiltinFunctionName week) { return define(week.getName(), + implWithProperties(nullMissingHandlingWithProperties((functionProperties, arg) + -> DateTimeFunction.weekOfYearToday( + DEFAULT_WEEK_OF_YEAR_MODE, + functionProperties.getQueryStartClock())), INTEGER, TIME), impl(nullMissingHandling(DateTimeFunction::exprWeekWithoutMode), INTEGER, DATE), impl(nullMissingHandling(DateTimeFunction::exprWeekWithoutMode), INTEGER, DATETIME), impl(nullMissingHandling(DateTimeFunction::exprWeekWithoutMode), INTEGER, TIMESTAMP), impl(nullMissingHandling(DateTimeFunction::exprWeekWithoutMode), INTEGER, STRING), + implWithProperties(nullMissingHandlingWithProperties((functionProperties, time, modeArg) + -> DateTimeFunction.weekOfYearToday( + modeArg, + functionProperties.getQueryStartClock())), INTEGER, TIME, INTEGER), impl(nullMissingHandling(DateTimeFunction::exprWeek), INTEGER, DATE, INTEGER), impl(nullMissingHandling(DateTimeFunction::exprWeek), INTEGER, DATETIME, INTEGER), impl(nullMissingHandling(DateTimeFunction::exprWeek), INTEGER, TIMESTAMP, INTEGER), @@ -827,6 +844,15 @@ private DefaultFunctionResolver date_format() { ); } + private ExprValue dayOfYearToday(Clock clock) { + return new ExprIntegerValue(LocalDateTime.now(clock).getDayOfYear()); + } + + private ExprValue weekOfYearToday(ExprValue mode, Clock clock) { + return new ExprIntegerValue( + CalendarLookup.getWeekNumber(mode.integerValue(), LocalDateTime.now(clock).toLocalDate())); + } + /** * Day of Week implementation for ExprValue when passing in an arguemt of type TIME. * @@ -1519,6 +1545,10 @@ private ExprValue exprYear(ExprValue date) { return new ExprIntegerValue(date.dateValue().getYear()); } + private ExprValue monthOfYearToday(Clock clock) { + return new ExprIntegerValue(LocalDateTime.now(clock).getMonthValue()); + } + private LocalDateTime formatNow(Clock clock) { return formatNow(clock, 0); } diff --git a/core/src/main/java/org/opensearch/sql/expression/function/FunctionDSL.java b/core/src/main/java/org/opensearch/sql/expression/function/FunctionDSL.java index 1bf38f7722..d94d7cdf60 100644 --- a/core/src/main/java/org/opensearch/sql/expression/function/FunctionDSL.java +++ b/core/src/main/java/org/opensearch/sql/expression/function/FunctionDSL.java @@ -141,11 +141,11 @@ public String toString() { * Implementation of a function that takes two arguments, returns a value, and * requires FunctionProperties to complete. * - * @param function {@link ExprValue} based unary function. + * @param function {@link ExprValue} based Binary function. * @param returnType return type. * @param args1Type first argument type. * @param args2Type second argument type. - * @return Unary Function Implementation. + * @return Binary Function Implementation. */ public static SerializableFunction> implWithProperties( diff --git a/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java b/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java index 7761c1e94c..76f35dc68c 100644 --- a/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java +++ b/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java @@ -6,6 +6,7 @@ package org.opensearch.sql.expression.datetime; +import static java.time.temporal.ChronoField.ALIGNED_WEEK_OF_YEAR; import static org.junit.jupiter.api.Assertions.assertAll; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -604,10 +605,66 @@ public void dayOfYear() { assertEquals(integerValue(220), eval(expression)); } - private void testDayOfYearWithUnderscores(String date, int dayOfYear) { - FunctionExpression expression = DSL.day_of_year(DSL.literal(new ExprDateValue(date))); - assertEquals(INTEGER, expression.type()); - assertEquals(integerValue(dayOfYear), eval(expression)); + private static Stream getTestDataForDayOfYear() { + return Stream.of( + Arguments.of(DSL.literal( + new ExprDateValue("2020-08-07")), + "day_of_year(DATE '2020-08-07')", + 220), + Arguments.of(DSL.literal( + new ExprDatetimeValue("2020-08-07 12:23:34")), + "day_of_year(DATETIME '2020-08-07 12:23:34')", + 220), + Arguments.of(DSL.literal( + new ExprTimestampValue("2020-08-07 12:23:34")), + "day_of_year(TIMESTAMP '2020-08-07 12:23:34')", + 220), + Arguments.of(DSL.literal( + "2020-08-07"), + "day_of_year(\"2020-08-07\")", + 220), + Arguments.of(DSL.literal( + "2020-08-07 01:02:03"), + "day_of_year(\"2020-08-07 01:02:03\")", + 220) + ); + } + + @ParameterizedTest(name = "{0}") + @MethodSource("getTestDataForDayOfYear") + public void dayOfYearWithUnderscores( + LiteralExpression arg, + String expectedString, + int expectedResult) { + lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); + lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); + + validateStringFormat( + DSL.day_of_year(functionProperties, arg), + expectedString, + expectedResult + ); + } + + @Test + public void testDayOfYearWithTimeType() { + lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); + lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); + + validateStringFormat( + DSL.day_of_year(functionProperties, DSL.literal(new ExprTimeValue("12:23:34"))), + "day_of_year(TIME '12:23:34')", + LocalDate.now(functionProperties.getQueryStartClock()).getDayOfYear()); + } + + public void dayOfYearWithUnderscoresQuery(String date, int dayOfYear) { + FunctionExpression expression = DSL.day_of_year( + functionProperties, + DSL.literal(new ExprDateValue(date))); + assertAll( + () -> assertEquals(INTEGER, expression.type()), + () -> assertEquals(integerValue(dayOfYear), eval(expression)) + ); } @Test @@ -615,18 +672,24 @@ public void dayOfYearWithUnderscoresDifferentArgumentFormats() { lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); - FunctionExpression expression1 = DSL.day_of_year(DSL.literal(new ExprDateValue("2020-08-07"))); - FunctionExpression expression2 = DSL.day_of_year(DSL.literal("2020-08-07")); - FunctionExpression expression3 = DSL.day_of_year(DSL.literal("2020-08-07 01:02:03")); + FunctionExpression expression1 = DSL.day_of_year( + functionProperties, + DSL.literal(new ExprDateValue("2020-08-07"))); + FunctionExpression expression2 = DSL.day_of_year( + functionProperties, + DSL.literal("2020-08-07")); + FunctionExpression expression3 = DSL.day_of_year( + functionProperties, + DSL.literal("2020-08-07 01:02:03")); assertAll( - () -> testDayOfYearWithUnderscores("2020-08-07", 220), + () -> dayOfYearWithUnderscoresQuery("2020-08-07", 220), () -> assertEquals("day_of_year(DATE '2020-08-07')", expression1.toString()), - () -> testDayOfYearWithUnderscores("2020-08-07", 220), + () -> dayOfYearWithUnderscoresQuery("2020-08-07", 220), () -> assertEquals("day_of_year(\"2020-08-07\")", expression2.toString()), - () -> testDayOfYearWithUnderscores("2020-08-07 01:02:03", 220), + () -> dayOfYearWithUnderscoresQuery("2020-08-07 01:02:03", 220), () -> assertEquals("day_of_year(\"2020-08-07 01:02:03\")", expression3.toString()) ); } @@ -638,11 +701,11 @@ public void dayOfYearWithUnderscoresCornerCaseDates() { assertAll( //31st of December during non leap year (should be 365) - () -> testDayOfYearWithUnderscores("2019-12-31", 365), + () -> dayOfYearWithUnderscoresQuery("2019-12-31", 365), //Year 1200 - () -> testDayOfYearWithUnderscores("1200-02-28", 59), + () -> dayOfYearWithUnderscoresQuery("1200-02-28", 59), //Year 4000 - () -> testDayOfYearWithUnderscores("4000-02-28", 59) + () -> dayOfYearWithUnderscoresQuery("4000-02-28", 59) ); } @@ -653,26 +716,28 @@ public void dayOfYearWithUnderscoresLeapYear() { assertAll( //28th of Feb - () -> testDayOfYearWithUnderscores("2020-02-28", 59), + () -> dayOfYearWithUnderscoresQuery("2020-02-28", 59), //29th of Feb during leap year - () -> testDayOfYearWithUnderscores("2020-02-29 23:59:59", 60), - () -> testDayOfYearWithUnderscores("2020-02-29", 60), + () -> dayOfYearWithUnderscoresQuery("2020-02-29 23:59:59", 60), + () -> dayOfYearWithUnderscoresQuery("2020-02-29", 60), //1st of March during leap year - () -> testDayOfYearWithUnderscores("2020-03-01 00:00:00", 61), - () -> testDayOfYearWithUnderscores("2020-03-01", 61), + () -> dayOfYearWithUnderscoresQuery("2020-03-01 00:00:00", 61), + () -> dayOfYearWithUnderscoresQuery("2020-03-01", 61), //1st of March during non leap year - () -> testDayOfYearWithUnderscores("2019-03-01", 60), + () -> dayOfYearWithUnderscoresQuery("2019-03-01", 60), //31st of December during leap year (should be 366) - () -> testDayOfYearWithUnderscores("2020-12-31", 366) + () -> dayOfYearWithUnderscoresQuery("2020-12-31", 366) ); } - private void testInvalidDayOfYear(String date) { - FunctionExpression expression = DSL.day_of_year(DSL.literal(new ExprDateValue(date))); + private void invalidDayOfYearQuery(String date) { + FunctionExpression expression = DSL.day_of_year( + functionProperties, + DSL.literal(new ExprDateValue(date))); eval(expression); } @@ -680,15 +745,26 @@ private void testInvalidDayOfYear(String date) { public void invalidDayOfYearArgument() { when(nullRef.type()).thenReturn(DATE); when(missingRef.type()).thenReturn(DATE); - assertEquals(nullValue(), eval(DSL.day_of_year(nullRef))); - assertEquals(missingValue(), eval(DSL.day_of_year(missingRef))); - //29th of Feb non-leapyear - assertThrows(SemanticCheckException.class, () -> testInvalidDayOfYear("2019-02-29")); - //13th month - assertThrows(SemanticCheckException.class, () -> testInvalidDayOfYear("2019-13-15")); - //incorrect format for type - assertThrows(SemanticCheckException.class, () -> testInvalidDayOfYear("asdfasdfasdf")); + assertAll( + () -> assertEquals(nullValue(), eval(DSL.day_of_year(functionProperties, nullRef))), + () -> assertEquals(missingValue(), eval(DSL.day_of_year(functionProperties, missingRef))), + + //29th of Feb non-leapyear + () -> assertThrows( + SemanticCheckException.class, + () -> invalidDayOfYearQuery("2019-02-29")), + + //13th month + () -> assertThrows( + SemanticCheckException.class, + () -> invalidDayOfYearQuery("2019-13-15")), + + //incorrect format for type + () -> assertThrows( + SemanticCheckException.class, + () -> invalidDayOfYearQuery("asdfasdfasdf")) + ); } @Test @@ -989,21 +1065,82 @@ public void month() { assertEquals(integerValue(8), eval(expression)); } - private void testInvalidDates(String date) throws SemanticCheckException { - FunctionExpression expression = DSL.month_of_year(DSL.literal(new ExprDateValue(date))); + private static Stream getTestDataForMonthOfYear() { + return Stream.of( + Arguments.of( + DSL.literal(new ExprDateValue("2020-08-07")), + "month_of_year(DATE '2020-08-07')", + 8), + Arguments.of( + DSL.literal(new ExprDatetimeValue("2020-08-07 12:23:34")), + "month_of_year(DATETIME '2020-08-07 12:23:34')", + 8), + Arguments.of( + DSL.literal(new ExprTimestampValue("2020-08-07 12:23:34")), + "month_of_year(TIMESTAMP '2020-08-07 12:23:34')", + 8), + Arguments.of( + DSL.literal("2020-08-07"), + "month_of_year(\"2020-08-07\")", + 8), + Arguments.of( + DSL.literal("2020-08-07 01:02:03"), + "month_of_year(\"2020-08-07 01:02:03\")", + 8) + ); + } + + @ParameterizedTest(name = "{0}") + @MethodSource("getTestDataForMonthOfYear") + public void monthOfYear(LiteralExpression arg, String expectedString, int expectedResult) { + lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); + lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); + + validateStringFormat( + DSL.month_of_year(functionProperties, arg), + expectedString, + expectedResult + ); + } + + @Test + public void testMonthOfYearWithTimeType() { + lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); + lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); + + validateStringFormat( + DSL.month_of_year(functionProperties, DSL.literal(new ExprTimeValue("12:23:34"))), + "month_of_year(TIME '12:23:34')", + LocalDate.now(functionProperties.getQueryStartClock()).getMonthValue()); + } + + private void invalidDatesQuery(String date) throws SemanticCheckException { + FunctionExpression expression = DSL.month_of_year( + functionProperties, + DSL.literal(new ExprDateValue(date))); eval(expression); } - @Test void monthOfYearInvalidDates() { + @Test + public void monthOfYearInvalidDates() { when(nullRef.type()).thenReturn(DATE); when(missingRef.type()).thenReturn(DATE); - assertEquals(nullValue(), eval(DSL.month_of_year(nullRef))); - assertEquals(missingValue(), eval(DSL.month_of_year(missingRef))); - assertThrows(SemanticCheckException.class, () -> testInvalidDates("2019-01-50")); - assertThrows(SemanticCheckException.class, () -> testInvalidDates("2019-02-29")); - assertThrows(SemanticCheckException.class, () -> testInvalidDates("2019-02-31")); - assertThrows(SemanticCheckException.class, () -> testInvalidDates("2019-13-05")); + assertAll( + () -> assertEquals(nullValue(), eval(DSL.month_of_year( + functionProperties, + nullRef))), + () -> assertEquals(missingValue(), eval(DSL.month_of_year( + functionProperties, + missingRef))), + () -> assertThrows(SemanticCheckException.class, () -> invalidDatesQuery("2019-01-50")), + () -> assertThrows(SemanticCheckException.class, () -> invalidDatesQuery("2019-02-29")), + () -> assertThrows(SemanticCheckException.class, () -> invalidDatesQuery("2019-02-31")), + () -> assertThrows(SemanticCheckException.class, () -> invalidDatesQuery("2019-13-05")) + ); + + + } @Test @@ -1011,17 +1148,23 @@ public void monthOfYearAlternateArgumentSyntaxes() { lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); - FunctionExpression expression = DSL.month_of_year(DSL.literal(new ExprDateValue("2020-08-07"))); + FunctionExpression expression = DSL.month_of_year( + functionProperties, + DSL.literal(new ExprDateValue("2020-08-07"))); assertEquals(INTEGER, expression.type()); assertEquals("month_of_year(DATE '2020-08-07')", expression.toString()); assertEquals(integerValue(8), eval(expression)); - expression = DSL.month_of_year(DSL.literal("2020-08-07")); + expression = DSL.month_of_year( + functionProperties, + DSL.literal("2020-08-07")); assertEquals(INTEGER, expression.type()); assertEquals("month_of_year(\"2020-08-07\")", expression.toString()); assertEquals(integerValue(8), eval(expression)); - expression = DSL.month_of_year(DSL.literal("2020-08-07 01:02:03")); + expression = DSL.month_of_year( + functionProperties, + DSL.literal("2020-08-07 01:02:03")); assertEquals(INTEGER, expression.type()); assertEquals("month_of_year(\"2020-08-07 01:02:03\")", expression.toString()); assertEquals(integerValue(8), eval(expression)); @@ -1325,216 +1468,253 @@ public void timestamp() { assertEquals("timestamp(TIMESTAMP '2020-08-17 01:01:01')", expr.toString()); } - private void testWeek(String date, int mode, int expectedResult) { + private void weekQuery(String date, int mode, int expectedResult) { FunctionExpression expression = DSL - .week(DSL.literal(new ExprDateValue(date)), DSL.literal(mode)); + .week(functionProperties, DSL.literal(new ExprDateValue(date)), DSL.literal(mode)); assertEquals(INTEGER, expression.type()); assertEquals(String.format("week(DATE '%s', %d)", date, mode), expression.toString()); assertEquals(integerValue(expectedResult), eval(expression)); } - private void testNullMissingWeek(ExprCoreType date) { + private void weekOfYearQuery(String date, int mode, int expectedResult) { + FunctionExpression expression = DSL + .week_of_year( + functionProperties, + DSL.literal(new ExprDateValue(date)), DSL.literal(mode)); + assertEquals(INTEGER, expression.type()); + assertEquals(String.format("week_of_year(DATE '%s', %d)", date, mode), expression.toString()); + assertEquals(integerValue(expectedResult), eval(expression)); + } + + private void nullMissingWeekQuery(ExprCoreType date) { when(nullRef.type()).thenReturn(date); when(missingRef.type()).thenReturn(date); - assertEquals(nullValue(), eval(DSL.week(nullRef))); - assertEquals(missingValue(), eval(DSL.week(missingRef))); + assertEquals(nullValue(), eval(DSL.week(functionProperties, nullRef))); + assertEquals(missingValue(), eval(DSL.week(functionProperties, missingRef))); } @Test - public void week() { - testNullMissingWeek(DATE); - testNullMissingWeek(DATETIME); - testNullMissingWeek(TIMESTAMP); - testNullMissingWeek(STRING); + public void testNullMissingWeek() { + nullMissingWeekQuery(DATE); + nullMissingWeekQuery(DATETIME); + nullMissingWeekQuery(TIMESTAMP); + nullMissingWeekQuery(STRING); when(nullRef.type()).thenReturn(INTEGER); when(missingRef.type()).thenReturn(INTEGER); - assertEquals(nullValue(), eval(DSL.week(DSL.literal("2019-01-05"), nullRef))); - assertEquals(missingValue(), eval(DSL.week(DSL.literal("2019-01-05"), missingRef))); + assertEquals(nullValue(), eval(DSL.week( + functionProperties, + DSL.literal("2019-01-05"), nullRef))); + assertEquals(missingValue(), eval(DSL.week( + functionProperties, + DSL.literal("2019-01-05"), missingRef))); when(nullRef.type()).thenReturn(DATE); when(missingRef.type()).thenReturn(INTEGER); - assertEquals(missingValue(), eval(DSL.week(nullRef, missingRef))); + assertEquals(missingValue(), eval(DSL.week( + functionProperties, + nullRef, missingRef))); + } - FunctionExpression expression = DSL - .week(DSL.literal(new ExprTimestampValue("2019-01-05 01:02:03"))); - assertEquals(INTEGER, expression.type()); - assertEquals("week(TIMESTAMP '2019-01-05 01:02:03')", expression.toString()); - assertEquals(integerValue(0), eval(expression)); + private static Stream getTestDataForWeek() { + //Test the behavior of different modes passed into the 'week_of_year' function + return Stream.of( + Arguments.of("2019-01-05", 0, 0), + Arguments.of("2019-01-05", 1, 1), + Arguments.of("2019-01-05", 2, 52), + Arguments.of("2019-01-05", 3, 1), + Arguments.of("2019-01-05", 4, 1), + Arguments.of("2019-01-05", 5, 0), + Arguments.of("2019-01-05", 6, 1), + Arguments.of("2019-01-05", 7, 53), + + Arguments.of("2019-01-06", 0, 1), + Arguments.of("2019-01-06", 1, 1), + Arguments.of("2019-01-06", 2, 1), + Arguments.of("2019-01-06", 3, 1), + Arguments.of("2019-01-06", 4, 2), + Arguments.of("2019-01-06", 5, 0), + Arguments.of("2019-01-06", 6, 2), + Arguments.of("2019-01-06", 7, 53), + + Arguments.of("2019-01-07", 0, 1), + Arguments.of("2019-01-07", 1, 2), + Arguments.of("2019-01-07", 2, 1), + Arguments.of("2019-01-07", 3, 2), + Arguments.of("2019-01-07", 4, 2), + Arguments.of("2019-01-07", 5, 1), + Arguments.of("2019-01-07", 6, 2), + Arguments.of("2019-01-07", 7, 1), + + Arguments.of("2000-01-01", 0, 0), + Arguments.of("2000-01-01", 2, 52), + Arguments.of("1999-12-31", 0, 52) + ); + } - expression = DSL.week(DSL.literal("2019-01-05")); - assertEquals(INTEGER, expression.type()); - assertEquals("week(\"2019-01-05\")", expression.toString()); - assertEquals(integerValue(0), eval(expression)); + @ParameterizedTest(name = "{1}{2}") + @MethodSource("getTestDataForWeek") + public void testWeek(String date, int mode, int expected) { + lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); + lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); + weekQuery(date, mode, expected); + weekOfYearQuery(date, mode, expected); + } - expression = DSL.week(DSL.literal("2019-01-05 00:01:00")); - assertEquals(INTEGER, expression.type()); - assertEquals("week(\"2019-01-05 00:01:00\")", expression.toString()); - assertEquals(integerValue(0), eval(expression)); + private void validateStringFormat( + FunctionExpression expr, + String expectedString, + int expectedResult) { + assertAll( + () -> assertEquals(INTEGER, expr.type()), + () -> assertEquals(expectedString, expr.toString()), + () -> assertEquals(integerValue(expectedResult), eval(expr)) + ); + } + + private static Stream getTestDataForWeekFormats() { + return Stream.of( + Arguments.of(DSL.literal(new ExprDateValue("2019-01-05")), + "DATE '2019-01-05'", + 0), + Arguments.of(DSL.literal(new ExprDatetimeValue("2019-01-05 01:02:03")), + "DATETIME '2019-01-05 01:02:03'", + 0), + Arguments.of(DSL.literal(new ExprTimestampValue("2019-01-05 01:02:03")), + "TIMESTAMP '2019-01-05 01:02:03'", + 0), + Arguments.of( + DSL.literal("2019-01-05"), + "\"2019-01-05\"", + 0), + Arguments.of( + DSL.literal("2019-01-05 00:01:00"), + "\"2019-01-05 00:01:00\"", + 0) + ); + } + + @ParameterizedTest(name = "{0}") + @MethodSource("getTestDataForWeekFormats") + public void testWeekFormats( + LiteralExpression arg, + String expectedString, + Integer expectedInteger) { + lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); + lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); + validateStringFormat( + DSL.week(functionProperties, arg), + String.format("week(%s)", expectedString), expectedInteger); + validateStringFormat( + DSL.week_of_year(functionProperties, arg), + String.format("week_of_year(%s)", expectedString), expectedInteger); + } + + @Test + public void testWeekOfYearWithTimeType() { + lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); + lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); - testWeek("2019-01-05", 0, 0); - testWeek("2019-01-05", 1, 1); - testWeek("2019-01-05", 2, 52); - testWeek("2019-01-05", 3, 1); - testWeek("2019-01-05", 4, 1); - testWeek("2019-01-05", 5, 0); - testWeek("2019-01-05", 6, 1); - testWeek("2019-01-05", 7, 53); - - testWeek("2019-01-06", 0, 1); - testWeek("2019-01-06", 1, 1); - testWeek("2019-01-06", 2, 1); - testWeek("2019-01-06", 3, 1); - testWeek("2019-01-06", 4, 2); - testWeek("2019-01-06", 5, 0); - testWeek("2019-01-06", 6, 2); - testWeek("2019-01-06", 7, 53); - - testWeek("2019-01-07", 0, 1); - testWeek("2019-01-07", 1, 2); - testWeek("2019-01-07", 2, 1); - testWeek("2019-01-07", 3, 2); - testWeek("2019-01-07", 4, 2); - testWeek("2019-01-07", 5, 1); - testWeek("2019-01-07", 6, 2); - testWeek("2019-01-07", 7, 1); - - testWeek("2000-01-01", 0, 0); - testWeek("2000-01-01", 2, 52); - testWeek("1999-12-31", 0, 52); + assertAll( + () -> validateStringFormat( + DSL.week( + functionProperties, + DSL.literal(new ExprTimeValue("12:23:34")), + DSL.literal(0)), + "week(TIME '12:23:34', 0)", + LocalDate.now(functionProperties.getQueryStartClock()).get(ALIGNED_WEEK_OF_YEAR)), + + () -> validateStringFormat( + DSL.week_of_year(functionProperties, DSL.literal(new ExprTimeValue("12:23:34"))), + "week_of_year(TIME '12:23:34')", + LocalDate.now(functionProperties.getQueryStartClock()).get(ALIGNED_WEEK_OF_YEAR)) + ); } @Test public void modeInUnsupportedFormat() { - testNullMissingWeek(DATE); + nullMissingWeekQuery(DATE); FunctionExpression expression1 = DSL - .week(DSL.literal(new ExprDateValue("2019-01-05")), DSL.literal(8)); + .week(functionProperties, DSL.literal(new ExprDateValue("2019-01-05")), DSL.literal(8)); SemanticCheckException exception = assertThrows(SemanticCheckException.class, () -> eval(expression1)); assertEquals("mode:8 is invalid, please use mode value between 0-7", exception.getMessage()); FunctionExpression expression2 = DSL - .week(DSL.literal(new ExprDateValue("2019-01-05")), DSL.literal(-1)); + .week(functionProperties, DSL.literal(new ExprDateValue("2019-01-05")), DSL.literal(-1)); exception = assertThrows(SemanticCheckException.class, () -> eval(expression2)); assertEquals("mode:-1 is invalid, please use mode value between 0-7", exception.getMessage()); } - private void testWeekOfYear(String date, int mode, int expectedResult) { - FunctionExpression expression = DSL - .week_of_year(DSL.literal(new ExprDateValue(date)), DSL.literal(mode)); - assertEquals(INTEGER, expression.type()); - assertEquals(String.format("week_of_year(DATE '%s', %d)", date, mode), expression.toString()); - assertEquals(integerValue(expectedResult), eval(expression)); - } - - private void testNullMissingWeekOfYear(ExprCoreType date) { + private void nullMissingWeekOfYearQuery(ExprCoreType date) { when(nullRef.type()).thenReturn(date); when(missingRef.type()).thenReturn(date); - assertEquals(nullValue(), eval(DSL.week_of_year(nullRef))); - assertEquals(missingValue(), eval(DSL.week_of_year(missingRef))); + assertEquals(nullValue(), eval(DSL.week_of_year( + functionProperties, + nullRef))); + assertEquals(missingValue(), eval(DSL.week_of_year( + functionProperties, + missingRef))); } @Test public void testInvalidWeekOfYear() { - testNullMissingWeekOfYear(DATE); - testNullMissingWeekOfYear(DATETIME); - testNullMissingWeekOfYear(TIMESTAMP); - testNullMissingWeekOfYear(STRING); + nullMissingWeekOfYearQuery(DATE); + nullMissingWeekOfYearQuery(DATETIME); + nullMissingWeekOfYearQuery(TIMESTAMP); + nullMissingWeekOfYearQuery(STRING); when(nullRef.type()).thenReturn(INTEGER); when(missingRef.type()).thenReturn(INTEGER); - assertEquals(nullValue(), eval(DSL.week_of_year(DSL.literal("2019-01-05"), nullRef))); - assertEquals(missingValue(), eval(DSL.week_of_year(DSL.literal("2019-01-05"), missingRef))); + assertEquals(nullValue(), eval(DSL.week_of_year( + functionProperties, + DSL.literal("2019-01-05"), nullRef))); + assertEquals(missingValue(), eval(DSL.week_of_year( + functionProperties, + DSL.literal("2019-01-05"), missingRef))); when(nullRef.type()).thenReturn(DATE); when(missingRef.type()).thenReturn(INTEGER); - assertEquals(missingValue(), eval(DSL.week_of_year(nullRef, missingRef))); - - //test invalid month - assertThrows(SemanticCheckException.class, () -> testWeekOfYear("2019-13-05 01:02:03", 0, 0)); - //test invalid day - assertThrows(SemanticCheckException.class, () -> testWeekOfYear("2019-01-50 01:02:03", 0, 0)); - //test invalid leap year - assertThrows(SemanticCheckException.class, () -> testWeekOfYear("2019-02-29 01:02:03", 0, 0)); - } - - @Test - public void testWeekOfYearAlternateArgumentFormats() { - lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); - lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); - - FunctionExpression expression = DSL - .week_of_year(DSL.literal(new ExprTimestampValue("2019-01-05 01:02:03"))); - assertEquals(INTEGER, expression.type()); - assertEquals("week_of_year(TIMESTAMP '2019-01-05 01:02:03')", expression.toString()); - assertEquals(integerValue(0), eval(expression)); - - expression = DSL.week_of_year(DSL.literal("2019-01-05")); - assertEquals(INTEGER, expression.type()); - assertEquals("week_of_year(\"2019-01-05\")", expression.toString()); - assertEquals(integerValue(0), eval(expression)); - - expression = DSL.week_of_year(DSL.literal("2019-01-05 00:01:00")); - assertEquals(INTEGER, expression.type()); - assertEquals("week_of_year(\"2019-01-05 00:01:00\")", expression.toString()); - assertEquals(integerValue(0), eval(expression)); - } - - @Test - public void testWeekOfYearDifferentModes() { - lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); - lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); - - //Test the behavior of different modes passed into the 'week_of_year' function - testWeekOfYear("2019-01-05", 0, 0); - testWeekOfYear("2019-01-05", 1, 1); - testWeekOfYear("2019-01-05", 2, 52); - testWeekOfYear("2019-01-05", 3, 1); - testWeekOfYear("2019-01-05", 4, 1); - testWeekOfYear("2019-01-05", 5, 0); - testWeekOfYear("2019-01-05", 6, 1); - testWeekOfYear("2019-01-05", 7, 53); - - testWeekOfYear("2019-01-06", 0, 1); - testWeekOfYear("2019-01-06", 1, 1); - testWeekOfYear("2019-01-06", 2, 1); - testWeekOfYear("2019-01-06", 3, 1); - testWeekOfYear("2019-01-06", 4, 2); - testWeekOfYear("2019-01-06", 5, 0); - testWeekOfYear("2019-01-06", 6, 2); - testWeekOfYear("2019-01-06", 7, 53); - - testWeekOfYear("2019-01-07", 0, 1); - testWeekOfYear("2019-01-07", 1, 2); - testWeekOfYear("2019-01-07", 2, 1); - testWeekOfYear("2019-01-07", 3, 2); - testWeekOfYear("2019-01-07", 4, 2); - testWeekOfYear("2019-01-07", 5, 1); - testWeekOfYear("2019-01-07", 6, 2); - testWeekOfYear("2019-01-07", 7, 1); - - testWeekOfYear("2000-01-01", 0, 0); - testWeekOfYear("2000-01-01", 2, 52); - testWeekOfYear("1999-12-31", 0, 52); + assertEquals(missingValue(), eval(DSL.week_of_year( + functionProperties, + nullRef, missingRef))); + assertAll( + //test invalid month + () -> assertThrows( + SemanticCheckException.class, + () -> weekOfYearQuery("2019-13-05 01:02:03", 0, 0)), + //test invalid day + () -> assertThrows( + SemanticCheckException.class, + () -> weekOfYearQuery("2019-01-50 01:02:03", 0, 0)), + //test invalid leap year + () -> assertThrows( + SemanticCheckException.class, + () -> weekOfYearQuery("2019-02-29 01:02:03", 0, 0)) + ); } @Test public void weekOfYearModeInUnsupportedFormat() { - testNullMissingWeekOfYear(DATE); + nullMissingWeekOfYearQuery(DATE); FunctionExpression expression1 = DSL - .week_of_year(DSL.literal(new ExprDateValue("2019-01-05")), DSL.literal(8)); + .week_of_year( + functionProperties, + DSL.literal(new ExprDateValue("2019-01-05")), DSL.literal(8)); SemanticCheckException exception = assertThrows(SemanticCheckException.class, () -> eval(expression1)); assertEquals("mode:8 is invalid, please use mode value between 0-7", exception.getMessage()); FunctionExpression expression2 = DSL - .week_of_year(DSL.literal(new ExprDateValue("2019-01-05")), DSL.literal(-1)); + .week_of_year( + functionProperties, + DSL.literal(new ExprDateValue("2019-01-05")), DSL.literal(-1)); exception = assertThrows(SemanticCheckException.class, () -> eval(expression2)); assertEquals("mode:-1 is invalid, please use mode value between 0-7", exception.getMessage()); diff --git a/core/src/test/java/org/opensearch/sql/expression/function/FunctionDSLimplWithPropertiesTwoArgsTest.java b/core/src/test/java/org/opensearch/sql/expression/function/FunctionDSLimplWithPropertiesTwoArgsTest.java new file mode 100644 index 0000000000..f690485801 --- /dev/null +++ b/core/src/test/java/org/opensearch/sql/expression/function/FunctionDSLimplWithPropertiesTwoArgsTest.java @@ -0,0 +1,34 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.sql.expression.function; + + +import java.util.List; +import org.apache.commons.lang3.tuple.Pair; +import org.opensearch.sql.data.model.ExprValue; +import org.opensearch.sql.expression.DSL; +import org.opensearch.sql.expression.Expression; + +class FunctionDSLimplWithPropertiesTwoArgsTest extends FunctionDSLimplTestBase { + + @Override + SerializableFunction> + getImplementationGenerator() { + SerializableTriFunction functionBody + = (fp, arg1, arg2) -> ANY; + return FunctionDSL.implWithProperties(functionBody, ANY_TYPE, ANY_TYPE, ANY_TYPE); + } + + @Override + List getSampleArguments() { + return List.of(DSL.literal(ANY), DSL.literal(ANY)); + } + + @Override + String getExpected_toString() { + return "sample(ANY, ANY)"; + } +} diff --git a/docs/user/dql/functions.rst b/docs/user/dql/functions.rst index 3dbfedd143..4d0ab13879 100644 --- a/docs/user/dql/functions.rst +++ b/docs/user/dql/functions.rst @@ -1598,9 +1598,10 @@ Description >>>>>>>>>>> Usage: dayofyear(date) returns the day of the year for date, in the range 1 to 366. +If an argument of type `TIME` is given, the function will use the current date. The function `day_of_year`_ is also provided as an alias. -Argument type: STRING/DATE/DATETIME/TIMESTAMP +Argument type: STRING/DATE/DATETIME/TIME/TIMESTAMP Return type: INTEGER @@ -1637,9 +1638,10 @@ DAY_OF_YEAR Description >>>>>>>>>>> +If an argument of type `TIME` is given, the function will use the current date. This function is an alias to the `dayofyear`_ function -Argument type: STRING/DATE/DATETIME/TIMESTAMP +Argument type: STRING/DATE/DATETIME/TIME/TIMESTAMP Return type: INTEGER @@ -1934,9 +1936,10 @@ Description >>>>>>>>>>> Usage: month(date) returns the month for date, in the range 1 to 12 for January to December. The dates with value 0 such as '0000-00-00' or '2008-00-00' are invalid. -The function month_of_year is also provided as an alias +If an argument of type `TIME` is given, the function will use the current date. +The function `month_of_year`_ is also provided as an alias. -Argument type: STRING/DATE/DATETIME/TIMESTAMP +Argument type: STRING/DATE/DATETIME/TIME/TIMESTAMP Return type: INTEGER @@ -2451,6 +2454,7 @@ Description >>>>>>>>>>> Usage: week(date[, mode]) returns the week number for date. If the mode argument is omitted, the default mode 0 is used. +If an argument of type `TIME` is given, the function will use the current date. The function `week_of_year` is also provided as an alias. .. list-table:: The following table describes how the mode argument works. @@ -2494,7 +2498,7 @@ The function `week_of_year` is also provided as an alias. - 1-53 - with a Monday in this year -Argument type: DATE/DATETIME/TIMESTAMP/STRING +Argument type: DATE/DATETIME/TIME/TIMESTAMP/STRING Return type: INTEGER @@ -2515,8 +2519,9 @@ Description >>>>>>>>>>> The week_of_year function is a synonym for the `week`_ function. +If an argument of type `TIME` is given, the function will use the current date. -Argument type: DATE/DATETIME/TIMESTAMP/STRING +Argument type: DATE/DATETIME/TIME/TIMESTAMP/STRING Return type: INTEGER diff --git a/sql/src/main/antlr/OpenSearchSQLParser.g4 b/sql/src/main/antlr/OpenSearchSQLParser.g4 index 26e7885288..ae72521dec 100644 --- a/sql/src/main/antlr/OpenSearchSQLParser.g4 +++ b/sql/src/main/antlr/OpenSearchSQLParser.g4 @@ -237,14 +237,11 @@ datetimeConstantLiteral : CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP - | DAY_OF_YEAR | LOCALTIME | LOCALTIMESTAMP - | MONTH_OF_YEAR | UTC_TIMESTAMP | UTC_DATE | UTC_TIME - | WEEK_OF_YEAR ; intervalLiteral @@ -436,6 +433,7 @@ dateTimeFunctionName | DAYOFMONTH | DAYOFWEEK | DAYOFYEAR + | DAY_OF_YEAR | DAY_OF_WEEK | FROM_DAYS | FROM_UNIXTIME @@ -448,6 +446,7 @@ dateTimeFunctionName | MINUTE_OF_HOUR | MONTH | MONTHNAME + | MONTH_OF_YEAR | NOW | PERIOD_ADD | PERIOD_DIFF @@ -464,6 +463,7 @@ dateTimeFunctionName | TO_DAYS | UNIX_TIMESTAMP | WEEK + | WEEK_OF_YEAR | YEAR ; From 11083797bf69acf8348f79bca438e8c2cb8187f4 Mon Sep 17 00:00:00 2001 From: GabeFernandez310 Date: Mon, 9 Jan 2023 19:13:47 -0800 Subject: [PATCH 44/55] Add Day_Of_Month Function As An Alias Of DayOfMonth (#1227) * Add Day_Of_Month Function As An Alias Of DayOfMonth (#194) Signed-off-by: GabeFernandez310 --- .../org/opensearch/sql/expression/DSL.java | 12 ++- .../expression/datetime/DateTimeFunction.java | 22 +++-- .../function/BuiltinFunctionName.java | 1 + .../datetime/DateTimeFunctionTest.java | 89 ++++++++++++++++++- docs/user/dql/functions.rst | 35 ++++++-- .../sql/sql/DateTimeFunctionIT.java | 42 +++++++++ sql/src/main/antlr/OpenSearchSQLParser.g4 | 1 + .../sql/sql/antlr/SQLSyntaxParserTest.java | 6 ++ 8 files changed, 189 insertions(+), 19 deletions(-) diff --git a/core/src/main/java/org/opensearch/sql/expression/DSL.java b/core/src/main/java/org/opensearch/sql/expression/DSL.java index 611053f0bf..d6a1d140dd 100644 --- a/core/src/main/java/org/opensearch/sql/expression/DSL.java +++ b/core/src/main/java/org/opensearch/sql/expression/DSL.java @@ -322,8 +322,10 @@ public static FunctionExpression dayname(Expression... expressions) { return compile(FunctionProperties.None, BuiltinFunctionName.DAYNAME, expressions); } - public static FunctionExpression dayofmonth(Expression... expressions) { - return compile(FunctionProperties.None, BuiltinFunctionName.DAYOFMONTH, expressions); + public static FunctionExpression dayofmonth( + FunctionProperties functionProperties, + Expression... expressions) { + return compile(functionProperties, BuiltinFunctionName.DAYOFMONTH, expressions); } public static FunctionExpression dayofweek( @@ -335,6 +337,12 @@ public static FunctionExpression dayofyear(Expression... expressions) { return compile(FunctionProperties.None, BuiltinFunctionName.DAYOFYEAR, expressions); } + public static FunctionExpression day_of_month( + FunctionProperties functionProperties, + Expression... expressions) { + return compile(functionProperties, BuiltinFunctionName.DAY_OF_MONTH, expressions); + } + public static FunctionExpression day_of_year( FunctionProperties functionProperties, Expression... expressions) { return compile(functionProperties, BuiltinFunctionName.DAY_OF_YEAR, expressions); diff --git a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java index 68227d1ba4..5007d2fd49 100644 --- a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java +++ b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java @@ -64,7 +64,6 @@ import org.opensearch.sql.data.model.ExprValue; import org.opensearch.sql.data.type.ExprCoreType; import org.opensearch.sql.exception.ExpressionEvaluationException; -import org.opensearch.sql.exception.SemanticCheckException; import org.opensearch.sql.expression.function.BuiltinFunctionName; import org.opensearch.sql.expression.function.BuiltinFunctionRepository; import org.opensearch.sql.expression.function.DefaultFunctionResolver; @@ -113,7 +112,8 @@ public void register(BuiltinFunctionRepository repository) { repository.register(date_sub()); repository.register(day()); repository.register(dayName()); - repository.register(dayOfMonth()); + repository.register(dayOfMonth(BuiltinFunctionName.DAYOFMONTH)); + repository.register(dayOfMonth(BuiltinFunctionName.DAY_OF_MONTH)); repository.register(dayOfWeek(BuiltinFunctionName.DAYOFWEEK.getName())); repository.register(dayOfWeek(BuiltinFunctionName.DAY_OF_WEEK.getName())); repository.register(dayOfYear(BuiltinFunctionName.DAYOFYEAR)); @@ -444,12 +444,15 @@ private DefaultFunctionResolver dayName() { /** * DAYOFMONTH(STRING/DATE/DATETIME/TIMESTAMP). return the day of the month (1-31). */ - private DefaultFunctionResolver dayOfMonth() { - return define(BuiltinFunctionName.DAYOFMONTH.getName(), + private DefaultFunctionResolver dayOfMonth(BuiltinFunctionName name) { + return define(name.getName(), + implWithProperties(nullMissingHandlingWithProperties( + (functionProperties, arg) -> DateTimeFunction.dayOfMonthToday( + functionProperties.getQueryStartClock())), INTEGER, TIME), impl(nullMissingHandling(DateTimeFunction::exprDayOfMonth), INTEGER, DATE), impl(nullMissingHandling(DateTimeFunction::exprDayOfMonth), INTEGER, DATETIME), - impl(nullMissingHandling(DateTimeFunction::exprDayOfMonth), INTEGER, TIMESTAMP), - impl(nullMissingHandling(DateTimeFunction::exprDayOfMonth), INTEGER, STRING) + impl(nullMissingHandling(DateTimeFunction::exprDayOfMonth), INTEGER, STRING), + impl(nullMissingHandling(DateTimeFunction::exprDayOfMonth), INTEGER, TIMESTAMP) ); } @@ -844,6 +847,11 @@ private DefaultFunctionResolver date_format() { ); } + + private ExprValue dayOfMonthToday(Clock clock) { + return new ExprIntegerValue(LocalDateTime.now(clock).getDayOfMonth()); + } + private ExprValue dayOfYearToday(Clock clock) { return new ExprIntegerValue(LocalDateTime.now(clock).getDayOfYear()); } @@ -1058,7 +1066,7 @@ private ExprValue exprDayName(ExprValue date) { /** * Day of Month implementation for ExprValue. * - * @param date ExprValue of Date/String type. + * @param date ExprValue of Date/Datetime/String/Time/Timestamp type. * @return ExprValue. */ private ExprValue exprDayOfMonth(ExprValue date) { diff --git a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java index 5572f41a9f..a0c12cc034 100644 --- a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java +++ b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java @@ -69,6 +69,7 @@ public enum BuiltinFunctionName { DAY(FunctionName.of("day")), DAYNAME(FunctionName.of("dayname")), DAYOFMONTH(FunctionName.of("dayofmonth")), + DAY_OF_MONTH(FunctionName.of("day_of_month")), DAYOFWEEK(FunctionName.of("dayofweek")), DAYOFYEAR(FunctionName.of("dayofyear")), DAY_OF_WEEK(FunctionName.of("day_of_week")), diff --git a/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java b/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java index 76f35dc68c..deb1eb5fe6 100644 --- a/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java +++ b/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java @@ -422,20 +422,101 @@ public void dayName() { public void dayOfMonth() { when(nullRef.type()).thenReturn(DATE); when(missingRef.type()).thenReturn(DATE); - assertEquals(nullValue(), eval(DSL.dayofmonth(nullRef))); - assertEquals(missingValue(), eval(DSL.dayofmonth(missingRef))); + assertEquals(nullValue(), eval(DSL.dayofmonth(functionProperties, nullRef))); + assertEquals(missingValue(), eval(DSL.dayofmonth(functionProperties, missingRef))); - FunctionExpression expression = DSL.dayofmonth(DSL.literal(new ExprDateValue("2020-08-07"))); + FunctionExpression expression = DSL.dayofmonth( + functionProperties, DSL.literal(new ExprDateValue("2020-08-07"))); assertEquals(INTEGER, expression.type()); assertEquals("dayofmonth(DATE '2020-08-07')", expression.toString()); assertEquals(integerValue(7), eval(expression)); - expression = DSL.dayofmonth(DSL.literal("2020-07-08")); + expression = DSL.dayofmonth(functionProperties, DSL.literal("2020-07-08")); assertEquals(INTEGER, expression.type()); assertEquals("dayofmonth(\"2020-07-08\")", expression.toString()); assertEquals(integerValue(8), eval(expression)); } + private void testDayOfMonthWithUnderscores(FunctionExpression dateExpression, int dayOfMonth) { + assertEquals(INTEGER, dateExpression.type()); + assertEquals(integerValue(dayOfMonth), eval(dateExpression)); + } + + @Test + public void dayOfMonthWithUnderscores() { + lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); + lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); + + + FunctionExpression expression1 = DSL.dayofmonth( + functionProperties, DSL.literal(new ExprDateValue("2020-08-07"))); + FunctionExpression expression2 = DSL.dayofmonth(functionProperties, DSL.literal("2020-07-08")); + + assertAll( + () -> testDayOfMonthWithUnderscores(expression1, 7), + () -> assertEquals("dayofmonth(DATE '2020-08-07')", expression1.toString()), + + () -> testDayOfMonthWithUnderscores(expression2, 8), + () -> assertEquals("dayofmonth(\"2020-07-08\")", expression2.toString()) + + ); + } + + @Test + public void testDayOfMonthWithTimeType() { + lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); + lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); + FunctionExpression expression = DSL.day_of_month( + functionProperties, DSL.literal(new ExprTimeValue("12:23:34"))); + + assertEquals(INTEGER, eval(expression).type()); + assertEquals( + LocalDate.now(functionProperties.getQueryStartClock()).getDayOfMonth(), + eval(expression).integerValue()); + assertEquals("day_of_month(TIME '12:23:34')", expression.toString()); + } + + private void testInvalidDayOfMonth(String date) { + FunctionExpression expression = DSL.day_of_month( + functionProperties, DSL.literal(new ExprDateValue(date))); + eval(expression); + } + + @Test + public void dayOfMonthWithUnderscoresLeapYear() { + lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); + lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); + + //Feb. 29 of a leap year + testDayOfMonthWithUnderscores(DSL.day_of_month( + functionProperties, DSL.literal("2020-02-29")), 29); + + //Feb. 29 of a non-leap year + assertThrows(SemanticCheckException.class, () -> testInvalidDayOfMonth("2021-02-29")); + } + + @Test + public void dayOfMonthWithUnderscoresInvalidArguments() { + lenient().when(nullRef.type()).thenReturn(DATE); + lenient().when(missingRef.type()).thenReturn(DATE); + + assertAll( + () -> assertEquals(nullValue(), eval(DSL.day_of_month(functionProperties, nullRef))), + () -> assertEquals( + missingValue(), eval(DSL.day_of_month(functionProperties, missingRef))), + + //40th day of the month + () -> assertThrows( + SemanticCheckException.class, () -> testInvalidDayOfMonth("2021-02-40")), + //13th month of the year + () -> assertThrows( + SemanticCheckException.class, () -> testInvalidDayOfMonth("2021-13-40")), + //incorrect format + () -> assertThrows( + SemanticCheckException.class, () -> testInvalidDayOfMonth("asdfasdfasdf")) + ); + } + private void dayOfWeekQuery( FunctionExpression dateExpression, int dayOfWeek, diff --git a/docs/user/dql/functions.rst b/docs/user/dql/functions.rst index 4d0ab13879..648cbed585 100644 --- a/docs/user/dql/functions.rst +++ b/docs/user/dql/functions.rst @@ -1499,13 +1499,13 @@ DAY Description >>>>>>>>>>> -Usage: day(date) extracts the day of the month for date, in the range 1 to 31. The dates with value 0 such as '0000-00-00' or '2008-00-00' are invalid. +Usage: day(date) extracts the day of the month for date, in the range 1 to 31. -Argument type: STRING/DATE/DATETIME/TIMESTAMP +Argument type: STRING/DATE/DATETIME/TIME/TIMESTAMP Return type: INTEGER -Synonyms: DAYOFMONTH +Synonyms: `DAYOFMONTH`_, `DAY_OF_MONTH`_ Example:: @@ -1547,13 +1547,13 @@ DAYOFMONTH Description >>>>>>>>>>> -Usage: dayofmonth(date) extracts the day of the month for date, in the range 1 to 31. The dates with value 0 such as '0000-00-00' or '2008-00-00' are invalid. +Usage: dayofmonth(date) extracts the day of the month for date, in the range 1 to 31. -Argument type: STRING/DATE/DATETIME/TIMESTAMP +Argument type: STRING/DATE/DATETIME/TIME/TIMESTAMP Return type: INTEGER -Synonyms: DAY +Synonyms: `DAY`_, `DAY_OF_MONTH`_ Example:: @@ -1565,6 +1565,29 @@ Example:: | 26 | +----------------------------------+ +DAY_OF_MONTH +------------ + +Description +>>>>>>>>>>> + +Usage: day_of_month(date) extracts the day of the month for date, in the range 1 to 31. + +Argument type: STRING/DATE/TIME/DATETIME/TIMESTAMP + +Return type: INTEGER + +Synonyms: `DAY`_, `DAYOFMONTH`_ + +Example:: + + os> SELECT DAY_OF_MONTH('2020-08-26') + fetched rows / total rows = 1/1 + +------------------------------+ + | DAY_OF_MONTH('2020-08-26') | + |------------------------------| + | 26 | + +------------------------------+ DAYOFWEEK --------- diff --git a/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java b/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java index 85661bfa97..2f261b7cfc 100644 --- a/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java @@ -208,6 +208,48 @@ public void testDayOfMonth() throws IOException { verifyDataRows(result, rows(16)); } + @Test + public void testDayOfMonthWithUnderscores() throws IOException { + JSONObject result = executeQuery("select day_of_month(date('2020-09-16'))"); + verifySchema(result, schema("day_of_month(date('2020-09-16'))", null, "integer")); + verifyDataRows(result, rows(16)); + + result = executeQuery("select day_of_month('2020-09-16')"); + verifySchema(result, schema("day_of_month('2020-09-16')", null, "integer")); + verifyDataRows(result, rows(16)); + } + + @Test + public void testDayOfMonthAliasesReturnTheSameResults() throws IOException { + JSONObject result1 = executeQuery("SELECT dayofmonth(date('2022-11-22'))"); + JSONObject result2 = executeQuery("SELECT day_of_month(date('2022-11-22'))"); + verifyDataRows(result1, rows(22)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + + result1 = executeQuery(String.format( + "SELECT dayofmonth(CAST(date0 AS date)) FROM %s", TEST_INDEX_CALCS)); + result2 = executeQuery(String.format( + "SELECT day_of_month(CAST(date0 AS date)) FROM %s", TEST_INDEX_CALCS)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + + result1 = executeQuery(String.format( + "SELECT dayofmonth(datetime(CAST(time0 AS STRING))) FROM %s", TEST_INDEX_CALCS)); + result2 = executeQuery(String.format( + "SELECT day_of_month(datetime(CAST(time0 AS STRING))) FROM %s", TEST_INDEX_CALCS)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + + result1 = executeQuery(String.format( + "SELECT dayofmonth(CAST(time0 AS STRING)) FROM %s", TEST_INDEX_CALCS)); + result2 = executeQuery(String.format( + "SELECT day_of_month(CAST(time0 AS STRING)) FROM %s", TEST_INDEX_CALCS)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + + result1 = executeQuery(String.format( + "SELECT dayofmonth(CAST(datetime0 AS timestamp)) FROM %s", TEST_INDEX_CALCS)); + result2 = executeQuery(String.format( + "SELECT day_of_month(CAST(datetime0 AS timestamp)) FROM %s", TEST_INDEX_CALCS)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + } @Test public void testDayOfWeek() throws IOException { JSONObject result = executeQuery("select dayofweek(date('2020-09-16'))"); diff --git a/sql/src/main/antlr/OpenSearchSQLParser.g4 b/sql/src/main/antlr/OpenSearchSQLParser.g4 index ae72521dec..c9424eb09e 100644 --- a/sql/src/main/antlr/OpenSearchSQLParser.g4 +++ b/sql/src/main/antlr/OpenSearchSQLParser.g4 @@ -431,6 +431,7 @@ dateTimeFunctionName | DAY | DAYNAME | DAYOFMONTH + | DAY_OF_MONTH | DAYOFWEEK | DAYOFYEAR | DAY_OF_YEAR diff --git a/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java b/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java index 32715a64e1..97cf84b9ee 100644 --- a/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java +++ b/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java @@ -201,6 +201,12 @@ public void can_parse_week_of_year_functions() { assertNotNull(parser.parse("SELECT week_of_year('2022-11-18')")); } + @Test + public void can_parse_dayofmonth_functions() { + assertNotNull(parser.parse("SELECT dayofmonth('2022-11-18')")); + assertNotNull(parser.parse("SELECT day_of_month('2022-11-18')")); + } + @Test public void can_parse_day_of_week_functions() { assertNotNull(parser.parse("SELECT dayofweek('2022-11-18')")); From 9e67e5bd26fdbb7c9b61eb62c065ce7ee9e3089c Mon Sep 17 00:00:00 2001 From: GabeFernandez310 Date: Tue, 10 Jan 2023 13:36:20 -0800 Subject: [PATCH 45/55] Add Hour_Of_Day Function As An Alias Of Hour (#1226) * Add Hour_Of_Day Function As An Alias Of Hour Added Tests And ImplementationFor Hour_Of_Day Function Signed-off-by: GabeFernandez310 * Fixed Checkstyle Signed-off-by: GabeFernandez310 Signed-off-by: GabeFernandez310 Signed-off-by: GabeFernandez310 --- .../org/opensearch/sql/expression/DSL.java | 4 ++ .../expression/datetime/DateTimeFunction.java | 15 +++-- .../function/BuiltinFunctionName.java | 1 + .../datetime/DateTimeFunctionTest.java | 63 +++++++++++++++++++ docs/user/dql/functions.rst | 14 ++--- .../sql/sql/DateTimeFunctionIT.java | 51 +++++++++++++++ sql/src/main/antlr/OpenSearchSQLParser.g4 | 1 + .../sql/sql/antlr/SQLSyntaxParserTest.java | 5 ++ 8 files changed, 142 insertions(+), 12 deletions(-) diff --git a/core/src/main/java/org/opensearch/sql/expression/DSL.java b/core/src/main/java/org/opensearch/sql/expression/DSL.java index d6a1d140dd..0450181c3c 100644 --- a/core/src/main/java/org/opensearch/sql/expression/DSL.java +++ b/core/src/main/java/org/opensearch/sql/expression/DSL.java @@ -361,6 +361,10 @@ public static FunctionExpression hour(Expression... expressions) { return compile(FunctionProperties.None, BuiltinFunctionName.HOUR, expressions); } + public static FunctionExpression hour_of_day(Expression... expressions) { + return compile(FunctionProperties.None, BuiltinFunctionName.HOUR_OF_DAY, expressions); + } + public static FunctionExpression microsecond(Expression... expressions) { return compile(FunctionProperties.None, BuiltinFunctionName.MICROSECOND, expressions); } diff --git a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java index 5007d2fd49..89a870087e 100644 --- a/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java +++ b/core/src/main/java/org/opensearch/sql/expression/datetime/DateTimeFunction.java @@ -6,7 +6,9 @@ package org.opensearch.sql.expression.datetime; + import static java.time.temporal.ChronoUnit.DAYS; +import static java.time.temporal.ChronoUnit.HOURS; import static java.time.temporal.ChronoUnit.MINUTES; import static java.time.temporal.ChronoUnit.MONTHS; import static java.time.temporal.ChronoUnit.SECONDS; @@ -120,7 +122,8 @@ public void register(BuiltinFunctionRepository repository) { repository.register(dayOfYear(BuiltinFunctionName.DAY_OF_YEAR)); repository.register(from_days()); repository.register(from_unixtime()); - repository.register(hour()); + repository.register(hour(BuiltinFunctionName.HOUR)); + repository.register(hour(BuiltinFunctionName.HOUR_OF_DAY)); repository.register(localtime()); repository.register(localtimestamp()); repository.register(makedate()); @@ -504,12 +507,13 @@ private FunctionResolver from_unixtime() { } /** - * HOUR(STRING/TIME/DATETIME/TIMESTAMP). return the hour value for time. + * HOUR(STRING/TIME/DATETIME/DATE/TIMESTAMP). return the hour value for time. */ - private DefaultFunctionResolver hour() { - return define(BuiltinFunctionName.HOUR.getName(), + private DefaultFunctionResolver hour(BuiltinFunctionName name) { + return define(name.getName(), impl(nullMissingHandling(DateTimeFunction::exprHour), INTEGER, STRING), impl(nullMissingHandling(DateTimeFunction::exprHour), INTEGER, TIME), + impl(nullMissingHandling(DateTimeFunction::exprHour), INTEGER, DATE), impl(nullMissingHandling(DateTimeFunction::exprHour), INTEGER, DATETIME), impl(nullMissingHandling(DateTimeFunction::exprHour), INTEGER, TIMESTAMP) ); @@ -1139,7 +1143,8 @@ private ExprValue exprFromUnixTimeFormat(ExprValue time, ExprValue format) { * @return ExprValue. */ private ExprValue exprHour(ExprValue time) { - return new ExprIntegerValue(time.timeValue().getHour()); + return new ExprIntegerValue( + HOURS.between(LocalTime.MIN, time.timeValue())); } /** diff --git a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java index a0c12cc034..f9d38a0da3 100644 --- a/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java +++ b/core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java @@ -77,6 +77,7 @@ public enum BuiltinFunctionName { FROM_DAYS(FunctionName.of("from_days")), FROM_UNIXTIME(FunctionName.of("from_unixtime")), HOUR(FunctionName.of("hour")), + HOUR_OF_DAY(FunctionName.of("hour_of_day")), MAKEDATE(FunctionName.of("makedate")), MAKETIME(FunctionName.of("maketime")), MICROSECOND(FunctionName.of("microsecond")), diff --git a/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java b/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java index deb1eb5fe6..ff9f154f75 100644 --- a/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java +++ b/core/src/test/java/org/opensearch/sql/expression/datetime/DateTimeFunctionTest.java @@ -925,6 +925,69 @@ public void invalidMinuteOfDay() { } + private void hourOfDayQuery(FunctionExpression dateExpression, int hour) { + assertEquals(INTEGER, dateExpression.type()); + assertEquals(integerValue(hour), eval(dateExpression)); + } + + @Test + public void hourOfDay() { + lenient().when(nullRef.valueOf(env)).thenReturn(nullValue()); + lenient().when(missingRef.valueOf(env)).thenReturn(missingValue()); + + FunctionExpression expression1 = DSL.hour_of_day(DSL.literal(new ExprTimeValue("01:02:03"))); + FunctionExpression expression2 = DSL.hour_of_day(DSL.literal("01:02:03")); + FunctionExpression expression3 = DSL.hour_of_day( + DSL.literal(new ExprTimestampValue("2020-08-17 01:02:03"))); + FunctionExpression expression4 = DSL.hour_of_day( + DSL.literal(new ExprDatetimeValue("2020-08-17 01:02:03"))); + FunctionExpression expression5 = DSL.hour_of_day(DSL.literal("2020-08-17 01:02:03")); + + assertAll( + () -> hourOfDayQuery(expression1, 1), + () -> assertEquals("hour_of_day(TIME '01:02:03')", expression1.toString()), + + () -> hourOfDayQuery(expression2, 1), + () -> assertEquals("hour_of_day(\"01:02:03\")", expression2.toString()), + + () -> hourOfDayQuery(expression3, 1), + () -> assertEquals("hour_of_day(TIMESTAMP '2020-08-17 01:02:03')", expression3.toString()), + + () -> hourOfDayQuery(expression4, 1), + () -> assertEquals("hour_of_day(DATETIME '2020-08-17 01:02:03')", expression4.toString()), + + () -> hourOfDayQuery(expression5, 1), + () -> assertEquals("hour_of_day(\"2020-08-17 01:02:03\")", expression5.toString()) + ); + } + + private void invalidHourOfDayQuery(String time) { + FunctionExpression expression = DSL.hour_of_day(DSL.literal(new ExprTimeValue(time))); + eval(expression); + } + + @Test + public void hourOfDayInvalidArguments() { + when(nullRef.type()).thenReturn(TIME); + when(missingRef.type()).thenReturn(TIME); + + assertAll( + () -> assertEquals(nullValue(), eval(DSL.hour(nullRef))), + () -> assertEquals(missingValue(), eval(DSL.hour(missingRef))), + //Invalid Seconds + () -> assertThrows(SemanticCheckException.class, () -> invalidHourOfDayQuery("12:23:61")), + //Invalid Minutes + () -> assertThrows(SemanticCheckException.class, () -> invalidHourOfDayQuery("12:61:34")), + + //Invalid Hours + () -> assertThrows(SemanticCheckException.class, () -> invalidHourOfDayQuery("25:23:34")), + + //incorrect format + () -> assertThrows(SemanticCheckException.class, () -> invalidHourOfDayQuery("asdfasdf")) + ); + + } + @Test public void microsecond() { when(nullRef.type()).thenReturn(TIME); diff --git a/docs/user/dql/functions.rst b/docs/user/dql/functions.rst index 648cbed585..f433845bb3 100644 --- a/docs/user/dql/functions.rst +++ b/docs/user/dql/functions.rst @@ -1763,6 +1763,7 @@ Description >>>>>>>>>>> Usage: hour(time) extracts the hour value for time. Different from the time of day value, the time value has a large range and can be greater than 23, so the return value of hour(time) can be also greater than 23. +The function `hour_of_day` is also provided as an alias. Argument type: STRING/TIME/DATETIME/TIMESTAMP @@ -1770,14 +1771,13 @@ Return type: INTEGER Example:: - os> SELECT HOUR((TIME '01:02:03')) + os> SELECT HOUR('01:02:03'), HOUR_OF_DAY('01:02:03') fetched rows / total rows = 1/1 - +---------------------------+ - | HOUR((TIME '01:02:03')) | - |---------------------------| - | 1 | - +---------------------------+ - + +--------------------+---------------------------+ + | HOUR('01:02:03') | HOUR_OF_DAY('01:02:03') | + |--------------------+---------------------------| + | 1 | 1 | + +--------------------+---------------------------+ LOCALTIMESTAMP -------------- diff --git a/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java b/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java index 2f261b7cfc..af8748deab 100644 --- a/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/sql/DateTimeFunctionIT.java @@ -391,6 +391,57 @@ public void testHour() throws IOException { verifyDataRows(result, rows(17)); } + @Test + public void testHourOfDayWithUnderscores() throws IOException { + JSONObject result = executeQuery("select hour_of_day(timestamp('2020-09-16 17:30:00'))"); + verifySchema(result, schema( + "hour_of_day(timestamp('2020-09-16 17:30:00'))", null, "integer")); + verifyDataRows(result, rows(17)); + + result = executeQuery("select hour_of_day(datetime('2020-09-16 17:30:00'))"); + verifySchema(result, schema( + "hour_of_day(datetime('2020-09-16 17:30:00'))", null, "integer")); + verifyDataRows(result, rows(17)); + + result = executeQuery("select hour_of_day(time('17:30:00'))"); + verifySchema(result, schema("hour_of_day(time('17:30:00'))", null, "integer")); + verifyDataRows(result, rows(17)); + + result = executeQuery("select hour_of_day('2020-09-16 17:30:00')"); + verifySchema(result, schema("hour_of_day('2020-09-16 17:30:00')", null, "integer")); + verifyDataRows(result, rows(17)); + + result = executeQuery("select hour_of_day('17:30:00')"); + verifySchema(result, schema("hour_of_day('17:30:00')", null, "integer")); + verifyDataRows(result, rows(17)); + } + + @Test + public void testHourFunctionAliasesReturnTheSameResults() throws IOException { + JSONObject result1 = executeQuery("SELECT hour('11:30:00')"); + JSONObject result2 = executeQuery("SELECT hour_of_day('11:30:00')"); + verifyDataRows(result1, rows(11)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + + result1 = executeQuery(String.format( + "SELECT hour(datetime(CAST(time0 AS STRING))) FROM %s", TEST_INDEX_CALCS)); + result2 = executeQuery(String.format( + "SELECT hour_of_day(datetime(CAST(time0 AS STRING))) FROM %s", TEST_INDEX_CALCS)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + + result1 = executeQuery(String.format( + "SELECT hour(CAST(time0 AS STRING)) FROM %s", TEST_INDEX_CALCS)); + result2 = executeQuery(String.format( + "SELECT hour_of_day(CAST(time0 AS STRING)) FROM %s", TEST_INDEX_CALCS)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + + result1 = executeQuery(String.format( + "SELECT hour(CAST(datetime0 AS timestamp)) FROM %s", TEST_INDEX_CALCS)); + result2 = executeQuery(String.format( + "SELECT hour_of_day(CAST(datetime0 AS timestamp)) FROM %s", TEST_INDEX_CALCS)); + result1.getJSONArray("datarows").similar(result2.getJSONArray("datarows")); + } + @Test public void testMicrosecond() throws IOException { JSONObject result = executeQuery("select microsecond(timestamp('2020-09-16 17:30:00.123456'))"); diff --git a/sql/src/main/antlr/OpenSearchSQLParser.g4 b/sql/src/main/antlr/OpenSearchSQLParser.g4 index c9424eb09e..3fa223c584 100644 --- a/sql/src/main/antlr/OpenSearchSQLParser.g4 +++ b/sql/src/main/antlr/OpenSearchSQLParser.g4 @@ -439,6 +439,7 @@ dateTimeFunctionName | FROM_DAYS | FROM_UNIXTIME | HOUR + | HOUR_OF_DAY | MAKEDATE | MAKETIME | MICROSECOND diff --git a/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java b/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java index 97cf84b9ee..16118d2a32 100644 --- a/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java +++ b/sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java @@ -194,6 +194,11 @@ public void can_parse_now_like_functions(String name, Boolean hasFsp, Boolean ha assertNotNull(parser.parse("SELECT id FROM test WHERE " + String.join(" AND ", calls))); } + @Test + public void can_parse_hour_functions() { + assertNotNull(parser.parse("SELECT hour('2022-11-18 12:23:34')")); + assertNotNull(parser.parse("SELECT hour_of_day('12:23:34')")); + } @Test public void can_parse_week_of_year_functions() { From 7554fcc56019c076b2d828dd68a360dc67628b5e Mon Sep 17 00:00:00 2001 From: vamsi-amazon Date: Tue, 10 Jan 2023 17:00:34 -0800 Subject: [PATCH 46/55] [Prometheus]Bug fix for less than and greater than operators on @timestamp (#1267) Signed-off-by: vamsi-amazon Signed-off-by: vamsi-amazon --- docs/user/ppl/admin/prometheus_connector.rst | 1 + .../ppl/PrometheusDataSourceCommandsIT.java | 23 ++++ .../SeriesSelectionQueryBuilder.java | 25 +++-- .../TimeRangeParametersResolver.java | 12 ++- .../storage/PrometheusMetricTableTest.java | 100 +++++++++++++++++- .../TimeRangeParametersResolverTest.java | 30 ++++++ 6 files changed, 177 insertions(+), 14 deletions(-) create mode 100644 prometheus/src/test/java/org/opensearch/sql/prometheus/storage/querybuilders/TimeRangeParametersResolverTest.java diff --git a/docs/user/ppl/admin/prometheus_connector.rst b/docs/user/ppl/admin/prometheus_connector.rst index fd84f8114c..237181778e 100644 --- a/docs/user/ppl/admin/prometheus_connector.rst +++ b/docs/user/ppl/admin/prometheus_connector.rst @@ -111,6 +111,7 @@ Prometheus Connector Limitations * Only one aggregation is supported in stats command. * Span Expression is compulsory in stats command. * AVG, MAX, MIN, SUM, COUNT are the only aggregations supported in prometheus connector. +* Where clause only supports EQUALS(=) operation on metric dimensions and Comparative(> , < , >= , <=) Operations on @timestamp attribute. Example queries --------------- diff --git a/integ-test/src/test/java/org/opensearch/sql/ppl/PrometheusDataSourceCommandsIT.java b/integ-test/src/test/java/org/opensearch/sql/ppl/PrometheusDataSourceCommandsIT.java index 292ea26fc1..492a40066d 100644 --- a/integ-test/src/test/java/org/opensearch/sql/ppl/PrometheusDataSourceCommandsIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/ppl/PrometheusDataSourceCommandsIT.java @@ -12,6 +12,8 @@ import static org.opensearch.sql.util.MatcherUtils.schema; import static org.opensearch.sql.util.MatcherUtils.verifySchema; +import java.text.SimpleDateFormat; +import java.util.Date; import lombok.SneakyThrows; import org.apache.commons.lang3.StringUtils; import org.json.JSONArray; @@ -42,6 +44,27 @@ public void testSourceMetricCommand() { } } + @Test + @SneakyThrows + public void testSourceMetricCommandWithTimestamp() { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String query = "source=my_prometheus.prometheus_http_requests_total | where @timestamp > '" + + format.format(new Date(System.currentTimeMillis() - 3600 * 1000)) + + "' | sort + @timestamp | head 5"; + + JSONObject response = + executeQuery(query); + verifySchema(response, + schema(VALUE, "double"), + schema(TIMESTAMP, "timestamp"), + schema("handler", "string"), + schema("code", "string"), + schema("instance", "string"), + schema("job", "string")); + // Currently, data is not injected into prometheus, + // so asserting on result is not possible. Verifying only schema. + } + @Test @SneakyThrows public void testMetricAvgAggregationCommand() { diff --git a/prometheus/src/main/java/org/opensearch/sql/prometheus/storage/querybuilder/SeriesSelectionQueryBuilder.java b/prometheus/src/main/java/org/opensearch/sql/prometheus/storage/querybuilder/SeriesSelectionQueryBuilder.java index c749c12758..461b5341f8 100644 --- a/prometheus/src/main/java/org/opensearch/sql/prometheus/storage/querybuilder/SeriesSelectionQueryBuilder.java +++ b/prometheus/src/main/java/org/opensearch/sql/prometheus/storage/querybuilder/SeriesSelectionQueryBuilder.java @@ -17,6 +17,7 @@ import org.opensearch.sql.expression.ExpressionNodeVisitor; import org.opensearch.sql.expression.FunctionExpression; import org.opensearch.sql.expression.ReferenceExpression; +import org.opensearch.sql.expression.function.BuiltinFunctionName; /** * This class builds metric selection query from the filter condition @@ -47,23 +48,25 @@ public static String build(String metricName, Expression filterCondition) { static class SeriesSelectionExpressionNodeVisitor extends ExpressionNodeVisitor { @Override public String visitFunction(FunctionExpression func, Object context) { - if (func.getFunctionName().getFunctionName().equals("and")) { + if (BuiltinFunctionName.AND.getName().equals(func.getFunctionName())) { return func.getArguments().stream() .map(arg -> visitFunction((FunctionExpression) arg, context)) .filter(StringUtils::isNotEmpty) .collect(Collectors.joining(" , ")); - } else if (func.getFunctionName().getFunctionName().contains("=")) { - ReferenceExpression ref = (ReferenceExpression) func.getArguments().get(0); - if (!ref.getAttr().equals(TIMESTAMP)) { - return func.getArguments().get(0) - + func.getFunctionName().getFunctionName() - + func.getArguments().get(1); - } else { - return null; - } + } else if ((BuiltinFunctionName.LTE.getName().equals(func.getFunctionName()) + || BuiltinFunctionName.GTE.getName().equals(func.getFunctionName()) + || BuiltinFunctionName.LESS.getName().equals(func.getFunctionName()) + || BuiltinFunctionName.GREATER.getName().equals(func.getFunctionName())) + && ((ReferenceExpression) func.getArguments().get(0)).getAttr().equals(TIMESTAMP)) { + return null; + } else if (BuiltinFunctionName.EQUAL.getName().equals(func.getFunctionName())) { + return func.getArguments().get(0) + + func.getFunctionName().getFunctionName() + + func.getArguments().get(1); } else { throw new RuntimeException( - String.format("Prometheus Catalog doesn't support %s in where command.", + String.format("Prometheus Datasource doesn't support %s " + + "in where command.", func.getFunctionName().getFunctionName())); } } diff --git a/prometheus/src/main/java/org/opensearch/sql/prometheus/storage/querybuilder/TimeRangeParametersResolver.java b/prometheus/src/main/java/org/opensearch/sql/prometheus/storage/querybuilder/TimeRangeParametersResolver.java index 810ed71379..b462f6bafe 100644 --- a/prometheus/src/main/java/org/opensearch/sql/prometheus/storage/querybuilder/TimeRangeParametersResolver.java +++ b/prometheus/src/main/java/org/opensearch/sql/prometheus/storage/querybuilder/TimeRangeParametersResolver.java @@ -7,6 +7,8 @@ package org.opensearch.sql.prometheus.storage.querybuilder; +import static org.opensearch.sql.prometheus.data.constants.PrometheusFieldConstants.TIMESTAMP; + import java.util.Date; import lombok.NoArgsConstructor; import org.apache.commons.math3.util.Pair; @@ -15,6 +17,7 @@ import org.opensearch.sql.expression.ExpressionNodeVisitor; import org.opensearch.sql.expression.FunctionExpression; import org.opensearch.sql.expression.ReferenceExpression; +import org.opensearch.sql.expression.function.BuiltinFunctionName; @NoArgsConstructor public class TimeRangeParametersResolver extends ExpressionNodeVisitor { @@ -53,10 +56,13 @@ public Pair resolve(Expression filterCondition) { @Override public Void visitFunction(FunctionExpression func, Object context) { - if (func.getFunctionName().getFunctionName().contains("=")) { + if ((BuiltinFunctionName.LTE.getName().equals(func.getFunctionName()) + || BuiltinFunctionName.GTE.getName().equals(func.getFunctionName()) + || BuiltinFunctionName.LESS.getName().equals(func.getFunctionName()) + || BuiltinFunctionName.GREATER.getName().equals(func.getFunctionName()))) { ReferenceExpression ref = (ReferenceExpression) func.getArguments().get(0); Expression rightExpr = func.getArguments().get(1); - if (ref.getAttr().equals("@timestamp")) { + if (ref.getAttr().equals(TIMESTAMP)) { ExprValue literalValue = rightExpr.valueOf(); if (func.getFunctionName().getFunctionName().contains(">")) { startTime = literalValue.timestampValue().toEpochMilli() / 1000; @@ -67,6 +73,8 @@ public Void visitFunction(FunctionExpression func, Object context) { } } else { func.getArguments() + .stream() + .filter(arg -> arg instanceof FunctionExpression) .forEach(arg -> visitFunction((FunctionExpression) arg, context)); } return null; diff --git a/prometheus/src/test/java/org/opensearch/sql/prometheus/storage/PrometheusMetricTableTest.java b/prometheus/src/test/java/org/opensearch/sql/prometheus/storage/PrometheusMetricTableTest.java index b03b0b9ebc..01e3e8d899 100644 --- a/prometheus/src/test/java/org/opensearch/sql/prometheus/storage/PrometheusMetricTableTest.java +++ b/prometheus/src/test/java/org/opensearch/sql/prometheus/storage/PrometheusMetricTableTest.java @@ -696,7 +696,8 @@ void testImplementWithORConditionInWhereClause() { DSL.equal(DSL.ref("handler", STRING), DSL.literal(stringValue("/ready/"))))); RuntimeException exception = assertThrows(RuntimeException.class, () -> prometheusMetricTable.implement(plan)); - assertEquals("Prometheus Catalog doesn't support or in where command.", exception.getMessage()); + assertEquals("Prometheus Datasource doesn't support or in where command.", + exception.getMessage()); } @Test @@ -753,6 +754,66 @@ void testImplementWithRelationAndTimestampFilter() { assertEquals(List.of(VALUE, TIMESTAMP), outputFields); } + + @Test + void testImplementWithRelationAndTimestampLTFilter() { + List finalProjectList = new ArrayList<>(); + finalProjectList.add(DSL.named(VALUE, DSL.ref(VALUE, STRING))); + finalProjectList.add(DSL.named(TIMESTAMP, DSL.ref(TIMESTAMP, ExprCoreType.TIMESTAMP))); + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Long endTime = new Date(System.currentTimeMillis()).getTime(); + PrometheusMetricTable prometheusMetricTable = + new PrometheusMetricTable(client, "prometheus_http_total_requests"); + LogicalPlan logicalPlan = project(indexScan("prometheus_http_total_requests", + DSL.less(DSL.ref("@timestamp", ExprCoreType.TIMESTAMP), + DSL.literal( + fromObjectValue(dateFormat.format(new Date(endTime)), + ExprCoreType.TIMESTAMP))) + ), finalProjectList, null); + PhysicalPlan physicalPlan = prometheusMetricTable.implement(logicalPlan); + assertTrue(physicalPlan instanceof ProjectOperator); + assertTrue(((ProjectOperator) physicalPlan).getInput() instanceof PrometheusMetricScan); + PrometheusQueryRequest request + = ((PrometheusMetricScan) ((ProjectOperator) physicalPlan).getInput()).getRequest(); + assertEquals((3600 / 250) + "s", request.getStep()); + assertEquals("prometheus_http_total_requests", + request.getPromQl()); + List projectList = ((ProjectOperator) physicalPlan).getProjectList(); + List outputFields + = projectList.stream().map(NamedExpression::getName).collect(Collectors.toList()); + assertEquals(List.of(VALUE, TIMESTAMP), outputFields); + } + + + @Test + void testImplementWithRelationAndTimestampGTFilter() { + List finalProjectList = new ArrayList<>(); + finalProjectList.add(DSL.named(VALUE, DSL.ref(VALUE, STRING))); + finalProjectList.add(DSL.named(TIMESTAMP, DSL.ref(TIMESTAMP, ExprCoreType.TIMESTAMP))); + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Long endTime = new Date(System.currentTimeMillis()).getTime(); + PrometheusMetricTable prometheusMetricTable = + new PrometheusMetricTable(client, "prometheus_http_total_requests"); + LogicalPlan logicalPlan = project(indexScan("prometheus_http_total_requests", + DSL.greater(DSL.ref("@timestamp", ExprCoreType.TIMESTAMP), + DSL.literal( + fromObjectValue(dateFormat.format(new Date(endTime)), + ExprCoreType.TIMESTAMP))) + ), finalProjectList, null); + PhysicalPlan physicalPlan = prometheusMetricTable.implement(logicalPlan); + assertTrue(physicalPlan instanceof ProjectOperator); + assertTrue(((ProjectOperator) physicalPlan).getInput() instanceof PrometheusMetricScan); + PrometheusQueryRequest request + = ((PrometheusMetricScan) ((ProjectOperator) physicalPlan).getInput()).getRequest(); + assertEquals((3600 / 250) + "s", request.getStep()); + assertEquals("prometheus_http_total_requests", + request.getPromQl()); + List projectList = ((ProjectOperator) physicalPlan).getProjectList(); + List outputFields + = projectList.stream().map(NamedExpression::getName).collect(Collectors.toList()); + assertEquals(List.of(VALUE, TIMESTAMP), outputFields); + } + @Test void testOptimize() { PrometheusQueryRequest prometheusQueryRequest = new PrometheusQueryRequest(); @@ -803,4 +864,41 @@ void testImplementPrometheusQueryWithBackQuotedFieldNamesInStatsQuery() { prometheusQueryRequest.getPromQl()); } + + @Test + void testImplementPrometheusQueryWithFilterQuery() { + + PrometheusMetricTable prometheusMetricTable = + new PrometheusMetricTable(client, "prometheus_http_total_requests"); + + // IndexScanAgg without Filter + PhysicalPlan plan = prometheusMetricTable.implement( + indexScan("prometheus_http_total_requests", + DSL.and(DSL.equal(DSL.ref("code", STRING), DSL.literal(stringValue("200"))), + DSL.equal(DSL.ref("handler", STRING), DSL.literal(stringValue("/ready/")))))); + + assertTrue(plan instanceof PrometheusMetricScan); + PrometheusQueryRequest prometheusQueryRequest = + ((PrometheusMetricScan) plan).getRequest(); + assertEquals( + "prometheus_http_total_requests{code=\"200\" , handler=\"/ready/\"}", + prometheusQueryRequest.getPromQl()); + } + + @Test + void testImplementPrometheusQueryWithUnsupportedFilterQuery() { + + PrometheusMetricTable prometheusMetricTable = + new PrometheusMetricTable(client, "prometheus_http_total_requests"); + + RuntimeException exception = assertThrows(RuntimeException.class, + () -> prometheusMetricTable.implement(indexScan("prometheus_http_total_requests", + DSL.and(DSL.lte(DSL.ref("code", STRING), DSL.literal(stringValue("200"))), + DSL.equal(DSL.ref("handler", STRING), DSL.literal(stringValue("/ready/"))))))); + assertEquals("Prometheus Datasource doesn't support <= in where command.", + exception.getMessage()); + } + + + } diff --git a/prometheus/src/test/java/org/opensearch/sql/prometheus/storage/querybuilders/TimeRangeParametersResolverTest.java b/prometheus/src/test/java/org/opensearch/sql/prometheus/storage/querybuilders/TimeRangeParametersResolverTest.java new file mode 100644 index 0000000000..73839e2152 --- /dev/null +++ b/prometheus/src/test/java/org/opensearch/sql/prometheus/storage/querybuilders/TimeRangeParametersResolverTest.java @@ -0,0 +1,30 @@ +/* + * + * * Copyright OpenSearch Contributors + * * SPDX-License-Identifier: Apache-2.0 + * + */ + +package org.opensearch.sql.prometheus.storage.querybuilders; + +import static org.opensearch.sql.data.model.ExprValueUtils.stringValue; +import static org.opensearch.sql.data.type.ExprCoreType.STRING; + +import org.apache.commons.math3.util.Pair; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.opensearch.sql.expression.DSL; +import org.opensearch.sql.prometheus.storage.querybuilder.TimeRangeParametersResolver; + +public class TimeRangeParametersResolverTest { + + @Test + void testTimeRangeParametersWithoutTimestampFilter() { + TimeRangeParametersResolver timeRangeParametersResolver = new TimeRangeParametersResolver(); + Pair result = timeRangeParametersResolver.resolve( + DSL.and(DSL.less(DSL.ref("code", STRING), DSL.literal(stringValue("200"))), + DSL.equal(DSL.ref("handler", STRING), DSL.literal(stringValue("/ready/"))))); + Assertions.assertNotNull(result); + Assertions.assertEquals(3600, result.getSecond() - result.getFirst()); + } +} From 0e78fb6a127e8327f6cf7b251d2e1a095c21e34c Mon Sep 17 00:00:00 2001 From: "opensearch-trigger-bot[bot]" <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Date: Wed, 11 Jan 2023 08:45:56 -0800 Subject: [PATCH 47/55] add 2.5 release notes (#1268) (#1274) - add 2.5 release notes Signed-off-by: YANGDB (cherry picked from commit fdcb8383af8ff00a9f4c026011f66ddb714df0ba) Co-authored-by: YANGDB --- .../opensearch-sql.release-notes-2.5.0.0.md | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 release-notes/opensearch-sql.release-notes-2.5.0.0.md diff --git a/release-notes/opensearch-sql.release-notes-2.5.0.0.md b/release-notes/opensearch-sql.release-notes-2.5.0.0.md new file mode 100644 index 0000000000..69d9fe14fd --- /dev/null +++ b/release-notes/opensearch-sql.release-notes-2.5.0.0.md @@ -0,0 +1,91 @@ +Compatible with OpenSearch and OpenSearch Dashboards Version 2.5.0 + +### Features + +### Refactoring +* The SQL Plugin was rearranged into separate repositories ([#640](https://github.com/opensearch-project/sql/issues/640) [#1263](https://github.com/opensearch-project/sql/issues/1263)) +* Added SQL-Jdbc repository https://github.com/opensearch-project/sql-jdbc ([#964](https://github.com/opensearch-project/sql/issues/964)) +* Added SQL-Jdbc maven artifact as a dependency ([#2692](https://github.com/opensearch-project/opensearch-build/issues/2692)) +* Added SQL-Odbc repository https://github.com/opensearch-project/sql-odbc ([#965](https://github.com/opensearch-project/sql/issues/965)) +* Added SQL-Cli repository https://github.com/opensearch-project/sql-cli ([#966](https://github.com/opensearch-project/sql/issues/966)) +* Added Workbench repository https://github.com/opensearch-project/dashboards-query-workbench ([#1266](https://github.com/opensearch-project/sql/issues/1266)) + +### Enhancements + +* Add low-level create table and table exists API ([#834](https://github.com/opensearch-project/sql/issues/834)) +* Add time window and window assigner ([#950](https://github.com/opensearch-project/sql/issues/950)) +* Add valueOf() to Expression ([#1055](https://github.com/opensearch-project/sql/issues/1055)) +* Add Statement, QueryExecution and QueryManager ([#845](https://github.com/opensearch-project/sql/issues/845)) +* Add Streaming Source Impl ([#994](https://github.com/opensearch-project/sql/issues/994)) +* Add watermark generator ([#959](https://github.com/opensearch-project/sql/issues/959)) +* Add stream context and window trigger ([#958](https://github.com/opensearch-project/sql/issues/958)) +* Add micro batch streaming execution ([#1044](https://github.com/opensearch-project/sql/pull/1044)) +* Add Streaming Plan Impl ([#1068](https://github.com/opensearch-project/sql/issues/1068)) +* Add CBRT to the V2 engine ([#1081](https://github.com/opensearch-project/sql/issues/1081)) +* Add CBRT function to the PPL ([#1097](https://github.com/opensearch-project/sql/issues/1097)) +* Add timeout option to SQL CLI tool. ([#1076](https://github.com/opensearch-project/sql/issues/1076)) +* Add Day_Of_Year Function To OpenSearch ([#1128](https://github.com/opensearch-project/sql/issues/1128)) +* Add Week_Of_Year Function To OpenSearch ([#1127](https://github.com/opensearch-project/sql/issues/1127)) +* Add Month_Of_Year Function To OpenSearch ([#1129](https://github.com/opensearch-project/sql/issues/1129)) +* Add Minute_Of_Day Function To SQL Plugin ([#1207](https://github.com/opensearch-project/sql/issues/1207) [#1214](https://github.com/opensearch-project/sql/issues/1214)) +* Add Second_Of_Minute Function As An Alias Of The Second Function ([#1231](https://github.com/opensearch-project/sql/issues/1231) [#1237](https://github.com/opensearch-project/sql/issues/1237)) +* Add Support For Legacy Syntax For Match Function In New Engine ([#1090](https://github.com/opensearch-project/sql/issues/1090)) +* Add MatchPhraseQuery As Alternate Syntax for Match_Phrase Function ([#1103](https://github.com/opensearch-project/sql/issues/1103)) +* Use query execution start time as the value of now-like functions. ([#1047](https://github.com/opensearch-project/sql/issues/1047)) +* Add Support for Alternate Legacy MULTIMATCH syntax ([#1102](https://github.com/opensearch-project/sql/issues/1102)) +* Add position() function to V2 engine ([#1121](https://github.com/opensearch-project/sql/issues/1121)) +* Add position() string function to PPL ([#1147](https://github.com/opensearch-project/sql/issues/1147)) +* Add support for wildcard_query function to the new engine ([#156](https://github.com/opensearch-project/sql/issues/156) [#1108](https://github.com/opensearch-project/sql/issues/1108)) +* Add reverse() string function to V2 SQL Engine([#1154](https://github.com/opensearch-project/sql/issues/1154)) +* Add table write operator and builder ([#1094](https://github.com/opensearch-project/sql/issues/1094)) +* Add BETWEEN expression in v2 engine ([#1163](https://github.com/opensearch-project/sql/issues/1163)) +* Adding UTC_DATE, UTC_TIME, UTC_TIMESTAMP ([#1193](https://github.com/opensearch-project/sql/issues/1193) [#1198](https://github.com/opensearch-project/sql/issues/1198)) +* Validate field and fields parameters in relevance search functions ([#1067](https://github.com/opensearch-project/sql/issues/1067) [#1199](https://github.com/opensearch-project/sql/issues/1199)) +* Add `TIMEDIFF` and `DATEDIFF` functions. ([#131](https://github.com/opensearch-project/sql/issues/131) [#1195](https://github.com/opensearch-project/sql/issues/1195) [#1234](https://github.com/opensearch-project/sql/issues/1234)) +* Add functions `ADDTIME` and `SUBTIME`. ([#132](https://github.com/opensearch-project/sql/issues/132) [#1194](https://github.com/opensearch-project/sql/issues/1194) [#1252](https://github.com/opensearch-project/sql/issues/1252)) +* Add Day_Of_Week Function As An Alias Of DayOfWeek ([#190](https://github.com/opensearch-project/sql/issues/190) [#1228](https://github.com/opensearch-project/sql/issues/1228) [#1239](https://github.com/opensearch-project/sql/issues/1239)) +* Add Minute_Of_Hour Function As An Alias Of Minute Function ([#1253](https://github.com/opensearch-project/sql/issues/1253)) +* Add support for long value return for CEIL, CEILING and FLOOR math functions ([#1205](https://github.com/opensearch-project/sql/issues/1205)) +* Add Alternate Syntax For Match_Query And Other Functions ([#1166](https://github.com/opensearch-project/sql/issues/1166)) +* Add Support For `TIME` Type in DAY_OF_YEAR Functions ([#199](https://github.com/opensearch-project/sql/issues/199) [#1223](https://github.com/opensearch-project/sql/issues/1223) [1#258](https://github.com/opensearch-project/sql/issues/1258)) +* Add Day_Of_Month Function As An Alias Of DayOfMonth ([#1227](https://github.com/opensearch-project/sql/issues/1227) [#1265](https://github.com/opensearch-project/sql/issues/1265)) +* Add security patch for CVE-2020-15250 ([#1095](https://github.com/opensearch-project/sql/issues/1095)) +* Add security patch for CVE-2022-45868 ([#1107](https://github.com/opensearch-project/sql/issues/1107)) +* Add Hour_Of_Day Function As An Alias Of Hour ([#1226](https://github.com/opensearch-project/sql/issues/1226) [#1270](https://github.com/opensearch-project/sql/issues/1270)) + +### Bug Fixes + +* Fix `FLOAT` -> `DOUBLE` cast. ([#1025](https://github.com/opensearch-project/sql/issues/1025)) +* Fix error messaging from prometheus. ([#1029](https://github.com/opensearch-project/sql/issues/1029) [#1037](https://github.com/opensearch-project/sql/issues/1037)) +* Add `query` function as alternate syntax to `query_string` function ([#1010](https://github.com/opensearch-project/sql/issues/1010)) +* Deprecate span collector ([#990](https://github.com/opensearch-project/sql/issues/990)) +* back quote fix ([#1041](https://github.com/opensearch-project/sql/issues/1041) [#1050](https://github.com/opensearch-project/sql/issues/1050)) +* Update DATE and TIME functions to parse string input as datetime ([#991](https://github.com/opensearch-project/sql/issues/991)) +* Integ tests fix for arm64 ([#1069](https://github.com/opensearch-project/sql/issues/1069)) +* Fix history file usage in SQL CLI tool. ([#1077](https://github.com/opensearch-project/sql/issues/1077)) +* Update Jackson to 2.14.1 and fix dependency resolution issues ([#1150](https://github.com/opensearch-project/sql/issues/1150)) +* Change LIKE operator case-insensitive match ([#1160](https://github.com/opensearch-project/sql/issues/1160)) +* Fix arithmetic operator precedence ([#1172](https://github.com/opensearch-project/sql/issues/1172) [#1188](https://github.com/opensearch-project/sql/issues/1188)) +* Fix back quoted alias of FROM subquery ([#1189](https://github.com/opensearch-project/sql/issues/1189) [#1208](https://github.com/opensearch-project/sql/issues/1208)) +* Fix truncate function ([#1197](https://github.com/opensearch-project/sql/issues/1197) [#1213](https://github.com/opensearch-project/sql/issues/1213)) +* Allow common keywords and scalar function name used as identifier ([#1191](https://github.com/opensearch-project/sql/issues/1191) [#1212](https://github.com/opensearch-project/sql/issues/1212)) +* Suppress report uploading failure in CI. ([#1180](https://github.com/opensearch-project/sql/issues/1180) [#1220](https://github.com/opensearch-project/sql/issues/1220)) +* Fixed error with single timestamp query ([#1244](https://github.com/opensearch-project/sql/issues/1244) [#1246](https://github.com/opensearch-project/sql/issues/1246) [#1249](https://github.com/opensearch-project/sql/issues/1249)) +* Support JOIN query on object field with unexpanded name ([#1229](https://github.com/opensearch-project/sql/issues/1229) [#1250](https://github.com/opensearch-project/sql/issues/1250)) +* Bug fix for less than and greater than operators on @timestamp ([#1267](https://github.com/opensearch-project/sql/issues/1267) [#1272](https://github.com/opensearch-project/sql/issues/1267)) + +### Infrastructure + +* Change ApplicationContext lifecycle to per node level ([#822](https://github.com/opensearch-project/sql/issues/822)) +* Catalog to Datasource changes ([#1027](https://github.com/opensearch-project/sql/issues/1027) [#1049](https://github.com/opensearch-project/sql/issues/1049) [#1086](https://github.com/opensearch-project/sql/issues/1086)) +* Bump jackson to 2.14.0 ([#1058](https://github.com/opensearch-project/sql/issues/1058)) +* Add metadatalog interface and default in memory implementation ([#974](https://github.com/opensearch-project/sql/issues/974)) +* Decouple function repository and DSL from IoC container for use anywhere ([#1085](https://github.com/opensearch-project/sql/issues/1085)) +* Move DataSourceServiceImpl to core module ([#1084](https://github.com/opensearch-project/sql/issues/1084)) +* Improve pushdown optimization and logical to physical transformation ([#1091](https://github.com/opensearch-project/sql/issues/1091)) +* Using jackson and jackson_databind version defined in OpenSearch ([#1169](https://github.com/opensearch-project/sql/issues/1169) [#1173](https://github.com/opensearch-project/sql/issues/1173)) +* Add BWC tests for running against distribution bundle. ([#1209](https://github.com/opensearch-project/sql/issues/1209)) + +### Documentation +* Support opensearch-sql:run and update developer_guide doc ([#1099](https://github.com/opensearch-project/sql/issues/1099)) +* Updated MAINTAINERS.md to match recommended opensearch-project format. ([#1224](https://github.com/opensearch-project/sql/issues/1224) [#1233](https://github.com/opensearch-project/sql/issues/1233)) From c6a59f76b3518c1b0e78428b33635e5ec91d2df9 Mon Sep 17 00:00:00 2001 From: MitchellGale-BitQuill <104795536+MitchellGale-BitQuill@users.noreply.github.com> Date: Wed, 11 Jan 2023 11:55:46 -0800 Subject: [PATCH 48/55] Adding mutation testing to build gradle with PiTest (#1204) Signed-off-by: MitchellGale-BitQuill Signed-off-by: Yury-Fridlyand Co-authored-by: Yury-Fridlyand --- .github/workflows/sql-test-and-build-workflow.yml | 6 ++++++ DEVELOPER_GUIDE.rst | 4 ++++ core/build.gradle | 10 ++++++++++ opensearch/build.gradle | 10 ++++++++++ 4 files changed, 30 insertions(+) diff --git a/.github/workflows/sql-test-and-build-workflow.yml b/.github/workflows/sql-test-and-build-workflow.yml index 14ce737bc3..a7159ea411 100644 --- a/.github/workflows/sql-test-and-build-workflow.yml +++ b/.github/workflows/sql-test-and-build-workflow.yml @@ -44,6 +44,12 @@ jobs: - name: Build with Gradle run: ./gradlew --continue build ${{ matrix.entry.os_build_args }} + - name: PiTest with Gradle + run: | + ./gradlew :core:pitest + ./gradlew :opensearch:pitest + + - name: Run backward compatibility tests if: ${{ matrix.entry.os == 'ubuntu-latest' }} run: ./scripts/bwctest.sh diff --git a/DEVELOPER_GUIDE.rst b/DEVELOPER_GUIDE.rst index bf9e603930..83e2c398c5 100644 --- a/DEVELOPER_GUIDE.rst +++ b/DEVELOPER_GUIDE.rst @@ -220,8 +220,12 @@ Most of the time you just need to run ./gradlew build which will make sure you p - Run all unit tests. * - ./gradlew :integ-test:integTest - Run all integration test (this takes time). + * - ./gradlew :doctest:doctest + - Run doctests * - ./gradlew build - Build plugin by run all tasks above (this takes time). + * - ./gradlew pitest + - Run PiTest mutation testing (see more info in `#1204 `_) For integration test, you can use ``-Dtests.class`` “UT full path” to run a task individually. For example ``./gradlew :integ-test:integTest -Dtests.class="*QueryIT"``. diff --git a/core/build.gradle b/core/build.gradle index 791d64df65..2438470518 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -26,6 +26,7 @@ plugins { id 'java-library' id "io.freefair.lombok" id 'jacoco' + id 'info.solidsoft.pitest' version '1.9.0' id 'java-test-fixtures' } @@ -33,6 +34,15 @@ repositories { mavenCentral() } +pitest { + targetClasses = ['org.opensearch.sql.*'] + pitestVersion = '1.9.0' + threads = 4 + outputFormats = ['HTML', 'XML'] + timestampedReports = false + junit5PluginVersion = '1.0.0' +} + dependencies { api group: 'com.google.guava', name: 'guava', version: '31.0.1-jre' api group: 'org.apache.commons', name: 'commons-lang3', version: '3.10' diff --git a/opensearch/build.gradle b/opensearch/build.gradle index 6eeab86fff..04fee22255 100644 --- a/opensearch/build.gradle +++ b/opensearch/build.gradle @@ -26,6 +26,7 @@ plugins { id 'java-library' id "io.freefair.lombok" id 'jacoco' + id 'info.solidsoft.pitest' version '1.9.0' } dependencies { @@ -47,6 +48,15 @@ dependencies { testImplementation group: 'org.opensearch.test', name: 'framework', version: "${opensearch_version}" } +pitest { + targetClasses = ['org.opensearch.sql.*'] + pitestVersion = '1.9.0' + threads = 4 + outputFormats = ['HTML', 'XML'] + timestampedReports = false + junit5PluginVersion = '1.0.0' +} + test { useJUnitPlatform() testLogging { From 9d4a8418bbfbead54cf848d247b5b6af513300d7 Mon Sep 17 00:00:00 2001 From: YANGDB Date: Fri, 13 Jan 2023 11:37:52 -0800 Subject: [PATCH 49/55] port repo split to main (#1232) * remove sub-folders which upgraded as new repositories - sql-cli - sql-odbc - sql-jdbc - dashboards-query-workbench - add additional workflow run triggers - move the BI tests to jdbc/odbc - move the sql-cli outside and clone for the doctest build Signed-off-by: YANGDB * Merge remote-tracking branch 'upstream/main' Signed-off-by: YANGDB * add sql-jdbc dependendcy to gradle Signed-off-by: YANGDB * Disallow unquoted literals in `LIKE` clause in `DESCRIBE` statement (#1181) * Allow quoted literals only in `DESCRIBE` and `SHOW` clauses. Tests. Signed-off-by: Yury-Fridlyand * Fix doctest after rebase. Signed-off-by: Yury-Fridlyand * Fix doctest after rebase. - Typo fix. Signed-off-by: Yury-Fridlyand * Update syntax section. Signed-off-by: Yury-Fridlyand Signed-off-by: Yury-Fridlyand Signed-off-by: Yury-Fridlyand Creation and updating 2.x branch (#6) * Create the 2.x branch * Add workflow_dispatch: to github CLI Signed-off-by: YANGDB * remove sub-folders which upgraded as new repositories - sql-cli - sql-odbc - sql-jdbc - dashboards-query-workbench Signed-off-by: YANG-DB * add additional workflow run triggers Signed-off-by: YANGDB * Merge remote-tracking branch 'upstream/main' - move the BI tests to jdbc/odbc - move the sql-cli outside and clone for the doctest build Signed-off-by: YANGDB * Disallow unquoted literals in `LIKE` clause in `DESCRIBE` statement (#1181) (#3) * Allow quoted literals only in `DESCRIBE` and `SHOW` clauses. Tests. Signed-off-by: Yury-Fridlyand * Fix doctest after rebase. Signed-off-by: Yury-Fridlyand * Fix doctest after rebase. - Typo fix. Signed-off-by: Yury-Fridlyand * Update syntax section. Signed-off-by: Yury-Fridlyand Signed-off-by: Yury-Fridlyand Signed-off-by: Yury-Fridlyand Signed-off-by: Yury-Fridlyand Signed-off-by: Yury-Fridlyand Co-authored-by: Yury-Fridlyand Signed-off-by: YANG-DB Signed-off-by: YANGDB Signed-off-by: Yury-Fridlyand Signed-off-by: Yury-Fridlyand Co-authored-by: lior perry Co-authored-by: yang-db Co-authored-by: Yury-Fridlyand --- .github/workflows/bi-connectors.yml | 55 - .../sql-cli-test-and-build-workflow.yml | 71 - .../sql-jdbc-test-and-build-workflow.yml | 45 - .github/workflows/sql-odbc-main.yml | 179 - .../workflows/sql-test-and-build-workflow.yml | 8 +- .../sql-workbench-test-and-build-workflow.yml | 79 - .../AmazonOpenSearchService.md | 79 - .../AmazonOpenSearchService.mez | Bin 33419 -> 0 bytes bi-connectors/PowerBIConnector/CHANGELOG.md | 11 - .../PowerBIConnector/OpenSearchProject.md | 79 - .../PowerBIConnector/OpenSearchProject.mez | Bin 33387 -> 0 bytes .../PBIDSExamples/sqlodbc_import.pbids | 14 - bi-connectors/PowerBIConnector/README.md | 23 - .../PowerBIConnector/img/pbi_auth.png | Bin 21585 -> 0 bytes .../PowerBIConnector/img/pbi_auth_amz.png | Bin 25850 -> 0 bytes .../img/pbi_connection_string_options.png | Bin 30412 -> 0 bytes .../img/pbi_connection_string_options_amz.png | Bin 31719 -> 0 bytes .../PowerBIConnector/img/pbi_data_preview.png | Bin 102916 -> 0 bytes .../pbi_disable_parallel_loading_tables.png | Bin 53093 -> 0 bytes .../PowerBIConnector/img/pbi_error_conn.png | Bin 14402 -> 0 bytes .../img/pbi_error_driver_not_installed.png | Bin 21120 -> 0 bytes .../img/pbi_gateway_connector_path.png | Bin 62259 -> 0 bytes .../img/pbi_gateway_status.png | Bin 64274 -> 0 bytes .../img/pbi_publish_report.png | Bin 778429 -> 0 bytes .../img/pbi_publish_status.png | Bin 21163 -> 0 bytes .../img/pbi_select_connector.png | Bin 70126 -> 0 bytes .../img/pbi_select_connector_amz.png | Bin 70089 -> 0 bytes .../img/pbi_select_workspace.png | Bin 10949 -> 0 bytes .../img/pbi_service_cluster_setting.png | Bin 91851 -> 0 bytes .../img/pbi_service_data_source.png | Bin 64441 -> 0 bytes .../img/pbi_service_data_source_success.png | Bin 36258 -> 0 bytes .../img/pbi_service_dataset_gateway.png | Bin 107067 -> 0 bytes .../img/pbi_service_dataset_refresh.png | Bin 57597 -> 0 bytes .../pbi_service_dataset_refresh_history.png | Bin 23171 -> 0 bytes .../img/pbi_service_edit_reoprt.png | Bin 951711 -> 0 bytes .../img/pbi_service_modified_report.png | Bin 1412270 -> 0 bytes .../img/pbi_service_setting.png | Bin 32300 -> 0 bytes .../PowerBIConnector/img/pbi_settings.png | Bin 71079 -> 0 bytes .../PowerBIConnector/img/pbi_simple_graph.png | Bin 277846 -> 0 bytes .../img/pbi_third_party_warning.png | Bin 75297 -> 0 bytes .../img/pbi_third_party_warning_amz.png | Bin 79178 -> 0 bytes .../power_bi_service_support.md | 82 - .../PowerBIConnector/power_bi_support.md | 100 - .../PowerBIConnector/src/Diagnostics.pqm | 275 - .../PowerBIConnector/src/OdbcConstants.pqm | 1253 - .../PowerBIConnector/src/OpenSearch16.png | Bin 1777 -> 0 bytes .../PowerBIConnector/src/OpenSearch20.png | Bin 1896 -> 0 bytes .../PowerBIConnector/src/OpenSearch24.png | Bin 1999 -> 0 bytes .../PowerBIConnector/src/OpenSearch32.png | Bin 2213 -> 0 bytes .../PowerBIConnector/src/OpenSearch40.png | Bin 2496 -> 0 bytes .../PowerBIConnector/src/OpenSearch48.png | Bin 2698 -> 0 bytes .../PowerBIConnector/src/OpenSearch64.png | Bin 3166 -> 0 bytes .../PowerBIConnector/src/OpenSearch80.png | Bin 3648 -> 0 bytes .../src/OpenSearchProject.mproj | 125 - .../PowerBIConnector/src/OpenSearchProject.pq | 263 - .../src/OpenSearchProject.query.pq | 324 - .../PowerBIConnector/src/resources.resx | 129 - bi-connectors/TableauConnector/README.md | 32 - .../img/tableau_columns_list.png | Bin 195300 -> 0 bytes .../img/tableau_data_preview.png | Bin 274510 -> 0 bytes .../TableauConnector/img/tableau_dialog.png | Bin 14928 -> 0 bytes .../img/tableau_download_taco.png | Bin 6504 -> 0 bytes .../TableauConnector/img/tableau_graph.png | Bin 307317 -> 0 bytes .../img/tableau_select_connector.png | Bin 108490 -> 0 bytes .../img/tableau_select_table.png | Bin 151028 -> 0 bytes .../img/tableau_table_list.png | Bin 98838 -> 0 bytes .../TableauConnector/opensearch_sql_jdbc.taco | Bin 6319 -> 0 bytes .../TableauConnector/src/META-INF/MANIFEST.MF | 3 - .../src/connection-fields.xml | 44 - .../src/connection-metadata.xml | 6 - .../TableauConnector/src/connectionBuilder.js | 28 - .../src/connectionResolver.tdr | 26 - .../TableauConnector/src/dialect.tdd | 494 - .../TableauConnector/src/manifest.xml | 53 - .../TableauConnector/tableau_support.md | 68 - .../TableauConnector/tdvt_test_results.csv | 19370 ---------------- build.gradle | 1 - doctest/bootstrap.sh | 2 +- doctest/build.gradle | 13 +- integ-test/build.gradle | 20 +- sql-cli/.gitignore | 73 - sql-cli/CODE_OF_CONDUCT.md | 24 - sql-cli/CONTRIBUTING.md | 116 - sql-cli/LICENSE.TXT | 202 - sql-cli/MAINTAINERS.md | 16 - sql-cli/NOTICE | 11 - sql-cli/README.md | 149 - sql-cli/THIRD-PARTY | 590 - sql-cli/development_guide.md | 61 - .../odfe-sql-cli.release-notes-1.7.0.0.md | 66 - .../odfe-sql-cli.release-notes-1.8.0.0.md | 5 - .../odfe-sql-cli.release-notes-1.9.0.0.md | 13 - sql-cli/requirements-dev.txt | 5 - sql-cli/screenshots/usage.gif | Bin 3574603 -> 0 bytes sql-cli/setup.py | 66 - sql-cli/src/opensearch_sql_cli/__init__.py | 6 - .../src/opensearch_sql_cli/conf/__init__.py | 0 sql-cli/src/opensearch_sql_cli/conf/clirc | 97 - sql-cli/src/opensearch_sql_cli/config.py | 76 - sql-cli/src/opensearch_sql_cli/formatter.py | 97 - sql-cli/src/opensearch_sql_cli/main.py | 134 - .../opensearch_sql_cli/opensearch_buffer.py | 38 - .../opensearch_connection.py | 189 - .../opensearch_literals/__init__.py | 0 .../opensearch_literals.json | 58 - .../opensearch_sql_cli/opensearch_style.py | 87 - .../opensearch_sql_cli/opensearchsql_cli.py | 191 - sql-cli/src/opensearch_sql_cli/utils.py | 12 - sql-cli/tests/__init__.py | 0 sql-cli/tests/conftest.py | 39 - sql-cli/tests/pytest.ini | 2 - sql-cli/tests/test_config.py | 33 - sql-cli/tests/test_data/accounts.json | 1000 - sql-cli/tests/test_formatter.py | 200 - sql-cli/tests/test_main.py | 81 - sql-cli/tests/test_opensearch_connection.py | 146 - sql-cli/tests/test_opensearchsql_cli.py | 70 - sql-cli/tests/test_plan.md | 59 - sql-cli/tests/utils.py | 82 - sql-cli/tox.ini | 7 - sql-jdbc/.gitignore | 6 - sql-jdbc/CODE_OF_CONDUCT.md | 25 - sql-jdbc/CONTRIBUTING.md | 102 - sql-jdbc/LICENSE | 201 - sql-jdbc/MAINTAINERS.md | 13 - sql-jdbc/NOTICE | 12 - sql-jdbc/README.md | 531 - sql-jdbc/THIRD-PARTY | 341 - sql-jdbc/build.gradle | 204 - sql-jdbc/docs/img/tableau_connection.PNG | Bin 30189 -> 0 bytes sql-jdbc/docs/img/tableau_database.PNG | Bin 424628 -> 0 bytes sql-jdbc/docs/img/tableau_graph.PNG | Bin 462753 -> 0 bytes sql-jdbc/docs/tableau.md | 88 - sql-jdbc/gradle/wrapper/gradle-wrapper.jar | Bin 56177 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - sql-jdbc/gradlew | 185 - sql-jdbc/gradlew.bat | 96 - ...lasticsearch-jdbc.release-notes-1.7.0.0.md | 3 - ...lasticsearch-jdbc.release-notes-1.8.0.0.md | 3 - ...lasticsearch-jdbc.release-notes-1.9.0.0.md | 4 - ...distro-elasticsearch-jdbc.release-notes.md | 84 - sql-jdbc/settings.gradle | 7 - .../org/opensearch/jdbc/ConnectionImpl.java | 513 - .../opensearch/jdbc/DatabaseMetaDataImpl.java | 1279 - .../main/java/org/opensearch/jdbc/Driver.java | 103 - .../opensearch/jdbc/OpenSearchConnection.java | 17 - .../opensearch/jdbc/OpenSearchDataSource.java | 177 - .../opensearch/jdbc/OpenSearchVersion.java | 17 - .../jdbc/PreparedStatementImpl.java | 497 - .../org/opensearch/jdbc/ResultSetImpl.java | 1473 -- .../jdbc/ResultSetMetaDataImpl.java | 162 - .../org/opensearch/jdbc/StatementImpl.java | 342 - .../jdbc/auth/AuthenticationType.java | 29 - .../jdbc/config/AuthConnectionProperty.java | 46 - .../AwsCredentialsProviderProperty.java | 36 - .../jdbc/config/BoolConnectionProperty.java | 35 - .../jdbc/config/ConnectionConfig.java | 570 - .../jdbc/config/ConnectionProperty.java | 162 - .../config/ConnectionPropertyException.java | 38 - .../jdbc/config/FetchSizeProperty.java | 15 - .../jdbc/config/HostConnectionProperty.java | 20 - ...ostnameVerificationConnectionProperty.java | 21 - .../jdbc/config/IntConnectionProperty.java | 38 - .../KeyStoreLocationConnectionProperty.java | 20 - .../KeyStorePasswordConnectionProperty.java | 20 - .../KeyStoreTypeConnectionProperty.java | 20 - .../config/LogLevelConnectionProperty.java | 45 - .../config/LogOutputConnectionProperty.java | 17 - .../LoginTimeoutConnectionProperty.java | 31 - .../config/PasswordConnectionProperty.java | 17 - .../jdbc/config/PathConnectionProperty.java | 40 - .../jdbc/config/PortConnectionProperty.java | 33 - .../jdbc/config/RegionConnectionProperty.java | 20 - .../RequestCompressionConnectionProperty.java | 16 - .../jdbc/config/StringConnectionProperty.java | 34 - .../TrustSelfSignedConnectionProperty.java | 16 - .../TrustStoreLocationConnectionProperty.java | 20 - .../TrustStorePasswordConnectionProperty.java | 20 - .../TrustStoreTypeConnectionProperty.java | 20 - .../jdbc/config/UseSSLConnectionProperty.java | 16 - .../jdbc/config/UserConnectionProperty.java | 17 - .../opensearch/jdbc/internal/JdbcWrapper.java | 27 - .../org/opensearch/jdbc/internal/Version.java | 48 - .../exceptions/ObjectClosedException.java | 36 - .../jdbc/internal/results/ColumnMetaData.java | 77 - .../jdbc/internal/results/Cursor.java | 60 - .../opensearch/jdbc/internal/results/Row.java | 21 - .../jdbc/internal/results/Schema.java | 54 - .../jdbc/internal/util/AwsHostNameUtil.java | 72 - .../jdbc/internal/util/JavaUtil.java | 14 - .../jdbc/internal/util/SqlParser.java | 88 - .../jdbc/internal/util/UrlParser.java | 133 - .../jdbc/logging/FilePrintWriterLogger.java | 32 - .../org/opensearch/jdbc/logging/Layout.java | 11 - .../org/opensearch/jdbc/logging/LogLevel.java | 83 - .../org/opensearch/jdbc/logging/Logger.java | 140 - .../jdbc/logging/LoggerFactory.java | 33 - .../jdbc/logging/LoggingSource.java | 86 - .../opensearch/jdbc/logging/NoOpLogger.java | 128 - .../jdbc/logging/PrintWriterLogger.java | 115 - .../jdbc/logging/StandardLayout.java | 30 - .../jdbc/protocol/ClusterMetadata.java | 17 - .../jdbc/protocol/ColumnDescriptor.java | 26 - .../jdbc/protocol/ConnectionResponse.java | 11 - .../jdbc/protocol/JdbcDateTimeFormatter.java | 32 - .../jdbc/protocol/JdbcQueryParam.java | 28 - .../jdbc/protocol/JdbcQueryRequest.java | 69 - .../opensearch/jdbc/protocol/Parameter.java | 14 - .../opensearch/jdbc/protocol/Protocol.java | 20 - .../jdbc/protocol/ProtocolFactory.java | 14 - .../jdbc/protocol/QueryRequest.java | 19 - .../jdbc/protocol/QueryResponse.java | 26 - .../jdbc/protocol/RequestError.java | 15 - .../InternalServerErrorException.java | 40 - .../MalformedResponseException.java | 30 - .../exceptions/ResponseException.java | 53 - .../jdbc/protocol/http/HttpException.java | 56 - .../protocol/http/HttpResponseHandler.java | 15 - .../protocol/http/JdbcCursorQueryRequest.java | 65 - .../protocol/http/JsonClusterMetadata.java | 51 - .../protocol/http/JsonConnectionResponse.java | 23 - .../protocol/http/JsonCursorHttpProtocol.java | 57 - .../http/JsonCursorHttpProtocolFactory.java | 31 - .../protocol/http/JsonCursorQueryRequest.java | 47 - .../jdbc/protocol/http/JsonHttpProtocol.java | 111 - .../http/JsonHttpProtocolFactory.java | 26 - .../http/JsonHttpResponseHandler.java | 148 - .../protocol/http/JsonOpenSearchVersion.java | 60 - .../jdbc/protocol/http/JsonQueryRequest.java | 46 - .../jdbc/protocol/http/JsonQueryResponse.java | 246 - .../opensearch/jdbc/transport/Transport.java | 15 - .../jdbc/transport/TransportException.java | 29 - .../jdbc/transport/TransportFactory.java | 15 - .../ApacheHttpClientConnectionFactory.java | 150 - .../transport/http/ApacheHttpTransport.java | 261 - .../http/ApacheHttpTransportFactory.java | 26 - .../jdbc/transport/http/HttpParam.java | 27 - .../jdbc/transport/http/HttpTransport.java | 21 - .../jdbc/transport/http/JclLoggerAdapter.java | 116 - .../transport/http/LoggingInputStream.java | 149 - .../LoggingManagedHttpClientConnection.java | 126 - .../transport/http/LoggingOutputStream.java | 108 - .../AWSRequestSigningApacheInterceptor.java | 176 - .../jdbc/types/BaseTypeConverter.java | 63 - .../org/opensearch/jdbc/types/BinaryType.java | 32 - .../opensearch/jdbc/types/BooleanType.java | 48 - .../org/opensearch/jdbc/types/ByteType.java | 50 - .../org/opensearch/jdbc/types/DateType.java | 88 - .../org/opensearch/jdbc/types/DoubleType.java | 52 - .../org/opensearch/jdbc/types/FloatType.java | 57 - .../opensearch/jdbc/types/IntegerType.java | 53 - .../org/opensearch/jdbc/types/LongType.java | 63 - .../org/opensearch/jdbc/types/NumberType.java | 48 - .../opensearch/jdbc/types/OpenSearchType.java | 221 - .../org/opensearch/jdbc/types/ShortType.java | 58 - .../org/opensearch/jdbc/types/StringType.java | 31 - .../org/opensearch/jdbc/types/TimeType.java | 64 - .../opensearch/jdbc/types/TimestampType.java | 108 - .../opensearch/jdbc/types/TypeConverter.java | 42 - .../opensearch/jdbc/types/TypeConverters.java | 308 - .../org/opensearch/jdbc/types/TypeHelper.java | 63 - .../UnrecognizedOpenSearchTypeException.java | 25 - .../META-INF/services/java.sql.Driver | 1 - .../org/opensearch/jdbc/ConnectionTests.java | 261 - .../java/org/opensearch/jdbc/CursorTests.java | 158 - .../org/opensearch/jdbc/DataSourceTests.java | 197 - .../jdbc/DatabaseMetaDataTests.java | 456 - .../java/org/opensearch/jdbc/DriverTests.java | 47 - .../jdbc/PreparedStatementTests.java | 198 - .../jdbc/ResultSetMetaDataTests.java | 51 - .../org/opensearch/jdbc/ResultSetTests.java | 269 - .../opensearch/jdbc/SSLClientAuthTests.java | 91 - .../opensearch/jdbc/SSLConnectionTests.java | 112 - .../jdbc/SSLHostnameVerificationTests.java | 95 - .../org/opensearch/jdbc/StatementTests.java | 156 - .../jdbc/config/ConnectionConfigTests.java | 895 - .../jdbc/internal/VersionMatchTest.java | 16 - .../internal/util/AwsHostnameUtilTests.java | 54 - .../jdbc/internal/util/SqlParserTests.java | 97 - .../jdbc/internal/util/UrlParserTests.java | 179 - .../jdbc/protocol/JsonHttpProtocolTests.java | 386 - .../http/JsonCursorQueryRequestTests.java | 30 - .../opensearch/jdbc/test/KeyValuePairs.java | 48 - .../test/PerClassWireMockServerExtension.java | 99 - .../test/PerTestWireMockServerExtension.java | 84 - .../org/opensearch/jdbc/test/TLSServer.java | 153 - .../opensearch/jdbc/test/TestResources.java | 57 - .../jdbc/test/UTCTimeZoneTestExtension.java | 32 - .../jdbc/test/WireMockServerHelpers.java | 69 - .../MockCloseableHttpResponseBuilder.java | 60 - .../jdbc/test/mocks/MockHttpTransport.java | 34 - .../jdbc/test/mocks/MockOpenSearch.java | 57 - .../jdbc/test/mocks/MockResultSet.java | 35 - .../test/mocks/MockResultSetMetaData.java | 341 - .../jdbc/test/mocks/MockResultSetRows.java | 125 - .../opensearch/jdbc/test/mocks/QueryMock.java | 233 - ...SRequestSigningApacheInterceptorTests.java | 103 - .../jdbc/types/BinaryTypeTests.java | 29 - .../opensearch/jdbc/types/ByteTypeTests.java | 107 - .../opensearch/jdbc/types/DateTypeTests.java | 92 - .../opensearch/jdbc/types/FloatTypeTest.java | 89 - .../jdbc/types/IntegerTypeTests.java | 99 - .../jdbc/types/KeywordTypeTests.java | 35 - .../opensearch/jdbc/types/LongTypeTests.java | 85 - .../opensearch/jdbc/types/ShortTypeTests.java | 97 - .../opensearch/jdbc/types/TimeTypeTest.java | 32 - .../jdbc/types/TimestampTypeTests.java | 115 - .../org/opensearch/jdbc/types/TypesTests.java | 23 - .../mock/jks/keystore_with_client_key.jks | Bin 2589 -> 0 bytes ...keystore_with_non_localhost_server_key.jks | Bin 2851 -> 0 bytes .../mock/jks/keystore_with_server_key.jks | Bin 2613 -> 0 bytes .../mock/jks/truststore_with_client_cert.jks | Bin 1178 -> 0 bytes .../mock/jks/truststore_with_server_cert.jks | Bin 1210 -> 0 bytes .../cursor/queryresponse_accounts_00.json | 30 - .../cursor/queryresponse_accounts_01.json | 17 - .../cursor/queryresponse_accounts_02.json | 17 - .../cursor/queryresponse_accounts_03.json | 16 - .../protocol/json/nyctaxis_queryrequest.json | 3 - .../queryresponse_internal_server_error.json | 8 - .../json/queryresponse_nullablefields.json | 85 - .../protocol/json/queryresponse_nyctaxis.json | 73 - .../protocol/json/queryresponse_sonested.json | 55 - .../queryresponse_with_alias_nyctaxis.json | 75 - sql-odbc/.clang-format | 16 - sql-odbc/.gitignore | 64 - sql-odbc/CODE_OF_CONDUCT.md | 25 - sql-odbc/CONTRIBUTING.md | 102 - sql-odbc/LICENSE.txt | 961 - sql-odbc/MAINTAINERS.md | 13 - sql-odbc/NOTICE | 12 - sql-odbc/README.md | 102 - sql-odbc/THIRD-PARTY | 1775 -- sql-odbc/build_mac_debug64.sh | 18 - sql-odbc/build_mac_release64.sh | 18 - sql-odbc/build_win_debug32.ps1 | 6 - sql-odbc/build_win_debug64.ps1 | 6 - sql-odbc/build_win_release32.ps1 | 6 - sql-odbc/build_win_release64.ps1 | 6 - sql-odbc/docs/dev/BUILD_INSTRUCTIONS.md | 137 - sql-odbc/docs/dev/Pagination.md | 28 - ...opensearch_dashboards_sample_data_types.md | 72 - .../example_config_files/example_tdc_file.tdc | 9 - .../dev/example_config_files/opensearch.yml | 5 - .../opensearch_dashboards.yml | 9 - .../docs/dev/img/async_result_retrieval.png | Bin 155274 -> 0 bytes sql-odbc/docs/dev/img/data_flow.png | Bin 15414 -> 0 bytes sql-odbc/docs/dev/run_tests.md | 111 - .../sequence_diagrams/SQLDriverConnect.png | Bin 64842 -> 0 bytes .../sequence_diagrams/SQLDriverConnect.txt | 14 - .../dev/sequence_diagrams/SQLExecDirect.png | Bin 44714 -> 0 bytes .../dev/sequence_diagrams/SQLExecDirect.txt | 12 - sql-odbc/docs/test/data_connection_wizard.md | 34 - sql-odbc/docs/test/excel_connection.md | 20 - sql-odbc/docs/test/exporting_csv_files.md | 22 - .../test/img/data_connection_wizard_dsn.png | Bin 18831 -> 0 bytes .../img/data_connection_wizard_enable.png | Bin 46768 -> 0 bytes .../img/data_connection_wizard_load_data.png | Bin 416757 -> 0 bytes ...connection_wizard_save_connection_file.png | Bin 22000 -> 0 bytes .../img/data_connection_wizard_select.png | Bin 47810 -> 0 bytes .../img/data_connection_wizard_select_dsn.png | Bin 18807 -> 0 bytes ...ata_connection_wizard_select_worksheet.png | Bin 14506 -> 0 bytes .../img/data_connection_wizard_table_list.png | Bin 20117 -> 0 bytes sql-odbc/docs/test/img/export_loaded_data.png | Bin 411719 -> 0 bytes .../docs/test/img/export_multiple_sheets.png | Bin 9893 -> 0 bytes sql-odbc/docs/test/img/export_save_as_csv.png | Bin 21562 -> 0 bytes .../test/img/from_odbc_advanced_options.png | Bin 20901 -> 0 bytes .../img/from_odbc_advanced_options_auth.png | Bin 24607 -> 0 bytes .../from_odbc_advanced_options_load_data.png | Bin 95358 -> 0 bytes sql-odbc/docs/test/img/from_odbc_auth.png | Bin 22378 -> 0 bytes sql-odbc/docs/test/img/from_odbc_dsn.png | Bin 19644 -> 0 bytes .../docs/test/img/from_odbc_loaded_data.png | Bin 153832 -> 0 bytes .../docs/test/img/from_odbc_table_list.png | Bin 63294 -> 0 bytes .../test/img/microsoft_query_add_tables.png | Bin 9517 -> 0 bytes ...ry_disable_use_the_query_wizard_option.png | Bin 27222 -> 0 bytes .../test/img/microsoft_query_import_data.png | Bin 14912 -> 0 bytes .../test/img/microsoft_query_loaded_data.png | Bin 38772 -> 0 bytes .../img/microsoft_query_select_colums.png | Bin 78957 -> 0 bytes .../img/microsoft_query_select_tables.png | Bin 18093 -> 0 bytes .../img/microsoft_query_table_options.png | Bin 11051 -> 0 bytes sql-odbc/docs/test/img/odbc_data_source.png | Bin 71569 -> 0 bytes .../test/img/query_wizard_choose_coulms.png | Bin 30703 -> 0 bytes ...ard_enable_use_the_query_wizard_option.png | Bin 25278 -> 0 bytes .../test/img/query_wizard_error_popup.png | Bin 9893 -> 0 bytes .../test/img/query_wizard_filter_data.png | Bin 40316 -> 0 bytes .../docs/test/img/query_wizard_finish.png | Bin 24502 -> 0 bytes .../test/img/query_wizard_import_data.png | Bin 14901 -> 0 bytes .../test/img/query_wizard_loaded_data.png | Bin 150283 -> 0 bytes .../test/img/query_wizard_select_tables.png | Bin 50918 -> 0 bytes .../docs/test/img/query_wizard_sort_order.png | Bin 35855 -> 0 bytes .../test/img/query_wizard_table_options.png | Bin 15732 -> 0 bytes .../docs/test/img/refresh_add_datarow.png | Bin 64596 -> 0 bytes .../docs/test/img/refresh_data_preview.png | Bin 47191 -> 0 bytes sql-odbc/docs/test/img/refresh_load_data.png | Bin 49785 -> 0 bytes .../docs/test/img/refresh_updated_data.png | Bin 99709 -> 0 bytes .../docs/test/img/select_microsoft_query.png | Bin 52219 -> 0 bytes .../microsoft_excel_manual_test_plan.xlsx | Bin 154172 -> 0 bytes .../docs/test/microsoft_query_connection.md | 30 - .../docs/test/odbc_data_source_connection.md | 41 - .../docs/test/power_bi_manual_test_plan.xlsx | Bin 84014 -> 0 bytes sql-odbc/docs/test/query_wizard_connection.md | 36 - sql-odbc/docs/test/refresh_data.md | 19 - sql-odbc/docs/user/configuration_options.md | 40 - .../docs/user/img/driver_default_config.png | Bin 161655 -> 0 bytes sql-odbc/docs/user/img/dsn_default_config.png | Bin 152006 -> 0 bytes .../docs/user/img/excel_advanced_option.png | Bin 20892 -> 0 bytes sql-odbc/docs/user/img/excel_auth.png | Bin 21245 -> 0 bytes sql-odbc/docs/user/img/excel_credentials.png | Bin 43554 -> 0 bytes sql-odbc/docs/user/img/excel_data_load.png | Bin 1247317 -> 0 bytes sql-odbc/docs/user/img/excel_data_preview.png | Bin 124159 -> 0 bytes .../user/img/excel_data_preview_error.png | Bin 30978 -> 0 bytes .../docs/user/img/excel_data_preview_mac.png | Bin 1748750 -> 0 bytes sql-odbc/docs/user/img/excel_export.png | Bin 38975 -> 0 bytes sql-odbc/docs/user/img/excel_export_csv.png | Bin 585956 -> 0 bytes sql-odbc/docs/user/img/excel_iodbc_auth.png | Bin 28745 -> 0 bytes sql-odbc/docs/user/img/excel_iodbc_dsn.png | Bin 409223 -> 0 bytes .../docs/user/img/excel_iodbc_test_dsn.png | Bin 46512 -> 0 bytes sql-odbc/docs/user/img/excel_load_data.png | Bin 359117 -> 0 bytes sql-odbc/docs/user/img/excel_refresh.png | Bin 22613 -> 0 bytes sql-odbc/docs/user/img/excel_refresh_mac.png | Bin 92998 -> 0 bytes .../docs/user/img/excel_select_database.png | Bin 85773 -> 0 bytes sql-odbc/docs/user/img/excel_select_dsn.png | Bin 8456 -> 0 bytes .../docs/user/img/excel_select_dsn_mac.png | Bin 139972 -> 0 bytes sql-odbc/docs/user/img/excel_select_odbc.png | Bin 60405 -> 0 bytes .../docs/user/img/excel_select_worksheet.png | Bin 62435 -> 0 bytes sql-odbc/docs/user/img/excel_table_list.png | Bin 186258 -> 0 bytes sql-odbc/docs/user/img/test_dsn_configure.png | Bin 131427 -> 0 bytes sql-odbc/docs/user/img/test_dsn_success.png | Bin 38499 -> 0 bytes sql-odbc/docs/user/img/win_configure_dsn.png | Bin 25387 -> 0 bytes .../user/img/win_configure_dsn_values.png | Bin 40194 -> 0 bytes .../docs/user/img/win_odbc_data_sources.png | Bin 34831 -> 0 bytes sql-odbc/docs/user/img/win_system_dsn.png | Bin 137755 -> 0 bytes sql-odbc/docs/user/img/win_test_dsn.png | Bin 7700 -> 0 bytes sql-odbc/docs/user/img/win_user_dsn.png | Bin 73849 -> 0 bytes .../img/win_user_dsn_configure_options.png | Bin 22363 -> 0 bytes sql-odbc/docs/user/img/win_user_dsn_list.png | Bin 90650 -> 0 bytes .../user/img/win_user_dsn_select_driver.png | Bin 109712 -> 0 bytes sql-odbc/docs/user/mac_configure_dsn.md | 71 - sql-odbc/docs/user/microsoft_excel_support.md | 88 - .../docs/user/microsoft_excel_support_mac.md | 90 - sql-odbc/docs/user/windows_configure_dsn.md | 56 - .../libraries/VisualLeakDetector/COPYING.txt | 458 - .../bin/Microsoft.DTfW.DHL.manifest | 7 - .../VisualLeakDetector/bin/dbghelp.dll | Bin 1080656 -> 0 bytes .../VisualLeakDetector/bin/vld_x86.dll | Bin 343040 -> 0 bytes .../bin64/Microsoft.DTfW.DHL.manifest | 7 - .../VisualLeakDetector/bin64/dbghelp.dll | Bin 1369936 -> 0 bytes .../VisualLeakDetector/bin64/vld_x64.dll | Bin 467968 -> 0 bytes .../VisualLeakDetector/include/vld.h | 350 - .../VisualLeakDetector/include/vld_def.h | 49 - .../libraries/VisualLeakDetector/lib/vld.lib | Bin 6744 -> 0 bytes .../VisualLeakDetector/lib64/vld.lib | Bin 6638 -> 0 bytes sql-odbc/libraries/rabbit/LICENSE | 20 - sql-odbc/libraries/rabbit/README | 5 - sql-odbc/libraries/rabbit/include/rabbit.hpp | 1347 -- .../rapidjson/include/rapidjson/allocators.h | 271 - .../rapidjson/include/rapidjson/document.h | 2575 -- .../include/rapidjson/encodedstream.h | 299 - .../rapidjson/include/rapidjson/encodings.h | 716 - .../rapidjson/include/rapidjson/error/en.h | 74 - .../rapidjson/include/rapidjson/error/error.h | 155 - .../include/rapidjson/filereadstream.h | 99 - .../include/rapidjson/filewritestream.h | 104 - .../rapidjson/include/rapidjson/fwd.h | 151 - .../include/rapidjson/internal/biginteger.h | 290 - .../include/rapidjson/internal/diyfp.h | 258 - .../include/rapidjson/internal/dtoa.h | 245 - .../include/rapidjson/internal/ieee754.h | 78 - .../include/rapidjson/internal/itoa.h | 304 - .../include/rapidjson/internal/meta.h | 181 - .../include/rapidjson/internal/pow10.h | 55 - .../include/rapidjson/internal/regex.h | 701 - .../include/rapidjson/internal/stack.h | 230 - .../include/rapidjson/internal/strfunc.h | 55 - .../include/rapidjson/internal/strtod.h | 269 - .../include/rapidjson/internal/swap.h | 46 - .../include/rapidjson/istreamwrapper.h | 115 - .../include/rapidjson/memorybuffer.h | 70 - .../include/rapidjson/memorystream.h | 71 - .../include/rapidjson/msinttypes/inttypes.h | 316 - .../include/rapidjson/msinttypes/stdint.h | 300 - .../include/rapidjson/ostreamwrapper.h | 81 - .../rapidjson/include/rapidjson/pointer.h | 1367 -- .../include/rapidjson/prettywriter.h | 255 - .../rapidjson/include/rapidjson/rapidjson.h | 615 - .../rapidjson/include/rapidjson/reader.h | 1879 -- .../rapidjson/include/rapidjson/schema.h | 2015 -- .../rapidjson/include/rapidjson/stream.h | 179 - .../include/rapidjson/stringbuffer.h | 117 - .../rapidjson/include/rapidjson/writer.h | 610 - sql-odbc/libraries/rapidjson/license.txt | 57 - ...distro-elasticsearch-odbc.release-notes.md | 13 - .../sql-odbc.release-notes-1.7.0.0.md | 48 - .../sql-odbc.release-notes-1.8.0.0.md | 9 - .../sql-odbc.release-notes-1.9.0.0.md | 22 - sql-odbc/run_cppcheck.bat | 4 - sql-odbc/run_cppcheck.sh | 15 - sql-odbc/run_test_runner.bat | 17 - sql-odbc/run_test_runner.sh | 17 - sql-odbc/scripts/build_driver.ps1 | 19 - sql-odbc/scripts/build_installer.ps1 | 21 - sql-odbc/scripts/build_windows.ps1 | 39 - sql-odbc/scripts/prepare_ci_output.ps1 | 20 - sql-odbc/src/CMakeLists.txt | 150 - sql-odbc/src/DSNInstaller/CMakeLists.txt | 8 - sql-odbc/src/DSNInstaller/dsn_installer.cpp | 209 - sql-odbc/src/IntegrationTests/CMakeLists.txt | 24 - .../ITODBCAwsAuth/CMakeLists.txt | 20 - .../IntegrationTests/ITODBCAwsAuth/pch.cpp | 6 - .../src/IntegrationTests/ITODBCAwsAuth/pch.h | 8 - .../ITODBCAwsAuth/test_aws_auth_dsn.reg | 17 - .../ITODBCAwsAuth/test_odbc.ini | 8 - .../ITODBCAwsAuth/test_odbc_aws_auth.cpp | 116 - .../ITODBCAwsAuth/test_odbcinst.ini | 6 - .../ITODBCCatalog/CMakeLists.txt | 19 - .../ITODBCCatalog/packages.config | 4 - .../IntegrationTests/ITODBCCatalog/pch.cpp | 6 - .../src/IntegrationTests/ITODBCCatalog/pch.h | 8 - .../ITODBCCatalog/test_odbc_catalog.cpp | 663 - .../ITODBCConnection/CMakeLists.txt | 19 - .../ITODBCConnection/packages.config | 4 - .../IntegrationTests/ITODBCConnection/pch.cpp | 6 - .../IntegrationTests/ITODBCConnection/pch.h | 8 - .../ITODBCConnection/test_dsn.reg | 21 - .../ITODBCConnection/test_odbc.ini | 11 - .../ITODBCConnection/test_odbc_connection.cpp | 547 - .../ITODBCConnection/test_odbcinst.ini | 9 - .../ITODBCDescriptors/CMakeLists.txt | 19 - .../ITODBCDescriptors/packages.config | 4 - .../ITODBCDescriptors/pch.cpp | 6 - .../IntegrationTests/ITODBCDescriptors/pch.h | 8 - .../test_odbc_descriptors.cpp | 605 - .../ITODBCExecution/CMakeLists.txt | 18 - .../IntegrationTests/ITODBCExecution/pch.cpp | 6 - .../IntegrationTests/ITODBCExecution/pch.h | 8 - .../ITODBCExecution/test_odbc_execution.cpp | 388 - .../ITODBCHelper/CMakeLists.txt | 20 - .../ITODBCHelper/it_odbc_helper.cpp | 188 - .../ITODBCHelper/it_odbc_helper.h | 67 - .../ITODBCInfo/CMakeLists.txt | 19 - .../ITODBCInfo/packages.config | 4 - .../src/IntegrationTests/ITODBCInfo/pch.cpp | 6 - .../src/IntegrationTests/ITODBCInfo/pch.h | 8 - .../ITODBCInfo/test_odbc_info.cpp | 300 - .../ITODBCPagination/CMakeLists.txt | 19 - .../ITODBCPagination/packages.config | 4 - .../IntegrationTests/ITODBCPagination/pch.cpp | 6 - .../IntegrationTests/ITODBCPagination/pch.h | 8 - .../ITODBCPagination/test_odbc_pagination.cpp | 140 - .../ITODBCResults/CMakeLists.txt | 19 - .../ITODBCResults/packages.config | 4 - .../IntegrationTests/ITODBCResults/pch.cpp | 6 - .../src/IntegrationTests/ITODBCResults/pch.h | 8 - .../ITODBCResults/test_odbc_results.cpp | 1004 - .../ITODBCTableauQueries/CMakeLists.txt | 19 - .../ITODBCTableauQueries/packages.config | 4 - .../ITODBCTableauQueries/pch.cpp | 6 - .../ITODBCTableauQueries/pch.h | 8 - .../ITODBCTableauQueries/queries_all.txt | 216 - .../test_odbc_tableau_queries.cpp | 81 - sql-odbc/src/PerformanceTests/CMakeLists.txt | 10 - .../PTODBCExecution/CMakeLists.txt | 12 - .../performance_odbc_execution.cpp | 60 - .../PTODBCInfo/CMakeLists.txt | 20 - .../PTODBCInfo/packages.config | 4 - .../src/PerformanceTests/PTODBCInfo/pch.cpp | 6 - .../src/PerformanceTests/PTODBCInfo/pch.h | 8 - .../PTODBCInfo/performance_odbc_info.cpp | 131 - .../PTODBCResults/CMakeLists.txt | 18 - .../PTODBCResults/packages.config | 4 - .../PerformanceTests/PTODBCResults/pch.cpp | 6 - .../src/PerformanceTests/PTODBCResults/pch.h | 8 - .../performance_odbc_results.cpp | 287 - sql-odbc/src/TestRunner/mako_template.html | 381 - sql-odbc/src/TestRunner/test_exclude_list.txt | 2 - sql-odbc/src/TestRunner/test_runner.py | 304 - sql-odbc/src/UnitTests/CMakeLists.txt | 14 - sql-odbc/src/UnitTests/GoogleTest.LICENSE | 28 - .../src/UnitTests/UTAwsSdkCpp/CMakeLists.txt | 17 - .../src/UnitTests/UTAwsSdkCpp/packages.config | 4 - sql-odbc/src/UnitTests/UTAwsSdkCpp/pch.cpp | 6 - sql-odbc/src/UnitTests/UTAwsSdkCpp/pch.h | 8 - .../UTAwsSdkCpp/test_aws_sdk_cpp.cpp | 61 - sql-odbc/src/UnitTests/UTConn/CMakeLists.txt | 20 - sql-odbc/src/UnitTests/UTConn/packages.config | 4 - sql-odbc/src/UnitTests/UTConn/pch.cpp | 6 - sql-odbc/src/UnitTests/UTConn/pch.h | 8 - sql-odbc/src/UnitTests/UTConn/test_conn.cpp | 128 - .../UnitTests/UTConn/test_query_execution.cpp | 115 - .../UTCriticalSection/CMakeLists.txt | 19 - .../UTCriticalSection/packages.config | 4 - .../src/UnitTests/UTCriticalSection/pch.cpp | 6 - .../src/UnitTests/UTCriticalSection/pch.h | 8 - .../test_critical_section.cpp | 136 - .../src/UnitTests/UTHelper/CMakeLists.txt | 30 - .../UnitTests/UTHelper/unit_test_helper.cpp | 15 - .../src/UnitTests/UTHelper/unit_test_helper.h | 21 - .../src/UnitTests/UTRabbit/CMakeLists.txt | 17 - .../src/UnitTests/UTRabbit/packages.config | 4 - sql-odbc/src/UnitTests/UTRabbit/pch.cpp | 6 - sql-odbc/src/UnitTests/UTRabbit/pch.h | 8 - .../src/UnitTests/UTRabbit/test_rabbit.cpp | 268 - sql-odbc/src/autoconf.h.in | 2 - sql-odbc/src/installer/CMakeLists.txt | 93 - sql-odbc/src/installer/Resources/README.txt | 19 - sql-odbc/src/installer/Resources/Welcome.txt | 1 - .../src/installer/Resources/background.bmp | Bin 606776 -> 0 bytes .../Resources/background_darkaqua.bmp | Bin 606776 -> 0 bytes .../Resources/opensearch_sql_odbc.tdc | 9 - sql-odbc/src/installer/banner.bmp | Bin 122176 -> 0 bytes sql-odbc/src/installer/dialog.bmp | Bin 1122936 -> 0 bytes sql-odbc/src/installer/icon.ico | Bin 106292 -> 0 bytes sql-odbc/src/installer/patch.xml | 43 - sql-odbc/src/installer/postinstall | 27 - .../src/installer/remove-opensearch-dsn.sh | 26 - sql-odbc/src/modules/code-coverage.cmake | 610 - sql-odbc/src/opensearchenlist/CMakeLists.txt | 19 - .../src/opensearchenlist/msdtc_enlist.cpp | 1279 - .../src/opensearchenlist/opensearch_enlist.h | 34 - sql-odbc/src/sqlodbc/CMakeLists.txt | 62 - sql-odbc/src/sqlodbc/LICENSE.txt | 961 - sql-odbc/src/sqlodbc/bind.c | 687 - sql-odbc/src/sqlodbc/bind.h | 132 - sql-odbc/src/sqlodbc/catfunc.h | 220 - sql-odbc/src/sqlodbc/columninfo.c | 73 - sql-odbc/src/sqlodbc/columninfo.h | 49 - sql-odbc/src/sqlodbc/connection.c | 696 - sql-odbc/src/sqlodbc/convert.c | 2282 -- sql-odbc/src/sqlodbc/convert.h | 30 - sql-odbc/src/sqlodbc/descriptor.c | 574 - sql-odbc/src/sqlodbc/descriptor.h | 254 - sql-odbc/src/sqlodbc/dlg_specific.c | 506 - sql-odbc/src/sqlodbc/dlg_specific.h | 198 - sql-odbc/src/sqlodbc/dlg_wingui.c | 278 - sql-odbc/src/sqlodbc/drvconn.c | 320 - sql-odbc/src/sqlodbc/drvconn.h | 44 - sql-odbc/src/sqlodbc/environ.c | 547 - sql-odbc/src/sqlodbc/environ.h | 56 - sql-odbc/src/sqlodbc/execute.c | 134 - sql-odbc/src/sqlodbc/info.c | 1897 -- sql-odbc/src/sqlodbc/loadlib.c | 258 - sql-odbc/src/sqlodbc/loadlib.h | 35 - sql-odbc/src/sqlodbc/misc.c | 201 - sql-odbc/src/sqlodbc/misc.h | 93 - sql-odbc/src/sqlodbc/multibyte.c | 357 - sql-odbc/src/sqlodbc/multibyte.h | 124 - sql-odbc/src/sqlodbc/mylog.c | 527 - sql-odbc/src/sqlodbc/mylog.h | 142 - sql-odbc/src/sqlodbc/odbcapi.c | 1383 -- sql-odbc/src/sqlodbc/odbcapi30.c | 589 - sql-odbc/src/sqlodbc/odbcapi30w.c | 387 - sql-odbc/src/sqlodbc/odbcapiw.c | 1031 - sql-odbc/src/sqlodbc/opensearch_api30.c | 1842 -- sql-odbc/src/sqlodbc/opensearch_apifunc.h | 228 - .../src/sqlodbc/opensearch_communication.cpp | 1039 - .../src/sqlodbc/opensearch_communication.h | 102 - .../src/sqlodbc/opensearch_connection.cpp | 223 - sql-odbc/src/sqlodbc/opensearch_connection.h | 456 - .../src/sqlodbc/opensearch_driver_connect.cpp | 246 - .../src/sqlodbc/opensearch_driver_connect.h | 18 - sql-odbc/src/sqlodbc/opensearch_helper.cpp | 217 - sql-odbc/src/sqlodbc/opensearch_helper.h | 39 - sql-odbc/src/sqlodbc/opensearch_info.cpp | 1046 - sql-odbc/src/sqlodbc/opensearch_info.h | 49 - sql-odbc/src/sqlodbc/opensearch_odbc.c | 159 - sql-odbc/src/sqlodbc/opensearch_odbc.h | 663 - sql-odbc/src/sqlodbc/opensearch_odbc.rc | 257 - .../src/sqlodbc/opensearch_parse_result.cpp | 461 - .../src/sqlodbc/opensearch_parse_result.h | 31 - .../src/sqlodbc/opensearch_result_queue.cpp | 48 - .../src/sqlodbc/opensearch_result_queue.h | 29 - sql-odbc/src/sqlodbc/opensearch_semaphore.cpp | 89 - sql-odbc/src/sqlodbc/opensearch_semaphore.h | 31 - sql-odbc/src/sqlodbc/opensearch_statement.cpp | 335 - sql-odbc/src/sqlodbc/opensearch_statement.h | 23 - sql-odbc/src/sqlodbc/opensearch_types.c | 1515 -- sql-odbc/src/sqlodbc/opensearch_types.h | 340 - sql-odbc/src/sqlodbc/opensearch_utility.cpp | 110 - sql-odbc/src/sqlodbc/opensearch_utility.h | 30 - sql-odbc/src/sqlodbc/options.c | 705 - sql-odbc/src/sqlodbc/parse.c | 66 - sql-odbc/src/sqlodbc/qresult.c | 469 - sql-odbc/src/sqlodbc/qresult.h | 292 - sql-odbc/src/sqlodbc/resource.h | 67 - sql-odbc/src/sqlodbc/results.c | 1651 -- sql-odbc/src/sqlodbc/setup.c | 698 - sql-odbc/src/sqlodbc/statement.c | 1465 -- sql-odbc/src/sqlodbc/statement.h | 504 - sql-odbc/src/sqlodbc/tuple.c | 43 - sql-odbc/src/sqlodbc/tuple.h | 69 - sql-odbc/src/sqlodbc/unicode_support.h | 29 - sql-odbc/src/sqlodbc/version.h | 22 - sql-odbc/src/sqlodbc/win_setup.h | 28 - sql-odbc/src/sqlodbc/win_unicode.c | 1091 - sql-odbc/src/vcpkg.json | 12 - workbench/.cypress/integration/ui.spec.js | 247 - workbench/.cypress/plugins/index.js | 28 - workbench/.cypress/support/commands.js | 72 - workbench/.cypress/support/constants.js | 9 - workbench/.cypress/support/index.js | 31 - workbench/.cypress/tsconfig.json | 8 - workbench/.cypress/utils/constants.js | 99 - workbench/.gitignore | 5 - ....opensearch_dashboards-plugin-helpers.json | 11 - workbench/CODE_OF_CONDUCT.md | 3 - workbench/CONTRIBUTING.md | 59 - workbench/CONTRIBUTORS.md | 15 - workbench/DEVELOPER_GUIDE.md | 55 - workbench/LICENSE.TXT | 175 - workbench/NOTICE | 2 - workbench/README.md | 35 - workbench/THIRD-PARTY | 397 - workbench/babel.config.js | 12 - workbench/common/index.ts | 8 - workbench/cypress.json | 18 - workbench/opensearch_dashboards.json | 9 - workbench/package.json | 57 - workbench/public/ace-themes/sql_console.js | 16 - workbench/public/app.scss | 103 - workbench/public/application.tsx | 30 - .../public/components/Header/Header.test.tsx | 18 - workbench/public/components/Header/Header.tsx | 17 - .../Header/__snapshots__/Header.test.tsx.snap | 11 - .../Main/__snapshots__/main.test.tsx.snap | 2688 --- workbench/public/components/Main/index.ts | 7 - .../public/components/Main/main.test.tsx | 117 - workbench/public/components/Main/main.tsx | 755 - .../components/PPLPage/PPLPage.test.tsx | 59 - .../public/components/PPLPage/PPLPage.tsx | 158 - .../__snapshots__/PPLPage.test.tsx.snap | 387 - .../QueryLanguageSwitch/Switch.test.tsx | 20 - .../components/QueryLanguageSwitch/Switch.tsx | 55 - .../__snapshots__/Switch.test.tsx.snap | 68 - .../QueryResults/QueryResults.test.tsx | 229 - .../components/QueryResults/QueryResults.tsx | 407 - .../QueryResults/QueryResultsBody.test.tsx | 290 - .../QueryResults/QueryResultsBody.tsx | 938 - .../__snapshots__/QueryResults.test.tsx.snap | 18849 --------------- .../QueryResultsBody.test.tsx.snap | 14934 ------------ .../components/SQLPage/SQLPage.test.tsx | 62 - .../public/components/SQLPage/SQLPage.tsx | 165 - .../__snapshots__/SQLPage.test.tsx.snap | 385 - workbench/public/components/app.tsx | 51 - workbench/public/icons/minus.svg | 15 - workbench/public/icons/plus.svg | 18 - workbench/public/icons/sql.svg | 14 - workbench/public/index.scss | 142 - workbench/public/index.ts | 16 - workbench/public/less/main.less | 10 - workbench/public/plugin.ts | 42 - workbench/public/types.ts | 16 - workbench/public/utils/PanelWrapper.tsx | 15 - workbench/public/utils/constants.ts | 15 - workbench/public/utils/utils.ts | 150 - .../sql-workbench.release-notes-1.7.0.0.md | 51 - .../sql-workbench.release-notes-1.8.0.0.md | 12 - .../sql-workbench.release-notes-1.9.0.0.md | 11 - .../sql-workbench.release-notes-1.9.0.1.md | 4 - .../sql-workbench.release-notes-1.9.0.2.md | 4 - workbench/server/clusters/index.js | 9 - .../server/clusters/sql/createSqlCluster.js | 20 - workbench/server/clusters/sql/sqlPlugin.js | 94 - workbench/server/index.ts | 17 - workbench/server/plugin.ts | 50 - workbench/server/routes/index.ts | 20 - workbench/server/routes/query.ts | 141 - workbench/server/routes/translate.ts | 41 - workbench/server/services/QueryService.ts | 76 - workbench/server/services/TranslateService.ts | 74 - workbench/server/services/utils/constants.ts | 27 - workbench/server/types.ts | 10 - workbench/server/utils/constants.ts | 15 - workbench/test/jest.config.js | 41 - workbench/test/mocks/browserServicesMock.ts | 14 - workbench/test/mocks/httpClientMock.ts | 15 - workbench/test/mocks/index.ts | 11 - workbench/test/mocks/mockData.ts | 2336 -- workbench/test/mocks/styleMock.ts | 7 - workbench/test/polyfills.ts | 10 - workbench/test/polyfills/mutationObserver.js | 559 - workbench/test/setup.jest.ts | 42 - workbench/test/setupTests.ts | 7 - workbench/tsconfig.json | 17 - workbench/tslint.yaml | 29 - workbench/webpack.config.js | 43 - workbench/yarn.lock | 2900 --- 785 files changed, 18 insertions(+), 159767 deletions(-) delete mode 100644 .github/workflows/bi-connectors.yml delete mode 100644 .github/workflows/sql-cli-test-and-build-workflow.yml delete mode 100644 .github/workflows/sql-jdbc-test-and-build-workflow.yml delete mode 100644 .github/workflows/sql-odbc-main.yml delete mode 100644 .github/workflows/sql-workbench-test-and-build-workflow.yml delete mode 100644 bi-connectors/PowerBIConnector/AmazonOpenSearchService.md delete mode 100644 bi-connectors/PowerBIConnector/AmazonOpenSearchService.mez delete mode 100644 bi-connectors/PowerBIConnector/CHANGELOG.md delete mode 100644 bi-connectors/PowerBIConnector/OpenSearchProject.md delete mode 100644 bi-connectors/PowerBIConnector/OpenSearchProject.mez delete mode 100644 bi-connectors/PowerBIConnector/PBIDSExamples/sqlodbc_import.pbids delete mode 100644 bi-connectors/PowerBIConnector/README.md delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_auth.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_auth_amz.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_connection_string_options.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_connection_string_options_amz.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_data_preview.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_disable_parallel_loading_tables.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_error_conn.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_error_driver_not_installed.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_gateway_connector_path.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_gateway_status.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_publish_report.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_publish_status.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_select_connector.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_select_connector_amz.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_select_workspace.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_service_cluster_setting.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_service_data_source.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_service_data_source_success.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_service_dataset_gateway.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_service_dataset_refresh.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_service_dataset_refresh_history.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_service_edit_reoprt.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_service_modified_report.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_service_setting.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_settings.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_simple_graph.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_third_party_warning.png delete mode 100644 bi-connectors/PowerBIConnector/img/pbi_third_party_warning_amz.png delete mode 100644 bi-connectors/PowerBIConnector/power_bi_service_support.md delete mode 100644 bi-connectors/PowerBIConnector/power_bi_support.md delete mode 100644 bi-connectors/PowerBIConnector/src/Diagnostics.pqm delete mode 100644 bi-connectors/PowerBIConnector/src/OdbcConstants.pqm delete mode 100644 bi-connectors/PowerBIConnector/src/OpenSearch16.png delete mode 100644 bi-connectors/PowerBIConnector/src/OpenSearch20.png delete mode 100644 bi-connectors/PowerBIConnector/src/OpenSearch24.png delete mode 100644 bi-connectors/PowerBIConnector/src/OpenSearch32.png delete mode 100644 bi-connectors/PowerBIConnector/src/OpenSearch40.png delete mode 100644 bi-connectors/PowerBIConnector/src/OpenSearch48.png delete mode 100644 bi-connectors/PowerBIConnector/src/OpenSearch64.png delete mode 100644 bi-connectors/PowerBIConnector/src/OpenSearch80.png delete mode 100644 bi-connectors/PowerBIConnector/src/OpenSearchProject.mproj delete mode 100644 bi-connectors/PowerBIConnector/src/OpenSearchProject.pq delete mode 100644 bi-connectors/PowerBIConnector/src/OpenSearchProject.query.pq delete mode 100644 bi-connectors/PowerBIConnector/src/resources.resx delete mode 100644 bi-connectors/TableauConnector/README.md delete mode 100644 bi-connectors/TableauConnector/img/tableau_columns_list.png delete mode 100644 bi-connectors/TableauConnector/img/tableau_data_preview.png delete mode 100644 bi-connectors/TableauConnector/img/tableau_dialog.png delete mode 100644 bi-connectors/TableauConnector/img/tableau_download_taco.png delete mode 100644 bi-connectors/TableauConnector/img/tableau_graph.png delete mode 100644 bi-connectors/TableauConnector/img/tableau_select_connector.png delete mode 100644 bi-connectors/TableauConnector/img/tableau_select_table.png delete mode 100644 bi-connectors/TableauConnector/img/tableau_table_list.png delete mode 100644 bi-connectors/TableauConnector/opensearch_sql_jdbc.taco delete mode 100644 bi-connectors/TableauConnector/src/META-INF/MANIFEST.MF delete mode 100644 bi-connectors/TableauConnector/src/connection-fields.xml delete mode 100644 bi-connectors/TableauConnector/src/connection-metadata.xml delete mode 100644 bi-connectors/TableauConnector/src/connectionBuilder.js delete mode 100644 bi-connectors/TableauConnector/src/connectionResolver.tdr delete mode 100644 bi-connectors/TableauConnector/src/dialect.tdd delete mode 100644 bi-connectors/TableauConnector/src/manifest.xml delete mode 100644 bi-connectors/TableauConnector/tableau_support.md delete mode 100644 bi-connectors/TableauConnector/tdvt_test_results.csv delete mode 100644 sql-cli/.gitignore delete mode 100644 sql-cli/CODE_OF_CONDUCT.md delete mode 100644 sql-cli/CONTRIBUTING.md delete mode 100644 sql-cli/LICENSE.TXT delete mode 100644 sql-cli/MAINTAINERS.md delete mode 100644 sql-cli/NOTICE delete mode 100644 sql-cli/README.md delete mode 100644 sql-cli/THIRD-PARTY delete mode 100644 sql-cli/development_guide.md delete mode 100644 sql-cli/release-notes/odfe-sql-cli.release-notes-1.7.0.0.md delete mode 100644 sql-cli/release-notes/odfe-sql-cli.release-notes-1.8.0.0.md delete mode 100644 sql-cli/release-notes/odfe-sql-cli.release-notes-1.9.0.0.md delete mode 100644 sql-cli/requirements-dev.txt delete mode 100644 sql-cli/screenshots/usage.gif delete mode 100644 sql-cli/setup.py delete mode 100644 sql-cli/src/opensearch_sql_cli/__init__.py delete mode 100644 sql-cli/src/opensearch_sql_cli/conf/__init__.py delete mode 100644 sql-cli/src/opensearch_sql_cli/conf/clirc delete mode 100644 sql-cli/src/opensearch_sql_cli/config.py delete mode 100644 sql-cli/src/opensearch_sql_cli/formatter.py delete mode 100644 sql-cli/src/opensearch_sql_cli/main.py delete mode 100644 sql-cli/src/opensearch_sql_cli/opensearch_buffer.py delete mode 100644 sql-cli/src/opensearch_sql_cli/opensearch_connection.py delete mode 100644 sql-cli/src/opensearch_sql_cli/opensearch_literals/__init__.py delete mode 100644 sql-cli/src/opensearch_sql_cli/opensearch_literals/opensearch_literals.json delete mode 100644 sql-cli/src/opensearch_sql_cli/opensearch_style.py delete mode 100644 sql-cli/src/opensearch_sql_cli/opensearchsql_cli.py delete mode 100644 sql-cli/src/opensearch_sql_cli/utils.py delete mode 100644 sql-cli/tests/__init__.py delete mode 100644 sql-cli/tests/conftest.py delete mode 100644 sql-cli/tests/pytest.ini delete mode 100644 sql-cli/tests/test_config.py delete mode 100644 sql-cli/tests/test_data/accounts.json delete mode 100644 sql-cli/tests/test_formatter.py delete mode 100644 sql-cli/tests/test_main.py delete mode 100644 sql-cli/tests/test_opensearch_connection.py delete mode 100644 sql-cli/tests/test_opensearchsql_cli.py delete mode 100644 sql-cli/tests/test_plan.md delete mode 100644 sql-cli/tests/utils.py delete mode 100644 sql-cli/tox.ini delete mode 100644 sql-jdbc/.gitignore delete mode 100644 sql-jdbc/CODE_OF_CONDUCT.md delete mode 100644 sql-jdbc/CONTRIBUTING.md delete mode 100644 sql-jdbc/LICENSE delete mode 100644 sql-jdbc/MAINTAINERS.md delete mode 100644 sql-jdbc/NOTICE delete mode 100644 sql-jdbc/README.md delete mode 100644 sql-jdbc/THIRD-PARTY delete mode 100644 sql-jdbc/build.gradle delete mode 100644 sql-jdbc/docs/img/tableau_connection.PNG delete mode 100644 sql-jdbc/docs/img/tableau_database.PNG delete mode 100644 sql-jdbc/docs/img/tableau_graph.PNG delete mode 100644 sql-jdbc/docs/tableau.md delete mode 100644 sql-jdbc/gradle/wrapper/gradle-wrapper.jar delete mode 100644 sql-jdbc/gradle/wrapper/gradle-wrapper.properties delete mode 100755 sql-jdbc/gradlew delete mode 100644 sql-jdbc/gradlew.bat delete mode 100644 sql-jdbc/release-notes/opendistro-elasticsearch-jdbc.release-notes-1.7.0.0.md delete mode 100644 sql-jdbc/release-notes/opendistro-elasticsearch-jdbc.release-notes-1.8.0.0.md delete mode 100644 sql-jdbc/release-notes/opendistro-elasticsearch-jdbc.release-notes-1.9.0.0.md delete mode 100644 sql-jdbc/release-notes/opendistro-elasticsearch-jdbc.release-notes.md delete mode 100644 sql-jdbc/settings.gradle delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/ConnectionImpl.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/DatabaseMetaDataImpl.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/Driver.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/OpenSearchConnection.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/OpenSearchDataSource.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/OpenSearchVersion.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/PreparedStatementImpl.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/ResultSetImpl.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/ResultSetMetaDataImpl.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/StatementImpl.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/auth/AuthenticationType.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/AuthConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/AwsCredentialsProviderProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/BoolConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/ConnectionConfig.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/ConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/ConnectionPropertyException.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/FetchSizeProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/HostConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/HostnameVerificationConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/IntConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/KeyStoreLocationConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/KeyStorePasswordConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/KeyStoreTypeConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/LogLevelConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/LogOutputConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/LoginTimeoutConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/PasswordConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/PathConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/PortConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/RegionConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/RequestCompressionConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/StringConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/TrustSelfSignedConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/TrustStoreLocationConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/TrustStorePasswordConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/TrustStoreTypeConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/UseSSLConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/config/UserConnectionProperty.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/internal/JdbcWrapper.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/internal/Version.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/internal/exceptions/ObjectClosedException.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/internal/results/ColumnMetaData.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/internal/results/Cursor.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/internal/results/Row.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/internal/results/Schema.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/internal/util/AwsHostNameUtil.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/internal/util/JavaUtil.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/internal/util/SqlParser.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/internal/util/UrlParser.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/logging/FilePrintWriterLogger.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/logging/Layout.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/logging/LogLevel.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/logging/Logger.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/logging/LoggerFactory.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/logging/LoggingSource.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/logging/NoOpLogger.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/logging/PrintWriterLogger.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/logging/StandardLayout.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/ClusterMetadata.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/ColumnDescriptor.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/ConnectionResponse.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/JdbcDateTimeFormatter.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/JdbcQueryParam.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/JdbcQueryRequest.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/Parameter.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/Protocol.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/ProtocolFactory.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/QueryRequest.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/QueryResponse.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/RequestError.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/exceptions/InternalServerErrorException.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/exceptions/MalformedResponseException.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/exceptions/ResponseException.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/http/HttpException.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/http/HttpResponseHandler.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/http/JdbcCursorQueryRequest.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/http/JsonClusterMetadata.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/http/JsonConnectionResponse.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/http/JsonCursorHttpProtocol.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/http/JsonCursorHttpProtocolFactory.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/http/JsonCursorQueryRequest.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/http/JsonHttpProtocol.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/http/JsonHttpProtocolFactory.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/http/JsonHttpResponseHandler.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/http/JsonOpenSearchVersion.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/http/JsonQueryRequest.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/protocol/http/JsonQueryResponse.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/transport/Transport.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/transport/TransportException.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/transport/TransportFactory.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/transport/http/ApacheHttpClientConnectionFactory.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/transport/http/ApacheHttpTransport.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/transport/http/ApacheHttpTransportFactory.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/transport/http/HttpParam.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/transport/http/HttpTransport.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/transport/http/JclLoggerAdapter.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/transport/http/LoggingInputStream.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/transport/http/LoggingManagedHttpClientConnection.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/transport/http/LoggingOutputStream.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/transport/http/auth/aws/AWSRequestSigningApacheInterceptor.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/BaseTypeConverter.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/BinaryType.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/BooleanType.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/ByteType.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/DateType.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/DoubleType.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/FloatType.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/IntegerType.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/LongType.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/NumberType.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/OpenSearchType.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/ShortType.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/StringType.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/TimeType.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/TimestampType.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/TypeConverter.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/TypeConverters.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/TypeHelper.java delete mode 100644 sql-jdbc/src/main/java/org/opensearch/jdbc/types/UnrecognizedOpenSearchTypeException.java delete mode 100644 sql-jdbc/src/main/resources/META-INF/services/java.sql.Driver delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/ConnectionTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/CursorTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/DataSourceTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/DatabaseMetaDataTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/DriverTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/PreparedStatementTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/ResultSetMetaDataTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/ResultSetTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/SSLClientAuthTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/SSLConnectionTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/SSLHostnameVerificationTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/StatementTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/config/ConnectionConfigTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/internal/VersionMatchTest.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/internal/util/AwsHostnameUtilTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/internal/util/SqlParserTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/internal/util/UrlParserTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/protocol/JsonHttpProtocolTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/protocol/http/JsonCursorQueryRequestTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/test/KeyValuePairs.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/test/PerClassWireMockServerExtension.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/test/PerTestWireMockServerExtension.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/test/TLSServer.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/test/TestResources.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/test/UTCTimeZoneTestExtension.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/test/WireMockServerHelpers.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/test/mocks/MockCloseableHttpResponseBuilder.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/test/mocks/MockHttpTransport.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/test/mocks/MockOpenSearch.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/test/mocks/MockResultSet.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/test/mocks/MockResultSetMetaData.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/test/mocks/MockResultSetRows.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/test/mocks/QueryMock.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/transport/http/auth/aws/AWSRequestSigningApacheInterceptorTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/types/BinaryTypeTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/types/ByteTypeTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/types/DateTypeTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/types/FloatTypeTest.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/types/IntegerTypeTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/types/KeywordTypeTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/types/LongTypeTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/types/ShortTypeTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/types/TimeTypeTest.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/types/TimestampTypeTests.java delete mode 100644 sql-jdbc/src/test/java/org/opensearch/jdbc/types/TypesTests.java delete mode 100644 sql-jdbc/src/test/resources/mock/jks/keystore_with_client_key.jks delete mode 100644 sql-jdbc/src/test/resources/mock/jks/keystore_with_non_localhost_server_key.jks delete mode 100644 sql-jdbc/src/test/resources/mock/jks/keystore_with_server_key.jks delete mode 100644 sql-jdbc/src/test/resources/mock/jks/truststore_with_client_cert.jks delete mode 100644 sql-jdbc/src/test/resources/mock/jks/truststore_with_server_cert.jks delete mode 100644 sql-jdbc/src/test/resources/mock/protocol/json/cursor/queryresponse_accounts_00.json delete mode 100644 sql-jdbc/src/test/resources/mock/protocol/json/cursor/queryresponse_accounts_01.json delete mode 100644 sql-jdbc/src/test/resources/mock/protocol/json/cursor/queryresponse_accounts_02.json delete mode 100644 sql-jdbc/src/test/resources/mock/protocol/json/cursor/queryresponse_accounts_03.json delete mode 100644 sql-jdbc/src/test/resources/mock/protocol/json/nyctaxis_queryrequest.json delete mode 100644 sql-jdbc/src/test/resources/mock/protocol/json/queryresponse_internal_server_error.json delete mode 100644 sql-jdbc/src/test/resources/mock/protocol/json/queryresponse_nullablefields.json delete mode 100644 sql-jdbc/src/test/resources/mock/protocol/json/queryresponse_nyctaxis.json delete mode 100644 sql-jdbc/src/test/resources/mock/protocol/json/queryresponse_sonested.json delete mode 100644 sql-jdbc/src/test/resources/mock/protocol/json/queryresponse_with_alias_nyctaxis.json delete mode 100644 sql-odbc/.clang-format delete mode 100644 sql-odbc/.gitignore delete mode 100644 sql-odbc/CODE_OF_CONDUCT.md delete mode 100644 sql-odbc/CONTRIBUTING.md delete mode 100644 sql-odbc/LICENSE.txt delete mode 100644 sql-odbc/MAINTAINERS.md delete mode 100644 sql-odbc/NOTICE delete mode 100644 sql-odbc/README.md delete mode 100644 sql-odbc/THIRD-PARTY delete mode 100755 sql-odbc/build_mac_debug64.sh delete mode 100755 sql-odbc/build_mac_release64.sh delete mode 100644 sql-odbc/build_win_debug32.ps1 delete mode 100644 sql-odbc/build_win_debug64.ps1 delete mode 100644 sql-odbc/build_win_release32.ps1 delete mode 100644 sql-odbc/build_win_release64.ps1 delete mode 100644 sql-odbc/docs/dev/BUILD_INSTRUCTIONS.md delete mode 100644 sql-odbc/docs/dev/Pagination.md delete mode 100644 sql-odbc/docs/dev/datasets/opensearch_dashboards_sample_data_types.md delete mode 100644 sql-odbc/docs/dev/example_config_files/example_tdc_file.tdc delete mode 100644 sql-odbc/docs/dev/example_config_files/opensearch.yml delete mode 100644 sql-odbc/docs/dev/example_config_files/opensearch_dashboards.yml delete mode 100644 sql-odbc/docs/dev/img/async_result_retrieval.png delete mode 100644 sql-odbc/docs/dev/img/data_flow.png delete mode 100644 sql-odbc/docs/dev/run_tests.md delete mode 100644 sql-odbc/docs/dev/sequence_diagrams/SQLDriverConnect.png delete mode 100644 sql-odbc/docs/dev/sequence_diagrams/SQLDriverConnect.txt delete mode 100644 sql-odbc/docs/dev/sequence_diagrams/SQLExecDirect.png delete mode 100644 sql-odbc/docs/dev/sequence_diagrams/SQLExecDirect.txt delete mode 100644 sql-odbc/docs/test/data_connection_wizard.md delete mode 100644 sql-odbc/docs/test/excel_connection.md delete mode 100644 sql-odbc/docs/test/exporting_csv_files.md delete mode 100644 sql-odbc/docs/test/img/data_connection_wizard_dsn.png delete mode 100644 sql-odbc/docs/test/img/data_connection_wizard_enable.png delete mode 100644 sql-odbc/docs/test/img/data_connection_wizard_load_data.png delete mode 100644 sql-odbc/docs/test/img/data_connection_wizard_save_connection_file.png delete mode 100644 sql-odbc/docs/test/img/data_connection_wizard_select.png delete mode 100644 sql-odbc/docs/test/img/data_connection_wizard_select_dsn.png delete mode 100644 sql-odbc/docs/test/img/data_connection_wizard_select_worksheet.png delete mode 100644 sql-odbc/docs/test/img/data_connection_wizard_table_list.png delete mode 100644 sql-odbc/docs/test/img/export_loaded_data.png delete mode 100644 sql-odbc/docs/test/img/export_multiple_sheets.png delete mode 100644 sql-odbc/docs/test/img/export_save_as_csv.png delete mode 100644 sql-odbc/docs/test/img/from_odbc_advanced_options.png delete mode 100644 sql-odbc/docs/test/img/from_odbc_advanced_options_auth.png delete mode 100644 sql-odbc/docs/test/img/from_odbc_advanced_options_load_data.png delete mode 100644 sql-odbc/docs/test/img/from_odbc_auth.png delete mode 100644 sql-odbc/docs/test/img/from_odbc_dsn.png delete mode 100644 sql-odbc/docs/test/img/from_odbc_loaded_data.png delete mode 100644 sql-odbc/docs/test/img/from_odbc_table_list.png delete mode 100644 sql-odbc/docs/test/img/microsoft_query_add_tables.png delete mode 100644 sql-odbc/docs/test/img/microsoft_query_disable_use_the_query_wizard_option.png delete mode 100644 sql-odbc/docs/test/img/microsoft_query_import_data.png delete mode 100644 sql-odbc/docs/test/img/microsoft_query_loaded_data.png delete mode 100644 sql-odbc/docs/test/img/microsoft_query_select_colums.png delete mode 100644 sql-odbc/docs/test/img/microsoft_query_select_tables.png delete mode 100644 sql-odbc/docs/test/img/microsoft_query_table_options.png delete mode 100644 sql-odbc/docs/test/img/odbc_data_source.png delete mode 100644 sql-odbc/docs/test/img/query_wizard_choose_coulms.png delete mode 100644 sql-odbc/docs/test/img/query_wizard_enable_use_the_query_wizard_option.png delete mode 100644 sql-odbc/docs/test/img/query_wizard_error_popup.png delete mode 100644 sql-odbc/docs/test/img/query_wizard_filter_data.png delete mode 100644 sql-odbc/docs/test/img/query_wizard_finish.png delete mode 100644 sql-odbc/docs/test/img/query_wizard_import_data.png delete mode 100644 sql-odbc/docs/test/img/query_wizard_loaded_data.png delete mode 100644 sql-odbc/docs/test/img/query_wizard_select_tables.png delete mode 100644 sql-odbc/docs/test/img/query_wizard_sort_order.png delete mode 100644 sql-odbc/docs/test/img/query_wizard_table_options.png delete mode 100644 sql-odbc/docs/test/img/refresh_add_datarow.png delete mode 100644 sql-odbc/docs/test/img/refresh_data_preview.png delete mode 100644 sql-odbc/docs/test/img/refresh_load_data.png delete mode 100644 sql-odbc/docs/test/img/refresh_updated_data.png delete mode 100644 sql-odbc/docs/test/img/select_microsoft_query.png delete mode 100644 sql-odbc/docs/test/microsoft_excel_manual_test_plan.xlsx delete mode 100644 sql-odbc/docs/test/microsoft_query_connection.md delete mode 100644 sql-odbc/docs/test/odbc_data_source_connection.md delete mode 100644 sql-odbc/docs/test/power_bi_manual_test_plan.xlsx delete mode 100644 sql-odbc/docs/test/query_wizard_connection.md delete mode 100644 sql-odbc/docs/test/refresh_data.md delete mode 100644 sql-odbc/docs/user/configuration_options.md delete mode 100644 sql-odbc/docs/user/img/driver_default_config.png delete mode 100644 sql-odbc/docs/user/img/dsn_default_config.png delete mode 100644 sql-odbc/docs/user/img/excel_advanced_option.png delete mode 100644 sql-odbc/docs/user/img/excel_auth.png delete mode 100644 sql-odbc/docs/user/img/excel_credentials.png delete mode 100644 sql-odbc/docs/user/img/excel_data_load.png delete mode 100644 sql-odbc/docs/user/img/excel_data_preview.png delete mode 100644 sql-odbc/docs/user/img/excel_data_preview_error.png delete mode 100644 sql-odbc/docs/user/img/excel_data_preview_mac.png delete mode 100644 sql-odbc/docs/user/img/excel_export.png delete mode 100644 sql-odbc/docs/user/img/excel_export_csv.png delete mode 100644 sql-odbc/docs/user/img/excel_iodbc_auth.png delete mode 100644 sql-odbc/docs/user/img/excel_iodbc_dsn.png delete mode 100644 sql-odbc/docs/user/img/excel_iodbc_test_dsn.png delete mode 100644 sql-odbc/docs/user/img/excel_load_data.png delete mode 100644 sql-odbc/docs/user/img/excel_refresh.png delete mode 100644 sql-odbc/docs/user/img/excel_refresh_mac.png delete mode 100644 sql-odbc/docs/user/img/excel_select_database.png delete mode 100644 sql-odbc/docs/user/img/excel_select_dsn.png delete mode 100644 sql-odbc/docs/user/img/excel_select_dsn_mac.png delete mode 100644 sql-odbc/docs/user/img/excel_select_odbc.png delete mode 100644 sql-odbc/docs/user/img/excel_select_worksheet.png delete mode 100644 sql-odbc/docs/user/img/excel_table_list.png delete mode 100644 sql-odbc/docs/user/img/test_dsn_configure.png delete mode 100644 sql-odbc/docs/user/img/test_dsn_success.png delete mode 100644 sql-odbc/docs/user/img/win_configure_dsn.png delete mode 100644 sql-odbc/docs/user/img/win_configure_dsn_values.png delete mode 100644 sql-odbc/docs/user/img/win_odbc_data_sources.png delete mode 100644 sql-odbc/docs/user/img/win_system_dsn.png delete mode 100644 sql-odbc/docs/user/img/win_test_dsn.png delete mode 100644 sql-odbc/docs/user/img/win_user_dsn.png delete mode 100644 sql-odbc/docs/user/img/win_user_dsn_configure_options.png delete mode 100644 sql-odbc/docs/user/img/win_user_dsn_list.png delete mode 100644 sql-odbc/docs/user/img/win_user_dsn_select_driver.png delete mode 100644 sql-odbc/docs/user/mac_configure_dsn.md delete mode 100644 sql-odbc/docs/user/microsoft_excel_support.md delete mode 100644 sql-odbc/docs/user/microsoft_excel_support_mac.md delete mode 100644 sql-odbc/docs/user/windows_configure_dsn.md delete mode 100644 sql-odbc/libraries/VisualLeakDetector/COPYING.txt delete mode 100644 sql-odbc/libraries/VisualLeakDetector/bin/Microsoft.DTfW.DHL.manifest delete mode 100644 sql-odbc/libraries/VisualLeakDetector/bin/dbghelp.dll delete mode 100644 sql-odbc/libraries/VisualLeakDetector/bin/vld_x86.dll delete mode 100644 sql-odbc/libraries/VisualLeakDetector/bin64/Microsoft.DTfW.DHL.manifest delete mode 100644 sql-odbc/libraries/VisualLeakDetector/bin64/dbghelp.dll delete mode 100644 sql-odbc/libraries/VisualLeakDetector/bin64/vld_x64.dll delete mode 100644 sql-odbc/libraries/VisualLeakDetector/include/vld.h delete mode 100644 sql-odbc/libraries/VisualLeakDetector/include/vld_def.h delete mode 100644 sql-odbc/libraries/VisualLeakDetector/lib/vld.lib delete mode 100644 sql-odbc/libraries/VisualLeakDetector/lib64/vld.lib delete mode 100644 sql-odbc/libraries/rabbit/LICENSE delete mode 100644 sql-odbc/libraries/rabbit/README delete mode 100644 sql-odbc/libraries/rabbit/include/rabbit.hpp delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/allocators.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/document.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/encodedstream.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/encodings.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/error/en.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/error/error.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/filereadstream.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/filewritestream.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/fwd.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/internal/biginteger.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/internal/diyfp.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/internal/dtoa.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/internal/ieee754.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/internal/itoa.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/internal/meta.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/internal/pow10.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/internal/regex.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/internal/stack.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/internal/strfunc.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/internal/strtod.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/internal/swap.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/istreamwrapper.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/memorybuffer.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/memorystream.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/msinttypes/inttypes.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/msinttypes/stdint.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/ostreamwrapper.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/pointer.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/prettywriter.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/rapidjson.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/reader.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/schema.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/stream.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/stringbuffer.h delete mode 100644 sql-odbc/libraries/rapidjson/include/rapidjson/writer.h delete mode 100644 sql-odbc/libraries/rapidjson/license.txt delete mode 100644 sql-odbc/opendistro-elasticsearch-odbc.release-notes.md delete mode 100644 sql-odbc/release-notes/sql-odbc.release-notes-1.7.0.0.md delete mode 100644 sql-odbc/release-notes/sql-odbc.release-notes-1.8.0.0.md delete mode 100644 sql-odbc/release-notes/sql-odbc.release-notes-1.9.0.0.md delete mode 100644 sql-odbc/run_cppcheck.bat delete mode 100755 sql-odbc/run_cppcheck.sh delete mode 100644 sql-odbc/run_test_runner.bat delete mode 100755 sql-odbc/run_test_runner.sh delete mode 100644 sql-odbc/scripts/build_driver.ps1 delete mode 100644 sql-odbc/scripts/build_installer.ps1 delete mode 100644 sql-odbc/scripts/build_windows.ps1 delete mode 100644 sql-odbc/scripts/prepare_ci_output.ps1 delete mode 100644 sql-odbc/src/CMakeLists.txt delete mode 100644 sql-odbc/src/DSNInstaller/CMakeLists.txt delete mode 100644 sql-odbc/src/DSNInstaller/dsn_installer.cpp delete mode 100644 sql-odbc/src/IntegrationTests/CMakeLists.txt delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCAwsAuth/CMakeLists.txt delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCAwsAuth/pch.cpp delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCAwsAuth/pch.h delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCAwsAuth/test_aws_auth_dsn.reg delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCAwsAuth/test_odbc.ini delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCAwsAuth/test_odbc_aws_auth.cpp delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCAwsAuth/test_odbcinst.ini delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCCatalog/CMakeLists.txt delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCCatalog/packages.config delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCCatalog/pch.cpp delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCCatalog/pch.h delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCCatalog/test_odbc_catalog.cpp delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCConnection/CMakeLists.txt delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCConnection/packages.config delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCConnection/pch.cpp delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCConnection/pch.h delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCConnection/test_dsn.reg delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCConnection/test_odbc.ini delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCConnection/test_odbc_connection.cpp delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCConnection/test_odbcinst.ini delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCDescriptors/CMakeLists.txt delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCDescriptors/packages.config delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCDescriptors/pch.cpp delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCDescriptors/pch.h delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCDescriptors/test_odbc_descriptors.cpp delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCExecution/CMakeLists.txt delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCExecution/pch.cpp delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCExecution/pch.h delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCExecution/test_odbc_execution.cpp delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCHelper/CMakeLists.txt delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCHelper/it_odbc_helper.cpp delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCHelper/it_odbc_helper.h delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCInfo/CMakeLists.txt delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCInfo/packages.config delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCInfo/pch.cpp delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCInfo/pch.h delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCInfo/test_odbc_info.cpp delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCPagination/CMakeLists.txt delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCPagination/packages.config delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCPagination/pch.cpp delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCPagination/pch.h delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCPagination/test_odbc_pagination.cpp delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCResults/CMakeLists.txt delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCResults/packages.config delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCResults/pch.cpp delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCResults/pch.h delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCResults/test_odbc_results.cpp delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCTableauQueries/CMakeLists.txt delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCTableauQueries/packages.config delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCTableauQueries/pch.cpp delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCTableauQueries/pch.h delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCTableauQueries/queries_all.txt delete mode 100644 sql-odbc/src/IntegrationTests/ITODBCTableauQueries/test_odbc_tableau_queries.cpp delete mode 100644 sql-odbc/src/PerformanceTests/CMakeLists.txt delete mode 100644 sql-odbc/src/PerformanceTests/PTODBCExecution/CMakeLists.txt delete mode 100644 sql-odbc/src/PerformanceTests/PTODBCExecution/performance_odbc_execution.cpp delete mode 100644 sql-odbc/src/PerformanceTests/PTODBCInfo/CMakeLists.txt delete mode 100644 sql-odbc/src/PerformanceTests/PTODBCInfo/packages.config delete mode 100644 sql-odbc/src/PerformanceTests/PTODBCInfo/pch.cpp delete mode 100644 sql-odbc/src/PerformanceTests/PTODBCInfo/pch.h delete mode 100644 sql-odbc/src/PerformanceTests/PTODBCInfo/performance_odbc_info.cpp delete mode 100644 sql-odbc/src/PerformanceTests/PTODBCResults/CMakeLists.txt delete mode 100644 sql-odbc/src/PerformanceTests/PTODBCResults/packages.config delete mode 100644 sql-odbc/src/PerformanceTests/PTODBCResults/pch.cpp delete mode 100644 sql-odbc/src/PerformanceTests/PTODBCResults/pch.h delete mode 100644 sql-odbc/src/PerformanceTests/PTODBCResults/performance_odbc_results.cpp delete mode 100644 sql-odbc/src/TestRunner/mako_template.html delete mode 100644 sql-odbc/src/TestRunner/test_exclude_list.txt delete mode 100644 sql-odbc/src/TestRunner/test_runner.py delete mode 100644 sql-odbc/src/UnitTests/CMakeLists.txt delete mode 100644 sql-odbc/src/UnitTests/GoogleTest.LICENSE delete mode 100644 sql-odbc/src/UnitTests/UTAwsSdkCpp/CMakeLists.txt delete mode 100644 sql-odbc/src/UnitTests/UTAwsSdkCpp/packages.config delete mode 100644 sql-odbc/src/UnitTests/UTAwsSdkCpp/pch.cpp delete mode 100644 sql-odbc/src/UnitTests/UTAwsSdkCpp/pch.h delete mode 100644 sql-odbc/src/UnitTests/UTAwsSdkCpp/test_aws_sdk_cpp.cpp delete mode 100644 sql-odbc/src/UnitTests/UTConn/CMakeLists.txt delete mode 100644 sql-odbc/src/UnitTests/UTConn/packages.config delete mode 100644 sql-odbc/src/UnitTests/UTConn/pch.cpp delete mode 100644 sql-odbc/src/UnitTests/UTConn/pch.h delete mode 100644 sql-odbc/src/UnitTests/UTConn/test_conn.cpp delete mode 100644 sql-odbc/src/UnitTests/UTConn/test_query_execution.cpp delete mode 100644 sql-odbc/src/UnitTests/UTCriticalSection/CMakeLists.txt delete mode 100644 sql-odbc/src/UnitTests/UTCriticalSection/packages.config delete mode 100644 sql-odbc/src/UnitTests/UTCriticalSection/pch.cpp delete mode 100644 sql-odbc/src/UnitTests/UTCriticalSection/pch.h delete mode 100644 sql-odbc/src/UnitTests/UTCriticalSection/test_critical_section.cpp delete mode 100644 sql-odbc/src/UnitTests/UTHelper/CMakeLists.txt delete mode 100644 sql-odbc/src/UnitTests/UTHelper/unit_test_helper.cpp delete mode 100644 sql-odbc/src/UnitTests/UTHelper/unit_test_helper.h delete mode 100644 sql-odbc/src/UnitTests/UTRabbit/CMakeLists.txt delete mode 100644 sql-odbc/src/UnitTests/UTRabbit/packages.config delete mode 100644 sql-odbc/src/UnitTests/UTRabbit/pch.cpp delete mode 100644 sql-odbc/src/UnitTests/UTRabbit/pch.h delete mode 100644 sql-odbc/src/UnitTests/UTRabbit/test_rabbit.cpp delete mode 100644 sql-odbc/src/autoconf.h.in delete mode 100644 sql-odbc/src/installer/CMakeLists.txt delete mode 100644 sql-odbc/src/installer/Resources/README.txt delete mode 100644 sql-odbc/src/installer/Resources/Welcome.txt delete mode 100644 sql-odbc/src/installer/Resources/background.bmp delete mode 100644 sql-odbc/src/installer/Resources/background_darkaqua.bmp delete mode 100644 sql-odbc/src/installer/Resources/opensearch_sql_odbc.tdc delete mode 100644 sql-odbc/src/installer/banner.bmp delete mode 100644 sql-odbc/src/installer/dialog.bmp delete mode 100644 sql-odbc/src/installer/icon.ico delete mode 100644 sql-odbc/src/installer/patch.xml delete mode 100644 sql-odbc/src/installer/postinstall delete mode 100644 sql-odbc/src/installer/remove-opensearch-dsn.sh delete mode 100644 sql-odbc/src/modules/code-coverage.cmake delete mode 100644 sql-odbc/src/opensearchenlist/CMakeLists.txt delete mode 100644 sql-odbc/src/opensearchenlist/msdtc_enlist.cpp delete mode 100644 sql-odbc/src/opensearchenlist/opensearch_enlist.h delete mode 100644 sql-odbc/src/sqlodbc/CMakeLists.txt delete mode 100644 sql-odbc/src/sqlodbc/LICENSE.txt delete mode 100644 sql-odbc/src/sqlodbc/bind.c delete mode 100644 sql-odbc/src/sqlodbc/bind.h delete mode 100644 sql-odbc/src/sqlodbc/catfunc.h delete mode 100644 sql-odbc/src/sqlodbc/columninfo.c delete mode 100644 sql-odbc/src/sqlodbc/columninfo.h delete mode 100644 sql-odbc/src/sqlodbc/connection.c delete mode 100644 sql-odbc/src/sqlodbc/convert.c delete mode 100644 sql-odbc/src/sqlodbc/convert.h delete mode 100644 sql-odbc/src/sqlodbc/descriptor.c delete mode 100644 sql-odbc/src/sqlodbc/descriptor.h delete mode 100644 sql-odbc/src/sqlodbc/dlg_specific.c delete mode 100644 sql-odbc/src/sqlodbc/dlg_specific.h delete mode 100644 sql-odbc/src/sqlodbc/dlg_wingui.c delete mode 100644 sql-odbc/src/sqlodbc/drvconn.c delete mode 100644 sql-odbc/src/sqlodbc/drvconn.h delete mode 100644 sql-odbc/src/sqlodbc/environ.c delete mode 100644 sql-odbc/src/sqlodbc/environ.h delete mode 100644 sql-odbc/src/sqlodbc/execute.c delete mode 100644 sql-odbc/src/sqlodbc/info.c delete mode 100644 sql-odbc/src/sqlodbc/loadlib.c delete mode 100644 sql-odbc/src/sqlodbc/loadlib.h delete mode 100644 sql-odbc/src/sqlodbc/misc.c delete mode 100644 sql-odbc/src/sqlodbc/misc.h delete mode 100644 sql-odbc/src/sqlodbc/multibyte.c delete mode 100644 sql-odbc/src/sqlodbc/multibyte.h delete mode 100644 sql-odbc/src/sqlodbc/mylog.c delete mode 100644 sql-odbc/src/sqlodbc/mylog.h delete mode 100644 sql-odbc/src/sqlodbc/odbcapi.c delete mode 100644 sql-odbc/src/sqlodbc/odbcapi30.c delete mode 100644 sql-odbc/src/sqlodbc/odbcapi30w.c delete mode 100644 sql-odbc/src/sqlodbc/odbcapiw.c delete mode 100644 sql-odbc/src/sqlodbc/opensearch_api30.c delete mode 100644 sql-odbc/src/sqlodbc/opensearch_apifunc.h delete mode 100644 sql-odbc/src/sqlodbc/opensearch_communication.cpp delete mode 100644 sql-odbc/src/sqlodbc/opensearch_communication.h delete mode 100644 sql-odbc/src/sqlodbc/opensearch_connection.cpp delete mode 100644 sql-odbc/src/sqlodbc/opensearch_connection.h delete mode 100644 sql-odbc/src/sqlodbc/opensearch_driver_connect.cpp delete mode 100644 sql-odbc/src/sqlodbc/opensearch_driver_connect.h delete mode 100644 sql-odbc/src/sqlodbc/opensearch_helper.cpp delete mode 100644 sql-odbc/src/sqlodbc/opensearch_helper.h delete mode 100644 sql-odbc/src/sqlodbc/opensearch_info.cpp delete mode 100644 sql-odbc/src/sqlodbc/opensearch_info.h delete mode 100644 sql-odbc/src/sqlodbc/opensearch_odbc.c delete mode 100644 sql-odbc/src/sqlodbc/opensearch_odbc.h delete mode 100644 sql-odbc/src/sqlodbc/opensearch_odbc.rc delete mode 100644 sql-odbc/src/sqlodbc/opensearch_parse_result.cpp delete mode 100644 sql-odbc/src/sqlodbc/opensearch_parse_result.h delete mode 100644 sql-odbc/src/sqlodbc/opensearch_result_queue.cpp delete mode 100644 sql-odbc/src/sqlodbc/opensearch_result_queue.h delete mode 100644 sql-odbc/src/sqlodbc/opensearch_semaphore.cpp delete mode 100644 sql-odbc/src/sqlodbc/opensearch_semaphore.h delete mode 100644 sql-odbc/src/sqlodbc/opensearch_statement.cpp delete mode 100644 sql-odbc/src/sqlodbc/opensearch_statement.h delete mode 100644 sql-odbc/src/sqlodbc/opensearch_types.c delete mode 100644 sql-odbc/src/sqlodbc/opensearch_types.h delete mode 100644 sql-odbc/src/sqlodbc/opensearch_utility.cpp delete mode 100644 sql-odbc/src/sqlodbc/opensearch_utility.h delete mode 100644 sql-odbc/src/sqlodbc/options.c delete mode 100644 sql-odbc/src/sqlodbc/parse.c delete mode 100644 sql-odbc/src/sqlodbc/qresult.c delete mode 100644 sql-odbc/src/sqlodbc/qresult.h delete mode 100644 sql-odbc/src/sqlodbc/resource.h delete mode 100644 sql-odbc/src/sqlodbc/results.c delete mode 100644 sql-odbc/src/sqlodbc/setup.c delete mode 100644 sql-odbc/src/sqlodbc/statement.c delete mode 100644 sql-odbc/src/sqlodbc/statement.h delete mode 100644 sql-odbc/src/sqlodbc/tuple.c delete mode 100644 sql-odbc/src/sqlodbc/tuple.h delete mode 100644 sql-odbc/src/sqlodbc/unicode_support.h delete mode 100644 sql-odbc/src/sqlodbc/version.h delete mode 100644 sql-odbc/src/sqlodbc/win_setup.h delete mode 100644 sql-odbc/src/sqlodbc/win_unicode.c delete mode 100644 sql-odbc/src/vcpkg.json delete mode 100644 workbench/.cypress/integration/ui.spec.js delete mode 100644 workbench/.cypress/plugins/index.js delete mode 100644 workbench/.cypress/support/commands.js delete mode 100644 workbench/.cypress/support/constants.js delete mode 100644 workbench/.cypress/support/index.js delete mode 100644 workbench/.cypress/tsconfig.json delete mode 100644 workbench/.cypress/utils/constants.js delete mode 100644 workbench/.gitignore delete mode 100644 workbench/.opensearch_dashboards-plugin-helpers.json delete mode 100644 workbench/CODE_OF_CONDUCT.md delete mode 100644 workbench/CONTRIBUTING.md delete mode 100644 workbench/CONTRIBUTORS.md delete mode 100644 workbench/DEVELOPER_GUIDE.md delete mode 100644 workbench/LICENSE.TXT delete mode 100644 workbench/NOTICE delete mode 100644 workbench/README.md delete mode 100644 workbench/THIRD-PARTY delete mode 100644 workbench/babel.config.js delete mode 100644 workbench/common/index.ts delete mode 100644 workbench/cypress.json delete mode 100644 workbench/opensearch_dashboards.json delete mode 100644 workbench/package.json delete mode 100644 workbench/public/ace-themes/sql_console.js delete mode 100644 workbench/public/app.scss delete mode 100644 workbench/public/application.tsx delete mode 100644 workbench/public/components/Header/Header.test.tsx delete mode 100644 workbench/public/components/Header/Header.tsx delete mode 100644 workbench/public/components/Header/__snapshots__/Header.test.tsx.snap delete mode 100644 workbench/public/components/Main/__snapshots__/main.test.tsx.snap delete mode 100644 workbench/public/components/Main/index.ts delete mode 100644 workbench/public/components/Main/main.test.tsx delete mode 100644 workbench/public/components/Main/main.tsx delete mode 100644 workbench/public/components/PPLPage/PPLPage.test.tsx delete mode 100644 workbench/public/components/PPLPage/PPLPage.tsx delete mode 100644 workbench/public/components/PPLPage/__snapshots__/PPLPage.test.tsx.snap delete mode 100644 workbench/public/components/QueryLanguageSwitch/Switch.test.tsx delete mode 100644 workbench/public/components/QueryLanguageSwitch/Switch.tsx delete mode 100644 workbench/public/components/QueryLanguageSwitch/__snapshots__/Switch.test.tsx.snap delete mode 100644 workbench/public/components/QueryResults/QueryResults.test.tsx delete mode 100644 workbench/public/components/QueryResults/QueryResults.tsx delete mode 100644 workbench/public/components/QueryResults/QueryResultsBody.test.tsx delete mode 100644 workbench/public/components/QueryResults/QueryResultsBody.tsx delete mode 100644 workbench/public/components/QueryResults/__snapshots__/QueryResults.test.tsx.snap delete mode 100644 workbench/public/components/QueryResults/__snapshots__/QueryResultsBody.test.tsx.snap delete mode 100644 workbench/public/components/SQLPage/SQLPage.test.tsx delete mode 100644 workbench/public/components/SQLPage/SQLPage.tsx delete mode 100644 workbench/public/components/SQLPage/__snapshots__/SQLPage.test.tsx.snap delete mode 100644 workbench/public/components/app.tsx delete mode 100644 workbench/public/icons/minus.svg delete mode 100644 workbench/public/icons/plus.svg delete mode 100644 workbench/public/icons/sql.svg delete mode 100644 workbench/public/index.scss delete mode 100644 workbench/public/index.ts delete mode 100644 workbench/public/less/main.less delete mode 100644 workbench/public/plugin.ts delete mode 100644 workbench/public/types.ts delete mode 100644 workbench/public/utils/PanelWrapper.tsx delete mode 100644 workbench/public/utils/constants.ts delete mode 100644 workbench/public/utils/utils.ts delete mode 100644 workbench/release-notes/sql-workbench.release-notes-1.7.0.0.md delete mode 100644 workbench/release-notes/sql-workbench.release-notes-1.8.0.0.md delete mode 100644 workbench/release-notes/sql-workbench.release-notes-1.9.0.0.md delete mode 100644 workbench/release-notes/sql-workbench.release-notes-1.9.0.1.md delete mode 100644 workbench/release-notes/sql-workbench.release-notes-1.9.0.2.md delete mode 100644 workbench/server/clusters/index.js delete mode 100644 workbench/server/clusters/sql/createSqlCluster.js delete mode 100644 workbench/server/clusters/sql/sqlPlugin.js delete mode 100644 workbench/server/index.ts delete mode 100644 workbench/server/plugin.ts delete mode 100644 workbench/server/routes/index.ts delete mode 100644 workbench/server/routes/query.ts delete mode 100644 workbench/server/routes/translate.ts delete mode 100644 workbench/server/services/QueryService.ts delete mode 100644 workbench/server/services/TranslateService.ts delete mode 100644 workbench/server/services/utils/constants.ts delete mode 100644 workbench/server/types.ts delete mode 100644 workbench/server/utils/constants.ts delete mode 100644 workbench/test/jest.config.js delete mode 100644 workbench/test/mocks/browserServicesMock.ts delete mode 100644 workbench/test/mocks/httpClientMock.ts delete mode 100644 workbench/test/mocks/index.ts delete mode 100644 workbench/test/mocks/mockData.ts delete mode 100644 workbench/test/mocks/styleMock.ts delete mode 100644 workbench/test/polyfills.ts delete mode 100644 workbench/test/polyfills/mutationObserver.js delete mode 100644 workbench/test/setup.jest.ts delete mode 100644 workbench/test/setupTests.ts delete mode 100644 workbench/tsconfig.json delete mode 100644 workbench/tslint.yaml delete mode 100644 workbench/webpack.config.js delete mode 100644 workbench/yarn.lock diff --git a/.github/workflows/bi-connectors.yml b/.github/workflows/bi-connectors.yml deleted file mode 100644 index 0251debb8d..0000000000 --- a/.github/workflows/bi-connectors.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: Build connectors for BI tools - -on: - pull_request: - push: - paths: - - 'bi-connectors/PowerBIConnector/**' - - 'bi-connectors/TableauConnector/**' - - '.github/workflows/bi-connectors.yml' - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Pack Tableau JDBC connector - id: pack-tableau-jdbc - run: | - zip -r opensearch_sql_jdbc.taco . -x *.taco - working-directory: bi-connectors/TableauConnector/src - - name: Prepare Power BI ODBC connector for 'OpenSearch Project' - run: | - cp OpenSearchProject.pq OpenSearchProject.m - working-directory: bi-connectors/PowerBIConnector/src - - name: Pack Power BI ODBC connector - id: pack-powerbi-odbc-os-proj - run: | - zip OpenSearchProject.mez *.png *.m *.resx *.pqm - working-directory: bi-connectors/PowerBIConnector/src - - name: Prepare Power BI ODBC connector for 'Amazon OpenSearch Service' - id: prep-powerbi-odbc-amz-os-svc - run: | - mv OpenSearchProject.m AmazonOpenSearchService.m - sed -i 's/OpenSearch Project<\/value>/Amazon OpenSearch Service<\/value>/g' resources.resx - sed -i 's/OpenSearch Project/Amazon OpenSearch Service/g' AmazonOpenSearchService.m - sed -i 's/OpenSearchProject/AmazonOpenSearchService/g' AmazonOpenSearchService.m - sed -i 's/opensearchproject/amazonopensearchservice/g' AmazonOpenSearchService.m - working-directory: bi-connectors/PowerBIConnector/src - - name: Pack Power BI ODBC connector for 'Amazon OpenSearch Service' - id: pack-powerbi-odbc-amz-os-svc - run: | - zip AmazonOpenSearchService.mez *.png *.m *.resx *.pqm - working-directory: bi-connectors/PowerBIConnector/src - - name: Upload Tableau JDBC connector - if: steps.pack-tableau-jdbc.outcome == 'success' - uses: actions/upload-artifact@v2 - with: - name: TableauConnectors - path: bi-connectors/TableauConnector/src/opensearch_sql_jdbc.taco - - name: Upload Power BI ODBC connectors - if: steps.pack-powerbi-odbc-os-proj.outcome == 'success' || (steps.prep-powerbi-odbc-amz-os-svc.outcome == 'success' && steps.pack-powerbi-odbc-amz-os-svc.outcome == 'success') - uses: actions/upload-artifact@v2 - with: - name: PBIConnectors - path: 'bi-connectors/PowerBIConnector/src/*.mez' diff --git a/.github/workflows/sql-cli-test-and-build-workflow.yml b/.github/workflows/sql-cli-test-and-build-workflow.yml deleted file mode 100644 index 9a8f5052a1..0000000000 --- a/.github/workflows/sql-cli-test-and-build-workflow.yml +++ /dev/null @@ -1,71 +0,0 @@ -name: SQL CLI Test and Build - -on: - pull_request: - push: - branches-ignore: - - 'dependabot/**' - paths: - - 'sql-cli/**' - - '.github/workflows/sql-cli-test-and-build-workflow.yml' - -jobs: - build: - runs-on: ubuntu-latest - defaults: - run: - working-directory: sql-cli - strategy: - matrix: - python-version: [3.8] - opensearch-version: [ latest ] - - steps: - - name: Checkout SQL CLI - uses: actions/checkout@v3 - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - - name: Install Python Dependencies - run: | - python -m pip install --upgrade pip - pip install -r requirements-dev.txt - pip install setuptools wheel - - # tests are designed to run against http://localhost:9200, so we have to disable/remove security plugin - - name: Download and run OpenSearch - run: | - docker run -p 9200:9200 -e "discovery.type=single-node" -e "DISABLE_SECURITY_PLUGIN=true" --name test -d opensearchproject/opensearch:${{ matrix.opensearch-version }} - - - name: Wait for cluster to start - uses: nick-fields/retry@v2 - with: - timeout_seconds: 1 - max_attempts: 30 - command: curl -q localhost:9200 - - - name: Run Tox Testing - run: tox - - - name: Build Artifact - run: python setup.py sdist bdist_wheel - - - name: Create Artifact Path - run: | - mkdir -p opensearchsql-builds - cp -r ./dist/*.tar.gz ./dist/*.whl opensearchsql-builds/ - - - name: Upload Artifact - uses: actions/upload-artifact@v3 - with: - name: opensearchsql - path: sql-cli/opensearchsql-builds - - - name: Clean up container - if: always() - run: | - docker container stop test - docker container rm test diff --git a/.github/workflows/sql-jdbc-test-and-build-workflow.yml b/.github/workflows/sql-jdbc-test-and-build-workflow.yml deleted file mode 100644 index 2d71c61413..0000000000 --- a/.github/workflows/sql-jdbc-test-and-build-workflow.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: SQL JDBC Java CI - -on: - pull_request: - push: - branches-ignore: - - 'dependabot/**' - paths: - - 'sql-jdbc/**' - - '.github/workflows/sql-jdbc-test-and-build-workflow.yml' - -jobs: - build: - strategy: - matrix: - java: - - 11 - - 17 - runs-on: ubuntu-latest - defaults: - run: - working-directory: sql-jdbc - - steps: - - uses: actions/checkout@v3 - - - name: Set up JDK ${{ matrix.java }} - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: ${{ matrix.java }} - - - name: Build with Gradle - run: ./gradlew build test shadowJar - - - name: Create Artifact Path - run: | - mkdir -p sql-jdbc-builds - cp ./build/libs/*.jar sql-jdbc-builds - - - name: Upload Artifacts - uses: actions/upload-artifact@v2 - with: - name: sql-jdbc - path: sql-jdbc/sql-jdbc-builds diff --git a/.github/workflows/sql-odbc-main.yml b/.github/workflows/sql-odbc-main.yml deleted file mode 100644 index 5ebfcf4dc3..0000000000 --- a/.github/workflows/sql-odbc-main.yml +++ /dev/null @@ -1,179 +0,0 @@ -name: OpenSearch ODBC Driver - -on: - pull_request: - push: - branches-ignore: - - 'dependabot/**' - paths: - - 'sql-odbc/**' - - '.github/workflows/sql-odbc-main.yml' - -env: - CI_OUTPUT_PATH: "sql-odbc/ci-output" - ODBC_LIB_PATH: "./build/odbc/lib" - ODBC_BIN_PATH: "./build/odbc/bin" - ODBC_BUILD_PATH: "./build/odbc/cmake" - VCPKG_X64_INSTALL_PATH: ".\\src\\vcpkg_installed\\x64-windows" - VCPKG_X86_INSTALL_PATH: ".\\src\\vcpkg_installed\\x86-windows" - -# Tests are disabled (commented out) in all jobs because they are fail and/or outdated -# Keeping them for the brighten future when we can re-activate them -jobs: - build-mac: - runs-on: macos-12 - defaults: - run: - working-directory: sql-odbc - steps: - - uses: actions/checkout@v3 - - name: run-cppcheck - run: | - brew install cppcheck - sh run_cppcheck.sh - - name: upload-cppcheck-results - if: failure() - uses: actions/upload-artifact@v3 - with: - name: cppcheck-results - path: sql-odbc/cppcheck-results.log - - name: get-dependencies - run: | - brew unlink unixodbc - brew install curl - brew install cmake - brew install libiodbc - - name: configure-and-build-driver - run: | - ./build_mac_release64.sh - #- name: test - # run: | - # bash ./run_test_runner.sh - - name: build-installer - if: success() - run: | - cd cmake-build64 - cmake ../src - make - cpack . - cd .. - - name: create-output - if: success() - run: | - mkdir build-output - mkdir test-output - mkdir installer - cp ./build/odbc/lib/*.dylib build-output/ - cp ./build/odbc/lib/*.a build-output/ - cp ./cmake-build64/*.pkg installer/ - # cp $(ls -d ./build/odbc/bin/* | grep -v "\.") build-output - # cp ./bin64/*.html test-output - # cp ./bin64/*.log test-output - - name: upload-build - if: success() - uses: actions/upload-artifact@v3 - with: - name: mac64-build - path: sql-odbc/build-output - - name: upload-installer - if: success() - uses: actions/upload-artifact@v3 - with: - name: mac64-installer - path: sql-odbc/installer - #- name: upload-test-results - # if: always() - # uses: actions/upload-artifact@v3 - # with: - # name: mac-test-results - # path: test-output - build-windows32: - runs-on: windows-2019 - defaults: - run: - working-directory: sql-odbc - steps: - - uses: actions/checkout@v3 - - name: Get specific version CMake, v3.18.3 - uses: lukka/get-cmake@v3.18.3 - - name: add-msbuild-to-path - uses: microsoft/setup-msbuild@v1.0.2 - - name: configure-and-build-driver - run: | - .\build_win_release32.ps1 - - name: build-installer - if: success() - run: | - .\scripts\build_installer.ps1 Release Win32 .\src $Env:ODBC_BUILD_PATH $Env:VCPKG_X86_INSTALL_PATH - #- name: test - # run: | - # cp .\\libraries\\VisualLeakDetector\\bin32\\*.* .\\bin32\\Release - # cp .\\libraries\\VisualLeakDetector\\lib32\\*.lib .\\lib32\\Release - # .\run_test_runner.bat - - name: prepare-output - if: always() - run: | - .\scripts\prepare_ci_output.ps1 $Env:ODBC_BIN_PATH $Env:ODBC_LIB_PATH $Env:ODBC_BUILD_PATH - - name: upload-build - if: always() - uses: actions/upload-artifact@v3 - with: - name: windows32-build - path: sql-odbc/ci-output/build - - name: upload-installer - if: always() - uses: actions/upload-artifact@v3 - with: - name: windows32-installer - path: sql-odbc/ci-output/installer - #- name: upload-test-results - # if: always() - # uses: actions/upload-artifact@v3 - # with: - # name: windows-test-results - # path: $CI_OUTPUT_PATH/test - build-windows64: - runs-on: windows-2019 - defaults: - run: - working-directory: sql-odbc - steps: - - uses: actions/checkout@v3 - - name: Get specific version CMake, v3.18.3 - uses: lukka/get-cmake@v3.18.3 - - name: add-msbuild-to-path - uses: microsoft/setup-msbuild@v1.0.2 - - name: configure-and-build-driver - run: | - .\build_win_release64.ps1 - - name: build-installer - if: success() - run: | - .\scripts\build_installer.ps1 Release x64 .\src $Env:ODBC_BUILD_PATH $Env:VCPKG_X64_INSTALL_PATH - #- name: test - # run: | - # cp .\\libraries\\VisualLeakDetector\\bin64\\*.* .\\bin64\\Release - # cp .\\libraries\\VisualLeakDetector\\lib64\\*.lib .\\lib64\\Release - # .\run_test_runner.bat - - name: prepare-output - if: always() - run: | - .\scripts\prepare_ci_output.ps1 $Env:ODBC_BIN_PATH $Env:ODBC_LIB_PATH $Env:ODBC_BUILD_PATH - - name: upload-build - if: always() - uses: actions/upload-artifact@v3 - with: - name: windows64-build - path: sql-odbc/ci-output/build - - name: upload-installer - if: always() - uses: actions/upload-artifact@v3 - with: - name: windows64-installer - path: sql-odbc/ci-output/installer - #- name: upload-test-results - # if: always() - # uses: actions/upload-artifact@v3 - # with: - # name: windows-test-results - # path: sql-odbc/ci-output/test-output diff --git a/.github/workflows/sql-test-and-build-workflow.yml b/.github/workflows/sql-test-and-build-workflow.yml index a7159ea411..4853e2e1eb 100644 --- a/.github/workflows/sql-test-and-build-workflow.yml +++ b/.github/workflows/sql-test-and-build-workflow.yml @@ -25,11 +25,11 @@ jobs: matrix: entry: - { os: ubuntu-latest, java: 11 } - - { os: windows-latest, java: 11, os_build_args: -x doctest -x integTest -x jacocoTestReport -x compileJdbc -PbuildPlatform=windows } - - { os: macos-latest, java: 11, os_build_args: -x doctest -x integTest -x jacocoTestReport -x compileJdbc } + - { os: windows-latest, java: 11, os_build_args: -x doctest -x integTest -x jacocoTestReport -PbuildPlatform=windows } + - { os: macos-latest, java: 11, os_build_args: -x doctest -x integTest -x jacocoTestReport } - { os: ubuntu-latest, java: 17 } - - { os: windows-latest, java: 17, os_build_args: -x doctest -x integTest -x jacocoTestReport -x compileJdbc -PbuildPlatform=windows } - - { os: macos-latest, java: 17, os_build_args: -x doctest -x integTest -x jacocoTestReport -x compileJdbc } + - { os: windows-latest, java: 17, os_build_args: -x doctest -x integTest -x jacocoTestReport -PbuildPlatform=windows } + - { os: macos-latest, java: 17, os_build_args: -x doctest -x integTest -x jacocoTestReport } runs-on: ${{ matrix.entry.os }} steps: diff --git a/.github/workflows/sql-workbench-test-and-build-workflow.yml b/.github/workflows/sql-workbench-test-and-build-workflow.yml deleted file mode 100644 index 5e0670e9d5..0000000000 --- a/.github/workflows/sql-workbench-test-and-build-workflow.yml +++ /dev/null @@ -1,79 +0,0 @@ -name: SQL Workbench Test and Build - -on: - pull_request: - push: - branches-ignore: - - 'dependabot/**' - paths: - - 'workbench/**' - - '.github/workflows/sql-workbench-test-and-build-workflow.yml' - -env: - PLUGIN_NAME: query-workbench-dashboards - OPENSEARCH_VERSION: 'main' - OPENSEARCH_PLUGIN_VERSION: 3.0.0.0 - -jobs: - build: - strategy: - matrix: - os: [ubuntu-latest, windows-latest, macos-latest] - runs-on: ${{ matrix.os }} - steps: - - name: Enable longer filenames - if: ${{ matrix.os == 'windows-latest' }} - run: git config --system core.longpaths true - - - name: Checkout Plugin - uses: actions/checkout@v3 - - - name: Checkout OpenSearch Dashboards - uses: actions/checkout@v1 # can't update to v3 because `setup-node` fails - with: - repository: opensearch-project/Opensearch-Dashboards - ref: ${{ env.OPENSEARCH_VERSION }} - path: OpenSearch-Dashboards - - - name: Setup Node - uses: actions/setup-node@v3 - with: - node-version-file: "../OpenSearch-Dashboards/.nvmrc" - registry-url: 'https://registry.npmjs.org' - - - name: Move Workbench to Plugins Dir - run: | - mv workbench ../OpenSearch-Dashboards/plugins - - - name: OpenSearch Dashboards Plugin Bootstrap - uses: nick-fields/retry@v2 - with: - timeout_minutes: 60 - max_attempts: 3 - command: cd ../OpenSearch-Dashboards/plugins/workbench; yarn osd bootstrap - - - name: Test - run: | - cd ../OpenSearch-Dashboards/plugins/workbench - yarn test:jest --coverage - - - name: Upload coverage - if: ${{ always() && matrix.os == 'ubuntu-latest' }} - uses: codecov/codecov-action@v3 - with: - flags: query-workbench - directory: ../OpenSearch-Dashboards/plugins/workbench - token: ${{ secrets.CODECOV_TOKEN }} - - - name: Build Artifact - run: | - cd ../OpenSearch-Dashboards/plugins/workbench - yarn build - mv ./build/*.zip ./build/${{ env.PLUGIN_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}.zip - - - name: Upload Artifact - if: always() - uses: actions/upload-artifact@v1 # can't update to v3 because upload fails - with: - name: workbench-${{ matrix.os }} - path: ../OpenSearch-Dashboards/plugins/workbench/build diff --git a/bi-connectors/PowerBIConnector/AmazonOpenSearchService.md b/bi-connectors/PowerBIConnector/AmazonOpenSearchService.md deleted file mode 100644 index d6498a683c..0000000000 --- a/bi-connectors/PowerBIConnector/AmazonOpenSearchService.md +++ /dev/null @@ -1,79 +0,0 @@ -# Connecting Amazon OpenSearch Service to Microsoft Power BI Desktop - ->[!Note] - ->The following connector article is provided by Amazon, the owner of this connector and a member of the Microsoft Power Query Connector Certification Program. If you have questions regarding the content of this article or have changes you would like to see made to this article, visit the OpenSearch website and use the support channels there. - -## Summary -| Item | Description | -| ---- | ----------- | -| Release State | General Availability | -| Products | Power BI Desktop | -| Authentication Types Supported | Basic | - -## Prerequisites -* Microsoft Power BI Desktop -* [OpenSearch](https://opensearch.org/docs/latest/opensearch/install/index/) -* [OpenSearch SQL ODBC driver](https://opensearch.org/docs/latest/search-plugins/sql/odbc/) - -## Capabilities supported -* Import -* DirectQuery - -## Connect to Amazon OpenSearch Service -1. Open Power BI Desktop. - -2. Click on **Home** > **Get Data** > **More** > **Other**. Select **Amazon OpenSearch Service**. Click on **Connect**. - - - -3. You will get a warning for using a third-party service. Click on **Continue**. - - - -4. Enter host and port values and select your preferred SSL and Certificate validation options. Click on **OK**. - - - -5. Select authentication option. Enter credentials if required and click on **Connect**. - - - -6. Select required table. Data preview will be loaded. - - - -7. Click on **Load**. - -8. Select required columns for creating a graph. - - - - -## Troubleshooting - -* If you get the following error, please install the [OpenSearch SQL ODBC Driver](https://docs-beta.opensearch.org/search-plugins/sql/odbc/). - - - -* If you get the following error, - - - -1. Check if host and port values are correct. -2. Check if auth credentials are correct. -3. Check if server is running. - -## Limitations and Known issues - -There are known limitations and issues that are tracked by OpenSearch including the items listed below. - -| Issue | Description | -| ---- | ----------- | -| [Visualizations without numerical columns](https://github.com/opensearch-project/sql/issues/347) | Visualizations is only supported if there is a numerical column included due to a known limitation in OpenSearch regarding subqueries. An exception to this would be visualizations with columns only of type string is supported as well. | -| [Visualizations with First or Last options selected are not yet supported](https://github.com/opensearch-project/sql/issues/279) | First and Last options generate an sql query that uses MAX and MIN for strings which is not yet supported in OpenSearch | -| [Visualizations with aggregate functions selected are not yet supported](https://github.com/opensearch-project/sql/issues/363) | Specifically Minimum, Maximum, Standard deviation, Variance, or Median options are not yet supported. | -| [Basic filtering limitations](https://github.com/opensearch-project/sql/issues/347) | Selecting more than one value is not yet supported when using basic filtering. Due to the issue in the first row of this table, selecting one value for basic filtering when there is no numerical column is not yet supported. | -| [Top N filtering limitations](https://opensearch.org/docs/latest/search-plugins/sql/limitation/) | OpenSearch has limitations on subquery which does not yet support the Top N filtering functionality. | -| [Advanced filtering limitations](https://github.com/opensearch-project/sql/issues/308) | `does not contain` and `does not start with` filters for string columns are not yet supported. All advanced filtering for numerical columns are not yet supported except for `is` and `is blank`. All advanced filtering for date and time columns are not yet supported except for `is blank` and `is not blank`. | -| [Relative Date filtering limitations](https://github.com/opensearch-project/sql/issues/364) | Due to a known timestamp issue in OpenSearch, all relative date filtering is not yet supported. | diff --git a/bi-connectors/PowerBIConnector/AmazonOpenSearchService.mez b/bi-connectors/PowerBIConnector/AmazonOpenSearchService.mez deleted file mode 100644 index 0f18dfe06016de61949dcf3df2992ae6899cd178..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33419 zcma&NLzF1M)}&ju?W$9@ZQHhOp0aJ*wr$(CZCmejzrkDg_FL=kK~8g!gD+z5$dH!; z20;M;0Du6{N_bX=e_BKj2LS-M2Lk{=0Kfr|vp2C-GBI#8GG}0=wYN1>QHBHnj!s)Q zjQMw5+@JvfLC%2z06^UT-H@%~D~+v!!E*h=X z(E=x`0F2gi`d-C^u5jECb^b`9`<4j|SujLOYL_2GsIf3UXs|*0@r8eghrb?z&D!)l z0}QGgwrb{O$yNg}NYH{RsB&w{s(tlyR`MuRt|;^X3YD>Y@Rzh}0z zp*c#y@@5_3H_&q%l|pC{z>=UmyO;tR^Q`1uRqAoqPN_VRNs+{a^nz(t0Y+jnL+1Rk zzkmzWtx-kREHzai88+G+bNZk0lM~Z|bz$*{+@fk#DhW)9Lc~xAZ5u=u)~Lvflr#`B zc@B{{76BxM?L^t!O=EslKov`6cKI!k>8*ms z$tWSfDpCrT1e7R|3Pw|8OJ*cf=giDw5QWmCtzn=n`we;?TlVBg>}eKfUZHf1LeSC& zj0nwu4ieqF<}ci&63oPVJn|{5oaHrN&_|rZ#3Tf09W=oz{J4g*(YZGvMmP#`3VDVk z!;Z`wM|MioaWatoU`-W6F`Z#JXq#qrdm;fb8~aYo)H2JeF~HQt5CNz^5Zr_56p71% zkL=SY8V*jp!~4{EUF=eeC}Y4)9J{B{_go}33UUD$e7}6}R49O|f3UsuIXrAcNs^%` zqpT(!FVq47mv-_rx1 zF&^YJ+3!P8*RI4v4^V8p{%Y8O(Ki&{0WN%4-84mA?)5w4rwoY1+My%b@)16_TX`L? zk(j92k)@^9#76;R&1gUl?+%OGQ}gzqo;A*n1P1j^mP@c_Vt2Y&*31mP(kD-D;7f@Z zECt24@TdcG`?RM`&9wdo-v$$t=Zo280L}Nw@aFn=DXGo_QS&Ji8y#V*XJn`&C9g2h zsy9=)1Z?`zr}S*L$~&mKqD0Zv6sYasMtgU5WFmIlD4+MGv1iKn#Bfj6P0eJ^eZGsG z*YQry^ItR8u(ivOS@>)!udAn$^H|P@&jh0L+L;{kwRhofvc#2}YLm^5Y@O7>QQ0f4 zLYJ?DbH?>ruPk*7cBTdQviZ~p&yb`cvmRIehF<+NY;~SqqgCF})Ag{gk7k|F(Pc94 z%CMFAiv(!CEF2Ez;dk^b?c1R4yzh?EtIv*UXhgk>D`}IFt&-aI0@s-pJdP{ha)a+B zr^0hJ>>k|9$xA-gRJK@I-M9Jk`{Pq5J050VBM(9w&bsc) zR`CO>z}vs*tzLIJxA@_KMm?dhVsz1$d?acP?T=aBuA8~?|ADk863`zIPyhgP@c%{{ zBmMu3G+1k76`Wpyio&tbF)-V~EHz#nH$9!z>Qq$fYfS%W8brt?dfgYaW7ev$1wZHSEe+*jYQd?33KG*eEBQe#lveqEx# zg$y8cwZlVcZdNna3}n+hKLB|RW}G{4R8s4a0!PfY*fm- zEJ&zR@`*6hbch_6#;nb6=8DoMW(iF34L>E6L<2(@FlRS?`RpmrG$gH^Iz~4}BVCnb zj0BiqL1FShgk#49)^us&VzOrs976kI&awsr?y@sOBy0YCV*y1_hA`2YDy=HzX$-W- zKLo?WV9EQg0d%4v8sSBd5mA8dv@wa4CcerXv+;fKKm=u!2vVc<32MqB!&EX7=B2`Hoaay3$OCoC|Bb30Zs3xi8A4c(%5$i!0 z&q09R6XTA8^nwz-k)UgP%trBT`^uy>Y;9-OArtyfqFED$CkO#FD=!LP&6W-@C9N5YU3MkCCA`QiYi4f^ zHjTM19T9!MDO|&t0K(w&KMjE;h_da=Jm2Pzfn>H`=}3Nz>! zFGz2s&78%}DvgHs26}TB+C|{D+tmiFBpi!nXrfOMs{0c% za%t(?q^_!9N0P&FK8SL6Gl`nZU`6R%GybA$=^T3B&GPitL9&A>XL;#aY9~%R)5+5j zurgiKwddycOs18J3s2Mg)7;Sgy*6z6xKolLRg1I0bAUk&B6u0J=svpDb0cK|`UsA_ z`AHeWx+I%+#n;eodiP{=qO1lPmM(;Ly&kfW7zlwHrn!Bc86@dYd> zJ2=*T>AJr;@u}#YDTX6a0!A?!B;9 zRr7Qy*YuKA#@F$65l|CELua7{cAq>@{Z6r~E<|H?^5s}^^NJe^F8HmZ?Bc;2zqX*z zuD-eA{idpa@_3u8rkKlRN7p^?ZH1r1m#sUA245emhrPV$(Eb-YzBlg2OMg(tBBJf$ zjD+54m|xOxa;+)WM&dB!#hmqT$v5jI|KeVGNKzN>^|ux$S@ju?e`~YCEr)w9Xvs+~>}DPu+fG?3b36+o{^3*E9vs(&hp~tet}G zdCkl)`dNoaBK~qxfI@5h0oz6DLb*_Pyl*~HYhR1gO~M8rz<<)TOuS>!^B+xT|4*7S z|6kBleo+;tRyy4ee-i~|%K}0+yGCXqWkIw;6{=~G(2#??G}9tsA z-&U!m-CtTn87$y&#@(X;86>Nd!+>o&TpSUVPu3VaV#3*?Sh{=Krl&LYb?5i{NALDG zo+TXeo(Oml2o$JayjnDSsP>S@sg3W~#+CB(jij%Jp$TI2sD};`Sqffj4}E|}DS&boG_FDl#Lzqh z#F$V$Y_JX{Ofd{%Dr{f$5Zey}jR=7{7@-^?L?Ij~S<>Gh@ZkbuAc(a55G?7QjKute zoeN4pwp8gTDa@P{R}cjX6eRLbz4{nYkabG*ptc}3_I_d>sYX`*6^_Uzz$_-y0-P*l z055*ki$Fc=-@WWN^g!)2TtQ*_BVeRAf|(nAYTaWHxOlV$$qn|DQNlp=&h!)W73tr= zv;Ipml)IEO=h>EFOI+bbZEMn3Yv#(?hD3R!@dY?AG9xB;CL->uzswo`j~M;lvv@9pGVcjS@@Fk$ZQ4K70FXB5ILZvnFm4%5h8HBpY^A{c`$L6|%%P|6BHSqwM$b3W(u6}; z70`YHWFm5*&5ewV!vsl@BSgYh!Ls3&H`L)8_ls1kLEIz43Lun4_rj7;5(U%ZkOeK0 z6bO~Y?S;eo#fhUP?ZdO^-`|#*Z|;cwV{_kfzo0Q9Y6Yhrwj8;e&y$Pt)p=_)fXjQs zrZCnt$on$s$wNG$1RxJ~?2+~W(mig_-G*+N6I;wqhKVqwGTF&S;wqeXCV%7H5$t%M zQpx5PWd-F>+hT`YVd=J3Yu^U-M~Q5_GL7DRR&L0skRZMmnk=qFC%P%dG}E-4;~DKY74zoU)!ZCBtfLw`-iIAhe{ zRe!MOQ!#+1s83<@Q6vpXJW48xh}e!FgmmGiPECu+%55)fUe`?AeK|JQLtgMWrS^Q1 z{U^j9{b)Q?{!RGB5dUq7nHc{^h^s=%BdcNPR+=kN6r(IDUU!sOE*rCf1EK{E2N9*% zrze!<+5Tl4Pa*CcuQ@VDRkqF-?B?9i@7ne^bs{W_Q>p3w&+ zcyhVDDwRcV0`$|vC|-8*kU@%AR7Dh>15-R|VDxj9&N(oo=gvIh2ev4%hB`By281Yr z04;)ECBPDu$S4<%4a~ZcSUJeC=8o_y8S+ciA*bt;bi_Do(6pw$P~_)vRPeba8AMnE z-fuvauX+VqvQiWvxh4>3hd?}lAOt5W5C$>rvkx>tA{QVw#E9=VOh*uqw?Lsx^zQ~f zSmuBr%BYFBRT;@eiAz7kKncl~EghpkorgoFj){l}K!l`@hj0&ybJ=8{B5A5O@#0_gd)6JTK$z})r)MU7Obe}W{>WdRv6_=O;~UlQl~e+e#4Jhdi`u=W~Pme4W> zr^`Sm^1-fCtz5!sPGquAxAqiNp2sOmfi5W0%C9;1j}?0YY}r!pEn!LE~_$2|h1>#!XIjF+LWyg7^U_BHXw-ozC{6YnNegN~dEW z+-z@Nk^)9roXvENjfAu#ce|wyV}^3N+p3%O7FR?<#d>yj5WT+FGT!-58iGcC#PfT3 z#5k(_Y)(U>Z4#GUfnK&Uf(2Ih*~FGb&AjJlNOIvrCTEA?+mq{v_P@S&Y0C;+V_POu zZ8nqb)Lf?)P``N3_l$K+*QVYg4ofRBJfFvk|L~PKtO!|p%C6w_b%RSo4i#KhMzo-- ziG?h)Bwb)!p5LOoT1Zu`hVZ+mH-C0WPI6KSQpt`iC(&e(Yvb6&(yX(!@c!8PsNFIC zM#O!uxBk6mtxcZ`j;4mOkM8JdVk{SS(9CH1@u%79z4*@jP%0>h#%E#0!{-DM`p&G8 zi{W^?k$ijs9OW&8jcLCVs<~0_j-i;9>({!7;;Uy z+z^J>{ID6xQq%B!R+FNWv;JM_&VM$)pU+JGa{*Ugj}6f5=`x>_Tf2=)sTk6HgPJ79 zT#w$#_t{bAHl1BCVRMrD$|fHGB;Y!h7sJuo)0y_SxVU5K`7#9&8OjJwZdFg}axH;( z)5ol@>>i%k&gQ2W>TESBHv{v779rihJhtWbdSU)E6FzE_`V4PpttErQDX@&&BgImV ziUY-$WW%1n?sRmY?Z%|re8B4Z);rO)eovUDXMaw$pUa$C;82a+p;T5f)e5kVk5b*moufA=z$-4cHmmejmY>~_EJcIvFdAh98NcR3WU-Uu#w>&Zb&l?+6Xk}zI zEK`M)(%=Yl)XwPrYGNjLgehwvBp@Va{yzk$prna_4RO-qU_gkg0fg|uJS#%}tOekb z#r*E-&{@OOB2bj5OCvOI_tTt zyGmMGS`{+jZGY&(HVdtntVayihS9KI8Kk?AkwN3qFsm0ih)XUlEsaA`WZtdGo-9b8 zk&?Q9h@3^Jgq{H|#x4X%G(jPYSQNR~k=DJdJ5V}7vh7GmS5Us}PAsuV0E+}G9}@9T zhH((hpU;mtc1(mn{2>SQ6hbM4Y66(r4*}X?YuMue=}iFriS5RGhoBUi7@`lON#x-o zpcD`g4dOf26(DGXVd_^B1%b|30E~cGi9i7efv^neMZ*H5OB5uK^6Y%}3YZQD35oXF zfPj9Q)g={}%F^i&b8FVD01JSe*@6V*71A7VX7Wdrr6iDE%E9EtP}&jW5+h91BMbJl z>0L*G()HA;HJV;z2g80a>VR`)1a%-u1e5F{8H^?Z?I3`2D9Rxd4ygXcG)AZr7%}Au zb-x52?;q$;5K=({YMX?KG=(Z|{G30QO_E9F{QmaJ!NnAa%mmr=i{oQ8eqYJtQAU!8 zA;r`pl-A>9gXJS2jj6Cxi^&7#N|BN)mn#D?43j6y zh_x#6{{@O1C|XoUNgGB|l4p&mL$IS`5I3W~e`Fw@P6LtpO88CWQ>GxPK#+Z(c8qFn zC!i3oAUw!uPy0YLzc`>3k<=8&fDnxe?js?B-cO1{A79x00-}3gmMHs5cE3j|89=gU zsS^H1f~5NmodSk<^v~r6^tmR!s|3;`MAR_?>{+S}8+05MIu_1ULi&~t8&!~zR=q*E z`xc&W@96Jlfs41AA`593VqI3kXMaNt+i%0#^t)UywM|EN>3B-XnRgQQMY_KRdZPub zK80?zaZicgP5f54YOFL-Re7(O8i+iyV)by63R%7^{4u&q9*^*zE6jI9W%X5yr|0F% zvR+G_Yvpp^5>w+?YSHvIYi9M>h!aZp1ioC3y|oJGS~iChlg^mn;S7D4zK!L*%68MX2X5Y zqe&b@whTs3+Su++fC46ArbGS6QQI1B=4=%c+q@lrMg7OY~{wNu2?wQ(jdqdGREPWo?ZyKq-|W z{aKsVL#wsB-B-gX($lTSeUDgH!ZT;#WaTq^E(6)}9l5bQ=h<9JH*!5038Z@E%!Bpo z_mq*9ek=#iz}VlzRd97`I?duGb|Lk&^1OahnrU_CEOWjUnCJ@~$6PUTVd3D-1Va|% z=4r6B_VReBU?zHQ$<_45_RiYt3A*cggzTUF4*I%oCE~x)GgC{oNR4G7k52|}?_x*J{&?Ci zxOPtKG4NiJcLRND#zp(LwX;1mFQ)uFmszFL-q{sj*PEL1_*N-N4lgSj?}=O-ecgSN ztwnmZcXrnYlr4+h@vHtF&(&tzIcD?Z3x3>*%}$N9CejizbVUPt=4K+bnb5(sJlaJj zwj=gVQWdAI6fx_X91ymN|C$oI)m8J>y!@HUG30Xh@Dvo@a`17JuQmr3QQGYL{xS0k zcZ2tH4ISHcL+l)9L<_so8V9o-c<#A2H9NA zliC`WMh7mNH;6R%F#1p9VDsE%RW+5{u}}j>@UZLNHEd{4L~nI%iT{n}_xu){d%RL7X0^ihSMtMS z)#Rn=3NIgHV$K3GIeX`>bID?>`ytl1Q>$S4J-!qI!hqf0@aY%yf6DlC-|emNzX>w} z>i>{&_Wz41QyqC77k&sLfEpt0_%02M10*3m2w_UU4H6Qo2oME6#(?n;V!}8n;6O1X zbio1S8$~7I741!pCVxCCU6`io_TXQNC6RL^)JXIANwnDJYY_jNo7IiKyRY5ux8J+B zzTLm~(=l&t7+lzF*ht~VWGKSn;i!yqm+eEY*~gKNhUuk9RjYC0%5slQ2ob5#3F0WO z?uHGl8ckTD4xqsCdzctPrSkDpMkZyl!Fd{KXk&eh$C7w9M~2|AaZ+wgF8+k#MG-^B zjspHzQsiM$!q5%!H9=@tKvhfqK>(m7A^_QhTIK#O+#5;SX=|C|1h8oV=8gX>!Xs!L zbp$w}0}Gfv1_Ev{0UW}RiFh0g$n@A9xH>{4q@Z=&c!>}KPG9i4wZ6w3go|Z33Yyq` zX)+=io=nMdg+9X6DZBDJHZf;1~sRDp4CILrm&crCATTDumP4bjhe-A z8xnnPJPfzkWZ}H2mwcJ&FeS_4t#B7cnUFF;BA`DLKO|?Q(s5a1X_AyY!sG}_nquXj zx+#q+$q*}tXqaF40<&7*0>3(8VvkN5s9|c&!swah9^7h)DK&#UjKw_;OO(hNlBp;9 z#>zc$mJo9X7s42`Sz$__5mLWl!#Y5G#DIxp(}@TCdVPhVqxmU^LLq-=G_Lq|pb#K^ zv`{$EeuO75$^jBbi=W;=#&r6jAIPLJEXV?pA1d{L0Y&XW1?`bP3g_KVe= zRVGOMi9X4&dXhx!uPrph;>-DrT=!byy6&h?X`m0nf({fLA{(qEm`OV6dk@{UKbvSU z(RwnBod%X_`G~-RmLuWz{x4}3PlNxNM7}$f4dA1?!$g{ADcNKCj$ohq%PlR@#KAH@ z+mbI)E}W@N9t9zp|>HtLcZB@Mz|8;l5?}y z9-NXkLp70uxHm|vT9va@Oiy|QR+X0ZKG&LfODBIQIhgdk3Pq|Mq$IYpbfz}m)?O!e@(WzdV zxNBh8U2_6Hm_Q%t`(%!r57?#OvnO1MdzmV`e9gmH>+{;~Defvp z7wYlWh8c3v>YPN5u2`8(lPBg$+~4wg(@_Xn(^`V& z6DI&2-5=)1^aDZHvDbrpgPGBn3{7_msRL?bbN!0xrZqK*Rf`!->vAv9g;T<3J#?CN zg&`%q=l1W&wmB?Gzh!1br8IMmL0p$9_Af5MkfmoKO{`+mI=&;-iCqMbC~u}c!H0R*YjoI-{f!;4GD&j zskO{x+?Rm%ZO@GnS)PV1dl#c>8EXU%8SSU9ZBN$<#ZYh%o$ACRC;kdcnX3Wz2Z-^V z;nqX*k-<%d$?NU~i$C-iLCL1O1zSMB zM!m=6SSj{rJ!L&sg1y6&YLs?=clWi%Jen5`)F6mPKwN2dFX;bX-l4P+l{dP&%vb{q_Wb#r9z@iU>Jl6ONdBykaZd?5RiZdOal~3Yw8gqp@gnD5Ttpr zh_&myVmdg~;>(n?smE;l?at@!?e6bq z?qkBY7aM`IjEjo0GJHzpj0OFXrWC%(o%u7|;lwG-hjO52O!iXb69JAZ` zLm0o}ZsH(>k*@2_(a@xX6Ubkz{UGboq`8RkB1aAC;4rd)u_B9+$d$ptk4pUmmc!Q& zmjFIKsIl9QOMd4(KGUg^{*Q-IPtSu;gLll-kT;jYGA~H zKM42>!x%X{sv8g!`wzv>`6BT6euIP7k-&`TZ4R8y77ioDs*mdx4huL4A|L}qJZ`<2cZfnM(~k)b##427C_X-^ZEm~wiojBU{7{HE=-7J7n|Aa-=F6J zIfTUD2h@GWj3Qls>bS1lB?JNxS0~LJDMFZ!o92c9yLV5_3>Zl!vPZ722-25xSSnPN zmQI*cx`|sa^&5Y#3QN(`Nh&SaoKmEsI%&5o=8VsubG&cxV1WTsu zT0pGv&2CJen2!Z9`P*d28w9ctA`%4wkPb&(>aWnTf&L@I?*quA85x7G$DR{$o7L37 z=?AJ;+O1n2fUOf@TP{b-inxk0bFTZmPM|SI_O>2cI(X(5&bqT8+py4cS-mXs_$IBw zBHf31aBG~;?h;?SxxV}MC#ra0G3U6nl@=_>(3W{y$~UGEaPe<9o)R0wwQb*g9OyAL z{ky<^apjrJcJFo-=O4FCRjq4sJmt&J;g*cWmm9czo>WF*i&F7kQeJE}59wB`D_WMH z{Sw4m&gbspB#mIXG5DQl_p|M!Y*ctGs4>k{>e=rNC5yD+TsVeLID@&;jm1pe@)qs~ z=k%F5Kdd(aLv`Hx0^x7X>$?IYIi2CdZERJ(z_K;9 zh~$M&a167(BQPF3+)G$yuLMJl?}J>d1B-E%OH}8eZ1A2azN=~_w)F<~F-qsHy>R9D z)HPD{Q!9FDQ2DZ>T^0OcT6MO0g9yz z)poIlx3Tb-YE)BHSV+)NC=@Oxv{gZMjFJVH?IZ<(;9y`|FoqkA-O#bUTugiR4YV7e z9SkTY7p@q)YD-X{@VWpgw<~3Iyh=N|;q(vEERjC#H#!6y%#Yvi-%_Ibdf1c&TAFWs z*FMJ=K`Ts2y&T+knzd|WzU=Hvc-_%=AM&r~s$+StpaSDY%PEP?(22xKp~=zbVtqiS z14LZRPVu*CGsT&B#;s^j_w~<{opz-@617;#0@H&JjkuT~I(0LhBF~5xLJk9lzKN;0 z+o2QE_?T*LrAQB%=sB9L9?T)u9c?uF{QI`%LG+TJHrYnKn)CmDEt|lzfx~5ptm=QG z9lE>HkgVFBc@ykl=x*grM$=NmH;Z5wyCTr^bIQz|(5OJ>v|^K{QCAmRu}z?*Zi!RY z7Wo?R7N{DX7v#PT;`yg@8yXBa}Qq(615FDAQ1 zC}o)`Ph)*(`YacaN7L+{lpwaIK!9I)JuIJ{uh4gOp^>WSB$*f(XA%t`cMDiBn*Xq_35w z^-~ommjq8J-=eSkfhsr~$%c25M#(Rzo$nT0Mqn!ZNs^wv&#$U9ssiUuSL~|D;r>ak z(ugalEG*m}dd>61Oba1kTT$!dSWyu3TUfNoTo9LA>+i^&4Pe~yw_;WIuouS&`6#TDg z8*fKBw2@=x3n#Gyd~}N0I3XT*c;s2R&12nN&GvWwMW3G-W(CiV1{z{hB!QP1ZDFpJ zdDUIb8TNPWrSctY@t0|@AgT7-!nd4K8joYXVrD69g%zAgJy-j-Y-S4IQ@fi3oqP;S zRWFsR$2j{^TQgY0;+*t{0_&g%<47-HtH;pLEk|-S_>62u-uxR@-krC@%(twnsw|!s z$wYd@%gnouNso=~eqM>FrAOP@!}?Aft%v#uZq2qS1-mswiyNW&@)Z?wg}#!rg(@9} z=w#8Xy@S))W0DI#pKSat-;V-}RBiIBZU5GVBPx`%zVlJ|CcEvP?@V>oiEC9{`d`*r z`XAN;MgHKAFt1Uc`1c;WH#A)0U5b#u-KKB`TnYYLes0F^NpR0J?ZR zPe`q};lCjNX*Mf31dEaX8BKn;|2CWK|8s(+2F<=`gN;8q_9s8fh$d9AaoyB9y)g|U zQa+*AMt#jxi*;0#Q(Rg2!+A*n#a#)GgC-bNLfMY8rFB7Sf`XC4`%q^0vuE|S``@Z- z)`jQy)cxkv_4nq}C+D-h_A>XTdt60CK@AZEs2pKCOJZT(vxbVlXqUSAUh%vx?Hp|k z%%3^>v;!vIm>CLa{CwUEm>n<&&yA6211FDOu>7RUoYcH#eeFICfFohTKSXiR!WqcA zs09(MSOJ3GS4yskY%v^5z$wy9fo;_8fn-!H!2u;Ln`S8_G!;o$i31=B9aqHc&>dur zn@*QA7nw+Z&K-g*0l+D3(+|weLns@Ani9n-CMYppoO%h$OcqcO(9!&ilN>6%fuDc@ z0vZMF^yT9l}J&B%s+8ai) z67Dzf^hw*0;}6#KOSF+9A~9uVeWXZ9$B^WUoxB`aFdEwHZ62C< z*D-$nLRCHh&R%Z-g|Qb#AS$f5P>BfezA{K69$erLyLcBeQAB?NR!T#jFC7^thkGN2 zK@<5oSmx0M1W55t0*DbU^EfW~hQZI|?_9 znM|;e;Ji3Hf+Xl33Nso3FnJRw0$NAj?G(XnhExEk_r!1c?QnsF-XDbLR`-*g6YfOp zXqxWTw%hXFbgV~jG?Bm=G8jC9SsoCeC~n_ulr>j|YrEV&yN@jh%5S>I12&9I#F2d< z>I$JY=84}wj|hsdh`$ja_ooDi|C}c@p~Z4qDBTj(`GMGQ;X<)V3`w;arT{fOf_Q%P z+11`8*Se>pYkThQgX+IjXZ;1c=glos`-=P1Wr;cNG4^OO1q^6=isiTsey*UuzzAuD zv!H9TQz*pUa-9SyiaCq9jKwg|s?WJ!hE3U?YYWjVqK|Xy?EI@mP`@7_viYd_<^| z_BZoe{&hZRP(z8+P|2UFT+uh)|4V7T8Ol>uXX97dU9;55IgyFmh8S*~|j)a+$Xr=1vwDp^ENg3R4yZ*Hp8e~i zKkyM%1u)a-G9|436UoX3OdwUhar9-4*+-sAeLfMQMN4^AC#_0%g)s$35s=nzjhj4b znZ^na`ck2`0J3cp&(2b5$qYvs5Q^X$(kN96Rgk)|4c)wV%?okpM-V~#am+0S(Qc_r zV{X@Uo6Uw0y_zdxu1kXjKV@1ccz!G_Zl?3{-D;C2?L!J|wi-%Yyq3#=l? zp2QHBz5;-rCEgJ!SyuF%MY3}aX5z%PIe;$5xk*S+SfaA#F6#+1O(9ExhxXAzQz#Pb z2)mn+)JvKfZyv{>>58=Lx}gK>s1loEfPGT(B_|_wu{bNMQYlRM+i$0Ab)8YoN9LQn zYw#8w@5_=eMAb&ePX8XwNEyW=H6F2`tniDvcoH@1=yRnRDQhr8)K0Rw=9ag?h>+Iz zv+qvQL`z}GYW=c|hDjESLJ~FfrWQH@O(6QdTlY#t2{Yar z&Acu6vzn>+5|qyjLaCB`c(` z<6*5z0*Cqqm5aQ4aYMRszgES$5T)WhH`nd#k$WxA40DdcSMeMgX6#L4P<3))w+}w4 z`%jkw%S28}U34ACb&F7<`gg!vgJ!j;#7e)`ySn;9fro ze;d2ZDp^Cj4P8(8n3hxrZ=gdf*Ie+6`_I$UbXy4m2vbdWtKDv>HgLNT<}yC6NyK86 z?JLBTVAEDD2i%2lX!9u)ES4N6e|VzY;zQ^PRRt>8!P6tUUUE1OpFbZfw$=R$W{*Ub zp!8qq9*<65Ief1hy{N~!0J+FT6k6fiMBcLT) z;$+YElH1>?6IOE_>T(U{Jx=z)+GDb)mks7=w`%1~!fuH>tBC0F?VIG&H+LRiN@+6t z!PBJYuYh{pKq?UJ+!6(C6R3o8GtX!v$pc%x`qSf`ch#VG{w0mw()LMs*6 zSX@Uqv6#YO(iC0!&Y{fz!Uy?9{XMw!GnckFm-lDw z#@c=DLjAN%@NIC*A5*Lh3%Y$dPn}JB7NhImqG>$;2JpedAE#CrhCREa`@5DhLe;sC z_PSq|%Ra3hNvV)Kxbb8*y%4%y&PwppVR6Tm8X`yl5m3gadV%Ii%B}+|a2pdj~0wWiGqbL~Sb$ ztRx`hiu+caR9c0ARfe$*(&S< zCn(Vj+=(J{w(lzc(;s6|pzBLlsG+FpwYs~uZNK{|UJLAy&j`C&A+9Qs-@U~|dkaT+ z!;IpkJu#&%3p;e=KbUDV(ll8a>!EzIw>^9J%w-ves9(LlK%pG1sN_7^>;YT*{svVIPEc`%Z0iD^nAx3!a`R~1em{;&FRw$??X=T%|F zniw|;Mdd7q%eVXb#8C_nDG399?=(~kf8u9L&%^ErTgqHuk4F_(vPIb

)$i#5mr? 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 O?1+CpO;g{0JNrNLHBQ?A diff --git a/bi-connectors/PowerBIConnector/CHANGELOG.md b/bi-connectors/PowerBIConnector/CHANGELOG.md deleted file mode 100644 index 080208c4e7..0000000000 --- a/bi-connectors/PowerBIConnector/CHANGELOG.md +++ /dev/null @@ -1,11 +0,0 @@ -# Changelog -All notable changes to the connector will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [1.0.1] 2022-02-28 -### Added -- Allow users to enable or disable validation for SSL certificate validation. -### Changed -- Changed beta to false diff --git a/bi-connectors/PowerBIConnector/OpenSearchProject.md b/bi-connectors/PowerBIConnector/OpenSearchProject.md deleted file mode 100644 index 966c55a7e4..0000000000 --- a/bi-connectors/PowerBIConnector/OpenSearchProject.md +++ /dev/null @@ -1,79 +0,0 @@ -# Connecting OpenSearch Project to Microsoft Power BI Desktop - ->[!Note] - ->The following connector article is provided by OpenSearch, the owner of this connector and a member of the Microsoft Power Query Connector Certification Program. If you have questions regarding the content of this article or have changes you would like to see made to this article, visit the OpenSearch website and use the support channels there. - -## Summary -| Item | Description | -| ---- | ----------- | -| Release State | General Availability | -| Products | Power BI Desktop | -| Authentication Types Supported | Basic | - -## Prerequisites -* Microsoft Power BI Desktop -* [OpenSearch](https://opensearch.org/docs/latest/opensearch/install/index/) -* [OpenSearch SQL ODBC driver](https://opensearch.org/docs/latest/search-plugins/sql/odbc/) - -## Capabilities supported -* Import -* DirectQuery - -## Connect to OpenSearch Project -1. Open Power BI Desktop. - -2. Click on **Home** > **Get Data** > **More** > **Other**. Select **OpenSearch Project**. Click on **Connect**. - - - -3. You will get a warning for using a third-party service. Click on **Continue**. - - - -4. Enter host and port values and select your preferred SSL and Certificate validation options. Click on **OK**. - - - -5. Select authentication option. Enter credentials if required and click on **Connect**. - - - -6. Select required table. Data preview will be loaded. - - - -7. Click on **Load**. - -8. Select required columns for creating a graph. - - - - -## Troubleshooting - -* If you get the following error, please install the [OpenSearch SQL ODBC Driver](https://docs-beta.opensearch.org/search-plugins/sql/odbc/). - - - -* If you get the following error, - - - -1. Check if host and port values are correct. -2. Check if auth credentials are correct. -3. Check if server is running. - -## Limitations and Known issues - -There are known limitations and issues that are tracked by OpenSearch including the items listed below. - -| Issue | Description | -| ---- | ----------- | -| [Visualizations without numerical columns](https://github.com/opensearch-project/sql/issues/347) | Visualizations is only supported if there is a numerical column included due to a known limitation in OpenSearch regarding subqueries. An exception to this would be visualizations with columns only of type string is supported as well. | -| [Visualizations with First or Last options selected are not yet supported](https://github.com/opensearch-project/sql/issues/279) | First and Last options generate an sql query that uses MAX and MIN for strings which is not yet supported in OpenSearch | -| [Visualizations with aggregate functions selected are not yet supported](https://github.com/opensearch-project/sql/issues/363) | Specifically Minimum, Maximum, Standard deviation, Variance, or Median options are not yet supported. | -| [Basic filtering limitations](https://github.com/opensearch-project/sql/issues/347) | Selecting more than one value is not yet supported when using basic filtering. Due to the issue in the first row of this table, selecting one value for basic filtering when there is no numerical column is not yet supported. | -| [Top N filtering limitations](https://opensearch.org/docs/latest/search-plugins/sql/limitation/) | OpenSearch has limitations on subquery which does not yet support the Top N filtering functionality. | -| [Advanced filtering limitations](https://github.com/opensearch-project/sql/issues/308) | `does not contain` and `does not start with` filters for string columns are not yet supported. All advanced filtering for numerical columns are not yet supported except for `is` and `is blank`. All advanced filtering for date and time columns are not yet supported except for `is blank` and `is not blank`. | -| [Relative Date filtering limitations](https://github.com/opensearch-project/sql/issues/364) | Due to a known timestamp issue in OpenSearch, all relative date filtering is not yet supported. | diff --git a/bi-connectors/PowerBIConnector/OpenSearchProject.mez b/bi-connectors/PowerBIConnector/OpenSearchProject.mez deleted file mode 100644 index efe442b6baac05b91163d0ce32c05bae73214a47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33387 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

RgCsg0|G_w!2$W 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 -6. Restart `Power BI Desktop`. - -## See also - -* [Changelog](CHANGELOG.md) -* Installation instructions for - * [OpenSearch Project connector](OpenSearchProject.md) - * [Amazon OpenSearch Service connector](AmazonOpenSearchService.md) -* Connector user manual for - * [Power BI Service](power_bi_service_support.md) - * [Power BI Desktop](power_bi_support.md) \ No newline at end of file diff --git a/bi-connectors/PowerBIConnector/img/pbi_auth.png b/bi-connectors/PowerBIConnector/img/pbi_auth.png deleted file mode 100644 index 5af0eda5760c05eb82fde2470b96c1827eb3f500..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21585 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

B&Fr|~6f2VD@8;_*E? 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 diff --git a/bi-connectors/PowerBIConnector/img/pbi_auth_amz.png b/bi-connectors/PowerBIConnector/img/pbi_auth_amz.png deleted file mode 100644 index 3c63ed27a257b454b2182d7e84a42f51baa2f3c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25850 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 Z-6Q^&C4O2dfX!rNEKF_ARh{v=^&f>*g*yNM diff --git a/bi-connectors/PowerBIConnector/img/pbi_connection_string_options.png b/bi-connectors/PowerBIConnector/img/pbi_connection_string_options.png deleted file mode 100644 index b7bf7f3ce1e2a2f81588b4d40e5833c4d6eda12e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30412 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 diff --git a/bi-connectors/PowerBIConnector/img/pbi_connection_string_options_amz.png b/bi-connectors/PowerBIConnector/img/pbi_connection_string_options_amz.png deleted file mode 100644 index aff8ddc9848ba65f7e5c77f3fb4c3713c54067a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31719 zcmeFZ2UOE*_b!OXqZ|(c9;H_sMQI|vE2t=4rFRKEw9s3K6{M>eK&psr1g4b>;I06h8A>#FHhHa2uR$KJgo z!1H54H|;{$*aU}J{|*TZd|75=i;2B;?W$#@^D;B$ndnTuTI9+B)4YF^Jeoi9Dm8yJ zbv~7xPY?6!_x2k7OV!u3*TUE`hCq^bNOg5cow$wr%bj09(8=VSrEB?#%nP!DU4MO% zJ8vhz@$KY`3mw;Q{Bg+t!yjk5tvSxA$bH~ZJCx8Js6?AC*CaMSy=Ymn7kgHWl0naS zWmVQ^gPrR-xDE`G?aIf$fN8O@NsAN-upXbB<2ejGybgNo#(K(=W^o*Nxc}*&q(i`? zg}S~X>*c=os? z5cA4BKRdL|P%P^FO4D3{Urff;e>HMTrepBRQkfppXKAcKp)XG(qhGKP#w5a0+hXXR z)Uq)~HLn-%@19F7?HAxj-GIIVw=k(SHC>=L> zz?{VIGk0rM=PX@Ylu*@9rv$)`HNWJm8x4qe?G zB9_YSf|z3vna z?D?bG$W?XpU(=D8h^6)V9Y>2Z=MC+i*a|%*L_9ZfDf;m2Oasg|68Z$%8&o)qbE>SgO3w+AXcSU z?z%i3Dv3SI#ujw-WYQs%i1cv*mt7L^1}QatT50~)$-*8R3ok}3@S@qN$SSL-6rTL$;e|is^=G1QhQ?xl8Jq@ zGMAF>wC)Dm+ttW6x5y_~xma$}vTBntadwWw1kvtcy%YT!MU|$>7Cm+2Fd8z4zE@Wz zm$IyTjg9U5L#u3yr6-(|?{+U|)MJx(&1N|)B1?u6+-P+$UVfEvDLE3-7_>HP&}>m> zp@~+Do^ukZ$;of=G~K)lp3~q7k?R)HHI!dTE?bWRyv>uc(?uh92O=N@{#O-S5qA_% z2I@w|#MYqJJzD*TUFf)s9ScGvtqZeFwd?J->6YXHFKfrUp*-M&&qoT_=W68l3*Fk4 z;(i`t`>t>O)B?FNT?v6Ov+9j@JL4nIxTLv7)1C{1JC6zZ@Z*R>E3OD@Tt%%MH4T-s z^75SjaETiJ97a5=jbX8&eC)RT&dy$A`10)bOglHe-EK^XYU3nKlbN%W9wssV#yJ|Z zvAG_Vxgu?yBo)}!xX3{!KsE{ITvjk!b%7m6%Wdz$)BMt8gfJT}Jd;agQ3dQ+tIPB# zsHK>moBCq}`DDz1e6M4u!R1awfP5lVT%E7d@YO}!0)Ktypw`x0l}}KCz9JDgYS~?$ zanhscN{) YFy`;Nz4XMPyX>PU?-mvULguX}0-gP^XL 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 diff --git a/bi-connectors/PowerBIConnector/img/pbi_data_preview.png b/bi-connectors/PowerBIConnector/img/pbi_data_preview.png deleted file mode 100644 index b26bcee6be39b882dbbb47fe54ca2f9853cb31df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102916 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%0A^R@z{F#$|;MyRSUfsmLsM32KkYVqEaC3v7>` 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 diff --git a/bi-connectors/PowerBIConnector/img/pbi_disable_parallel_loading_tables.png b/bi-connectors/PowerBIConnector/img/pbi_disable_parallel_loading_tables.png deleted file mode 100644 index 4e12022e9e8991998874a2a97cea25d260474ebc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53093 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 E08x@JApigX diff --git a/bi-connectors/PowerBIConnector/img/pbi_error_conn.png b/bi-connectors/PowerBIConnector/img/pbi_error_conn.png deleted file mode 100644 index 261999ab800b6475b78601c6bdc5ab0228c44981..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14402 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 diff --git a/bi-connectors/PowerBIConnector/img/pbi_error_driver_not_installed.png b/bi-connectors/PowerBIConnector/img/pbi_error_driver_not_installed.png deleted file mode 100644 index 76f5da35fb71e2867e359f5c9bb50a204db2f660..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21120 zcmeFYXHZjJ7%qyUA}XMwA|Rk51f(gwgM|)3I!IM|?}Qf64+K$~w15ymK{`Zw4N*{9 z=)EPOmjn`82oM4%`h90^nKN@|&fK}b?vG4n?Y-C9Yrkc^Ydz2V#=HQkF~bmc16cjn{og=DwgI#(;J{y@5n#K z`>E$XvpIW>qir~%i$*iksbk$LNZdqh_aw`}sL%r}V^ohln!eFG5N)Wr1+Q<-k~Q+T zGAb-NVLC&d=Nq-T;X;;{Q{QVqYKunxdL;9o|98sLf9}4x_+K-(y<3SgqSUQ)x~qgl z93v4||9zZIHY=38S--<{y2Vu0)TH^h*Ot?om(S+3#36+cPB?d?jh;Hv8?~p=$(Z96 zDWLL@$%~6rVbaiW(sKY$Ryb~%-rd%A_HV<9hlEEZD^b>U z(FnHPPNkC}`fGhp|GwpAEF-Uhfk9P610NHY;@-*UgcDRWR~R4Scv%FxEkXNl|Hnrk zViraNVlIcCM4VtNl>lFj!~xxWJEg?BC7j zBkvLDXoaW>YnlA}v2SjDgQc%M%7wjI%l(28+VMQy_e2-IIz57&VnaEP!_Wf4#Qz>F zfQ7E*ZevSfJ%_ui_V)I_>F+-|!kiu?oUZxJAC)4G1Xd9kFbPU>-uup5H`iwer@(y7vQCiS<0u8!0N&K*8&C?v>y#6Tprh5 zzN9E@YW;ZVr=61%-#)b~_usBU{qn-5N~+RF4K@_(-Sl}DtH7W14_j9M*o5-Py3{Y6 zaxNEF)*kgXVa_(nA0k3&{-0g3OyLI+S#qHM#&t_;8I2H&?-0cv_0szwZ7;OI-6OK>^OnPv z%>KZ=gU@gO3a#cgYU^}aBz)a(*=4UM`UFa~l}jHut;PP+rXK;Va5$24vP3DR+Mh=C zKQXHRS9kiqdDs75Gr14n&axB($Sz_)8SK=O^xD5JhR#1D&{74K>s@{g*qWV$x3N8n zVR;bZd-N>m%RJ^5&0i@b(6?z=Mke3>tC#UJ^ZCMU8rq-QHHaaH`$*lT(U>#ql=*N- zva6Np-QQS{54opBn_2$@e)!$TmSYU4SbX+UutxC0{V!L>yxWP)(O>O+`vB3 ze#H2$(FMX1IpwQ|DOD;cKw*}DCAX=f*+gYokCchS@~<}~j&j*4pli(7$N3DSTX33|As40{D`cg@ld7V2X`zOCyZhfN*#M*&?-{hrg5t_&h_t1l*}0!JIuH;GyJ}6e(6i7VD8?H=% zF*=AHc5q*rPo2}RvBh6Vt+YNqI!CAb%O>xgf-Cg)Wwa|@6*f*foOSqMl`!aSpU>9O zgS zTBg~miEMT9LI!n@u3ZKs`*>j2wHdYn+4@Kq*BN^Tz!>|^{@cPfj1GHJ+P$%9>U2A1 zeCGJcAm(U6hP9>=pH+BRP>*ETj1B){G*?15lh|nGU@qGRpxl1;SoRKe$W=S+`jsbc z$grT9Rz2~0U~#T^wtZOEAK(0;dY39Yb?GTyU4?J#3g-3`U1b)HU|l?_8Bh=F?LjKV zN=DUnPZpw`p0=!)L~U8OeC^z}EH?)dLmGYWg{g*Uosz2-z`t1-uFuqUOH!;Q(9f86 zPg+o9A3a_{6Q;UiRd1B{%XSSTMUKl-_v`U&pQ;gLEARsN8HgqLFnZqk#KxjxsRux{ zDsxX(JjJ-9`RrowSFMh4S4H1w!apnu#%W8-PLE>JknSjy8brugZ`#*qRoDfdpN6Op1*SVM3bI)H4rQWu>EQG(QQVI&tTVNsm>(II?Si1 zS=9cYj*`$-Z~y@fTMCa1J5^dTIdKd=2mm*oIZN|B<{A*|@*r#N)yKW;rbVgGp<}xC zg2Q*wkHdbGAFVwLTKbfp-Nlt(Lm_yN3^tDVCSX8FR3gdsdIRCV#qH zt+L-KtRs$KRBMmntlP^@lH0!4@wAg!&M#vC4-N=wOu- zSz}1m26eqs=8Q~kV!I6JM%4<&)$N3AmojG*sV>z02y~0vHkF>bzf2ki9$F{IaGgV( zMjnOP;jvN4C85W=Hj7(yqTYSvu9cpKjf=6KNMz;vRK0jFeTr!q=fmbgyA6Yokif;f_A7)5y<>wBgQg@{Sj)dj-9o8CYIC?tcD%%z_@^&sIKk zSUmG+oHC0@(N#Q94wLZLj*2EOdVtPxo^gx1GQYH*>@!2=(}Qp65q4()%j zvNst(`(*Q~KO2)lH)?Y!)mQr;Uj5 zFB$UZQlp0K+^Lu1S)7x0VkK(t2~P#p|CTZf_;ZL#J=5@;{Z{ zUID4C%%>lBup24jxPTto0q?@mI^9wI^QF}1zp z&lczNU3a2L8cnqz+y_agJW|*w3pDzzubD@Bk%^>EMSD+ERI;ER^|r|Drf=|iBM0{_4H^LzQZ`2U6J~#Y3S~d1pj*9R>_e@V1}&;9rj(alS#uB zsd*{2c;fdxpMw}PrC@>WZbOM7_Jy3ZS$LD-x^5Kuca=_9_O8dq8bx#_?8N(oeZkg* z<}xSnvuWXLz#Y-@5cWTNjK1;v^S^fZ#sJw#ELeF&ZLq!kp4GdhC_7*FfO)Y+{>5Nv z0lI${E5TB153#umbtx9~GnN~2K0c4=D(6COE3rp+mRb2A*)5&XU)T3DmyZq-if zUUXVDu#vA)jsDc;>2S6~=F&*z9Jja8i?AcRvR63|cUltwbtyc=^+C;=lg{>_pY0lA zxKXfCCuMtWoMB|n0uOy4u=*N zP`depzL5s(U56V)Kce@_FBEQg$RPvCZIRk^gqrX`;D!67`wEr*kSoAGITC3NGuur1 zCJ1EcsZf8R6DAjQD^2Pv&fDYka?tW9VCP#s5RYoTUky8cN4AMnZ#4AOj>5fwW9V8* zDQqUkPqnt&H4Jcu8<)Ot*7a2UHAB>Sk8SFQuy zkuQk1BbmQt_+#fgZFkyxacD)Q3EnW9!wObx$~_vI_s->BUyZoBzQvqoQ&9KJLET-A za{ND^y9TsZgtd>j+c~6DCsO2$YS_)*i*Djmi7p=&+s;_tXad+u50!xWyWjh+$ZS#a zU*U3)zT2&0GGL(*h3=8+K9~KV+50n0@YG50Ln$Mca7vFbX(J5!3iqBe-@~Mone=QX z&!okz-FS-F17mKEmq0M$VB$(yPJLwtr4#5L<1q7JyXk;o*TZ$G3*24U_+>!$ zpPl#bV%r@H-8~(gx!ue@$MEj#j(7%U$+>>3{dv**}imQvuDv%QsIIGdkL0 zc2md9fuL{Mn={7(4CXl-N$5}fW-UgAL@0MwgYokCLQ3pjKzIBLh)k`#TuW6p;yy;a zawvSg{M!0vaMk!0<|uz-jWvbDJb^3;^|c@8CvdzK^Y#vi34_U|g(F+o5uQ#~e#%g@IkpNfMT)3P+>6Lh7$C8~iuvB+Yvf$kWC z9Cd7o$;_}B{Nyar0a>>>JVw5JSo4XzafZg}l@R-1{Nl#tzvm(4dw&mZG&lYQ9sd93 zzry+dLK<)U>!gQy-QCIgJ|kpWP9-UUDws}r=O+~c6A=a7gzVQP`Nau!e;`R2vD-aQ zaI{w8#9?2+`4%mCoL!af78Xs=yy2Z5owr-=eKp2s$ndt^@oZc~QK{&VC2Tv;8VDhR zWS0(92)fFuk;yu5ysrN_iI*k!ftT%;WABVJyd8coXbeZFSV9v$C>#Q?N9dd zrq(3L((^{OfOvb)JGaiy+c7)c&6+F^mu}qef3xSWATUz?5>o-^rUhH>xFK&Td(T?S z-doOw?%c-LosoZ<*(Adjx{@TZQFk}AGi$P05cJ^2)T{sOMVIj%iUO?v7a zXP(#a4$fC2 z9~gz*>Fif3NPxT}W#PUnTA2O-N4i;KY$ANwI|EUR1>ei-U8I+Eqk8SJ>88}C+&51* ztLp%GuvWjxsCbiXem(*grLP9rgIDF>f0@WeIQ(#hu^-I3LNM zJiL}fI$utWwtYoDk9Lid;^FqJIf!qXU2SF03|i5$77Ye{7}J`v(tRjcRNmJt4Gz2g zGXi0C((?(94j$PJdHxW>S;W)LP4=OKxE}hbgncDEd4U0a9CDL-xK-+nHoKkdm_-~G z7^#QmG?yW#ZLK{ukHm%WIcZg#Fo`P`DT^Ffu^A2ek<<|jA%-Ysc!hwPoo94*U9sck zug3oAwV$$X0e!|BFV?%cMOe}OB>X}WRsr#2jj}EG9T{<$&lDRk%7t?fv+|k4%IW4Sagj<~_)vq5*JrmT+( zc+8GQUWaeJ@<>+-bxAI^9(ahioB zv+sAPv9>GMKm-+)Xf6Wx8NqBCGGNr%v~mjKG7=8<380CZtdvJ&+EbTe%!{l~)h_JY zNXH_I}hV6QzkweNVJEM6;UAHFD=X74?!@MLhjbp}I_p7AW!Ix?c2 zgsKs68Wr$GAns71pClJ-y_a@c)M9%{IduUl7U2Q*1Kw?z(Q;BKp;ys8`#^u@WIYU& z!Q88tFcSX+g*I9O&=e5exL+)2Wbj8oq;}rACL9JGKzq9z`#M!jp&_}1; zB$_Mq16k#L0X2&i=%NNXFfL=LsAX}RO_Ilda2=Y2`)TkJi4`mSG9mQEth_`udY5z{ z-d5sc+vC0#z?dBaJ#Ph9T<+I>B+VCQ+u8Kpc|JeC%?PIbj^!zMg>%jJ-s8Yqk6l!B z)TGK}>6W#fI>tneW+Oa`-mY={2w~(*=||HyZs{D%&V4wtka}smoXd9qCZP8mr2e4^ zV7BAMYS+^xZHLX=91B%%uAEp4h2h@d*sNu#`R7s#s<-|z(QrX#6RnCvk?!NR33uct z`Qgkg4=iE}wu1)`L%r|Z^ z3Yg11@rvBvTMAB!-C+Xyies1o^(p5Am9vS?d{M?N;LI-bedpo2?wXxu#r5&Ut*~ML zQ$I7XanjG~mFhh&{fD($gi+$48OffQF(OUKPPB0rDFv5RSLBh!Eu(cwn~+i5PrgQy_Pec21dkRDC?>Hj3*2_Ql_i-$+u1qt}-Muq=ciJKqh17 zL13M(Wm$gVT_X{ii%v0K`tZ2`vq4n73)zaG{RN}`NNOOO{kB$K@ai3zYAlDiX2}o> zM#^Nltx~<6R|CHt$dFm5@bJyAgvb@;LH0E%U(ibKZv7f7DLu7Xw1_EyqjTwL8w+Ih z2<5F~MLK!SCZ~b?d<%GerTb1|NFmQ8x%0Gnna`0eCwjm%K4t8(k6=yqO#+R_W{D%4 zCDlagIAnt4C;di$P0-yBXVK zva{Y;zf8vTg?4a`K7Jd{(~Th`C|slnT-AE8g7#vd3-88*)b}l zPO-&peMEZ!`u<`RL*c7+D;;mHz%Oj(4k=a&OzxK*4)eZD*`ij;Z`B`5v5_PIcmw`tJY=kS)djtMALb6t#L zAz@wjq}Jyja9**f3=$*HMt0PU*LWq}yXfq^%(4_Uof7@{b{w$Y*}sBUGR}VzbDm1M zihosU({L}u;%nfvu3MTP+Fg4?!gXD~H(SC3x>~tcc$LUkTVBmjKYJ%CnTIvb>anIx z#e#g;{4etk4)W6bZyPSp=2UxYXb*;qMo>BUqRZF{0Kx8^%=(RbY#Nh1}LD;{&aeG!eCgZW;sH+Nh|*8HUI zXDyY5OvN)xG){2P@Ch*kpE|-?PMI(f3nl(ik4?-M==iJKb+GZNMkm`3#Ao9s-*$`N zb#sJqw?r7a)C=zpzWMP)lBk@$mH2iqA{_1YI_+_>IYedp%&az`IP+PGR7G|%JDTfj z5>7AcumV1WPcuJI&I#Mny?pT+)tEJ`6V^up*aOy0lzZvl**xO|f95}%zyJ$o*qRQ6 z`w%jc*jLV})F3gzQOOs26m?#*j)^GwhDX*9Y~i2D+-|;?uQC6iy(*KW&2s~6u^=A^ z5Y=xs`Q{n%!~r@%cs)7imubA}!p47k)$_QxGv>`6g_&lu7AU>VR1m$qS&vdp*vx&+ zd9Mj33Jq1>7Jdi7^k(Yex0e_IwH0*!If}OZ=>eROe89lxLhL#AhXt;mg={i1`6r~Z z(u33+r^Fu;Y4HBcT0xJL-)F$`*_|Lpd8QComxw`i=fO;Ny|J2qR0gRg1!_#)Bc?05 zpI#c;?#g=sMwV0-uy@b1f5S;tBnMh{%f=(mJF+t+Ou#iu*rHfaL{>Sm*_x=Y(%-?0kUO~U`ppfoM5h*)RHkF*!J!-fUMW;vA^lS+(wvhKl=5~{usvwbU_Tf+;`Rn zahsbC7>4m)W%)9yklms&KddvL8Lt z`9VL(pctl3RVO#;YOSl$cVfg5@{6_sixkFP#-RDGh<-3t$4N zL}$;=LXn@0BY{?AUrc1@QhX^}Xh!ZbPwXb0o$Qg1#;Mr>R_Y5RavcKF=}xo{8(~-1 zKn7a!LdA+!R3d0aLwiE=9!eF!GrJ;0q%XIq3;vPsR=!UW{Epbpo41+OX%LI1k?}9? zF6!aNg-_PZ^cVyRuPq{GdqeoYxQxb{au&O|=N|05OKw3zTRCyMGgc&5kyma?k2n}x zGz&WXuRD@WaLbw+z@%v3KL0LC(i+EIJEj zIhEG;YpLki7W&>bd`1SY^Cxs#?*ouNV2|0L5m?Y`LvlYSf5JdFOXY}5_A;{nIMchH zu#r5^3g#X9Ytl>hWoWa+#{`-prY$uzgVj+m~B5!3!>aPD*fIm$5$a{O(=yLlOT zQ)c0v1?tVoJARsh9ij}Y2};N z?mkldNHh#lk0H^~{3!SXi4S#Sfl~ic``vQ#{Cw0g5#xuzKS0ka=??8Kr zmq7I19sM3_)}*|S*Y`!!^6YC{^kGn!XtqqL6pV6dbC72IT4qh3&LA|xCm;fU{t*cn z>Df_%LX1s?%kJBpqxrF-B7NqKF^HUUXDi#Qwpm{I^1S1(3K8FDL7>fhcaBuI@vX0l zv+6DM&d|8I{I9d8{`c}b{+EeZ%F_JbvA@07AJ%G+-x^Rcv&{dApItv*v|aGd2DyFD zyg4;dfJJtFCDGmO{u;a1R0X>}ZBo!IP)*q!HpV7Ze!EHVR548bxM->G;tHWHeCgPk z;ddM&_+X=1a_OL6`fI@uFIjTuF0z$PXZ-s7FVwwX(NyfmkHpYbn!39)ra49q@RrAV z`BYblJc4HGPZbv6xQ^lB<~?JQ>0sl>Z5l?#t+FDi^NQ=}Vm1I;9(y!szzJy_KzuSH zWF}BiW1m)0K`=`08!81%1{!rn+pp|Yk-l|y$==y2VQNkMW37JvMIBawaFJP!X*z1o zMb1Dsjut#TrniIBBKLc&vj-r5h(CU}+@&_E23i_Nm z$pZ+DidxqhI$k&2H^y}=dvYU=h#SWW)xzW6AuT8RvUk#ZEu1>`Ri&rgE&>=_o=STs zP|yKbreNz404;0)S-y5bOZrK2?F;E4cH??K5M9*VTYZk)Fi~GPf84Mu;flKTM71a! zD3=@OGFM3DGuBNzcdRd{%hCxf8qdl8-2dSI(vOpRhKb z+~%S356&`k5~k1#j(!=Ooe`?ZOo7Occ|co06Iy5PJ7+IM1iAF~CHy-DNHA}*lI5;* z8!0=og8QmkVMRw=AyBmZ+Lv2~vfq?man;p*IA0Agh`7MLw4h^V=aEOvo=y z>$)M&RX)~I>3o~K|6oc{<1N&Sk$6<*gRIE-1eE3Q{HD^3?3g6`>=He|sp{4x0KHt~ znCH@NquvzG&5vijd{$ll^5?N&!W&6Dy2AWu=8sq8isC+lnlnXbFvSHhHjNOqa>o`E zMC09?yHNCpSyNa0$%|tjeOe4sU8wD7W zlOzK4$F1b(0V)n`%_^SFlA8xL8f_YG;J<8*)oT7z=dH4X33jRoMB8EtgY)jg`+o){ zXm`X{9hQ+8ot_1F^*CGxfOH`!s0(VavTS99fscLKvtG{xkZ<1S+PVD^%_SMb%eiIT zeKdBeYP9;5rIywiftO7t^qCBeU8lsycQZBGNXcJ7?G^W zz>9xotMQ}C<;PlwYiH%SnB}csUCJxV0qgMqXm+!yBGMvI@KJA*#5yYybm3g zlIO0RIqQR;>y0~L+xBHBrW>0iBQQp|CH?^SWf63%w9PtTG5U4XrbxllCtbN$A zDXGYQ#+(y!IBB+Zj(Vyudv*%kd{JGKV%*=8Yo$a*1^%&SZHuc}MvA#8d_EM>=tNh= zQXSYy8C$)ZMi{_+@Xyl_$*VjN6^UyiN_t9n8x*XBr7270{)_9%jBj1xoGby|vfE$< z9m7ZF1(^H67k?g=AoELgt;}{_HvT-yU#<0dz8{S7uScABHF=mhGXn1?h(;$ji}}3J zZMIdvB{~Wzx%56{kHl?qwF)1SWGHecnGxO+Jz(cD2g~B9!M9iSM}xW2sc?m&7|sJ@ zXaG}GC3)8d+b{usE?c!)e9DnFY10&Kx^Zej;BsWdh68ePMel)hmo5j(aflFzq;-6q zH~%e{Y7ch3m^hVM%YIx)(XnuV3)hfAnv{q`Lv%s^zJLDpoN(^e&8Cq!{6KGLXY`es z=TVE+1(ZDF!mL^E>8LoF09Ui=+Y&2*uUB}yj?GA3ug&5km;H-SRfkaQ_>C`HekadluX(Hde72rp zTs?(WZJCPsihjqGFa50Enm~Iig@h$!TSf1+uAPwAhCoZ7$u||m&==~hFJukG_YB@6 zaK2Yy_K|4#wlw+k&{2VQS9*y<&{c`VIOihmg^efG^J=1=H1@XW!pTh=LbXWzPNEpB zK;C~M-!vSvj1-;sW73nGqtJR}Fm8ZAJy>$8V0q5RPN-_OP~fx?6#ru54piOJ0|&2CgCnZQ^ZVQ=J-g$Fg$o=3hA z$&;N_bba{7I>%vY!^W|EBdVurM((zMiLpbJLwXlcLrUH+zUwL0{^|r}#NP23_-0sC05~ zt~q1|q!rYKlI&?lse0{|=uzC;`=?F!U@7NG&pZ|-4cbRBtq*;$%FR>^xBG=3Sziv} z)puDC<}2Es>9HmC*1i?77qxr%5#GdE>I1fdByggy`ZC_vgDzUHP;8@of>Sy@gk0I% zzwPIY(9L#)tOX*>Ddi8Acb+&ZPKacsZ{GE)6DRbvi(;c1MF^ex z!kVYSPoiD*+HC86OBPql<2Ky)VA~!_ocoL=T-X3jpWwsCF}aGU7+tj9r`TruXrh4Q z%ai3xZng&|&O(5f$BE2`I#$j&B#ic_`-4|OsO^-|I+n&ZkF&PX)1Y(MiA|8MI!}N^ zyPrEl+Khk3D4AAE_x+eTC*hC5osgtzj<;bide7vS~zi!Y@}WpK<}iV;ZoP+ z!RR(G?5$dk(-v3nOt*KZg1nQl#$z=od!1sBYe&N;>GF%v`7y`Y4NDVzX~dTkV5|G2 zASl#wg1=(X*O6TWdOM<+&?aQHSF;?>4u#$7I3mLNMFCg%Ww>(Bq`U=-)R7H22Z7e~n zaC4m*@-r(3auq(aw`#2E$5;>VvL<>bYY*qG+6Hw$!HMp&9DXt@G$SPh_3&G9iJFd7 z&ZOv!OGcTAXy9@mLaawjgt&K;lik5aCatL=1G>RX=ru#){lUraLa@e5?C_E$?}XG( zFCcdnm0V_ngHbNCXzQ}i(oB=4k;#cAf>+iF`yXb`PiCFbmi2X(%S(S1d;~t9lbu{| zt%S9(!ZWr)?l*X^PX43>%qrNXth!l@@br2n$`O9jS|!%E(~Cdqg`d?hk+0(1o2{Pi zy96i*Go4LO%C=#h%}%qT5Wc)ScxzalVulvI$Wdvh5!&1IadH&{nl2tjM_>7W#d4IFb5-&NnRh?5? znfkHO6EItgygc@$G!lKZo{^-i+xq4}{+kCozneeh#0?>qb5x>ptl`7Dgl=v5p4DWf z^PP#n%|2~xkPtrgM+3$9fZ;t`5L!|-iuqRE_mpHa>+zpH+LgjEkcge`_Z-(3!=czh zI^jNzWh0bPIbg40cN#=Mx*^!J-A$f@HwK@0O-OmEmvLxZl$mA0; z-`><_1)j4Iu~Zs??$7z@Z8r-$K>w$UsL+t5Onumw2z!7ORglJ2m>vdqJB9`7-=%H6~? znuLSnC9wg;mjbL^>{>_C?KNfi6Te$FAfch-voD2DrpA9vg%cjCul2;yPZOhl+{_@J;W!Ac`qC(T8(q;EtS66x4}%16Q} zNKZ9F;e3>UkD{pW;p!QcC(`tyx@+5@R&++?AMm?1=ArjR%q&D&!FSQe5n=e%Q)NGZ zFK%=03Q1?&_ATJ4KV@mJ174cf{}ZTX&9Y7Vab|Aj9yxxp2QJy7w~FrxMm=57CKcGU z7rgaafHqE565ji_Qs(1$PT%Cz#||5E^&%4$56-33pc7ts+_m?T zR=Z#OV-21$aDE)aCFA{M6Obw}pLFk4#J$#`7d8g4%hB)FFI<;th6X9VCM%Z%;ZnHu zE!Lad;=V+l)zqHn4oA)?Lv9iJH`shO~HSI7*7`?^oB(U9dp&w${Ju6q&65ak5b zIe~^v^ao|gUk}uu6kGK9IsA-|m#}Z2Myk9Fcv4L0y}`&KcR3=(I`n6NeQ*o%WID_@Rc(^}tILVv8)t_@2hqGw+^AZ;yGn zl@j?qHm=wV@9AS|2UEQC^9GzgOPSB)$X7F7Uytu;4ufE@2(##R!Zwgs#q28-c?mz@c8E=TwWwa?TniKle)w2o3ypE^S|@~6g9Te z;2ir_996P_y$3Z{eN`Lz=bxuWf<)4r343Wu0m&`(voWZq1-A0)jIjD(traUD*wyDb z*$$~8i5TnHr|6*P03h_g6;B7C@PWnH&S?BS`@ zGKwTeDv{|K#FU(oHNmbxs~ygpcml$Q8uKE&7K)BMW#bj=L`Zq^srl<(j25ipW<{MdouqHI-=-$;>t8ocNG+ck ztUAh^vCqY8or4(31nMSTLOm$4LmMX_=oVuWsc+G`UCMN8ws63-r|u;50fE*4_r~EL zi$`7;vMa{IoBEO5VvlgL>(4*Z+fx_xFom(Vze=OGqixd30{Jf4Y!P0YQmfO3rQaQ-kNih$pqDk(@H>-!tFbTOiCt?ph zRpZaDtl-xAJFr?PrF!oQv5lrak2sQn;*?5vHLa36kH^M|4OG?omb!L97;^< zO=!(nr&+H`85*WP>|P2w+>t}>SWwe{e6Mn*yv*(~C@7dm-+T6@{+cjyd17{X_*uhr z0oSC9CpJMb%xHiR8#@rJWn8GZEb|5}FCl2_n}dW-w%;EOCaG{k4Kk}wH2gyEIr z{g3tVYXAMK$*scG#R}uKmW;7E^?QfoBGK%mqxPAc8AJg%*V=kvK0jbUL;gG6s@(ea zIKD==rxT4}Mj6FjQ4mHphyKk>sn7n*0_^2>B6Y77;n`jze4IF$t+3FfF1PizPg<$o zkH^fAsI}e6Fwkz*vW743ol(~;R|Yrh+RiuT@zJFd_DyB%)7yz2O%o3kmIoj1Zj11> zhW8o(*~2%CdqHA#k6p+EPSDFO5vmM7qe6)v!eFKvO&xiJ@=BzoZaLDG)66;vT|7rC zW)Y0hW6dEVF$ysSD>( zXS=~o!M9MA@5|2ApJ@n(TsstDz0~@Gkl<)PXoglhz1}g{Kjo-|yBT~qjsAhm=+!FO zne8oL%oS65ETwkARKXy}9)dM@loneR-nK?##$k~e|JW(YHmjz{q}t15js&n)DPv5hjp zNg_F9YYr1);^iff;c``*{Ic1#o3uJ`-N2WSlg%OuHYrS?nY^Zl+@m-HEI!3F$hZc1 z7gjT@(Q1YcwdrF-bOnAa-XFRgdn7-H;;0B2KXiQ>h==RIC}V%E{KRswQFiVZA2 zb48`Nc5_B>q$_boqOndJAIum(qLi(w`+X^c?uP2+cgbtHOes|KwY2N7tIx#SD9FoM zHHzGHoVmW&Ur{K}D>jt5c!$a}=!Y0O|3@?U*{=E%`ZoLJHxw3H{hV|t#wJVH^;hec z<;Pzr=@okhstUjB|21nQCoy(6u&g4hVUIOFW4={6;)O&?aF3{D@`N*pOUH3&@HdVDnunm zCX8&>=*0~wM;u&;PjGGG*t>~uZXU9ubc5VC9nJdcsH?FVquY^NxQe?$tt>93GjI+i zNR9s4v`)l+HT@ueWq0nk?xrHJFt%PC(dwo1iiA}wcpxzD9LJTF1rw1?a`ulz`xS;& zdbdRvg;nbda1G3P9~~Ey8rcj&}03A{>RSpCsm^lTqj%8V9jLR@Q|$n=y7CM z$*ftC!a~ca_j7cuMa-q{(BsP=CL%(YYlb>KxE;K_8!^)_*QE z__-gXGAH0U9$BSj|AZxiH#zs61xWG1K#YEc-+QESk0Yp($>#ZgmvqnSN9KHHn#aYi>$ z>v$*a*2ZfY@gmSfp8+7Nxi4*v#{AMrQWhVn3pjJdz0ONt`VZsurtBgBmm6dv`S}KL znC&n!+5d07an}d0D#nWdoxf$xPW(bwfmo@nQYK-Id@{`5FKxB4>D5}l8bskxXt}3F zLRB8T$_3Y_M7IpkWqTKz$qG8A!3i?sw}E((Zua0~k$uf*&VlSz_@T^0&ve!u+8?o5 z92sfBeszI{0jPls#9WQ({IPJHN|C6_B{{;ba5Ujb)pT?s04M{Jx zS=GEz5s^nrhW;2a6V^%)^W69Hac~}m(m6gl^T^79B>_jg#=zBKl(A+^O$_B_>BUx{ zKZ%tH?gdi(Hz8_;4@q;wW0_pkYHz!-o%wu2Y|^K9b5mO-vqgJNj!34QVu>D@ZVx8~ zOsw~64>9tvYKz7rJz9bXh7_KXsZ2niKfsF>(vaUloP zllcN;&(8>`s5B|HEV5@<-{B7}GC-J{Qt#3i<^=s?{+A%pK1|C8E%*dlij;ceg0Qzg zO)vcS87k5-?-;(7ge{7HRog&I2a{6ZH53CE}gDoQ=d+5>*9eeinZWs;r(Ou@jXovf7( z&R)bL*Q<`K_DZx9{agE*){W=8$OiAhM-u>25$1VQKn7XwAB-iNe}xTEdkWGYIXZo_ zB6yeT_HW7>R)0rR^3c(yJ5d>6aPcUKc)+v7s5 z|IyBMMm3eKQ57FWNa$VE!DtW=C6Ex{QJxe*98?qoNE@UnEtF71Kp+WCL_m}hKm>(R zh)SdgNQ6)X3ejotwMsjDUs(?Q_s0rC2N3{h-UC@rXW8x_k}mpv_~p$S4jofA8<@v1i}VOF3<`+5 zk|=9H*scO?@s6qudGrqy{UGXQQhtr^xTNYMhy@7B!pxi!ga)BJ!H>zCPW6w2XxWTD zX|QxnX=MJ~_{#fV)VrkQCN!;30nq^Jx20(RkwGW`2Lc0SPs_Rr+RcU4{WH4xwgIOM1H{1Qrp*UfX^9*9E5 zW01d8chgydd@n5n$@q0^58R)kt5;|y0-bkGkIz8wk2Ife+bB87zG#c+T}?7ws9>R$ z)x2h(ZJZX!@Tk%_<);+%HYWO6d&nhy>bqcY@a7t(po}VE8(@l36cYCC{Se7Q}dt0 zPAQ++aZ$L~WfrMHdhRZU;wgrXSu7-~n|6k-f5I;3ChXQ$BfLo_C|#gG(N-=7YTJA7 zt-;HsrE|w#59?zLzD)5g;PPikv4N7jR-IfN+Rg8rg94%3R&?v`$DQ29_}DGRDCP1o zrR9kv-Y0*Pjep?yC_$Y$Yd_{NFicyP3uB=HeHM;Ai64^%6Hg*FSL@37Yc?x8cFKo( zS){20dXOUDz!zOnvZpt#SMkxW)Hx}8sH44f`}7n*KhCgeoYlll522yWn!uks1&q!^^x91(O-c>m7G+|8VrxQ;0oQh)f(OzGQXSD2z&=k z$6vg5{;O({|HXfXT;r@S$nP;MFD0{wkDD|lta#=fHhGSx;( z{Px#d3a?`tmSbR2zQ4Xf$4w8HVN8@%h}1fNV5)DJVl$_~*v!G|b9B7kS;sugIB!>x zBnWL)5`P`7qfO4HLp-yG7j_`#FzkjB#1IWD(nE^MRlr! zPJit5NI89bK&Hqe3}fUKKgBBlGQQR-`ymiOQ@0b*He<2qz7fRL@v{QSJ|rTqQ~H27 zt)!NZR#N5HUsnW{8uE0~0kY3nx!E#MpxM%A^gkW2LRj!)D-M&paelpLb9KhMc#!H@ z!AGAliJ*}=vg-loT_U;8E`NlcEM`3sInT}DvJ0mvX)dG~vMqiP40Y-1CvqR`!h5V; z*?J=`3Y}Pkv8z>pIR2TdH--45XkU{iLo1Qr#uO(6J;M=LADxW4QCmzu??-2(UQeH zrp`!}Zv`I>av8}|c*ThluAjIgN)MsKoKjAhG}TD~b2MDGh>Sf~k(W0?rY93oa8r|i z`4RlR%W5>ndlc53wO>0d*@Q<6L8-ho4N<*{3?$~VON}zQ5qj+LwaM`v;vmg0t~0n) zC|CVD>6N5+#v_k7YMUq^gh!Uk${DhMewQdxkopvEoJmPaQG<@OorZF=o{7ec96I0R zejDQyx$~gHfiYu+eG3UjAhre~I-tO0Cl1{w!b_V6%~(mL@R?6&!VHeLy#ox%fbWZliru%zE2j$>Kr_ zdfKJxS?Ee%Q>&pn2s*f0YP#!|)=_$tilUB~bu*|p`woeQ&3uozs)yk_kyz7sf(~s2 zlW>{kn2!7czXJqqS>6&W%chxvCQ?7JB26mC`7-ngWkp{Ub@m!OR-^$Fat=g!!G8#4 zo$E$fG9D+|!dWY&a0TlI*M3*0JqHQeJOi=YWzT3WY=gl8Rb9v33Fgg7`=f)f_gD4` z0@fFIl0at68f@li1Q8rgKR_9f^g*&1TyF@$u3a_*9`ZGsS+rZT#m7B(MY{*9aR5p} z%3q*<147V=g^erDELRc>SOm^U&D3u6>*Fy`_FGr}ICBo5Cem}vYrnBe@o|lnZiBcX zs_NiFD{gfx+GaB5C{-VkZ!izcDG6bNFiBUie?_J^&%A6^ezAG7I=DT=wPGxgvj49 zX;o8nVP~=8-_dE@>N6>5_HW;v5x=Ey7|0br4W@T!N6RJam+Opb%O}Hq5!)nu>2h|F z9pzdj94nU$|MM+i2llOB-v8g>04QJG1HT&@V#3f3QIS7gX>NkJ%oxWlSt0Nwhr+%4 zlsR@!xNxhYfvaN$+vMm*EWC=~$F~P%=SQM=b)*R9tJT@}!z7rI5mSU`5{Sp)a2WaJ zTBEfoJ}-xBbxbn1QA;#9IQY|0Oq4@+)JF|I-bHyN-(3)eQkvw9=yos8i{bkE`f6HQTAzry`^P_esC+>);v-&$u+Fbi)5{``32W)YPx5tM!~d=RD`>FhzMuWCQ|)ckkXIOG}9upbvBi>#8ntvX!MGatG%NoB80N!RmPi7UxriqIEQ{sKxec;4ne~%kM_Y*nE{;kxC z>16wNRst~nf9vwD@rW@0sf?Wk+W+rr7|$$DHgL+R*REE;)s~4)ZI?a&pJDSE(C?hx zNU5Jz(2!I4Iy!}a9BFIhx{6B5E_-5W<#}_Ur zueN5Q*4H#YQH590#6RU2;?L zt48i)=>%WJJ5A9hx9p4h4?X`LCao^o+4>ba(F<**DQ$?L%&Z|8XfZ-0MO{ZySTEW87k4{z!-AAt}_w%#5f}XSpQgqlqA~6+&#_xH~c%f$5eKD$7 zsiSgMY^FxAjX2DZbN1^0Eyuf`rxZ8=?!D9h%?)9U>{o3uik{rQ=C&mpES320xdNKA zV1FG5uz@a&#R*>9Em@Nqq`JILHVO*C6p5pzw&9EyTH&z}TM0&=i5NbU_`i36>f1)z ziu};`-?a>U&8gGM5=S)oSxrw4+YZqN<_@$7NZKec(v8nX(&8$isLW%{{j!J8@L4b- zqMemB@xSNMkoUV(J;y8w-X4^jlFvX`791^Js5CUAA}so~?1BLT2>;)m|H9*W&CCB( zqBA$Dh6tHx*T3XSg~o>@XDHm}e$6ba7j{8+#@_Ya(Dfkszj7k8?(XEyqO<+G)aBz` z&lxu2#OO!$1H?#9*|vO)Q((q-wEuR$&%m$W7N2zet^GN3Pmy9KsMlfS%QAZTMoKU5 zkN?iM@Z(k`BrGhfxTPvvW?E`^&wXRTdUBQn&fyl~Hy5Z_FjD#?>iS9z837jOcc;IK z8~Rczv_^QknKBJwtlE?|h&K4~KS~jE^^?4?sTxdCVLB8V zdEr=+4fpL9xOtlaEQ9+NV>o_0^bGYM-QQO-<=ErIekM>COE3*!0|p{H4r(hUq=CNC zkiV~tg_r$K$C_v_Qi1pM{Cs}3ue{XiiCd}PF0tMf6wBvktD&XUH8LX0EdKWIl5d3H1iSQw$J zloYBsOdB1yhiLV{jbQA%)Am;^fsTXL_Nkj{V1JHG67$4dj7M-{IM!zt-Da!^9Hy@R z7}9MWgTe1qc&r9r!4iL$T&&ql>U6ZfAC}0ZO(B!WSfrQ@(d>F09!n{iqub(23&;sH zB07Kj!ZLZhIVNOcCHZI!N5b!(wMR9Jg(s6oVzQ58U7R*uQ%12IUB2+I3CNe*r{GTX zaL)faKQp5`$xt@f8-a`6AR^PCWVhU`ItGoysF5Y*0Nu+b&8|)=!WVNTBk|tz@$ngt;9VCTrt`TC$$Sk62*{bclQbDi z!}q*70xbPxiiH4L)LZ>EOkYx`obADGrz_^I9aG0+Q#RvnCrh1g3uQGMBWi4H>{whR zY=3=e(V-9LSXVQW78p=2kd2+o!i!)O!1&M6W^fP^$zU2w14C3FuJ!}i&Bn5v_xA!y zsDA%6>5eAmt1{{hA6P8R&oHsbsmLTh7Ui5wn)WXtNcV`TO-)S&|6RA3g>(vXbfsP^JB-XM7QhpXcMS97H3=cgyEakj+dloSciS|ySB`S}4EAq91=5_nNj(QT@K z_d;gM*q(@lgajm0=jZ2V=^~d-H#XQE>av5_u`2TOG$__xg8)xLr{WZVq)Hm zc-YN7#SV`~*Oby1WY(h&1`y;Q8x5F}QSLnN4nYMJ$l}YUa7d2;a^`KE5Uh3 zy?TxI-g3CNi+jsR#ar`rBTAt){C5HFu)FoRyUo*ymYm?0s2T z85X+&A2;^^Py0$RG9gw>h>~yH&uJ&d8BP$ymVvwOa)=4=AxCt$pi1egM7o%oV4=Q; zv^&Xg@i#2o){=pREN#Ydh94a>>iY3Bfm?d-cKVZF&>x-KQ&Mlr);K6IvRxoVCJiVlHoTv{o*CR-sD%Y$dr4sviAbHsf^OwWf@}xrlv|5t_4!fgI>^| z+Tk4Aa4v=X_XS?N(p*9ueleiIKhj0NO^eoB>bkQU3$N5xF44m{f3YYooa55v_GH=j zqkB}j&0>9QYyZ>--Gk0&RL@%En%O1w$M2Tm!JBR!plf^Q`jW3t1rkOX?`0i#C80~l z@Y)ve`TDr9WQw8IChqXLJMR9qd-BDC+&))(v0$jHlVxqa2auA%5*XwpzE&cb!Bc#7 zx~i`SVY}Q+#qwMfW3SnOaZ5=F^o~E~BmH$05xQ=#gQVEwL$GtpOjQ}tB@f)p=$ZBV zBUqud&%e;cEQ_%xt#PF1F(H)r3)>s;n)A+(RAV@T_(J{o^SbEzI@OPJA%4jZtuO16+YuC7R*DA493uf+RL`cH3BOho5+S)!|*Ka0erRmzpHz@+ibM zQT-l)fIdQUvNrRD_WJ00-rbel z$S?L_O+Uw?S8X$ATV=`a>J>u;U+t0RJe^@3JO26+yD*{*+-kegkJdtuSTDls8@3l+ zT{oy#$H!k0E{-SAg~!+0Y^Y{mo$wW&1JEjfaKA9>&b2H3?5!2i*if(UH~5{2t00GJ zh9LWAnDI1Jt1+maC^ORBddK9(xNo--Hs&{IaD#u3#ul2Z);bft>tAS!H^~kA{7qx` zS$lSqH0JS4DT6<96d_CJd9}wX8~LC|5R@-QddbHDCglw-panc~T@mbs!u+-~(3^X& z*f#nDVE2SG(!i4CZV_+q<>g2cqN8Jf@MOae+D0|GMv4`%1E|#RN1hxL=9U#N{OCP~<|xB3t9H!rbpXLeQfR3EAj54s1X_gIIZPxG;#mG&BJ3132aY6Y+G zKV2VurE-fe82Hf@2aQhBGGZ&6+ zy4G5KVhLBP7v4QNo@^|$*g}h+Fw>rF|0SZ66duMws*F?a^FTZ4$yt9@R`e`o>`x@?P#R3DR_3mY$f1>b_wSL#!8V3?+ zLE1GpewTCe)4ttFW3q*l7fCA=l54v|qnaGwe{Mt*x`6ay?mw5`*y;l~}r zv(t3e{fP(-pe&~M$myHmW5(p|@em5EeD8kLMnLIv8cd}gknqF7BL*lxI$5@_yr_@)LD0fL2`!e0bOLa(eJ*Wv?V@4GKA1V;#; z_?nrTpw5pK0`1(_KfWh6YLhInG7YRfExpr=_~0ur^I@ZTNN)zg#c_baki}tr786AE zC2-Y6r-`L9^oeDqqdVDdHH5G6^0QCPHDb0}eo@EWGaC(u-7LE3u3dkz#@rDhzrB8l zLp1SOgOf@tQaFdium_<1V=FY<(zXt9TQGw`e_HJ}>NdiK?@U zZ$%$0NH(CGAe(G-27=WJR~Euvyz*7@jZ``K5>|u zg+{g)1AB`qjEi5t|5>9L^#t+kcIOdpI2p3HWJa>iXonT>*oS*_LbhYeom9)NkNCpP z^55q0hglpnP^liY;{n_VP##*1Jj< zky0r2z^3U><95$3cX)0OO14&*h^j>Lf*NIs1F#QhGUtIlF)D@mlx)|bF&C1MVbi}- zwJjCce&CCqE@E0|up&xg>qa`j_tFT>cv^;kcS#v`sS%HY0AOPZdKlC{a2hA$&R}gH z8RWYrMYe%dIpW4gJF}rncA^(>9_}Gm7*d2$`#?++8q9N3&5Vv>ZLh0m#+PCvd^-%4 zG%8SnY5L)@$}t@@CBhVy>HIsIvBK4-@X6S|0Uv&5zzpd9%)S7ps*A|;;0^?0T&ob6TvR0M1S@f z@8Nq@>$KuPcL)$%s`V}_fAPA+%HCvT|o zWq*7WXC@>hlw?j~*3~+@xk=Rj!L6jL`dCw28}H;hQhko&9~49%g&RG15AW($Hz9a& zjU!T6hq{fN6Jix4Z@HK^?VMM0_LK_Ny*j?vGc2mp`auvE7kyr`06Uwby;RRsJ3CvDlDFW3HTe9%+?c=Nu(=c%bV!5Hrr2 zVtCe)ONRSe?btx1@oY7KxNB|TvKHgv$cx%8?hdZyvACX2IVuqdy-QQF+2hqpKZD_; z@BHZi+$97*m*|31B57Mmc{P8du~LNPZdhSJ+O#aM;U%|1_TcClG{NSm?QJ;Fw(I|( zDb>|}2Zx$b(xBY9=4SNWAlE~;+_kGr*)F%0`KcYYE4mY4V>4q`n8o|pLwxy|lUbNQ zk+n;|4t{vVdC5Gx+LO%|Wm3i8J`dsb9E4W!3KZyGK*V&_MK@|Y7D;ZfcNUp`v^D&# zrQs^Nf})w9!V$Yp(;mmxoh?*Z})P{`hwdl=)>S(KbA%>6QJm|(fUo2=}l6>`!ILbP+e zjd>uNA3+;?Dx4?tWJ$BP%$Zl~UeGEkr8Q%UvKTuvX;w2{KSYxV zXjP|a9JpWyID+Pfh4FuG7;BU$ z7rE!Q-P+1I+5?DwcLwdVwGxM#6tiJ&9AGROfL_D;GwdPR;2f_vWxWz#6u|xhBR%UO z@lbsD1(&CER*XuO}18e;u8`%S_}z)T+*mw z&6j=i{!dnH(5WB59G#eo`s%BTmWm&zmfps^`GeBOPfmw5YKqL1!v1=$Q8!c zuYe#bZ5xhqY^NTsx9~RKyH4RRL@G}8f;YU*le_LNnlhij_6#i4hRMH4^Y8!g-XXyqT0K#mgI^X*(E7A-N- zsUo|OT){aE5U8Oxyj3OjN^s%`J8Si?0nnhP2G4NHvl^=uAq`2S^OFqGWF`ZB)YrUq zT1uKZHDK?pk0%v@);3=$kZlzCRtywTB_!A&vuI&>E^_Ussjifrk)yt`&0gn!#}7i> zjZ5-XAv@7;DM`!vk{35l(%vvZWN$({3B|Nw_szJ>EIzZf0tsPOgm^|O4sSDBl;2K- zEl{@|?O>r+IO_Y5*XwXYu20p2J*IlaaAw-ki~)f9Ve&dMaw7w4lnnNw9|XY5*11e9 zqSwFlALr4D`83Z1r7)Hr{PEMQaE57pQEDh??@t(Z{pBr+3<`oKA|}QjHZ(L0$IowV zZN)wm`hxJ5L|F#D0o_W9j5g}fgJBN0C%Q;@te*kuVa{beH$;c~rM|=0;-9CNjNvbD zuvMNJz8gW$!0hy*?beU6t0-99-AkC*7 z0s`jXW(QWfmZ+g^M;GWAYgzdt6hOn6VzAC-PYex(!q3 zu3@-b+$jj&_YhsSw1Inv2V(3#sW9qtOQ05}An|--C-1bmGrQw&{JP29Qe}CgB1<$4 z&7{4M6I=cOq6&fw^g8Q8juGXqvLG*ze?Syis27t-?c2*s(Yg=u?p!Q_5v~u<2XLRj z2uDM4N;yum4~^@ovkrumloW9-5MyP#J3W7=xSJl-#Y~{zk_=NCy2SRfTWcdC4gvf4 zOJ4ZY%#}ox08m}jF{8%?QSH|o5nanuqKYwLvt@=8t89!T0OvYblhivHD{EW#+5jQe zVE#@X)rM+$K@J-Y(M#*uH^?O3H2-0Z`whWM=5u2n85zMkgheG0Yxj9xJ3Xz`cm=F_ zs>EI8GgteaAI?>>Ic`a%@wv%YXE14h`U7cHr{O^(mb88TV!QEB*GMxxwY3mH_{Yl( zr?vqnjyPwtD8%3B_Cd#TRf5w-oO^h^Uqy2vpUs7=KLjxrv6&0ZzRW;bI?0jqpV2MN z$#sz4xbC%%K6D=6Ej)gXL1G?U!6R844@4dL&OlANjxK!ruof>ns0J4Ge))f^8KL7VN*h-Nb$X7G*PTm zg20T>hxCgzEwMGN2c-P$F(O(G>8TTI!`=XHd7Z(_`uwxJ9ZNk+L|l&aQ{@t zT_?4->6Ut8o5d%{)QYd>Scsmsuc)3fuT>Vh&*a&03nHiGj^5q&Qh&qAP9jKZV%CE; z00L7r)x%lxPO!E2t7MU>{MeUCyu!~GreWCUCur2JuM8J#hP=VQ0TUuAKbnX=o~i18 zUzunuw1@vZQ^4qHr*h!R|9W=T*uAK)IW83juJ{>W8qgd&StRw8A?z&P3tdRy_Vm8Nc4!`rM?7`qHJfIRT8zt)Uq}3zqAn(rM~q{hjW2l`TZ^W+K=j64fDcZ|PY;N)oj{PW=0(-I;?iOx!fTPhLXo4kw#xUUIC&hEI~&@* zC_-FGg6NwB&M4Z%AZYTjd0Gmz429f`Oe-A@eF~3hBm-+AP6_s{T=H-Z8$TSTwz!lT z|Gt)5Wq1pWGJ01?R<{^F`QsG73T#!bHpIKTQ;EhQU0s;IJ^-dxkXN8#Y(dI6mzHI) z7JBr3!W6tFwX!tL^FUz|9LYI_3No4VOLc7fnuOaGPYdx@Yxhiki6mve+{( z*_5B2O2FFYb7AQDbPjE{kNX2z1v%BA?l`Tqqpk^E(2(kufhLLD)A|lJZ7_yeWl-}) z>r^vOX-*2i;C**`{~3~3Xv=MUgP9p4Fv`*rc-I>NLDOK{Pq{6got!*;pGR2FnBwmM zgjx4RVKPvz#QNxcnlqq!@0iYkWyirnp{Th%FG zt$W*ho^uh71O2^k8r(~X6 zTh~*A{nJ~@=1bC)iald>b#-TkfG3tfO>YFvy?0j_^^8ehB>p@Ybm`X5`3e`nE6Vm9 zlLOFy>gKP0taLT!GU8dP5ETFVq|3^^#(9#q99-Pa)tiaPTp~a*fOSlRBuX?Me1>ZaNQKaM*w>(u~yT-A~;~BWCt>(Y|>|u5$C9bp Kd$iLrN{#Isi6yB8zA^!%785r?BnX*Y`ESxvl2W7|9Wu8w5%4b`o;KKo0y6D8W&LSA=S$)9D!50Dcxyq^T7+|B7&nRT0M)8dGp?7bYh zB8BdlGtNT^_EK|a;-iu$#7I6Do=oyOpMW7sUbb=AD~ud5LE^e1!&C!iI%#v*kgfyz z=j_;@{YEO!h7{hw6NX&1>m|50UmSH(U!}+&D&I05d0mlBd9eV8_>t9_{Lvc6AJJ43 ztk}fXy6=Pbc%1q8RXaa98zi^B8`4(6j$!ffL%r%rUsO2zl2S!G+xGu~#T(QgFDkD7 zqT8Y^i+XO{~Q48Vyt)r9&gHuVfX$ro{2M4EP65h$QNIWYb_q zgrKEM@vBA~Q z7-#Y1KEI~%*evj8KKtfNK%hS7r47VtOK_27wfv7qXb^Uoo z5fIe9Ryp$bX{<=solG$d?&y}$KZ8W<^+AB1dr)EpGHDXPTxd|&`Zp~vh}U3!EcPuQ z6{7oQqbF}c{HVd#1T1juIsNt)6}#NjbgXqXHOi5vQ7pYkk?oQx)mp!NjHvhL2MO_H z9CHQ(1?Kq&-}fenR-b|XmtN3JAgu64Tct6H%E zw;UH%HcHUcK7{SU9-2xXzh`Ir=@UIb;!;gxC zjOx6bnw9$g^KH^0IvPcABqw9 zy9qz(V?T`s6C4lCBr&yn&w8Wa-yZ2~uA@HId-{;)vik|2@fC~CX|0`fVGD&)a~%!Y z@g)23l*ToD;){VXZERA8~BI+J-l$O4i4Tjn5+mF=^2rp70~ug!g9< z^NW(RDK71VyU6?IfVR6>-_Ei3@G_|w^06(h`lUndN{#Q2LwsvYyMj~WRuQbsWflK1 z&a5NRLk3Yz^0C^g%2(8PdLW0EAOwka#rD%D7JP`uFZUFy3Idzpq7@%THJfyVNB`B= zOKNCPfO=(*{!Ida_2NVRkIIPLs^W`F$^`tMJ_6JcE=o8u22;!o^pi?}m6AGxx8kww9`5uRY{scB{Fxzz&0(K0>D>u;`c z#L&ZAQ8${hM=sdC@9s-xKTks*I)7_%RgI6rzUo8D$u+HsrV~APO>PCj2hXdEw7sb* zsI;MfUR9fIrp=)1RYAeqh*`Q1!TfiY5&g?~c7?!Lt9W^j9$sZ`pyP|9m#RPCE^%XQjCzt^7AmmarHMPx z+DT3-Z?wpKH!VyenK&~hjjGRj$}j`M!on8>Z=@9j5WM+fJ=1KNCS@f$I#uC#BiNG2 z^oToRcSy4%2j15gaZLHqC~qOR{G+PF=iG3j=M?^~bvIk&f--KFag}snHRFDVxP6bbn4fP;f{7#N&@*sb&2q*)>vHS z2M5DHDX_Paw_VH2ojCvdHyi6;+R&7v7U{pVR&=(1sc{tL{r@xi?SJ@}QiuPy;s1o4 z{C~ISuSEU-O3ywV1qh!vm$a+ZOqhe#^22VPUUqi&-OX|8f7pU_bfUpXtgNix=9F0e zo9VaUk)(TLxV>F0a40B=bN|SAC@mE}K7Qx?yoR1k>jpwJNSpH?hBmr|z>38%`@fSkt|sL!yNrT!x|U+ z-%40-HAaZ;Uh}lTlvvOvYY!82c6N@JUWF>J2geWpOWw~%8AKz3-CUvPi!ZvTQ4<)0 zT+EKB_I#BXdGW;a_>CjpGiTqlWVZBsf%MvUH4xWv4E50qR{L?T|1=e&74|QAFvl1! zTAv3vQiVCdbH|#o_{wZ4#Bq;p2-#nQ5Ib%+M{r;nY8;flg@ z-Vc+WWd9Nn-@w_mbMYmlu@D@l(ylbhl(*~ltkgWJeikDmX&U_u8}YyXqj$=_+R}^?LLk>gpB>uZa75H?IYHa6W99SCD9&$27(~AF_f=SSmm;gH)kP zitem>`a*#&zaG|aab}Aw=%9_1N}`+PjwcEhSx1&!h)K6M{*m)|ZfW1mnhKtjk!M^< z>glhmFp?TLw2^(jHZeFK2zP2eW4_s1)hWCIP5f&c8$*VIhkV&B2yE8#CrTX+PQ2qh zo8y4j@-wtq65lX5Jc>+l%=u3x(A&%h40?7}+N34AA4Xu8=4+sD9bf&hWh7~1 zw%0<#JWmaLll&d=bK=pj=8@T3BHr6q!fRB&e$06Ak(e%|h0tGl>^MBJIC5!47UH>0 zdUPk1oRbsH6f#{?30I{^hX(~Adg5%JRzOz$Xq~hm6{37wkA=iVB*N@?NMD?M_v5j6 z*?uBw!;TwHz*ack+7ri^cKOT?t?M4r87HyQG(dKWIayz+9cep;=t7W7)G^pl}Ep?((oLIocIiG#J&46>JHZ>$;@f~hbvLZ zx9T+0L+Ru{1P9>P-0-#4kNRgC^f861NyKmOtMO!Q`odr{w+uhT7o4+;{7E-_ICQgo z*5RB0&Op0^()*4cd^CP9K9Me^J7N5ST8?66y=NeN zK)IO?#-=644s?)xS}U$m=YX=X9XI@eT=xJKfBOfWo}8MGExv8`j5iWHa#`Butg1J#d`CQ-BG?gQtw)zoiE`l zPTN`ROFv@O!gujGw6M)<{Nq7fty#1o5mYWI>vf?p{J`@1A zH6ZFn=}b1P;_#cmetb64ll){f$9~>5Y#G%_xtJYU4JPl*FaWAsbTJchr$<_S1wNT{ z2?_c=J~-@|l5)P+khAi1e)J?B8}7}tJ}ODWE8A4!|Mu}om#w7fXIXr+WpXpm^ef6z z;w!OD`^@1d@euOM>eFykk!{CG@k*<^epv2Wcen+uITdhQfr~bh=1H`A32umQPk?9y zTVAWEny2B&#N%kQXVO_jlqAF5U3-c-bJ_>Rp-<1?eQU=u!}|{>G#n8 z;}0u*hwXoFmSnhIofPU~=6D8~#&3`6(S%5;Zpx!@v4akthC%oBV5$f)libH>GW@VB z9f#V=(}4U6j#US`Uk)%laBs=(&{`8jd%mu85!QK#fq4StTBc7&qdVqU^k-}@XM?2a ztj>o`1p^=3gx}GW73d#OF=v1a@RBkM!vqen@2&;8$yx`p5b4_D^JBn*O zM3pcMy*Y8~?&`{CdSw%1d%3hutpEAqoFeh+Gzxyvj-1;`erqTvrfNKcyTu3VL0$;u zRMCzoa{)RU^V6o$XX>qybjTlP(5ENFon0@>tODpYsa?d?mLiyYs^b>wI=_ry59s>+!zm+BOcWHsIEzR0m*GN(uy;Ca)*wk zQ1ME5`^dvUjya9VM=k)N_KPuLuq$y8)s&dciy9%COhwi{{Dv}ePwCY_}P_4uy8sI@bKB4qTw6t zJVy~G43l8+Znmajg~zJhN#6&D%$jA+_ETZEPllffCC`)1&KVU+O*cS0A5m0wScWBC z#czMmaOlUtTjyfkM~2!|n{2%saRhz6o%%q4u7A!c`{2tBdOdzL>bt3NKc~WUq&u(< ztvtT}OsDTXdV6r9#U5BFqPMD8MI>R>&r7cmV@1%V~gVJpQ$a)i_;)*}Xm9 zW@zEHnUqJa*bO#mWVN&!x_k3&{$KqegD}I>?+|HVlF+}r?tGa2rOKaJTIDJ4nJon) z&}lS_yuPdDKLxR$qMnbn>!gA=*CSF@WzHWZct=wx@OX8E4`vd3hyPHrW7WtL*JPZ$KsLBiYg_msXYP z(W3mG(1x$bvSoeOp7(7~5yf0koj{(`PqY#j9rC5fw#z$jZiW#HT{$ls&d!H%ldkqk ze<;<_Zht-aSLR3MDm5bQFS>!qG22n}ZH0m2z+HGx7BHG%ab5n|s0=s%q*@V?E2?Jaz+P5#ZCGjqvdj^D%=FPmriUqJ!4LSk(~tKe}s8KO;})$SD%>^_EQ zCcU_t7=&?3g{#yxZ_}_f4fTbBb@r=nn-32rnX#rKnX$eIQ8to@p0lK#~J0s>>pS>LSxtaMTCYB0?Q>Ydcc6)UiNP`s!C)9E=$r_pD-{qV~ z3rHP(RX+B=dGN4-u6g@7l5;bulT4>BvZux&DC{R93qcx)9BCdql(IAo#d_%q1u9WJuN!1 zpf8^1$^1W@zd)Y|B|MbNWZRe#VzDZk%3MV{=6?4!<9ME=Nef!)8Z&8G$Igy0TE;cH z-b z={Wm-<&TbItCzzU!!Gt8gXGQ5yOX5Z*r!^G-aLt$7qK4)3EX&!cT{$B3qHj_DT4 z)wgn4LZqWP#ibUFjUAJvx%u}`_;wHs!1*b%MB?j=Jxzz53$zODL$2s+BV!%5Qq+q90Ffh6jjC=7~0LCTj#M`k4Af++Dt z1k;TlMdzOW+8cF9HNkhSstE(*Aw3;=tYr&z;!#+4ac_^M;}?4FTbU=XoH}!!@ygtM z;a)5Kr`e+_Ur^WEd_Gvq{16k$0?;`xoW1iiG-|4>tgepY*i2-0)VS(POntedZ&Mo* zYT0v(XIO%Y&_{4@Y6R3)_eVK4wUW(wW5dX(tg4US)R^yC&8nhB}ei@t1w=oo9!i6F6uTO+@!FJR*4qjyuhK zktRnS-`E14%YbHs?X8uuQ$iFEvp@eDGglVVd2+@~;*=DoH3C8oTVH(1;D5T}a5=8{ltSv4r;zC#^S zhRDz7C4X1BO7DX%{Sp5%@$(?jMwh1oIEv?3M5ilrW2?=#mvsg$F?xAY_Bkn*8{FiG zkR%x9TP;&Bnp6Ny0r_jM=ab`Jq=zO4bTRz~n{SP%DzZ&lp^}XXx<2BonLBnr)sJ=% zA;$zO6gjXsrAS#yC)6Ewe9qG5X$J!3l|iC!<9cIn9u8#Gssbjl;t;l}Ms8o>39zc% zJ`$@1hPr}M3#g25WcEax!(0oux9 z_K%~`bUq^MB}L!#W3ki2@JFzqeL7ks8=sYsG=8cGAK%g28Y5Upxq5X4K%N~PNE0o! zA+Z-mi?^?8=LET^GpdeET{($B>TjO>2Hu%1^UJ1lBP}n?XIrFBUIgk1tz9$eB$|?O zlm!OYMf9TYl^}M+Y2T6~D>JDSQh%}V0IFOh2!r;$V|~)xi;Ind0IHjWG(!fFBj+!7 z-ypH+ae^M6KgWI~=++Qzg~(Xy@-E&8VgfYT6Pa1+LG_OG`nErGo(3!}KX=>2vr6CM zPl|Us=4UzJLYHJkPe;96)8il$M9AgimT2Y;B0L$!BSnpn%k5IzGbZjox zBpifn$O7~c*%E8s+~X&xA;F`QE=#6qzQkqg!*{phfgyC%;NcX$!jE60l;yD)%fPst zYuDO6Co(fZ87potI{OErLd6t`cAa-ms!v?XYRNsgcfFD+!k})nTFZGP;)lqtt$V_% zxqDh>q1RB>O`?IEW zoC;U)n44IBXZHK)oMK~Xzd2vb(WwX#u;ToiZ_lRZ6Uq^v#o8U<8<~wl;ZW7(yY9@X znr9Wq;E4HL;(ft)NbT=H1tp}mxq;Hn<5DPCL#5|t5NuTyffe$b2HKxV4Nu36u8S(n zCnw%R;1zLb8mc#y);a)ROfvB=j5IWgV0BD zaDM=01Y1!Qu}38s?o~`}h)kK9wg6Jfs)y{8HoseO-!bJF(?N*v@L1P)5md@`%GV&m z+pgwNZxcOARL+=1|ffv`7g*Xg>*dDZhhzcEHFBL@h_Z=d|yai%^)<(bss8N-{!W2qC zA9pqE&EON7OufW@h4zk1dJDDQxv9n>d58FELeIapiex0*V^(Cey(a}}izFwNKv{6? zKc>!|e`w=r6VY2=vC(%R7ot!24&zzC8V9B=OP)TUuIN`j|Hg&tpwP{_@D(>^jc(ar zdmh1M$ZF5@>QY2x7barxbYB3B{W=O5MMy9jrw%&1tvuV1+`aqA67*$=i+<%Y>N{rd zFpjEh;11}TntwAQdUdIrNx`Db77)*raUtZn#i)Y>%6r|tybPR+0mBL{Nx;W_%tQy7 z9)lRz`m|C$J>&B;^9z4L+Id3_zsUVrG)154Vy@fp(grL$9#DN5K`?}+s;a!atNAV)|J)TxpkU|A zObeMBpY3YfhE*APx^UxWJ!av?8;#pqd7E`%{OmTyvw44lg>3~iU4%ns=XA^3(yXg3qqo;@o4HJ|W38M&2Um ze~|ZK)A z?zfQEZ@D5M1d;`Hiywx9c@!o}(9q`>bIQ>OR}kxkM}|y%g__SfqYhl5sCuUFshc~t zcucv*qQvCjRv1`0Z7lo$RkNc!b8Je`pKHO7$fX@U&`<~ZNUQOE9=-8kN3Rn zoD4r23v1cryc~};V8l+rnRbzQO~+)OlZ<1ht23OB5&tL4ajqlDP^(rh5L_s+9@g&Z&qwLP)^tV&{{ZS}{!UE#l9f0`N0pZ39{ zO|$K2fcsXSTn!@|v8kz@ZYeSoDMczXUX)IOYyWK;^X7`=(Nln28aZ61@Cuw&ADNGS z#JC3HFLs>)V+TZ|j| z^5}V{-ao;7yUX2={R~_n9lyEBOjJ8b-C#C) z#&1$(|7gG258DY}FB4v<*QN~TDw__k`oe-&Ziv(%O3VxI!j3BVlEd-A35W8QPaYn8 zvE)BybuHR$5qlDdC;XKpa%+Q-)Fk{ywOV^Dj{5sFxi@&G+QF7uCAEcV_gOZakcGqq ziwfXG6!5YGr@I%y@~5+yK{mL!R1Np0JDb@!$TPKY9$xos?1rx;*sXyw_6&TPxT`)v zf4>2GlIaFg4h!`x_&XrhGij9n%#SRZXVfyC3vOMC^Q6?wRh8PKWM zi)e8)KVnr{=#~%1^y#1pB!*u0ZMZQP&$xEqKaZptW=-~Hydgkac{Ae^r+@iEknP#7 zHAeiDonTh0=Qe4vfEyh&mrD921akL8bJ12zCF z_I|{Tpfvef6&v~W101rS=i1Q`%E`@lx4WKO!*T9I9RMqHoRM&9dl>TpNTZkO_;SF5 zr0K!v%|!9Oc6<-@f;Z*$p?0`_Nl~^M1O>VaeYn0BPmlnrIT1u)4>tm7rsJPuD5oE8 z>StTb>ABUh#c-CGTu(MoTA3)RtytluT$sdbS?rwF@Uw+xxYXG0e9CDbp-z1Lh(n** zA#i`SNFv}K{(-&)*IQT5GD#HJqx$s3V3LM_aqc{k^wPPBLU`)p^+)7IpM&v%XZv{h z2iH@Vh4>M-D+oYsJ%x~+cPYqsH7ivdb|rr{uf~Dk^NA7U*^?Q{etwM*;GK3}zQ+N# z@T?xl4}{vl%JZ~wu}LZ}cEQ;zHQ7tL?2ebdlW#eDVRoO>c%1s+oN)))6e9AIt4p$r z;o7x!JK&Qm^R_7Kt}rFa|8}=P)@;IEz{7)3el+Df2~`?}M_hj?&@7|&w0}*jvN-?4 zMCbpM7XAMdsjh(m@M++L`5Iy0;r&GJ8GBI`$e!*ozY!EI%U)h(*C8Rm1(9Dsns>^n|0=w7a<<&m0Ka5uWLqi6y$8WaVwQYpe;isT6Xs86%tAv|QhaY|JquD*fpeG*3 znPy|qH&e%)whDU1|KWet(gplW6bLI#mXy+Rydx~T6@KD~p(1Rg?cpNv@q{4^;-c=K z=S&SqH%E4yiEzC{<*i9;m#3g>^eK-l`K$m?(PwPuB)_z{)dd%OTVyN z|C+BRe)YJYf51$y^7L_S{S1wP*bi0aAgdwAm2v7I%M1=>=h29~L1Vsc@7B<+wR82u zl&Tl9%cvm$<0hLojlx``w)RT~bI>w2(I zTdCy_rR~|=f8|3jwS7=d$T#0*eUJ8+{{luVI_3*JsO#yq$%jg%)m~K-Cb?(Z-jFR$ z%xzg8ek2&>sOjFuU5`vF^NW=wMdrre__oQctEI7kJDoG6myd^L3IC^msr+o%r2ccq zex8J4ZRf>T6$5YJB^R74gBdcbs8^0dL+DqPb^8i_PBxnlW zDbz2WxF;M{!LT^T%Xz^SPJuyEfNpnK40#WT>ah~@8Qe-~c)r;>%J_n5NiqYK?JNL7 zrhnqaG02Z*UBn$#GP>-E4RV-0%lsVs> z89i`b;#Cux2Yq~mPsx>1gSayw zZEPK>p{%vV*duj8+rt?xYDJfX@^7tb-Y*3DrZN?LKc#k$vrO42zVaATlW}rdVO@tk zEVqtH*isu%ZjLa;mXQ~G=F$@!*UOk%Wl<#*To;&*a0^{!QbAY8$$kB8p%bf^R%UBp zz}lWQC$bh$mV!MI-`Md(z#OTXXa=6+CHmr{zD;2EM)%D82*$9F;Pw*|w1A@3G)>tY1m%8TP zzIsNJlC#@6g9@+?=#r0K?CziUt7S}$p))UU!-O(YC=i-Bb*M{-(R&cl1rT?@@tBvF zp$Ptdu)4uYy89(%tCeYse;`BF!ryNp2beUQ{KAm|8EUo{5 zS3OTjjfPLQs5|$Cd3;p1@VgElr+3S=#;CB2eqXjJMc~iXpPciYTRGLMw*wJ5LYiT) z9j8!bTPf81;$Q?B`UZGH;sN}m+cb1a_CM%JGQ6b3G7|Uzm-o|)AYuaX>AXJ9wfy-L z3dFR=fR^fPxVa>1{|(BHIy@fvw4lII=RFjl<=2gWIhu3_9r=L5GBo&3LN$12)?s)O zESM}Lk2=9y-D-28+9A1Ee0y6!k&do4ywrjQJjxFebc5;?&q2mBcED>)%E7gR0r#;I zs0fe{$Z?~b)Z$j;YVt28t>DMO&>DQdn8?=*ZywR>bY@aMULi!uLg{A{s?TlBG&q&f z@+|fybmaeJF8^MAi!Jb7#ONPkM&8A}@P+hEUe6Az9SAj)g~_d!1i=ZQwYno^ZsZ*| zDW%N~O7E7>NlMdUAyH0(f`l8z%HLk>yzmQ0I*g?`0qHDcH~ghmMZBqF?}+&G9|XKb zYImN!Bo3ig(y2{03i68%=5DXLw7P6(iyB5`R(#5*rw5IFhwmi(VJ~jdHLBr>U*&2H zQ8)M=SNC!V^av4O;9d-FDiaepiwWnes)Q%lv)A^SY*ga2sS&qFqg4%Cdh@SsK5FyrhTux|`n31&*u%Ag8%NaT3oS8>l(2$j znZ(~>^%Bq72fPY512+(CCSOzEe&8zSztvFTNXX6 z-FGvXEsz#qiEX`)%9b=1V`egfZSo3NCFz<%W3n4z1yCHQiY=?DhB98FWWgzIqloJZ zsw&mpl!d3jl#IIEN$|RpP}=1DjwXzNRcpySpyaV{zC+Xq$Gvt{%^DQrQ&O$aqU0jY!72Wonr zLQ~6H98<-T&zCxuuc2(5wzagZHy@c`E*{EHV7=95y+IHsfxxT7BfHYn(gH~nrNFxY z+B0IrJS38jcBAiFyN+Nr0*MFh9npQ3dX%fIjNKu}Dd!FEv3g8&p*N61mFFXzHs6<4 zao&1Yl9SD1YTdIHDw&biG4V)y2B7_ux@!x!KMf8O@Mgr!RxXmKv-+n*Vp4wM4lCoM z177XA+vBMCiRx(>vzV`6y*~X;NajZ!ZSKg6l~y$Ft6o(U6bqxkn@kzo7R-$R$OxP7 z=_Vq^s3( zturO7Sqa+^loC*H-LwqiaN)zCW)i=FD00|rBw`MYM@PAF-(53xwD62A&>ZF;k{uU=Z!=Dv!|FZc5 z#)9z!3)SVFA*`%j8xXS2MyW{Mr)`vh$}`k~3Akk-+0Grk=nG={^jX580ZoI|L|#1R zYSw;<8=eCk!G*btvBM4f*|@U6<*@6vp&=P*gS)X*y{T^ulf>zSOr7>6W37n->|8^E z;w`R}>xyGTK`IV42DZbPyGqr(8glc{CVR8P$;?k6=Y&m+(~B#qIOpEb^{+@|kC({O z8r#UVL}BII#fucl)trSm$lyKv=<>li6ds%sUvs7P#O%KOJ=4q+UtblcQQ^{sG|^@S zusdHRd)bG0rStj4cY!7M24lnp&(^j&Jn#7^wFOI88nV6l>(RYdb_i#=4c}2p2d8b< z^YxhQlFCH`)f!#V36k9mUOM_ht)g))yAweaW8=AGSQR#D-|&DAZ}t;;dzSAE68og= zc$+A`Nk5?k`Yb(>NeD5?VTMD}dwpvAgJu}Rfa>O;IiAzrMbvCntFAgqw=B69Y&bIk z!)eBzjGk|&i>>nY>3vA$SA*g)mS+B;X8Yn$uOF(U{dw^eqQp6M-l$8*l=eixF^VKY zF8+rvLA`n!lBT0xHLLfhO5x)70Z8e@4Tuv9s-g5n@f7LuHG(Aii9vZ8g(2r-!U`bd zP?@ViL%z)WrUjw!JYw)&LiVT&ZXlZ%0ep@$s|azU`9oqy1#ThV$6{{+3Spiv9bSup zG!f?r_*lmK@T_I|#0J=mw{>zD1Y6O=qH?{8Cb=22SUV7jeRbY`g(4KpRW72tJ$0eA zyLtfG)jj+{DJ;C4$}|QDyPD+X0x9tN>ji@PZ*f%#r(V^syOpEDr;mM7v|Kr*;#{wx z97DlA>_9=5d;BH1J;Cq4gL#E~D?wkf;dym5;BtN#b<9)cotj{9@kB(Gx?$^!nYr!F zXg0f7lPUCbyPkeH-yWiaWLZG|m;2@!FW$68lY!TZiLG=9=GnVs&A6bAi?upeHx~2X zVxu$2TcDt;TMr?ze(!Q(|486WTn2?s17 zn{>0Fw6wIQ-w=ClY7|L2h%VA%fEa3Q`G>#4dBr!c z&e2)Q-(PLC75WWcZO~&7|3X}n>VF0Gif{iuE)7Hw54nQ2?KP2v+W0TFB?Lm_)r6DSi+8q_Hm=aUZXz+1cv$BCdq|qXGj7zB#Ga|& z7mCPFSN?1ytmIH4eq)sn*JSTiz&XOz`Cc|31~mc_lt@KPaM{5;wmkMVuV)D{M)}!z zykdLtNO>&Ar;C;tR@>fz)KU>ia<+$BgJKr&E7UM#3vo*9W@`*2S^(wo>T9m3!U7F` z)tCQVN7Ah_GX2qkT?_$~m+H0&DdQvF9~RG&5WSu_<_O$clMOhXz?=4;gpHD`Dah=^D){yk@|fT&;v2J%EtT zBkN*03$I3>>6&pr+)~wKt#)NcZ)E=1w4&{ePw^sByw`<3$+2H%1dsmHM*c=ntAPKR zQ{lSLg75T&O9=QLPO1@aqgRh^65xjTY|oXe{HtqK&5$4SwJFic?TMaW0g~A}W3)?c zot(O#BmSJ-e1}jqotTHIqi^Hfkg_+nA@Iu2fzba%;bLyTvNpR1DNP)Xd8WW+IiVBA zb&$Y4qI>#K5+wAyiR}L-rpTR)#X1RlTsETimA%02xE^3fPI1KJ2M$QUkY8LXc-HX{ z>&ykO5oxs5h*}`)?EK(j^SAr9Maqk+6dSE`^Um7lXzg*t^l>>0W*%89Lb&KCYHghJ zk)Mkvj#$f&zogr%ia6k_2UV8Ask-IUP2%IdTpj0)ob=66aPv&0!MB^~^$Lx4yF#RA z?J2r-0WT7{cSRENGyCm@N#*g-$1zukU!zc`1mI%^3$vUw(Nhbr!w0JIzX46_@7zx zD{LuuD<7yAW@?T!^wKfQc=fz zW1Q(aM(WvFSEE(Cs!eq-uq3~mzK6{=tRaM69S7x_Z$Y=CixO4~4wa$V9%pLsB`OO3 zdS@haC;hh-@Z{k3;Q}mvhe^8~7)<(-C0%9BuxyxGW;}aI<;g$Jk)uHWC-urIWmih zAdVf4l8T{`;y_R&|WJoA+g$rgNeSXn7107AYwy zMsj^Kcx{qlG+wve?G^MED2^{h_~B`s8@rt&{Y^VXdO1q){<4Kjwg8M^ackDmb}|9! z%bbdVAIwFI*hQtyps5YOwg-a6!?d^prdLG@zjS|9w-%_8lPtoA@e_PhBMN7TV4$O3 z^*+rz5~8lUZ=$ge?4N|Uh&65Ho^)&inQwJ8!dj+t^uOf;1guO|2&TPeHs&AjjQ!Ks zPs35mdu`r%xurO5Srgic^LFnP6?e_x2&X%IpZV3ptQ6j@l3KE6~@o0 zs$pXm4ffJyp_S6m?}lZBu9_&u%1^i#5r;$eePlcQwhk&XEEKBk`+sMp<@JLS^ZMgO zN(i&Jb(3vRR|O-?d}Sa$Y9^9vA7Q}+7l{e4P0>w~Ns*Eh2Til95W8@dRCehy`oaLo zmLw?m`eMzD>-_<0U5C>R*5t*CFF#77L1%V8R|)wt5jc3>Y1G69K1q7+t?CSv+6)-W z!@E{&gl}J0E*n}$?fXjdNO!#RMa4#&ck!O?JErL;G?XB~FDN+)=Hn8x2z#e{JsVrE z@DCXb`h5y3o6Kn!o z0%eOc-+fHX4@0?jM!UwM0}al&;bKoOdJI<=PrSmoKmHT3e!KNXWd@Je%M_8lcl#v< z<7slZDe`4vx`3f6D7t5in_3^DAF5Z~Y$G4G7^$B|FI9tSjH4yPJv)Czsxjx#>M#(0 zr@-AB$ujr2)dVDQ5ux?Vf#+~t>};>Jr1w_dGH9q}H`QkuDXU{oHMlE|#gu7G5BMFb z`>n=jLKkb!hJu4riw8D?pWSn@Wcq>Nq}sm=1TbeGVnix$OW&`Ehkf2RUbVGW)!$y79V5pCgecawzpuuL%cU323&*muyVRL%96BJiMQReK2xm_u6 z<$VG);t)ve7%o8L++^XDKE{Mov_Owgt3vdw_I_`#NZ!E9>iczP!vQbi>wK zkZ#CYCiN;MD&SNo#Czk+gNs}gA3NLLin%I!8=hA;FVi$zM~8!i-qO5-dKUMj^^5+E zDzCkINVMq>1b@PIUNI^BSc|ZzNSHID9sb3iv<60z9qaL{52aML;z!e#+MUwOk83KC zZ5QN4w#>yaamBkKczG18erC^FqZeGLGetJ&SGM$CM*Y8;n3NhaLp>7|RezcGa}*CsYP=P@rl786+x5WVNLI^bDyg zj)tp|m0Cq_!9Jo>6~A$7wEe=nOj`S-wlRqkk<8TIoB)~fV_j*6l#rJDDS12u3n{YI z+ZCluPYH{CmU~22FRh8_SYV59S`$Eft)Jqjl8y?H zg$bIqse40JvFd^3QKuD7a$0<=DJiKBOSB*Rjm}cnAJBTCn{c?sD0c4glLD8CpxTvo zWHe~G2&P0}9ZF~ULc}!%9EX>swWFRO|A47dMI8Vzo;MgjrgJTVKcs0MyW|L_*@_O$ zwNf`n?d(@D&b%*>OiU-bqO3P)HY8ot9>+X7T*x?)^l@B#LK9OCyH}8^Mthx)klu{W zpU%Or;?UysOB_P6bu=)UU8og0ko7O`6-F!hF(=dj7J0gorb*%4P6&ZCnuy#>vOvF$ zGFMLnl4HE7&l8e`zRp0Arp}Nk?5I3PCFFT$l9lsG;T5y6a`O#9RoE1M3WmC3Q|%;t z4!2d0;YlMWXEn_#3s!{Gj$n5bRR%%aV%n$XrHy+8&PZO*{tFre>ye)zA!BaP|FjE! z=cuPuh4I5ug@_4@l%&}f?8N}f&geI|5BVt0e(!Qk{~YOhZ87&s_dm(n?M|B`@VNF^ z&Y!rDYeYY(lCIaY=F+={%uAJa9BjWWPU1j#`VDM#8i3d&%881T;9oAUt~1yGHzW55 z`CH`*6C!Z_@d{;mbvm$=eQ6B?8BctKriD2$KuW@JQ`o*S9oDu8gFej+aL=zBeMDv=+nF z0b*0GfQEOW5|kQ9{1@6X)vm&TZ)(6$a(On@D>V2Ar-!W|7Hc=3bv<-S2LJ{NyhGqQsXqOYSi4^HiywM@SQCDBz?lu7kC!R&P z3fum?oaAqtyQ>Dcb74&CO4*W>xn@DpPdz}Hew;(Wupc_J~nvEtxNW z2QWbvs^A#Vw-{roJj|77Z9n(nkRQ7CP%;1yl?#y+>rUf&hb3iumMp7PiF1>ft&}LV zn3HJbS0gt*m*xNt4y*AQ5H&MTviL$BoE>z+qWCD+BuiIDn_CJ|)fJk|1q0I4d?g0D z+>g})*i6{qPQ+s2^puJX8}&!dqskvvD4W{gQi!x+w&rC!C{5fJ7T@kRF2mt0EoAs% zl`Gw2TQfAt< zoP=Yr+xXT8sbpo(Q4AhV6F6JJ>KUpD)ExrCLxJ0~ELNPj@k}McBL-;Yt8xXFX!Lcu zL}94I;tN7aRGX4`$l{Vpbv6*#*lc3o=;CMaB(~aPcDAavXaDzzosE>M0@tQlCT2879e8CrbYGr4kS5E?7 zaNzV|eMdGrdd5E}XlRZ?Z@H4cP(WY;U*B{{#TLo3kK=O6q<8xfoKBNGjfQ&y0P{VCE~{Gz>7 zT|0)26@6np{!~o>Hw@%TYO+&us&>N@O4uJ5GWk39A6E(Lk}pN=b`87IY&7a<-Ay39 zv9_AfzVbuv=Ln*fDdul86k032ZT~tftj9C@8BS%je>F?m2n>N>D!WUgq2 zvG+1j{EO8?o(Q$`-wHJUPrWNbJJpft*^yO>()$nkc4qVSnW<}Vz?)9I_CI1>4}GKX zUujK|J_xR%(10H5g1g9Ex!{OZ`~fDZ@Dn0KZS&88k2y@P?u%SKXJVNdM?%u}Zhj+~ z_7%#Tefx>#M`U@38>2?QS$TCt%F1&qdvGwvjQrrzyrYl`0GdU!#Ht@&wx+Nx6Ux!q z%)>)#S`XP$RyRp;U;8=>3u4DXJ%rTlKZPV;H6T&!WgM`by05>mE|#!dK=z!U3t@L(aO9>nE5!g;V9M-+5 zjO5>aUB6*ZAd|$@cJ2Wrzt68+5L3^Pg5lFzaz>AB0CZv2i#)ch4sUl;Pw2t9AKe6n zh~kG6O=-Dloi$g`0e)oI*pE5x5!c)#hfOE{dKrF2Y_ontP#@|N507`*-|jw`EU>$} z+rz6wIDhuggcxm(qZF}6`VXXcZ}~}(z5(}GiMpV*c^jbJ>JkPrD9vXkue&y{dfL;UeVUt4l*pJ5`LPsR?wl3aTFvUz=)i&xaxj*K)#1-&B-TFkZOXr?1&E zO(BUwTCvvY%5|`h;*=0jqZb^K&|xmGZTBBgvh#G~;Jh-=;w`;hwwzlK85D?TaWLqIUIR5z6vjF-EcVWN*l`8N4CPL_C(tj%KEYXS%0-Xsqol#51% zKHb*!ga{fhrcIYfDkRfj5wWT$!gr3W{OWYdw7H@pa>h7f@88(eR+_FKPcVFlLdFQP47kWAG$11#R)7m!oz#Uc9wl zS;dbzKtiKSTOIXDtVK5{#NKNYxJ15WuoPJacwx|qf9B}Ehv4Q?ystoS)^A9`J?fI8 zNpyz=f{pfb8ET$El-f_wyit!M25QMAyG|dmoS~BGdL~NmS?N&GbV9xJwpi@k{RVc( z-YnRgrpXM4h6!R%T6}muI1aSv2MmFa^}@Z*01peSCXdrM?4$YoHIjxtLD=sYb^N{Z zWDLqb;{FPLAfC0QnYVm=^Jn@h#xN9jrZYY9*?-2QURq0tX=4)MY-PV5TY$wB>mDBz zX(Kwbx17&f$i=-Gd%@-&{D;^e!AhGT;&c@$bA_tv}rC)cZCOErI-o z6TgSb(f!-i*38<3ku7}QVW70rxR6|o-oijq;3TeekHm+!j159*3j z`%tSNw3@d&Wk=eRs?=E8blx%l!;9vpW`{-_Tq@c zExTWQt*vcs{aU@FvT>}|tFcixUl)=UImXtZz$J%13=h@yG^Kv^ao+uE3vKJ_Ry&|LjuPo63@_0=yqJ%#GQ*(pz6a8bpy$BAnvwmhe3`$F-? zbqe_mk2SzJY6=bKopm}krPHm{APH4CAK{gTv3h~*zM0>s{S`Lphi%fxQUyyAbagjl zp4c=GO`RA1t+Sqxhf|1KRSUw6>d^b}&`2Dyry}lCOnr5_0tklagSp`OD?vbm7nkcm zyx$xBK-(!_kN;4YRD+>~4+}@)Vb}eOYZ1irUj`pn+-s`4$=m4MLvy!`bqqwVs2#M8 z$rK{4pxBH%#NPb31|oI!L%~UP>vyaR^M4e)mu+o;X&=y!lQ~AUB^D%W8=iMk2L-#; zD|GuR2cw#{4q@N-PEbbwXk8{}eciB*j&MEn@(}(+(x|3%8L~0k%`+twhSyvMi*t3R zO0+tZi0k^nn71J`c86@#RGR8Ctm0(W6Id5`&aUHcV5omwj;3^M+*!v4#atmfI8!)e z$yY?&!)*k<=w49BSThG){tD~r{3Im=N3hbqeAM#!D(SY!Y%sYTMLyTV>QNuvk3zhx z->q`|>nM|k8@4N82!hA5lw81kARFXAf5kU#V$TvG#n{0j?=$OD6Ro4QyC%Cjm1huzGG z8yW~Zpj;^?&oz`lrEH_LYrDWXB6tT!Mn`sNGGZrJrZV!mCx3VT<=LTmCK9TNBl4Du ziok!7S_$#?dK7JBi$3tY-e3jRIu2%haq~u}Rk^h2V@7dVy5o!62g)kdCs*`X+Tqw^ zhikBs+2E;z&my{<^o7Trmv_rL#Qsl!7WWrx7VtBM+4vuM0bVak6PkofR|&VMS2E|d z;HG2{3wHhw49(}ZrgIEV-Vq{*qqM{~VRE-Uacse<{dECiCfhR)1>Iegl%oPE$xjKEisd~}MzYY0A3d^OOKM1+ty<8=Ot<<==gx3}0Y5(nzYQNoWqm;OQH z8p!FVx*1J)d5e&>2AajQDR9h!q1APjB^7V3JPEHWbb?A>SeCtt zeQ%2Tz0;Zi-uB;zEDRYR7qL9|a9h1+*fSQOH(`XZnQjruK^;u7CLvt}S(sWt%P|iJ#Kq zh;3+0^;b;#{NgYvhuW-}w4DkN%{K4S9|9CA4^oo_96WWo<727K3Z|nLKRO`l`|_7h zxh>-$ z+z$#b6F7`HJrY|w@1#v3?1oO zrf`v9KX?ZOR%ea6V2PJ~)n?9~=dgV8pgCvP2wrAQsnF!l6(*;OxqBcLI{4JSRZoVvEkyluLy$6^ag-Sqpq-%*tJ9JJ+{s>dF{Am<^g{Rcbbv6`vI{gjP`1l<$yKu2UnD$aAh^A`gB@Xy}TnBlz&vor@;yDj~E#qre3y3i5svg<-GC!Gisk&h`WMimCKnS=S+h9Y(;Bn z(m*p1a+OLRN9du*_yaQEiEnF8kb9&aH2%Qx_(-H@zz z=j82YQP@a))pmQszV01|8z@SLi(wi&((OD)U@ifUc;q)N?X`$(rz257wJi4Ra>3Nn zx|(bZz(osKC=bdO&k-Kedb2I7nQs)BiHVl{wI?`L*0o%oH+K#WFzcv+?1^T0>deH; zLKi7Y2e;bZuuY9g-q1In-?%=@hvcnH>~X6=?`;|>noKmt5^1Qq$A_K=N6=yXBTQ`u zYWD;u@}7^#)+bN6>WMJMp-n$t1@^tL;K`^UqU+QC zr(7ZrPzM9y+F(Wd?$wfdg{b+_WUg!Z<8ttWeZzOrVFS%}WMlh2V-(5Em0>|n{yOx4 z3EVD7*Lx5g2wfNsYXDnS*C|`?fw0sQ79Xq`sy;v2FfrT5oG&&G)`vLss5GkRtvXeJ-;V?>&xgT>rY~mZ`10%>Cb~0*)wSG9*q-wEb7jJ*vVzrS=8wYi)DI{yN9KU;mU%jp3inR}j{bvWG$Ek1cUl2f079ZjwbYMQ&NozW*nSXly>h;^GrJ5zuD_)M z=Kn-RMB%1s@%#6}t&g2nQ;N1)*b(urAp?}A%}4Cl&a_xOi1B_Kg%Ngb&(Nhz*3e2^ zJekX>Nk4QPTJ(0O3rtV5nPg=ZN9-#0^4-_DaX2Jpu*qc5v$oqB)h*mC;YO=MYJk}a!hWn}jZNgy0j%~6j_!H>e8|2R~N z#C-haB*fVHiwNl9%o<>cAHD}(Ar(Bc>+;ajT*18xOZu!U4tGx}s?d7kuI0hhssUV! zMGd`r75WPrvJ!RQZVUNO>qj*M9SaA0j!ZXFwt%BO*R#)(!-}V!V=Z^t@n{#_In`eJ z+VjXi*7={r68LM=JUyxwq|jn`;nL`@c9vn7l7t^-wd8#^zSHXzwHU zJ^K9jHAPybD`COkG5VcS{moDwE1G7E06sUV<;?3uk!VGc1kGAM>kr-^Lb&hcyAsmF zqd8cv$@=|_s&%0U7DUM%+qJOF4I4j@$|fT(?r5I*jwxXC zcWif)YEx+L9|1eO%Nh3KgfT2wGu>~TWe)7~Crp_94nSZPyY$irRYSeRc(oT36lD@; z0I-O}+XKU0_BQzWrA0j9RPh3DV>R#AB$)5Mai=rbYdB%FjklgK^`9@mTmBquCWd_q zURO6=ZAE-CaqHq?b^8AB=~4|VblG}lm8A~@wWh{)7l8+*QD4qhcvj`kk2UXDocQG+%xCSq z{FBBs(>r0$Zhr=U;HIq#GN&glt_q46k6n5VYGgv)3u9@SC336iQ-wT6syL+h>F1jq zas{gRmK02XtV2+R;KNnh8&#J<^TB`7A!@dJii#wKK!I{s6>V3h<3O{#bwp6J-M3C> z*RRK*WuUuiL_b@%4Yt4C#rlS;zs1tKYJHnC>>X5X%p1zPP~4Y>wlZs<@O`Tg4)9C& z#E7Cdw2roIXX<-YQx)zowL=Uol{DxinYL9(g&{Ta7z>{Fkud3cJ1vB_A9iS!EhCcx z*G)Tu(du|xq2?K3?i(J%>Sg{WgkeCm*($BnI;=v00yugG#&Yz;RbSjZ9O-pWhn0}M zY$Ann!u##Iq9n?&V0ECIN(BOY;tTQOL^f7vKdcVYEXHS<0(bc;H?S?|r-iOGYVuD< zVP0B(!s4~IZwaeLjpPC)O|Vs8E;9ywJQ{ zMh|^h*36%hoFt>qonz2E4bAS7;U7ts0`2JmH){l~VcYy({-Z6o`*0(=$fWeQJ&@+ZFzHHYWf}cO}%LqH zJH3h;s4WJgYpjT$7MnNXY|D#+q?wFm<;9=Dts zQV{Rl$oP+_@dT;NV>E9|uYyJk%jd@TOM&Zh(F?y+iD3PprFC=}BJH~-0y@r#8XbMY zld&Jz63Lx5tT2;=3OL03K7HL>vEwCXBySb%r>FF}OqS{sZJ~3h8~tb&>gr1-A~zc? z!P929;mz|7JMZ?~he0b|Zb`5;4|?)4N9Q}x!fl=l7jRMrndb9yfET&s`V<+D8i>37 zP2%5&qmCW>-_$z(WT*c@L4*9?VER`UhmoU7JmRn4+(S2g^MbYaPrfGP-1F)I0GYE8 zrSG)itEla@{V(-Y{V%G%|I4@j4>e&$+c1EnHDG{CWN+bj^z-@q4};VUOn)C=!F}t$ zO9(;O03Hpa?p%xXO#s6?F6rjRqT-T>jq6(Gk1m zW+A1P%As;~0;QG!*r0}~?h!pC=`;AB9KW5{PFpK6IsyAx4X&xR3G2QjCH3nkkr9}( z_kH+hXFLd0gi^DdsUkw5km2tRgq)!Y*ItuQ5nhD8i0r9xrkyx+oaU(NFFL-V4Brc8 zN!*kv(7L_wvL$H2QjJJ9XbS-DCaBQLLcSIzH~$S}*j+P=&>|>@P8Vfj&qqz!Z2JwX z^g~k`TynB|JKwr$hj)M=YcMO9I34tI$1nn~;_tt=Ay7Zf>09D?k)egmG-p*CKs&HYQQEIwFGra-(CwJTx3iD5>8 z9we-T1wY@yT#>ErJ)i`gc=` zw;OpOB-;d(oKBITF|GK&aFlQ#7+s{#eAT)}l=YgC&tO{i3jQ2P2J=%`ZdeNQ-P*%3 z6q!Aipl{VzI|w?vi4e(()f;M95+Ogw48UcC&e#>wRbD~=9?3{D<{m9jJbjyWT6r@| z6)y*}Pu?f@5hL0iIDpJ8gljgum%!cuvwl_RyrI|5rx3Tb{9Yi#npy14DVvJ?`NF4l zO~4HagCascJ#3b@l<=^`qGNpgeH>ef{)!c#M(0etPD_jiKtclOSSKYKRR$J-{-&Y^ zN2sonG=G2?c(!GB3y-QSn+)Y@1Im&1!#O~<){`%s)R=-@ z@ot%Fs@(TwN>s&M&juOW1wF&0*|;auC^Z(QQWAu%+~0#Bz&C%nMaT7ggoyx(z5 z)dT4XM>vKgb_g%Qa6veRUo`9a%-Ka}Bs^?2m9h)_olQd{ zJha2=UX@h|Gon`wHM_tC6cDDe`jFMP15PAx^VYkp03DD1n=i!+)GQT-Uh!Q!vS1cq7{69ogln`!yXw zCaZPixiouJi@Syw*VjC&a067Px4{h8%|CUJvf7H$XS*c+pe0sQ;27RJA98Z?E&Sjc z+CkDd`<{EbI7h@uD&_eBkyWe}jZQi$RD9=?RYDUV?48Y*&6Q7Q^MsYRUoJ=d3yC5H zB9k7a$ELkG*}75L2(LS*ACRv@f~x}mZu=v=O>8bCU*VQ4n{vcbD%~|dk${D$$FOiBN?4y`)9NpX66ki?(mNa z3KYFGL3$EmUz3q%VK9`SD=qFzR3)N1i++?a&g{;#FgxD|A^MwsD(Hz60sR}3`f$JP z`}+rP!P)`$*~xzNZ}t+gdaWO3OOd)z?6`zc$p`-oA@ew#ao&$7zwtys03U(V$Btf( zmf-XzC!xS+E7dv1C!~ZhiIpZWb5cK$V<`v~;<7S)M1E3)LMdQjiT=!l5AGE+>P;i_ z=wD8*L}ai!NnhOBbrMuZ+V%KhS)0&e$q-&T?aJl*kvSRiq=C!{XAFqFdMhMEmZh_@8SCJgE+*uH)=i zG=%dLugHBJSC7uFuQV=R-sjdjh*g?OYRa!ve@{zqnz#M*N!>y=@9PqpSfNXGxP9uV z>2X!fLHd6?Qnr?V}4MxA;kEml{<+KgoGXtZV+m_0cj^-4a~aDFZcYRRjdnKqk? z6P~|bV19C~EMDF{tx_ZmllZk^_O&-%aSe>Sn=RXXwQ%-{V;QtkO|Ee^ATsnqB^}s^ zJcC<;L>qE9zddaC-xzz#xF*{-Zrr#n3`C{tR&KhaWt5^Y1!=~lMY@I2X``gH#6WVe zv5k(wK&7Mw7UU+vh>Z}&7>s)OJMp7^k`EFq>w2_wCoxE(tN?^`NiSXr0k{|VBw?P)6- z?rfB>UeS-J)ORSe{2Vg8|D-9$#c|FWH{5RB-`s})ej|__{#pu zu|zmFWxF#nlM|R8cu7aw@$58nY*18NVGOfwgn+-*So}Sx$mG9ECz)=J+Px`#CAGIlz=%( ze1(3^Wr}Qf$6xUxmAwuWPrFenUEyxv2GT9jN{L1wKA^J$BdA?6>?KEHXmwfQsqn$I&4aqoN$)s79Z5u7A%~&iu6LAQ2~#H72bqI zFy0ri@{zy!N7Pu^oE;upaESR&>pjr^v-y2cKoi6ywqE)zT*V*mo>h0p$c9(+saL?RKhfXe z%3G$1hsTjZ$>qgOWYsd6j=seXd=X$tNs9?ZKaa*q+`* zXbMzPTZb@U$^hi)xGTaxa!T3v7ow8F{k^TAg$Mh z29&!6=|78Z?#owfl|B!>-}ocIO5~p7m8U9_a`1HR}{iPkVUn{1v0FHGV z{l3+nWO6b@N<)X`#MRaNkRuuGJN{)Dy-Z8Tm#jXoBxv^i zhP*5@n~^H;(b%snL1pctO&(_L)}F(7qXLxCPZS5uMlMZWkBO+%j%3IhX=f~P&E0z} zeZC2wm;UgCbVl)x^@hCmT-ZifgD1eU2%Si5&Zg_3OdePNIJhDGP31Og5Z^*^ z2aNufPKuN^?X$OV#x(jS0y?%DjIEe#X61j!ZCI0t2=A@il+A0s13g|2Z>GF##MY9S zkrZ^1*Q8V14Zak9%5`j&-vq*w>}Phg$jF?gXLYhuo0@ECZ;_Pkxm_km>#d3wfHv^a zM3tW*fF0EIt6K~2mv8pqzIt5TpqX$*NAuxEz0lXp@FUnIM>X>hNHOf1Py*lQAd3H0 z|LF%h@07>D^Ca`HW)tfalvO2rtSOnAy0+S1zJYHUXE&G$e$(!kF&k!>j&ERyPvwhK zX+UnJcR7DZVu|3|_U(H`Hjarzjde8|Jl*<|!^fE&yB)8nymCH1R(u1}I=%DZEdjTv z56%36t5vQjxp~grD=3CwqlqXcW&Cfsx(JaLvj1Tpx1J>0HI;IbQow`q;Vn@Eu#bPT zar8LQpe#6GJs2-CdyA_^X>`odUJGI>y3y(rEv&yE-jO=zMQ6Ok+D$0caa12Kqg6Nj ztnlcb71_E6)|6`WqtGONlBHYrsZ(Lw-JHoAd!BgD^m_}!>$oC|O##wEjSH*l`595n zjbb4Ylgj>#e}i)%4}4>_k!?5MHfRlkIg{9{S!UYRQ5mvMUsy@%CEV@~rr9}5mYxLA z+GWV{roa=+@!SDfZ91#M2m^!8ogM!(E2Xqr!Wxx^x zzS$%yCx=}4(Pqh*CZcyhT>ER&!h5gz|20l zjLoS?H%!tFY{{og?zVp_K`4jz@w!&w4HzZjcgTtGnT2zd)}yAQXW`#+mv>wm`Y|=^ zzK^q;z7!}DZd+Gk;EN3cWC1r{qc6~CQQ}Y_C4Hhq%{(PUnmK>5ckj~)OvkytLld@7wzZLZ$8B<#OgvO-L7e%DW8a{eIf406>#}_+QeWM;WSH7C%mwpar`# zAn566JCx_rpUE13_7DG^^F};5A#G~kHqo=i@*Dd-tIBj&gj*q4qg18W1yy#AoP+5S znpG@1yHABXmYi?)g7+5jMad{ukLnBPvCJ`M;peH>U}Ynh@M*Z{rNX4;P_q3U2~+b+D#0@`1RGzZaox z5%Z5uX}*zzY9S5#OW*7%0;ioq4YOtA##Rz{1h3VWKPHZ>{z~iXWSEityk@IWR7?Mg zf<=|rLQBajA4l62IR{~b3S3laosO`en-Ag|m`@cceaFqTiV^#PXAfi@k)2TaMmF#fkR{ZskrwVW-WM17;|DI+@QgG+Pl?iG&3TF3Ems@M zUK+^Ze^Gf>6g*Ym)28+#x_TI@3?LoqEK>s4y{-H;4Vr#^v>(gC#&No29H*WY=i~tH zk;lsF0KRQcSEt|IwpXP*c5ln#xP>MAVpgq7?9J27IBnYD27Qgoc{?f$p9B&g_GR4g z%vzsTIJux z_%lGU*<9?VS{te_w7ohIE&8n*(Z4_Y+1a9S5qE5<_olT^ebfF^LyU|}j1qG{BTRWB z%vg4}n*rvE)I(x@fSS;$U^!i|;5FCb)fRaF0xq?4RHvXb_{WvROHrT+$We~riL|Y^ z_e|)3?iev=5+>;$sn5a>5@%aVFIif~NM+$}13j9vgfVZg=XL@6qM(3ifMqN42}yV4 zUEgj;ni!pEK~T2%OQB7<9IkS~*$MAF9KWEYK*q4QXxO+v{s!V@h8FL?cD>wDU-g4+ zDtgsosix1oIICv$p`>M0qbruZu6ggmKQqlCo5TN^7QbV9MeY38PhPe#%457`HOYt} z4~?~KaAqa!T+3ng8<|2LN2l37niPEyCca_kt29m!Vl9q5WHYokZI})kUh=WzWEt;n2YBa zuSQUBy=(92PYY#izIM=kSmu*+fxMglMx`t!6{0M{HI}EXEw&jKuz0NfLp+?bLcC3$ z=gQ-%(o1E|8porTyv<8bQrbj?L>gG)R<*AnQ?=oRet|ov>B&w2-x{v(FC?x(CyV~! zW~qwq3s{PB%#Lz2NfTy#sQQd7m#j&;iRh}#ygezpHr1}vZ>Gi0^gbs6Ea=Vb$qm^! zCsEUC$}kz!#WzTU6VsAzwYwMenCO(Xox~YeNjlQrl4kKJCs{mO)E_ZoNQ4Fw-*HqG ze59iCa_dTx;F#k^kYD+d7s%{&ubo1MUA<>{x-bC zaB(e(^6K6?DS<7iMT!0GKf55?Eo;qJrj#~bBdZalyrYIVtFJU@`7hYzdPmMbo}lUw z@o43k#`0*Aow~_k`FFD14j?d`DU`_iWT;pcz+Dm2VDqAvJBsJ~ z2oV@AoU%rH9=BDxV^;j};+j^N@P!=AA`X9XzLUsN^kk9ITBA8byaHTq3xB0iROqF- z9z*qQxlv>|cdg8D2|Yvj&;Q8t(B;7K!P3J9d~S$E5m6;@$2xO&tJDj53BUKxrEPPD zixl-pTIj(gdX`1z43WV!(eX0d7BK-gdhB%R0kV<#XXw1CQp?TP3X@IKswTI;5M4v( z;)otc2I&8CHM8Tno*)bn45B?XjpHlUe`6kek+LK=hSc07d8ea=%YBH+jOf ztsLZ3$gju(>8bkXsE{yri;wp= zKC-UUS`>OPEov7>9Lx>{g=<9aRuDbsxPw=}Dmdr*^yiXj6O>FN8)coIq`DW69V%+! zlr~gHPtxeYy<`uP)pVWPc@Zm<`_I&X&8lq?GW`Zk*Oj^p_CCj$AHKTr4T(wTovVWKv_&D1b3aZbF z0{>r0(WS_O^;*!!$if)ATP4~kpB&_;gkeeBmis4SW6hRrE?0P%s~+r$TZ+5jxrWy9 ztYo?x_t7h#<|Nkac%C{nGl;3xY5&3wEdHsm{gh`Pd<&(Zfu^-}f-|K{Kdb12 zXAYt=I`_9K-hQ_U_+DAMa>LWK#=~TXLHs&)WI($@WcfA$WY$bS{70ftanv$!10(m= z_1}o*^QGMn?<`a_%0NrhA;sE@XpJiGOP3LPBgRru0p$@VKdjjHJSuBC@zO(Fi&^B= z=}aJ$6&ghD7c&y#l+VyzTD)pi`2D7GXTJZ;{f3phX4$n7g@`<3SAJ~ipLSc7KMe$` zr!0gTipA9qY#5kp3c)BWH_)2jMup#&5g(yF6~G?QLCWX7xlPePd;ct4R8Vxj&@u)& zDTa&gX~&zL?H#)7;0|x6P1-~g+^w88K!Cf}P_HIae{cK6K_1wHw_?kMw@eUjU&V3d zR#^hP3lOjNp2Py5K_vr6lWFg#BNcr1&eqwL-AO#C&?~B_{o?t}H z=*HwQBV=R@tg;~3V^Xg}TykBgY%)#EB!JT(z?goXIr{sOTg%|D=GVSBr$3^4l~NW| znf}!8K-gl+=yIPvG?`^HzT;+9G}f|E=bg{m-f1HcBTD*!Q)zdEv~<&6c+G0KwdN`X zXJ{|~Z4~>`9iid7(Y^^9UIHMZN1qR^9H!+mYe|UBF951Yu=l9meAUL8v|HXt5|oYh zXV4*{GF(1d4X;GLK>fS(PmX_IhN8D|S<*!L6LPZRRG&+M~%x@9sebug9aq$mQ1+h0UTe zGrC&NxD$pCo-ymBDfV%cCKT7Er#4x6HozaA7hKP`8Oc);Zm%FVy_5X!$t!KYLWj$acb5!{MvcZj z-P61JVRw`AcwJ`oS7I)We?132u?m5l@X~QYR^>Lb=Gr3b=)fG{OG~plVX`iu@86II_Cb<>mx&rmWns%cxuW3Z3C0Q$P2by47-3c@SKlYW8&U8~&Oj-T_pSGh1 zM}f+6i8P#HNrSyP!q>*LxBOph+rAZ1NgPM?Rq`;|SLX9YF3BU)DxcmtG2Yn-cf92^ zOXYljrMzWTm=so|jJR!Ng}?mo$#(+l#o%+Sos2H6Cw74~{mq|?8aN784ohVEh9!R9 zB><`B+ASd_yv3)Z&wET9yu=GCn~p4f#H@%9l64=p3s+=y=i6wp9x_(c9+z0%vuq__ zh>(nZ;f>0p4?Q#5h&e8EK<63*-C{i39E2JBL5Ws&1IRa%v*akzLGn}KD1sivLYPn` zf1zUJ6^Bhayy3$(0y#)RWGFTj3=6{>2>UeVO3GAP`zLMQNs|#*#ycBFN_b5i37%#X z8N2r=T07t65eM^J`66aph>j$M%h8j9SLl5sQ<+7{5iuHK$+kwb&X?$j?#~-4)vgNa z;1oh!G|Tf>1!o{`9mej^kCrIQt@%J={glXFXjO6jXf4;NtkZ@%e>KWs6yE>zQbbL! zEj%p(9kW-OqMaXf-{AR&mKf@^MAMt>*o_!ufJR2^v^$j*bTDR`_C|JlrRglL&D5op z?=Sw!VR~c5md#ROZ^zm!@WhtxhLOGQ({(ZJV=~|pzoZ?&3xcsIYWq#UYwe;EFw<|d zvR&|(-TONP&ja9Mi1K~MpnKTC@ZQjb55m)Sz z@81)3y2r~HWnE6GfVHomi8QV;k$&AqPu{M!;M!1{9_5m~9b*_I`I>bX4gK)aWe=JupK z6@Rnxsh4Bfwo*zc=DkCT>90v|FQvsdR?X%2ESobp;tkJBn3%^MB=L&;5DD6K`KUkK z`qfEXq_cR5)Qxb<$I+*epX4rWKWSBt5Or;C-(RUe3jMRQsFFk5@2va82$B+ptjf?| zIG%G%_?3JJ#`*4W`fmLb^zWm|~7Y~KxxyJZOOF-@m zz%*`@+NIku6>9!7-6*fb$<={S`kQuGE>y6sJQe?*IKzD0U9Vhma?Ng^t(zeh3uk}fJ`M=($sSX|(2*0G|1uzKJlV2Tj_rirGL(aDA1N)~>+zYK`n zsWQlx^EGOTrV*;FemuHFS<3#FyY-vxax2OkjIMN9Q6ywsxG=}l{Qkmi0kV<%rITk~ zAa*BkH#qkuw_fY*OA{rQ8FC{f+2uwew4cs>@lHOu`>9inzq{@%*oS9{JAs zf9q= zWB&WU5&Io;TR`U?50dZy-sax*b55)?e9&5nrl47gNCv=vPZch)>3jo5+s;t%VD>t8N)+sa)yR)y`P_`Bmk zpy;-PtcKO2t^f43bV{g3fR)Zmh~ODj&ZxTDFk7;W`t>>_Iixy~reYvb9q6k?Y;4uu zcPa{Ta6!b|f8>faeIjarEiUx0yV+6e-L8LiwW6m%8j%Q_DXc_^LA7!3C~?8~T=u5x z5l{KcuUIsx27{3Ku*384KxktGjiz32|6Axp_?nN;^dks#>svK*;Gsz$qdHz-@)R6A zYVu&*eI?~Gq09F1XU(^YZi75~kMkabO?(Myg>eWVozLr+@0-SI_wWrppI@bZzLv20 z=IMj6z9NAJT4k~0=kgKO!%f8EKL!Qg5y?tomVXNxasj0Y1+lJ)jniJSYBts`kH02F z9^oq1hqn8_tTC4dzAjUsW}Y|g@s&e{+w{LeUJfO%F-8+x&(Ak%_+>M7U-c6s9IO+A zcU9VRrk_+;IT+8(2BoO5KlGE?? z6QMb{9A#O$Lzi0B{3;3Yk6zeLU3iS-3#Lk0FW)gLyjl2A{u;$=uf=URe}(Y{sfWn+ zqN<(zE{4F2Wdw`C8k4g34=?A#>Rng3plt$9Mjv&6R6e+cT8=Ka5%>VEo^2DeZr@99 zi0U(;nkgjdHeCT1nyIo>B_pf{9ZKJmo50!~roMZAc5NM&m`WbXS_~9#2&3kOQl(ny z@3O9igP`lyJRNcC#rCAj+In8Jy&uMcUlhSjnhJMZ659QlX{@JYM5#&Bc(0D!*qB~j zNygq7uLxrpV!hz6MTrS4n0oQ9Kb@5lzb?n~J(}RazIFW2477pe-%@ri%9>IhJePqkir^Kg zcN#8ky|4vdOPQ!D4p=bt4HZYdS6l0P zSieedQhot!9>WWk3U{nlNQI|Mzh;2hkDux>bkQLZJuE>5b*2d}GJ1(x75gBVSLMNm zicC?}rz#!N=SSi2;4vBlV$*T9ng5;h@6;f@R<~FTtFfmoD-?|9`MS#XFAj8kX zHgg~>3j|za4F+C#0F(k%*qO!LrYj#82%L$yxOdCqJ)iZ$jJjdMdPuLv*RNAo*NXyU z0tEU3>vM?FAp{c?BiO5#Ih5#GhSzCSBEG<0 zQ>H>ttGSi0eXD}ms;aojM-OPj%}ZBiHG0F=mXJF)E2L!iJ>D#(jCP@C^`m|1>g3QA zyBG>LnZS-n0Seu&N6pEbVX|Y?VuIIs%H2?k5=CPq|J{DMA%PjQBt$0UaL7WRj0|e> zE_}ghDUx8J;VwG{wW<>VIcQ~0KZ~1p4<62SW7BGUU{T!G7(V2r!T1!IRBHi@iNWvY zMMfscy_f{TT{N4jHVcXy|A7r3?tIv6Gmr2tC#rhYmu2egSn-c|^D%aGmu~0YtV{nW zaQ1t+fp>eXeZyd_+(~U@hd(=_pV8s>2RFZrl?Rx#6rN#g9RDpuS>W!qmfKvDPg3_M z36m^8Hb#+u;5*K%@>RLQ{!Gf9Fd*jZ^jAouX_5BPu|6~&*GLtUSrsC2+>vLE`hJ*o z5V}Fb3L1clYNc53JxB-5^87E?dC>ml`I#b)7ovCkKxGZ(Jy8f3#aO$Bt55PI{PFdh9^7{f`D;X^jT17f$)+|b=G3?`dV zjAY+w>}>m(s2B7knlGsqF}mLQ%%S%Mqo^QIa`S0YUaV^O7|Nb;&{qiX!t3>MiOd9R z*TqHV)YO;lG77W8w%rSke(UEcuzCP%tdj!v+1(F6yu706m1rDAiabelJN`7q$10V= zq0uZxzjQYJBSCH&nNILojGL>(Kg6TvXsj1=w_Rm?2f-Z$XOy7htV_{2Db#py60}EQ zw$-bv--1mk=IUj3wIlEK!3K*?V#lu^4?QjGllOA*p#MPCjYGERPLwzx1EVj9H{ycp zjW10EJx4`GMzn}@)#jCa2^A^o4{?+| zu(DVLg>TKR4`_t1J_P1AZzke}1|y>M)uEBW%k?T``{wqI$l$QO%WKB=4^)zN%oL+5 zc8=BU?8!nfU)y$YYc`2EBdwkY&5VFMC}*O43QKO=ldW(A|7@J#xdH;PYe^XIDN5Tq zCHpD**I}&JuJ@X9P$uIaU<79ncFDZ|#Zf`=D>$Yf)m|`AIINN|eo<;eCF;qcxF2Xa zozpHB0oKmW2NJv{{k&;glEqUa+^VXXlDUxsbd&ktZN&rGiLvS8W-plk(4w1&z#i`l zuCl&(ldp>B{KxYph!PqZEsvj2R1507XY~akT4WJjX{*8XmgUbB{sp|xmD@H=F%30G zq9Aw}8}XKjZNy>1d%#KTLoVZt(#j0$5_KGIF&MJ&2lrZG_9QyQ02&y2qsMPskZtm- zplwoU2DU1m(pWwVzUCUXW8I>Lz&lVN8f$Xehfa2h#2htK|D=hczd^x_BclIGPJNSK zcKI)C$BJx;@6Lf+(KWGtgcNGYl4$WM*(0eYd5CX^_~w~Kj>Q9%MQ8`U@ll!Oc-8!t zdYOp#w#7yTF_O%xeSHyGs5X01@(4b*aBeoFpjEa>&K<~lv#x5}4+_*D1qJ)7F$yhQ zM&EmF`1@BDh5K&*cx#Z+6u+;IFEqbXaz$+0v;4y$cbAX{dSjd^=s@6ZwLs_^p<}vN zn;Kh8WMgC3IVpGF*kP%9nbiIeXWKP+(|o{M9sS_O5H#{hvVi<@H{a%A{P!2{w#X#K zowE@!CGRiXl=SDMYw^>VmUl{Ql6;%2A2L#~3SDS);^LovCgTOdq<(01I*BM*sPc06Tq2K25y5JKiwEfJ%IzRCRB%?No#7_hwec&O!wQ1?pb)@Qc0WML+$ud z^S_PZHnH?10d@e48(Y`8w?vXA_m0@-z_uMN3@L{h>*783VSBE%`J&hV++#gNGsZ%V|H8LjDKU57>_Sh>KqE)K#vGWCY9s>9SX0^L#lc*h|_sVh8) z!iQ#FUq9GKL=68CEeMUN>&tafXe|M*ZAPO1^hEluZ%gUdRp*blW`}UGug>Ljx)>$& zSP)1Q;ns^wJE=xV;f8?Lk!mikfHC!bXnaroeRl+!pznS5_OM7@qy{3-cX84LD(#O0 zy@Qb7ffE60Q%Pn`-X+?72}=wE^?liDvG9b6b%9A-*hm>mUF3K*JlUG-DpXjOZnN7k zG@Lq=R4d`oXN`^Eb?;2c3P++xuK}A2!Hn@tg0iz`6W&k6u{9_MFx=iD4AIx_REiC7 zf8uQW$(*ys2kd9HuhQSRpXl*EC_EcNi5MZcqF|AE7grUeskQzW6R^?EkM5Za$Mjl{ zKD#hN7cm|VX?Jeh`12Z>@2H3V`dMUn5{uxcfqv{&nOUKj%asYRB+OsA^1s2uBeaZ{ zs$Sd0n^TN@$3tHuwfFMD*Axc`^!B7iR-}K4Y-YvEszP)Jcrpj1Ha0mkvxpt|Y2lYN ztv*e-OMpz?c6X5vP^!t)`>5oxabxMHanC-R&)R`g9uvX;!q;03Qn!`dQ@5Hn3sqA^ zOnZcGuCqJ0T__=eqvzy^JZR^Sb@qITzMk(|s-98%SNGKtUp6tm8K>u8Kvt?bbcA`j zuejT2bdUua8a0FMG^^7gV@cxS+Rg^|3R6g*^6rGF1JzP&LN>( ztH{dD(f2V^AglzxXH*z#_{MOqR=I|Adl^R!jt1S%w1RdKViHG+$VhF;epcj^U1H3j z$9_kvP9A(aPk4`yn5bQeQHZTt14x-bGvX6-Dz(hLkl3?n?6^P5H5PH{clzMR0qQe&Wy|MpFivY=S<3h#rgb;Y%;1~C~eh=6wK!bZ7+UDwVaUh9X z8>(66?35+~4AJ7CJbvAwcrMF);dJ3o5m?7jO@FSNlEYcZNeVvW3uz4^5lRqGjD-Ti z3DG#k7xO0&=y6(9JhuF_y}^kV9QE5FnpkQ>9`)&!x$Ej!EtgMXQB4j`N1S-bOYY3J zp|`g-DUM}GKnC3=?3;zxM0Mh3rylew8m-ovNw*=N(gL-j;`w#X`A(N$QJ$eweo0y2 z9nRp&)KMA+=zO#|WDmS3V&xmZ6pS^70s^`;15V-p8 zppK22>np&uFKEM~bNC`(-!jv8s>VmgbosrC3GcHw(TH<VuzuZ8x(DvG?+eF{?g7`1FoRN0TKV6mWQ2#<5Bi74Q-@U z5@u!EV#MRya#83@gBAOi3t5qM07<4>aNe36>CnmYwyl2UKL30}C+sUAb|B?h;k*LA;j-S$R@v{>+U7~R^CHXXm6t1RYiZjv1c2RQiEPz|Jpx)Tf z3fP#=e-?7cihHsBXE*_K-Q^(f-?Fq86Yb{M_3HeRmj&Z(H99!64Ix|kU$UR?M{*9&f$3`6M3gjpUO?QrQ9T^3vXeZA*vUrnNB%zm_MbFFfOy)1S*WfW-Tzf(+G z%`Blc*&H?nt)&!hANs`wD%0TLl5OW6Z9_(*m!EReR~@Tmc_N1$Y{x{XMAAKJ&o-LJ zur(R2v8;pbA{9b$lA-e!I~7SLM>%IeR7drJbIi*p;6~T(Es4^x7-PYlyOy1QFma`H zVWh*06HT=;YsekdmUw!^oAG@D9kQ;?Gk@!T;Z`t6I**aioeFyuU#_72CMyd0z#^3D z)?~XqGq!xNVd$^*XGKKnYm}^3p{Op6OQwZ3K7ejD_Rc=A<8}iC`z&z@DqwcDg1see zRIJZf!Y!?NYm5d|n?oUY2q?lE!ye;jol79Kti_l9yA>Wa#rnVKi>Cc{doGLD$=~is z3HpxorYbbpxobxl4`Am*Xr=`}_M9E|c|IGd4|1n4Jv+3eOe^XS@`1`u%XejU1bP`k zas{^Js_{3XYLyg;*VXU(i9YaT;UV0ES8Tp)d%-#6MgV%rNUvka{Jf}!rcrb*(W-8Q`#6Ca z-7d#;qb#+P_Ee{5*S6z?7FSqj$$WEcJ@)O#>#7}BUV2UMFxVh2W`|VD3-;^!&o0S$ zmntqjKu+G0%~WSw&M~jSXFr@w$WUw?xp>&%9H%n${MsN0U3@Tnj4B(|2w1X)s{0M5 z$+_119+Fzq1CzhE7)=x7`cli<;n@k;LBW-?6giAayhD(-UP7fuy&Cm#j^W-6G&jC$ z6_+tJTWRep<0n2+pm;5<1C{G7f`4$EkH`Hpbp5n#WGSa`D zZC>)BW>DBM6c-!uX)QciQ|h;06f5GF<+{S*#}k|?g$J0$jX$Z&T9z^aSMXOhrAWy# zNbHwOuJ!!UtW585fB$0%4t~Cnyq5&*-VtK zt(P{JwS7?infxbaeB~6+G^t7?vp-W_yyNRiuIu#c7B++rJ~Dv3bny@}QT4Ad<)=%s zB^7t{)~&njm$T*E{b^?4zD+PBE6e3C_m9mIA_(U*2O5*dtRU*S&%zd~Lu;(!|P+q_w5%VO#Rd zGmSj$*WH$PzJ7`4*Lcf;I0_Li3n(CBRA^-x6w8^x9{tvPD{?+VYn(iFRYTwXX5J&u znq9U{eyW~9F-|i}oR%3P6u)2eMc(jcn)uUVb#l;5`H#E6^&zRanLNC2W9#$^yAcP! zO0l!!kXH7StJ-aEUuP#mk45(7c`4b}D@xDCU%Zqk(a5x(#&VDBCw3>TDY3>oKy^I4=wG#|}JM*f=49!5iDZ#JMf zK~s8pqOxTD$>xi}SeFij&WJ#$^T)mJ`KzJ7z<>hNtS|PFPxUplqBRG1Lz~(?c?Uu) zi|c3R%h$#^=#S1VU4kkf8+|rgnXfx&o^d)};fRb~Ecr&ffPfU8f;#*y$_1mU&O_ro zs6ESXv*w&0-8(PjMs(iiB3`_$!t$JI3*f_*zft5BeguhQnvPS4w)YfA9&_KuxUCO~ z_aWm6zqx9(shMV39!q*+hPhoVN%*TbzRE0ixE;psK4`NwF!!*Wkj z^8+u7+vzohYT(XDWe~%ykk+$E;V69F;`h&w6Lu-a1?p^T>l8t%IMFNwj$}r+o-u%1 zs_UpX`HqE%e7`q>9?xZHOF0&`ne+HoyNuRu(ep#r4s7$R_)R3imZCEwjZ@|~C@3C7 zUUC@DBIgVA-DXwfe@}$4_p0+wXqsY|>UEAXr)|{P{W2o!`o&My+5I)Sqr;-_sh~YN zeH~DXu!2WN|;?vE&uTcG$E^^1Ut*!1RAcn)b5r+dfS)U zr@2MN6?8P|^IL8#zByj&x$bYJ5$t05X{yFYM@^_9L%cyf_Vb&;*ZLdB%VM|{m7Cjh11F*2(+l^`@BHX|bAn}j9h6sqwlckrjR2D$ zk*y8*U80UjG7k~F2m6Wkf}ZfxBydq-LZHkemft-2d#-QH(8kXynZ@ieVj$cmh17E` z+%5$SS_x^d37(a%Z;JWS@mT3YquFipO&gY{4D<3;3AD`!IY9)*E{DVIrl%LtxAqW~boUNSijS2Mn%0^WdtoFwB$7Wa5Ql=r*9bbb3MTsmf@zn! z?UBaz0qp*=;D+46I_3T>1wcHAwU0K1I=1T~u=>TDH2H(y)tqhD9t6Jb zHh2d7E7-p(=R>I?h-4`yN3})7UY>qt#*~DP`g;e*zVp~C6>jLOnD1}!YEEGzdA26_ z$1XoEVZ&ZPJk)lC7VH%Ot~!K7o}NrKw1%*F&jncq`2R4rzu4|`Kr`LyD&UBc9X4c3 zF0ofn5gOH=SLYpX9*gH5aXrhw?VVw)dEfPnbic_GV?RGU^!oM*1oAJD+AG#h5x5LQ zRRwa-N}@H?AI*pR0t5BrG5dY6`;wU>FMQg)-M#$U#Y4{3UCS z8k!bo2~DJcxD>08+Hp#LD1V0m35N3cBX%5O=R( z-R=NbGJl$=f`1lAk^P0nR`IX^p_wAtUZmrC+&;-~<5jpz-SP1PsZF)(UM+9<2^-_= z1C>_ZIoM-Qh3)>)THeG%|HxVG6@q}2)nJ<%-E7GE zWIkKUY4WmtK`KXl><{OA6*r2ql1V`ZeDGMw6=hS3$o_W6#CrTr`1wV^?!GxX#J_+S z_sA%5k#Bo{DMF_m`10yCk#I33R?%!Evp33k+0B>iawq@`%YXzWzmRe(uy@*qU7lY) z$cJV9v=2(19`5*2f#9~yVPGDTnf!e8!Hj$N;yEF+$J*;hGnE#GSso30>UOB7gX2Fo z_=Pzoo;$Q*dn@w7@|6~OE&sY5Iz-I`9EV39C}o0ROb3utNtCn0KvLYL|M~hrRphRV z>P0s6JzKuEyR2_E;CfoN1C=q)p+2T&sWoDJLV5%79pqopcpG$7U-OQicz&I3JuDq z^C6lGM}?zC!6l84rU|+!o^!unvo=3=ur>NzcfBqIT)ZQdGksBtU(ACV|B@1p30t`D zn>;A>;y~fWET7RVW_p5Kw(^dH|2LSO7S=^OwEqI@xx=9M%Kw}d%neMn|6ISE(ca5u zt~m7!tXuf(s`s~6jwlakc^lb0X@3yk5)`cRdz|3FT*hKULd6e@64Vv9+z%N(xu(9n zga^6F0tut;O04UgY#8Wht-zN-wM+KY#WAeqB2d)9S<86OU)ytdzf z-87Xt7FL_DQEsZ~tp4o5y#?Y=jhnlyew7%~sKuzZ$wu38VmiHofR0xuJgOMou|vuO z%VS%Rza11Yw@DiV^<1X6EX7*iK@kMQ|+R=o&qDSXjsZ0BrDg zLWw%lls)yRL-zfAfJ%5rM@Yju!kS!f#^`%*NzD<@pz3QhO8|RV5y#_M4zNELmUGlD zAn5DKeC^L)IXv5ZYmh0AdiqIoq@~zh=cv%zxbRLAZgVn+suEgG@~pPt^txp#1JzkCxi)`HB-y~6$B8QIGN?_bpa5#X<(%7oh8yU8l3}|*^ zcvX~%h&1_|*lrY|4>3FYB-SIK6kSAm%TBw$&oT8E6dL{6sXijy4{_7IwaUZi$H?-~ zcW8q~guVLP;B9o7P3U$m;))K*jWVmA zi~__~hgJ>c;f$rah|0OKR4Kk^UHHPt{-s=NbRpwc$6=O0C4$xvYULSyf>4ed zKeVhym`QSN#P~n$#js?L$Ke^%yUKOc#ff?Q?R0mNot}%(zoboOHg%h7mDv|)RHW{R zf92NlKaCvMbKduHTJ@$>_YT8QDXf?V?*bcd#xQ2uJx%#(OX$+izEMaoRwDgol>6PjBETru_!rx zQ@Oz(FTr#Ul06&fFm%DgR!auwuN^x)H8(Upe6>*68_^jAd5Siz_*QXN^YjU|-uQq29T$LjoxL;6b z_8B(`cIF{ z{duNCiy^VL(@m4G1w3T7{a073oR2>-c+{{W$9x>B>YFoV+&3iFG|smne(CD%;H@7c~9)*g~J+$qW2n} z%P?f-tftKJ+KIlTVo*nF^>3wILa2qJ!yW8riB;6}%D|44 z*_>MhbN>ko<9c)~x4OGziEP(tJ%4)jS>0Dfu`9_w9S?|^_224xcKmUL;kj{flZ7cP zqmsm0`Ly*ns;w;gicOYET z`u@?fX>^aFW0x{Vw3!D5m=!WCV1ZjrTaVH2e%5kiLVKi2jrwv}%)T`sbr-r*7!dwc zk4ms4{Z~*6EmuddOZ&Py=j|~<{JTF~Nb2;gj>#%nGCrKt&Xdv(umzU@Ay$_i<;&rY zdRmp=)vVn(V;bwu$NU0~EMoE~(|y{}wsJ7QNnoH{EIzv9o?%zt9@T2c`l^Mk(b3^$ zmC~mhA14>J{$Kfn{bT|4;u2sAJZNQ%aI5v>uMbXF@iA3}gkuImWo>j0kL?)>H&!B{ z%1%p5!;fcDEcbQp-Fv-167Khbgi^ULExkjWNx73!efpS}ZbQhn@#rF9SYbwv=+6<6 zcT}%fbnZA)m|GG?pCVY7UwOzmv{eXdgv{WNNEj7Fri^ulT2L}a9v;Vk z1LM}-pD}P-O@KNmS-p*&LdlGDR1R}0_K6cbn?~viL=CfR$~EtCZCti0OO1Q6dQ9#R z>GkwlK73NA>`jn4R9(Coj7)zh4#OgBx*c&9_O}U7n?=4)E7#&L^F?6bA56q~=AF3I z?`HeX@_g~G%<2Y6ToXE{mRv1sF9zpLNjrhcWuN_@_O2_c$!%M^w;NFu*b0br73tCq z8mcHoii8$Gs*02lF$jcSY$zKDC`BYfkQzuxB2_xrK)Mh@AoLoF^n@O`LH9ZLo_p_p zI1hJ^amVl}FMs|q*Q{&(bAI0nOxO-Q7@+WEhNktpWY4zT&PkvOrUZ|@z|NIunzcDYJ_RjUAXVj(q z&BY!ID$7hayxFEy{<1>D$2Mh!0&# zy+ZUKm3rQhsZlVVRq~H`YT2^1Xm#34>yr6g#d|Ey>25PRuhMwi2wDeiKAaqz%h%X_Bw9DS5TR8nDpdZbQ$W78uw4z+ z2RFaA`h}yT8V7JSn%LMq&g&0Zd($9|606v04cv*BF}lAv8R6dYylZ7u26x8pHfl(y z$R*NnTg+_!{x;7j@OmBC1F17t%>s-6sOcUJ3d>enQ=rEQU< z@l#wJdWXJ_cy5)oCrA@-MLm+KMvJ&rP($UHqBv0O@U|28y&nc8N@c4udZg^O2^T)6 zQmO0Ue%Om4<(K58eowuSW2O%erGZ6n;u<;zU39L%&QJjU)jhe8f>?m?MYhIc*@KoC znhY|fB%&61`#h}qcYv2kr%X-@b{ONHuM$%Hv}`f!O}mk=Tx-5^zw1mE{~x8R$$b=I z4IvT7ycY@W7|Um_()U|l-1xxs*SMmNFwwn>;iTR*7VgzMvo}4r%QB+KTi2?LY$jL7 z)tZa(=^i{V{1H|}eCtvSr8Lz1{ZVnq4VrHVBrA-s!V1FgZ;5D>hk)x=qzCV#y6Sci zxkxgTvu*yPW(LPw^g5_gENqCvmOJFbGUem2+Km<^Iy? zNZcQ=L~{@2m(RX^eOGFfXSdO4t5Frr7UZZhmOWKtWeDIc?V2q;XsO!A zf}6Fl>Iey#7e{m15!6)D^$Jok)-{CB00ME|%Bmx_HLKIk4Kq2e56EzItSPCgDh+|w z8bQ0!mV5|Y+2!!?8@iBox$e2o7>}T|;nFoMfAdIS=ZGx7RaH#TIg$J{;%h0aVw1Xe zYVpTIB>pO}vK{h0WqzWdOxn`Ff+FXH)^^d5x^!i`kwmf(%7NL>agqJGd)!HOMUv66 zU-|-G_8{_bF@>$dMdNlPxz6jOB7~lAaxAbX)X0QYnr%MPw%en$heJ|!Pxh*1?R2oA zn(AzjqfMuUSPKI~ZKJo=X%9w$yC#rz(2o}ZiS0=JTh?&!ABoe)E7er8!26TK!%L@Q ztQfG{B_1$0>P$@o+!Adf1aN0)AqH&iKVB66x;R*H^X}n3fQ9Huar4Lc4*f&U37|tf z!T6U-i}u+FG-9}8Hz&RE9+3+c2i_~k7i-iSYZ+h4mQbrfi+8f-E4{SNY3Y|1Py#uh zOvxH^1t+Z`lESDu*ZTznY3m=RAjtAn0|3-m5nMq{&e9K*d+ab~R+N6K;mm>9*s;>4q5+5m>0Mp2D zzj1dG=j*&=C;rS*N4K+1nxQ(>n44=BkBz;{@n>Q~vI)Q|`f!{6HG!Gc55kO4Nd%Mn z@$5qIRY#5dgKp!fMhUPSPrD$V(a%wN=wLLTZ5E5pM^XZ7Ouhgq%j<*t92Kihz`f*P z;53HZtlZ=>B`kDhx-N)ym-i)XxqUdtaABEw?x}nsNY@n*CS}SukZ?~f@Xe5*nyv#; z)|ARWPaDTi|FT(RA_8=)j!5r5ovPPeWcTS@53^Cn4v>C zLT_gUj~W4p3&AE5!dLDLnS@GZ3b!J`uiSs+| zhYs{f=IHopu|FUzTJ6@R#P$47Z06UtPT;rCG=^AOEVt^JUw>{4IUzzC6qnKZHeg`45ZTQhy{v$xWp^nj3r!S~yM@Cn!oVv-w{u9L#uJ8RKK z@zd!SFEt&zAw+`gpuT8#?ZX8|jxQ4;oTU)bej){~2E16ZnikYLGVwf&ofN)O5GJsN zEvOc(YUSyk+N4o{B?R$L@M$IIH%y?a<6a1(R$MP#Vl4Y4$F`+Re7EU%5fgXGJm;Uqbk*%GhN$XWgpRp z=J`DSbw%^Ckd|h%>HO8}BKJ@y2XD}aUP-SzAmgQAh^?TNZ!rF?xtFir)kmF)Kw(y^ zQ8sFh#Z#?c^8!;yWrNBu&;j~SradCb0&50%^(17T)s$D7YLL}28}|LRnytz|bsqn$ zq=j`9>4~56wdio-ls>EbX6V!qm@l~|_XG%Fx>rcN5WIG`4W(k0UhAk24n7}0r{s{{ z8ni$ZaUc))NvW*=&pO8CrxVTqxM^@t4W13m)7{(WJ4#y#q~aSuz)n~?fQqw0 zD{Z%1?)f*)+J>->MS*YgxNBKiR8D<;_yS?MI=G1+L7iP;?~GZ7LXfzdN#obO<^b^}^#dJV6smt_M`YKPGQ` ztTe^X_7+6K*-8pC`7n^BW*+`Nl`6jwdKCYuRT8w%sLoL;1MO2zFjArN75UYO`?dKv zqg305$w)zm3lIjy=H4%pS>HM?Sbcsgs*1X3d)Zg<@$?;B8ogHf*$!q8prk*HN9V#g z$g|vS-K7-go{;4c)g<8KSV4n43cFDQ>@>c78cdK5lTgiE97^eK zui3Cui1v8TUdFp99f2c)`+*_+%lfEhW8@$UZu*A#WLT(U3z@wOVJE!jHWo~n)bD@n zmp;zK3E5dNpIwp!hVNE$2&wv#*MTPS=ko;{_Jn;+#>1`U9K!Mze2g#czDrHbDT|ne z+QqTkQg96f*;tV!QrX z(vu0qH+#DZYvEJcM;b>*N7;@ZEe>Or@%k(#S#mpPLd26-7jK7_543I9I2~@>izsdZ ztTcW!3=BmE(U3Xc(sBFS2l{Z*LKuVDY5!ocKzxh33V+*q7stRnRq9=h@knMB`;Nid z@c+aU>nRw$%c6OUvaG8Nm@T~ms=jE)rN&5p-z)2GVhvbOFh|eD5Jl1{YNwboFu_lq z(_w~Sv#V=rlgEIWEHyHk2efJTOYOMD-FkKBH!@OIydLdq_CPrkY_k9R*GQ=2KObP~ z=fV6>J?#6*Pd)qtA^6iDe)_|IMU4LRhoAoN(;xmPlKN*{{EUmAaq%-Q{)%bg-^dS7 zadce#TEq7fPU!L2TTlijw`O@iyly)EjoUI{>Y+I|V9-K$`h0Qz7}p;-seKU^l8t!f zXET=%2(vULNLVY4FTb&?mbXdL6OQ*Wb%aIomp+7ls`azL%opW;S*H zM!~SK{rw1M6YO7*QT!V!`agODXUa{_y_|GazXdELxWJ&^;q3RLX@G)`efJPanf~$l zI^ATQj9BXb98itF7#yAn%f)|PSS9259tQv57#Y!;>P})9UGTmv!Y-@@g081o1Y{-} zCWx0VU(0`h)h`Jg?clGYJqKucE&f>W&a>3Yl6mV;)d^lks3yYj!gQWyI!6!sAglYx zf%WmM_aayrI!OA}2XYX{KmX&FN+o-Yz51*=lb{Pw^|P+Rup}y)mHhtgT6QCwrA1a0 zu;5624b_XkAboPW!Xmt^BR2|kt}J)ogyl}L!oW;t{WzPtz8Ao^JrY|U%RD?DYcCz8 zUTZI_seB7WSpbH<5wDtWs9g>2fC8eY<`*Kco$;`I#)8Kq&q!^azSc_zS!0DvLc@iNmTH>my~~e z+k0NzV(NTzs#r9=|1osA_9mD=@LIceAWrI@AaLKfOT*%Q|kJTx(<=_3LILar?l$P-U2Jh4^lXIr@ZF4sRvr*KJsd#cDD#KM>nK ztGwh1kbZtGS;eHMmxXn*y)n5obXncA25HOVIFB7lv#pqd4OXBv1M7;V@6i0)T-b(y z*3P+mqQhwZSzPTR#z)4vLY6W&AGT+a@awK>kyq5zVx?;v;@R=aT71+;+x7 zKW$hdkYlpt#Q-CEHKs?_2BZ872s7owLkl>uekb|26wAt>8!pGRGT7DPY%&BmMZYuU zJlOk0kJhftW)h7|2n(ukXy6{RBHp|%$}`kR>O!7M5_OTAY~eXgt(d3yx2DGH^m)4` zfTkT8nxVG_*3CF5`Lb1_iPKGE($9fYO~Xfs+2(9O_~s`_T5;~^=+*DJaw+}VE6uDf zX-jImQ|-1W-WoLXiLdG64Qa7xWvGC*x~@_aAAafZs(-kKBd&s<#}Ff97fz%uGC+$Q zY1vxu(q8%-a~xsoVsYNZ+J#%ywL5exZe^`AuRxlr3K}brt4x3NjLD?I^eLwP%qSNO zJ$D33wjV46wJt=?u_4Cm7q5$b$z~(a$n_VU%yZP6;P4Km>$_W_^sQM=hBM+V&vAYa zod8ioEvw59rw%yXS4YVuY7eYaM|J;{-z&R03+=rrxzlUQV3NQigPxtpB|1ZLmW-%y zsrLJYAK>#IkrS_Nj&Ru|7;}W@H1p)?5$I$$5npgkh=H#Q)fkah>@byiA_p|bwp

lS03P=kAJVv#pc; z!ZZl8<>NURXi&>{RLWoQ-8kJ~H{0VvunEh-RMmH(>9I(zggd11lpHMUZf8a>FGByo zpPKoU!L2)+ADDBDO{>DtSxY2$=C#SR2Q5bM{tf+it>lT%tOZ934KV61zb29HYeU6B zJw?uD9ff|58kszG#+{gG18|RLwm~K5O4{Ex9;P+KM^h&(bBe;ywPmkiDjE z-FXV0*)IF?3aoj=Ldt09G6~~!J%SkM^y+S8d7eg#s|RJQO*LRP>O;&1>NG@E163Cz zO_C%$iW9SJ70~EovPtbnhR_+oakG`T&z$k!v+w`H6!kY2=fA32at_sb(G3R!xX*!5 z_DwO3kMI3U;rMfForPX2GyYQUMjMM)XZoK)w-{Z|<1n&{xK+z!HehncnJu9cN@Z|*&J+u3`c-##Z1>T2=?52zm8x^;^{Q9(xY)~&l; zn9r~KcQ9Atl+{QuU$@;gn1E z+lrbDhqrEBLKJ0QYWtY%qH$bE_23n;B})E90RdBOS2r_t-p*BZ2TiDb&WD<1=M&MDxD+E^}LM`m^QtCyDo-$(s=|@K9#ZIPj5+DnI$4!1r2VJxJ3V zti~@X9sAf801OzgZUTbGCHY5avH-M4q!@ZI$0L@XkmuOfAupahx_|G^`xj4Wup8cf zSckSw!Kb~-A7L*1xz5v>GuK10PbzsX;y&KA!K{kNYtI2v|HfxqqB zcfi(aMIwP%_Ab4;5r6jbu&>>tFKTri zESAiDz4f0Lv0w$Z2E9?j)6W+)Pme~o2_%UHS-8;xRbXjhoRU*lCjS3;d9sNzsI>KQ z%o)*e-IE(eTkj!k(HXi#8EmbBZUX`F0t!6F>#r4R0uN4~Rn6f3WAc$hU~6kr#p8_f zIj1vMUi&6w|FRP(uSd&&*Qt&7_3A;!oRA!;wYr^R0j{SXM;|wlf99=!oc~zgKqpeU z8Ce)~%8_7IS3 z@PI)=sL6FZ*4$p5RYF1wGT!PZk)cBJkDo6m7pEJ?Gta5m&Y5+cq`2jG?~D26>*A^u z{D*e+ew5$M_o=dEedpDvk_vj1J6ivgPXE}80|%9Rp-(&p{(26LAAKeCE0@r}M2cOsJP z`A@&Ln%|sXK3F*x6?Y1E%nx20^XVp&Lh1g;)b8JHDdl(6w3DDG`eQaB9PMza&v5=K zyEQRm$X@I7`s6!f9Y!3w$8kyNyIsdbf2`|8;WJ6gmhCWhu86YyJ6d+I{G-pBu>HFK zn4wZ4PDbd&BEUHBW_B#=g=&(R@Kh8R1-y9!^50U^_H{eGnz<|HK_?NUSHvwri{D=c zTxjuiAIX-iu^yrVfPDP?E-z1a`pByY|Jr#fi!%VdIhq$i!hC%c8x+lRl(B$XFKdAJ z4-S$l{xy6b>;71vlrO>(dAL;3f{6TO;}7>)iBZiEis<;;iw|~x1dt@nX|go!&Fymt0_gqL;=45{!<}k+R>+8GvA{!~(enBwum#=r< z?|Xu?`K%&mzFNWk4Rp`FZ-j7r#vR0U z9d|p*&BP>on(AJ?!_3csCa=9&^WVV)b6h`)1gO%a+wargAmyuAMQFr4!YNK-gHX~A zzoX8rTi@v)t^pp3g4^8I9!$+G++3fVYq|6e4z6NhBo?Xq=bl^0yQAyB5L-Bebolgu zOna`UmDB{Ze6GtfCjHJqS1@?1KaQsp?ybqW1^%}9FpZj#;sNvLzaQ;?n6n0zLZ3jv z*C)*T-!d`A6CUvLi|a~v?&I#?Bz3S&J(0OsL(LMEk&sZ=0rlP2tEP2z|2lcA%tr{@ zWTnJS717zr z$l!(a+5Sn(d_WctnK=x z!*9!el^A!p_2I*Z-+G#}nkqMDuTK$U*DYQ2MD95U?QFD0$o4>Il~%@hagDpV=Uh+v zImg0e&k^M`^HnY&3g5*hHH2KW=G{jkQw8_UJK^p`B-!ui`r<7KF`%rx21C1Z zxa#%s;*a3-g`gYCsZI5;Lit!aP9f2!%*NGQVradr2C6_VvG(F1+W1fwZ?F!J-HUfX z!$0m?-RnLsSWQW3nOxj)R-md67_OpMq8qb%h_Q94D9w>{!KkU#)^j*X21u*2pxqA2 z>j-TbTw@Uf)Fdlx9to&PatH;xU;`X+|Ijq^lmR3rCYElvn=R?z$rL2wu^HEbn6DZ9 zKHT5GoHkyf2XsL6)iKU@QndF#ZI@)LCPH%$08u2ilCBnBk!3*e`q!e|td{r|uKxK} z7lp785vFZkSJlLBo2&<`A#Xo1)_z5v#SX}M*=d&W&665G&rxlsgmF=(X7bbMAP#rC z`{s8NrP*|BMR&p#WLSND%%<)LiYJ)P7tBkUwm_3|nB-MXH_eW*8;T8s%g2a}SN8TT z_+r_hUlh$UY)(k7*mR1ZW4Rv+bQMV{GOx3>i&#hASs&>J7Z@jQ>^D6nek)QY*%j;H z_$#%bZZHEIs!5@`S;1a!mJw)LA?2!Ua4xrF%-X~-PTnfZV%W>AY@|x^*RIy1%gs@f^OQBhD?xSuZM1kJ#ofaG*43 zfSE&98(~{N=v+>U0@nV)FRJ>5ELgONfXl7%r!gF53 ze}v;8pY|)Is_XS|#g^)O^3Qxp0b<9RBb~x~rC`E{(|-zo3W=00Dcmf>nK#+X94Y82|tL`SXkRyBSE=#qYNRk?q%~+!$eq z_Y_vo2+jZKpoy9!AnvoeNdaAUybON(NoOU4IUsY~2w%f}J9=ho9L25$<-~iglY*DQFJ!DrG*? z@vk5hf5*dn#i6`9LfMim`9gcEY&9mA`|<3<4<_~WyI|x)7zcI5%JI?3{+UKDg8Wt4 zR_%2zCY@Ig#l;2dX8Ax1RLv9b;`5=MZ_b=i^f$*r*TC!8TS@8K@8}JSG#N31rcS&_ zeg1xE{IKsRZAjJ+SW-(h08+LXy@&=B|LO)c$vSw2TV`X7z@Jm(>$O!A^6ZDG zqTOU2PMMykk{BBkSGk`@Ya1Tns$x(gcVpv))>HiC1=<=xJ;9@dFey$A>>4Y>Uol_0 zTO=)$eTs83v$ZZ-`^04ll=snbvj)6eSqHB#PxA7h29Ys>{uSc{JQ)9c4b`vnyqsKI0dUsQ-Oo|_ARUJ9d+ zRDGzfhxIfrsDypL%(UGkKxE+Rpq*P&JQyQjg<=Mwi=WQml<}Ea2sIE;NdK|zTV>)j zBkdBtVi3M`cXYze%=TuDfFCpcTG6EEDC^9#A}1Dp84Ebt4s3>0)xuSL&j>D0;<*%W zBscK;a74H`OTXh89HogCm`M;4Lb`$5y7>Yp;kNblZyhVC?qH%s3xrR}?osLT&sX~M z_r|`OCRVcv)(O-l^n8rvDCYL83jX0$#9McjM&5Y6c0zoKgB_alFfet$3xbvi)^xLd zP`6oDd=Lcqa1LRBZTHrxeMgJZ*Z;OF)Ln8+)S_f&0QvQNqMb7jI?h<25&KH*e*BQa z^%-<^p%_R(N*aeBp^1q=dzfTZBA-NI^y?i7l7!&tZM>--2xpRhy8B)!K3N~OJ*akU z*;-LCu69XqizUjiSgD-N`;7r0Q++@~>rEd-^+NIE*3G8c=))wmikM6yr>~g9ns+D_ zHn9$>thK|zv9ZBDTEw?owCRrH?E8G|j9+$d6)H|6YobLG2rtiUr>HGVn_7Wa0chKg zZz(<>8YFbY{&cC^F&%n&O<)ssdhv_FWJ;@8&2YH%_h`|@jF#(*4KS?1c|^9}tRu9s zvC%y2?)cS1D=-r`A&tmlstUchSE=1Zu>{UWFf@b{TuhSL%<0O9hG~9h1lRLe@3c15 ze=6m!-!A0WrpBrh08*-|eZ4oPL7sT)Yb$&d^(ygs&4lty8qPcPp>4JAfsF0X_dO)E zQ@IOMGx8^Qc7yh4t?Z*F?@)_F*(~$Fbe$io?ZdxWZ=LY6cKFp#j<5-TJV+(If&V{vHP{>^Posnzckxx_%_ z2u}%+CN{sUII<5Q+`8`CScj&-m(eUY0o`&@q9%AXfL~{E3I6h_1WEfu7BcM7BuGGDt)}mouVyN!!NxHXDQmr{yb~>gkhxIOf!n>Bnns#; zSMTl;_@57Mad^GP=*GapVLic~LrQARh2jx9SOhch2XAq$6R6ZO!iKpXUmv$*%+f5c*7C|TfLn#YrcD!G=}L+xcT6&yhgfPDs|5#<03!#hT#!w8t2G{FIMA zojaoS%io4RIN=pY96zm3e);p3T}6+Wq2V}A@avJYWSd9!s!2?E?1{sbA_Jm0u83p(F1&tEtCZ%Q|(I(a7Ul(yy z!`*o~7)VJy5SJ6oRBGA|M}f$d@qrFiCtG+FT!%3L+nH*s??4@nSG~{G?64TUoz1X2wH{abQw(G+MP>nALW2Z!#`ty^|%s!nl zRjJ|jrtW8NtZ|PXBV}bT`^021zB>N8)+?@WZo)}G)ijk3uw258ds~pHa;%QuIlY_a z7p3+=QuIy(M-(mhgu1QX#ISocvi-yuL--Sn=@I9^z10~yf6`&dzrHUDW|HtlFfcN% zNnNi26*rT`N^$i>p_P0bOL$l_=%Bxg5k)@dw^m)^B;s^a2k@m$;d^pTabI5LYA z8mzC>0omH_;Xf}L0PaxWPd2{uNXoZRq%vWxU(xH<@9e@7T~MP+;^G|FqyiWxdG8jw zin;gA-%TWgY19q2&x#LEK6K2-(acW8`o6|wM=)+%Visc~ZK~92ZnUDlE$2(%D2)ZW zI)TdfSl694@V-wjr?pJ6Zm*E~aF+VHp~*9^zm)o&u3Y|t()N#88)S|2i;dvi>o`KRfV`g>na_0gI(I05XI+R$WKxO+V zd3Pz6WEDtKs@?2JeXwB=8{6$cJqwda6ZwKk##Oitu2n|P_!}9n{Lva7^U}kaf%vBQ zrh1VPIhb_a=Z+XX{(StsO$^YPr2J|Yg8n%MQBM7-rGIJmmPE(!t7TU8_B4i*&OVrz zYC?85M7_u_qbPKv<@IIpds8l_1n`~>L(|O3^Jk1X;8( z;pw}i?uwn*r$ZA=VveuPq@7{w{sebK>1pfU3jvz-;3(Wb<*sXG@pq<(9wby>IkarE}YzJ$h0D8iI_3s(Dv56FEACF$?G7TxHk`k)Lz(hy z>*U0P>({;9@nWF&0X*v_`0)DbAZpy~0p!Ix;*ZH|BJ>p`Sc7tvcuHV%_XcJgGPZu6R5WS4b zD(X)RidKG%!FyPMNseHqUL|yx6zU}kkB{>m@UFK;Md2ouCrO4EEl;V=wvf~ns)L#<>=3r69V3{P7<;Hkvf9nDHij9bWn7wjmp;Q#Loqn!Vn6_)>3%M63Z%F4Bbw~+!r z(TjS2N*pglZh_^#(WBV@puhKV7NPgggH2`s+_-cLM70!nSaSdO*%O*~z~^&>|6h99 zVmWZ5CCxLSXHDGKd;h_M{cI7JA4&Kc!~ezLyC^_F(?AYP7=ze)uAE(iod#z-1JFeo zSKJGtM;)?l!nQYM{1g?!leEi%ZQoiBce9@3xV&hhV&%2lF>b0Bpp}A2wovH!W^VQzp2`=d$ zz9W*$fz=+V6oVs6II_?#)8gCLm<$b6V&>f$2kk>w=|Olivcz$g3{@idzx(}8V0657 z19xLTclwddX+r=@eg_QGI4mh7Wx1|H?sK1if{QjHe$K{+b)U|PZ{|q`chjKR&?n2z zT-NbVZk}-W$yG-&Jn2&~ce^jDZu!S{4jsO&L%D5M!R+7smyl~W7PDR2hGCVfPi+J7)^A`a`9?_u(yqUc^CZ$0LHmXU6Qk zHu4Mo?KJ@~QBmGpj}NA@`L}pi>QdX$C%>lmo39|*DzNN^9YjZouhhb~Q>51qZg0i7 zptw}a=YKin6%C(wvYR@DH=+n`B{9-vz5XT1#a3{%Vd#p56TfjT8sC0; z+|8@uI!}@5!%&~(ZnU{weO%DHAko5Q>zHu@HNOiV&42HIEE$@a;ZpFPl@W z-n&)exIg5e!nsM)Mfhg2`oJ9$2o|^NqpZ&I^LqK?!u`U%w_Ea}#|aanTS0wA;qM`K z6~kFg!Z#3@cSUCN%P}DO+MwCBE#UH|yxF&CalbB#qr-Tr!H5mHC6Dhc6}G6SQQ4^J z;|Q(W1JkD=yGHwtM>yt#j(bq@!d(CoOA5so3Gtn)kKCS!8tuA&K!Okvh}+m;t`gFD ziALZ3O~4*?k6x5HM4;FJ6ihxZKQ!;x^o8SEqvNtaCZY^HoqKgyG*Az2(Pz-yUZilL zYz}E{Q?_cjFQ#;^|7>ElF+i=*Sf_X%A>o=+GBBL+^Cx6rRlF&BX&D_ZC5taEwGR;& z4%ea}%@nh$w2Qi+yJ=nOuI2zdQC+zy?Qi!u-*4%auy`yzwx_~)Ww!?(rWgg{(gluCL;q`kP}f=)r(wj}tXa%_#d|_(o0X z9Sg=8Y8*bH1MOdTjVIPLAM7_=%%08tlvwU>2b`L9Gu&2`BTkg=eZT6GfZM0EdqzSJ z9$xE)Z~{ILFdOkGXhjIO3;Ud{Tj=c{y@%!c>wR*}mPEFS2pJi-x?hg+<&UQ@S8kfX zKU%<2RgsnPk3%ZpqI>e*p$p)RWO^}*5~#_2Kj-8O!dx4sQom;ofO=`X^MG{O;hSt% zN3@O@dS$u|Z#L;|9&iKYepH9mFNtNk-iX1 zMonZyEO5i^c!`#YelS*T@W3Fe7OK@6u$`TuYpxG+2ip0kGZg;_k7=~BSr0oWd2Qrk zsd3=5KJJ+){B5*!!}qshlKwGq2Y@!ZpMX)rE@Imrlh1w=-NZwTtwN=TW5kVLkc!=0 z?x7*h*86=~P2xA3Wi|*~DrvQ@vgWpx2dzC-i)VY$YmkYga80~GGOUOMQ)Mox7O~|X z-o#Hpm~TME$mu~~z@@#0;%MU)h44mT!|GiBU17p`kjKu|j(_hG14#l|pE|=S&Tl=f zcZhQUK1Ypk?)=bh?E995WuAf6)kvLSYlBoEH$Vd36UG*Jd;RhYlNe#A2RP==fgVZn zn@x}$Zf(5c3GjQP7M3@=Y8?#Jd+ihKAQJG}fY4HDAFu!jI3FiOkeIx#uLef-Uc@p^ z1%2~vSe%VHFP-X;yT^;vA!T>~CZ%f(Xt^p6+=8S&N;|XdkSVAjTOX3Fsh#(x7l2(} zcdkG&?piS^okorCseU}ZtY*;R(H6%ZS3iv3S)uvfS=ecz9qwM}AS}_w7w@&}kG|c$ z*7W16#n=5af%A85L;!8R3zV>7$=Yj6EARQ3ZFp`V2bfDG@jSi7BwddE6TjJ8K6~S< zP>GDs(*>7AEw%$X_1Kbj=t0Na!?iH?!2=FE8JxW~Wy-^09L6 zUcEiL_nxG-^+)W#?1GW zn`yaR+_p|i$d4p7hNt&K(mOp2JU;DN#U-}dj~4DL?W2sYj+k7=bjf-?iWYvug&?fc zhR+2n)Qw#Hb{tOkdd3J8U|k5ripOKtCSL(|9rkSFUJ_l}Q8=|pWU|Yd@A_3@_!4Sc z!`-|!rER79Gd-7Q-Ab(G^GV2rzV~aAUY*Uwj_=#M2HNm;6)dFf&gnCp60)vpPj}ty4q7}r1Qu3ix9o2o;RZ&2PVwG6 zo2RBg*sTOs^nU>rEO zkkR6IFI$&WEu9v$bA`LtOQ&J0%PQB5yRfj#y2{$)c9pxFu+G+aKc`&EEyL~6#&Y%k zxUy>YfYhSk5IH^ap2^)h{31NZ{H!M)24|)uUCcIhx%%~)Ueo7g`g7-N*hLG9@?9bo z`}Yj8UxqOo_K7-D9M~9}LzJ@=P1DZ8oe%<44Tky(W6O8Ahv&uG$TG+}xT#(FWYXQ0 z{YQ6#r+`L!NhZpT$8XDKL~?K2OURa_ZatWUb04*)W*#2du!QE-^PyM=^}5OqkB+{W zC#xmNSGKRS8c_R)xmtxsib~RkTF1GgtPBGk4Xk%cUSmPPHV*+2kJ~D;t@_J4n@Ea1 z%f==?NhNSriWm*jWS-W z(=-PRSxY*|RAQ3Um(Mo#)2uf5+eO5D4dH5S`N%2ri&9XofqV{0pQ{8pzb zr~d(U%k}oUd{?YeAm@J!#Wh;$bpVml;d~VVb-PaEQKgDibTx}}4=Dgg@4%^F=EHVb zx08tJTLpW=P?_tL_!DI&wsNg)Z#^08u8(?c%6klLR0QAyo79K268^_W67fk4Tu9!S zzAvK^j%{AJgoGn@z|7Ae1UE{fv{Bc{#cl10K|C8RH1_yx9wu2%B-%DJE{$O3uNf=+ z{Fz01$H&fgTr6m3^(hJ8nbD(jY~o0+3i{#MV$Yn%CW3@s?EWo;5_qyHMq_xd+VUR~ zNoqHE!mtGm1KQ+hW4W3xR$g5@>X$5R4=BlBxmU{$*HH-vvbV{n^BH~hsy;WxeQ?IC zE|oNH1*G&G7flmjTR&?aFT6`<{FJ% zE{6a4^k#as6rA8fGTJ1^D*rRiILo*ii7m3C0-_rNKQd7RuxsE=Y;~ zBn`5Bt6|8Gd*`HK2TThrk||ke3LqUMS6&VKwlVZl>1t9*yAZ-{21n4%h9{_so;>_PQ4wKtT%1n1B?)NVA}9Y#aj8B4(TUcEX-{yrDfOT z>t)Mc;rq3(^u%oflz5Df1GDt5pik+!sZ8_HgY+s;0@6%U_OW}{zSc*It7{D54w9Z> zmL+QT@7c!H*8G!bTg0~y@0}%e8bS`T zYBJWJy0K;**>=3H zz~nOAa*y(sXA3xB_Tsp|eM~tX?^;hP=>><-yAggIu*@0r`yiA)YYrXMcf!T5o`YCS z9FOTv+XLFb$FCi#?eeA4E|25s%m1M~A3`L8nvhcoSF(iU-~k_J!;OYE$1xvw7~m?j zys~LuRlc7rlWdAoRjJx~)vs*MI$FOtLx-j?=OC3Y-vBrD$4W&Q)Jw z#=aKyb7?d3&_Yqd(NE!JP!n2g#>DMRqcEfe0W?L3hDf$6gkw@W-eIjBEl3ap>Ww;HZTK$Kcw6 zP%H`Qoueluu_|kFpFf8XGI3m{bvf zLlMLWQ6PeLnp6g_3kW$ftNePZ@O+oaIS1ftJL^TJ8mRn4!?VusnFsG3B9Z)s0+p6f z=?9lhm!8$FtGjvXxbm!=lQgxv7I%yn9M0l|j((n-QxO`L8NvqlMYze9{9B@(L>uf@z;GmA%f6%~PI>1wOk<{BHPG zYOG{&Ey-slzlSMjq~^^}8=H(-`-R(T%>$Tp$g-c%8yQbu@LzW2i?+=jr=T~wKp>}N zitNjrjh>71dKpVM+tS@bB+$IJ+W}JZ?jsOs>-YycyjI*Nqaf2*D_IA-jl2u&Z*2T# zYffc>S4aK7QZK9QLXpbl7edNAW1g?}j37E00t-nNuhL?;Vy*n8fGcxA^1 zC-oB;H^C9Ep)RGqQOP#x>wR&oXbEO_&N=9NVIua+e?bYU@YbJP1-a`GRQ@V#-b%wa zh|hCQ(G34D=*gn+h+0U3{%8u)4qyvZN%EU4x)^HkWKbHinsrOZc~A4|A;@V&USQA7 z4$mvReZp`=Z;_2XhzqeixFBUtI&-*WcN{SwI64!@^?vF@G1oEH$|l#)1|KbQ0)2bj z>sdizVo?wBo@ojWaQQ^&sq03Q?Wp11e!e%C`8hI(JpxUS`OLGh z=94#jwhl*m>mNsXf+DUkA_yW5NxlMA_=_^Cjils-=-T{<&d|&0;wl*@Pd;bXlEO@X zi2vfl8iy>%wS8fVnr_+*v8CxL3Ob|9{8b9i<(^Dvl;1uraweX8ufP|DS{*I&x9Oo* zX8bclF%JVHk(Q?$9ftauKP8yf9=QUeyW+wTI64>Z@j+3PQu|Tv$r}utQbt`AEsB$5 z8Xn(59^Z^b(We7qKrx$q77H{wO(UOyfVNZm$=tUqrf$hS7KSI~Y~xq@v5#X5d7ZSM+O~rhow)|VW|jr5j)u_gewBjNs#1)Zg~1as zXcVG4&eWNVNUw5jf_%$uIVe%EpZ#w?!2wlpZ48Xb^y3md;DM zgCsuRNbDU@RJZO$B99ZK==;1xl-|0MbGRI_)lOR_&*mZmt+qGh14Zuqh0!0-#YP2* zdf%9D_sz_EpTj_oS9L#)o>7#leltH}8DYaeyvMKh`ja=w5vZw`iv2t7_tA zbY~B9Nf14}f917D?DHoJ93Opqghzg5E4+y^59S>UevpmWi0B+I)ye=hDuScTCFBF| z-3}^znfy&8Kna^(fmcducQoR{IL&064*der@jtxGRH%-Yq_gG&te9VcTFgysB%X+>+iCwZWxV>791h9bB`-$SxQ-nS?X) zdjct0xg@|tbo{wjaEjDa-@*m^WHPf_|8KIV<;S!V_+w@jNd3>pZIgc{a!MP>^!8e( zrhQSCRdnDRa>tbGrt=+-UfSoz8Hi&e8nT_kKe~V^suLL9=yw({P=YtieU&n^Io)4j z@~#Kx<*%ZQb&EI+woD5G16RYI{w;^(E*|Yvv=bA;)0>~K9U_0=Xz_7jrYoNzY^Pa0 zScG8GbQ{+=V}_YXyb>Hbl*ek0>wlws^gpfxeUyROWDTIg61ka_rxt#0oTd-ofnowv ztx!he*zbHaIBZo`G}u$BXYfM_^&G=9n4N?)i$0wpZS&PV^|_;fZ+Yn~oMI7E#!*L> zp07V`j5LJ+X1(^N>RZ`Coh08E%C;Vz_@E8$ikTDp zw))NvV8ht)V-Lp)MQ0ltL$>&I_=q6}Mb%rlW82R|Iz@LRQm01clh<&JkDnzG)6Bsc zUFO&W$<|vc1bq%>a;&Vbd0hO4*clJ;6nr<*=ux{1TRiQM3DDu+_=3qX)*f5$fpHbUI{j(6mZn*uSr<1jlFM5DQZ7&-Jo2JL${k}gk8J9$58baB#Td9fUVfz zl{lQqIg7hR@>bS5>Du1NXNfNXB&YsA4Kr9Y8zd#_Oo~c9uuEM$s?q5B8kw)-FWVm& zde8$rXS`rmUxxxvn}|fiH@?ET;gyZ_gccwUtwaaX&!Gw0cSBskJb@Mb#JMxIep3 z{)ywgX5P2Met2|IM_m`ic=J{r3^u^sP#*-3Q?n~d`Q_BTI3#{qEqc=({Z547nJRF&)|71~m!%&mFx3regmV`+a<* zfJ+R|;nwm`c7J{*!nX?|Z3d)7gt5#_^=4O3@y-@F$ZWKC0MOS*UF0Mg>nU>w`w;tr-3XO3?0b& zelmY5BpSWm|F^JKxX-zL>|tQs8Az*UXIyFF@ywSD=6$N;6`j4DdE)i8K*)c>D~(5i zUX;I?90R8td7E21OB#QX;`izmw4NX5dT-U4krXf{MjhxTo2D^AJS)mI8uiWKV9Zm% z8UC);xH~UPuka7N&6w{;)`8hi@Pua(`dzTU9cb@FL1HMy%UkunvY`VzD_ zYdS<&g@Uol>HgX_{YFKbT)IScvlHTw9TKsM(>!UdjQG@)eh!bO$#=U(RbAi94w!49 zP3h<2`ST$M&Jhei`s~+Z;wI(cV-i4Z&;cVeM-c9&M!@Cf=*jQ|W;ZKjkOb;8&UA54 zi;gZUgS1C!G`~*Cu3HK`Ioku{?&mWi`^2vOry?|~(3HxwHZNPgtZ!i$@AzA{hZO&G zTb3C1JDFI@7ArLL@I|{6Cuwj(XeVj(r}fLaV-_M0;tTKTy2{=`^H2t5k#`5aA%d)moPg~dhP)olTr@9uxnG`YH{V?8-w#9epPkSJ; zck`(5O@s99P2fv9c)~`++~}gXF;m`{urdiYF6^=4Jod1o1;bCs%85R&Dan+`<3loDYh9_U7F`uNE&H|fldh&j+G1Ry)c*9TRzt_1qT zeS^(F6QfDzciBzK03Uv9eTCvl$yOV@0<*;QDbrQ4Z7C9sLK~LUEmRbUk>iv{|;$I zZ@Zd2y*}v{`aqs0sOaSBm8HGtN{sy}EDfEuNhvmrlgG z6FXO+#!jA@bpy~a^>xt?rnh2i-GnDwhzpgfP=onOfmcl14y!grb?N|pfyTCr6yr!$ z`MFu4YQW5#!}e3^=Nn#j^FFxot*U@!n=rRX*&JPn9_z2RS2RH&1IiDvk@gwY4i$mV z2zz`#hVa64MwII?MEcyu__sXNm4^mATeOw9lS2!;6&*ue_Yr8QUujFB_ZW}B+NZDY zU4W9w2ff<7NIbQ2%6Z+i+e6_IW!%x1X?8

4?- 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 !_uxhQ|8k@ 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%0D&x{Q9m2 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%0AAU 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�NazQV+-nF~yepBCS-kuiXgL}1b=^mu6e6>8A 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 c5&cf5xoOFY@mds79o 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 B2&e!6 diff --git a/bi-connectors/PowerBIConnector/img/pbi_select_connector_amz.png b/bi-connectors/PowerBIConnector/img/pbi_select_connector_amz.png deleted file mode 100644 index 25677e12c7e4bfa661c856bb51c0b76f182f32f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70089 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 diff --git a/bi-connectors/PowerBIConnector/img/pbi_service_cluster_setting.png b/bi-connectors/PowerBIConnector/img/pbi_service_cluster_setting.png deleted file mode 100644 index 8c6f46f5b88ff3fa72c5bedfa95db3ff7f693bc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91851 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 Y`J-oIxiYmnk--V7=QNc|l&%N<2a(kL9{>OV diff --git a/bi-connectors/PowerBIConnector/img/pbi_service_data_source.png b/bi-connectors/PowerBIConnector/img/pbi_service_data_source.png deleted file mode 100644 index 95700aab8b5b35dc00313264af4f7d72015fc1c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64441 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%0DP8iT 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 Qk6WgFLjTvCW7c>78~>ida{vGU diff --git a/bi-connectors/PowerBIConnector/img/pbi_service_data_source_success.png b/bi-connectors/PowerBIConnector/img/pbi_service_data_source_success.png deleted file mode 100644 index aa09fdb45fafac3440a7c88d84d501d7cde7dffd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36258 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 pKSJ;`A4&MlgU%w>%GhMTz90Yu@27( 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%0D@n;5;LTPSd5yBv>@$1Mm_eZ8B&Q3;x+E}xW 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 z%0D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

?!q@A@14B6(IYsnnvN9A97$4y*C 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

i;;Tahv;7e3Mh}uu|=QoLh;P
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%0A0H zu%17%q%OmIX>9T865H(dvv^m-3QiNUpS%{dIf(U8(WVTtqV?vJh>q2cz-_f)TK9U2 zrpLoaFvqTWfWuF=F;j;#Hl)4<0a=@$Ak>Au?+eOOSeTi;yi+jHIzniD=95SAqS}ys z)~CJv^IrM3QA#o{G#6Qu3(i%%*DW)*A+jvzVYo7qK_VH-dk9^J2yv? zflWc$id;`P%Q>AT!A26N&O{DU_8+~}EVFoj)V#lsT!e@nV&KxJ3YHX_SGUTx>*(mn zAjGf2;hpR@(jM~%sKOC#4Y!gYXDm1I>USEB!b)am&^M>Qj&m=qjhSNf^ z>%3R<CKv z@yuVB3LF3JMxvUPxX=C@l}nx9rak$ud}k>9UVJG?2_RrEEuPf17mlY{q*>@-WDsV` zAGB3IOyDO2Uzifm*VjH2=;<=R-+K8FLOy1Ext6g94~+^y5cXbRoF8U#Q+wteAOQh; z^nyq#8kjNhWxj;_U=n`C#D|ap7ol#Y4fW)90>z!Ry+F+}XKY-*gfn>u^?K5mQ%i+0 zKOTF=GnAn|zSU}?Y<7QWT|XB9Poy6#OQq@Rt{G>Tl*#sY5_a%P0+IE~Ea=~%n(4(h zsUOf#V)3q(n;d%uo6O37f{j>-IRP=!hh(XzOsff^IOX+(Aqe&n`4OwGY|Ww=om`vA&N_f0K95;;?#QwzMM2 zDlJ%0N{=lCnk5q=Ou>OUyFQfBetVavYh$&n5U=*$6v8I7;h1a6dyT8!|Bo}q2< z+O-}fh}D`$({NzwaX#lkGSER*e%f690o&P+hRSX~o+d&~fY*SwZ;!iU$bRHShjJJo z)Ldg7;$V?}^NqNBknLK*HFnN{NnU$^V`F(a@}UX%XgXKhywP~@Y;MNS%q%c?B6WGD zIjx;aQZ!ScCv%^GGuI#lSHg-%G@G76zs*JXdtv5^+h5;@GX!$kiiD(gFAo=JEyd1D zk%{IpmLYb8zJzVA9Qk=(tL3ohC=oRR&3dl4h?F6kKFxfnwqSrh|JPgMg!&(`z4E}4 zTC+wfI`i2}LhqOwmF$V?UXgBH(1HF>ihcW5UGu2S%ZcBeb9MUQIp`X+W+IKh(QJzV zdeh~)=6${JZ?zwR$f@s&_w|Zs$F7SZd`c72Q)k&SaL4I5ItRh#YI;%?lQAy6@9)vy zfo~}j6h>F9X;f?{)Kpscb5iE?M)Fru68s*eVR0WgYPMP8;~&cao+PK&*{)bgO~D>= z>w2tKMrs$cb6u0bob!kJeR*bje7xCb!#w&3o)Hal6Fg=UQQ3pS^lFCtrd{+A7fPa; zB3^wXqMC>NK+QnhLQac>60M9Ol zD^|+0-=)ts>fF)6cbpAV$<%Dm;-QBa^q1sUe%ME6yrkdx0tO>4ZHo(aoEnYl)|NKK z5Mu8zXBTiieWpL1nuMm-P0UU+I=YA*>sE@MFv%aq)sfH{lqO~0b%{Uh*ZI1}Dx`l3)K~1Jf5YpjYPOPv*xFi-AV>!V#JGO|j|Jw8C zGt%(XLBXKT_jx_-p~Vf!x4JkEC4#@mB;MCT>{~l?J>W@kz1s+h7-z?bYBNVo z<~@R*pmNr=dIZMRS;iv{BKh%@>kx)q=RaC|?4ex(BC_2U>h34oD!|Z9!2M#7U)lyH zfg-1(GM1ZW^A&4kR0*E zW+;_wYfY?@Dff;;m2^~p@Hsw03sDg;KA4m9<77pT_5?LJYoVAYf< z(=>9Y@}LiMDZsKDfCN*!$^=>NHR;zzma>DQjTlD~}dU5FpEu3k}Jja0y@ zm=QWLR?&YsrEe|F!-=|)#eWUEFRNvKC8aszY)ZQmk%#xVlW&n+%P*z9_*wr3>ea%s z%*F_5C$ygRR@{b&2c}51>yZ5k3mtCO#0l$r@ohu?Ht%d_8W?={J*EnU{OwDc-@elJ z3!x~@1|`T3QkJnPh0=OUV36oPeob2N%zc~8)MTgHaodM&1^HpuBlkkx1H}x)yA8HI z3gv!hHGuuS9{WBxX_)twSst}WU?#S2AdE8mC!q|4ZeG}Dh7+;_MQYIy*c>+pes81d zco6fvDDb}DqIHWJG_|{XqxYBw{1YhYPUr*UsvrFNnrjVrUw5}foi@G&EbMlC;SK9) zS0J;n_p!L^a&2^x<1B1lMR5NX3qv*hh|8wkD|;?}uwS_gb{jfgdK(>LnUf{YS`-;Z zsI^_u&j+YoFa2;-RjXzahZ{>jdGdJiNm@cfuICLZY1;|tr3L%BPt+W6HMuqxM|bPF z>-fZ)my2jky3c4|k-g+81vqbj@w_^->2~#4Zw5cK$0c$75|-|G`g1pyr|d%g>;$$a zx(fI2k>44+h5rB^WMc-V22_~r9uYD>szXdRS7uvm_-d}kDHamm-YoYxDFn{Ba8;MG zALprq&=o&^xYTo?#ZIW7j6Hs|GW~mQdjC)Q_WuLn?`|@_VAsQWcvVo#zt>tbJ7C{C zgjeDC{2Ackkmhup4%B>BMZBZ3ziMv4nD&_`yWZ$rh3c960x3)N z!XDD;&ANBw*kv%?`6dHkl1jI)hE|uvteiLpzV1Jk?ndRVZaNw5Dv9Ba{V}s8TKQ$) zD?*Ov_3PaJlT^R@jAi0E#AKdhx1>s@%H^Tk8y#_B*V|(QmK!sWn3e{wEZ5{!E*n)3IO?BRW|P7~d)jytwl0_?TQ zV6}dRVgEKNCiM;NYlw4#oArr;%~nzCLT&Rg#CpqM%{ry^FvPlx5<2__(K=5NV9J+$ z**EOfbxpX^p&FI4q3x-H9e5G1V$q754oglk==TWIwm zzV;N{LHI^9fX)4MkdWEzgj90u#SW1xoTz4``G#N)TV(Ff3)pRgJ@-*AY0z(Ys9w>M zkz%u&B|=CYJo`Yt^I^Z)yVhxomNjaufE8JH%!XurhIzewK><`MTDAU z`tglj`bQwD)0~cgp$_rkOaRAYUb=(vCyJ&0VQ9-NFK08g=K3%llh9c#Em$AvLv=e* zw+9pH)2=$9Sh`DYvflsRcQ~CLgNS$)=>q!kA2OR)z3+1E7Nd3}#7DBQ2gybB@XOoC zYlS87nW)rN3)+8N_oOLpCS^u|F8a2o++I&KiQ>*hrE z{R)Iu0yLftHq8Ts9-lvk_f8rri`lk0ZrdV)K0Z$ST($#_=J282t8T}t!c)n$X*HL8 zB6OfU*Jp1WbA;p*)G+N8+fW&bh@MMH$79xz3 z#e#lk|4M^9VRfk)CJAv^aZ;d9gj~wGXkkdR9*Uws2l(BD#&4I>CM6B5lP_Fw`D0d5 zaik3Qblu&Uc{jsd6PrwvaR497v-T^!obkwz?&j^s{k30_Az#~6+S>F@8D`1N_>UT^ z%{l)sWz|Bz0-nXD%&oca{r6P|LDl~`c>IPqmPNQdR%ss``$xL8F_X=AcZ(;i7CRXL z7F3a1n-cZFCono_M@=++tVlPE7$AksBf5oGVu%~eOoU&}E)~J2MtdQ3Dgo^hkV%3 z%1-FKU@U`5f?{Si{X}eqF8V$LUJV@Plaj@{4ssc=Ys$Es(I() zLqCv2(*!5s{~>A(RrbhEiU`1Jhzt#f5e<=X)ppp z`w%K++l#)T@8Ll&r>LKxk+&|x(DVBdvhOg`@iXPj{CSUY!t(ecQ{6KF=mn-paIvP; zfe|*Jsb@2r~ursjFR5DO;+{n z7g;ZoB9CtL%Xe9#7Rr1UiVlaTJ(^$>0E2$ls~d+Dpi}Qr900$b&zOh*@gfmg6E*$k z%IhSDsI?^GN#DL9DF2P9g8a z+}->{Gg&VaDQLt5>4Y4&&56OcxA-c+iD1K4Qo3$_@9of;-d=reO1i`4h-CP z7IeV>v=T6jEV1`4%d3tDT3F{t?8r(5gBzC*3i_&Y4_>**R$@-3;VLvo)v%wvRlVEU*@}B4pY6&Bfzl5OqMEEAuoubyAUU2{5ohNsRX1>nF=fP*5FHo!Ce z1B_BJB|R;yCBvuK;S(c{jD!Wq4tp1s;qZid|dKRn^Fdr4MjE#@L!E0Z!5T>foHRXXa+MJAKMAxpvUDvj2 zXGuJN|AY7kl4hg~WlnAXRDYMLvhh17VVkJ|R8&^0_Zj@2NPV#s=TSHv!^D4^?=Ub= zcq>LICi`mQw6?_cvd$~OrvCC}(dWkC~xi_xNWueaeHj(l)X*b0B<#~ zbp*+Eghi5ZZcd4v_QG@-0rPEnys%qJnti`iXP40gdNxiviu+0{re*pndPV*NdIOoM zxa)8(_=fQ)GZo@R)bY`s-`j0miF0^yjQYk2G8cw8l-p`{>60DN(0cEZlAKYCFpr*Z z8uRJp)9gLk|IV?>X{n42?)$v1>Dh$%S9FiPBwjoFo`6@%420~V>;^DZPqjXf3xcj#77nzMa3Jv{c?9r#m#^O`i9us?+K zp(_kgf(v|$z3~k{^iORjI52tXO!lB2mw%{5m$D-K?u-zfJLf=DE2q1>$v*VBEm1y+ z;eIO_Z^li~{moyyp9zj4 z;o;SKgFz7@wcqq&Zc;>~_@2=EXP6PU?i0O|TE($pcI83pkT>ZH6XGEJhn|fA;`+D$ z%&G2IvFqo>?&8A%6bQ~t5<|7qMCR@~L+F&k;g`A9zs5?6X;tTOFoSv5le?&^ zt0hCrM>u8Mi0ypiNb44AUG5iIS?eVQkjV>paDwmp?BCsyQo)k*>^_|Hy2qfM-K>EXS`u-Bg1E`+>$HUVE+8P!$ai5?61^n z>I1&{?cr)%ff$!Gvrt=wxhtDhtH<*upXt(s zB;S|F$GeWU>OHfr*~7&z^&qOKD)W}NVAm5@iSvQNsw-YMuYko^GShHz@}Gixon>)4 zo8cYu45Buv1j+$S|*Ut)G$8(&Cv>8t=Pz#m`@?u3ZqnFe`S@ua+`)j!JQ- zJg%MpPRRxA9n#;fS1HoH&P&wU*;Y*vc5aWR5w*%!&Zy;HY%+r0!~1O1w!&PLq_!;k zqN!UhkAv*D`%#7wWHZ=Cww*k7cX&8*#Aia!+Sse*d}w_@*R+sYvdCek3`W86=#Pia zRv4vo1gAZ1EAqrTk$zWj0PYRG!SbI$`ZFP(!95mJ%63j)5Q3Mn~b4==}AFE>NlZWWVm9Cyd}mDGFrDy zzD=R@xJ3gkW z{Sxt_vCBO`e#kk{_}KZ{??PlnT2L)j`VgaGOr?$X|MB&fVNHMy-?st^ilo3KM@We< zm6jNdf~3+h5y{cr-AE`6(k0y;qeHr3bd2s8F&OW>?)Scq=RJ<+ct7s@cJ4g?@%zWF zy?p5|$A5|K+RFav{sQ9-ShLfC8Y)5AoHj&Hi(@p}KS#Q9x*tQk@G@vgTv-|m)oYS7mgW~vUtcQqjUT@Z^`!Pb5hoKpJbGhye4`GOLNxp+B3rDruNG^cIp2JpprD|s{!CE(Z z#AosUY`Ba4Z^J#C?7vCide_szxwTbO;bO#bswDCeT>~M(jY*MgP%ya+`bIvTPi9XO zgR)y)mGFmWbu=yesBz#Ko!AHvRu@TPVy-|ts#3z;K*Zxj-9J{q-EPv~D{|I`2NdJ={6Lee7&k%@7P;G51anHrL!;)O`Dt-d?Efg)l}IRgb!(W92hdd@3gB5Z#JWEIQ`oD!X19S37Pra0&%ifh|JiQ z#q-FxE6=M?E-EPDF_!qOpEG5lBAPM#GNVX9VD*i8Xgp!{laiZ1`m=GrGfNsG#V|i2 zrdLNF7JK#dHqs5$wM=`As}6$MO!JVPq;c*2pBcSDK3f^2jV;cQiJE&5M((l?TuMAU zN$e5E@}fHO${<*lPE=$Wlv!$;v99J{JSRo9YQWmj!_Z|5FgmEL9C)(^s^VXA2)9hq zG`zn7Eg4?Y2!Ew6Z5rM+J#4}&G&C%|aIy0mZrvHy5F+|m{iRlH4WS&%sej(ziCDES z-drN(Mn^<>js~Jevpm=nMcpO?lS%MoMqL#=XVJrZ%jWl6sQc0buveGpSyy&x(j25u z^)9xd7b8*gIbPY|y@C!uh=p!2UZ=TU8H^m2Ld)td(X-%6y++)J;}O-%m)rie_n0f{ zFA>cr1jPVsqfElRvWA`-fo#{C8vfR$p5SoQH1yq#H2v=|sGiglw}+T`O<%9Lgs5=_ z4g0>i;d+C(woWD8D7h0PKLlk;yEL5)n=_sDFkHG~d~}=u2;K{l`8-Y1$~WE^QuA3J z%2v%iGQ@BBI639$2_N(U#*GvA*DMNrzyacIw9$7ILp?ZnG)rVU^hJpUt1OE|KVTAW zj8iiHG+2G-27aO5ut!i^Zk9su$K!xI-@?ln4(ZrGtcNF;UD@sFqDZOT_CIqay1qRa zs-kj^3IVnaSkiwU)wYGXC3S~4m}<`;A&FXbH* za6x%*t-nmEXL1VurNL5-<%|nOjTlYFVP)2+1lkA%CO8KGR22IlwX0rcKuux@IEBvU=cq~k9FKHFQ0BD9A&Dj{Gw4fFUJS7h`nMqHy{^>N3; zNRizZ54wR)A2OC9BiG*>Y5RA!;tLb_N7yks7z$yUlh>j(%il8l4Wqt;46ucSozjlD zYik3>y)&!c{}i@x*frB<3<=T1LOU>tqv%`T94L4h?~ zwtQ+?+u9?qDyL=?xv2F6JHkPZ4faTAR@eyUx=V-3T|cUW2%^PN5fka^gta5{ zJ!7`0vS6?|(I;AdOfa$vTIMLeneUsxH(gfuuq6C2$z$+P*S@8MmI^|e@!YicjhZC9 zXzO1mYU^pJ^LwD9{112U{NZ=#=U_a8Eby4q(A6i=RO`RbpW@*SQ!->x0jEXTs{Y?tB>$h2dUpYHhVDkqoLj5F2#JQnaThx;8Y3bJ zFX>Ku@?$x;1_gD?;C&yufz==ffTazaXl~z@Dkf&rt80I@l7;`;CIizpGYQ`IlE;PP z;pYT<-Ho7cfVa7O3nC&RBf!D+bcqf0&ht^9H~j?MW-Mp*S+~C5OKWge;yVzwq^I@l z_hc;j8?C>*>7pD+PpeTsJ6K@fk@+cuQj_2sX~lk#KzXy5(V~`qVo!{{%2RKj+X<~S zE_2GJDfvL--0A;zeq7&`-n96aic3WAa?nQ4#Z?);pp7 zV92F0YG(N=6}h{&_HgFD72_Iq6|C20xZ*wB!W8552F@lkCHXKQu2Oc&)%BMPKWuog zdTK&L^Pey?*?1V=dns)VSi6Sap`&gCmV*&^Rw5G?v+1J8>|2+edo#f^k9_FQ8d%fH zZ{Rhx##@Rb{lABQq-SSO4p$y`(Xc4|^bzj=^m0 zi7rQlFU}HeNq3Jynvs!_nx03Z)Lv5wb2nw)`4OH7e)x)pS3alLn1<%%u1>N2Pzm30 z*Bzhtw(b4X{vZPCFgOTTI}PZz%>ek;iqTu$v{Ul)@-U+n3%hq$Ltgl4t==f)1*_>UklBZ@$>^gp1j|QFbaSN3>2x(`V zD};Ql!PkHqZLd-kk7+9l)mgf^O&gnR>6TM_1-02mBrH#=pPaHoH#D)C&Y!VKYV!w| zvl?~zN3J~d0B_bHfR581T?3^Rn+WtXRLik@ArG-}Ui#!5E+JH;*aPrI5mWz4M-33H z8c)~7`Ia8t2ZgtMEs-Enak*9r*^X*Yw=d>1R&R`a4_YpJ`8D`Bf8i?sR<+q;v)=`fIq||`H|3-j&uaVTapX?UPIEk7 zI2U-DazLuS8*PK+vF-$}e>b9@BUfPeMySaVGz?jgexHCm2Ho)sArp?OdUmR6HyfcP zSzdp%UC=*>#-;GU2w7HSrP-}?AEuSy8NAN4u8*W4jH46u5Lwspf6(DP#&^- za%gD+(W`G>+HUjbtJI53F{g7AAz>+l{gHsC@~R*!7zg|yiqHyhBS34s#5yp zDBN=WX1=GH@7*o5NR*L|wea||ga8|RwY{47p+TN%r=Ai_hzrU?JH=BM9RMGjnN?97 zw>=-sefQ|wl1+3AHM>pd)^peUks0AoQq}q`Xmf1G(Elpm0Mh?aS9Ev&=L)Zq)po|P zK%)&?E1v->4{RiN+TkP$E^PWDALO41XXxND6qWBO1p%FAh~4PyETN{~sA)@QyJpKv zl3rAVjx|Q~MPMKLc1JQg-r7XG8N7MP*BI=(sv;g}-2wB0KdDb{iehs_5DD2#7 z`}3JqOk_jc=jHqG@wktW+#`YvhT+@?;k7X^Ahms)7#Y|!qgis=j431QTtMc~E+k^~ zgKWSGVaHt;6L>`5>{YHfS3ObV{bJ;2(pa5BMl7xkS^Z7zD`HKRf)vqIzA2S)@!ZFJ-*zMa1dP4W6P$|<$gw@Tgdnw;n|A!B>+^~nh|~0ZX`_NVBc8)~aTRf0<@SIW2Pf#j7%W(j&N0%0{rvR>S9f zi-W#I1*NpQ9VXc<+Pr*A^dKc5NYr`72VWF+hj5-N^PGu_jvYZI%6DKDMwLREp=Edf z)qvpy_3x50{%hjgL2fFpWj|j4?M{3WcMXc~*%`Kw~kJOT%t_(@Z1nz|FC8}X9 zT-2X2m-3unqHb@lAEx3`@o*|(_PlpB^oxtFD=g@LchK{=SlNvar=?dH>`<1NZ0bh4 z>O)hE<#R4%QXJpTKa`eICSFZ?IPGUw^okQFp;y->3BV``wZ8c!?=ci8;@?w{GVsIz z-snRAWkNKEMO1U*CYYD_n-3lvKb7gbw6k|S*7XywltjK)1*ezCuqri{Gdp%m{ke|r zxm=G5K0ce$fLLN;3_s-X@r0S)c%V68y^Sf({oT}gxQ7r^zT7k(RlHBC))4EzO7dWS zCN3uRyt?p?P9eudb=27!wZuSTiQ>$oPLiBwb<%<2^4wS(rjAzgzss1Z`4H)R)=k3C zE!*Us&{M?lFsHHKE1*6y=@q)qG*=Wxn!8Z}Pg)hJn`{d3+>6)ABOSh9f`TT^(-QKF zkmrEU?RLew}OFq@(3w&T{TfxWYRvp5-Yf=J zQ}+CWHS{Z)5o;; zIOkjEOX*KzJIcBUbRfc5*~bm*Y&*Ne9*5`wx3BCf;`rry8n!bLu2u zsP}k#%#2@Rot7;64N|p3&h=&v3bfAlQ@YAU{X5IGWQOq*+9`kZWZ)H*aZ5=`3VRcX ze{c0$8EFg~OH%b+mcCjOEaos9y^3F)dHJ*-ziJR6DZ0!Mt9xv`7XBtQN@qAKMkJ1! zPF`!}jQ+%$Ej`=LIeJYpfwmCpmU;ATZawuw;N_{R20Xkl<^P=c_2X}kpGVVy@x-65`D|<+#Hh$oZy@aX2VWn`(R*NB=f6A8Ugm@y zDuL%vXU&?4u`I?`BR?S!HeES>=Od7kg!cks$1Xa%cC(y5ZcfQ$1DsLY@lndArul{m z-ssneKbn!6^1H5JC#a^;pOLU;j5fIS^ z)}t#@Z9Mz);P$~SOSY|5LG)ac_q^9h3+xE4KXcgd_fc$2^jX$vvY>6pBOekQ^ccuJ z{O)$fBOHZrIRT@EoE&bN4?Ma#+-yNO)$c}Vgp8N(;rw%$igkym)5=%}>v8g)RppV_ zP{Q2&kw@J0!$J^TTg`;9ezji|ON~4|#pwP_R@8F&d;rGA2R5ZHgDvfiMj;n|r+V(c z{g>BSpRaQl2q=v5K8%vD1IgXM@j^{bN|Ikt*;7KP^>< zAxxvq5aHGRxhlT1zo5GQvOAK7p4rp5=X;!=rW`&btv{EZ)W$p~vYJ<4$*rCo1LnS) z+}^ktD~t@-;`ME7Up`n$U&{e3=zh>TE5L{T_2sp$nyWC*UbhT-Q-vRTM#`RC?s{!m zpT&n55GY18wt7jUDxnE^ztQ2z501ziy*GIIxh*Xh*WDB@KVHi$%;Kxx?!6=r3`eiK zi?fpJ>{R0ZXvvtKlOu`<-2b(<$EuQ^#$vL|3PJjY4;sn^kg7b^j&k2~7w3AKBlvPz zhnahbqk={MR6Z8M>W<|!K6t6+`reF|&;a+!z=ZIV!E@L2{M0Z{dK|oj=<(t8k{~i7 z?w;bmTU-M_^NGeUf9rR~*aLc6WDlB`So}II64B#*7M0 zsSWUyeZJ3@je^HCKYNLiNAG~EJ(tmn2T6%h6WWpwSAlCLAH{yK{}N%MLZo&nd4OhV zPXXE^io;sjHKrwmAlhePWnKECu3EW;t*`Yv*W%-y_1RGm?&>T}sBsU#!su+iMZrA; z!YI@$y}<`p}UuQXo*)wf)>9|Ez_jsvbAkQRX3IcD!YZFW^q3BmU?EV+S0;jTWa zIg`Or-n!vWOF9o5i)`v~Oz#Y2BWJ;|n^dR8?O{`DuO)TyR-z5SkOt;h9>AH#wgFCK zV;*m&uP#05A>}V-L~Sfw`XE%Bx%7MG0E?S68|7QP;U4{Hlal8Bu45zg;Tz}v$h=LL z+DG^JV61C%F{CDWvFP^mWkr_e6u~z`;ZI!ae~;^iw19{03DN@Dx9VNAMLuh#Ej^Bn zIi0R%$!dTfM1ldE9CY$~4BcP+*MjJ8e5M74N;^ht{dr3QuNhSrlQ~N&sKT9)G<#Ed z`_055ZyXdZrG)h_gLnbAE}1L6BCWc`3<>-1>R-2s61VDQb#=FeC$8*4GFw#t>)qnx zc;Di}_BJ)VE@m43)j&u!FuZx#9nvC2|KBG_{j4@#k1p5hrhgRJxW;_y>ee2Q-?^k^ z^uoW)oYYF@jeYy=!?Gf;_2UtuZI}A+*>||`@Y42@?0VsC=4~H8#!=#qAz=^MdCPf; z&of!$5!hb=(aJ$I=FdU2Zkt5C_E7MClBi4QW@d^7Y>=VDJv|Rso(K94^ zXoe$4jLhGjjB5?H!KZ3{pIUngEU($?A+zeciWS7-`Y~W{l5c5ew^SqL%*!`M)@h(f zj0inJI9VrT(URa0r2v0ifoSA(GnEsn#@_oW26jHRS*5S2a^e?lNyUHSSt?deDL#KS z>2dz@=9S-HU1f}HAHN8@{~>ZdD|nP$*6LZb=rHttMl21dZ1t>)pa-kKD-#?25fxZY z-IeL2a4)lKDqIpUJ<)je!$tW~MMYrz6=a@**ug1nvPJ{F2CkI+yk)Tk@KpJExSNO} zERAX|2za;JJh6BIth4q+Ko5?ZS4(QG9CnU5PV}!VMIoCX>>n6|nR6U&e5VoV=*4>k z?g_maSjOG11AGm)t^m3&>Vy?BFPu%TBZDBfNoj4zx%5xSy)j!QCij~utrNo|!?R;& z`Kh>vOXXudd!55NV_q_P3|D;iVfYS(bTpNz=CAMd$FB(wy68*W%%#%qXx-7gcs4Se9!Xv%SCC{YtnAEKJ zSn$xigsYGejvcJcS;W4-JsSdhz_$U~q|cd~x>^h5+I+T&N8*IwpqEH4?i`lRD{-@O4OhL*%AY zJX60=X%s%S_jKN>iEnEi!#Qc&SU4!FI$OSSCJ#e~RUkU*3QdbMO!Hp^SFfxPQ<1u| zlR*}aGYD-1*||upDoKDbCE}#p`d@TjS1$kh=mPMgXo%)^{0e@!L+3QFEg6>R-2lep zkD8XOcXe>->-m1^m~&Y0DraL&zhLTVt6DL(v=8G;&JnJK1@qaE!$o3#8H524uY%}P zhj46XQLkw9?$sUMntpq`h<=4vknH#!u@$l<<6SO{(;WTnP=Y@ET{+!mDBB*7jAr0&MqxrxW8yGBVAl1HCrOz)+GB$Try2T-1K^*`x9VYmXLB z6z}~9T6se$FJTVb)+~o2$;>z}%@f!b8d8USmOpe@&s5D>7DVK&Nm3+tg$V3qURe>Z z!p7YP9=bNQe8&>ExQg+rCXZl?^|QkyFd<(LvTgq~0G6<3P8~JX?A>o}0+IgBV!DC7 z75eLe8cFE!qG{9phP_TxBcn8;RbvP?*&fTL%BJb2##T}#x4q$Jwik2j;!)4S>{0v` zEMHIAi-3!VRT$ut4w{N={N>F^%yPI2@Cp8G91uTI1ICnwuiwXxc2k*%!c@**|Dv4mFFgBTX}?IX(4t2amQOtcV2zZT2fZYk@IyZfOV zd0xyTT((dCS9ZeuD}bc_`%I}e?2Sz4-2bOioji&-IkDwmK8bX$zt&w}XsF`q^AAF} zB!*FhxtI?5>k+oPM=6Bk7WxZ+LKxKSqnj}#^PMJI9_l&^-{1p9E@bg{fRwKDGs_=b z3l{i%JjA$d!VatzE?uqf#{EycTqwgOHyl#uHLx$%4QjyU>Pf%)#ht9y6gAnv<->4)<$;QzRt2M z;F7`Rxsko>i0q6%p2@ShecjH$Z*bZ}u)giF|C^Lc=|BXr|9Q-DFfg%bWqkgO!`VywQyU;E!5pCeTKB;Q1=6 zR|lv&D1dSB2!Eo_2a9i5?;OYS@~=O6Oo09S-^M}5&N^wpJAi@~RUv>(SxNI^d0`}C zwU3-AV2k99sH4-;lJlhss_QNvleIBPrE}T;O)J1-He@`*B2%PZRsiN`#(zS70@ldj zm7|@DOiQdGTCg8fOi!tc*bCCbBg`x;NQxK9sPs7h%(_3@uN6^ItJebUVCgYOUbV9~ z=^T2vr3-ldxOyFb@QA=AE}8E{5;F??sauI+QeS|3`S=$x4;!6y(<)KA#L98o+`7|I zOjMH?XGc5Dx3Yk$C{gpRG?xyHbVN`Fu{PAHJ;$*%F*Z41iW2<}yFMYBvur}b(;`w* zaalxve~Lak_E7wUBx6Z(UGQ3H-O@%yYP1aVMJoJ(acLLLRjQn*{XIT#_AI#Da`u9? zpf~5kMh8xO?}+Ar-ZymrO8kLgpht0Ti!4NR)j!RL{-c$BC^6TWDX!tnNzE`4z<9&-4LLdTxT3KC>RDMVvHJvAIf7q?- zh6lCwz`Gth=Nkuy&HHT~Z7fs}Hb(r-zwa&47FDrjOOLDaMPz7Kji7e8b^ z>h0yJO!Fm2nQJF!B+;#^^NgKc;4cGBA;ggG5D`CUHt26v-}_H{>BJt>Zl4er32kgu z3lxp1#4ElU<}LoyU(0~Xu7KLZ%4yoNnnUCwpTlMVuM(ZTZ|6T$79WOBDYVBoKd93> zln1+=Cu5)f^kg=tWjBYmM=_Q*MNac0kThCoR9SuAzT|fOiihuh-~+qB%#_ z9ICHwKQZGN#wyX5I5NUS9GYjmx!g#V0M+lxw$v=5V7@p{1xTK16&l(Q|DH#yQ3YhX zB&iYJoLx&>%ImTjr#?7gQ@E0*8h+sjZb+c@z79fBUdFojw;&U2bzk7efQYu!eo-8d z;9HI`^PZU>-;jMkei{CaVZ?zw(l|qISiTV@vR&u9z8-QkYaN(irP)pg*;fJ0NCi&0Yx?dFGfXWm)py#>qN6Kv!d@CJq6U+*^MXno+q{%~~_BM)ky zO;XNZOqU(=V&{ImXV@aLVkNo%ec3z7p*(>U^Y@vSK)5ae0v;Qag0D6 zMSP_1XP70-b9*^#%c14dc~U_E`@cvRjK_D{xZHi;4fS*HKF$Sq9XxH(ET#C~!4>)I zc&;}&f8U$-`p;agr7`9Syr5=#D^MsEcQpa4t$5XS^hL~lq9*~Kw@W2RX1QTW&ZeDT z|DR%%RQaEk&!X>Zh@N?6a*#lAVQZ$5dCfH zVVV{g?2Lf9j3)C;N?ctVz`(DMX0ei!^u#2-d0B=NzTMFIurx82VeVQqkQy6$7$GcWAtnT z98CHlnO@G<=6G=Mcg-GOOL;vt#6NlKmXO%>N1&?d_&ca2*W1~Bqm9JZbb76Fhx=lU^-ef z#nG7e-XHCHe0?31`rff;Glg^JnTQDYk#P;5g}l+u#wh&*oph#)6(XoYyU9CQOvbNxX*lUWKs)GQrveAx&En9y5KG479) zh~2m0M{yNLi#0tp_(fH7V=?wl%bocL3*RU7?Iw(yR(Bnp7Sn2$@-M-HJ6=#0bEm1u zC!ptWe)%_tJU0&3dfO%SgraQv!CxbOuPp_?VesSUp*=(BW}Cro(U-IChxa+DDJizT z@B)najM;sv<}G3Um2sAIhqBz9eM_z1G|jhc7hba1GXLmz@Jvb7m_mxhP^lgr@*J~z zJfD6Q(t^&@v7Cor(DBO-FN35;a11XD+z~bWv;45N@PmJTcfPeN0=i%7$q!HdImS3S zankRvH0v&EUlw7xwC~vR^ z2B#^r2SfVF_Gpq6}E{P3GhtfZs68IC$i$2X^+|H!>o{ql$jj=G1fZJ3QfP6@)??_>tzC-i!OYyC4s0HS9Jq8G zpSaR|i*_qwH+sGGVFHQ`%ec$(IEjg4BpyA;@lOqjB@us#q+*N;PgiC22GD8fG`(>h z3M%BC+hYtM`SR4LQ$AC&n3)&Y^wmBU6<9_G( zNYx4?Qng4IgCzVM=@7AlP);9GV9Nx+(x2vt$SPv^-bhyVh`3W7&XE8z+?U*!xR|%X zhMDM$X34XnRS87*AiMKkZ#E3=eXtRHSX)%q+IV@pF7bkv)^T-pf=I-oX&LRPo}^5} zy!R1c&xVxh2K&|b3siNBFB>W-j9h70Yg*-m1kdzQCI0v0 zfhCahEWli=Cu+a2sI+oOJ2<0-l3=o_rghi!6RnWi|8TxbtJMy*QS#ymtkcrQA2q%zRM4xZ^oC7) zejQ?=8y1aDSae~Ch*PL)F&&!r8{%)8HYJ5_<_+|HkU8~&y6@y2dcFI*RM z5A=nr`Cc_F4v{i*J?wV*PxkzOObXC{J&OMpuePM?DH-H)Hg6jMvd$;OBGmwfM#@8B zz`CzHp0w0)_ZmYn*hQ^vEvd01V3FuV;Khda&ky($MB8I%zCM$0>#J5r?e0Nn+zr>n z5T!6oYp-EW>B&yx{V^5hLceA7pkY36-&H#U9Q7U9t2CoQs$NLcH{h0Ow{!9uxg|IL8jNLN!dTWkEz7IMauZB4AY{Gi;7Rk8_j()6 z+xQRNfznq$e-4#g$#+A?gqasE-icq`sOOCwC8e-g6SF=mu!>855vc~_N(x?RYP$Jc zXHLN?c+$L)D@s_1e#?>g^H^dJM<-DA2RJ~E0+-YB2vUL1j! zN=pO4%-7=!twxijaM8mKXzF1W?R!4MC^`XaD62VgbLOyux=hbHg@3Z8tWF!>>JZLn zmBROd&3$^&8UWME*h7zQScrEY>GJSGKw><=WU%L5~;F5@`2~o;4Pd{KL=Rg=9$}3IFdX7qox(S3i4s|b^S)zhel0N?mq2qDDBJg_ zC|h{xz1`Ub;~pE!)BQl;p~oYC(03l{Gwp$Hw@9kjWKfn4mlg-ahGRS`nP7U(*XAr@ z8t$0tIAa-)3uO+t%Sz3-G6=sKQ)OXA%-T=FVkf>YIxJ{o2;z`m(qaXvettVuU@G+MRTxRoY5Y*tlxRWj6L%*o zeH0%K{0Xd@=nIxr-l@!ehvgX6q8SR&>-EXA#;|VDDWzm8ncWuv9$kB8AUo@-4z0l6 zqN|L!uyneBrxgDMxK#r_!8JrU5GNJ(O0)TSgeeCL1%b0RFI^Z+Bl7%GEa6`SbRU>n zih9f*YTL(np1=XQk4Yw91d5msg7p3c_D>}ZiP3Q`KhKK%tR)1tqX1_U7|~vl_Jn)w zOEq!GMS!~4Dbpvak+gu`;OCD?qwK-xCxZ8pm0cHdo8}G(dQkYtgFsI~yqecJe%GR- z)Ip8!DsU=@UNR%S(Y!Ho3VS0D*J&w{et3K%!*w-W2LilO3OFg!n596)Ev#)u%slpU zqr;(~9i#7eK}mfr9>6}3LBD!dm$dSaf&YK{;BCi{iJm_(RnuB#HO>0Q9I*Aq@C#ku zTJK0_m;V{_>nrYM1{`W#_rxrw6(6yHQpvU?f6E4Of5~@}%5lO1>Gli{m2;@CaY_Ol zR{AnsI>se$5F12S+net*nz-magTd$z+LZ(35@pyDT zq#{ad&4SGcQk`{UbaarOr4Rdywhr5K)DDaOB1TEB(pUDn}`gv6J6g_U~R zGSr}InBh1=DmtfCDbo1RMW~yn_J0z{L7V2vWORjuRh@g4i63&44zF} zIhV{yjW%Rg7g1S1oyZk1ZxYXi;)T4SlelFLQD?)$Rz6-E?ehFJGmbIe>2Cs4tXr-8 zTMkS0kYV$+a0S%#{Ncg6lUJirui`M=rsbOsf8;Ej*Aei#P|c5+XW-ET@wFCRb%Z{s z0~t(&$|yeYXh?m}E6TThfWzH>U>rkeLCx?oS{~ zV5jzcQ;Ag=uIp^Pj+N~}TXqWn{MB>`rZ3e%t}tw$uc&2j+(RKmOH`Nq)gFr~n&g4k z+URHGnx6YX(1B3Pr(q%k3W>@xsV9PExDCryfdq!nk@u)@aIJLBKvyJf;9j6_##_JT zEiS0Q&Dz&#tE@Na+1O)NZpIj~fQPv?H7+@kB7j#z~gBObdU-X=Z{w2075 zWlG)R*X85NI=BJ`^rB#xVlmU0>a;Zl!ffL7&&)`D=DJntk5wVS*ZiXDFJ3Yj^MFgPK(dTc23v3`{GHb^JwYQa9x2*JLu zpGVcq8KATpN48#h%JVelhA`-+wk%-sUYB_4QN&o@p!}Qax#;Ovrs%S{ZJWi#dVpjh z{>7gnMpG*~+R_GP?isadlc!Rt{gD}dc(d`Ap>OSY66&mp-b zU6MATWqzhd8G;j+-~J}PI~Fa(&&sCM@hp0m^FbQLMbWXQFRxVhhY4w;CUCpH)iH$c z@$h9p3MKd7zd~=FSTU~fm6Dmv9Qp8S0mYvFE&yr|9I!j%ZQi8;HT_liqC(XQhy_-x zbKkV|e1_-1r0y~ZtC`F&S}VLLw>1_CX_W!phNMJyAk4l-p{k|mb01-vTCb79slo@} zkMaY^0CLwC!TmqCVtR)b)7iOVmrcTBjpg{0qR=ytx@k<()A>jr)=I`xZSvmprrOeb z2(#{CSx0f8=$^}$QBnagd=LgE;i@pUJpIL?*UoBiLwp%r$sXZnPt3ab`GO9$Qm|Zs z8i6ejgdd-Fmm3dJ3E6FgC~*F+;otXcB8ckJk3Q{S^YEyHBe&0=G&yf7n;NzzZf=gL zRP}%4E;;J@+Mjc*`Oto?lSm||eX0hybP`va`JUu(I7ezpW>T09^&hYH*_Ozf?EZ2h z>$;KGW^pMPx+ZfvtJ@l;g*g~%atMPVs2%Mzx**rO z#OL-o*Q`UVp>`XG*9*AJ8}=U$y{>->+)RiUG=DrF`Ph!PbFhAq$;rd|nlQ+xa-WS{ ztUL*Hb-YkIwma(q72g|=95Mw8@B^@hJ(wRz;{>cqCns93(Zvv5j-(0$N7Mj`p;!X! zIJGv!@fH|t6i)Xn$A2bA{}ccDzuc@bNCS_}K}!48&FJQ16UfdgSCqot!!q#Mrmw)` zG%w0gqxZKm8Lkh0rQrY0lRRi&`CEmrTx8O-9ZR758OE-K>mt^O8!}OtYboKKdo)>+! zUd^tunkVj*`?=W-Rq)Z%qvYQhstlroYs2>q9?B{CM(NpHFK=nv}4r8^b4E_83Rs zP8I{d^CvHkPBK5|9KN!qTQPZ-^I4in~v-Z>X9lV8g1K%Ek_2DOwM<3HNEZ494> zAYdZ^<>&eqe`dZve(n!D~Aoj2d3z%YI@;D?x-8aOMalLUT&0`HC_M!3)GZ~!*E zq`@Iq1DD_Q%dln{Zit(iRJ;z{ef@5JqH-P1Zu^BsfZ%Z)*M$Hwe*WjD$I9OCIT(nD zPS3^e9SLvMvqmWHY(cT=hY2$bQ`j+Yg1zoV`0ggf=c`Ocm=iE*gmK8=5~{YW){%dC z`|igd>{i@o6S!&4sw6T$s}JS&Q9OsMkH||HX7M|q9+5L`$Mab{p)$g8+7xa#SuK~d zWwS|}Bu$tV+ZKrKv*u_aZf?U~R-(C7YS_Xqwjnw&&8Z0i-*PqcwH;M~d)p!z2rS|V z9%9gRzMIckCEB$1gbWWRAao_GkE@r)@+Mjh_x29Rp%cCtyXzjWxC2eIvNGL_F$tA4 z_cy`fwsBWEoh5G}$FK3wV_ITug8EJhhs~N~&73mTXF5qO*YSdL6Xb83Yh<*Qo3A94 z=}%VVSG)fO8+nEi53h|7uLluqa7n2>f#%>6d|yQIJ7$8NZ8iumCtHo5@xe$!SvxII0V zz(p9`h0rD7C!|{BTu6N!CaK@C#~(t>LgeH)WdF?>GFQD}}JemeoTJ@KvdA-9X6<*(-00IuKO1S2ANchiuhHF9(XH6?G3SqB=KD zetq1*EIatWxij-Y+YGE1(Y_7c!y@_l7#EA7i_}1X=ELevR9bj3UZHJtgb%J?*Od99 z0?sR;RB1_WyPTFUUJ2XB)d(5EbNP4gf2J-NnRrASk^asEMyq3*=jnt84!`k6*lgO3 zRarN}9jZTkv4ivWtq(=Nd7ttt&7lrO%`cC@*_Z;{qLhLw z0el@de_!v&b3rjRsjfw+_n>Xn%zXq!1eXQ7cI3s*?AQ}D$-2_Kf4{E%o5cL)%0vA=n`D8gV4;xW-$TgxGjuteM0 zUl_E6Ed{Q`8@MYk{>x3yO~9R5{4aJOPDL|KD5%Lfdi>a{oKfV?tC?85PK^EqL-?il zZQ|8r%y8#)S;_njuOl?<@?{&pOC}b<5FT%5-AZ@?bX;jw{y2F~X5Ptyvd&Gfln?7&l5`{_2C8NA;mC`vgJ?uf9Bf_YZ`j znA&d$uV-5Au+fFnuafD4fm$tvVOIDx|0cPbLW`#Di-%!b+3f%kZEjA78kUYIBKzRS zrjWpA4pVgD+Uur+5@n{_b@AUXnH;uSyNca?TuJ!!XPN#T&VPZhSLn)is!pXp9x2!uo zKkL2BTJdE?58ER=A_HfDU&BW?-(&2b!Sf5FU>BMCdTJz_qHZ*&y!;G&@WtreH^ogl z#t)HSxs8l|?q0hvNrp+$hA*&Z=I;f{UeOWMnp$m!(-+3nRebPDtNE1WNsgL3re|bfzIVbXqG%%SUBSAcnKFOXlzRW)uGera)U=YICM#Q8RDl&&Bm3~Bdf?PR0?lR`1w`5E!{A5cXxMp*91l$NP_b0TJQCKK^kV7tUh0ga z(SC(_|)_Hz*qdLs~KA%M~VIVR?>tA+Ty!hh%cs4rk>+Z=e`@PMwTMG^%VPzD2WM) zW+UbL$2_;dv&B!6j)^pyWJ(ta2dixFvpK|7wz>3aX$^RJdD)Vz?bIOv9%T-ke2w9n z;n7QsL8NS%XL-e<05K)wqEghUN{Ou4h!~P-h)-V^&r6vDw>P5vI*D=QLr4@NeuD9e z;Qp`K-)E@UL3xj}Ctu)z8R^y$S6yVUk@-!z*VLW`Y4AH^zBb{oRPD^CcV#5XyjMR{h#Nc!8 zmiQSq)&9C%+I;XTQ4 z<;4%g(qT#q=JNT|Kq+Tt_w7YiA&W7d7v~jktKcdQA@sP1-kll~(YXnU0i= zC^HV!6n{L66dBniGgI?2r`JaJ_X1_5oIP@Y=Q3UbTGLW3=Jd`JV~lqsvCmW9mU)=O zz%w8r4j;k%F0LzSAG!C_-F3u@G1er{lA1sw#A}WLzpDAc9tV9;Q?AG@S` z_r~-!r(XAuR99Q#)}kfSz}2)Wcuseh0_RY5BRxmn1YL9|F=KEt$hJ`L4K>tfUBBIo zWVfOU>%-I|ESganiAGlA!{@rX5?Z%9KZ=P%XA}7qZnM86+;18LUyBHZC1;>qLD!gy z7q^dW>zT{UJ=p-%*VHalpN^1NdBs9<;zr97rtub%pBi8`8tX2RPq_$}#6HUBV85_E z0_~Xw@@w>KMd(GZnnso=BT%fhWfgZdU&)KOXA0?Q`|OL%#M~wkm1b6xmF4q!e7MLy z7XD)OBzb~L*fq=~wEg<;VEG^o=*V8V5AIp`bpi7O!X2m{HLA9inQj!EXV2Iid&2%kMjeG^5Z@fs9=qtFG!+wRZLHJD+u2pUxs7y<9os z4^Xu)+ijLP+^P$huU~#$7i9*0)zCTC=p?)CoIwh~Cvg1}r>7GzO`fQQxys}f+NF7Qw#gV=INwZtx@%j8UoshDp zi;KdU@J^s%#dI^Lmqp zJ6mn}oripwZN7F;`It&`L&FJMT{$KS1=+8<&%YAYc-7Qkb*$ZZC8 zon>n@MOuEUJ(dPNZn}!&&Ed$$3FERE>s%fsKdr#wLax<9ZTm@+Ls5KWlM{rz3i~ji zM5jngRkUp|@{L_)4tG!4WrMYYXwBFeflzQFJbncZDsC|f|EGpy(t4GotUQyHSiuwG z3!4mmE(*0n$C(>mbeiW|@>GlMzm*@-W6`6dNLy09aN|8orhJNOzHgDATM%}$Se{nX zbc2lSjHXm1ZuVMU6y#~;yBwV9&1$g*m>-rk&kSDdW#%1O*0xR{TgL=U-5wds&Bux0 zG3fiRVkov(otAVN)gxKM<|#wxN+Cg`uh}(JoC1lz`7kspKtC^PRg>>?!DFzV>PCl@ zO-q$ZZ=cupr3&ln35>(mFK?eMpbob+owbD$0noW#GB@-rHJXQGF3@Ow`3R+*q%t1i zIr2^a$mTg&W0@?S8o3^s!O1SU^tAUwvo_aA?Ns%_6%c8&+8@X*H0pzklS9SLMUsgT zbMKZgBuDYguCDM_z1Hs`s9hhTZlC~Mex_r8CBiN!)WyS0OlN3U;M@d~bWa;NNqW zDGL4S6yk;=={YriihF(8v?=iIg39oERc_Kh%6tKR!jTP1>vZthW=Tt-Z)0KIafkT_ zqY&K3xuF-aQFLEtCA#%Js+LdUhY8b3UTp$ncgPhI#PWG|rM6FgYn!Pwh8zWI^TETy z(39Vm4>>jFf4hl&%>y+Ph;)xGr!fg@I@6n$5Y?=D3pvX-I4+*y0xcpOHN#ia3HQDyIDYNA{*^q=O7D~rHq)%#f7l9

  • ;|uWb#Qm%HgeJ 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

    5-KE>bvwZS0$xsk^^Z)Hd_M91lZ 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�j+LU2gS_ajrZP|C@f<}3xM**Ly7t+CJ*L$#w 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

    hQ#kShwgB?gyI z5P!s#sVigL^i;*khKf|_UIgwTkNL-bLjvlbt&|YC5?Kz=1?VG9O#P>W1sf}31s)#3 zrW8>`$;|&kFMKY-D)m{p%)&@qEsYeF5ezVQkGxk}yhr-5zj@OVV=qu_%b}}6vr?jL z|GShs?-PuyAVA|x5VU=$7{~7{niq$M0G~^-+P%nTXvnG_0qvU#_@@2p>;v1^r=vn< zmW5p@71)y}0iL0#=u3_lNzJoY9Ear$QWI|&)(>IhR*!dCu+eK9)v)6ry1ku=(_og& zn3~Oz>^n8Jh=4ZI!Xs(b%$SZQXSbq|dxqvpFpkp)xI^1WZ5x&nTwg?dxOqFEXinre z7B6kMdTBKwn%T@B0#QISm%*(43`^E-i>+=Z8RbblJ8s=5!`$~-D{yd{tjsSdNJFNl zk~`$~4^Mt+1in|I4SzXWL3;#T6DN3vbX-0M=#atJQ^Rr0=YB;QyW?^-7|mxVRi>M= z#7eZ%fq=omPba02m27?w(Je$qA*C`|rl~2sStChCR?V4pdRpGOr>((w6hqwx#zC&D z6uGKlYEu`uDZm6F3EsnbOjQ|DM&U7y=){8h9BFW)Dkqe2}mlOX5H$;bqRskIF)@m|o=X({eOKj~rl{^gdy&r@uyShBUBdl?MdpDzyX3;4eYsZX%rS@1K`r~`oC!@SSv zTE{heF7F^iMRyasm*txeiJB8x+b?h)*Svz?n7nSYOb3r_6UEw}KaFz8G#Y47I<%-V zYARLDF3G@x^m-Y}mL4^KrvrZg%Ct=K4{n7v#=QwMJ%Wsh=8siIC~l>4a+-c}q2S9? zNlo9YPa&?1PW;esXcxSrB~+vII5*NaRqxEB@2H-dx+c>IGh<3Y8ZIRri`E>Liw=ef za-2zt-i+iKXgHkl#3$;KBqNa@)|3NCyy2jW1X5AZpY)R?T#5S$cd9teTll&Ns-f4X z!dM$~J@AD-x`seg5-x3}m8w6+Z7mqS8daC4l&KPK#Q{zAoufVMD7k_AG^D#C1wNy< z9iOFz}?Asl-L40e{@Zl7-dLUhG+*Mjz+-0}Z? zabNE@ul;W?9h@YgPA*^9qROaW?I@j}D$n@b{-fAGv;_vN9Vt zT6^l@8b|fJGe2BJ=F|sg}y%s5{uPCt%c^ zoR+$ZoXBU7w(rSFmqxO6)Nl3a2~qBIAED6VChja+aX?=%Cn2oQTsz)L-hYfqQVd_4 z4O4dRZw-?SA2fR@>O7a|Os^6tE5+Jh`-B^-pQh|9#K9}QFD?)^!Dm%SRqw-u%|)cdKwQ(FqY}r~%=cdYlRL~+diX{64Q7$&i( z-C>5m{gBEv!SpQ4dxzS4=>+Lm>BWU&o4+gzPewK8$K4IzeJ?u+Q+*;@#JdDwVKY`7hyUD3Q=;gIq?@e zcO1~=tylU5)ue{A4zM+k;6uHk$aZfn)bF6oPkj5TCole8RH{{Oi$sKU1$T)??Wh6~ zEKIJ9J;>{pFmqFsDH2P1or{XDu%9;~(>^=u4>4(#tFYl9R?J2>r)t`00PpfjV1IG; zK6(|Y9txhIj_%01@=CJu<%a~Dm{p{+=!ARE8o}5Hxa@^G3wGvhmQ?wKwN6s>Q(6uu zzU!X(n&b(U+>DQ6vvr{dPTJ$9Y;9a>{sDX=x1Uq0GQiTAexc52BjBLtJnDZ@w}lGJPpW6J%CxOGVO$4CC8`6w8sK}SLo;er z3>On&RoBu$Cj*@993X5wpYpDgsV&j862fl6;j@M_ItK3|tbOkt(m)#ST}_TOQ1Yj& zffQ#uJF$^QRCU^!=_@Hwtol&_Xexvrlp)?euY)-K^DjIm;DdJY8=#3|U1<%jE_5iEJfXuaaccUTMg0390&m zEWln&XVV+XH04jev3yA~`ww08ghU$R2WTTXuX-$o zj8ezu{q4xpz{QYAu^Kb=by6L;ee-Z=#HAipP1XTnRR=yJgZfX2pI8hHsI~U8=wN~| zqFb;8V6RcTP$)_K+cITxr7XAk9FbNLquFSW^DizT3w{>?*zM8=?5hYu38iQrLD8)F z8F(V^uqGkP)k=3;s&h)4a>~l4nzAP+UK)k7_4^1Qrd%RsFo^yq18ZhxY|&X6WU6CN z)mv6b<-|cOJ3Lxn&sIqfU}vY8NM%TRS5#E`23@DkAz;&C@b-&=m=3HnneKhzwX*<& z81&pwLXNn4wQD<0XvfVO6UR+VwmMuO=WgAyc3oG9&0n5=7sY`@F$L)tzQG74_uWE0 zg67UgnDBA7Ni!#W2ZLu=){m(zl10*KkwtCP6k^|r%JVrrj*@jWa&rmON+vYNo4K}W ztyk<*GmdFsEj~wB2^RwRf4F+9u(rCeYqyjFEflEX6e-1m2QTgp#YwPI+@0bSDDDy* zQrz7gio3f*f>R)rLeQPQ*Z2K<|9c%Ify2mLbB=M3@o3kk1S#^+_t4E^K`;CJ2X)O8xlQJ=ekW#7gW8CFS4&&8D;ir` z?k4i(f{4;m<1L5BpYGF~XyY1hxRuAktq7p8?Ru`}i7DJXy_j9hdZu*2HeTv^?wqB8 zLSNf?bwZ8bDW2x9wJOU}n8b^NcSQSqW6+nrRBcJgzrKX=98@&lcmc{HxSdl9RVB(OGX_LQnNjck^E{ zjDLMjhL%H4i1XIQwy&LQUzkJa-TA8&GH1I7HO`5T(+!WQi&4uL`>^vSo8_Q-YGON= z1iu3nlpPcc{Hg9Rz84=m#<1s4&ku^K$ro1N63uzaiAgU_)lUTLw~-FU!ZLAj7ey>_ zU6UzDfGUdrIlhU*0cL0|Yh`=^D5n>~mSPe|ZTREM62JQNurqdBocz4^0Z$NcfEv~H zhE>8Wn^g?lTs0<8BBajSms6*gs{HC9F|$HVK14Y_ieb-F*rgpUKTlB{l~nc!U?OvHm1UL`wGCH)}nRO~bFfPE6mwM#wf z!gTLIrl-!~DT+vsJf>qmz~niXOL}xcXL%{Epq0p62rG*4H^>DBDU^kT z7CqWLPZ#|MnY{g7Caq_urp^&`zj&jXynAQqo#94?K80&baRlLrd=ZO+9E`%k$86=M zx1Cz?O60_w#Ky+93CEp#78wKfo4Sdg5+GLfq7TgKK(B0yepN?N+jTX%lB-fj57VvA zj+@uE6bo_1Ci{C!I}!VNZ+%Z+vJ%n{n{QPFrID=!Aol5do6(>-Z{+0(nr1%`@s6R= z&OCklzcB?Ww-zz_J_|QskOePf5X?8M;bIt&U`$L%^Zv~bwCmjeWp5!9Mz#cl=2aEH zf8_x8w+VQrh4-`&y|^=|{>>my3DR;qDG`91IyLe3R^=_PCNdRDZ$=K*%Ljf9BGhHd zD*;HMhRdy$#t5ACkPOJ=hw3q@2K77` zhDU(TjT?|c%1^gHU$Rgx+k>i(1zf?>Mzomh22~( z#@#!?Hib1|YgHcUHm$$SK&@MVyiB#Dv7N#gV{qAl;Bt&!2bDrnx|(CIYC?M}MMCPq zi_E>1@)j_+u<0h&i6(Kj@pUk(0I#H}P zDkzf+e3YQcb?Uh=_&`><9PL?H?l-^msK_Xi#f1)WL&Ile%C@E!ju=lr7ZoR1~ZBy!)c0$Vf1_BuQE> zk=4?-EW&z|DPK(ql?~AAxgHJCDsA4?uyD0u>2Z{z_;Muco0-RiwabWQRz;ET#Cf9@ zzw;ViGF`$I>Rn9Kk+~nR`0Qf4j2``I%l?7ZF>hi%UyuLkel?Ezg2i8ahc&hK!vUQg z_g-lJ7Y-%DA1{NOzlV>(F6g}Y`9DK4()kwVlVyrwqmH?frDIeb#GLl<*@nfyCz~p8GZn!sgpf3**A@vFHi*@RM5Yf^jeKF zbt(S&jqdo@h_6e#2mlAj{Lkw3*DY~;dW#dE@h!S)3KoTlOw7qr@0 zJK&7)F>c9#r+uG3D(U%4*sh}>mxsT62sAA4ua@hql zawiU&1B&-xf;lq(1WaIwoQ4BTcN|;fbT_#%(W~4r&UXrH>@58_$9E_)p z2%1lAmQ$wH_nE?UmV9d6ty!w|p*<2DoRyN&<@&bl{q!flSX(vF(sUt^elOD(V~{nC z1)QA!ly_G`^G}*JqS|ejuEFoetEj$)y%EpqXDd+F(1GWL(`+o(^ChO5y_tN@@+i;J zq_4!a#$iegRPUBM-Z_9r8QX((C2wjbZ>W5Tb&A14TDeiD3Gpso^}ZVv8-)`v5){G) zvweVWhk0cy?)3#jUVluw=~7Awh(ARmMDDs8;c-|UftO-h4K}R?^Y(4>(@TOC={^L7 zbl?JEPxnqRxB$Lq$~3>Zobit7gYk?KztCKwdID8bLVgl}UpazFGb;|MDeM-Z` zet?wKL0VF-c9{X21PzXfm6IOc$x2X;QTd-Tw9DQPv@e!u10T|q>8JcWDpd_vKd~YO zK?*fut=M=i9n`K}p`=I>wA<(o*>K_Rb1=g@69wke-b>~bV$SZGuHY#tJe z?#xKyQbQHyWQ1lr$`)9asczxizjsY{T2-0ppy(7SGoSFoejiDg=y{WBd;5I^W1mJ9 z^!a}On}a5yi_@le&CenKwFec00~Wp&lG8nf!u^@&8vN|R&98wJkhJ_4&Dc&GQlZUtx2htZo*>}7tL34xBD4fSJIKk@6#mwhe&#JSyz!qX z{!bYH?;6KSl>Hx>++9JpZnJNU7%Y-Irw!nnxk&>%YDI_@Fc%L$olbg2K)yyd5~X{9u- zZUkggI?)Ie?|h#>dQ(ERQ*M&4ZmUT#ZYF98?htp+u@>V;TS!c|l#7@R=%jT7IIC9c z*hqkG1p?c8a`o*^RC<9b7}CqCA< z&6PCQEC)A$E^CxL)+VLtR=-S`SwzLmXZCGpKWC;S7;ZWkpCGcPzJGFwfA29E8@ka& zc#PwTIk`nW`Y7noaXubY3nyEnq87=tZD&W_IGjSD>XAexhp+U2T6Se>wJ%Ux0TQ{P-MMlW5yhaxZ2?@mi*AsV#yPQ@*HuAVX`h(18KO!Ww@7<)&ne38k1Qo=V=(8L(uV`D^h zjL*A2ZxPVPnbTZf0exmH9=u`Y!_~Jp{Ec*y;~B!#x8Fpl6W*Gem~?*tHJb&(urM`2 z9#ipfwcnV+apPGcOn9dN{B zK%0wWK|*%*$h_Ei>xfJjxqXCv^Sz{pH$F~4V>j;WV@7QKZc!ttVb!3E7ZB11Qpd;2 zjXNR)rQa9kBP#FHM4m^+FAn9l&J|bs2s{v#Q?8&v* zOGzv-V~Gxb_wlB1ghdl2o^UQ;(yOG*nE|3I*Q%tF%Jp(Db%Xxq)?EC7p$d2!)rb3D zkPJ>^SHW*b1FeZWo_`rOt&<$*#wBv?5UKthnHz4t%tmapcfdQjAoNL~%zsJ2=aZ`B z0tUHAUCTHT#&fW4p;PU*JsJW000sCZbEx6f7i8-DQw|ocK%AdWB;*4QGfegQ-}{jnu1`RNyCjQdU!h zj^)w&G_r9cw$Z3u#Fnj;4$nX9j?TMez z)@Cso^jjwVj6!l*kz3a{Z9guU%IDRUbC^>O+cW^g_#6-%Ml7}6T=IQWv02pAr_om#|Gl@tB^qRZDZb)uey|^wWqOM(m`oIs#fak+*}`rsoORI_-7A56 z^3w}doEj2i0UD3Gi25d+!gR{eN$y>7G(ysa8n%p~ zj3Els?x=JDmd|%3(=VT6zB-32A}6t2In#egylQmU45RE-d3oX7_0jHi?`yW;j=>2u z^CAuLeBhtk@dCFT#yiQY$uD5(5NG*7bjBgo1HK_8<3d>3aBqRAB9l&wIxgz;OYiRz z&({wBK(aUKX6EU^UddR@P;h z+5juab{ImU zv_;(BpYNqNt&GY~eDoZCg4o~aI^WB2%zEi9>|5(up=2GL>Z%5KJ#}-yxrUAMB8Uk1 zVDC9+`LPGQ&lN;uURJCWm{z!Bt81wdWOQfdtJx31TtNNw=CDyoRk}hmlL9>qw(QrH zbub)sHDcmK|8BACi}(>Z`<@AHR9IIcpC!S|i|NVOwmVa{1j^fL{2_r2B;FE=mrztu z8Iiyj`q;SkSEYow&3?l-F9O-Sn7eaw_d3f^pV@l^!u(6->U5(rsi^a2u2Op6ZuVR( zH6z2Jx(qV~e5pp0ImEuu@A4ZqwH4?ETbv3MXBw+pZZkn*%VoDGSL)>s)Ft`c?HlpC z9<#q;r>*v#JUoxjXEM2LiE3djP&++PAAn!Sp*tO3zaHAdsWH0XiTcKx{}e2^-oEo1 z`QT%iaJuf**rMTHk!V)-=Cwn`KPAiQ@mmKqzVD-f=Bz=pXJFeOP5Y!HJ5T?-T6C+| zcvHJSKz-3!b$`-ljU!B?L1YeJYh?%1(sQiqIU|t)+6VPiEm=1URC+|8i<{Mo zWvg{&t57Fg!W86(rw|q5-P0G9C))DVDjY#d6%NIEqeS?k=XJerNU9(iAJsh)8F8~d z06FyI-WJls_s==tOmn1%Vccdw|9ZM>{DohNN;9)WM^(Prgt#TS=CP`zwi<(`EoSs*%t{5ho| zohJV)UKL2j6fQ|t|KjMEEKMf(*-=ErIJPr2G=3|)jG1_>2cBI1il~OfluMnbKyVNQ zMI_72Qw`~qvT$|4aWwg@+Kb%*b3X1&d?Gf|q_}MI;oh6nwh^M#>x{yn z<^bcl8}5O^C|x`!yoGW1-O80-(u-8`F@51_1&a3_FGh*>hQ2Q(sCXT!%s}mbo?HWQ zJp52i4iNNl$_CihO+w!B8*j8@=l}pKV2LiC4(Dq_cKz=6e{V@iAGz+4f&j5p|rI7&h+^kC&?X#WgerrcAYXhTDA(c7Cw=zZ0 z(wqi?o=w1(q{soO|D#9hdeeVL(f{*sfdv)*Z>1E(`dLE@;d8Egm0svdMP53mZI`CX z-~Bqe`FsFZO!%dZqeR=7d)>#BcXrH&fxT`kstVVWuZ8bVDFxpArJACs0a(h4b|JfN zBEW0gbZE)1TG9_gIX+Aja!a;SQu&VHME=F!=GUMdD`Yza*qb0hDB=X@mB~%w}e}TpInk6)SkyLyn3yd!?;KXxT z+gCTJcoc4X4?Eiwm6i^!0e*^4j@v4Gxs@_J1j?w5vP)!=GR2D4kLCq1&V(ncmiBS6 z=yx8Rlt*z;@NTO5$o)iBN`u{g6I=KYN1rRJ^-=TWZa6ftU%NGGu)c&5)xPu7yXHiL zYI99Iu&YcV{^5Ia`v?zwKNC*06IwbKtJjyM-@Kfl1i0%lQS zSbfqt32z7$ZNY>`&_kaB;mC;L1JGmRb{)qvrfr*mEg8j-@jJmnQ7fon;sAx0;&pzM z9&4pM@6OI!AU}Utb1>PyV$bV4#b!QrNx@MO#xfin49&rhyIMMzM$VZL4Z{fo^$P|} z_I|f3Fmy`y&bG(1Lxdk758af@dWaW2ejhoeF4m4@!MIHk8G0_zurq{IO?mF7uwl zsUjSr?0>Ms6xJoz-Au*2@O*uRU3N0iQ+-xkc_(~lHN~O5#1aFj_;PH1uf{cmY}mDJ zAQnlbIQ5mkJSE{ehrzTfn!G3}-J{atGR1gi===K`l0ih3coj2q?cZ-V9KqN5)DLZn zrOw3Ts?ALppjZUi%wBRJA5XE45HMaH6w6kE_wHCqHz_136S7FpVFtouLyxCde?aXf zW5&L6LMnt8Md5_#m7GL7?8l~UOvdZ#W-_zJ@a?Xscx}YfBF%66PsN*_Y zJLeq~Z?VdyoG%$K*O8N z_>*70ReenGS7Eb4nh7Hu1^<0uMrVq6vs%f_c#mBYO~og?4b7>xoOmcvSylcb!jd`r zx_SHKF9$sJQ1F=T=dHNoq_DW6Ym>HxGR@SlaTWCr8Or(alG28v%UyiG>j79lnf>RZ zDzB^G2`H)Gk|UWJR3>O`W25-@_Yz914huRx10vw^%^$Gv$YX(e0NF~tW;H@qy`sA+ z_RpeiDc~HGoo|)@D&x(b153D0=|VoZ+{zswMLSeh;9(>x?&IFaWXKA=?qwV7M3(!} zJnn9M_dVJew!i;-I*jG_ho;7C%#&!Ore^n-h>S~7nF4n}*!fJ&QCNsc0Uygu!dt|e z*Y6~e+nz_6hckR%g@-?#_gMdYMtRGEqVu9I0k^}H@sRs3x-gu;8s8l)68$Efer0Iv z`OX=EdfJI~S)>d@;(L^bqL$z$$lgE|+-p^}|m zMtu_}Oe5f7a==&4;9~dN$Y6jJ7>a^#`T6Vo@ORw+1iHwZ?uKmfzyAmi#ug30aCf`F z6rTCV7&{czPERmHl;8ICB1i1Dr6(*Gt6s>$H0@7)rML3Kwa8<`UChR#67sh5nxEH5Xuo%#Dd$eYYE2`t@hwc(nC}RG&SR6JV~+f z5WkQ*B*9qS>2S0zGAcPw$4<6<2oK5;o*#?tj$^{(!vPV*kmQjHT1^BO!$+J*NEl2^ zES^})mw8;~i?oL*r1Rl@pEX+^W=XxqMi0uA)8#bu#czQ z$ROh{*u*IAGwVfc5;-#9e0}os)Qf)-#+@+3E|41&KUbT{Xb z;r+$q+FlvVixo6N^f)bb^_>F1O#{m%!Mo~n2CpGVHUA@u7p?q|+5(_Pxd+io!@fAw zIIMc2psFWJ?DXi*3#ASO`&kS<^94hV#->667fd2l5R6PixM;^Qc<$syV@l#Sj%5n)4jP{77JBzb+HO`1Bb()B@jh(ZtZSq7W; zhEvFE_Q<>>c%7f+mHPC_6BiA;NhfPD794=1F)3_SG7|bmx>8y&D`r49K1a$#)5=aE z0D75UgSGAacBTK-U0Q>X^66jeH?LF;<|Ufe#-bUJpEg51elmZ&Z{yIj%e$BvT-7N= z42cTo6J~^9T6Qy4+6j-S;Mb1J=Bj5k*e$0MbP!HkltQfRemM7ZycLcq)m`@WbVHpo6;-tn_mIXgLh##?*4j zliYXiWv_XgbW@lPb&Tf@Sz;Nj)Et)uP4l3s&i|j!aI*>bcHo)_5a zWS=2`h4+w~-|feI$~PmW@2v|;73jW%p76BG8lw?zwJgSAiK`8I)Up`KEv}|jx%R^a z(}ltlz|PeCn<}6?`}I=GJsqgilIc(_0p07{a1Z`!h*R>K_wNtVT?bwc78)ZBCQI0w z+rHaVl!I?$?nJ?Jj3h%5%oNIl@!3Bje^FY`eTKKpmYDv-;UZ%)e~~iKqEx~rU(>=d zSsX$Z&4@|3lic59cgcS~Y_o|(`KoYj6@eW}-fW9Ups zTYdn37RTIU{XiX5n4t#1kgEYZ&dNPfl(QL|uHhel#P>(+x#)q5JOR3oUd6>9DS>ae z3vmymD%S&pgP7JN0Q_9#Iz{agF4GpBgrVYa#fe#yg5^XjPFAJaMuHJprmTKIG*qZ@ z0&4vI8@82TFQVp7uzKt>sYx-=sMKi7hBwl7Ue55H3%oeHd?Y{IpeNbDb>E-Qt<}Vu z!%Y?tUwVv{1FVV{FiTXxfC&|jYryR7H&_hs|Gp-HmbGxA?%SKrZH?+wfX}s=i}NwR zKhZ!touS_M0y3rrk`X7r1DJ4^E%gSB296>LXn1gBn%+E>B_%so1QBrp`*map^X?>; zuza$xM@jR{v7eeW?#SIgL8FIEo;?O2l&Z`)V9MX3>!6S#)F*{wGM5{W2WRK$dE5QGeX^_S`vTMlPnZ#SZRq9&ntT$8}zg!IZ?@V z4vPO(U^qQMq%u678{NasHB95p-+uCP%Ct*}p{ND42+s{vta+YGwOEz2s?SIbKIOJG zAMcW0`*eZb{yw}b_y00VvIMi1XZrs;N7F}XwPuseuQnC@k`2WFyww=>JL&9V6&JvJ zgsyJzx(C^isGzAywOJU7tV+T+8X8xk?$hhc#>Ia;ew~ZiJSH7`k4hzwE{5F5QJVMU z`b4kA<5xEum6FYCIPC7$$1SUb#Wgu9>H-8O+;Okd#c_0A%;7qcb@DA#kLUNEce6)h z?h+g(7j`-_jU!8#-o;(5R{5VudM@k!n9gSBC~D|O`ih2@Mh=3S zw~k|F^Amt={t#D_LPN?RZzlmrvEz;#T^xD0v|^XA(s_ol)M^g}D;0b_4|_`wi<6<4 zx+H_7C9@f_9xaq7q}#X18T_qDw!B{G`0I*X>AV;4*xw4NE?}|-3w%3?f4uAzroGzm z>jW5gY+|r|#+j_^QtTVWC7U1NUTHAuAc@7I@Rt4EyhlMIAVjB>c!3)Ji|AwXl`CRz zx0w2%nP<@8y_B#W23uAgKe^X~&X?#V9F`U1?j$VW+6!%x0OD6PHKa!ZhT%Daf6uP+ z_=Ffyum_?7-&@i5)bB3p?%dEv>fyRl%+Iy(t{dvDW$-wERZ{aCcAY}L+(~B3S&sc> z3h_$gD+MV9L`kpzECh)-z&saHjJB-#3y9Yr%tczP}VA6 z`|hP3FGF!1jat%XxzPz0J-?e}PkWPIIifNECGW;G@F^FW{4Vw$^*g*y*MJ_u3(IkUCauLAo-{Z+DO>17%c6XZyj{mrgXIm-qV4b^xieBg#{7q}zUe|z~b)!W1 zQ@lT6fO!t*5tKV2pm34~`;qybJl092S=g5MF@iNeL zpFZ&BOht;a>G+7HETJtPIAcs!RIlzL3E;PG$ov?~JCeJw_-VSL*4oFTXtVpFUwG_B zwb<3F05H>6GMY%HW*N#=#Qb(bmMKo!XIhrJcpgm%Y9w%d`AU9i2vy#Z$;_vK_os$x zqGzrK7{#~T!kX_yAQ*uGGoPzohVj#*yXlv*zt@iu_}aN!6uy&YVBLV$`};lt@$Ioq z_W{w6>2#wg1xa_``$OpVo94F86aBj#TMg3RX7VPDJ9Q|)g8h#r#E}6#C+6E-B9;Kk zE)MoI@BqN50o($p;;aAwmYa!~0#RTWLVersX~o}jgRhF1r7P6mk~~~YlnYd7ZP;*X z1eFFIQ&xZ)%F1F7Bcg<(Ltm)rgKWU%Or>yF7JR+Dp@u4=(c;y}=GVQI?{Hy2tIU>* zIf{8KL9udfPTbyH!F@x|1)|L*9`c2=YD|64T_eGZRSzk+=)^7SyWtrcL?%7tc985q zdJy{0I060~8Swa`7xI{!w@N%31PmDRZPB_kJnbG0%uksuUW{~Q(eGF+w!x5Gn741g zV>px!J7YaJ@z|=xB}{OBDFptiZIf=M%B%nOb;{N&>1LF+B%XfGgzb$z%+tUR*;HJV z%R|pPX;AvVTeOe?(?0+H)8+i#ESE0IQ>p|KpJ*q-on=NZ5&zzsH^+lx znJ=%&B3D!|X7_l$l`R|u!%K;yU}{1O{c~;H;(bO+EgW|&?D_IJpFo*m&gofqgO|=} zmd{1mC5K&CiJF5tuSt7;iOwibWii(%uC69R>GM=Fl$ys+z8u6&d$4`D7hJq}1o6t8 z4xiXa&c+e`A!9V_`7!i?;Xs+^{`LO&^B2Zwa78)`F`S;~rknJEy2OQJV5!6Un%N`b z+%W(mzmEqDiB=#apvqU5OC+<*^>N`OGpJ3Xm@$&$4HH%SB-OWHX7>YsdYA~Hl3&C# zZ8uliP+Y$7Q?JOm9nU~jf}hlkQ5oV=cQ!$hW9!RlbuBmzFQ8VK=Gnp>4H*oDp`|a!V&Xz z)Iigi!FTL2=))hw!2ywn8AL;4r-bjmt$i}|mPmx{+uFTm{q7wixl<9<4M7L0a`68L zyr7c)_K?OlUteZ8oG zSetyYcy{m^jVJ7e*7S>mzgyduh^Y2az`Go|#}tGY@GZ z=J>fIo{^lsIvpS1#q&jU#K0qRV|c;`#)8UR+yvvTJ>Wy<+x8@Q(*M!L{#v>C8naI? zdanGitdWfB&-W#YmkF6yG{sWG2iZLP$T(u?VP_9(hy#&_7zA1888xyQzY{caUb*!+ zOZkumu%=vWRe=0Fpd_V;gOu{h0wH3BrwwF~?uCktoTN&!Sn9=bf<%c0bx-sx#>J+b z0G67*Cd*uwB3LAM1b{C$=1WScdRk4T_4_66r$RS)1#U?TAHj`g96py=jt0 zWd$?Q;ad}54^qX`zhIR1R)0A&ovN_}#jz2jSNG=y{dV$@HlxCcFLYUG);n5E!wR8F zz$o2RMX^#yLP$D^v_Zknv?`egD53gU8UD)V@Qh6@UEG@Er z+K^t6FM&zCCT{su{qWBD&CHYkZ2LEajt3p9%$wgeA&g6Lkx@W00w+tOC75U(^_^8J zC~V92?5d&TELE&slP-@u*f|mX(puO-Q#hRAiWKy~!@;W^YeqT5la4`dLq$f~np&khp{;|%`X{^AD&B5p1gLnF<@S1Xqual9E`gxF0 zMKuGKT6C__Yh%VuaPvk4e3ARy#@3${q718o0Sn72S4n$o?J?tA?Fc z1QTK7%KTo*H?GeAVGfH$y!twVzp}NE~PaIh%H?sW1i|i^GPYe$3Sk* zi8z$={HdKNco*O0(aB=lI}qNa=BL<2QPU91!|UV88|vPXZYbL2{e{x;e(>tOD0GGi zd9go3h2maR>Xd8&eCnyGtkJKNrYCNe={=lNe}KitRgq5y>cU4=9tyS)pEPaEvJ9#f zZ)u0MXy9?S-X&+Fmx} z<~=!&F||gJW*ARD6#Cvt@afyxnX7htvofIvWq=)bcRLEgyi+|LalhxR+@F0hvcPVX;GQN^LwyUAd z%oXz~y!PwNBIi?-$%Z$m6qbU)-Pa+LX{X~wM}E&gMKC9RkIPa6+Rp0;5jIrVRA6?Q z)6ir~!Tv5@27BQmE#?uXGOW9CLkMbfug(zm0slQ&q0e^$HP~;kQX&UK;6A5bl{RZF zninu{pNFbpw@0$kkel4?)lsdlG^5+iHa;?Z1NOEy)uP1!1NGw|1OI6{qeY%mx9 zQIv&wW|$tbkn=O%q&fH~9<Y;#8_tJGiiQl%M7WVXPVJs{lRTE2VUj62)s!SY799=qEA~G`4>t&@onFc)V*Ux1Mu>ua|}jU z7$*jKGXZdF+CB0if{3Hp7&wO?%53IK2Jp=my;@Z{zSYp6n}RB*25_KGDSQP8jtP*S z!GPC}ZU;^}Ka4t>y-&J-?jvs~$(<@?z7mR>9`WVv2^v59l$-5yP^{Az zLZ_d@0jNG=IUAyJw0rEav~(bT{M&H8zjtlF^@Cln0O$=gd z28sZT={e|CLHxMB(BO12s#97>72^mZ%j}FT;t!B<&{38RqL|&G;lOiw__5#ojo^n= z*)8(&Pd!1GGUpZ@`E{OlV9|bzR$DB z58w33fp{`R+xVWdj+Y);phbr`?dR?*IQtL(!Abr7nT><_=ED;mXhFW|e#D3aTSy!q zAz_Xnvw89{I9dqbEt!9&_nhIE$AeAi?!kXuThcCa(ci{uQn~QAlRhy!yLhuYHx;FXD4lbvBb3mxcim}YAt`Q*2ZG9mrrsLgynsm-{DcM+yz%!{juH6$9e6p|BWpM9N+JJA?F@~U zQXWCg=7ieE(l0_tZGC>Oc@&kCHrTGY7d%b+EAYdyXPw!wdg5Fh@O*`im-qL~@h#OF zUvTY8Xke=8>8`7e|KrAa6Dq^QBqo1yJJULf;!klkge`B7f7Vu_RU< z3NZWS8C0slf)Hwc%PK&BhbjHe*>-!sA1m}eu!$YsV!)pHP?u}>?jDYMr<>k9p~$}L z>K8U-rfw1Jj37jY?Y!@2NPUQsE_}+W!YtwOrafnP1d90;!nwva6pkl83 z9H}WOlT|@DM1v)eQj?RGdLYUI@+OQJ)*F0_HJXq<+;@;eF6bhQ_g?U$v3Y+UxO`}H z^Cz=z11hAd&xEQS_@$SId3uR$5o`ir$xn?Je7Js#*p$GRr%Q;_wQrWHl>4cyG}@X` z%ZGKc(yG#NpLtpo&>zvK-8GxcZZ&5-0l;_tEWN4|Al3Gs(IMY8Gv7W5vU%Hc96 zzMaXjUhw9j?%~(U`7nTgnta=N;o7cr#ABlx1T(Rdq?5NzRQ(viW5AV|xDB(c5AgnT zhDJh48gIMOF!I;BaU?ee^%W4h2?ew4)-x^Gh(@vF^Bf@-B{tOImS6{iPLFhE-Da)R zBSlAf3Xjbd6g;|T2c@*Y%y({X_;3I0V>y&G-YscOrLo6D{ z6#rs}EZKXUmzs8O!{fzu5v5F{$?$x&!*GI9n8!pbsB(|H)$K$hAGX)IuL)$Y`&>}k z^vFQO($=3(-Bd3@G*T^4IMa=qyI9}2a-XhcFx{;R!73e{qmOj5>HFrwm%Crs89UsbP< zYo}CRuBKWYt29K_KmLkgq@JQbp>A@V+>qQ^hx9W^yaKUi@Fa(2v4=bDo8X$6MRy(% z>%gfZ;{a6r=FYvqT7SJ?@#UUP`!IW6|DB%T#fs}Q2z9ZG;#mvv{1*+0>lp=h`N7$5B$IUsQ76Da>G2c}2kB>#47+i!!e&j^=tkAQySpRG3+7J_{`Nr~G z7$j6~+WG~#C>lx7jzvUPbdAG9O|P5`s}ycjpD!a%)Lv~-(_$Wyz_ZIylCRm@%q!F7 z|41WY$?skk+GM&K(!fkSG+0pI^L%14;$0CPK{#>=xl<@#b9$DT$b`EZ_@m5_n_)*? z)8p)X24L8EaY<$Zj}Q1e7bsH*-ye#9=Oowc*;52_e&Mt9r9dOOXYiDGI*oBbGnz!o zAblR!Sor5xCdiJi)1e~BjWT7{*;@5M;y0=9jjua9%~9-CjTA=Y70>We!0INzkHbGx z!SJpcIch-lWy8^UvOP9@e8tlI{l)QZV)f!9$3ot#bqGeW^j(>PR-d>GFXSSMb9G_}V!9c8zKXxwE|kv@9L+Z+ zEQq#r`y_biOz&MUB14)Y=5&!7Yc*r6gPo6$ib=aXiKuO#R;~NG{bIb;l-Iqzakj#h z+CH$dr*e~$oHQvN`Yl4wXRIDkZofw3%vK1O6nuiz2A0SY-PQutkCed>JeZM1ijZphpmN1$dWiYev2-kDGHf{}w`_|UY&;UU- z+(d>Z27IrQg#;*)1}Gk~GWdPeoR9%!phi%I--ANFj>^#pklcB>F~z?%eYlc5$2Y(< z6jgGKrj2gFN*Gb?Doq%I;EX3fMm{N@-t5$Vb z8~X+_7cFs=*PfA2KyQ$B`JR%J)zQM5-$vzL3_~G7?LX9S9HuDPrU$McUK@*c@lT0w zSUDvuy_5dBn(xvc8cvQH`3Mz?8&=a$r1PLP*W9(>okM8SL1Go@iqn@{nxl-PvHDS2 zH<5M))14;pRE?mEU)Q&dijcx5y=n_zyj~E>Jht+!JrbJuDi}i2#WE*yOPz2AFbAmT zB#6oKT4~(Eg!A^?t(O>T=(;%qG`oog>ed%5)a5W7KO5SW;fUx*SL@s7=j)V=%qnUE zAZZ%buDv_-$5DTrQyI`9X~mmmP=0!;k?k+SfTz_C!G#hiA&3)9v`6o<)AO1)WZ#oL zy3pb}sB3Q~2KnoSVHWB=Wx_IO2Jw?UxaaAKgZ$5NgcN)wx2tyuOsrF)Ux~tZKV6$D zLDHKk$O@b|8Ipf_Vsz9%f*7hIEea66DP}vvl9NH|vvW+R(+93#S`ombTM*U=y zldOwZ$p<_DV0C1ud{&>6l3|^7-5WK#Ubsda8=}{gD)~uYkXEFA={LQkavi(jcLesX z!0@4(*WmW!`EYB@+D(#V&s-K-SiaH=2j%>2N&;BUWOC>$WvM}52bN#gbw9m@e+CFZ zN-f^=WAAo5j9<1GICiN~9DS=Wk{rHlNGx4DD*7mmGsjF;{x!bn`RI{={_~&7wxT#G z8IPb1(gn2NTEIx`uW-Pw9yxxF4_3`N=tT6a16a{;&iQ0rK|L-1jUD>QlqkPN``ara zXneLf=}BBHbFu*60umdOP^OG?r1D;qtV@mar;;9Y@*zM3kN=w#Os4AoxMg3bx=GUh z*2?#qh*oJvs3yzu7&W^5P_G7vAR_|aqTz_@*00!7E7=^a{v0yeKW8tPnrQMV z>XNlT8^Ft%IB(S~U6;&Yv6f!pdmngY)PM?O+}_Hrn}`|oyko@TS)Z6qQw{DD8L?|UDXCG z7_>V|o?=0=JnT^z$A<6O55eo}6lT(~VKT!GR1jQk|E;SBv4=>_MI^Z(SQ1neNtPT$ zleFim%{F@tgU0+OO%^!iXJ$&;)oezp>N#)j*8x=7h{p%H(}@NZvO2}F`3LVdsbOS9 z?>~RM7svIb!&!DmOBPSgb>iG(IdaY@DI!0Di*n)o;$UUph}Hf)#1k=L+b~#pw_JJP^Wf)qdIej#TFZqCk`c1$)1CTmguq?xebc=URUSgTcPiM1 zQfKH_LG%1{LH^YBh)%~5Zl@U(LRnhTE(L7HxXHm;>V37lt5-vdsvN8I{>|yfy3u-7 z>Un~ISi{jp9&lMbcLSRI*1sdGGfA?Be@3lp9*{?E5K`f&&wY2v!rn z|0L%onG142-4}PTSsr4`;irlhDY32&-?b5!rpChiqFlf{$el49Alq~yL3)Aen_-+N z-Q58Zk)ghDU=v$bu2+V25;W?~B(*f#wA2Zx$(YmeVP7@J6(J58?_{6qB-2$3?-EIs zwdXqhKU}?aRFrS{?yDjoQVP-~Qqs~P-QC>+L+2pfAl=;|-Q6IaLw8FIoicQvm+x<% zefB=@V!>i9_+$QuZgee=41Q|Qj@_+=P!ow%jb+}I4=LF6evtZ zCV{&duVnn{g0z_T#OM_kUa^c~@mxX^Qh!j`%3wh$jwsTPyKf0YzD%XOcd~LiR4%UI3$j!oEVeDc)H5*3!P;x5 zMzD`XIxaEOA*Bul9oyLK8zUgD*}zJt6lx<`m&^$22!gQ%G}&n?G;?aZU_6-L@*72h z;)6OtP1LKuL1kyNmlwuAu07Z@P*I~O=zxi<#~Z-z#R zY$_(W`ZaZBds`jCVfNd*>F%2bT^jyuX%^;H>tCD#m2A>} zqe@JTM#)QDgp$(KIP`s1ejts|Buz;JV<#iJLQIneyed!qPqK6s(64tcyghh9tf)E6 zGcMIgjnsYM>lKu#(Ej6JET{_JoFSpQGPV^C4ly(c;~zVI-HjxmPiGmpny#O=%3;+i z>Q=0|j&Sl>&-pv53-J_4506k$rGedA7L^f5=C8wPmfYL##D{6} z#l3Yz%1zlMy0>lYSl0N~n1%p#dRV%)9#OSqn<;!>@_Ur2!Jb9cGw$IPPc9OFs{`Ej z6wXB1x0ZKvNv}4x2Msbuv0dK;C$3kYvTY!xe@KL=TC2Ce z8s-bwnRVdHjJ34I7S`{!v!051-5faWNI2&}w+ng$D}+*+8qYsTT8CgsBi9&^BkQTg zo$`A~$weh)_>~vsZv($5Ih_zBbqPt$mE$Yr8};YMGOs%LUWc?rK_*oa_3A#;9;%@a z)%3w1KdS`tg~I-wU$xm7^?!GD;1As`#EiNdeJ?e)`R}?;pWW?rwi5(Y&bZa zuQb`4xE*tn+_sG_bC$sQl$05F4#sFl!rQn)k!^ubQu5BJazENe{I8iZtcH7U%oiJXk&5Gi z-ljVT-JbwY6_~rD$X%c5smphDSV_j57+#X6@H@ocGWUjc$Qw24a3KWYKQkwAjen+p zUvIExn7oBQ$%RDKQb@(j1du=s?vv-b3VPU-)hoa13j&cpvNH&;ehEH%m`S%{gP zmnX1-s{;SY^Bn}SputtP)UjkmXCsg^K}Y1K*$$BDg~juekMVu2&V$emtj|NTm<#oL z(z6tMC>1(y;W9?8b*4q-f&Qj%5rRrgWIYjw9$N1M$`tu%n{~8c*+Qh{*wbdK(FC(0 zBGQkN#OJl!$1QcKKtm7&P`0UB%@=#D+3n5+IV$6DaaKC72EInyNKA~QzC(71+9opJ z7d#2F8HXuX|ALGjYryqFolHIc4ZIekVCJh*52!{+fGF6aNu@(GL;4Eq#T?4ZcEl-P zDQ_|*NGf3?!mm@JB$(bHnQB?=nz|vI6~3<1=1WSD;SRWIi=_T3IXyE9_lDsV$s^-@ z{KL*t`u>{n)zi~ID!43l^fRxfh#W7NJ&>ZV`1Tc@od0U29eMkbs9SSenw`;(Id|Cc zQ;)>fcu8*=WHkLK9LINPB6lFOBc|w^WIiDc_k0N!#hqk2%LCh^0)=?xyW`-2HZlHv zZ|vwbCcO)-Kba2kG*)AAg|vq{^S72oGsSA@ALn{kW_o$7E`JLZTI;COsN#KRp&pPA zAKHKxZqKCTq^FcXZdemCxeBX2p;yJ5crn#q%CQ^2%*2OabZ}2;%W2^jC{-3tE6Z}Z z6_6sz&CYUfQ4`)fKv_&Kx$v`C1^YI+x+UA5ZbXd692_RA&-&BP*lcIwTt$0|!#(zX z>JGbqnim^qvYB~Li{(|^HtL{aV6rG7+@UbT*c{1c{3)P z#E&6#h=oM%>UC?4p1txbwm+IYup}}{fWFQ}wIU}C`7~#_U)LK)t(skzq~MB%;~Py_ zDQ2bDRZp3qYkgeC*kt&)3lh{qF7V5*u#QGpj$o`&a%~B1NT*JiY$x2^;;%ay{S@Py zI1d>MFsfr9(wrcHwowu5GZf{WSs76Nyld- z!*<)D|D)%%`DcDme63OU?*qgU@afczA$s7Q1zLw~XH>3zC2^fs zyB%z8grIlW=UOfEl)N8@#ubF0bp4FVNS^dqy9|sNbWVGiu$&tTWD`~@{qX=LypPgi zY~MRUef%59rfng^hA z7B(EEG;r*P6eAR>#vyfV-yv#p{SGhS^7ZeJH3n3~-P|7UMOeQ%MG8CgUEUh%yp7V0D15$$X1QqG z`&=>AIrGcUy9@l~M8D;HkyWwXYt3r6C+~9C7|DjSZ}| z>l>B2+NGmsD*fUhhVZ^%B7HockRn5sVR=HXsJ^Aa#!7jSixL%}!M7BfhmO_-6cQ2k zZinWw5BzGjuWOPsn^IJ|wG$+ca32J>4^D*jIR{;Um z%1W?}ozD@-w<)pHtHL7{&q#z_N`X%{Ey;nblbXXHs|aM-pwEz&Sf*@K0NT}9-VS2c zNNYMI+lyECTqPTQqV8sAu@YXq&;7?UaR2ABG2Z7<>%+jmpTVHQSn*sC z0<>4rPAdS=|u1p5g>}wU(>u6 z;q4!-Tg|cqgcdosHd1TaKbCXU@&mOqb1Br%s0!GGgA$~tpsqY)GN3gYDl5s!6`km( z+KdO&A0F}(x_wuZVp95?!Zd)3mDXDGIZwjzxNTJTu_im>v?-nz%XMo~e5=#<(W3sg z<*-tf76JhBVe9_r#hWarNs;bJmgp`Rz14_OxeQjpeR+N!k%YW7z)2-^(O{+1A^5WI z5%w1@@|MD;*P0up$6R&(WZl`J4%PRs*xk z&l|ij!*;YX&s9P67Hf&HN&m$r)&teW%Nu`YE_<PygZ!Oq!mc?dvRFYNGNHNIuMRUF=I`6C ziHXj$O<8syK7|)m?PuzniJLt}L?$wtv%w{@)k4 zbP~5LjsH5!cq|7&MZL)}I%8kMjI^90`iiz>Xvh864gI;|CrM4vgi|`z*SLOGVfQ@#Bw4 zhyS$oZvoM{Vjp;ONLa)6@fykJBPW^3bqO7aHwp99;6Coqt4zYI;vQ0yzQk(s9>bcy ze*D=o@Dp!oJHer6^D1u6mhWH&sxuSypR^7;_5YlK*><%owb0{O)@97zVpN@Fa!TajSAS<&8f4P@yKUCm#RZLW4Fr z!N}{jdrnm6`e)@uFW=bn$$}%E!!3F#3gI3)gZS@9&I$>3w8yY4Mc9PP4QW9$Ct!++ zQ#WQx39HbubAEa|mrGqS^tE)m1~3l(%#aEY^qR~?ZGMkc$2ZPj@u*=+)7WkOy>xXX z?og}3cDgto;(5oM2JzEOKuTe!A1EcnEnI_ix_$Ys8&sYD;HKmqiKF>vlKrD$Z5q(? zGBNB|$Aen3oO%L&eLB=V8BQbWW~^jCNN#0Gv#w2Il$OnBC zbQN~nd6Q1%Qj4CI95e1=ALVgZ`+W=989)d+MM@S=MSCQIAC6czLy}QYH#3bgPR}KB z!{M~Vyi&yc87#~?pszqd04^$z%~O&k$~%D0xI;&2TObZTPH7#vqHckZDk+;#W57{G zuYgWM)Rg1dt-He*1FSw3KLZ>>?>NS{1TfzB0(ie|&OMCE+V5j9u$Se~R_`yKvtBe$ zO^?fiSuhlpW3YbSCTRmmZhJla;g3*(u1M?L&AWFkC~=?pMTsXE&t4j zs|&25%4QCU-8b!B4F}|a9rlb7rF5onl)h=SdUTM&P|7Y6_efZcNrL{rH;U%Oin@`+ zbPumrtC+iogD56*(EF)zP zmZ7)0&Wm%JA_o5TMK5eHmO(?6|);e%yw;@aJs4{)O4kX3bDL^lPBs-6Q8^ zOlSA(A8-MVvP#;fda~O{=Uk6qxp)*__zbx41?fA7z7$b>xXkmMuO_=aT=6vq$Y6sE zFz`J)54fDlEQAUo#0na0ZjulGV8EovWd0uP(JWCI>8$}6%)c1$<*oy8VjJn2$MHn5J-x8$xZWI0A<0kphPntCl#aRFKGQEB_Z8krt4yBCX z3;DNsr_cfc6ncbRtul_;_mpJhlV2o@8NOo}_zV>qE;a+tc+3y7(3S6-f*jAvM>vuEhQrvwUcx+4WZ7;ed z3vCq|Kvnu-00TGd%74=<@& zqfJ|4qGpPm&~_*5b|?8GO0H5_96U8*jjVk}xwI~=A?g_Oc`~hRImz(8uNfg!Oa+DF zcW`7X=kNF9cCI6eZkn%Vv$vPcv?nSdkjX3iA`UGjn)#0dpBSmd^uCxA4xr?HuAK(*xpw%#xnxVcyW zt&%?L+rE8r;li>mZj#RjdF_`dmD8ZZC`{bySY7ufez^Yo9i-CbeZ0i>GIG@ywHcoo zrlh3A0F((KlTenXXPMR)6j+B0Aj1iEnG= zy|wsm3!jzS9mjc@d3no|6wFf?aar*lFIo{`@Mj<-wNOb?`YYM=XsKpO<-XLBc>E%g z{`S)x{DcReIo49xAlzEasyt6P4<+aYE!OUqLC%sqK1tkWYE&3C+`bw$+}oQB$ZjHY zRtsN-)hkpt!!QP-h-0hc#1#jc2VR{kjzRlFAe|Yon$?+QxMNyLm0U&D!--Y}zQ1wX z066}jo`CHXV9HCm76jMuQr1gN&YIcWcx_C218Zi$h)>oLMIf@mcVI-l#dI};QlsB{ z;}`hjkL1)PmG`t)&G|AVC>?6d`+3+D6vQ{MC! zr{OBJOIDy&s`Kd&DmfF;G2==^|9YEUQ=F#1GSh!4(MgQ?MfTxF(mwYW2LHIlQ&U~M zp;&mSI>Or#bkD63uaZCc^eQrAASLE#S!v%;NOen{C5uu9A6Z0-q`7JV#pGA%8ckpA zSQpHh5(zZ>AVdeCNIuSkA)+oCp948n)^ku!l$J(AalbgA-Bv9sh3g%hC;ur@V@fr~II zEqvE$IF~5d_v-95BH011!I`Ef@=X5(OGm^8HWt*S8cpkgG`+vhkV(s@LMoq?9I!~Omtl<`ZohRL%;PULuWRD) zw6|7wMzAy)VeMxhT!e8E7qCVb6&u7DH9k&;PX*k!VS%Qmx?gh7MG$1XM2RPdsRl0- zn(U9+>zI70`y}dUkTR_xqg!doxt(j~`*jE~VDwX7u*IDopBXYAs_eX%Xv#c~&om;n zA1fjW?_}JSW8Zs-H7v#^#NMb#;7=sX=LP7_NheE?~nAX^t)Tta|$AGPMtQpR~ zd$i|Ekp1=)%=N|%47a+Yg?!lmu1Uqh4{ru^1xuyv{*qc68S2A^*qJQcsF~U)O_j?K?WJc#b!-*t`9ccf8)D6v;u)L zcOh(<+{syRb((tlDfsQ#FmLj2YUDc;n)O4VIV!8dl|}wB+>Yvk;`> zSUCThdM6$DTjm4;i>*Jw56~~I5|IDG|OT2N*A?rTf<6!(*=V{0GSk{QjyBFn|4n7Cge0cVf7_&TJp<_?CUpDNs6 z5vh{|_6)6Q;u-^?S9!HD>Y-g+7ZH&CALlnv7tf~<`XBJw1+6op!ma$pKR}NVlJ?$dNtDC2trKgRCadOMV&?Jv`&ID#TLp3I|8VPoZeOQ|Kge> z5U@H#nD_Hg(DICpzmnyuXfWhaWJyY}FDCvhqn5OhlG4@nTF;ydzUA6f@k>j$uNUbf zE|#Ca#N%`j$O;?|x=|rCYO?uM^~$Yt^i4$B6T=6HMCK==D1ZJ)u?zH>))^wQOcaM8 zj6~-`;|p4*m5<#_ZV4^oG}dA`S?3CT0V$yM1?f7r@myPGwDbA`mGv*D;)2P&cdl|8enYE zl$`ungxV1A+ipo_$v%CI9r9nz`x5i|s3X3*%%x!kD^Qmlm}vBHYMC-e9otB=6mdoR zxrfGcv&Tb#b>eU zJj$`km>@1*%@~$*6F4#Lp`^u1Bsq=rOT#pxmO6aFwsDS4jg ze2}(VyS@^m20f9oAhS>g8`?b;0!jj3k%svpVSfm1^SjT5xDn?iO|NrO5me1Pxj#gf zD#&*ffSTJj*%G)rnLGKlP}r4hm3t$tnRX~ zxnwuQ7h}h0g;pNwP_G}4?8er(2+A$n4*a#hy?Pwj_7#_hJVyBtf2RnF!s)`4ZN9L| zhTox^J4mn)2E3i|r~F{4_WKFR7po|cgw;Gf10k{+U^4XD0a!M_Sk9GAy4+urM6bGENi{3=)f4K} z{wT)3%vGk*;b!Lk!sxj#y#;sr{Lyt5$la8xSI*(sbv#{G4(mT&>JM2rdaAu-5+mGD zLw?t0KX7x$RGEs?Vd`6rXO~Nwv*NmjQ-|U8kEh3ytX!+!4s<*SHy>B>Q=@xb6AZfl zZo5&njot0I0FE>b8u)9+%3=8mH-UsVKHwKD1_sbiSsD= z7z4Mjgw5(Y0j6m2Xgi#DsGX~Ri)l(uQtjY-zPL2TaGZJAy=%E;A|1`^PoA}t+G`QX zm1wD`P#eHTnfRRs5jM;deOh305dEA^7+jA6>S7x7g-!$GxkvF_B6r0$j(2Ku?S9x20sn>d1#pJ@hFKz$MQSvz9@qaghu6R zqEr^8+qGT3bpViYXfwdS#_p$pSkQS(b%tz?H`wU=nCwv^xw*MCmSDIFlZbovWp|Mh zGDrRQjD#O8WCr%F{K}YfrS_>%pR}VP6{)Fx)`zd1nj2Fmq&w>aVjOg#W=DT(zaqbB z={1s{w8PQ$ojNS|HsGL*F@y`rjMiZ%3-ADX1T^t}X%FV-N6VH5)O|V(Y1%@|P|ES- zQEVRk6ii1p8t1y8_zO6&-Y^Keh#jVnRfDCWo(*>!XpFn0(ENrJB4xgGsXmH?x4yed z&6*vbI!CQ_Z5oAj>s=Yl7=KTr?k7pcE_hyN7;ES$ zXIrt~a)J6ghj8a2k?y&JZA|91l;BlM=&2L&!LX5dLS8OXad{d1jPzJ#(@?NU4Y@Lf zjhPXVk9phQJSCQ?-9Yv!HF%5B1rx*GR?5$q3dkQPJ~^McB1`=yLT~3^L4rk@;+xl_iv2Y-^1V9KP<3Yqgx~9 zbIuh?L|F@fKs5B~pP|%(lx6d2B{MPsm=J%N6lfSEF+odLUu~Ugvibd${>3Cpd=|h5 zU^WZ+ek~!r_L~+dK9?osSD7x?*F!bboX0fStSw1G$MY^Ptoi%(@KevU#jLCGH)usN zY6IRqGSpgwH}CKqk@!1()*quRk26a|a z#Fs6B=oUVkirD*&&18SePI=OWL1Z?Ajw=_RI8Nk$@xa@~tXp%}>(;*%^ZMQyC@3g{ z8$IG%4a-lGKx?~R3N@A@eH}W3w83!~Q~BKX>-ONT`gi(Y$8v1U^M-6h$JS$j+Q~&o zea-&C;f!pKO;}<@{C4Tw(8RwtbxMTSBYF%43A+I5aOh&|Z76OWOh(a(|E!AVZ1B-S zHAU)BISvZco#+8UkSfTjJeCz24bq$?2x#|>CR}L6Y(w>Y<;dg99 z%add&`YSD#Wj!){H(>76V$GB})QWrIQDrlmd6b|m+UkJ1$f#t|conA z*i>q!7d}tshexZbUKzzaBH{GFcv`mAWW!`ln;lAGjzOa_DWRmhEc83^z^5Ny$N~m} zU&|w`eBIe$%u1M60%f2#9ICt(EELkOKSzq_k+tpSOY^irHgkA$YiFdKHF}=xnU#hx z!$;aRe!lY4pndRB(AYmsNxqxc7Ay z8HTzNML{%dR8UTY{G#57yZ($=AF`F#O;*Tx!Y~SB_m7dLJoPpIm4(ZFt|YhI3T&X} z2A@b#D6iL3rww2rg_P#R0IiRkG3esS)FM}YKc3R%G(WZ|?74l|ubW{zEOiR66T}{P zATlgpSNaj>MRQ(XY!K=u$rIp6xgw%4^?I{M364lFc0-v z`NSb@EaysR9%@8g_ivAfVKWsBCY52TC`wOyI4IqBRUX})K<&SHV z&g=e>5DQ|76?WUQCLSS6+FnXmt3SSRoo7f)YhX-FkVaLE$N(EiG&B81QC{Ow_?0@uV20x=6Q z{bgoUz?!Cj*GOEWRuH8-V8Iw<rS=fSwKn;X7l!&V5<_bmWxQ=|;%C~=T3&zh>D2i0g`>i_B5 zX^AUGKFINan&*FRO!arC@hPlSck z@;Gn6F0o1X+_3DxA16PS!Vx=~IT7%t^THme$2W|_Vw#+@!JkPe3+z3mAeV_UV=5qz z7IGs@Q7%UlDJhW5K{sRYXA+$<@aN!xx|_0Nf38GEjLC5}-&s|v0tW%m5Ickwk5#H*2y;;}73Yz?FmXW8nTi~QTGnKwPGl%$ybS3Y;F4t#L z%iy(Ppg(JRaj-<@b$CRGEEDGnR%WB54kxj(Q0_{BblvH6AkvNUR0+<)4VP!pVTJM1 z`XdKX2F6SN%h|7EkZQpjL48ZZKA^y{JflX-JmVd5Ny9!ZpJc(J=H|%i2`6O2A@$;| z-VQ+i;SgS0Ho3z9ZI-Nm+T*DE9y+={tny9jCwohC%y5L>aC9Vpq|LvB`0d4i@IE># z>{VT}F+j2A^{BX;l|8R!el&ljf5)s4=P;)HrkfXTW{I5Sqs*g9vq{=gUud}O=%8_R zS>hiR-?)7P#bOX}7plmOrCQE+?pa&fING!Jv9Y4{?930Bv%Lr!BZ!gxA~GwWd{u8G z%z@xdQ}-DyYWGBwk8d)~irE~(gF)K4TI9+%tLHjj%x%UiOQI<#S8wfJ&< zAR6-LtthLcUENj@dK!0yl$(}PY{3O^^Y%KT zyq)-78C#wvwzX6W*w6mfN&bBn);2!#ORpFWv5Z0M(f7ABlTCVmz_s&r6kNY4n|d&O;$AJ$pTn;Fa@*cLIEtap5!{0ns?OnYB*! zt^?~04|T2*8u_BMG@<&JfhdwBUiYhSUE_Kt6pU31yJr1}0pt7pGh(XL%PPCY(sGUogMtvfCN%BegbfwM8lyZq44rt7x&tNB`E* zVUAYMHE6><;h)Y6*g1bq&q2alC%<%=gJQh;>P6t;l)nJ4H5)JumdAIBSdV4DGz&tw z{*{*Hg0th`b#aHhZ*yr8Q`Umq?Uvk_{~eB05K5#>RPx)m$CZce4qAxr3^(J?!;&r4 z%a~Nrws3?59`MIiifJ%KE7y7GLGOZ@XavsPDmY?d5=lf-#`W%)xT5nImwxNE)bnz9 zAiW4I|KG##X+!eI%Nx=G-g8f~6dex`N)P4iZOjIM8VZ8H30lfGi?$sh6`}M@TKk&? z92`BXCe8Vr98ILStDo9boa^B-9qjzGAPq;t5hl7EQnU%7@wA}gxsoXn4P}n1KN;MG z6HKM8w_aw!R}z=wXLZX{U7AVBe4m1nqNbXCKd8z;cl;?Tfo|4-52x1~HgtRJKKwKB zxxvJi6_J?;pYb|Ka|i~$l3~5NX*N|VRTWR^{Mb~C`Xms5s^!EI=D70CcAaO%2`(fh zq9Za^-dmfRS9bd)($R!#FNZCjx#!YOhQ1wh6SUuZ2HHi8;dh8UI}cYs05$DyKn8RP zmuDz7eSe-Ptv8wa<*rSy7+h5JF~~EZ%vWRosrsfGza_>FnZ(w@k2nl;tX6@aHEz*S z-`?4mQkJT3h%fPoL8C5t!%}Vo_LSP(;YBiUA=FAXDN^rGN=>cPDrQ`BT&_X3JRN&` zxT7O{u@D5W!@c*H|B3t0hsR$A&ev97U5t`gzP07j?YkmhZmxXfOaZv$H1Q(6g9xas2;5P2Z$#2VV{skK|Dl&v&l-M5;L`UgpF0-q zrtD_~2}ZgST&u_kE~XHBF-*GpIGooF=f6>ldOy@=T9-Y3pL>n&OU};Mv#%5=7M!W> zy~YKZf4Jc0FC7D>yOi!0t@4kS%YI49F-X0vMJS_Q-AyG`1OtBrGq=)G5jK?p4XTd# zXgd4Nr^+ACOq!XY%1*q)U1tW@6F?oK*!bwEa+Y*9!roL#Q}|9^o6z>(_r?MVaHN=X z1Z?pnFysMT3GviQX>Z3bo;8Ooc7G3}Dkgq@Fe>wso%r*!SuetHi<~ zq74d8bawi*oj6t|@ZZMCLrkBZPPa&&&RAgR&;Rgl&-w4;AG#SI(v531BRU-B8Sn_c z=Y~QEIBa48)L$tKrrr)NJaREC9QiEQtP``^>NK3;yh_2s!UC*8xfko~b5T&yC6NZu zc^|4CPCIUp7o$9iRb)ZC)zwV#(Cink%d-781WO6`tC=fM_B8Kubqst;oBu=7LZ9Dz z((>Y#K0@=>g-R@>>ID0H2HmGs_!8>~3Z{nLO0k`<%g zc4ZAqd%gx7u>6ao&(2TNh1Uo;6L9oLo`Ru z#^2e|-)dBPnEohuHR{?ARBfGhd=^~bF}CM??nJCP&u~>h|1d{Qt}E~0ZyB@*{ya3F z-GPnWf0;kz>p?ocf(4U1G$OW?;-@B`=Mf(TT`TZY{ofElQnZ}v+7!WY}U?=KNpx2AY_wTi1miZC4 zj>@6)%GQvH84@EYy^Rn1l9H`bbu%eIbBA zB*DJod-^#K|27@I9lhFJ@due;=ya%x4m~pkCQ7cBm-M6kufB()8A-P%%jdLrr6aS??L?uzi(9EO^;U!A0q46sJ2yK z?j(eDR3MF&LJeTfZHHv?NvF3{4MM0<%NWyi^p#S$Qu?>s5)&F(_rZzzN!Xq5R2Eam zM}@gNF5)Q;Fv8&v(rcg+0M|9O39G-%Aaj$_n2%P*zukJ6?!{A|x-pMGl-+sXgL zW3umRrq5L4FeiUR^PuD5xZ->HWaG`;(Hg1f!R-_SQBWC~U>Xc4jVo6n#by`~l-*{k ztr}rW_~)?t0E^VpQlr?-i$vPy#bqHx)oHZ1mI4W*eX9R9{Mz4PWEm1dr}$N?O}cP8 zRqCn0K7=JY)Y*IJesNBFgO#reZsEVaUQ|0&gqbipLf7`RGK zmiT&Bdi=K)4rbjNINX0T`W6Fsjc}e48C>S@NrQ91Gkn0#d?Up(3l=tpNqkWMH2-*O zhxomGT}Swym|F+fcR zEo`>Z3&@&YDC(lO?aSK6C;d4BNjOluh{`&V{x#)yPxClWTN7%lgb?Ys3!mITGGLFV z-ujeORH}G)tEXO#R!eP~Qz_vP-=pM_XGH!R-yPx7$#M6;=b*mOgmtXstS-i)@HMNM zZTGc5>S#x6WGNzgH4%b%{B~NAM=Ok0C)07_+avp!R%|oYF=cx7T26dt!5+tv<3lrB zO*-z-a#&7MhakJIX9fT~DX9ZmEQfYr;LQb6E~hP@hU=Pb+U?Zic?b|8BKBJU4&IvJ ztLytk$nT^;{P4sJ9-nVt_^p+aSRrowFp~VR-g<4ur*8X4u0h|~KYkc=d-7*38nMGU zYHowg)-7qpWq8*TV3B6%}`{j@sCEby4u1~So-Xx|V zwnb>d3SmLoIUdd&H~&8N5a`9>!T# z1Em8T_Wz#s&4DqZsM6N$gYtv_BpoX|C7}2RIJ|2kHIztL!NPG_h?O&<5H_ti3n@HA zmbxH_N{AnjViGZIY^H4`OPm^XBj^qzZn!Syx zVRFD>^|`ij3vmU?Ssu;Wne^wCi5;q-0m?9DF6FKz%z3Js*b!7oZhrEiqgSRxx=AH$ z4CEEJJ|DJH-)zXzY*)9BcvfgNmvTB=exd~hu}&y==12U!H}lMR^f$^cu8}JL8_oSt zq7r(pG9^4v*S@mfFv+(ueTeR`buVu!Al_~AQP6zouJofHrQ*6GeZRY;QZlNUio?FWO*jL>W-y!Y{Gu|M@Z5c+wg{owd5!$XKPl2c<>Ph(G`P(%T^$Zz2w(BmB{to^!O z9a^T*i~+9nTqV{2S`>Q$jp8T$ukiBWxUqDKc^OK<=vv)&&3hU{VB4k${RtB6unB(S zC|P&8T}o)&h4M8+PQtZ~4*ZQ4^IByqEvp6K`>s94JS^Hi;M@-D-wSh{Z8PB&(IqNV zMM9te>F(-uk^0_=uRyA&`N4-yw_PhR5GThrRAz)Vf%8=9&wajLM%UxMZQP3xgbdgGt}vU}rrS029C-&W z?sZ0YP2hK~4_+DmoCBXukROH@PkLjFV0lQag3|jjj)^Ae(DN_IY+is9SGZ%1Nb#5#+th7Nt zaQNJGVwx%2*HP5t7yXTvs%O}y;h3`IOc1Ecvvz`Qe0}hO%k;9z9(|UW;8po4E^?YH zPCV*`3;5UqE-@~0aozOFLikLxvhp3JZ5m8s>r^DAlUI7hqEsz)nLGNJEp}dd5@Yj++|JGu z3JiAHPXr-E8qPPjDWFKlyXImg_^kDQ>G(QNI#IpiDmBBqhH784mlv1B*SQnECMsBg z#8>Eh5^nmB7;+!+Tq-KrUIr~wn9{8Fu^r&(T zwKg=IKRB_kfleN`HX_*u6Fzw-zJ1nSY^~^$jeBSGm2tg({r)qJoZ6Xfi3St=s0pFv z;IBGE$q))=3~7@OtDX(G``_rA`M%NUMGH*T0>be*9Zv@J{!ZrzMu@!SMNpu&9BJXuZXsgO_)^K z@P~G3auynfU@JI)Ly04C>Tag+mVVKL9=iGyD-juHjEJ1S%KZ8JhN+_k1FO{hQe9t3 z;P$4wbO+gxtBj$7FqL>?n$jgGyiB)k&EG!v4DQWN;Hh{#e6h-iO;Uey0bO!Vg0zz~ zM^Z_?G}^~wEkehe;N8To@Jl)r3Mxo{HG1JxTlmG;%TIM;vDq#!&jP9`!m2{kl~ zYc5b!*i=%xidbNfs(A!7ZvUSpGNHK2dVbAW2~hKQP+H;FswE~a20Gj91GvT5^?q$0 zx8VA{HtS`z=F3FwZLCU{W-ULx4zE8n&Me-M`=4L{<0&2_o%AI`wS?1iT9%{O@Vr#- z_Py(5m>yjZ85vzkq&L8awVgRsDpxUn2Wq=ovfSpL$O%B6{JWJ=_m?oq*5iZ##?f(p zJyp>Qde?z<()ghR#Vg-LGIiP-PmVFhQm;vO&PtDX0xIUlDHS3hM^QY4uw&6kDa0e?y_+Bk{vP*eEf}NH?Vo$y=xT` zOe3MW@m0_ox!b0Y?ft=_Kp)2tJ|_XKv7bD@e8iM@EpNX34tfV|CHH%*0=DOJ+P`@x z;u84eZ5`Im2+^6x>zPI$x)^3{!m9jSMoH_N%VaHUJILfO4OWYKc6b(J*p!l9Nzj1D ze*CYTnW6sKr1Id=D0!XXu0t=~=oiWVDs%k%Fws088bR445w9`Vs*iI_82LW|l^2-# zn#Qi<-VG%Wm#)eZn#22|1nH*=)jr<;U?~Gn=P8#+(nff$tF`XWW7uE6NPgXic@) zJHk!5x%kPkA$|)wMA+!4 z;6U&R^$6FT{GAT_7a)nAof=6Uybm}Q*rp+Ca8>pnndhn{FEbVkr58plgAj?>v0od` z<`U~}v{UJ5oqY4(l{D@+ZNbRw4sYdbm$zI`(^m9uoV4brT+dTFp)8Ux>RekI^UsKe zq;IhA?&2jgPemLZRlc<5yBvR>{>`daK2%gim-@TtrJ3XMaIzSQv$MFdrUo3HSG&@t zjwSRXVU1Tfb^4H(*ue%&>y0Q(Ka|94XIkJQnSX8K=`rs~n~t&~NC`bw9mj~U^!~x` z>f!lP@)i%4*lfnAL+EdquxL>+wN`arJmUZX#?mj&t{@vUadw;?>m}?RG_=)&e3oC? zi=)^eA3SWp*i8UtWt8pLWbDQ-sJ<^a^*covNzydaJ}|aJ;PuMM<0D~Qs&}UIF+WXF z`Elg~pS8qyG1NEXXPxo3HZf3k)5-|Kt*~@xq_4gD(EbKlnjIiU=s0#kC- zsO%!^Jh5OLb8`aW=MehiD&3gbv=_uUOCjiBP5iwpFA`c^C9n3sLiV*R7{57txPh*> z=>n6sQRQ;5FKNU7DBs)WPQ)+q3^M-4XKdu6jVI=RQbxYMyAdH4l!2?98ZlYw7t5M#%U!e3l!*@ef$BVzuALa7 ziIA*x6}+Cdy%LG$G|lq3&D89JfTb6Sh4<$-Rttq9@@!rWRnp_9g8_Wn{91g zAN>om1lfMFM44SkMUO}+Z2TIOXuLDIXE0%Kry`_=D1+Cm`TEH7QWIY7z<;=#xP$CJ%YVlC-nsWWnCy2$sPhrQEV<>pcue$)nt5mP-;Pcg{wn#%HkmuVhfT%E zv~U}aezOUwk5Xy2F9=*3Osom*(7J(gQOH#Z zQR2UN{wzQSV2{i*P`%l)_m1pBU2B}eXW+to79iBstKWp^q!ss)+{1f=2;jVG0=|*eHKl}4#pIGy=BsK$F1rp#$P6@#E8%R0+hm7I-(}a zBiFN+s7$$~HxRno$~GyjuiZ31loLDR`O#z)XBYv}`LtS`csCS!`Qh-^`EuJyS{iST zKVzbpuI7r zEXVb%J=6`%jC8&mtZHgE;AMa9NB71DIyXfhp&RbTm%UD09m3qj-ZEq1P9><#IgQ0S zY|@sLPUEq_WabDByJ^qtklhC!2VZ?_voA^XLrbB8ci>)^tXA)pXF0C~;>PAXP8}J` zy7GJ|6BtDNv?IDpl$MHyRrMMiA26A`QtaRb`>e*PI3wsW9qV5XMicoI{mcoK2RZ$) zGz0|Mb`e6|F*v(C)@4j4frExW`|)@d6>j3% zvDfjrm{Vbt<_@5FPoM>ZE8z}wyC}e7Tl?l;oWF7G`H;J0{!3$>y62lN>WxJh3cLcJ~MsJnmIR8T}X+OQ;&Y zIp8s-;enj@{*c(4rarCm2veW9e1os^DwS5i7VESnrFDm)XL9$uEUhUI*>!>m8`Z;) z*w(NUx!4;K%*kDUzOmWf;#Rc{I%PoKBs(~60Osl251IQkd9dAN%zi+VoAZb2Dog(p z!B82G1j`kHL^L|PX*qLimBAK)yNY*Zd@`QshgYonEg0LpHcXLZ6LrI|Rc z1X?tTu$G)R4&}Lzrg~$|)krGd|q|bPfw)4X# zZ8ng3H{jYtf2blhHj}9|C~ypIZwec%$N>Dj zz@+lfru_PU3>jt9>HlNXGUQSRcqp6y+lvvkr+bjx=R}fbf$H*S$*pbS7s4mtu+?nl zGuNL)^iGas&Cwx;uDcccfW00JGcpFL{sK_&IF`Vl1$6u4H80v4%tw@{$VG8i=uj?kD=oFDsHZELSmX526b&>I zm4-W!f&OC&7J0N+FNdE@X}*0?@S*%yef>;z9R+zv;~PpZ>4IktFW>%sq?;9$u37+M zphi9&7^G=XO&Xc5Vl4Wnz?+_mm=nf_C5Bl5)bMg`>TBM{&kL%iUdVJJzH>MU9Agnu zvo;-O^1KHnMwAdI=az^<_Kc5Iq=)FWK zJFkmJ$(`$mjzV=?aVehGSP6fRW6(o;F$IJYTu_85pNr`ftSU-EUO0|hzMQxjWy02W zI_R~#RXUwL{{6TUp{OtNRxQ)#r20oYMa@iY6q6v;iTsF*%O}@G936>U@roi36iVY} zC#wT@G%-#x<*0OY@fahXUGt&BCVw&UpU6eWVFl0>E2H8A{3H-NN#-89ds*qDvFs+9 zSvl`sG5n^IV_uor|6@~;k}4k=fAi<*_UCX|V>%4McjD!@eb~#BT2WnC(<)CerB)_V zx{}k{5KymZ7A*j`7N{})xyheCN_(aAxUF|}8Y*bpVBGR_G1vjG9@k@r`LV>Ha+Hs^ zZZz}Pg0ndmZ6q zF;@VUy-uW!8OcIp*KpMTlCY->c&zw`UX;n(eMZ?ir`?rP=!k@^hzlXP`t$}Q-y0-P zmb})7vUr(KYK&W_Ukz~toVT!9hZ=RQ)x5!Tfz~yLwA)kPhhcTUT#YHDHe{UBM_H-y z@+k^|%sV-Ee?qNxnog(`Qqs|+h<+SSTyitFR(R9>hoJu#NV|jdc~RJpf5Ym}z{-`T z+goa0<~I7?|9!9JC# z6f(&VPlr4N@YK*W*j$L#-PVJANPH1OX?;g_1=el)qs`X**6t3YgL5OHOKfC8$nyD0 zb>-%QTYBY!Z2b4R_WmzyydF``T2ts zwzl}xGPQnn1u;a`m7#gA?7`U{d;-GZe?FY>ZoP%(_Z^wd2Wi?Mjpo1@ zc|>*UAiMHH$Jb&<$Y!(~F=HQSDOQ)_cD)T8cDN+K z=$6-RC-Q@3ZNI)>aFD!rwIaCi93*m9O>Q`)Sp44(<#FIG;uC7 ziIE0@zad9-68-h= zd}(>O9cSCm1d8*A598D&0#Z|WR=2E1?tZjZ?C)l)moVOyplfAFU7dbr(GHnQ7*FXl zAgR|fp)UY}hq?pB&8AWZ1Bajp8Sz54Es{8PcpIm3;MRK7`;hP z*21UYP)=U@1s0Q1q(HGBKK+UWg@zPCe0gFsbZpVE-#6L3rQ~$!zQ2N(&VhzXj{PF? zk?9z({HrW~X!PszCSH!Aak=Q`Mm(kT>w@UwQ3b0NVpDeWWADwa;WnX3q4rJX4t%R5 zRhKn>ytY};4eTMq_ap`sb3fpBL4MWXw~u*94tONQ4v1b7zv-d_3w#yIP1y5+zaQ6> zG%?M?66l+h$KjUipfL4wXx)cis+^oNBQ2)Qa!ceAlh8bXoG&RdH!mZ%90eznqV@W+ zYF=v?@61ZeXHYEIKR_q1NKd>61#Z{qki)QsLuZAfxlIMTMOpyRqyzC#aM%F4wnUO$ zdEywO!RZezwY>TM!4zVpZO1tH?SJr5HG^Cuq8pCAW3CCFPp zxa20-D5QtAdEKp#GCaPo@80;#xp6_DaNzZCsZ9zU_D=EK>m-Z$sXwgmREk3$hK2Dp zv8MdHWOVz~`={bPo23HTVR&gg&dT%aJaZ!^3D}x$$VZfsO*H#J_kCh#izl2K?-n! zb@exX@Em@UO4B=eOI9x~D{*!qPoJ=GJ$?mQ2{vth(intcpoyd9M&bJ>`1&|5?I_|(?)x6%Ca5x&Er2kdXg@S#Wrd9%jw<)WY0 z9~U=p^bPKFQFPphDUz&D1tiYT91~T{WM6?hGn9nfJ(xarsdIX%(Lxr}ck9Cv^^D9} z*Y_vxa%lwep~z7+tC-kG0UEl5$t<_|q;piSIq&HY>s@iI->>IhL@n{LqCz=${g<_L z8af?b{mvr8`E>j&v?RQEFG~&$qma*i?T#E9wag4X3qNPrIpx;$BxcUG*eKenIZxes zZ}29L49)V}9cR=MWukrDH8lRUH*0bb8-kylwJCxPL2nwK-m;KYt6e=;rpctCc$E}= zP6mzYXQxC)l-$+cJ8(1NESU6z2Rw4?=SDdV^o0e}hs|JmDZ7 z31xYQq`r_S@j~}5X8Kba9(-~xBDsF^3jm~+_klI$JIhDJMEEHhT>Y;0tvMoHsM017 zSJX=j{gv8Tg!=Wf6k@B#dY7~(0(~BUGcXsAmP2p@Ux!IX`jsk%GheS`gA;D}W{FcN zGlzfk;3D=l*NJnlb;l3m))Tnns~fb9o6Wf%3fIyYpDU9qqK96CO250v$G;$0-1S0^ zf}l+d|G6ddW)o294%)E2G7!7~*tB^^EqiWiWU08g^i^@|w{832b8LGiEf9F}HB_8w zUJ;t>gMVC2)8=o^(xt2;K14gEA5_Vy=2nfEIP*70&>hR=ll!-ab~YtHhZX zlxsapcCfd9>h-3Ti?=Ywbtaru_>m!T!1h?@)4e_GjlJE+Hc{BYboG+vtN@}!)&4Oa zEtThlr(gbs_+>TLeAUW<2;L8YXIj&SJbiUrgwRxG>?To78fH4=mIbdjqFjOLqf2}Pp$?K} z(f80GI4Ndc1)1Uu^1-QvqN3pN+cc(qic(LF&8!BgE)g~JB_Vv|VMw91TVBu?dferv zc~J%Kx~k@CgW9!SQ=H5pc!^LTn1a)Tl*v~&ad>5g{PE|vQNXl_dO(LV(=}!HOdeK! zS!g)MHZknQO@eIN=+d|cD}{`HRY;TmdsM-#9G8hYq*da00EM zcPV5H-5eEw!|$-NOW9$IZonr7Dmn6^2ZL#xryx^$;$r(uPH)y}Ge3@U!ORO4uw{(f zN-V_)Ta?ctc)jS}{STfy>}|${0#rRt?wK{-|C=4jM8ecRnAf#Q9DPPG{v%H!9LHV$ zyKacep?SeCYysuGs?iu~zVA3{Q7;h##+0Yuf-rQKBC$HS&P8o~%N5-XytvB>*6nCuxL?d4+S|`G25F2NrO2hab5Y^{olTVd~Oia-I_S==I;=@s& zb(`*w*uJB8tWz5J+sV?|ZL-{Gceza;yO%o1KIpN2le$?4!vE5E05L1xRp@+s5Zz+M zGRm(o{L1}+`}{a5*I~WJvLQ2KVev4dqGS2k z=Sa@&2rO|V`v^o9big%^%vbMY9LbJ-f4-g$;+gZae|9frB1<~xsDe8fN&A`TGcsM- zA$?zlItuqSOuEr+5cYmsU|-6lu{7i_w3=!6^ked*`jD<&*8W%@&05>VF0B4=6Azrs zcB;{O$b$^2Xdh|cvp%V{zvU^g_t`wUTBv9opP5~_nx}0z%7#Gq+Bf${oZfUf{;Y7l zQpTI2$;Kv6^J1J`E|7In&QCWibgE-@Rrc+NIU=_!-V9B?{%wO$4m!42K1V#rUVpJ? zUN#;!FLD{(@l|wdjAsh_GSuy3pEBkPrqBCG1g~L|JmpqSE+R>g?bht~1o9{JwHK?> z2I~ThKkR%aI&xf+`xJc9dUT|>c!ZZlq>M)rY+lQDh?vz^!}u* zBOhuV?d7~xo(1^Er5EkK&+;xC7!_@(+c&M4R2HIL}@Z|y?hD@A=gQPd>MoI-xb(2`| zShE{c%_pdlq5fUC2)vw)Bc9+Q#%f$h_E}F}c*N5iH9LnUQJ=}2@Da~Jk?>1hAthMZ zDUTV*Th>|%Iss%) z$eJ!#)m7jR4|!-QPcQ5@AKL_0;oo_56VG{;8d@`d{Yk0jajEWqbQR1VR%|ZM9{Ol93fP2L?XF%?Ih3)i@Vrv(>0X zm&1OX1J0%2a}a@Zrk1mt<*PqB?b5EQl4sh=^E}V`xT)Xnh+TBZDs}J|$g2GPdW1IQ zl~n-7+xt1Gk1>HumKj=dJ%q!9jMuO~kw07pc!)EwbzCKJEgb0k)-3yM=HCERvA~F` zk?3Ww$&mEDOi;Of&e`yB^HCVNFpn^;i7_|h;SyBL^%(cn5&>JSu*7$Rs<`Xt~e8nR5A*faTNu@`g?Q3JZ4vBHIKsQ)%I0rIjMP(XMen|nL)qBrIsKnE0;GTt*;fjb-E^Y8<%wNjSkkpHHb#IIIRJrkLkzo}Zk1Dlt?yT!0{K zUnY|xHJgC{iH^V9KmI$_-G2ewL9Hs1H*g>qZ?S|IP~Cg3!T3k9^eKxOQxe5gGP2I4 zA@U__=6IpL_YKJlUHnG1o2)eGNMtYeOXmYhDCWT(qhm=pUs5&;=d%8`s3XN@pBYIo zB&TZQ3#bdwVvYnJGEIH>9VeX`Ct1|R{P!ebD!~uy}JOsj%P-Zmep}DCSF+e;0MzIkrHvv|Dp4FgaVJ zrr4E~MRc0%zG$eaVIZCye`VOVHFXFN#%xM>Zck@(I@J z#~6I}Lq(QNVzLP*#AT3S0v1Xqvp^}>p8Zh!eQbt9%C>OQYD`K>o zIH}?4SVy|v(L3R>Zbz5ky+@l4ahBVwoA9no*Jj2l&QuA6{{KHIk^_Rh(oSt-uhgfqudNFf;T_!XIJl9+mP;=^)dWD z3%A`O&>2Xy+cx7j$c_Q>h;}Q>m&|fB8*t)tl5n-Udg+Pm4=S)VcSl90G}@6`yRgI0 zo4)^DMDOuKKVjJq)P70YL-d2kc96zBqS!?kP(z0G^UP1#pJ;3J*c`%$d*tN7@SVR= zWpYmKm1lUDsu-g6LEfh`j0)uPGrDYg-IPC?9REPlb$wQ^`PXhH97eyco0Q666#*#< z(gzsOTLt>XWtLS`gnN7^FF_I(pJ}1`!{@PqQ?%$p-A;V=Y_FUj;T;PzHbZt@GktCX ze8ERrHWi-dfXa%S{MDQ$87u04FY*iO@?^zDmCAG(ZhIO*_i_dPSY~!9qMjwAvPF4j zZpQ~{atEu(i$FSRAuqbbQF7~Q^g1Q^tt;JQ#ZStgJgo;sTc=$lEUt_TE6{8XdI9_X zPQUGtT`%L+rgj@Wo?HKNc6^b7l^7E*`rCT4XdWgsftCkrqL2jJ|3nN}u-80T6jx}X zIvF!J!972aC<)T>&ffzs^i-p6+aOk@;(UG*@}+3EV+M#rkznT2A^Ob?_OyBg`Q|q8jc}C_~_Mo1%2eIZc3NXnx{YBJ}D}h zu@YfJ)mS8<<{_WGAb9kZ+)s zsAUo%p|n_2Hw}F*qn_7>xk67zb(BAZwwCVr(BAYqb2exeq@?dn_*Ro1tv4CU|L=KF zPid|yw?+@&zc))OBTN1}%a)l}rS)8YfUlfUN|c$L&6Ui8Qz5fU;mg^qpeG)%A0L@W zFuyBHyusSP8LzZ~Do3Bn;Q8hIl$~Yx*IG)1cn*i?;lwYdpk{{SUGj}YlsF|%!-`G6 zrSwC=Cy_y4EKbfIHar;~X{xAiny$&UXb6`542x;z#!gidb`lFuO{PL57N(mYtJo2T z(h)S0Wwm@-eQcFTJLc~6j=x^@V8t8}o1}waoj7LJY_n8*F@J}MEuZhzzx^T+;6i3^ z)#sUBFf~@0uvman5tlXfZnf4B`*R}g(a>XYNO_aVWc@AekzVG_e4-bqGSfzHQ>cw{ z+xc7{aq^%kP(WDBimp(GVj*XX0=sw3P_PC^3B^W*oz0-Bf_ zqMs^wot{6M-&O2+_}E$7kXO#RIU8kq+|=F=@&X!GAJ*91-t93Cu`2K{N;JjkU#z_f z1^AvOqSCDRjZxl_bR0;q#}RQNDi&H{j&}u_dvt}h)D5Bmcpa9uo%<@xO9;41Gki^e zTw$sp*B}aWNI|cz3{N}CCJ|1Bv4QJOiO~h`vCvT;yTws7HP0p>z`JB6u1bpAtq7lyQQw&1~NrF0K21zkd6yba5Lv>4Cj(cV?=b zu%az#Z!4tlo{M%hGjlN=d^a%>tQ6Jz3RQ}npnfRY@XTx1{HVz7By*sdnT5!Oo&c#mswh^=Lcj$_^{=3NQUW zxIRD0i*%w!jf?jb>pvNO4Vy2(%#-d3pm$= zZio%0x-f5={U+O%w~9ZxJitwS_=Vh_k^NNvJ$M=O!e8p2$^TyjZ)GxEl zTG%8`q-H=PxPNhpcRzTq%iheY{qqwW>CaEBx~gV)BpmN6w0YCV|1AnkfKn$8*flVT z>Sb%<0Cti{_(o!5@%Q)PC0vt;Qp;H0-kylPIgP_Vs5S-x9+g`0<{QW1CkY*9Idv7y zx|ac_OF|<)JHTI1LMqEU0k^}#?^5ywsB%J29H%X2`UqK_@7eW-ic*)8wS~@uL0F24XL0d;q~~h#=8$Sn+DMPa~aOI51udKbq+?-yuM}&?_WV^(1DX8%j-~ zu61JbSaB{0xf)Q&tU~HLl`Z=sm4e z>*hy$1ZXYiGas+KS3J^u?+@%7W_^33+)iZ5g%|Q|%iRy>6MT_>Aqo+rpvl=4BLn2$ zva67a*7;-KGmb_L(!q`$i&?vNBR${Eh+)3t>FZ@fgYyNQ!^_X!qk52|C0v7@^!dx# ztHT-6+1Cbh1%TCR+RUTKf{we4gTn)T_mZ~#_JgCjxM=<}>D@?j|o}3K$3aqLOTrEstf_d4oF~0rp;Fwl)D6Ze`!j{A|x94`b9r!9dA?tNY zYOI!5cGzCOa7Z6FJQqtjdOB62IrYH3XJQuxjTGaGqUiz9=feXAZ~h?PyNcu<@M%7Q z%^%G#Ed0I@YTu$?ZrFs5(5qMj>k3z=T}FormHG1flnZ}cY~Hs#1|V(60E?j@Sk9I1 zCNNQ?qtdlmC<$@)- z4#CHhzesyhzQ4cxtB>jQ6LBu$MS0nY@QHBpp^!uf(Hh--nim?p<2VR}S_>C_WYqCZ zEuhadxBz+`hLHoSi`bL%O279q%9BsIvhN2xpaTbkh~bxAickM+vZ8ATc~O41DlzFE zkYx_S$--17B8w_wQ;x}F%&wM!n`hierM#F8na(|^19+IBKxgl#My!f569cW)`4a2V zEAi4Lvi}^MYfd8noie#Lnvwsz!i;v8olWs_$K1=#)H&Bf-e@=TyMAJJMt;86RZ#R< zp~<6hz+dz=_c!(cu8WDe;n98O+CNq5hsGE~XYJ_Y`fJcmNf?^5S8XLOdFH;bbh|L{ z4LqOhz9}Ka&RO6_ocwl5F!SPLhV&oosGZMIUkj2v2Ng_}3vnEGO7t&Bakh2yA~Pj- zB8J%wD=O?Y8(Pfxl}E$-Y|CqRt^%&x0u7i0G2CI8*g#k3Kg%XO+2ff7 zu|u;jd+({wAl5L;f5P+IGe$eV@)oWnH=Q&4uZkpbbk@|3PQTUn>0`M>Er(mE-Tq3r zvLo8*$1-@0nrgl#+$hVle5n=5(;o{s9pL+Y=7Vhzzvp&Cyus0{MLU%6f+E}P36Rs8 zgT>%mJltJ*tSa@>ZT$#|Bqm{Ga+Ko@)WMiHsOl&>pHm!2QiG6=*ZrkMBZYICjvzJ` zgt!D6h}?L#V4G;l5TG-;JE)$n%#uZzJVAP*H^I;6eD+>Bt~BJZXb5emV?O$=xbW4x z)L%F0X)zDsOER7;vO>6^p^5ot;mu+cqn>2$3K>3c9LxKc)IHu`a4w(0r@pi z)+oC!gO}9zcu$Yl)9gFfYNb(y_odubgm-y^j=g|Y!-~_ez6->$WqrYQ`XAqzZ8!pl zt81cKeksgj3V^x<9!`n9;i-CydkRNQDnaoLt6rNS%gBvQw^>_>EZ$mM*3^T%H&+2A zFz3vB#>ddGCD%ozmJ^!UIhkV~J7(W;j;p~GJ##L-j`E~Th~dVRhURg608_nz{k}ie zAVoikZ*M5`C}pm|AC{C0A)a3<`e%w@Y`WP1Kt3;klI57LID{oJ?jc0li9D%&=Pob{ zx6n=V9kNLuFLm?^U!v!-b9=nhiw!RajU>#A;fQrj`t+t@2z}5}3M+U5CxPNu$68KOA{Zw} z+=iQ}+f_KzdA|fB_#i-KH%P!-SUz40C@*0;_=YJFr>t}|2+LB0lL_0m0Cr#0{($Ec=!}g zI#<*RX{!DIQ;kqGj+1}RQXj3@5&MU)<6qVvTwbZx#L=m%V*Qkdp*-L z-H3YloiGpS8Jzu%d4XA(g#^Un?Sy&A>y2Y|!CkVCIk!K>pOpXUiu)l@WP72J&0E&w zn9iVKmgBbaq*fSaeO1zsj6L(EZ`Rg1fuV@3Zsencn6By1f}$jdMdcW6((>yg2g69K zX_G?hfB<@B5@ea!Awn|cX<#mU$JNhKhh^FXk;kCkF7i;-3~`hyn0xbj#R@fD-91UZ z^Cw%n@mo(!MMfIIU@&pKV|DrvOF5?u@j3&CS-h-u%en5;)W3wOm_Y%TNMBN12~G+H z>JrUN(yryWVxIak?wEqJg@LFoN#$m^>DbO8-W`C|Uw&lfP^+fRZbrN2&v@NJfH9Ru@K?f@b~n_#jlbZeD|9)3Zj9eZkq)Lh@C{X9dk4&IZ}va{jcv`KDoMU?s%4 z{_{0__PWhyEyDj;Cv$R-qW3ZNyoPuu?Cy~(EnVeIhTJwUsxNqlDP6+xI3Jj%k!uiO z!n$nSYJE|H#3b$WKmGzByE#Am025p8S+Rp|riX7TI5YU0+*kIS>bw_JE@qw1nu%3? z?X9(Z4fNgq>i;tJYd(89nJM_^$1RY&if;BO{`KrrHcwAX<7SLvI;AA;ciQ7LT0kzD?2(VUOBH^}_5sJSUIaj|$5!Z}!~W@juva zOW#fjhZMHpQ8c&lj!Tcb*gP!9fGbfge5K__HwT96V`;UX8aJVYg^a1@6+uk;%s!N0 zY10C?@YvkAY_Xo#4rn|}p)=XGXvcMQYdurj#Xf|<%1I${fUG|lJr+J{P4E_aOJSlR zj)wjGR}J1|OKx&o1PQuiVJSoCw=*t;Qhe_oPXWdB9(pvHpNljJ;lRFcW9UkPlb7gd zz_=zRO~cF-`DRKup#-^B28@|GOc71$sLF9r@9wc>IXXRMZ%Gy$Q^G#$+Ibn}I$$!x z6+*$C8lOVAf4-jejsWN}u-}|z5XL7!1OAqQA#!88iY&XD#CwoHw)>r?9LcRdAP-Fq z?yXv`t@W)9&iPlZP|e@&TdoQodt>Ixm^--Y688;V|3Or5w`alR!>R7*sF&fVJ!|R# zD(SZoFEXu_F%Mm{u|zWJvXE-cWCk7qHX?euah}{{+J0jx0^B4~lUNm{q_$z>&Y;#( zOt{DF)40gYQqtnuo%z@n>i)maT!$$`VK~DI*_fO{=jwPo0P-}V`XJ!gm7!J33yIIV zLNm}j%s>Y|ns+qOP$fJ9$BbCvBA`Dwky`JMG?9y?ny|*6koE*R0s8+&H3?Ck`Urnv zLlO9A2Ao@=A=vj%sQ~ADN(LbPuu8KTcP0d`YD^zD@{2PC0Mg?n567o5@C#lLyY2_U!yZoxa zOpS7|2+qn$n_?uz7ts%3Jmjz29oMfJ<+RMN!f-Kk(aresvw!eWr-&9>cl`8i`L|!K z@s>Wrld3=Um5wim84)A&OX^OD&5xS_aWnVf;vp7V3gLM%Vv(k=WKmmlvVY=qLY&M` zKh)uEFr9}jMenOq3@JX;QlovgU#`U_7MGZC8zli}aJ2B3&2S`}I8#B)Na|nL4PaM~ zXq&k(B?aXV9WxrtnV*pI!eF5Hif_M|D0H#9Jh3Qxx!UnJE8^{C5dkZOwWfczDN+U`g`Ty0x$c&;=$nLN=JP3EM^Hmr*N0}%CG z?=5Xd^YnxM0wyN40q$B+gANWasMdOx;$*(4MwHjl%VKhGm`AdpSm;!J?SbrkBjK~N zowrTe0eQ>A0>}0_I^^9ecV4+E2?0%snJ;8_V*DB&pzXHV`I6%nP`Ey5w9f7PlC(Io zgm-ceftJZ_sUXl$;*HofgV?oMPDTUvMD!2A3GQQ{2AP7-C)_7E$%~o=H5KtpN^9kl zGFZDTrUZR7h{SzF@t-7CCH;k_SW&fm;<#Lef6L7#;4A9+8Y)4mxEul|LSn`eyY++fmZ)0V_* zlYaL>A07=}%}7-KH9!2_MC(c5>`W3wR0NkhW}xWmxz3i6PAKPq_Z zHwUyth_lud5hTM^-QC|HB)g=C(T~<(Uh=m8{fOq!)=qfPd^>IaYjeiZUR6WRRplyr8D3lz-KQB-sSqmzCpe`GMm3g2J!0?S}`d+*~ftSIO~-! zF?uukW%H-Yzw$(0`VbA93?>`vuk{b_ZwoK}h7iUQVeR`*p|b!WF;KxE-x;iLeAhI$ zZ-Q944uWX5SN|bCirW8oKoy5-|F=VWYTDK1lgBjifQN57A&sXgM2&Oa$m^8UIBEP(()P`FuS_co}A3FS7fzbpE>j5R>=Xzt8{OwQ^g3x4~ts!2rm| z4gT!=@JzR#fDdgIw)UUSfW8p;t+ZI2Vp#j0v5nUR@Q=V&$z##>5&a6&jKB>OTDMx*@3G`03{#tCcfZJ9mPm^$( zxG%}-9y_ER=CgWtx8$!3={!O$QGb)3!n@8t4v`GtzNL+Gj^~O-j%q(n1#zx;zH-Vj z`a)d8)})lSUfl}kq)YqE(5QTF(XZCBlm!N-wT=8fXGO68ka(&klB#UbCiA4kt?3)Y zYzptsVE&i6NW;S8Dk z1WS#b9JWtcE_f7~MSha>6eF^ZGpk3^)rF_C-q2Q@SRX&~=$w=y0Z z_D&%79O8v3mLYw5btm_w>NzEa(h78Z$>hp<(od!#tMtWJZxw2N?p|%TdNmEbZ`IXR zyIwHi_dX+sptdM`1TJ@py?2@fj=@c2nQ>nrW*H{~lcL@iXJ5(+eTJe)-MZ`AKR7ik z_uO+fsF+K*nOXnvh6;Ae6aN)WYjktbG~-VrCHJ0>tf*@6IhQ$7@Im@s(XMV>(6-;} zBg+MEl#$J|tMuku<_b7RY?-U|mvzba?Oe-7_6RiQD*K0!mO}=8w>EO#1r=Wn67F|J znD9LGDC>RdDRjC_k4IYKkH8=w`13s}N*LjBX%d8Oa=GZ$+PW-;r`qStaw?fb2IisH zSVHQ_B`)8~FN8oWVGQ3UJJT6#0+lllnkkVChzP)n%*PiK>kf?I7=$i3f$Ca{G3Q}J z_nu}l{0JB0HXcvH?4?_V%jaC@3gOTizhdX$-L>>vKJ-WGDutnK%GKA$D$alYQTjJ= zo@7j$hB=rw^hZt2!9SPR&dh3579M&Jx#%7PW*X#p!#&ypY(T00V*@)e~sD! zKeq!F6^V*Aek#De6hr295xRU=IclktcO-K|i!gg4a#Gnoe-n z?qagq9d?Dyoeeba-{|-gO+WB15NmwXS(Q$F>-PI(4?|gnrwmQ8|?`#($1G3GQGUVg=>G%lZ9 z^k@+i1s4p6^z@}tL^d(+CAJ;&I28bGhs0lS{gD0ipyi%FDRcrADiU~IPXnrKxcc{} zv&R0~MOPdoKNTHFn;*-#KNYOLer%at-~}C0ctbiobM6;9K;X7b1AfEIyRr_Gd*@6! zNWiLc@_2P=cN@jv6L$~zZR5V6#^wG#P1-)&-60@qB{9?`eh^nHo^C(pdgQ=)eghuM zU~+5zXzmjp7X8Ob*>3(VGU!aC?-0EH{H&|bXa0rh?$odXJ_FMRERu==|BsRT`)e&Qkk*}Adth77)mYLJEtHq{2o;rl@>rv8=%0Q!44ifqILshf zxT^7OfnCkcTkBs5=BlbPX^Ur=eF1VOK)wB7&GhjZwD6A%_e@78Qlj&>p!O$AN?`A7 zGF6w(V?B|zdtr*ks`2{SRyYQ4^>`JkoJZfvWkA8vIAnC5jL)@Aw9Ld#fv?S^<7!c1 zj#kijA(~=u;a}vUS6e+5C z$_cUShFW@N z2vfJVbIZmQAu2rxNCae+V*POp|EVlOt(6RwuQI(A>9lT<{(tt3kIE6KwQD)52S}g& zGmc`%t^U`+_Pz%?gzaNDQz{>0*l!?F`SdY}mBDUN{>Me;GF+}OjlG{+#zuF7DVEL!wt~EP)W*+b zriWp6!}+guOR@^{o_E+^BEHp@@sb@46_!so{FcrUPQzGnbgIpFY+*Oc0Rg|!_8-es z+Qu(fELe!acG`a~4iDpUFD~k^3e{GPCaLmd{rUBO_4wp;NrRFCB3;rA(k(G^ba###H9EH6{CvLO`<(my?sNaObN1KH&inOx zKjU#-SJu8iA$!TxZYH+)qZnk*R371JJ2Yo8cW1Rv$(Yp{zv~$!+@_bjeM0w}=a}0S zi%6}QnS(?6zuV3^&?8xn;R!(L73mAD0>lxs2NV36 zfY>Fc_mv>#SL!v6smKztnKHD=I(4n;_4tyPcJ)i_Y$W~9V$3dTR?pCm_fU%p7^kIL zNEzn*`wQ!RVv-fl93pT&|J zvt2zo=h<2(oEZoY>VMBLDiCo{1b{xB<0Xh+ICP42tbEl|T6-7SJZ>&TwQ|wM3b$Ao zs>`FLc2Ak4PL<3};>An?p%c)}TIeWrM-V!?cqZadrRIZ)WgGj`=+N|?zd%)>+YRFI zI=5R#BXP(nZ$&N(O$dLnHvM7uOpEKv`Z@x~?xuMhKNOC%HAJpCQ_c;M?#&Pmv0)Ng zcHyY*HTU1N4-+{axq!fFI)=PC&)oD+A@uGNu-!;d>4&r-! zS9pK>Qkj!#Yw_=-l_2UOhVvvOH&tAu#zOT36$3}i9QfemJSZ}8n}f?`-m?mv$f%cB zx@7w1N_*)GS1S^9SR0%Yy*=I3%&Ub#rp;DFiF?d0UNZyEi&Ju<0Nc}pQx4O!x_Sty zD5!nE_;qKE@A4WDCB}9>SAan+6g2P2!0npl0HU?Pw3+H5@p_iL?Q`D?9o&*q?JJks z#J+BsUG2gjWA}OI`whMG08gL(8aGxU3~l3?2N{+W3qHiBDZMk;l(6VKU)pG{f(3$j z40z;gX%95|$QEp(8OQOrIVS=DJ=n+a>SGUr()|}e4k#tuRUnP)RB}h1{QYYs;rG77 z4oj5;8k2aZh5mi&_M=FMH=zw z9(6;9GT&?*+ry}~=e}v??wY-Pn!%Y5$i!Lfc!JtJ%QR86$t~&a5QkCIQ9Lmzg>Rec z8r}K30w{*o3&3?R?AYbZ0lT6$GlWH_*Sfc&1X0`Yw7)lB#v%=2c!(I}S5qN}JM}C= zYWHE5A%AAm|6Lp@Ql&pHb9hBmcoJfWJaiIXKcyWn)K!5B!_!UA-qvopCIw66urvCk z@NZhg#l6(mmQ0EBq13bg3Zlg6QCJWG2Ih69XxgVrP?gBa-gGrk1?y(jn~lOLX)$sh ziqmSgT_!pMvM<+hG|^JS_%w)36}m`djY!JQu2_n9cy3(nFl8ooaBDprbaCqc2089P zj+_+*o`q!iaAuCJ^5;v30q}P`p)Y^pVp=_23-4tDTK^vY|FYPB|HErN;cRh1Pp7Y} z044VN^{((PrsIO^PRM_Hn*oLo$D6p;sMFQG-dpuEhhF-%QQcdJy!qln5qQz$sQYwM zLH4e@y}1;vw?dt}f(q2Uf`iZ))Nptgx;-Dh>MBRQ*lHh`>r@lqp-Hys6qm;js>#4n z3$^AXbW|?8WI*S$g++#Ggi+vag~WXNK%7KsJ@Y%)H$EFrCZyKx{3Vz*PDxiiA9^EL z9Do_=X(Pn&=`xCVeN-J#)?03xdk_U!_!DvJN`vRackJUSv=-?s^y3EJ!NVc9OK?9? z~Ls9 z^OlTxnOFRbieRDvta&CvFloUlL`2xZj(@K}4cp))KYctm#hg!3r*~gyJpWfjHoU}BPj<*EeZ?;Xi%^7%|n#{cRq66~$+ORorBkpRE z2W;pE_J~P%&B9sqLDbPR^QzVu(S02oE8MxA(o+w>9w=wVcKdgpZa5~_iikR!A6%`^ zp&V{H&u4~iCR?k>V4DGFTVv@pa%oeD2v5gm$Us4=-hrYO1u#@J9i^KvUwg} zt9nc|Uze5o>5U94G71tufEc7D%y`ABa68gz=nCIOv7}#Th~1uO)}ZIxT0tM)*n*OD zu(&m=M2#Kp@{&2HJJW92%|r2XU9;A-$v*aKEK0um&^V-|2#;6SCDIgS>|UyDiQ7W4 ziaDAYZo}6-7CRn`{tUBfC8FSNRc`fZt0HWy1nj5VM4qlUDdQ%cj^FAJJA+xE1!kE| zQ!U4`*E`xvwp=Y}p-mJ=G804bL<8!l0Ze5mk})S>WL`BryJcCmhpS=j*TQv{4Jz1X zs(8w7E@rTlL1a{GL8Q?TRyJ4JXfI(6_QalAw~i?wlper`1rZr74`~~=8%Vs@Z0t33 z{k(U7(oK~;LYm*hK8SSceIpE}+mDJLzF@MUBsT zA@Nin^{d%G1>##diYF7wHT?5LG6l@uYuP+Nq)s+J--%_|ZXjQ_q1&}_+nd&y*AwMR z3ya0-(YRa6zgCfWQ^BX~A^>j!q7~JtY-i<`uA^@qV8gqbAe!oAGmZ=B2xcqn2)BkYg--4IZl@H*t?8mMX z@=rDDk(M z=Yy|2yLOnCZfVsgcP2;iVWlrMZ%g&(?N>3$5l)P%#b%ng=Ay7j}=x&fVHrB@qc{_X?bsd}hX!ennkVExpbQ&qKPyUda#erwMvU{6V?Sil$*|i)bGGmQq zb$8ds+RDO0FLD4L3DB7Cq)t(l6FRTAvn}ptYny1?dINVcn~F!qv*Z-cQq9kOFVsf)AK6nO}pqVM8=yajUF@vtPN!`rHM z#eqFjKkahexQIONot}AAUf$4{_c5s{`F>G1-?mr(@fB1jd^WlA6vw(jq7B|eK#$da z|K_i;PPtRS_6Cpt0uq4uj1EinMIKa}TpN2|_AeA%GM!wTGhTnjtF$r3cAR697+N&!qNNNK97ZF%+J0pP;YBKYfqun<6H^^|DV(d$n%viy?pTUzLF~|y zHs#bjv@>$P&c0b?zE;Tmy~QY!pvJ`{<0kzE1G8~}F4Qu0Q~pX_KS}5oLEaZW@g9bY zGnDe%ZHQ8sT84A~sUAzf>p?i$N}TR9R)H~XYDVGVGXqZ+FOF-c-C=8FvkZa@A+uXe ziL7Rp0jJ1ov0Yn08lxvP_TZMjEWpbs7LlAkwz82T%0HF;d-jO7dBgY=vo55_w4hze zLCo49+E$8I;)XbGrrhpLPOGLf%=^E?W|sT%)BCC(sw0t_yd6DoH8mx&oVbpSe%vF`el<+h zhgZt!d(9y?-u)o_vU_)O@6-I+*!DcY+Zpb5rP;V!lkN8Y+y?_5K=oR<*-?4A&wF)7 zW|4wW$G9qpV2`Nu<;IiLUv$Lbs2O=LquL;}_+%9ho7whf*wdu4{bE4glp$4*=li`f z6lbH=_6+h2Lw16VRX(lg+U=tf(2(3WgFHbhiM#wcIOjSrV?^RSDoz=aj*SWgIMV=S2CjyNB()StfJ2`V@!Eh~}YJn+97#oHbz#$G?Fq-a>4 z)m8hLq2liEW*CDl3fJ!7#&RV_ul8k+B{6nDj||QD$MKiYMT~#2s3&6ir^MoK!N z+_PReRTJ+gbo;Lxu{K}}*dF7J%KSM)ibyG4S;A|yjnr|Uiv;Jr6Z#ASgK(|FHW%lX z;9bAAvIXn(T~YVy$cai^!>1S|3$v@UIRW0Xqk~gQsEIVm0?+Vt1USs5yvmH_n69HF zOJlt_paqf29{0pW@g+DN`OMQr0Zo+3&tN_=aUe$ICpLe^!HNsf^h)B+`ohhUo&*=} z%`81Vq%F}UoXSKWTAV5R4Y=C>75{|i*hZ}Ai8Z7EgSQ&YVvg=Y z70jE&14tLCc8mu1fK7@+QfAyi9CY zbU^>JkuarIn!-_B zLWuIwSG9=$JDU-4noCa$32pVCoAy*Z?E$0U#kLZ#-CgjsWD`8 zCW+K35|3>SE3=$#5?EGsDB6l;p-Uy*D zi~8`f^Sqh$6Y8{_G{xf^#Tz(QiW7%|mVS)Z3XQUkG6iIV3G9#@&n-mnoV9(oG}(Nu z&u1Pbe(hj)Ee%sC;%z<2DVX+jTn(HFAWLdqFKU4=9&R$8UcIzobD_?=@3<&SvuPI# zL|fi4@z9glxx331-IkqC+S=HBkvOTv#@>d&u+V3-0gd|&2avH74KT*-KODPfvg zU9)g}ylad4oFI2_H#IrkHyT~`^R|2GmcJ1j>AkTvBy1RqrjK-w6#1iMlB|r(tL1Nf z4@lJoQomixY7?y-RxC}Cjvz<&n`oY(DAK)K#eC0Ps3mwC_j?%5Dn*to1?d}=&I>YI z#cN$ke+*TSHvih;zTGElojM0OF{Q!VKP(smFQ4_ZeV3uhm)}ua)J{u4f24GNGvRHP zF}F#d$`!G!n4?+bL4OdoJ|2mc2)n-DuN1OU!8T-i?DXdE+XRd1H*(cMP9F+oFUQ4B zJl!)4?In7`eoEhSYH|G0E?!9*nMi8C4f+M22v$hA2eIGUy~nV|e;}Wi6+8VDIi!_L z<@O~Tem3~eyW-$WrWIF-9T)qUpun+HDkt(py|1ejwB2%TRZ9@Tv{ z4EDTtB_+oNf}!?orQ95p$ZifrBrM4=`vGpp+p*3`&=FtvX*w9zX0K(+=y^MxJa&Uf z+%Q3tUqaIVs*N;jO>?Wpwk)LOa50NzjyGMx47Rz8{dVe3a7JV+Xd?1}%-EZBj;{53 z@Qg#^&^Moc>eC};S0+<3GOx@wiuHO=?+N+8|@py$*A-l$Rl`4dHu3=j0_uc z`I)r15P)&G<@~qr=Hc6+7|OrE;}b)WP&oWb@Cmu>k!hovWNXxoRwLNP+Vf0CRb^?3=%Iv4 zw`-An2WErvsqL*GI$ZVI&+Ri3?A+EkNOT)Sg>V4kuLDkSs&1bntG==+W7sc<)J~xC zm{R#De!=%u+7}pkK#FJa+2wae0C(Qu#~oraCx_FAV(q6-qgwwy{wI$3&ut0(Pnlac zKGJ}ynS-)*{kt&>yJJ{dh!A>9SD%8o_y9i6tB=LC#(A4J;9(f`*ce^6Z{9zFAK4u_ z;0dqDFaE|HJWotch5%MD^nxs@;wicuAhG06$D@ipDuQ<``AumB#-!25PN4mXriO>P zEMXUkVDV^&Ir`3!levJf(-8gmFPtH9?UtJeeP_4aktJImhtJ#&GjAAx@5HL`M-^8K z;WuxDBkp1j(@9M*I`A5CvH6SYT29aO1`1r8!auW7tD zrZ6vmXBc2&d|fmJr{%3FRz`0gwaRE%x)$S{qN02^<9w&|Fp15(2I)0tvrc-gXZCY- zn3oR@DiNEf(cBCozN^C58(>U+1d#VS*rATm`OPWdSeb{Tx8k1jAcLqULiNYPIs(4X zJU~ub96fag`AT*1IZp!AIGQ2lZ^dPw-;$;RV0WpX5d%vVA~X6x3cIkt0_Pags^`G2 z9e$C6_qCn(i>qys<87*_lo|)vTJ3eyV^5L+^zjWmRq>{Dvw4X7uM_v*KnEc=oGT8z z>s`_E)lJk|VEUbdnUbj`oAZTBf<`Pta5h!2c~rm~-i&Aca9OmQCG2NRh|g`x`IE2C z>y-UHga_bSQFjQvzwQXgfhBz<_t6ic$*`W4_`3+0#VAM5wUC7yKwi#x)2UP~&uEeG zlpS$A09@)$XH;4Yli$pNh?@&Z1Nsx}^68__ZypkrGgP-b7e}2I4q!UhwnUrb(q?;n zi(=Cg8Zc%d_A>K&`UZ(yU#}Q~NI5e?oyPe$Z>C9cJI}-r8~{uV>A1N^ve4=g?~!)T z><>h8GVZkPJ@pb~AS-3gZ@*R~aGy69Ak^W}U6(5^Z^60auZiLEQ69>_)&Vvj_6j{b z{R%ASoWhSC^SHu})F(ACX|LF3qUpu;kM!7uO+zAW^s6sZTQ5kj{RBJL37yW?~{+$e62-B`LU^u1b(n(-}z#u&IPe4~i%&X&$YfSeG@=A`F0!SA^; z^*>NO<&qw4#av?-#W5{}D1dFPkqD!Gn;XHLY5G-Q^UZnFNTj}d34Kpf#5d`SA(?m9 ze;V$;y89dOvL#gt^Gk5SQCV}#$-iRaiVgO9YbVD8H`4sDk_|iX7;4DyP+F~hZ%&tX z&r>E5KZ}AlHPIWzntzvpqnGOlke~-rojB6Tglz}^9ROz;^PNih)fUxgZdv7%yz?#O zBIYZeLRs^hfw*{6wW6`t+V_X=?(r_9qn$7-E(SYZs&U@>FYYm~>mc&<<85Uclajwn zRFYwm>$sxJQf(sA;J!n?QY#Ue{08OhfU>&m1e5>S-Xw?vJTIhz&KI%HLAb9R3z$>> zD^KrVn@>sGV>lr{`ntZc#`zvMmkjX%9<7K-KU^M4oX6p6A2u<+ncm@0AZ#R!MTBq4(~k9sAkKXXUXOyFI81vvd~sij z*poJKpR)CCEN?VC3MpxHv+K2cG32aAL=9>!(rlkFW!Bts#6bv1@LZn6ZAuCF{JDtp z*zM##LlFIrJfH?-GdWX-Xppn7G-)OFqaz=h@TIvzlgM=G- zQ~L3bWlK_&0AX(0D?XzN3mZ8)s})>tIp0zEeGh1Q;(p0ha_g`WSM%Qd!28hdY)Rr` z&211Rw|7yJT(I80#jri=Xk(l1vnO?(=5PUM-0X49Cq(CbqVkKPLTrpS3?~7PiU9hF ziRoL5`()e+^gRWMs!aMDk*X0@^)B}i!u(_#qDrRlOlsJ$gPR!YZKZ_s+2xj`ez{~& zj>%+dn~6s9(r3 zr3D1w9F$A*s?zoz8K`lgcTz8T0^A=nG;H~7q?cMOW#T=f*!FYT;Z-TMerQmEcl(X~ zWq^LgN|-v;m$)ildFF6A1*V?2FrB+`r?}B;sOaA=3C|jbyde@hiykWd`g}n)ddZ@QeAK4^vCb9W;v&md zYmmLbt^qFEB~Hm~?P|==O+_BfPOF;eEs2_N`QB<5P};4INzQEHZjtX}7}8E9Aj?0;``bJDMw`pXZo;Kl4+dnL}sm=QOqRx?T7& zb?K-w0B!+WzlNBzUc~?4WJqKF9!e9~2GPw&+zgb(X^-R2iG6$|oF_xSwH#iLha}li zvQHk8oWPsVX)g;vYmbM2y{6KlYWhb0e^oszYB~S-EnM43`W4_Ucx>tjiuTYi+N_?P z9L7827yiO+duZ%kWbxe`z8Mj@imGPmSyE3avR2vTpc_ic2u_Kwzv8hH<)x{*b-4}_ zK}UAuK*vHh=45{ba5Im&yvO@o+0%in6qp5iVWcL#`n|S10#oJ}YN8c^B^*vrNE91EW4N^bov& zWv}GV#IXd1i-e=EM%&7qt9OH?`#tKx6aU&c0nzk|gQl!?nq@ikHX`$rZD}^1ldN*L zuW;&7)!!T^kqMMffA2!x77pIL@(4Rbn_^E=&kEGU>};my3n-Jx-W4?(%Q<-FJeq;+ zI$$kCyxs1%C`j{Lzc(P)UL=b@dnU$p`gP#=-C+Pefbv0;`tri*GR1+$O;5xw5m^9> zpvR26#D)045bY;RnNOwNJK*i*DbUuq5Pbf}c9;J;c-KfCr~u-N%BxzRPBAy8Wv9-3 zv4=))V0NU_a;$1%*vRYp{EXYUm0!ajz{y?X*KK9Q$|r(2Lx)e>IJ+qy7*l|ZiWO@u2A1-6B8>Q|??T!~JZvepY{s&p4L?Szo%m%c z8Jv(w=pbW7Ki1#R%@cjH0X*${c+x*Y-LPE#6(g8{EA>EAWtb4GdF#ax6d_P9_7#;g z9cj92v}@e>c&@0t`H>#X!U(qO4I4+Ki6-bu;`MTKYFgL#sU3Yv_F{C-ARH~YT8Z-M z&fOZTo+c$e3-Vf9W4wK@sK85sIpFc^mgy=4$PX_?BA~kX@h=RbK}JdlDCGCKO(&L< zi)B>^CqG#Qr&ZzBQwd}#OW)c=dC1Nn6bBpqFV_`blR!JPVv)q+F8w$7qOW?NZX3Q7 zhM_+ckUSZ^SS5;z<_vXf-)vv&IZtWjXgj!+N%sezy&^|k6pxwR+0c&t_S$3hp6Cx| z1uv$vg59Gx`cx;Mx<1<&Z(c6e65$el|7Yxi`&f3qpML)zJcTs%{4L4HZ>0V{mC*Q|$wNaQGdH$C_g=R(s# zvU7a4W1p9cJe{)AhQ!=RLbB)!AgquFix=vk!7+du=&ZwIA)% zenz+iaE&F|cgjh4pth&=e?u?%N{MuA2y6`RRi6F!oms{Tg1droZjzP=0=wWQRwdaz zQ2h2OFYcD}yOl)L4tOh+EV@Q>7_OF6M~T^%8L*s{Q291_J>Jy{ylHuH>;b)^w)3xW z>cXbqgq=$TpV+QlC1l)ON_i>*w|YISCC(XPAy1^aHXTnfuhxSM|4PZR#cr(21PI7K zzh@MM_->Tt_Z@%U23V7({--u^@u|@L20F~MzerW_0#BA;f8&PS3BAjA^r2oiMX*7ZvdtZ|ZXRFFV=5=*3N+68FZ{(q-%%#_ z-vs?+hUWDhujPhnP$}V#j5bIREu$S6K?>&W&m zFWtMVia#-zm=`n0<-f(-hr7y7ScjCiX_Rvv}S|37~0*)?K`?BQqMSv@48+~Icg@pb!uPJF4H8I4 z@0;HtA|nRrJEV(d3)vv#OMGe6s|z(>o~RvRRoomAT(wsTG1PLHQGRsC&tCMu$I$4@ zzV=b@gjjA80_wlX_nYf0L?H&yHK%eea}3XF z_g6&@Br1Pr@YCB6q}7KBCgI;s;Tc75wdgQ>Eu!j}NO3pWA{-4?i?=v!z=RkVpxO<~uYz z2@8Fi=kAjD&+N^$`0)F!2fl|q@@i_v(Q@)2?~k;RO~0+(8i9!O;P-azR6>go6QoP% z^9gNy795Ezn$Emr?70;?G`l_4IJsD->IxuO$QES3iExMZ5#WS?d!%;WwGNH9ey1TU zJ$+%6Pt~_1V^yX8B(Xq+IKw`)YvO_5lDZsNe$4pXp-bZaQCxlRAVB|T`kHv7*dJiJ zn4OxqZ(o}H$vSV|UV(+$3@;Ed?UIME;`DTDbeOw+yqN~k{f#Ch%!37WNNf+*v!8Rb zaYrJ5X z{P8;yszON_Bi(?s{T4Mi2cWqi(gy~ICpEhPqj>HywWfNFc;yk#AW~a?3u)Dt8}u!X zI1TObQ<4um7A_}I*WSw;qFnvfQM)OQH;=pw@A}%`Pd%8g_e%}r^td|tdAp<5JXk}% zSWzd=tFn!VS37sXln@=l4`iZOSH z{fy4;HtglQ?8K&^!shP*J4w5hWlSOjfMViFjonrR@Lw79E&{xV=OlmlqR>gVUN}gZ zMdG*%|AHqX0ns!N1-VsgU|NrnD3fmKTOSpDdvqDZMKWT`Sv+U2TZ?BvvT|>GjeE23 z)?n+Go}0Zl@zp{p3EZ@~XLkSOEqKG_Q_sW+<&&1cs_&O5gev3Ja+@2WbUcz*LEPB( z&@4s(XY0!NgcOfT)#~3*`QP*9r$jZ}`9D<}f)MszEicNXVwmXf)qNA`sO`rN&zp^7 z@A2`|sXY_mtV;rni3lX|*?QNOmxx=s6D5TrP~m%TwgwQx2wSqpjMMcPdD2%R0WqIc zH;H;%6rG*lWj^*(+mYcD&tSows5rq|vvtVxu2>D6?u`zVrrM`jvM5@OO63kE2*^CW zHqALgcj|9PwV1x3rTS8+e$5jRT3ACrE1mdSE|v1A@6|`xXW-dmB#>JRxI3v~FS=qq zXsSQ1BPC6Y)Dnv!;Gj#KrVAqelMZu$+UI*fURhG~Smw@jl;jHm~WG zl!GRu8|uJF-Vq)pP}zf_~WP&EtH|{Me93YZ)j|Tl)>APAEcjA#0{LM(1TjA zAIHC^Gsp}emG)fqe%gBrbF9~A>7s5Ie2WD7M2YPOcdQaaH0-0*c<4|KuMEh$K>hmqxy`9Q57AaOo*<}jO*^^Qf)NvK_$57LlZ%Ms;`A{{z;u70Y>ot2 zBSLK~K2Rx57ug+M+cH~axN4mKzMwUW*m#2$M^yZ$bNTn-80N30`oCv{cqXtu>7iI% z(*C@X92mreR6DmnAVtj!kW2)jPLKlBqa*dkA_0l1Ad&JaJyV(*cY+{PYmvkh+Nz$2a|~ z2C^s$*sedZq>-WJ==M3aOp`8}Xa^v4kXy)pm&9;lI#Qtgl$5+;s~ZPUJO@f(Em{0#tY}olv#;>p4rlW=MWXM{5G|Md>D(vT?T)WQzJS=%=Qfp!dFL2Dzc@6N{;MKt$7E%lqE&v%Yj#P3d!Vn{2IW| zxBXY0q9v@Bs=1$BJek8ga8R_A%KzGf%SE5dHRV6Auf)*buI}__zXA`h^@~9~%zcPx zKogjK$1ihuz#V^OWR+sy8^x!`pVOGla_Cc~0L%ZcHxBz9421i?ub}0(mKV~_Vxnqf z!`q?#guD8$9NgblqZY#K#ynC#SuXCYnRV_*J-d2y1R1GGbhRDXo5`A>986{af>L@s z6C!~sg4WrXpgHD~=tT|^l|OsA0k-9z#ABo-H|^K^%fHp-9e!3bO&g&1xlofc{$ry8 zUQuJ`%li{l{Y40ukCB?<*#h}G2}IOiF51j`8f1N<@afLri^u+s*8 z*X}LcX}j3^&$rvrf0{2MB)~g!oK|GIL!`~U#}t%WvvBGvVZFdoJ7XG^hzq!%G3r{X zWE%j$=J(bZ&u;~N=Avem2RCnA)<^B0431_*^pP+6p1T(Jna6er zvp+_g+)tWDxf?okC}bvlyQscTQ@L%qu&VecE}1jx)cKK``;t;;xa6`@pmW>h^eizW z4QChK**7ZR=H@4VT%3(WfSh~FK37L}$ws7?c4gSuNh=1pZ`39AW+eK3cq4C>hyWMu zi-DzZ7kLD*9>j};V0iS>YMuE-gSL1S&=mf7LKN;5`1kIH$A~^9@6#Y!2NAly1mU@C zn7TVJ#sGRKqc2z4Q_~cDDqIO@x~WW)KS`3Mm^L9|0X;_|$mt+et!@934^({(8K8`q z-eFh9KBM4)PlLo0>^v6JWJOIi2*Ha-g(SCOI3jL5Gr+~oUeza*EA0zr zPj$dBJI}9`MWw;$wcH_9qAfpBoEqwIM(kdvj|EgO3+h%8`JnKyJkL>WTy@cDoIPJQtnhEMZ2tUjL(z{@1W!5 zroDLNfu<0vICIA6q33&eF%gdj*ac6gB1l86(9cB)Q^;mF^RQ<5cbw9@AC(sV^(|$c z--Z+~*!NEly4Y9i1fzgsQrq(#w~rhORBwzMMSmJ>x~}nC*35nyNR-ulz)+a1%kO0q zlAcE2uOk-;vhr0I-Z}iOzH-Ts9JZ4JcKmIA+$=Rdhd`=k8RvD`43!TG^=(tDn?_dF z{ha3_v-l$M{J0*cC1a-(-$eJEKUkMaWegR3f=H)Z2QFvni+P%sn94;iTGlS2IRrr0 zuS70Skf`mvLDe)q5!b$_uoI1{5{{|})7rV@mRs;F>fBeUkRtG{TyGh*Hr-3lPn%{} zomW2gf=eEq&?^a_=^8{@)#A~d6aBRhG`uFQ(!>MNa@x3L$pxJ$$>DBnS3CV)r)%eS zFMyu4@k?_-fEjpQXT!Ij4gKV&3!Wdk1FrRRh}~UNSaRo!8$9BCPDK2~!R~x~c((ax z2}9RyBiYup&!)?q8nXz)6t}y^YY?B7oc;>9zaic)sN@OLzz)qPpPb?#wgDrQ(gM-s~b3DWgg%v+#sqX1ohT~bWWf~;uwi3U+|hz z$&dFn#v_>%ZZvJZs%kZBJuJf{-y*R~SX_2Qf2&QD#7*3(z~tVQUTK%GI@xM}wf^I| zz5Q#jwME)oWfbhhv?d6}R>N7NHC%9MY}@I6+l*Z(ZALw7)xS5VMn!PA&Vvq;u@1&Y z-AEjjUcjWMlD%q9BtIyThM-8XWo(j|6eNd`;nWA$oh`gjlHWDB3zzZ{BieIaTVlNE zS7aS^82Y|K`ENpj$EEIbH6y#zIJt$5!GMg2&oi@VtNLOQrfYQJ3l~WrRkjbeIC;Ag z2d}d0TfAYH;@^ZH)WgoJ4G`s=J1%xTf1ibNj>IK*^o|oqmm>C#$I|njU45emUnFMg z2OPiN_KQo6WA@PqcK+qm_u)VT^OCIODt^WJbwGX5%X{EQhEDL6O|t)~D--Vhe=pqr zvv)&hWLg~Ys2($mho##+<)_26Nr;VF2#Z0|IZp1Rb=wNF?P^Fct~R0{t|e}T%dGOk zx{&*}e}gal;G>}>(ZROC7`B$*Ph*7fJX`J-w7w&?SvDRp5|Uf1w~MKa4v9RfsuxWO zKHK&PN8?s-A7<%o-6^m662H<bBSItrd&5(PIDo^B3M?{H5KdHz$`^ zAKxY)6O#69w-po3VXnDrZ+LJ?Xe6*$jp+?RO&^h5E5XnrB{Obo{LhVUDPuG%@xcpE zZZs-K>5ye6xP&65_lXJ1+U(>)^gj>M;~NX;V_o_78nSC=zdLwV-y)=2ZAJ2~1VlrQ zg6mi5UAne$4i&%C=W&dpdo;VePgDw2t15$@Q&~86}g(;6|iq6-lPV zEf|Ou>-7yMiv>%tu~J-jmSF`x&^bGbKLWJlOdu^_C^@Y5M>t5wrUSZzy;eG#!fcVv zH9|M=&bHNj5NTI?E@$;}X*IZz(15dkiKE@K=>WCaez12sL;WV(>=~7Q@2=sw3fL5w zCT^B~bpc0N*)~oGPgAG0ozd7r^7l*2<`{1!u(=E9+^K7N{2mLWeAAna%S&8DD+RRm z&H0O6`%%0j35da4VL?-|%$t`yZAs<{GEA&P@sd6O= z@8T(2g(|WuUAI7AalOPd!1PM#d>6my=jb^4NGx+W!>DbUhPVkzFxjvC;l;E8WJs#F z<~@}Z1IsAI8N?Z1&REIrR6I8mWj{rQ?`gE=rAH}ZPZ0hbAQexDshR-M)x7PQj z$`_7px@{VNQL*iv`(a!|-`381lmvR!)i&drVzYNmnE-ar-kgMa((PExUm57@o=KU)DIP(1? zmqw;D=F@<+=OUs+w7hj|@hJ3@4R*h^9x%;eHlAM*z2~$e(_MO2i1nsY+9;j^ZIoej zm-(>XMHYM5+88`PN^{#UT1STp0yhVl)tf#8k7v%i8dP}|#FOe3IE}-H>7(O`qo@38M(&n)g{9JgeG+_kQV%LDhQzGk6(y!3j9ZpI&*m7hN=sH` zJ{?7x)*YC#1FXdvBW4>`an@w&ZrTX6t2Gq~whKmO$^ojuSha(SvYQ6&xoW|sulsI} zcC!LOuOUmxEq$epYoA2Wdsg0?ow07DbaON9!LL!LOJ^Ks3$SyCX;fJqWYWZ zKgYFu`uyY)8pS^zniX28A2TU341=9>?ypk$Y%MG2neX^BG#jZIDqz&oWEMMiKC4Y0 z_KfM7fm z{a0vL*IjNVQ?}fq9JDXqtx+x3#^QVgbI7ioUp>8)MSg(YM3iKLm%wim@QYr_ZoGL% z$Q?MX#bM|do$7M>UHVeU(45F24*%&EQ(TU*eq+Hx<#Q&wKQ7FAb~Ym%}#)Zwv}ndj(^zMn9jzo@pRM1&ZW7?#jT2vgjRn=7@pc! zV?BJyGG54zij07}u$!BgAV8xcx~Us`^)0DF)!CFOc`_ZdJ-D+;w#|5GMTEBn^nubijVY-X=UtSvgW$%f=0^OtKmQEy0GZQ~`rS;b*BFl+D z$MNnVt26D%Q=+&(gCY89bc*q#`{EhoP0ST^d%|R_L(e#f=I$S~oJ}{_o$1yra+j>n zTdjt6eQbi>HQ_MPE#$4@5`5jC5#BIEh0f4BG)SIetDYJ$tz=S-*=$z3A|rw>$p`^zccXF`|Bkw2?cKt5{imt>X_En~oF zI(2UQFSzguZk79X)8maCVE3aKDAei3qoNWpk^b%Q&O`x%sT7n-^&9Y&zP|Y>o02IV zsu9thU3fGEEw`Uy)S#1&^IaEfHI+EUllX#?o!i%&w-7X%Ba1TjzBlJvRzHQ=D7&RN zq?r_}g`qnn%&_~6m=uE$)W-De^jSyj^cKDERI~eZ>&+m{zBwX$6fY#3=A_MTZjnJr zP1N1FA0g`6$GTQf!r0nv@7;Af%7U)`m=C*C>QX@X1M<*uADZ*A+^xCgWV!2O)cB(^ z-}nKySU~9DsU&icWT2}DZBbPKX>Z`vyX%hcDzU&IeqQkIrvV4!KTutr3_`ju%CzhM zMKqDC0opB`y6dmc`qgW>VzAT>LOaQFWT3ImpFzxNj`<xR1o;R#0v&Lr7bu_N~*87FK!?DGQZ2HD-sC-?2|-S;QuYDTO6+ z#Dw_7%`gYf06^0Ga^>ZR>HFvtf<7nS?@ zzuk3PPE_sfDA#KrG)}u@{O`zH|4$eT^Cx@K`v^Soeup>ffk_b^-61<(tZC`dK$e#s z1W-DC*F<*Em~kM2tw4w|sVed+z=ej-YJS}baITVgl@sKz;u-66NZPaW_2=mw2^v|= zBz+kN!$Ks3SVKYdX}K;f9rcfo zKjEY08PTsOD+Fql{*=t@=(bZLHc4!%z2t4JHhyA^tmhh8a*ALjqz$7#jNb=S-qXov zrEwJfSX`<9V6hMjYW^xeu{(Q2mg%6V!q7!#+48G5Mn0WM)#=%CW)mX3pXOa>_APAi z*S^3_Dk=wEcO)>rE~5s7Hq#}1A{>38z**OnD^^<#=iYG!t8e5y;INx)Q*GCcyI z;jh@}XD;N4B+HfGdYt`l=4VJ?&GthREx;nX?q=EqJLmTVj9|Xmnu>aR*t+*36Fg_h zcPY;fBx(_xinMJ)7pq+5*$QmW`GTE7ZiBG59B1CxVY(MUHq-54>G~CRL$8HJ(8k?a z<))EdjWe#7TEe01I{0-7LrmmCPd#e)noU0_dU8Dx-hW?@8viqRYO}YWY-ok!VObl` zYXqlJI5;--ENRo&dEoPN_w}jIMh0~-;ZAw~ZuWDbXD8n)N`BN$X^I}KZJu8*js1e_ z@>_1)Q9zOp5#KL$TX)KE>hO#04*QbR1AhXmHcqjgFx%l|im-@xv`WT0b~>R+??09Y?L$v>5^`d?wX++Y3Y{k?rxCoX6Wwjj(z(*&%3{OANv=~{JZbD)>_v(uQS9Z;j(KZ z!-sIAN?Q*N?>DSkdSrgAoAzm%B+S2xGK-hvU14T^dNS_I*fc+|id5zz8pNbHlHGpnTnaJ=tLvnx^+< zG0O>2whPLa{7cL={5cnQ2b3K@frg@3S}*rR#&Sf0+y88kzy97$&h8VezU%7sn5I-` z0@g7Gi1iKWwpu=KaxLq>1rV&q5aw}4EOIf4Q58N6Gx=hk2`m4+<1>jcFD;vkP!;h! zxVwO^9nHatUyiRBOOl9dMCgR;Foma}Dm!Q77bIty!^P-WbAA{L3|}Ck&Ed=~!}2LQ z%<*r}ZM(Kad`1X%ourWsN#lr<@@q2Q@A;U@^T?CrS05hY1Z6MMO+}P`Q!=g=UI`ZX z|1E$2wH^PTtnO_u^ekQjv9Rk2ORD0Re|pvyHV88wiMQetkqcrHVH1g7`*vP@^8bnr>gaQopz1OIWp4;*LJiPo z7k1{Vd%jfL+LZ>6SN<_nD7i~e25_Nb>1{5>e73l;Sc*NNWdhsxf4&xG#v~fC5z^jp zY3o!wv1`xF7N;lkHkwt63~Y(5_cLbORia#`h0U2#gm4xXYVD#A?Dw7^{=5sn?{ItK zo3%C7(CQ4+$an-%smb6}-S=Jzi5~k&)8G*K1i?QeL~HFAXMUd#A}F)lsNG<$l*W!vIQc8ckjQcoI9{GFWfmGbX7h%nAJ^!#z*$iB zm76Y5gu zS+NXqPovH6hvpZpWVm+gJrT9{Y%VY>Ui~olJA(OHlKC++jzf{_B|`@v!;Slu=Z$+~ z0XKDfRG}6}?GKdxm|tA(U;mt`ywd8PmOKal=3gnxJ7Sb@>2!Rq8!cUoYnTwm#EL2A z3{}BJH_OIeo!KfHG{VtlAZrb(_=*3GC1yjqg!gp-ETg_`SYVSt&*`C@ui6ecW=zGb z!%@gAo~T|WZ3J;A%HJp5S)fZe%Jb*4REau7_r{+bL z5&Pzy#&pCtj2p?&iaERCuDH~crwySiv*$gU!-#7)vF!acwkwCnEvv6Lq z=2IHLv|?WNd1qwCZ3gh9dDm2Xsts^-U*F$~di42a`W|BDj3V4~yc6un%1qos&~%uD zp#VYw;z!Lav`9zyY*N)^noIsx;$2srPifMZK98qwxfX0hJAn+NpMFl{d)}J$YUlZY z9XOUg$@=L`&P1Se`aZM~Jo;N3bqfsJy->tesmxi(=dS%LgCN2HVMe8UnuJq{iT2x4 zoWk=ansFG8Bf`?rE%|TfHO=On)yor{zsEKC4-btJ;3KAP%X{cGuY8O~8-=S!`2(L` z>l;Ga&1P)7q6A1QlduDKa4z_XVS=-2@}3UT#Zyt91K>@~VpePfe^Bvgbzip@S(1 zI-q}6D}ZD((frT9E8j%_Q3?Lftr;0k!S~|rf^^=iAVVsX(DOjY$8=|K3%|1SyV5&X z9g0dNDVDad2sX=vguuL>*Fp)VRs;iBy95Km8)bp0Nv;O8UrNTY$@N}fkeug#-l*fL zytJI3hJkA8#}J?gy@ow?Kl_`kfr}RZM14Xx=A6on(>Yh@(9qb7K+hHn$#PwRT4D09 zX=yW##WAN(Df3suGs6~G)~fSc5Nkt%i#%J)uQ8z0x$4Q!CBNn__ib5{69+J)`_e)} zm=GkstC;-C_)N&%^p%H*uv(+;Bw1!ay~({8sbp;CYi5M>=E6d_9h*uKK}asEu>-eR zjGbM}3IG`NBj5OIdsFDN*X0UmXv#LOd|7!9;s0=aShaO`a1wD@Vo_3UUO8W8X{MXJ zMcj$oSYc-e$BWrA2*g@Osk0i_*8RZyBf@s7)&C0giP74Xh=Fmp$v1|uUj;V> zyX`?-SdF8WqvE2Lee`D0@2BBML@^GYhs(;6c~uU`ynD)zk7lIYQ`@h`)ESG;n}|o! zx2Fwig?-!h<0PGb06$O)*2B?ybH|vsPM;38J>B+}Cf%}TVLH`vTs?1?%C1W;V-X8Y zj-ZR6_o;Kev$o~&cZO>)cAZ4J*G^`8JN7y}LM1Utkc;}~tvw1TJYR}P@8^o6HK%@f zTcSLSu}#o`Ab)kKDz7sPm79^-ep zBXfjXI1VibmM$yT%}bU|w}gW%azPEKTO`pZ9+z0pO81@jz>Lzf*gj@B*uNYce3<$? z9X8K+-85s5>}z3xWf5@ex$kZ4!weSCF({pZ?WtGzxk`^Mf5RHw4j8B1=(=&K<8{;J zPs}6z&Ek^9MF2Ig4|VYuxQWoq82-b|cPC?X#&N;F>phCF9j_7MN0r!HUmvc=7U;ZU zZaBSPyz82W)?jD%S?BNIh+}7=2wN|;oWLU~pFE`L1+g(Nv<2SH%C6W#lmk=)2exk3 zvo*~j73(oFF+_tQar`eSoxcjPC$mzTwObk)>nx^%%_&p+lLc zs?OglCq!~JGY0W2Ucq?tL*v(Gk``DP+O0_1hc8td>^79u{=FAsuH$#@Dmm^ghNuMxu?Kf~kJ`Vn*tOxcW;u zaL}5vF@3|w)y_LALdHSVl7jI)^~A5RON{-C>7ubCb+2_f#cotTyLHqwux3+92wKjF zeibQtZk|=aR6SB=0`YwJL;|l$pZkeAg968QwhcATg35xm%c@|ng0Q)W$2pBtLnzKlo+iaSNeTrYHo)@;e zcsc;{&`r@b^LO`0oKXt(BdR}m=sS7NNI^s47nEqP>I?iXBWS$p_VB-uyyC5V!8V;6 z)IPajfkI6H$2-JMJ<2&W@=8|Tv*L%kXBnRW{4Eb3o2(Et7gl*0k^*&MJnce5*8|t#b@P#PsubJA#Y{5j z)I|1lLt)p@Utw+dNcHdi=T@m-RHP1@jU!S_euOtIg?Q{W9_&Bg z)XqQZJUb^=&vE=*;z$^mFSd|wajdV=9pSb4GhJ?jX`@=kb2_=5qL7?~CUp~oyqmcs z>QHnJdi0%syli{iS);ff6Y84vc#=#AvNPu31dQn`_k9?L8snGBEE_SBOKC{TkO9v0 zD&e-2+5YJ3bhC9%?Qk`g7$(llIJP-QUKj|tU%{yoo?Vi3_gTN0kVp9{LE*!Bi*Xxp z!Jnr#iQx27#Pggc$0w7TGV5Ldnc>y_h6$;6Z&cf_zQSGop{~u`fN+1=2vtvM3>x2* zQLuC_ zeI~L$P=#@DfTnk=49o#@KHPdcJ4<@tmG6!kGxxYrA_lg4CfR);rC95~dw5x1TG7R6 zF+F_SCyIBZi4f_-=EQfdwG&u3qNjg@v}@NDjwT)ceyt#g-Fl)u!Hl!!rcbwJa{NT; z=9X*i$8?$a*rzg=;^DexwkqD6XJbvz(g>dq2pkx5JmrHOIA=?&o9EO@yU6efn^WV} z=r2>q#(UeFAt#R=Nd^VWxrM@$5(P`q{S@&7V=M%^hnOv&bX(d%#0J#q%1oQLJYTR; zqA5Qe+65@CTaj%zJ@H0|6?U_Bs4o&Q#I69sbk&mklPdJ-(n&%xyT_lMJXs3U6Zyd2 zihU1}A(BoTz{pEJ@n!PrU1s23D*x^V%)MY%iY~5E z-F`LUvmx7cS~%*V%Pc1|M8Lp@H5@0s6^DlMHY&m^)x z{G2$73_IKzE4iGWvkg_29*uG1&H3>6_T-c0?^UJ3>eZ>&_Bk8PyXO;4Yd|Km?`}5g zp6&4K?0t$brOh}^z;VnQvpY<*D|IwBD(=+CmzEwpiZ4RjW>sI;4w&*Q8)4jPWz|}6 zIA~d;YFYD`@Y@es7{xKyg;FczD3Zrrv~Bb@{b@a4V!h>3hPc-~4E#r5^FPI12U(r- z_!r@T>&5C1Y|!QAV_*(+`q=6mpF$RuJNQ7{ohrQPe?M!rh9v9$hddJVE zew!oi6IPpVmQ+$G`Z`yEEfDFD3*eC7;e|}b=dDHB;ciojP9NTsV>DiICMUT7EnSUe zZE=GWLp#SeHlU3%ebK`+rACo1WxpbmNsPHHLadSU<_(!tnQi}JLf?WIa%PAyxm^2kvhYU>kCmgflh>Qv zjLVq=8z*lPAoFOn9qSXS+CgNIivGscxYf}>*iMn49(9X-@oJI- zJ*N0Gr6IrGyJt$3uHTNEf-|Bup1ez=JKcs6Ba`BOMgzkadVuDz`j;uC`)ny3z7%_2RyEQ5hA#3?0}*a!F`Fn%z-Erf0|4VKWSg>M=Rg> zxk$_Um@xP$!%P~Bx;$}e2^Fa6joob@;8pK2`fE3;%yUj?X zVEFxcVR}?1dA58ax7NbNNMFId^<7V`26z%VhejzmD^}puo}q=#D=6iai!LDBesN*~67<>GmaJ&w>G+*$f!*M034u-j*WAp>wWE9IsE zd=#aCOgIn>?b-)L=N-mMWdncfX zC|trgZzxG#ZV%{WB(>_Y5H?k78;*MF1sXvb1gtzrf4C;z2>SS<F zD*dka#_uIb+~x?!shs^@(Z;J{m%|20uM!`_4tY&81}JeY5%)Gw$JFIOKX>Waww_CsiermwyGTup08l~I8LX3l?|&n{aor%ThHP}X&YZvrn;q)Q6y#w$7bORUM{SVM49l_mbuw5OF9{{qHdBU0DqtOrH z6g;ucO$~q=4Ha5xc3`Xk7umP`=tv1ocjOlk#Tr8!a&dcx8Ysk>HYA6 zw}>X@16(drA7+{eCE*VOrtJaBG!iLs{=1hR1Ub&lI4|_rLBztnBVU8u&Q(6fAOSVxg&0uj%Oi+aFU@zpMfhB6PDq3Zni`()RTIG zGi=Z0FXpIR?MjIs(QYCK>;Qbh&Zwr!luzYmc{7-~BcB&6MU%s&uU$AbA)%#ti>Bm# zTrO*>{Lsi#DkY`yK80%7A>pAZ**Z;L6tnJ~vB=LqU!at5y``_%EWY zmn7lP+kabzB;==)d9t{P_~bl!u%JT)p-rJbE+ZA6+%-qtW>t2D*qjT4mm)Y{HcQCt z9{IZ!(+D|%ue>P7j}6@1ow~0G9l!1wrdDnnZ8Yeibmml2GW`&UHhXcJ4J8-zM7h(L z7?Sl*h<*wqD6iG$N&w@H%1=uwbFYQ?Atk+&s5>5*mH1{o)o){hlm?F_w17#*V>Ju| z!4|f6Lk@CFTD(CpHy%O_k6J9kIb+W9F7q5c2sZp=bO{U>OnNXWN2>V!ud&e5A$WqWbgGlK7W(J^@tip zsyst(HkU?9V`RVW{e*TXu=h8Q){WMQuhWLbWS1+F*-^)pDyfcXZ?MD}i|~@TY8ES# z{IULQ!5rV16|JA`=DYqa#k6!C zvS)ft%rj5tMC!K{JaIhTPWk&jw~ny}>B6+dkIu;(+$a^DQJ7-4p5YY~``!-?L^}2f z!-O2fBjygAQ>eqP^)Wi9>F%oJVa#GFw`I$6?=n z|F2z_2|>>1uVxw8f;q9y)?El~79--i7Y^DsbG(Hycn7!7PZ4`lqquGOCfr9x66Eko zu5kK$E|tE)f0H-Dee*G;FHF<>+pJ;`&JraCA&P;}a5wrF<3{;;lBCz~RE{!OGBj~~ zVcApNt}8TC3_ zs7qZRSSc_Xhz`<5KLO>K#g|g0r!X1I*^XBy51A`V6~7pB1m~P$F44TV<%;#{krW7VT{>Z&Rr^TXPPIxza&&Pel1>9%JYRLsoZXY&-f^Hu$He zO$s%Q(HYB|Gg|!mGuzl0h$W@TXVG5o*Ee&*_=TGL$&dvjNO>TMdvUSK~n8)q?fs6Zwl}2NwpI#IxEwYh}Ivsd)ge+u# z!L+G@2c{%YeDgXgcm*^;zL!ub@j23NL_*XYaub{A%qDee+Pnl)jPV z@A>%v`B)l0QK;<>Hz)Ik{u>yIz|gO+=lhEcSMfuP9>Ma|n89!5p9ySI#T3gVwi?F4 z-DrfO3j(#YsL_dPm0csmm6#ayi><;LJ~3x`jz&tF}R>hm}NtrRY%QQ^BY2rc|Ib}Hfs9GWq|94ApS zx!Vt|GQVn>4nU4_Fk{#gYIRYBkustAc7+eo@y%KuLnYSq26sYkxPvW}`D{J5T3}*! zA&7v)Zf8cAs>UOwWp=O6$>~$lT%dwcF&{tKO$M4{jIt>n8Kk3@;b6lxFH=1ottqJq zokGR8q%BICVnjigGW!@yD^{_zV_#c_%GRy^h<_!x{S2(wIx!qJbw4gY-TkW5=~$My zuw1cy+c~8s5~^)2^Jl~{wYB*#T!M^gfSixnLj5w!Mx0A6qz)}ifh?5NXc2_zZxhF! zxg;n7y^WuIy{k%D?Z9s*b@k?jx8^UInV09bT1tzq^5P%E(~Xlmi>JR%Bd9U#2aF@c z|dk=<2Yj#z3~xeZy?-D5W1)9Wxchu=a@vRg#8!olmxgSiKOTcp8U zmx6mzOQB`9B-PpObfU27RnTWsg9@7F? z%SrTL?`0(FP5%$xay&>2scOfTGySeNc>bWe%_pY>O%Uq>rqt_W{fV6PBN&6)-LG3N z^s;u|qRL=JRP&)NY{M>Jq>>RF?i$#zk^m4u*EZBn_)o0%fFaQBfkZ#l zg8u;D)lFi{KK=to6BDw7OCn2G7Q!P`{RYt@fJSOAU!G?2qo4rTIJe$g_v@kVeGAs9 z+3lrm!qvbsLe`jiL~qDA`?QL6CV+C|tnJZJbInFNN{jW&M`FN=I^pNQ#g zL9n0j6?rp*)|`iQK5ZEp13Q)6&5t$bELldhI}7hs&-llM5I$p{boIYOFN`+T-h$*- z#zc?m0#-GITJ;?Rf=>}9Pk+R>Xb4!t3*jC=9?^45d}o5u1jaBhHDOPhl{7G~Zk~5WD zRo@TCHo5d`FAPnZ8dN1eEVQI!x1D?yWcBpHrQ_N)4tzqgZ0g{)X(nf(ot@yEHuB05 z10p^4B5|{nLyONZh3;EYug&r`sdM}~K2ef_iDeh*iDu^jIOIGj^nz=+bw+5Xu`;1$ zl8q1(uwv~2#>UFFhNL>~7PVSfZ{@M1K-9BUf*gc@kAZ;w)gGOAA`8M=UOa4H+d~}lVZI6q=X@~XmXoNxe~l66q}M2hTl=fjAKet z_(K>^mY%Ai%<^;^ev~qgd-qw7o_5AbVc)7<Is;^v z4xdu@!k;L@jkC%jPpqy^+@BLT!kBAm15PIs(2qmlP)t&xLEmmV7sV( zu^`sUy1+znE^-#$Dch#9;MD7czK(GMp^=TE%Df4{DIBuE-uTSQE5vKP>DDsyN9kpI zsCk32I$U>e9g6?k6_u#jKS-JRAs>9lXR$mIeBI9NC6Lo_xxT@>Uf)usijrFscwOHK zMEB?t*cr=29y$0)It2pN7zfXraTQ9BDHtjcXU2=^#t^&7E@xMtz2o)WJ~@R9(_zDw z$rXV3d6Yv5cImj}gT(2S~h-b5{|fjnU@QFOES!yI3YEJA+FI?@hDavOEhp-1wh}b;%&A8N6Xq+}Gi%J^401Kd>G1;T z)1|hI=T=>)ohAZ(>$niuS}&6ZTsD8M^qUKRyb0r+j_P$%=B~k~!Rk+?YcRGvG`#qq zV-(o-PkVy=y>|pq0e3A? zXY!kKMG7eY35~DoX&1EpyXK~MSbDIY8 z?^wN^2AHM)?32Kswk}_@!G8g_ZA3ErsI6*84r+b!5A;SH%;BDojH$@vFfAA2Qm$CwSZWScNupbK$9cNmmyrl(E26tHow%BPZxWBb7+CB%>o6=Q zzEmDRNk&Z?Il9GD7|gQkousi!o(rsh+;%RxK4@od40UM7w%#z68=^sR4ps|`mo^8S z)oSn?=Vw9JH=AuPY2kfiv#E{6XI!yDPJ3RvoO=#Fr*9i{bOC^v2DP4#2~XKmN8r71 zV!(O)q=sAZidnVYO=y5PMA5M9M&)=h%82!x$qjEG(id{<}9Jz_B} zJ)%K4c=O;`jJ^4a*6Z$U*!_FXnaaL8QsX+faK+`ae=JvB>!`m;y)@3K!1iRlkZE1r zb0=@w^hm5hJ;i3c=K~pU09{%ZDoKuj>N2ld|1<`!ismi(z?#^0P|wEp1~LRSR`1h!#78jpq}NkV8Jb&o zFj|qov4%fs-O?%=&C{D8d zv9`FE%eUQ`AOG570gKCecip1(A{ce~!NN)&xJSds5k3&;|I^yErLPpqZI%Vy>)jYg zB$Aetj?>*>FYXrvn6N)hhZVq1eHH9qmPB=2SIAQk$>5^0<2k0e8~i>;X;`c1Gz~ILG-I6C9GNT&sYW`h8)q9x=jk^!pr7n!0gVlLF?}ZZXsmqa$~CIQ#zjozm>7_ z;>RGy;x(jY>&Lb&B9t{b2y|8W6?Ol%G!L`Xg)gCsJxBb0Iwo+2*)5^ped-&1QBt5R z6J1tGg%0I`b5lv67eos+2^G>_zwdRpB~|$Oe6wKa(taEvaU8)#YezIB3t7TygKjtv zA*NFF=z9{B$10z4kQtA>Q(-?~`#jIfO+`JKxS{A3Lrw<#Hf0L4n`C-iufb&K(+R>S z#ZozK=kJBDfW)5?8Y5957y{tzfDFs(`ZBKC>i$3vUhjiHudWa2u3N_=*?`)RL^2rz zr-*C1k?GdP(6PWYf(o?V+8pyGlgCXN5{!RGkJuFz$RU?G@ctr*m05X;F6GTUpzyqo zI^gr#n5TR!&(mF%zctZ>1&-Ihz~^$@>o@c~8>gkNA2(5rtaX&lTf3L}>Y|5jQbP=1 z9|aeuDbTf`IPP**d|P4s>M%1WbW5{ho6nX4cXg# z8C-}nAohvgoHu#S98~VaBGRQfmVnuU;T9WT*lC@bN>bp|Oj z0;30~m{|3#rW!WXt9ECilf0(;qOZzYbmybWr6BhZ<_+xkXKu4;O!lsv$MES=lYr_#ADF_QK6$#+}>u0bT+6)h!7zjr5#pfZWBW3>i} zMBp7SBKr-ok?AjU>Wd9tQBZKW#mT~W6XU-7D1y!BZz&`B5^MQ39j8CHe%@mTDV{3+ z^|(%1*@2}^?>K15?QX=aye>ggb|$|?j>8&7D;PznC**03x!p^?%Oh*W&qUr-->3EmMi=hTt`89lH*I1z;bPCHD#u?cw6tv zO7}gk&~rHGPfk=I?nDOUccy$|p`uOKkGtiuPlFu>li4hY>4U87{iA7=diEp>1ByMS z>Y=$8?=!`7lx|+-)2?YM8n#=#$jvy2L!T8pVar};#h7L9Y|NzK;~sPanU3tvfY--A z`zBR4F4jO@AjXz`W8sC_XO#mTr>gXMwjxPW&z}BEr3PvGPKzW^p-TaqAJD%O^pq9V zX~(T_`<$1gBE0V>YB;q9(X^L@+(`7t95J6nQijgf7R@{E%TVXi#GwIfF-`wWciYgys2#K%b02Z*Y&XQ@ zWnM|Jl&sgqZIQ|aZm~H8;0VxcxO(@TbPY49Fj!{lJA+E=kuS-oIvS!#QKA`P4Q2R) zFQ@JkCSu3!fC;=EcDgE8&!4bibefg=nC`DypFW1njGQKDA5BTNXtom`I^-b-sXIIU zawfZMeGT~gdgJW)idVk9B@X(o^DT9}SUjEXtK>r*o zupzsFg__Lz&g`?s=wcpnO%)|u*jgqN?6RPtu7Y)9XR?T=qNdZPw`!M@5nKjjbiQ;e z>npw7F+h(V$WkukofL@uP*d}=D!Jyr%K|?1;)ea7Dp@i0Clb>;ZY;dYUPyuPndEoRdcLyLM?*HQK^rI?=!*jg65er&QS+R` zAa<8j@;eWXd~jhZ{qCNj%m@VgVK6rMd@h>nfb?nH7cu|c!TVWUn&Yl>c+ddj|Ga^=F5zi2S|7IJAD@dOPy5@$3~}PIoT<*@MRZ7xh;!WwZUsa4h@Ta-nH zauICz?u`-;)HB~w>U-QGV|epGNw3_27}{Whp+fTt$Ok}RfyHfGZM5eJ#FCi~@hqR} zm&7RCn`}%F?r| zosZ!a1BWv=a^PTHMdr(#t^H=&apl_g;u(gv%Zww;&lrKA60w7iHi}Rk6j03u?7wbM zC@)d=uK)AdjbZ{`3~y1`Wz{cAUrskcQwr(L!4E!eu8F*%k?+HX17B4MN;i8of9qJ2 zORo<>no6lFbJ5scdv7Ad{L}FRc}N~rl90CV>h=4@4r8e&s(a+6QsbEHOo-RY^TO!a zC(;QfRp0g^>`wIi@;>#+GFcT}AKZ*dbK64}L(L%}GK;~tgI^!ecN~ALn@|{S85a8V zN4?hhS*P>;=luoAcFdq?n!%*XZr=3ASl#iA$*q zg&WkJDIXWmJ_L^g)UCgb05dXe;B{tm_;1145H6v`1jbh5E;onpb=QnCZ_Hs4rC~2% zzHI!o8U+V?3r@KNL=OFZ$W#oM&2MEpEk0_2RsTU!x|e(p zU6KYz;?|@+pZY3$f60LOD<(jbm&bBho^@(H?W&3rTVgdLntb;R7Ma*@j2LXOOwAXer3Lq%qRq!C9F zze6A(&g(oU2$$g;?n9)5@>dJ>Z2WHAhMmrZb=2YJl1pdszJ0@VgkEK7-FsfIy`)kq z>O_R+Og6j9S-9%1%7m{y+XpY2h}7$d4no8*l&e;oO=ZMSPUx9YuhpA+v6v4ywB)&~L@X1gJ!) z*kwDNZG81HNJFc6Krc%9jGHD|TMI}PV<9Nq}y&d$4eei}( zi8kkx5E3r-5QU}ZWz+aZFwZeeBDF4cgt2Gfd_b2(yOx7c=SptkHxD{VQBvY!I~ONbB#q2RK%>g1YO*6FlFAD{c;3L_JJ)`+I_Baz6%}Kz&hpp1IGN0 ziMV-^2W{d0>h=*#K&^pyBo2T)H&Ix9c+Rf>V2o|_9brdf%&CVsbx&=z_qG+@5d0`v z*-WLHj-ZpJ#LC67YZL)|QeE$o=q*3b_2#l9Hkl)(XwMiY@qP(gSCx-?NEMDrL^sb) zeNX>SD|KQZ{LL}|4Rt%ZRo$=Al;WgLrup>Z-L9o=30>=$_ZUCPj5{72cL;9pk9shn&*I#a`miCz{mt|0Ray^vQXe^u}t3Ny9XQAtOdwn*9(8}Zm0VWL~ z`%oogez!1;tH%6g+;Xn=@1p#M~JHGRGa%(3c;=pxPJpz}H)Sd6!h&1u3t)Rmc~>e^0mH>or6BT&r;9pby`NbjmQf;3xozN)yrQKKwJVnSnt97PK z$@F`lE7Z-{;!p9G${@lU==;9vywirY(G7RMJB_^a6Wnx_-Vd)7@C0@yV41ta^{xPh~4 zbaHhERw3cadoqPil>AOX91|Mq>xzR76ME%{G>A*4Yj=l6ALPPybIm8c=1XoXj2 zcn@c;=F~R*IVy9MjqbWh`UuX5{@_=xm}|WS7DAhc%@mfN>o@P$EtM#H_Du-vqLVWN zn=sFOR|}y|jjXSBKb1Cm*_*sulhCvrv{WmF)l^^Ht`3Flv2`Be4O&E#jodJ zx>fK+6E3$4*ZOxIuQ63Zz5@L#Q&4W!RooRp)`=52QOV!K!asYAUOVB}+=4-gBbyWM z44V6#rmtFIZ*caDqV%s%+t57H>0PyjZMxwNo{3%f2Nz6U4rD%2UPo>x)xz1YTxT{F z+-H#Kf1uQrvlpB8TK3zHGS^NbZiN^8!vvfj){h}}o)3SbfKOOEWoVbVD?C3~Ckncv z#M71d7Fj~=-ZF1HzZW7dMdC#0%ez}|NPFX@?krC5tC4i4fl7X4napX^P&dDB{|BRf zUwQq+PbL&_8LS-IvLc}+$J}6F><>wqB96)#Ge-Zt)8sUaF__HhZ(23i&3wJnr9JiV zY;?@?ViQ!*=uvarLI;NSRs0{i-a4$w_l*Np=`SsUbclc=9g|jCq`OOCD@p7+kr{dw;D`K1|uV;641X9DWS zr9p2$KTvw{(*G@=KTG|u-o&?`HDrokiY&)!5I>LY!G%P1QGT3Dwl+?lI^VrmIQla( zG~eFpVjjmmcO-fH=_oVP&vtV-)7T3*oaMd+TS)t@y*ym6e9*sA(5qv`7mdU>q&6U= z?-)TTWG8*|5HX$+`hIxUoWC24T4W|?Mn=AZZ{Sq8`J469XX<9(=yIw~V3i4jX6l1} zhE&;u;PC+EABS^iZ<`ocLdj(C?-xeN-=MgE|5G0*L=7~1+$f6#L93DYc`u!l)u|;P z1Bdvmn!|5;&D;9Mk+V(;E-w9zS90VIJ_Jrj#5})=&h4I( z8OK1TA3n7e4%bAVcoqq33qnNkh4CM+=q=Ch19#uQ2M~rdx&seit`B7sclokMVGh>E zP!7-QmiUG=`t{nXji+TWikZomZw<>`lJ#5^e%Jfd6s}LUmLXU53?QAjnJT?{h0k(I z?H_adY;^M{U2e@j8W)LG@RZatpC7BPQ84`b00OxgM#g672(mFiM+TSU?<*q4MCzvs zv`oKo7Q{C$p|bJ<)E&iv!=fnXykfs35;nOUL%`>DSVo(SF7c$Wop!hUtV?ke#5e78+j*HFYD-ur$@ZQY<|c z(()1#$Xd^D0$&R)&!2^r=#WYy@F?ExqKDx~QQ4Qj;{1|it8TyD53ze@ioS7#4rzZd zH+RHf=Xf1(e}4Wyxgh!D@cy546h5QYlok1!Y&l8v5{T~_zVoZ}eF_mF z&hrxEX0od0P>Vj!1ni#nMv*wTXyn*FuU-~fzsaZ>R+62iH}m$@;$IXIn^eWCV@S>+ zNmDW(D|s|c-*+7`8YGW(SW({`Y@pK3l{>9Xa^37iD!dGAMP**C#vQvv0l z4U&?ztZRb?%S(9=enrYxu_p>q!Kgd8XY-qc)3zd?0$k9|N?6GyNL!O7f7WuQ70?^O%T zD(wA24cCnYUn_?FJ|KU_P!-KY$BWpu(^P=7TRWA%SfgO;Dq9~5#KFtA7zN}tHtwxF zOd5UAI^y-gj}4;>R6^TENFRWR09?lSBD%hX2sr0)``e0m7a#7pHMBpyvV|M5r>6A0 z0Z)-3q@Ie4sQU?o(xlB9`zw8_F^sv7Y*uqU)z-&z&O;_KC#)AP31XId=k&4=4oeiN zp#C`Y0luFxw7@mBV$@7#Z-ANfy=M>04ll$j`~@z1kDI&3R3UKoc4*qk*Fy5k1lC$K za&x|1H;B=07-_^*MzagiCNHz)5K->`Fef3n^KtSH-w@x|GUEXfq4dyIxn?mt8k?jPdvMj|X zuo?nplC>hI9!XXdP}9;N{!edl|FlWwtMdL?3Atn3_1i8Y8UjIuNhsg6SYElZ8!q{} zbfVz$Gm<`wtx3o5`BY}!9$DLd_GTkY}{wH}T43eq*-G z_$QFp)z*%*!vsM0a7{n|wih?yiZ&x10RlM)ZyZ6hxwM~7Ho)?aTMxIEXnrraDhQJ* z_!yIfbBqSEJN+;NK3j*Xn#uH=y8H|g!>BPx0^h3bF>E)wok z9z7@7uoRP#p2_MWMQAIGwbUWI7u4ijR?CtLvbG%{lgA8j;sit=28DMe&np@l2=P)S_pk z&UA6&N0=V|i|rHG2xBJ3srpj)w=<`~hUqK)M5biE-=`*g$WYDyk+!a`RL7AIdBD^a z6yW(Lm9xhM6NY|oskXYKwlV~>Cy1qOk+%XK(&Au$Y}ae+KN;$9r&Ds7O`d5d@6m7( zNix!k=`mUZzpUvC{H2q^zL`?W37nef*U{416wkiz1aktE1?j&Ztmqzu)JMrm3@Y3- zD57g>FO2P4kKg{c_%oaa3Po{s8KTala6rnVSf)1$|2)jSL@CNTobOH@og+fY+}=&h z%-F6V%>TL(k^(+T7#u5y#=;rgv%-RYRy0!O;+y_-EAn0qA8S64$>X3?ZD*NUU9%5d zfVa-I`@7Q47)Fmsesy*ww`8})63t|3*8a5vz5*>sIWanLz+O7d3_LMACfIUp+oXsN z=5xrircQjk`NDuJ*=9cfc@ix|!pKA*FKvD=g)V(Ylu)dz29{pD9YGiuoDpb>!))8X zFj{N$GBh?UI^ZS%O0dN|V+Ly^0L5L+*rDSl8(EV+3$f)LPymB_%0mFG`OY>UR3ltY zM{(`3>76VR`><&9^4Mr-xZf9)f>N^=#w&!{(^L!%EUN9(#*JQF`QAUj zvHjLzdK!PfIbjcAqG#>iU5Ht4U4S!+L*M+a+QhvZ(DHXW(+%AxS-aCkp7uh|2Kmj* zJ;QVON5|(7>1`+BP(eX@|GmVmv3oq=J~?b6i#m$!BR>0A}^^*H<+%@ z`iy$Nxr}(Oq3Fd&7u2hn`DWG1c6;bN7){c0RhdcE6!38@TJXEFlKMl^CYZ0~(1wRJ zq@66HCNcOK={{V3M>kx|*Dm@nIl)3Q z?OO@rvr?Yw;|d!CL8owAF3g1NER7WJ09bFY{eh&j1+Lc_vT(AyEPRg`x=?6Tp@gGV zsa%k|*HCCz|N8gZ?`40Y5cR?6sUZ~%qGMEybXe=nB;F^eTk33iTL78{F7GW(VuF!a zSzPzGB=J2?pDax$sw-7xv}A4Py#$4<^rVNTA%@Mdq=G^zuWVi>DPJ(-q7qctS<{>p zP76R6RbRgn%r&_fC@3h@o0d61^(Funl?PP7RX0^C$W9KjQKZarQii6H{&C^MjeECF zNDgH%u(2+GHnUi7%5&Ex={Axa0KgKUPa8{#QP;6SOluN$qrqYXw|hFKK#6wa4yB#z zhe3J9E%UJ$GsK~9dK2q3FH~N_12PhleSsjKhJmQnPsNye0&_24>E*=c$)0s{G!bl@ zeDsJR-uvC-XO6|^fuN%FHijO*kY~d!so}VSr~9JHH2bc^Tau6d zD}}#9OCjEexv{LGRx+8**C3b$^evu;FEh}z5ACm_^Hk1nb8#^b6uax5^j`jbL2j6L zHl0j}tQ6UsZ#2-4N1B;rF3jCnw4PHq3y`7FhZV#V0l7`JjEIlMnFqvYoz)VQ zFCzXI7O^C(3?W0wR_|B()l?SgH!$iakAXHC{Ic>XL^UGR+D4(2p{`#o%dW|n_5*ZsEORZ z>YXKmhn<4*#Ka@Ko&bP|Jy%v2wbR-2)2+@ZtV~wc;i#kt4_*-_OVJFb{hzy$rWlE4 z$l;c4-8CYJ^uY9@!a3~HzjMU2)dRg6?R!#xFnr@hckmol3fcW^_i@3vUxVuG?d5|{ zVC=4wWSjDd$#FVUaRL5cQ>cXQ1_CMUn;C z1y>s3V{GXI$ts*pnZQR?MB#>tmn(a88D~VMq0-dhH|c>EfGW2FVATOva;bo2F2ZJO z7NSqqT{A}{9XvzEI_Viji07>Ktpm6@>D1@VvBK3NNGaR2_gER<@RxxyIYrE+4nfuJ z6tEXEZ%Ji4G@UfE`TRR#ZpdWLqiB)-^Y0Jqa6A=ytA*3l8-;=PFEbJP(&MXAyUrX<;2EyES8rWjd2vw zH_1_vZk8|Mf@Ki430nO>Yvx2x(gkb&%g|jJ{jbP^%TdogR6fhgm4QEFZguBkIpL|@ zJ5`bDl>5sM@rPJtZ*w5k~2rx3OHiYWNRv~ zbTzU>_kPY9HFf=dwh_adXlv7l4M&BX)QJR&>^BU{f-mG#rvzL(G^9%R&y0%j`j)&y z#P%1p6U7hbSV<446Q&S;8*@*cVzr~qIb~&WUY@P%)YiHgR%N)ZYWZyXI3A#!=EQhD zf*9i@yKSb9X|+nGbePI_uFBG6-3yEwUYqIYs)t&+KYNI`3CRk{2sf0BuAd$eO@eCI zWxb-uqE98Hm8tcO78odGsM71Il#FihG~=s0-698@~( zRs6b@_uKpdFU0f$bIxCW6^&=Hyic^XQQr9G%ES!)U<${RrcMa$G>qbdRu&0iz!0bz z-U6A+-yo?kUR>AQBW}3!QmS|Ekq4OLg^T-dH<|yXA@|F}jFvPq841i9E6d;_@eZ3c zIK0|OP9coU>+wk48Q6w-~jJiJjUo%c6{_ zLnHn5GU;sb>jI-PCv_vYxkS;j4@BU*Y0Z|u zjhQE%jr==D2$WN1QhGGb=%r&0sgwlI>!ljyMu%pgd{;(VRjWJq@O5^e4>&ZD>4YL`xn9Da&}z7qC34OWl4xO#?n z^sGPRa()D%IA)e$vN2XMPLqGS^C-(cy0CzJw2gjz{hB^sY_sTd#5j@1_p?R1Dae98 ziEjM1i62|j)*WX2&|5zAfCLp1KojY=yux4NcpcyCLo7oIDxl~LSvWhhyM>-qFTQSCYS(v$SvAeO&6r81bZ?rN_7{PYT}+JEyG3sYJke(v zkay}VtQ7K+N0)~Ur-3(p?Ot~)fiKpNf2Bid=+D_hhnP$v!!L-I%r7_jOlv*s<&z&z z;2c{JqCT9xZb$LVhLEL?cu0fne(@1AP8K_wV|6i(>M052S?YO8SK-NUsC>8pf{q@i zHqiL>%KkAU4W0c_7D*V_dXCmBE~@md4qDQa<{@KC@FB2uX2&Q~zkjgcYYLf7F^~I~ zq?s7=A9wX22x%7<#;nb+?fV)y$TS|%%+%YOR#=n$IHPXiZv6upIYN*-a2hBA5O0lq z-T$JRHSH^I&VNqQeE60ZmG6n8k;G%4YSN&XgBp)=kgJfNZSL;l?NU1K4nD&wPiTVb z=ck=PN;raXD`H)#`Fkwsm`u>3jw~0cQSzE@bD3zUWe)XdDOzX`MzXb8c(y(+Fq%R! zbQVF?Z$zrv4cKIiN`uvNQ4dUjI|kM>Lh3{@ee$86#zQ7Ck}$o&2Ki}xL&HXE13D^- zrX;w)N;hbW6*7IVL;`m~tTfk+W5=cQccZB)i4NmSku*@jctlGRNA|0T?3i9BC|E1R zeYX%#VLjaV;~?ncQCyU9IMSX*tyJ9Wsf~BN(=|L^-sh#A= zPV4hT%Mbh~4qC03-WjS%0pDHDB$ibzIjePmqr?8z>Nka*p7wjoM~nEs#l5Mm1=(r> zKnx8uZzFI|H$(sIwR)ww^Y7MuY_|3^tjULGw3Nuqem{VF~4Fks^JhtJzS+BhFF|z~jQC1cgnraT&TO)EjyplWeYl01 zimgU(O+Xma<4W$vRgozFRZELg(=Gvf41e` zpz;Ng+=|id>|K20ru2a?AKI?U4e^U4Q*1=oEMr-0QhlGCj5@Zh(afMIpLH6*w<6%n z>Lw$>qJSWQ)K7<;v1~&ihqMaTTY7fr>}cA~Y-}v;iIK_#KKD4mqvrMp{?`X>jvt;A zETkdi@C~;^0Ye?9b{|K*?2I3>HXwh7MKFzeSxf`pnF^%8{;s48j>PW)fBG z6%ppK+Pnri3{ElhX}S7aMC9@>W3DNin_&WX=J3h~lFVfco>GLF4+F~G<-$)73h}}> zV9+K+AF_LMw$;I>s@wqOScjWeHQ&%=O;Q$l?OyvqX^}p+$@x2{B?tlrVQ1whZXA9lRp%3@!SB=(`ZTgiOlKUj^!c3 zq7}b0gG)P6a4pYH%TJY2u#VK>7y0ojgmF_0dViu6Fz{OrdD10HTPHGeK7WAHj_2pz zdROsLdc+<}j24$Wur27#&^&}DYh@ndTV*=M3uh93ZjUq{ceg3cytRDg4@*-QOv`tI zebNa(_vbd&itX0FNM}7yj$mJh&q#1x+8MDY#3w1A);bt=4a=(YFNQ`X1&oplBF}wEHipQrHpMSe1>N-!VH5ytLG2^DirMof z$Eus|+pshXum&zqrgvY6%2!&T-WwWwgNoz zXf+YBqB>DixGW1ni45uF{)L5{328lpEMCLgnS-UsnAbvMx?0Dgx#us!hpaGl`+IEb z3j1D7+!@3${^kp&Yj|jEG672}`RX1w{|}U+s%?vQ-Ce7@4a_&ZB9mM^U$k2(R&N=? z)deB8zjHdR2UN#SS`#;@q&hP5ou$^mWqP{EMJo)u%aOCVxshZd&%=`np;++u0#-Us zA2<8=FYO=GX9zcmzRn|(>Hi6D5Ov-Jf&jmCa6Wj_kZ7e6EH)^BQ%fC{A4agZp``2u z72oHvt5SH^2@SCjpcS%b6C3qW9XiL0=W<%LE#)-zWeuUCL!EIi+GLi9Q0y;ynrs-& z<;w{3i4jL^Mz}mgj`!YF=0P+(K$6B?jXT+))(-;#w}0x%h#Hf9MqJ0s%0wT-AIT3i z=qv9pm2tL`p6&F0&o2_{uDeQpXK}M`ex6TIM@)P=>Z0>d5%mZ@rl1dkbChCm%LR?v zdpAgXa*{!?(3_jd4Y%QvR~v~|DF|}d!D4{T9Esw_-;69M*`q$W9x8oihIz6nSEdimGjGdg<6_Wz?d-ogJ+r&tROyM(KEDOP-}11gU! ztaqMJH!g4ioT;`#!=34d^c+4UKmAcYUd_iHC1*5Ylta->{QwGPuMqokpsi97!4 zTCyX6O7aln-qA7AD*5&PPx$1XXUPm7MQ#F®)uM*ZmpLxZY8L&Phw-i91@Ov`}! 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

    |BF#Q1g=Q?yk}}z7TL2%G~CY02=TizqLk? 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�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 z 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 E1(OmchX4Qo diff --git a/bi-connectors/PowerBIConnector/img/pbi_service_modified_report.png b/bi-connectors/PowerBIConnector/img/pbi_service_modified_report.png deleted file mode 100644 index 098485fba79bd7cee7000be306557b8a480a2147..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1412270 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≺1e=O0haBFPv4Y{Ea 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%0AEZJRv1qs_l>{JJI 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 z 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 z%0D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

  • s(b(kYhV3 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

    jOtv%FaED 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 P)A>|I=SlJ7=i&bkYR*`J diff --git a/bi-connectors/PowerBIConnector/img/pbi_service_dataset_refresh.png b/bi-connectors/PowerBIConnector/img/pbi_service_dataset_refresh.png deleted file mode 100644 index 4170494d8ac39d2903050ba6cf724f905ec1490f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57597 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 KUdi33um3N&6lkUZ diff --git a/bi-connectors/PowerBIConnector/img/pbi_service_dataset_refresh_history.png b/bi-connectors/PowerBIConnector/img/pbi_service_dataset_refresh_history.png deleted file mode 100644 index 3810003117f56d0e81ad7b908572bda9e269de83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23171 zcmeIacU05q+AfUaj5s#Lg4ARXktQIWP)BJhQbO;D^rDf_YjjkKG*OClB?3Wu@5GTF zND%4L6bQX0v;;`LC(gXzyVqW4eP?}ZowMGv-?RT12Qm4T`?>GyzOL&jk@~t?r%!O6 zU}9oAefyTW0Ta_NXPB6N`hNT;@SFIJ;(GAEBVGntH<^kF+>78ZKRe&hxxvI#7I*T% z?icX)Umx8v_hMpV<7fPL7>5Y#9l+6=F(&w^(EdR~ znZ(Te#V&8XJVWURQvFx>@Z+)PIo?L7KYGg)`T5l?mn*S98{Jj=e06IZx+8PM!lKRF z{p7Fer^-r9-${OZd|Ht8=U<*4;g5K%|CZd)i%^a7*|nJ;pPvlM>?WsgQwEAHolBZ_ zzPgt*WqA$lW|GtAJ3=e%l&bHW+41dvH)IL%*_Ro%syHmx3OmQd^qBv$a0PSdBf6+! zbE*BlGv8HPa-LiWc@uhu2wtvR-N=dM;2VwZ=X{5@vLha{`VQLJ#l-aS6=yc7_b3z7 z?R@!skAFRMYqx`Qfcu5Y%#>nIfiGfH zJ69Cc!Y^*!Bpx@6b^iQtKeVkG9SIx7xS_pkRp8MP*%?0 z51(l-Hx*1Co1*RPuQeddrZO-b+x8`PAyDbRBJt7dTJ}1k#7x^_5{+y4kAU?y$sGIE zHaGkE?*MXrdT77#$qVW7cN}Bx>$2O#rE~us#d}9xHK%=WUGM(BscaJbx()U}|G7nI zb1#hRVJGu){A;zp!|S1*lBB1w_@UqD4Z@E#pIOUy@ zhN;7~qi5v5&A!%ap3e*l1C@DibXE3LiIxT7xKv@`*GF*5TEjYxXiFom==FaOhlZ}z z%}+jRIjy?)Cren!P`|a`gwKdw_~{Ot09DF}eVp-&s)d9%D-CAl2_Z9YZrUj#Q@i*_)YHMWT`N-yRmL zr*hJCqSH#YPwabfgQ`=m%0v7iwxrYFbG!xjA%-h)X3AeFVNFS_aBb1j; z>g0<%HO97Nm_;>$Ocz!V0uMGj!oT1(jdU3`d_9rF4m^So8W~X;{QdbQry3T8g}34; zN_R`xb74582obV;UQbCP;h}6c@*F7S$N4|*hUZLFYn?gXHA*fhX$};$7K8`rMS}AF zIQQzu1tZa<8tmcfaPv;pD7mvzZSiI#F6a&e8f24yTtJ6A5er_4+p9-nluUtBK;B`O zJ{0IGZx1|WQIQvhg5)a+npjo=<38y(71FOtGh+T=zBH>8)8ALNi=`ie#JqK(9gAlP z@9@O#RFyRCPpqpPY_xdoVglMZoIR$RLqt*H)OXPUx*2|;i+E3J96ohvJt)b;Mm z2PgIDPxK8atpy}{GM1E~6*sZFDL0b`hf&FtUKFh+bh)OyfEnWd?N@>Hvl*zZKCOyR z1DsN;oXqdMU1MQ?s)%)*mK%Tc=P#GIeFoq#lTCzDth?WGQ4IlFyol%KX_!lOpWcc3 z#QuT>wbx=<^KfGHX<|w2{xX)fJnoq!KOQtm&MbsFD>My(xMkvg-2n-DUW?eUR`1@O zBsxl7E^c@zI58;It3(z+kpxmK@-CCr^*J>9L!xm2eY|$CZ^D{xsXK#AE)AFlVR~M>BP>1Ttir9-| zkm)`{=J2B8fQ>(ypa4jAm5O=8m zw@gY$CU{MjUs89N6WRAFx<|803C>K(GFW) z(xft(rBgvBb6P}Yo@d(PP2Te|iaR5LFIiL%Hm==;J7b!JHNWkKuJ4v3-5`Rk3vEU6 zhyFJ)h`EwrqR4!PpUs*IjoK~eYol})l? zxjC|$HmEVKE1_>Ll^#l6v^`uhT@G!3Qrt+wy-IOD9M%kx0$B}>?ThH9wuy&Ihy|X~ z7=M{{xZ;fd+M!C@^l%Pkifx*t5d56*55}rx*3AH%>Jhnv{z9A9NK*53q2E=$lf<-~ zcs&(Lm!9S$9@)Yd?^&M+_amhxaXI;|->TG!$90)`yg%eCV#jE*Y0lai-0Z34mJeJIy}}J+DC&wX7aT zc8jti+*k`P|DNPWp1whzXzYLltwc)^Iu!sEWaL&EnMUc$C7A383Ws;zWKrJwTxxgO zK>t{&{GTNutL|!x>iM#Pahuwyl5>#=R02v2;@6&YQq- zoxdI$DTTPEo*iOOECI+@STU9+pk5dwpRt`M zcRNI?x3`A)wnF8pb;qLXRc0op9ShwGM#+f_Ge7}LR>XRd@p5{qhSus-9PX0UqdyP) ze&IW-iHS;Oh37)wPM|T3j@?P-eaZ>zVv`R}#GKKpsle0sp!6AiDjGTwwBCdziC|w5 zp_ERoxpdks9@f0NN)r}Z`gNFAB#u#h^H*Bfd)U7eax|REDVTF$#I`gEW5q&yh{&uA z*)FKgU2KB%QVnzyYsy*PY;vp|UuB&@f3o;V33Pp5k@Gt_{-%_zem(k7O|#6(^-Tuh z0GMblgpn@i8^5U+I%Hia}Dc?H0@4o0LfNw}w3Zv)r2Nw-5D2B77Z9cGhr>p2*vkni? z&Cpk|YtYh^kko}uS=?o`K?d0^3EeIrPgz+9G1=TR$~^Whz9|Z4w|GsF9!nKuNiOM(J>jKN2e{tK^9(}@9+KD+BR6T*>{UzIeYw1V+ygYSK{hWla0vix z%)3bAW!6MAxdTv-M*|aeTVJ%p4@LA;54SEgZ#+M*E6>YyEqiun3;`839)dg`w(&|j zJfGN-dFG~>cEyj|uQaO@^+P*Cw}h5S;mI`*#$+!5fphZJ>s33)!MP|LE3a7H?5mXx zz&rvwc>GRrnJ5Dm)&WHYo4lbH)HPIn!~|~-nmSii5EPaH?}6Ug{S!3#^P?(ACraGY z&j-uq+8l}fUzvFeb4FoUf2Hnpr(J2`WWTuO-h0Wau54-9H`xH(M3s99V}FLjlr}yd z)q;k2?@$0ba{Mx27Bi4)skKg8&HqJ{cpPpndf)h2!8>nO2tYgl#XO*JMrm7Ki|%@v z?j^A9&{$mC!yosmCuD{e4R1Bz8Fv#GEdV3f{62(s8nCvNj5i+P;PrB&ao?q~D0f>U zF>Lhq888eCauX$1??QYwMBNQ_GQVfk42Vm$$LP61-~Ep4otx=MZ}h3og?&t51kR53 z+p{WZF1xDW5Gp6uz5bvKvpB^y){o)FL8+7VKJGN+4T@2~*tY5+FQG@Cj18{h8ImD>>g0OmW*q4hL>cs2LXFqYKiDKD< zXXCZjcIG0lg)qqNp=;%26vnFgkNw)2*!?v>tmVVB#o_w^_D+_0$zrA9uyOyH7)poF zr-l8d%SP&zojTCHkIXyN7$UfrzT`+c*1KvLf;!j)LnktZ1!^Pw%f&-=BJAneC8s>g zsE7`t7$|Vo#FFCZ{pGH!GkDn~z&#FyLgHKvyZE7$7~z6hS^!kRk;# z_W-###dS3kP+Aw?tttZvPC%hhu;tYS$%p;xXp3A-Bf!?B-;@OcG-sfP3tANx<4Vca zzN3YyyW?KHWgU<-nO?>9#>J_8;lt5Yyj7GTAue7^f2#U{rIO3sBT%@!zPby^Lc-w& zu;^DyKv!i@_12qLA0YOZOtBWsbD*q*ziczG;V6sJBNLpphtU~RYaip>w`Y~(LKq`w zH+JV1Bi3Bc0h=>2V$W&4t3RLarTad2;XuEhB>LI&GSMM#!tBShzLX3I1N`5=BbFyX zwY5l+D)SBW&BB9rr2OGl|IA$eQ7@}1k&;HzOSLmyCj>J6rx|L&qhQ6_NDRuS3RF|* z;V?=W(zqFeH~^$U&I2Sbo7;SPXje9AVPd9lH)s$+&B2@(l0L!UG%Ok-JC;VVwLYVc z$%&QempwI-V^ydNq+bZGsprB^i%eh04dMxyjqi{16*o5`kScd>++ximmq_HWQ^x(i zhIjTdT10rDh|`1;{G8v{(y`(lG2w8MvCSe7VSA+j7|bfueON>aWc`fJFxosAwKs=Z zp;*(OGpVb8=Dr5pr+Vz6duXoTcTmcJ5f0m;LITvv7r#AanXG;=w$Lj+1;_;Ynlh5Q zn1@=noZ@sdO%f7b-~R1=EzYw^lWxqK+I09QOQ=5m$cOxqt<2rV`F)@PN?TfOw1_0; zq}}_rU>xISTN&JI5sef?$qO@xI(q6_jJNkx$Zp8SQ)u*-@%`Qc5E8kjMIBQsPmR_O zPPcRcQX00Fu8!4YdA4&9MR5ybfQ^R$$ukZld6^HUrT}2v!iR$554$h)L#87ILK&RU zE8XXE_l3lk$gGZ@-k6+PXvPZN0ehw8cZ|a3zcAX=Oq{ApC>2;Gk7odXO?590Aax0ZKL8)3y8kP?ZsK-E z&A>8az!U|zN06c64&X0rGPu#13*lTZhCIrY$CEQbsJx3g!sV=tLP4si?v%x4Jo@x2 zpdt6X8HGVBnxYnA_oA?S47X-rga;l#j}Y0;*9-a3Y{2OB#-`TWdoyt?GDCPBxrs_- zi^}q20KC8~60808$H*4oV=UXg0&Wk-s#gI|s%IeiW#C&%r3eB0ic3Uz>TmmM>k4vM z0&oQ&Xd%c>-ZD=3^`E}$yZWgUw|82gv<=|N;X z$u`2mz2#YGq*c6L$dY0FOTPT}r_h6M%q?MwyD6%q_&9Zk7#+Du{~7)IGm^q_$F8rX zAcAMO)&qwdvJpRABwr9jGfupGC>b;hDC@S;<{EXPj}PD_+<^=4!g+j0GW;fC z7gmKO-L4EWz({e5LeQ^t!DG_zyi(n4Jr4yRdv^g;TUerW;}bOUO8SD@fnwphC_La$ z31l!sC;!|BAc95XJgW(4#%#$X5EPylY!7se&MPHR*s1M$rI4CHz32!9~0081@kAkfcsBSwF?sOR2tXBa`*pMYU-0QyJ} zRmFL>9(;C&p{Az1V{pS(UOLr=Q9KOe0}EV-SOtbRr1axL@ZU2Mr*esSOykGQ!Ysfs z=|HFWlhdY@=$sP)^BG_ST(*So2Pd_5IkBuatT!`SoF{DhQ`7g;h+1G5&9qkN#?P}m zn-V;|zXK~_BN4a*#wCHqArhPv^hC!0PrE&h8TR_ zG0%AdAUH$EGAtibhMgyK=qw*Jl3Es&uA6R@Zt)O+ifsIwFANrN>;*0kbRdT1JmEjw zFe!tttO^1qD2P-{Dyz|Drf~la>M)iD(k-@#LmjjrfwPQoQ^A|55$%Cc?BEUDu$bl^8gyt3iZ-{lt;uNGJqc=dog z1fXRL^%U!SKHdKiof-UnV+-G_hHZiXkIwS_>gwq_JtaQ{y8Q+@iyl05n_)!_M3Y?J z8AVkzgWL`0bdSKr`!LiDQv2D;$9a|AI_{6pzV9iU-{h| zh>k}ArMS<40F+u#B_EJYn~uN#ohX+(G=G1QslHJ=`%3!`AzvfoRwE<1q4Z5?GJ+lm zK(Pc%qXtV|f4U%IOTkt2s_cX27itp0?403aQW-qqGwgVKug6*CyzBe}M37}Z+iK%_ z$a>VLkp%v}Ibe{U3*RTJ(#a&6^MES-fQ+tEcuT+``bn-vHXeFIddIp0Po-s(CH8!h zryXXjF5eCPe$uv+(1G>53^&7S9pVw8QrRAdQJ>+WzL6Cw>y2cbWot!PeJ4u})U%Zp z*b=BDb%rBw(2b&qt8Tqx8AK62#NzA#!|BT@vaCsBJ%a+2C8S59BONr^(Ox7kuI|~w zBX30<`RdOgFQRV!%&=(7vXK$;-gueeMurtcQ@{6v9IS7J9?U@FbQs)j`MP2EZ=7}f z$YK4;%UIdM*#hvQK@3n}Box5T-?R-vPwZx_2hRhi`eFg=N&Aw8_Jv1frYj9EF^wCb zKH#P4e1wM=674(sjJxHsP(;(voJMw?v^r#B6tDwULsRbptPv>SKVTL9vzrPcZxenZf-HG*3Igtwt*x;`D`Rjxx5$LT0V0XW0wNybs6YY~1 zYvNJ6sqbt9`}y5!883pIHW7)#+^i-gPhm@fHr#_!cR6kw;`|`{Fx^ zZ2QCbiG283(Q+jNM~7}Re65W3v4Okqw%5nmPDbNSu6I$pq-)1i7mULXu0_6nuyY-U z{`2mK08dlhdeMUC=4#fhf^BAlySI%d%N@JH9-WiQazU$?w0Cjfd9c)3{2*- zsrat@ochkh8dnM?{Kw;DCQp6M;4c_NtaNnA2C)-8*S6aj0+b<3(hrIOlw^*(59wc` zh;)p7D1oL8K5;dQHHDatftRts{$MR57nMJd` ztJ?+jsB7YI7f{c8U;uWY2l*Qx!csi-30?V|Kq1`5weqmh)GRSX8m z=m#`8op{@8a`R^xMH~NS@^3I_SfccmURoi|0im98ONZ6s^6ezV6&k>B2tRAk<;jF= zTYv|)uW`s|-Kgv&opZFGx@G7&1iT&iq34>5a5kLs(}!`9f$*SjPna){Hj@%dqDils zNjiPE0u_B%I#V|hbM5kXCbHlxmnL8PTnvx3Va(ilwt}8KkJ!lVYzLsO2t0zk8-a{q z%Wu9i;!ACR!~)6AFRh&o(_mHzXk-?qXxe!V~NZmJlPo!#|s8IMEjpO(l zCqEql818j~;}#FHEEUx!{E&d;{S>l0;kTHRJVb|s7UmHgfBe&5#O9Rf_d#G5m5EH> zC}i*^)+b?iMDEL+uOTHEJhf6$hyP-Kgm!Pu0;vz6TIySje%@X|W zXc?!d)|qQqPfl}&ym+y9={dr`g=-QR!J2s6gErd(Ir`ib12EBBi6{sx9W*ay|n%Wm0R2ik?_(lVIDj2k>_=R*x67ry5tmTBMqz#pFM z6&=N83R@b0>i1%}XI}5#W^l#($%4@|bxbI77<>Gplh0d@#1;S^Hg(y-?@UG4J{~|{ z4mYj&^daQ|8Oc8CIhY&HnBXdZGxGP?gKmhJ&F-}3f2u(Rp0aj#jo|PamQDk(@01k# znUn;C(OeoLbS}mDe!p}??lox0?+SkajJJ9X6G(k=j3Lb#Zt!-)^UXa#k0Rtbt#QY9 z8Giex2huWkY~fNjjf^7P;4ohb$S0MMla-?_Z95LC{(#y|FR7dKoY8s|6B|M!XCa*0 zc|a~;f)QtNs{iXX~`SF&lL`qL)82aQb!v#7=RrH_S}bkw~7 zLf)SYR#f}D=lF=SSO;S+Ob1V?hJo6%w}`yJCC`}U{}?*-|8Ggaq#&FUB-i+<{G}ti zK0_A01&WI3Xc>0o7jWUzsh%Uu4C(x@yJ+CQekDY}F2jW+_o~u?zSadir~*6Vo2nFTRfy4>7VZ17f?`x-~i@B=%$`-vQY^J!fNu(8 zw!KDHaW^|NJ5v||{Z0&tu`kHF_L#pvx&=(Jg&#l4`s>h}6FdA*B5>FACu=I^^7oPG ztMC9rca`B)9@Wlnhq7KS#i!*MB{kY9hBn9Z3R@mJ9J!X_#68&xhZTlc2nm;DaO~8l zsy6=pRm**^uMa6VY_3LyOq$)sWg{(Vr)&akdR0fw@_y z14|YX23h?w?S1W8`$V){VTs!$25ngk`N(}RhQKO|Sow}RI;N|IXjho`1Qws%RJ(ME zYB@zU8CMF3B%jG2toaORkz8P)gP~<7S#$gzxVJ~CQdUW2P5**Q;jY_`UCL}-2eu!Y z1xs5hID0Yd%c$C=29}(`!N?-GvtY)-<6+C08wZc$GDVhTwI+_bh7BT&FLh@^W zeVZ5A$Q1({QIbq<=#i*b7+Zr5?eS?lXhbBx0)Rx=2BQ%myYAsO(n=g`!)|dABq5*Z+&|0SNQ00gpFriTCWc; zs(kub#Mo~pXx+mLa@6msUU6l&MVA8jT4w@f+>-W%2Y0_OWFE8%sKAGxm=l@ zIcupUrzdUvu)42VyCi*oA?G^k?R`K`Aq5xg)A(fF7c^&7wXKUn)3Y~`<6mmVFWg^V zNd4)$?T;tTY`!`egipP#ep^@3z=XYNNqv752`L_Z?I@Yb{0!cO)85%gu~1XFcXD zG3U93u9UA$=|wzWZhcmn>(;D3;+K1(AYC{@O<~pTGyXE1HkQJUCG}1(NF%8w&Wc%IPMwHJvX?0@RIBkrCLnL+$+<-vdx*X+lC0kJ zANm$Ich}>x=ORc9yFkZo{MqMa`QulF)^jjYg%wsi)Bry9fRLK#>ae~Lc9#1xoZQBi zced;1BeiZTf1=2v%1K({nojRe4HUkM$}M*~RO7kCe+Sp=Q8+jBCFYu*kE&NkeEG%4 zRW3j37Twr*&|1*#0x>VJo&V(RWRATMW0QpIHZIN`;S|^KIjN1#WWFGAH3hdMQPS-t zljz zU89Z5zXPHz{<*O!ni5(c?@sLedq zvG)j-`S`kE&uwy~ir&+YAQO~IJipD){5lwX021DkI1!+D?khRyehGiSHS zk0>wRG(3}JHJ1!XCGyvGlKMJ3%rq>b%7po(ICrks2Rq)|m#&ZcwTgrVQyXu|yuxSsqLlvS` zMHL>l)EXAVyRrS1>#T{R$C06D#d}+*FZ?qyb7h$B9k#lcDV-|)ow3-j!UVm`{|ac$ z{m}(wXQmxEW6faU?dBXS)a*5|daJZ}x~+zG%d~K3!_NQlVLrp<_T^I}-Ii*G-ZDD& z*vFWjjoj#SfBgJ^qXq4cRwu3iO32j2asRv5`%&ig|I&4&Jv8#79*WA~O)V^{N`;71 zaueSDV7-hlP(CcnOm~%lM+)ZVLzQA!mY09C;hC1XZ_RRqNrw?|sifD5uT4a+kH5fa zaC@^)z1DRjob)mY?BY+Jbqj%~Hi_DErDcCAOzpepWw??_jl} zA>Jc%z7$rN)i#d1!>Sg(Ol}Kng<5N|Fr_k9l{#I5^%e-^_P=Uk(S!B76@8DnKB_fN+dXLs?0e%-P!N0js%uEKK`a zj3PRPQX6g-!V zKMgzj!vvtu4fO@Ixg}{m2lM8|lYXiru&6@n`8-+9mUQvCba{a(a)X>(sfnyk+&Lop zl@YXQC6lx?z;EcKz^$m+9Y7&*CTg3v#`<`i%=uIPIZQO!W-zX0tJN^m$%ALePuaWj zY>;*EW*a)h>*s0RSk!XJCC8c!Kg2*o^0Ao8=lP-$e_yKRe>NQ^qX_{CcG-RbOs)+7Xr$X5+i zIu{;sbkNxps-Q<^tnYBF@aN{I*lM8T%_Am!RZO~T@f=GR=D(~qv7XknGZHhc^Hvdg z7U=%K!UlZBOLdBCG^Y=*-+h9p5Nk4XLy39L?cs}J&9A*T2vWjv%Q~J05~TqOaDyxh zB|-bl!8^Oz@h{`l66CU0)h2FL+h!gdxrbt`m`}MuAR}>-7rm0xwTTIsOk8UM=5B?X zW3pXHj?>*&_dg^UX7^crm^4~9+rbSQNSQ{ZKOuS)W~Mx+KI)%XuKODLx`jQXa6hHI z#_<_?jMt&2Re>vB>w&&*Y0T`J?;zJiBY;f~@LAAJxRm{DCd4smqPdA{=C z0bzq})C1Pg7sK;l&b2rlU$Hvx=HXprx+V-SC2lPxVff`kc4>;kY5q5H1;&dTv9{ z1Q^f54-E>d#!9iTV4}0UI97BOti{ryqRbu+z3ki7U$}25rUPE_e(3xJ7uu$6Mv$XQ zKhD6UGc;CHyoWP;TqM?VAUuLL?>clS6w~YG1=Ufs?S2|7c0XjTEPqmgv#Wj+BU>Ng z=pN$M_i4ek;$ek~)j-O&hw6j(Yf?-rdOwoA6Lv@WU4Gj*|Gb`Kl9b1Y57Jh8J}Sp) z#b$mi!7Fz$miW2O;;MsrMNj1tEm=V%XvJs_waqQ2ljpwtVa*xWC&-V6w9int)U53S zb9uF#6n=6nk>(s((Xu0<$cwb?+@qgS^CG`MVndI{vPmauC)&S>CkhLmV*`fIL&fM3LLLr zJ#!Lex z2k*+)=G_4*4xU-y=qr=zMC2AZv8+%h)EeN(Ct_G@O^^_tZ+u{8>)h|vn>jBu>>QsR zJn%j6_uRbKqR}T>T-ennklYe;CEK3;cgPLW7YjxQ&FB35lMI{{R5oiVJcKID>l^p$ zgOnSq%!xv}@3vrImg^v?mOEQ8uBc*X!kw&`6*s}Pz1KR^*TkA=T0UZyz6TZ>NO67~ zDWf!uZj#Wnk){YcU?a(t#RY?jdX-0XVH=bR5T*p70Ew%0Y&>q1iN-G?&`7 za$^QUj{QxOGB2J_c5>-iyr=7uOU?{*7tOuncrzvYiaQ}iM^~Dr^kRTqbw z330``@v8~c?dE>p7k!V~o|62BYy#dI6sFA z(xLb}R1V+rE>UT~RHN2nt}B>C7!sTbD_$I9eM0I1qZg(N?cE2u1_Q64Ex5CdinTnv z-8SDs$QVP!hj7fpD+wy$^7@OncLKcsU@Ap1cK7s{_1NG4=>j>?sMr6da{e8OqI_rT zs`~sl=VILE4uleghP|_489s@c_YFstyS-#hhHrareYutL^10x6nZ1_s_c7Hwy=p0m znoy^ZFY-$cM5GN&KcHDd`CFTdM@1>*OTCnaSM42BHJi_Nj`zQQzt%HYFYvDT^^%CC zn9hZyL3ozdj6R}h->RFO>T{yZR9PLZ{rWJgYF)+6H+101S8q&3(8MHH)r#Fj3VYJH za&#Ex&6;sk@sOHyz4Ry@mWPeY9WG06b6Hrbh*AMgHR%+`gCRIfnmHiQEyn`G)pI2J zlcfH3X0T0JdypNv^Y&6{xgxr2EtIX}0qvE*a%(P!(_9n-0cCY|l;J!?GqGSup&uP3a?J?@7pCyT?Xu8y$Q5 z13`h2{NG@^*k8`C6P>aJd{&0R4<_m%LvmpZo3*lEw*f4E3HM>T3RbQ~0&`Y1vpsy< z=WNNDP0q67aHhw(j39D!cj0aqu(3bXAYMMB5WRj|KxY0qOr!}+fg`J$1@V(fWnfCw z&IIpLS|{Y&OFG*TgJ$6}33`<_6iV?O`(B?V)b21+9k%(amqK;Y#4;pT@+&X1+fXyi zs-k+0Z&!1ow=!>66PB!RJEWgQD4dX6X^LN}IEg-Qr5aE-jCAYEX<9apJ*ba`FiHOf z1ISEMy}Nn*L87S^`@w)l`a^X(F{fZ0l3zTkL*i{*Zpg{J(SCBrBk z{-uH8%feQn6rzZ6Sni!FE76L{`sXn4d}n=tJ(xa+zs{4jxGI-t@6IuKJvCw8ZQ|Y! zxuDiDL=mX<8|UI(TIp_L<bP&zmji%Z;yhI;9)Zg}lu5yzXmdJ7o()1bqas2|?(PY0u&akTbJl+fVNAA_de> zmYI?rDlAU*J?!-qFU%ps-}nqk4tOdwO>pt$RJpRuczW#?nnMNMROWXzxs^GyAl_K> z8RAJ1zs-u8&96FI5T>2DAA>wAje%kFoo~TRo57YF^z8eKoA-u{Wc;oTGB#PHSIiBi zQ;0*7a>5-a>V(F`3o0xG&ySw1=)&x5m!Ons_#!m<#o)EL6T{Yi)=lf7rCw|>xif=a z)b!xq^-0X17NgS2cM{_67=&z<2jL0~lkWm5xWXhwbkKCg(R@|lBQ2sUZMV+>8AhP{D(k-z7pQ0nnUQuj?r|9eU;oKm_nQ!JiuE`SJ zsu_l|gJNA(WdMbk>?HJQsHK*kVv)G zC!n{hIlI?Pg$7Ak5m6Uo6iUxFtOge*d8WyPX{2i-cH2we8SDrrhM$(wlvgK?5o5In_c5GU3`y@P*qrOikv zPaR!n)RaG2wvt$o<5bKBJK8;JrYv=G`+IJ~uvgXL)o=*~^Ia)NME7y68nr?v;`I-z zJoA@j6JO(f%awG(FAvzuEZt7^s!d={?f-6Mis?XoEui9ZCwx7A=mJ*zA~PQK*nRFfzjbiVN$-ME|iDdcy3r-agqobB_u z6->LOMNBL5(~ZMDy#Ch+gZk$bo+xIou$oS%nOcpIh!K9v0){N8IC@e7OJ0kCmrQ#m z^tkcX#MUQ-9H(3u7+3b|amz10FY1uygBseOWVfcqD=jQso-=pQyKmT3wHAQkigQD= zidZfiMzLw?rTL_7f6pcqI`6yk`DFd4)Ppbmsv`;p6eV1d4z}#P-p_{FUX!ukeZzbD z^=D(4bLyJenT!I*n@KX=cMH}~`4#0Ix{fr{-tS+$>#K{GLUXxe3?!HAl#2CK2QKD1 zb0Qsb`Sf@0pr7C$4)~O3^l7A5OP#Zv_x4XJAKr@2wntk&)a~&7p$lXT5@-V*!h9x| z#6CY%%$k1_r?xm-+U)*(@mAOh1=Bbwk|>2A)bU1KfWtD4=WNmD4Tz6HeBw7k5Cf^q zMJG+eD5IW`7zgDu=+t)}MO;1Kd4wJe#W?haa~5P@!R1}@rga|uNc~Ic=|0tb{obhe zC9YCP?ztdT$M2@sl8Kuxmr$-^`;1^D3BZ3rpR~xl8Qg5RONW;r!eyTFX%!g@hs}c} zX9{VVK|4x%bt+L8i0CuJMk)d=v&s9Lv4o1z4-Okz3&Aad9#MPKu7 zmhD0`;~mp@Vr=@xEwVH`KGbNM+8c7z1m4q3!AR1+BE3i#?S!aK_qAZn6E8rB{7jVRLoBn{Hx*1=jgo`I@g+0hxDA{y}@q9t>TZ z^Y)K55MYVt(e9V{wL(EwIoaGdnCBjz@C)qOy z*Sy50w|=i$xC?U`D%75nZit)98uk{lT2ld+mt)hP>0 z7e;mSZPyhaK^`U#-`x-<#T&{*~ z^kyZja9x-)fA@u(XI27kbfqw4x2=#M7x(5lu@!Lo{L+e@R&3$mp4o^uT=6%Z|v>p;8@?{AwG`5>9aY=f#|_KIY^wYC}be{ z>e4{k67L7DUvqkS&lm;13V~$&_8*278~M!}rnX@I7^l}DCT*3unLdL{x%cl#e@G$c z8Rc5_N6vW<8FNPJIPPBS9W}ESXzSDFbG*rxech>d`x$~RsLbMM!WrTcnkucHQD{XF zVHWPK!7w+n$2?#gQnT>Obva|Y=+=2sq44fq#q{TO7Q0sld<;SyyK^Ex1^SqD-1PF- zLhhR9oediNf7!ZtY6jHjEt^j{lB0dare;^u6`M5S9=mFkIb3KM!L!WEX`Q-4Pw$`7 z>R&b!+XA$n>o=-Z*7^d6f9B&+uSN$g|%^?UuyP1jEE z#3|SJGu?Cjai{^;P4y`Athfw|b-!X?5o*9@+okz^jY7HIWBW0fQ@>~Zb!dSv*d+cx zVEO;e&xrW1U+w`;c=+#q49CAi{D0ZGEB_wwe-HS-{^>#g&fam$NonD- ziPs;#R(*X@orwSYc)@!C(a4FwYjMGw7qcd*Ur>9hD&pr!subql{kEf-bS&+FY_nMo zjeAv-xs_dbRT#m>m~;knN8R=b%WTc+x|6(DXBwnSk#x& z?rak}BHr|EK6FQbK8+UVdXOsiPgg4I28V`;hjc}u4y^N<7UIQY<#dwG;V_)I(qS8Y z3pGk9An-z3-7XCI+^^eDP0k{>UphR*Hjoute!Ngb^Whh366NSH_CT4w)J9)eU-g(r z(2KIs3AsYt^J>qmkuj>BnC5Nz7s!zwLQ(0)?SqF5LvRpYt z9-M-uF1{Pc`w2SPGopfIU2K zySM8eIOcmH(M#qF(qXRNLM%Rr?@)8!Gr_EBSI;(d`n&4IIyn;Ay{7S7JxkLT!USjE z)e1>-VolsN`iCNG6SG7G&8IbOu45YOq|u~hdM_x*tlnsxbH>IeQp%G5#wBRTXbH56 zyk9^4Hok1V*=atOBayyO_jM+E=>_z8Q&zB+Q-~eTf6guB%ti62Xlk!5L~~PNSo;Q4P^?d9H);aYYE3z9&mLuZoFG9i6ABnH$PgP606>DWMAO_ z@(>mdHqMRceqF-E4p>mfMXsxGhc>N9~obudxfaB0IqTdlZQ!bJv|d{Yy$O zIZju@5Jmg$Jk~`zsfY4}jVp+@{4O5Pn7shoA&C+=pXIXg{XB70f63~Bx_3lG(1y4Y z{Su3RsQPGfqyN14MeO$b?`i|!Y#VKd#jHa`RgOX0sJN22TjnMTd;J`uQ1c-6tj#+6 zpsvzE9zmI?A#h-;dQmHq7&k><2_kID-?^h$cCb$0qx3x)A(qgiFpbXt07^yuBsmbv z)6jrXtisxJ?1t*?!G_BeT6<7m3Iko#w zLrEzA=fVB=Z~igW|7X!)`oH7w+yPtu veR+RubrfS9;K4NVoUvt_DG}_ur!#+_5cxbD<=O^*!E{?gSH1Y=y+8gRWBdc< diff --git a/bi-connectors/PowerBIConnector/img/pbi_service_edit_reoprt.png b/bi-connectors/PowerBIConnector/img/pbi_service_edit_reoprt.png deleted file mode 100644 index 0e8aff6a6381778af483596e84f2a53bc1b78302..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 951711 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

    cn>YUTqt4JPzqS!v2&Gy{6v-61F6@ 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¨Gb=CIm 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 diff --git a/bi-connectors/PowerBIConnector/img/pbi_publish_report.png b/bi-connectors/PowerBIConnector/img/pbi_publish_report.png deleted file mode 100644 index a04e66aeb16482e43d69d8e886bf7ae864ea36d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 778429 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

    0D% zetLY3d9QOclcrw%1QDBaTgJb_4pdZqL%yV>JgB<0f9knaJjB2_2Wy1qBf0$?dx0|9nK`84gGekxs_-Io z(P(W3C-7Tg6I6QJGs{!!Rt@ru%cnsI+8>^Z)zI?FF-hr+Zkb6`J1G|^TAQkx{D^ge zee50zb1XYSscvH>28BNO!x?z25?+Zqjv-jdSS=C^qbyC$Ir&+mq*wW;nNe}9=Hq(E zimod>NyPewA|h_)D&F9_I?zu1aPX*6ci*#Yr#~XZ+91ZkwHA1!34Yhyp147b6vo6L z6XWu7H0^K^3S^35m2f20p%^XB%~IFn*O?YhCwrLAo7Y($v=6$OmKZ;e_pU8x6nQ66MU5#2MHMekTuhjhM39Rk=zh=N~SYv=Y zc9vyyXzIuKh1Iez#nA8@q_~QO(UOCXG5c#J8@@w`RtZZ&Gir*Cb+wY+U6+wbB8pW% z>(MxG(Ne*w(vD>C2G{1klaAe2VR$e_ge>c zE&elygdE|g1B>i>-y&Bp4}y?TW!_hrR&op{@iic`Pb&8g=&`P#HCmzqn`|qn#^x=N z`pxg>Lmuhmc*ZqOq}C(oAGPk_+Y z&a&Wm2gttO?=Jk4PMrvZTIm4s)gk_QFRy>!9T7u00iXS6F?@Rif)f*h?)k;<3zvZ} zljZ4Dkq9G?2o?ae%X5S$KtYw`Jiui;`sek{MJ^<)-|0Wxda}*k_^D=Tv9-MVO2X&4 zZ#Oz}L`6)%t0+9E!I!)MY>Wl#`QYUl`56A{{eNtoRZtvl+k|llPH;%D;O;Kg^mjfEt0A`hv8W%trz zlRR-S&I|NQ%mwlknwOR9Ea|H~ z0^@R<(EFdcDU4aZLt}(Vx?Jz=99JJ>?$#C-8X(!zqg*2(kV}43Smmxb_)X*=#9w@i z9uYGx|Mdik7%?P7A^Sv-XPIXPWW|l_NS({pCPl}1I{&MY-h#6`!aPYK)Ie#mCMzJ( ztEcuh2@;*r<`m&V%&TED7c0_bK|-|20r&zk=yg%F ztPJAeEr^9c<@iiQO9+!@4PvYS6-D~3=pPH|7S(;Jl(fV6Kc!Di*!Em0q4ujq^UN84q{Y$S?LO{I6AccV&4gkP~+P6bR$OQt4T>R?wL|AI?*sV(9;v zo*RhgWHUMRNhI_SFsqCEE4DL_OfhhCXArF^6sn;a33W$@Lk$M}8p&Tmf9`Ho!V?-m zz9+*V-K2Y2!h9iRl2E?$3fCHg(~KfN?^4208zl!a0Fby*4+K{BLANK78Uqx#Cieh^ zkeg6Rnp>z-leBxpB=HkmodbG41ft7G1)Nr*YS4hje(a(uC$T+ksXx4G1E~;50FNq~ z;TKP#r1kXX4{UVjqfbJhYHa8w*u0jJB*MD$Lx>j!T=$#$`bB8GL`J}iVPimJbZtUz}ZtuHtd*N*1t}HKuJ_ap_H4{N@lAoEq zp|sXkZLzE4%#e+iPm%maVYd6FPnAUnePQ zP+Tg~95W3eNvC8@m~X)dQ+n#LnL-7_sT|TY`}K&Fb%8X#9~r3!bqNL{y0KMX`fjI{ zAffLn6F;Hvd45+a`7_Q@toYjrUKv>k6#1D{zBi*pf{uIO5c7Gi@9j7QPUO|2?a4AVh?99X`-9i8?4&+8@kLVIH)NI_w< zeLH6&e)dOnw!7WkQ~Ntf9ReU`2tW((fPlzJK)L;tjm(=Lm^o(v4d~x&OL%HDP6I@d zuE(|H$-eyE%lEU6@+T2l~kEv*T&$fIbOH->1eN;3?7g(88|yARXD7={A{ z1wAcR1~qR+@zKv}tRdMwn2zG(EMByjVnBMiqOtg2qa|o@7zmu)BU8ZpJe9REHIW;F7K0L>^wu}o{&0Q?-q&+~WcnCOC*}hc z`+SJpFM@Wz>OGHadL8nq*{-=AtjwEM=(<0w%+oQgHQ`4pfp%Yzn6x{ed**R9FITiX z0fi&+@M94Cnn|YySYMY5D>vI7?i?pS#y8*3TLrKD1_lNQLEE?+?}Wr}`Fij5D+fFq zbs>c&56;27ysxXYQ99*}vH`T|Q%4hurS8yfmctz%Ve0~-o+4Y^udYO=9k1OX7ng)b z*{SLNvF`r79w%cP9Ubl7+g}G!iI30#chu$gm#Ns;?pM!NkwVJk>oxj}uNmp?W>!uL zO}4J!t%i+`*64evO(LT9R?DLc!|tobbIo)Y@9}dvj&n70AX~BK`1jEBtz*NJ2m#iI z`OB|mUlg?aO(2({@Ho}5v3;Hss|p^-)rWhU*n)ilKuFczIbi|Ng?y+Xygz;%%-k|3 z|D8)YBR~7BZ9Y>FU&@j9gQ!&7C-3EGx86bYb6wfa9xP_hKFpZ7qY`g_;b#Nhaw81r z0qYbe){JbHbZW{;gB|2@`l%WIZ%i0#WRc?(HKsRM2xM%55RL??lrvOG1!ysMwt`OR zZ}*0=&phm3^JDA8^2KQxrmA`lou8d(J*=#*ru5B>4*HZhlPGJey_|Smc*7(lF({wu zsrF@)og>=*9g6ehp7M;2SxPTdD{fLC5*_n4S^o=;Rld*2BhAR@PZ7h>3h!mpFo>Nd z?H&g{tx)F%y3 zUu@IPnTUIvF)+B=^IDv9INFnSW#=f?bpJU@z<7|HYLHmnma$^->grvmiL1I$H?LBz ziUY$*dL`8-z`_%;4?nrjip#=3Aeog9 zl$DQ;s|a%_hbKCXJpZ)}`TQ>ty&0i&pTD?Y(LU@CSs>oDz?>6{M#wMBSPn^5wtpGq zDg9l`;*lCcq4-yNjuzTgN(lt{^>~a7`%OGsd7opohb*h^9n&`V@B}i+O)u>)&A2g_|yuw}SNum7+aN5t(jO@_Cz%39Y4tvraWFPkGAps77h< z6J4OrXoUP{?1P&%dQ9Z!43?3jgI!cpO64aSJILF&Hq|i|&Y%;G-}`YEi((=oziGXn zhk-fx!h0~(1&V|WeEIPhnJiP}gi~fDvUs(-STLq6r$`r@q>GcgJ4kU4bz_ywLl1oI zDVpoq0{?IqNQ8GpsGA~P!}IH#!7qBJn%Ai*Xf(95%P*c+vR?GjVf9N+obrpAsVup4D(IO*xju%{cH{HR~{z#or6m z1uUs4SVx%(pN%D>_v^7tjO+w5l`-8p@Sd~m(aQ%y#WSYZ$~(ANGoprJgXhqHjTogq zedgzKFsU-Ft99JEnw}CxBU%U5J#O_K`~9+!ayg>f0KmnkTy^1pObqNT+#yr5q-C?h zq6@F{VfYE9GDa|eHg;(e(G+P&1(`A0ESVXqtaDp(s3nSo0f^XNWGBuQ)B1!cCdNTp zI@l5YTl4BVqYLRXBLym(b<(Ap&b@a8ak>Rjv~ua@3&Ya=ZQ3H;39hw~u|{=)MkZYp z&WO}aJ^i157Axkn+BD<$OEytptp(bIkuL3d?e#4c`-K(%lqF}5jo$lv{T$RQn)})! z$`^BgadL5aM0k#uvc$n%ZD_ZX0a&EgCgjdQhL| zsP1o*uKkHilI$I_AV1I7=w4Gr6MVxY<*U@@qwC`R_|avG4J=wy%hMR^3PFztQ(z~n z1f5PMPLwm{Hct!>2L$xO_lOEdNG^6wOl)TgqpA3Q!~-GR%QJ#=1hh*+yp{Q7XWJrE zqu(tK=I7(KpwZRMR~g%P1zYzsj`Z}y5nHd>T+o{y=&&C*+xxozuu>1u2o6SWCmZ1S zT7AwnkzSazp#d*#V(BD+Cwp=I7;MZ2rVCwfw~G~C_W<4ew)16lvGZ6Cml*U`e(7~+ z`>}B;_*~G~R4);1gc|(v=o0Me3i$$WIBDyCd45E^zAVs2#os~24|mkb#lJTFb;IZB zD7yCtYD{#@4?{NhJ29M%MS#@a*_qqu>AE-#9|F(Ei$;8O&dH+A3PfyW;4oCJ1q@GYBQM?|KY!y8__KK+C7iG&uhtHF*~N!TF+9 z&cTp>u-^EIqrn+%a~;J$>M{p3v|@%c@5pZ+e&ouC6fn#oCzALMnd*h z$p@R^7s7fVWDKLAruW|T%C{IbXLw8$^%{(cp@S#to_cU#D{6Da4XC3KYCej@ z-_?KoH5ApyXK(l!7?@{1OE8%@u%)i?PZ&eIo8$M3JK=|+$bS_?KS5^aHI2?5>BG6Q z$`GwZ%-k6+>mx~n7=G)z3;XuXdwo}wD!D+}jWeterxt0pTA4bX6gCt`|7ZVOoKZ_% z8L96_QV;ZieTh|bchrFV`rtD#n87)`#$mD)X(cbU6te}*B$%{EM zC;s3pX=OIwk56y1;TZ*YM!!Wp_E1ntCm`+&rOC{ks7z+>pvsMf=<{F%$hYM`DIChn zGKDBGIAv>`W%AGBw~<(q#i8G(zdhYBf@O%2uHEft~YUQq*b#d`{~+B zxSNf#juy5T+Vq@ycgR;h>s9l`(U&0YoJh#KfMTsap)XKPaMFba7V7+^hcT}Znb$fW)6Z?mH?DYSpA-Q%&E;f*9+ScMYsWWF3ZEsS%EeYY{Z zF>Nhw*FPJZ8IL*pM(uyf0jjAQ^=z-uuYnP%$_WqW0rTli+C6N#Z|UZ(p{lA)(($k? z&`pYmOskbX*85>pbcam5N%4zvUGHtEHq3Okt?D_l^QwI>E!s9WK2a`^wP|0tKlhK? zOBB@6a!jW0JB!~dN=V^<|D9+C3@?>SDoTSWOOtB=vpK8-0l-T531>Tko(u9-8Zy{^N!w9B&Z&seE65k8SQdXP>s zFd4_7DL7B$QO;WN(+RQAwg!GHWGl{^Rrd6F5oUD!3)&Id?CaRrj;^@s*qEvwo}Mi> zUNh3?0Z}@?94+O9ygU*U@H4v=Sbj$$3YUylnDNkMxYC_fZ&z%)b33o5D#2xHIh@dn z!v3^2zfZf~QQ!5;@h`y>(*leTcn6VCJBb$72I5L#*oMe0;)C1mB>^fY5#oZUbRtcK z;O}OUqI~8j8{Z!p0QX~^_nSI;sD;oN#Ex~YSmHv$ihBe*E4~lUH?gkwfD`jE$y`m^ zqbxa@I1^QBeUo^27NCd~aC8(4-J<%@Z6(PU79agO+v^ImJDiH0_z(?gC3b7N?WpJo zF-?ljwQ6ZQXnR)kDX^~|T2haT78~wQ9V=$L4htGH4~%A@k}vqHA@4uptij^&5Aj+l z?Z6-iv9YD1(i-o+z|50p@&{yYx?G2@X_}l1EDRf+|1L>Omc0OS*#f_%+CtP#8tRd) zs(P+SfLYQMrhkmpbmt$#a`s#*9)bK7jnTfX^Di&sqRc`4x~y*4?&W*wnIK zcal5rT0vK@^MH)laV*#Q((%}N3f)=la$R%wQkZ1;= z@m`^!WgMazyme8LmoqP z3_c9Ju~7{VCx0%$d8Mcab~0cT9YmmDT=`U*!oVRpIEgzd%XbahyIvUy?xw?EhEgDw zrGdD>5R=Uh`XwS+xJPf*rA~KUn3SpR(9F~z%`Hu<$qzx4xAtngMq#~B$59{ zLXZ|d=^BN0&VMr%Ao?zfG|SdJ#|m30M#cd7qWq_4-^rXb`#b~B!>!77>#k4Rf=0C4 zp8b1zO1Q{vLMXadQX=~JzqgvA)Ra7-61dfF1YwQUu|`Y~IB0w9&K==L@-xx@cP;Sle z9#(!v3*P72bZGt0_EDnVFxLa)T=|cgxpKVGPO*beN-)*CTo+9+#3_L^8_4VPrV30ui3WTm_(d*UO|JwZ( zzeSH792M!4$OpkneG{XXWr(_02#i5-lAp*9!)&!F{gw@4eIB z%7p;nW{H?!X;z@B)KUM3DaqW@GDk=4?Nju`E^xkG_vWrEEd&_Mz?ZaQF8eK8C4aeSB!I#{Wv1J;sum)(=bj$5)6-Da2l0bl@l4SKr;y+%y7J&fDp$i2=3 zr{;8@~KCwpY%ZL<0fXOKlnfb}jOhpKc2QtGvax)Q{(Jkd4K08P z&-)6mkQtgg-G-NYZ@i(Yw3ebAsKRE*o1(Y#HM^AkS7VPk5#Z+4l<8e_NYj+Py{>~Y zcEYMbnCl;gnn+}B4%d*&;K;3O=sU%biiyzl$2J6rM8o4`M#w#e%&A5yP}tW9Y4{o$ zJk034-28TSPDg&#IRS>E0=1?R2BU@BXRP9Zg_HdJtaeUT`d-_zSaRryq)YUrztQnY zgX)U*@kmEyLicC-jQ?!Uex%1PK0*4%nnTILlVyBRI|dLU=5Hl_>%@6sX=nc}pme1SmiH^~vM9@n zrB}bbO;nkt*^Y}fNyMXIGzDrl3?v$VOUany7`?hz&I=hVRhb{QLFpFTk7Mtj1v~r9 z(%>#7276p&cs}^6m0h)EP(GP4mxSVBTK54_Wk(5joqF0xeX>CG!o0k{-AO+ZOZ^QG zBZyXtrbaGB=B7b zQt#V1hI-{?`|%j^E=>(nK3|><;{C3G9BHC8>a^HZ&blkC-H019y7U9z~3331C>r_cHc$skQ z#KJ`XWBB9S^9(bH4IPW0-LbO39$;`pAJb?n7+N5zvE`v+5X>c+^;PFf+W3(2IXc+0 zhV_%Mw&P{HA1(O>{CE&_a{`$inSIe+^YY4nmP}->4tiVj@^Rtyd~tGc;I-!$rKgH* zHoI{mia}s4OHJ92%P-ji`qjf7F8n<|{<&_)wYF3wj5_7`E}nYT(r~8tNQ-J~#h!9N zpww*bmRf2$u2XYh71FkF{ABp!AFqZ8V<_w<xNtv6twed-r=|7{NvJUcVH9k>)3L zd_JO1dF?!$av6pX?CnVR>UJFJsyO2h3M$iq=m*yZ585=s)YQ`q0M!5YUhgsLf)MZW zhW(^&D7gogujJS#1O=;Z79Il)EhB>gO$UTf72o2~ck>IS%itK%IPDZNy= z_-T7O_Voo0@Dv^){2~aj&Ka1f2+Pc*a&eNk;o}8>Nm&Bk(4HdOukdgZI3^K?s-R;5 zTkuf!+Xk?8#eBcpegq%bwx7m)|KI~Z#bm!e0FB$*L8g^@Ab=e3gv4dL)`l<1q3d;h zP;WU2`2r+g)}ja(D|9*mJIX1O&uh?O<#*TfgZuQ&kA+#aZ1DKztDUuXZe7hoF!*Vq z@$F`nMGBvr;~rpJc2sN#=y-o!4`6s{oZ7tAxoZS+Ea!Ma;I0P4ZO`Zjr@)uTN0cvL z2u{AcJKzM9YB)^TBoTQU@e{R!iY|fCQuVIru8eYR>b^U~``r%fmrOY(hW*bhpR=ffg#>kb^n2;U|+1uIlw?p^)G1k5s~A92P(RuUcvW+ z$oEw!|N8SwNaMXt4#=|?7dVd*^2yF@dg?mq~r93{l7Fvjpe>n+mH1glTjwHltdTy&;*P}x3)2N-y>=UBTvB*N4+7~|r=FXL2 z4KAiI?8HQO8sle>I*({LO{C00s(N(T!84wr5PB`v6mj~*)NK)rZ{kqIG&u`&fiKg2 zMAEuGK3h8GKYWYd-yQi!>7icYEyB4-mV>_v)nN-eq6^EgI>4A7VlIDD4ToHVcp;Q0 zsc`U`b3$MDx9&27_^OCiW^p*lYbl2^1;Px3#C=P2?!7_q4^uSoj|;GW5r$OPRVzvN z&?@StHdm7MEzUc9V^yP`smP?my_)A$qf_?%$cI|7Voqe`-Uss7rzY#ZANZrgD@0bW zkdG)-iqp>&ZOBJ@q>BrEQ7Fv|`eFMJfT_REJ(g7 zFtxIdEE?l!oQOx2X80ZAASs0i4`u@bAwg4eGX{yGpAhuFG@*`u^ovVJ(C9KAT^q>V zognAu$IWRcWCQ_~%SL#DOi9e$qmHOX^GEu7HB^YE#EyiAP?_1PW5YyGkF&zbR77Q} zfB=>&QB2|QiatDEe~h-JrL(U#S#o+?9Ir7oF0WiZ0E3{l`iR%6PC7A+2ihL0XfK>MD035Z$pYgUK^|F0%RN zd(%&;W@cv-W%KE~WTyo7Nu-`(m(y;X_jTCL0L5UXLvRRuJ5z$$w3y}*)!63?PP@`@ zJnW^CgEmT3GRTF{o-wSyg0y4RTg2MG(~?oph5aJJMn~Q4r;Bz}zj9foXb&;;j$%3v z#;e!(RMdQ!wYU6URgtgSLjI09EI%OzuRtGY8ox_J3zZUGf@Mx;?)NpOp9qhDkD1xS z*33Iwe{{bakZ+GD;SDLMs^FGzI% zev*mv!8f5DRbork_CTcZaiAakw17<3WJRr&g}kT~-0}Ydk?||y17ArV5yv3O+*X{d zoW88D#sMqtpZRZ^i806vroV;%=42(*CoKKcF=v%h(kScbjk}rK;c*<9i-SHw*1)s|RVvk2#uPZh1 z4%5feF#rk7ywq;@0q~iVK!Zss6C4kS`E3{&WP?7W{{Z^S3;$p6{HYqmi>+@EV9Ed3 z8OQy2=F5I>WqNz7d_&AN!_|G?BiwvxxUFZe(QV<97fs#_Bi#Cbq%c(AYf=Xtqrqnn1=%y)_EpYCW2!m z(2_`(0NdD=XyE`UR>)|ALo*TR;6*OSkk_oPIbm|gFZp(hD*wc-)su&4!fCf5HFZJ; z{}}{L{$Vd44ryd`>xh8i7v=^RF-?LJd&LbYH-ICw0Pa!*cTY3CxXNXI38&8*D-hlh zY~u!*SsiU}UtOIIi*tvE7aiGU2>ZgL8$#OLK)koX5aMXiMpR6;5UJ2ZJX~kVVF|Qs zDV_IqmQN>eq^OYqO{pS?))XH+I0;2kN^(?HKw5>I1<6r{BzF+|j}b#bF^`fA_QL*5 z0U~w4usuxPucJFwFU0tGeGWyOFv`3pgrSc%M2d8L`LO97R(}QI=UKq6)C39XyAPmS z;H9`E-%tqcy~?zW3FX`k*PEO+DiebwHUYcevpuh7J>~6ln=iJB>RufW<9O9Jq{Me17;bI_4Tg0QNIudL;^wTJzYk z+K!5`H+Hq0RxshAetnUs7U=xhDEJ=R_|YU1^&jQq;Q-7Vz_sbxDh=Inr6rZH`EmiD zO8T#noIvln7m3(SCdVpHYx6w?j`1~LCi(kEocC1#F$^*2d=c~r6vesfc7u~YTX07^ zUaU2jqY3)g2N7r~n2&ycU7q}ikXg};`p@dJp!(A{wLyQ!r5QrqM}~76#{vSBO1twA z(|E8-8>poe+`zxHP_c3oszn!&s%6=Ljds5K{Ch$7aDh_)_MxK7p=z5U7CxoZneki> z&~sj|K8|zIHh9Ua8drn9ZhccHE}PnTGgd2TZ`6XndZ+TV949u}V%Bvz?ivKymxAx9Q`|Q9YQXjjgtNSG3Pl7Z=I2mi~;Q0ct;2eH5ldkGG<; za&+27`C4CG?gL$&AJ2|2zVm-?2;6n3uenL1@_7*GEa9Xxj9rF@h^;i*@rawf}f>2_jGAuLvgU{Dl6yuJSS(XKe=MtTIbuUU*|79$H|-| z#oY#=kyVA$_3P267XJ3jR-eiD_Ac8~7-yNHYU|Qs%A*e_PwJG06?0!S>r?!d1%ak= zPkqnFu8WH9cb(pl*B|nX<0i-CeT;v1=ouB1Z_0|qVJIlgm$w9d;j1#pR!^%EvIU3P z2S$*2k&RQ~7C-T4YVWXOd{6yZn-D|Gp;T#5lZ~Ajs6XIFK}&u8H(XnGOBUu>C{S{B-0O1_O5-t zg5eZM{}OR9DM^HLxBs^Qk7Ah6ymz$z%k-Df#9Rb>xB-Rfoj8L6CqB!js{MU>T$X?r zf+Z*P#ldij7FFyt=X|A|Nt=~JCbw~waVEAJRCyF7orJjEggA8TA^KR8Fhn9=p0F7i zMdp9!tlVE0sZgM4pP!_!L>MlY{umcT1bO8O<04jB7y7p9F4QOoCvu)e{x;>HnUm{}r<})n=WoZ0QCsyGMkwDlL*&*1zvd_9C zZ6tW#j(+aSdhjzyD1H-FM?WXcNY5Q(&!>v|ywUd8_WMDZ4ks<4|LWgJR$6y-YjSm} zZ`h8S*zgrecEgjOP|MtSx<^Jh_Y$gB(x%jL7ba*<59bGHJMHB)mj8qU&Re#)Bt#o= z8VOjY+@Dwwo$c&)N26v$1=6i6rq5R5+U`SV57_s-_Gan2tsm2G4%91E3>LBVEN zl2_<{Kcv`yw@Pq3kCl;VVz7>cY7CF+@=i`tRAVx;MajtI;c%6}Smv|vh!j;LvxSrb zopv)O;q`1k*;#o#$-E2@;zMUl%=aD2t1MEmlMNMMa$)=^3t8rVZ4;a_r7QtWik|FN;lJl$c6SM< z-;Lb~i~B1Ds)DvSY5#u0nEJJduP`VDu_~81B!x7?_B^ok4r9~)svekI=&QdaNbyH1 zZ3#U%94FhJ*Qm-q2`+hU(j|}jJfEeBJy5}FlB(n_Tlf3QRvOhn?RZ54rOY;A=mDud zGKq4Z+*HUv^IM%$u%7hosQK^W@|hIz=h+WW5N|G=&aL zV~>mPhKrw!K4&T%9{zUvxp0G=ZO~s=c1Ry%CnIYut|4g2xi~kDwD3}(TJER|S-P++ zp2QiD2&QJ|9Y6!D?p0@9sC- z+tWhS%Y5j_1w%$I!Z63C-{}{lT7!$<^ z4XXd=@DPUGnNzD7oiJMl=hx}WMG_gqNKPdo9};s%+);U}zj@uwoy2K*(Z4A85UlqR z6t&1Nk@~W<)6?yj)rRGn}m8X+vB6T^W&ANzB`PJj)0siiCb5&qznn1Hd4*XRZX&mSM@)$~+Xl;X|uGW9>ndM9+e-#tSBm`fxSdZUlA8`3+(@{bUI)G^|V)j0DGF(CV+)tus!3G)lEC#lMQh^PK2)J^x$g_Umj2ABHZN&D z1~kq{peBHSkatl2_Z8QvDjqQVXXHI`PYft>VuT!$utrBn%8OxI`Or7m?L94Z$NG7{ zw|~vK@b+$p9}FfYAQo`&+L>A!^847xn%%8c#KK`-$-~y0ityk06B(y6#?K_W1-aK( zc0L2>8K2RbHj75{$&{~(;uN$bHrO4?v+B@=CltM)@^caDk(Fb=AV4osk1@tu@QT9s zcA2KacDZUxDSCt}Vy1k-Y|rSVRGmC6!V-PjM;0I!md}hv_BRu@bEwOL<2ISkGcuMF z+$`v{DvfWkVI#SLteelY`WtCgA6utssXsdI3Hwj`fWY|}Jh=f18I8-_&v_cl z$e7LWdf52tI>F;Qp);?;bGXEF?sh{yE*bC#!mo-k)l#+vjt4{bs$YyS@)IW-9x@*J z_}H)`*4d_Br^>o%L&HR5UM#bA*R8;&vVybP{7K14$-U2|=H-iO?Zp#PU|PK z35JBMB<0vKzINyz2W{FtARt14+~$Nw=y#n+-x4^BF+P^Ay21WeB5_Ickbq-tN*Ut) z)VWPp6!PfQW2{EG%NeuF8~$B6JS(9t(8gFsrL2BJx1AP97Wn8?aD7rm4D*Pb&CMeq zt79&Kaon*;(}^^QH}_x}EZ-4HQHgVRfXx*;i>(Q_*2qd!zKhKB8x5=@E5oWOBcjSf zC#x_??N_v+&&ZaHa}32YDoaorPM7PkiM7BVM%vc5G2!8gpN$L6>M2Kto!azQq!`dl z-68P4H}-rru60&sv}J~%NMs%JZxT_c3aZl<{c=>9qlCY0C0Ru}9jv|%d7%_wX5(O~ z_4XiVyjxP$(XZE@!_LKBnvh&aPSuakB7KA5k2GsARuON>RcFbBThXDPm{zChOU{P! zU!lV{Qhce_45o#t1Gv^|1}LEK^%mCiwnWpqCN9k(A=J62h)k2m_SdvXfZf!lpAY=| zsGP-ai^IFPdbXn4!Q z!HaT9uzrOL7ypw`ggyEy5`u~EDb){=?L+urg?m&Y$7lJL_v8?XU^Sd1Agq$=ABdbI z9GE4MCmF5{GetZsxA&}4@1MZgywb4NRIpGoMLe( z1ff_FpGaBnqoUbLtD;$F2A*NR)^|U zLTB`vM?{o_^s5MT#8eM$4QqC4s*G$!p2>_lNvuv+5%rcB3?{V7AA>z$ug;rYTJQ}R zgcb`sB{ayFNGffDez&wL?XReB8b>iN@8=?vE$z3pu}losS5>bU8;1Ro92XdO^0!lc zI3h7)N&?i8g3$%7H)dwMWF^{pE1UGSIrwiM4I{}(m_g=LM3EJle>8)50afxqp{l9L zH#$)yM}gg4Q=k(J`r-Uo@C=r{A?jlzr?=hkhsO^zclhWhc= zUhYkRuJBJFw(#krSQ!*bBI%hg&ch0SHbnpjB8=b$b z&~08bRDw?U=oTAt@lMiHdG^npeOd|^@pG=R`#@fx$)Syk4d{yvAhIIRarpX*!#X^0 zUMhH}EO=uJx<3SuGkLuX`rN>Sp26>G;P*-J*2a4$R3DHuJtW?IecPq#19y9yCdD&( zZC_`$W<&RFrrzyce-nDUY?w7$ho*}mdXM4Se9GT^x{vYN!Av2M$`4mBA^-GJRtd&( zJ6r7or+99KT3%gY?g%1GZ9T1NkrU6c~@8kA*jKrWzS1+$b5HGU}=sIayDf zE$g`$$uOW0{%z3fqBko`8M@u~Ne_<@vJd?1w}I5_9YDwSlRrM0c_9z-dU1rla9^E* z&VuAY9t!?iDn}A}N6#7)Y?8?YxuZuOfdl*q3$6U_E2+rn9^ZTDi%rT84O#@dFW9@W z4_A@M^@xr+Uw6=wq_Lr=D(9upu_5k&5~is=D+e7m%m37v+hwO*_SW>DofD%c-ilp$y$3-mn)FuVjAKt-XO3kI{m~xZMLaUT$E>j_~7$NJ3ETm0ntvvO9M_cu73*YnlJPVm>)Ju1OZ-#?(! zUixavh+lGuJ+1-gw3iR@!y}MlO2El6+B%BKde>S7Dq;2Bcr0w;d{eY>!sW0f}< zJcp{V{;xCS0r=(6uU#M0D~sqBL*imp4v|R`&&*=w!L_rqrO+Ec7d0N6Yb$QOl||7b z5X8$pyk}R;V7Jz`c4mV7VhtHVh1Cc8kMR|0?-f6{UbTVTd+7&g>YeY!MZ(^m%^ja>g!``2&#JsnrBF~ z+iT3r3ueqr(zlmEW zI{iSAxr0goi~)U}L(8J;+#%lrmz|gXoo{0&L%Lmy3ToY|C9e*LXU0QXCAtN-9A}}< zWTuPYHQU5Y>c5Z3L!PZk&#np2iRXv9AcBdmG}ji32Tuv#OG_k<2fk(n*I<-;V!J>B zZ>rY!j_d1rCp-*Re2Y&ehrdnW3JMf0qV-krNJnJMRV8Od;y%aaB|xCE=^v8Q8h>*$ zB4?e&%^*OSL=L7p_#0G~ut!I&=Rap5&se}CFd|JV944iyIa8aFVX}uT7997C9jWjQ z3P#2(bm%3iU^3<|^Qtx4qb0`OL;k@d+A~x3CZs}}m+Of569ak57ri)*h<$o##u<~S zcxzc!hqesTBRqL=cNWVOx8kum3+?s+m61AYvV5qEy&1)v%nE{xXrUtu*2a`ECgUri zXqSPZgJLG6shes4C^g!< zmzJ6aM%`2H|dHbz zfhaBfl@SAJdMX%v0gV;?1=~_WCbN0#iYf^gzz;}ddS0jQx38JSWQb7c|? z2lmHNE0e8`PChZK7iZ@@I^b?*kYK6AcKDZdkPv8Qg7`n4&MCUCHr&EH zwr$(C)z~)LxUt=^VH?|a<1}t;qp{K0&OYlue)&^$dwo)Jx2wU6FFqgR?8{#7Tj{hNR(Bb;95i-% zKdn+D?(#{T14Yg%YJs9VU6-iMKx#lTbG9%UbBR%)Lq>}?{e^d{ll3o3?DAe1x`qQvbz~lUB(nPNkK-=ITmn)^<;A{vxcty+-dTik+je-WIx{y?@bY%hI5oW_?w) ziFpd71cPl@0;VgbmZ&5HowlnAoiYPeDyJ(D(?ebaN%Z*>+m~#{L8Vh29kt!RZw~Yv zu^bXzQI))zgWtw~ov8U{%w~{dlNjfo6A%Sf0;ffH_6&=84p z+?iK`h(u5tl$4x5l$`K~CF$khP9Jrs6L8x21)aSH?V5fZpOX1K%LU%~1-^O(9RRmf z-`h#Co*-~zUXcGKQeM#0alt&E8~9@5_3?s#7y0VCZzEC#A2b7=eUC)j?DTt_^n3i6 z2P)mlf-a6kue-K7Ja2I+KUEQU3npHvPUd+&lAhk=-rVK6KLQVW)O+EOk9Wtrt&oo{ zk$1SRDPfz)u27OYv4wNN`DHO;&v zXYZ+u$(_9{-%fwbW6WG7LA{rgBY1I3eEqD7j7)Yyw0e2smFO9qRS(3wLNAJhzecNXJM7 zy~_*Mmiu&w1JA$nSVHMO$rzaRkU$&_o=;j0+& zBPQ{j6E5~I1ma?0(=!(0Z2V4DMGH+0s4qme>fd8rC3WT_Qd%9F^xR(@T3X|LllUC4 z*J+&V?l@`jT#K<~p3zxlvrW}C=&>M=^G4YQ<~0S}Wi&ViqsWxXb^7?0(q%*GSM>Wo zrHnr-&}^L)`wZuBH23mw!Q`82SPBM@aLyT7e%;gpOiCa#%NQv2Xp1s$D%nbNBa{MH za*4^>-hQUP1>9ZYAYxH(T*p|Uj_J-gVXw570KFxJk{YkE33uE@5xwIF zd8xH!_n=k~cGj4pM9UA{arR#9ns~+%;R0Im$xdixh-0}s>@TJANcldz%S%*aB}TUq zP0xjZlb@HM>O0eC{4lbnjO`eG(7Q@Qh-3t>Mscdy9kz8bJsoSW!rV)2#SR&|COJXN3j3Vg0 z*D(G@s=SWFaCvd5RL^t|^nzE#AB7u>NNKQLO4HYD=uzFNf@9dGEfwpE>fJ8S-O~0C z7KyyBa|-f~ty!-_WxR!I0iESj&HjX}2}5gR`Y{KcGv+s23(*iIDu2+ns53gqDnq+I z?3rDh16tbD0$DS$JUc@*qD!*~>Nd$mxTux6f|8R~rILM&PHJY|!3sJb>|o_j!O@zm zuOCrFL7b~HWX#n#9MDDg9{lRfhKdpoi@S%No#vt>!+w>S{zFSMm<-`=HZ?7M~OSB9AO5 zrz{N2j8n){<+qmF${KqEpEy1{EyJpv?LcdU-W)!XNt7a*1B=?Gsg|$hDav%dKI0FdD5CyJ@ zoV}Kzn!fS8YD?6gV7?zfige+rn)16I?*3$5zWoScqMHB6=si~OWsR+dz8S9?QHYHX zt4~QeTetJ2g=HIPyv4_X$%d!s$0wm#!DlMbLSo=sam}gaCID17C;3HK%>V02C=2in!R7MvD{; zH&*8qdU+n!j1@l*;|W3VN3fnuV~ks$OO(Pv+nbR?iIeB<%~dZ$-sPu+*ZMWDm3gn3 z^JBCJzlivUxSV4$p&cUre>cKg%U*%`V4u9BrjFBZJ;P!G>_oYy%B*GAZ8jld8~OXp z*1d)21IGAK&Bu#+Up-m57x;GCw>z#nPmQL3(1lp*X)=Cow&SZCbg^*farW^(Ya0i8 z#7TC=)@eT+?=A^oSG;DR)SAIjYhLT8BqqkY3WsuH_m1GRdGOim$4Qy!2T9#~Ro?Tp z*z2uWo7*GXmhUOs8WlIG{|86#BkFa}?Nwh_>sFvMxX%!ccsGa)9W0kXw$b(9C%{-_ z9eB_hcq;etEEaUX);;OaL@D6TkV0aN;DMq_+`Zs7cK~-B^arK3OGI)H7|iK!zuv*M zAHA~cw=_+H=q2Keo>KQP< z6ir-*ku71XEmL8aKBh9eb(8IC-l>11% zk=%hfFG3HN$v-Zs=Y1oeI`YuLs4uPG!65RFNZ*%uuUEeaxuc@0ba-os8Z%s1)ayLy za{X-m(r0+KvbAII=iNMODsmNaY<`s?+TGi(kkOElGc#{jL9V=Q3t?{&#d?iN0i4Vo z^dOV?Xn-^)H-R|LlSsEgHj!R|rVREam3JO7bKaSI+8z~s#M-@l%)V+z>-ddo((YY4 zz1G8xMa!uqVdWU#Xj36hq^-iR9sGo3muj^e{M6`gz*leay;hs#xK1Y>kR)C%l~gPG zqW|;KSrxM5emY1KfBHG3193h5ql%qqsF*+ao*65+9o-qRUXrNOJ-85)mwdrc*z!x^ zh*5+IiX`xa?bDzK{X?8Jh=wirmI^&U7AzVZ*qCiy{3+J}bc}}8m`LiisRQ>8{FOHK zWmF+{*%;-uBbAVTIaV8$E*Z=nmKs#fMWeEmDwLTg0 zEz+I)I-WK?1xQK8nVH?Ig6~v?$h_8o3IA>M}J1fGU30(~jcs=h$ zmvZG0#04c&>RaU^JeTqhhhGUc=Cwr?W| zZzFsZ3r}6f5C6rmm_8C+VXP!kehfYMIm!(BA;NenqI;f_dY<8}Wzc!X|NDf#`Bn7@ z!vAPRH89&@+qd|qDX*PhTQZ|{c?0dug3$6*eM=Kz-3LB;&3 zk--t8=jGc)qSxhf?nB_k{+84$@MDGqn1OB1?csUGPW@ft<{9xRWZWhcFmp_mRpMEZ zf!+v_OTjgfeN-zd4(gaFNn$!yl=$pZGSL$P{<(QCpdE38gwuV7$F*1F_ZHXh>2q$% zGY=HO?`_5(P^^~}Wn80+LSjhQ3y0&&-FtpwF0ai*d?xEp-DGdIVn8qA>x4D1Ns?{+hX?{cf_ar>hSP(06agq-|OfFSQLHSbDrVMuYu|l(#%6hDrKE2*skU1xO*oPjV5{#)-R?2)k;ybpMFdL8?yjjZgekz)@;(aWf*)#RH`N{^8CpxQ&k^*2lB+i-0+k`LES~{YrwS zOE!;KpYnv3fiGzmoHHF(C%FOr<@P)^(~~Za>#20Z%%%1nT$DRqy6IKHYy}K|a_5 zE@~po#p=Q%deQi~9b%jb%qn)QJ{J(#~~ZzFCnED_gAM=X7Ec4>xq`w_;ef>i?QIs z&x^a`G$;+sxMdp@>nQCiK@UO3t3m0HVTK4FSuKbU@>34&u1K0hky|A5&dDY* zIw9G!;ZGW7&QcR_p|}BCnncR9qry-L8$^q5VTshu$$G)}h=@j&C7dl zjs{c`U270jF8xvlLee3jkUsg&wu?H66ONL809a_uhVChnCZ!>;T<4xEiOeoEl5bJ)Ew{EgY zZr1n$Wp9MH>{OM)vShbwM?<$_yZQ-!uzG>i< zkYj4T0+f>@`?6C7-`7*a<&+^o!>w(?EXb=>L0w}@Z6Y0Jo7)J_cNqJ<-x`KRiYSn8 z3BUy7Kr_i{R9V!_)6hH^8nncGfWtLjC0`Y$W9aUY!(m@;Lt{%LIf~I2YmYNhesG7l zuS8ZP2SY`>W?PeuHIb|?6JtMB{IsY%TdTP(^MiQSP?GUW3MaA(X(2AxfMkT8lKCxy zJ8Gehi+~DI2KKM)fwV>?_!O-4-A^cj6`g~eKl9zBs+f*oUyPEdl75ziyPMJS_M~U4 z&Lc!A!{(Q?KP_n31u}F&n=FP5x?HY5rF@^&4Cs0VVm8|X%KTng6Hr;KD8u>~P?XDW z+7RbqnYGy)WlngU|AcMyE@&)OQaMhqp%gd8R}50K)S8_YnoMMT?$jzHI`uCZ<>m`J zgf(^4m}KexHM+Qz;hMy}!2Wk6{j>XfrpDIxXQGD6fyK3lINh-n6!p491q3YSHZH3N zl4<^Db%*k{p@o*g)fTM{-`x_A&1y{z2#OSJ*i8wp@l^G8`Kr_E2H8d&>aroM2?h8J z;}F`Sr_Q1|Gaak}jZBkC_P%WNJqKtbs!}U6UJSW!NIMANPmj;FSVtWRY%p{>l1Xmk zR1DnG!HgC}?|HqWc%S@uRngNuajB?>zBN+o@|1{&=pdORxZx5e4T$<)@? z2MQ(?hl8%LZF7Nzy_2n{K1I+BU*Z=nP1Tbsr8==PIA8=Kn(SY zz2(%g(&%<#y{Ewj&~=H(8E*`Cb!&Eomc7U&JVl_k!95De7r*3Pk_etZnd9fpj>XzgXi%VC_!kT!;)dN6Ft=k*PftY-zm)moz2m8R zVcAvS1Y;<9`~9#5IJ+r zySP^#{-ZJIe{E>`9Dn&7zqI%-QtahV&vSdw$6vmWGp@YnMmRLl$EWMARL=5tRN8uE-Ba&(2(g8T52y_&lDn#O=8;%w^PUo;sB+5ARZS*8P zj6@w#69bH^{^i+(e9$F^(`EP9X*b<6&il$yAj9r_J^hP1qC# z5xs0lfNz15?EV7cTIw;_&1vhT65`Zvt*9JLa7N5`1lY?T2U~B~6RksR9fX90A2ZhM z#KP`a{7BYC|3VuRXMK|-;E;=hl?aQV04uz<4G}sb?nlg6o;-t3N~A|9bkXBq*z+pA zb>P--48;_x&mqrGIE-BW+lPzdcq(6`2qa{@4Wm|Z_?f7$4W6b%Pb8u0IXiZ;R7#f? z7UF{JpJ>p8+ktx>Q9iiBWLe&H`d~KX`!OQ(PYao!W0(c`$&d=*Y zkRXYPf3yb7KSA$~NKpAs{{+?~Jy3LbMlx=cMrZtqDWnLjXnq@re9KTvMNPC5 z9ES$A6=?tkNNN*nrw-@8JD(ej+Zo4jpmi+>d||x#`JiURLf8(&=?hB5C#zF2iVzw5 zvmHt$WZ-6csOF*D&}K{*EJ2~YNK8ZwbQzr)KNq0;Bk6fZZq&7>?PRA|cR}yxn6()K ziE-j9iB?wPD5EC~8qtte;l0YCzkuu-^oI0LszuUjJg(uCI`rhAfzv4~Ypq84 z)NvoAb$_PMICG%8|5T8CjmgDK>Gp_KnkSOG$aBeBBiW_p4B)rBH~>$OrlQBPDk(OmnB@GT&0Z9HWdJEIRw8RF z5hWja%ogVUpqlK_n33Y0K!s6sSh{8%Iqw|wMPkFx?+T0o#OJ(3S zEvci>71UgEAZNBZDN=ZCisHv;q8c@}ozaCy7Ksf(gKyFexHUv8&D47ehA!im* z9|u}&(Z5FKs}auEE*qnck~*gt$Gf8}LrOiJ<-e{;u>2;~NoznI5Ssz0Ua&8#sD%To zcTtiMTLV^NL{QVz`i#*#!Ywg3b<*LN!UErlM$Ez(d)aVrGnbuK1H{15gn(|zJ-W9wY-;?%FZuFlDvR#x0~;|CFT*@ffaFJNu}ZYJOcJ z2qeCZJ{6W@i`0bux!)g0cNthu;1EIU2Xk8RD=@>}a`orto$trz4mC_7n zV&izLBb_44ohK_;6Ur5S1sPX<_;ILUGI_z`Re>wnV0xSP%5}Y?F_Z>978D)jMtV+qR&(kx{2Tw|SvL$Wm$5{lfarZf=x5SU`WFGg~ zcaH)|8+UQUH;@ei-n~4|>q5>gUfWh)UehB#{M?T_%YbLg$lHpmzW{8ck9c!2aTTR+ zxOsCmAT25ACu;2a@PcyZ)V}yy_>73mxlOrUbY21>gFK0F%-=^53hfR=tAGq{#eyZhhZ{dR~jbCt~1LYq3Xb zr_O7<1hOrFS=f1Rz1Z~WAI*fQ2iNd{9>Ke5n;&_=2$TTicr9)4kp=Alj1j2VISkbF*T5k~t6Pc1IQHQX_Hw~A=_s}7TL zv((#S19J+G)(%}!0idW12Yg78g63;QHoAFVf-;^iyB3ydKTHc|-#G8Q-i!ype;Y|7 zpG>bV+wVNSgKZ+8$e;(dHoQ8A=lRZ+vZ--wB_Wl#f{|hbTsf1-B7fLso8Tc-&IS}%B@8-O zXY^wr2J#?OEeXh(S&0Nx6q2f?-UwJ3nCi8A6@#Df5X7H7aA3!$;NwuQkBYJTWc&P9 zG3>0a7KKl#=f`f|Eye+;Hrb(W#$cvB3vLUG3@*qvI}GJ{dIV8?ptC_?y(Xj=2JU8%Va=F}R9{od)!zTT$A#>3}Z3TOL z3-CRC{gwB;q9`O82Vh#VSZ11x8BYttwOwQdunhV+bKUBG3gtg--%V9{{Y4b@$yNil zUq}0|ze2UXla;Gk%9UJCBJgwz_-PDmt$1Q%b}Yh@KxKK}A)4x%%rIEXoz}nV)uVRa z1`GqlMr1IQm#4QFAamgFR?Nd5d0y(OUJ|c8Kee(f9KR_XDS5tXE_bZ;+6t%CLan^E z{{uUn13wPjL&$qka~;Kk_)5On=Qu*zH1efSKU}d3Lzza~FG9wxeW$W-jjrM!VH!uN zC8p@OtoBZXo`PSOGN9oA@J*i9k zH0m8%9dobnuj}2#`z-q`zRazU9J1#<@I&6^`a7A5?&O-+#n$us2A|mL_JyIT_v>|9 z_tW#Vm}kVSXyDuSPXDV@=Y9Kh_x0cD4WCms(c6rz_qw1vDY1{FPTLOIp#+mo*L@2< z{=68er0K`FoI8}fJ5=CVMh1uko@i%4K+K-^rCVC?YhKsF>qJSnHS42@TM77Y?MG<$ zul|o;0kt7r8y`{^-TfDv{UV$50ihd7nrRV{)Azo+dJ3%9UyPTc9ZE`g`R-0z8SA>c z?|&}0n);U9{~51YW2>t(ty*Yh`qCK8uYoylG0tnaiQ<5p3>}uFhXn z3M>fuwt3zCa9SbI-n$SxI}zJC7uj=}jKH%+VRHOrCt$tg1~3{oiVWVuFv{cuoOCpw zNeZ9RxjcUV5O2r-Q)b3XGE!?od@OL$?!OXn^5gVR2$MByLVH>P&7TYl@`_Z9Srxa; zd0q2Vv&pF&J7P=7CgQSv=%V6##=dj`>8bE*tF5^O25?GI?JZqr+Vq2;%JXm4m)|On zo~FciziD5NcE{P%td%k~IAo=0koXvzv}x}l8HwtPC3`>PEGZYOQJzEA5(vml{v$N1 z=O}9($|%N7B`?qW>6nKWEgBr^><*|X;} zt>gJx=?^h>4MbLKD=?2&PszXmN@_e>zY#n$2Zbb)%k0FJ?_8~A3d&HWc^G=}0eV#! z0Ymv;+d=o6IIl3m#8j(6_`d1}$%T5?K~58Tj1t0{3<2jn1lHs*Yj)O=N_jPA)-ZmN zJ|YI$I0S=e%tCCkg6B`Lxg~!;RY*FTa#eb)GVY&28r2lmpp&YN>Ob#8s~;h@<`MpwTR-4uV_#Yk;${iEH9hay4dOLd14*&!SLc^@#=g z8cE&XLhvvr*7s23-Q0nZ4$hn+y)<>#ks!oOG7;rg)_{p3J9pp-G{J1H0k8SThvCNo zE`>P*6LZPmXK0ZuE8MwtjR@m!PdJhZwjR|@gZ9d2RY-;6yX7Bd;flw4#+ zOv;p;Th@$DOSS$Mo_k2z?+q?8gw)rc=au$D1l^BB3`}dM_ zpA*IN<2Gel&S;81v?u>Ab{fky19bwnvkK!nvTO$vgoV1U3LKLJDpGWRSjg8YDe4-0 zrR%YFg;-bQm!cSGKGjhwU@&qs)Wk-A(P8H*Olc;RE|B@|$*ag(dOavi1hm4j4!arQ zV_0lIPs~w7#TB|nbCP#|0+q2~Ym-N*PL)_1&$~r#wARP97X;hU9+l;|kcc{JLC_n;R;Uy9XQ+TP}|&OjO<7&pSIQvpXpTqrJ|M za83|Qo#qbRW&(Tqe0o*!%e?9T1hpN=Wohhn8XE}A4{&r4be50D1P#}=4Gk@t2f16r zUSJKY&BF;xL-Bebb(f-6VPU#$9h~`0*iY?=y+_oq3Tdb%^}(D3Y8?j#x{ZpkOOEeyqyD6@1wt z*7E^6H=aZqmJ)qkDTB~3?#=dPZ#chXIJ$5!CPjA4tZVc##q3CkU|eEicIvNx(w3Sl zodsXF7BUSxwIR?76ghH}Rlk-*e{+-a~3-Et(0Z?-Op^?JgbO4*0gqSbOtLvv6dPbpWCf6FNVLZ4+ZkH?=8dgc z?>*vJmFd{2<>#P~s>-@T<$n7nJOrEC7WMeu(^{v3t?g6L@z#DF?tDk4x5<-Om}Vms{Z7 zybIj5~2FYtx+f6b15r*S=jw{c?6F+Fc_Tkq3#{-?u50{gM!e%lk_ zNgLg_??reKw5rdtpck@7WKs_l;zty+vx~L357m4!Z=x572-5RB!DEum<@wg0wV;8u zpz>j_iFv<3n*kxAprIp@?7Uv;rkS}WPABc~)y$<;ZWHg4`_-SkzX|9)o*4RVhBWv?_a)n{ZQJi~-LITGSg4C< z+K*U&Naz@Rrtd}czOntonoXEx!Fhol^bUw5GZ0%>JEG{LvBY<%-+t`ncYw>wz{SHy zq$IHi7P7|mnXx*P`f=I$kr;LWZ=OU=gqzImoQ;qqNqn>i4{Xi22a1Pu>82k%NL-8| zkAv!8*Acd0z(zq4s^|t0%?-XNmd)u7v_i*hS+<1vq-0-K=fk6PR2VJ7U_%A%SV_)u ziG|nQF3Mm3*akgjh(5|YEz57EGzQc%QGIOw-GNW+wW=6_l^s{LoboPs;*2^e@DRLEd@P9Z#!u4W@}1t^TG- zSz<5vAzpmIEz|*t2JA_rd{P_w5qw42V9Z5-^d4$FQ4Yy9bJF6g#G|x>W?i|5S&yEz zl~671pbyg;-!$OflkSMGushOsQiUv(TYf#3Z}aXUrFo%-7*aW1o$Ai9NPTMqWkjTV0{W2Z^{oT{-e%oqVJR09+@9TA&{r9d8= zI%0tCLiqRy(4q7`uh2{Cz<3cl4Un1$QK)9Q@8uUWeH>j8A1Pw zPT8IaQnFOnzw4EQM!}{mI1NVwS<2%i4J92w$42On%p$4+Ww_+?<>Uk@6 zG!v1lFg>3FX;+zVGq*krN%@%lJ0rJJRKuN{nq4MWyP&%s?lS^C{82@l%u&#ts#-WXvWI3rlF0=GOL@y@RD9P$1CEgS+0V5Cb{mq>CYU zs3BK%YK8Nb@);UhH)~nDF|7Euahn78KGs3PS14yFUd@v4uF+S46_QgDdpVsEo^kW1 zJ?Iz?IC_vyzp2T#b29SKTWZ$VjSbo>>{MD+H(KBnIl@Dl zBv)aZ97idQ-WQ6GLmS3l^#z&)76QaV!@xkX)~=Cc(!prjRpMlnCgEO;M~?o0SEXke z2Xky%ixJMb&0td@t8HjuId1bcE5$>f35y&$5m5jt?7+UbOEz6uy6T{sR>Np`>{PEJ z#9hm@5ZAsaC_4o!pD}b4od)vTkGMXh?%9}-I|p-P`}JxIL|&4dM-{Z3(??Pd4~TA` zg?XeIaJ|=YJ`p*mxb@}tapTZ=O#(;?8eB?O0%pZ4`o05nLF2C{%O-XX>&%rh#OD3* zSXRy0PeR!Pyk8Qv3dxmFKH~*g)*ksyWuFKvbDbH-Mq)veP86g?(8hPXBmlE>iTFufkx1+YvDCraWJmwet0PG#jiuUl`n`5m!|z5W$@ z+7o*|$$R(dXy@&$ci(lLE^tfBdqgq8&*onfyFd@xy5d*{s0%rf&{x)10Ik>@00(>B zeYy-QDmi`tE>EN`k0fU|**9oLq%g~ zfd^8jY@G}KCsJ8i%l3d0uoRtLGetw0CMV7h9o6#~RR_*LLb&$A^yVMvK|>D`-^mkr zU5o-_-34Vng{It!I-hk!fk#aE!~tW^xz7dYTI`HWblXSrEdhW@{MIcMx#;t%9Bd76 zc>d*oD9z6);AQ}{ge;yO#?=xt6*WAoLUi!cFpw~?H|N59Ncxy}V=Qn6IRM@bsXdxT z^H3eOh9{wIO4gbfm4Vm#4tnjys={mdmOAj4oF+t#V4w=2ITk49V{}fOiibX$LTyX9 z%NDz6zw^&~ZR&voM39f#Td3TNU)|qlj3Pp8a|*e$m(=Z7`R`f93kh;8Z;DsgHSpw7z5 z6v$tK`EM$ulMnDH-%QM(qAINcjD`_-OroXdppTNf`PhXof-h6DrrLNh%RlYW+AQ)P~q!P-1_JE)Mgc`zfoiSQtkOt0%Vo z!2$~RK!!$`OikJ-)0iGnrX%n{w7$pk|0Iw{bUUMQk!weOUmm;~s~nP# zhcLoCfBDzLx6$jZ*@TjTJwe?4#WryO$C#LS9y0aw{5EPRT z-PSJv2_gAk!lS1)pjoK>)&GNZ6;3h^?F{Nw4v73I|Al^`xOW?yyIq6rMB~FXXmcW* zMVxVYN${_GyTkqW(cAX=ggd`r6SnXHf#4FCdz1BDl>J+j-)_D2?hmisU@u@9xw1#F zvUjq!cd>!gIqcPYAar;scIHav(awte5MMKaf!I$UYZt@T%qLeJGh5gY$G53oafUw;Rhb-LfL`qmOeZs z?Y-pX_BB)P-bVM4pIrR!7c}DsGC-QyAro8R^4?b1>K+HyRWG?+#{m!DrcbC`*1;2l zo=I`@CS3Kc);56D8EpNOp9Jl3{G-YXjPocD&JS|&;l|HIuFHp{)KAtw9P@B-9IxgL zJLQWZ13zTx)~&UE)vepA=3cH*7-w!p^j(yu{z8e}#xLwWaSpKCB-eMBUiV(B_PM8| z-VX{}Txq^JZv009hdz&7*4+)iO6N`HPbz)pRQCcNvX3&{z79|O^@U8E+=zMoCBW@0 zTeGcmdHb%`KN{dWBIY^*S6kAvA-?1{u^jZ(tXG5=eGIl3Qhg&e2LY8ZN=Jcfjxly} zzg{33N!~zqp#d7Nq?p=i-v(t!nm%53SeI7SJx}cLx9dW{LDcJ<`XkJvyD2+aeyp&i zq$>lPUc8zVhbE)9!2 z#ttwsx&;_p`=_y@y2sV2&|X7V21aQaK=t59mFS zqh=~eYlzNi7^^oKu}MvOGis&KSN&xXW(C!W&xiDEv6!)M$hI%TqI``JW+0IPVhG{P zJLdB4&(M_Oo{vVkwoAk)geLi9T}Hra;B>>*ZB)xgP?gMgR&5+MrY${d$=#|ngJdSd zvs+2ZH8HR%=yMKOS!}!(^X={LhG3WNI8^-NQdn?yz9e;eD*t}|*6m|V&wb;{AVXj- zZ6e?37LyUu?!IN@YeqmCH-C%a&zqiycug$H+@@yzNs=jx$>W1@a88dnX5HqHRuo0C3$7p*#0Cnp3KtNP!867c?MNV zKVxdOj}a-a+wBZ`{IM&15WKisS}+@mhQd=ID2ca0iEW%$Ir>4Is`%q?Z#8VGuGy^8 zmBB*gerA@EWoT^+{1qF&D}l&YL4?uK)rebF$MqklL=Ghm z96AVIvP*U))#@RO7DMHS(oBPuF0(43G-bm;C6*FHNwP*JpJjP{GHog6KDXY^M7fa) zLrRmDQiJTmNhd=w^xCuPnv_Fhb}l5V!4LJpIL1DL4CZ#^c?g|p>?QshSxO7!PVy8- z?W)GujL0@UXnmD=b)!ianP|4T@Axy}SjY+R^xE&-5b8TMQ}u1RNDz-UZnTD$_F51{H1`zR$$eMC{vyYkk6V7@9$ovKfRrO1_o4##ZM zy;O83w#ftr%%H!9yXKRc(~uuaa~@_{l-vNqFBUSK8dn@xxRE zT3Uin$eBpRWrfEU(I^K8(B@Y3ScOf2ip-SWzs=wE2FoNVIPsDxHAH$*Y~gd^d2_^QE$#@F+Pk%lWxNja^8NPejg0MK4H%4v2g<4|338^knE46r*eE z5v6YEhr|h}B^95Sv|o$z+8mSRqx2A{hf^&>)A23hibFqW#lhSRW&M9?F4L>3dQN>F z!=nt`Ge{z3X`M`z;dL*(KNY z(Jvx0yurFWaAn6kWQfUtnNs>5D)v?(296Q)z1ntj>IpcS4Q;*XxfcljFa`Jx#e}V| zMd1F|$F1Lfmy>X47b1{-eMOPr|M<~)fMc!;So0F+KFZ4!Ie#E)UvV4bavtMzFYb8U zrrF|{zEZy&390>fPxE^;x)FiP2ag|bMFeiAy#g0y>CGd;%}bXV@DH!!awq4Yw8#4K zAaiejZek*RV+3&y1F9xSOWh{}MO(+?62#lp)2zBcZ<2g)3>!~NOUyk_)p~=1z09xj zA@(-l>KwN0wg9+_9>^fY*XMiS0Fz76^Tg+?dB?cYdF@-)W4KM(Ai2`N5@5I9wVBKO z9yH?DvjY>k^PRgTWPzE>z;7Sq>#kvhT`H_`@2u8QR}x-Z^5EW*f{@ukgme|$<$+y7 zORd{*Sjr4gMVgrdZvvaMhU5ZgcD7^&dzrPqh#aGH?l^QK#HBR&IyYu`-B=Fv(!rX0 zeo1OT5FWP^Alm@bszqbZ+7FcS( z(CYo-m>l`;YOrWNJ`_#!ht(`19CWu_EgT$J6FjDq3pZ0|?SqvXU2ZhwOhYg=30=To z^qtS?1oS9&N0QarU1HKxVB?Y9oc+ubMv1J`F!2w#(#o)UaXKA5p;O58jn}5!>X6tQ zr;VL98I3^R0k4NUr=qRznXFA%&g)p#qoakzO=j^_UtJo5BUfUM%dz;)hvqw%M3~87 z8+pwDKf2Q~LNGSy1%``8pWyF=VA8uA2DITfSD@9k-Lt>bv!5R7te#?i3U^GP1Nv42 zU0jT*T5tx`Q}vO-<@W%uUqk(0 z%@PRC1!gUNSbTAq(F{h~h8#1h>YzzOY2J<=juk5}>{wsY1m;n#!YbL7u$rGMGsC4K zeJ5K=ygGd^jypJTb7TYt-D%zqfudNC&{Vpu-e9PjmJ0VL_Akn`?|*(%r^p+P(vF%T zqlp_O{&EJrH+`o&aeqA9#Q<-cJ6(S7{s1IFtz6OALlX zpzposDP6K~7m}-&7!2#>Vk6L(E7k9VxPXFVQb2&1Vf!Y&Ji%^&S)J}tI8$iIx6qtL z7zJ@gtGSW5^p$XpE$yp+oBFDb=gig$Hlpt5;8!3hW!cIvX4xQFZ`3P4k2_J`4#7eq zm{7U|zpX2gYm`tW>LmQ?c)%ZQVaA=Asa$;IW)qAt51pqM9T$!Gg1k=};zh{vuJ1R#^#XTIF*+BdSQ6L=oL;ICLDwavyzVYFNG3WSOXyWa-H#E*8D?gZ@k+P!3 z%qL@iO|m=v&sOP^DxB;F01f!D<^2;q$|KG~45$0{tMOxYk2Uy%s^dFY;_@l*@>pn~ zCny2X0JfI*ME+fh?ZT$7-1^tG1_fe%;n3Ohj@#(od@Bih1i-WXxNkPeRd=B)dWQZ5=_EG|MhdJ@#J$xrqr(Oh#sY zm<8*lu`GohMwmFs6Bz=rF;9msv;{)D zCqf`Zf4OqNYZCmiO`MHEXqxu~><=QJ{D6oL^d{l(kJoG~gZ{`>MikKdt8tfH=ezX_ ztgkFw>TXPI#6q1d`C-$)c=#-+dtMGWOE>;fbgJ++vqOB8AsTw+fg{RW>j2|n z`*y8Q8;8*&1lftppJC_{f*<@e+XcY8#+pUQA(gAxEY555|Nt`((W(jN8Nt<}r zw0cf8swWQOu630K6b%b;$2TEt_TI}9`E&&2fDrE{RKRF)yOHd&=?Q?|vr+nuY$!yt zd+`nseb1Y3?6=zAZ(3`dg39$)cLz04#l?C903InLe&1U1$~_eUw0j8+l1$gZBH1-H zD9T(OkW4b`L$aV29N1!(P~n~Qit4c__7RX}ugb=sXKB--LHhiMo?Hc)ZD@5MCZ$v;H z0dTPveK+nJ0#ZpFL}qOucY9ifQpd|tP`T$-SMOJsY_DIpC>Ok^D^vxU0`pq;IuhQ$ z=RIBLT=w}MDVmXl50JfmT!!X&J#2N|E~68;?_&%3U9ft}+5Xa8xJdfzcfr!RkT2u3_1^Ge>e=Zsif*^3}7M`Z4EXFDKpTFz47ixhNGD zkfgv~UHa}Y9X@?p7JL5O_2)e3d4J7mz!NaZe7!7QdipIHXLVSmGJey1eo~>j*}6pC z_}t%t_Lc?D^RY_;b>;HC?qUl<;l0$Z${EQ-xD;Rz$ znh}5Ao$WQwkc%nn?zz$~Sl{sK8hkD~y#a7rUOlxU_lCXQ->W`4S^-#wYz6KiVW~Sp zjVhfmyj;d0=2rxll2H?v21OmVJY9&t!&fuUW39*VBaw@XpVv(N^K!pmRDEd^+RIQo zXwm#i(R|8)%j=`x@S|@;o*SC*(S_gCe8=$K7E-FnW`M{h)n@m@8J$R30O|6I8aok^ zHKjhYrc+Ab;gRV3QPB0UQ_p#^Sioyv4zRC#ehc+8b;l<3+6wf(+zAzO>b}qLd%Wm; ze;#%Ux{k@~@B-rnz4MtojmSxE8Bz6CMPkVo5dqMR;BfV99%I`&VvZ-J~#bZN8sIJzunGi?f*|AFNy0dD(I=+dfO}kthMEQ>1xLK(`anK zoK`WWUcb1t4$s8LF~Cu?R#8>8f!3zG8ze=# zq+7as(=DBn(%s$N9nuI0NS8=A2-01$>1OY|8_h)=}nn(F* z)%_&A>!qXWD829Kwb;hnZf=21QVg=a^z7mhQl?POS{y#LiROE1Eru@w z@1@=SnTM|0z)>H=_bxD=^w&&*O3u5Laa=r`crE%>+GQ_9oobBfn@JE2Ye%Vn9Ch$yRU#7 zg4(p!6a_pbmJ`=#Oai`++Q!TuCQPkP4$EXqg<&vr?*v@hA{7oq{&1%jjm@&uA)2}6 z&uJ<$IrIO%7TV}w*5cQ1LufHruihVL>(-N-z^qf3I#=9e7VK#$xF^fSz5*Gwf9`@) zMa`P5E3T5K$*0XC;gw+FR1dYS5Zus!N09~nScuIaTm)DSH-F5zL?z}+3<`X%4nS=Z zA*mk1wQW_UHjmor`E=QcEy>H1;dL^+qB;)6XYaHe5~{V_4?qnXqlPLqCJe%)yl9Bk zM$?V;bHIGXkbmTw%%1lKL^t)Px%)erARU+gNl(}kxSN{R?=Ab2IMOR zVTtAP#rlAVbS7MhQ|l2=vW*STa;yN1uEASi=bGaMj8nCK#Hv zl)5cboPkglYK3<|%j5`Ksf&nSW2zbZ4(|Q%XFkVz)DgCbwpkLQ?3hHh4>soBB%X)f zk%RKHy!`I7{N3$U;Qj4K8s{z8_M?uipv9x>NwtK?tf(+_7I`7Ic}^rM)cQ|bTV9jE zDd(Qz=9c0Co5J-W)ZjRM%dh(EmB};#eyVhBxJd>=TKo`8$)YlI zpR|j{NGO_z78|{f=&+qxS!{JhJ{;vaD3M>&SI}AK+MWhbXQt-B@S=9ySd${n*!%@z zJ$U}OC%1%oR=ppeE5dUzYdWS0m-T8D?6j5H4}4gp98kA?3Ax`%|EuY^OWo*b$i~Dw zH`>VLH)UP-?eTe|oodS(ZzDzt#nI^{4zS^X%LY zOInGjJC5PFcm%{!$LfWcW&Q;C7J_`~(nt7Dq>}MXzJvDLQ)i&FpC5?7=NGD@t6Ri5 zJGxfT+l6)^FeflOWulbH6FKB-RNmsz5MLKhYfT82Www(|s~hy>B04Qo*P_{tq&w30 zbJqp)_awI|s-CqJhoR+I@{nh3^N^n9xz$@ArZaaz%(cIuC`#d-ah0aTxlHo&d;DyF z_?&en-VSa;hnYQQ0=qnH%cG60wt+geTh3%wQyFn*QgXh2g4^M26W{V}V5s+EDccJY1D^!90fq?aYPEi1}Y$Qbr?R0F%#O1;Rysm)ii$>b4@v^l>og ztpy4xD}rR{SkycFLcFtp7-h~0ssNtVc-ZcZ>xCzNlM^kA5-IazZ(oQ94o1k&Gkpt& zdnmkx#n8YRdE~dG=O|bcs=HfLk^-_gIvc#JkExPA(P`WEnm?Z;?;^6^9WcK%J9k0q zsrn%EQMu5ShhE6DobzU&mBZPxfmM%W&AJ=?PC?LvqPXuUC+-u2TgUnf)-$$H5AXErt!mWNr=&2*bg+RJwAX11;$$NY ze%eXt?To1yhGPecXUlavsTocWO_2(L5!*U~Of{=b)<-_PVK*8B{XN-dqEjv#a zG|-qrmeCDShVBiUXQPHONY10bYA6Z%4r}&O!8B5pg<%4!eLS8dN?Z6W3x!9nRSUh!fbhWe^croi7j4g!A^qZx0tM4z2=ZivTWliLo4LB1UObZ1z8ksNokO#4r&_SpKJtsx zRl8|(uHo0_h*OVj4tjZ()Wbvg-+&q8VBHp{C^oreVpc#L`Z-WYg4IkB&RoaL8gVC# zBsh>M{Ohb~+-F&Y_EKq1)r_>{@435KK%G&?XeyW_*f2Cg+b9Ot7fxeOfxQVvMR^oC z>$?S~Kl>Exo`F_9?LAV3mOISbftxJ5%^kgYgP9xQE}Fu&FFu>G)r4*VN(dsM29pC{ z(>#(DuX<qT8B%unm*K zZx%aq<`}j8C&XXz@=HA8LCewV2GP70=|r*-+R7*&gGKF7RnU>MYO6J?G81I}7PZt74tTST4yx0T6wvoI^2W%64N9n`LPCi)K{m+uhzRVu?E zFzZWb%tW7;S#0$qqP8y<1zt);4)uPN>IT%H_ypZfEr~ z8JGBtYouB*3AG#|E_)~%XLyq2tvx~E zc&bu5M$PzFk2pj^NxK5KXQw;ql1SLwMrXHeR6x9wf!n2cTzpaU(KBO70#j%3uY%6J zFDC4t@Xf0eYP`G_SN$XX_lJD_IHMQN6U2SO(v z#-yi)2s3O1aZ;Q^nL)P==eie13Sm21q_tBuiCBM2V@K^BhK!Zsz1iA5+3S6+ZCAwH>e7iB+ zmjLOC37XlK*dhsr4E65NZVtR{^y2q~U36BA33$Jl+i^*uHQDdJ`+KNFW&g#rrM)3% z>n4E8=SgZRDe(N+E8wA)qwi~yjw$m6ws}z^?Y|8g^h( zyIr~hhRIXb^Fsz~zH#MaaW!4S`_gPd1GptEMfT6#5h-YRa^^!fdozArY8^j;BFf2` zApiD-DLLkTSb2zB@MD;R$Gl`~Odr|NKI1gfXMfn)zdwZ7FdwnN6z#jWM}vz7}}yv2<7 zd6fo|n*v{F3Yyn}JrftBhWx}Vrn+>R%&D$bWR94o#+0i>4Go%(R?*-q`hQ{0@}A#4HK zIj1PWfx+~ibSpHFnjGA8fe}PO&Pp;_c@3(UQSafIEXfUZW-P#5O;kC*(ui=8eG=v)5f1%UL>9K7gS zdDDM0`EvZbizs}@<%)6I$&QQ-BLzj%&!6Xu9#Qfj?# zvgc*>*NLoqOhL`NMii1tjgXct|I-HcSwH=zZiv*^?%e>r2EwX zf=g%L)3m=(;kuiLH;MJ&V#{wjXk6HDlH0Gz=DFDKu-MDD&&I9M z=4+DQC8;i$+i9zXa?7L<+DQp+F)kF{P(>f4X@9VE28ekQTerjZ^gjr&>wf7nVL=(T zZVLJyUi#j)cMJhY9u(bK%=?^Ybv?izya^yoyj{TcQP|*5-rh$S8||CjH_Les;0>SK zn?-8rL-kA;|=YO#{ZKzr0N|qHg`dp0oTvs=C0z00Y|jSPwWJn?kQP2P{lnLPRw~ zm`IW`&vwtYeE<0cT^gDOdi={+S?)V}5qnk(y6p;lYY#kpfSxr%55ccpMUYkK5im{6 zXxl%DUeI$N|LfQB*RKf}$!`Spi+0S2wyyBrQvTzmsQ=}Jyp@lbC!$*8UZsmFAYeAb zO)NTNWbd`)FXKGb@6N97ZPW0)6Slb{)msu)2zdiCEaMB{scD?1Sr!r@?#Uz6(65Ea6$YHVuHt#LVW`Fpy%3K(QW##O&PkY^GflrkSifNd$q< zk0tHtWEfD{M)f;I-br>))5+)wj@PQ=6(qdMrD0_0D?#i#&ZH;shDkUnQ;SI$~G16*tI}p;W;Y>v%<*Phx zVyq&Z%E{2tX{mwDVh(pYikGDH_QNopW;NfIyye1bh|tJ4bEzxLm|&zI#eb9}$QeVY zX^|o1)00fl^bMWg>rSi8V|I2QQCT)9yF&^Yo0AU|Qec(0N^hgCh&RCeK3iIwx4rZ^ zo_U^9JFWFh-lKrE{c;USTc1`D$YLabk`W2bU@WJGid{svHp3#wq?N0jU~EoF^FIVO}v?o3<1;Yw82Xr~s29SM5ixypSpsw-I*gzbmaELjKq$^9n24l2tncy^&)d zS)=;4CP`9ILPxnQhOjoHRa`}#vAl2qH)6Hz&=1rc-(NiQl{r8DIkqVDzS>`9tW2z! zE;sa+YBzw~MC0C-kO)%PSeM;8h8HTKO~5+((ut8u+erR)Ox2(I9)i)6-+$CH$yF1M zN?WKaX%{F+TTd;U&B}0qnO<*WCYrvR)dGUa3=R835>B$^MC~ikGt)?o4Hv)c3D= zK|GmGY6^TPWy&PU7+W()e6cL{-@d>J3JL;kLx#Iyd#fP_u~V}b?dVju# zy6TypBu{BE4#>dju8BJ!CZ~S{MtY`dOh4OHGJHv-J^oS&@FwVK)Ms+$H5sU+oiYzk zS5`CW=@n1n=*DZvG7e4R7<}YltNNDnfiL4Ild)pqT~_3`1L;6|B(;&71zc~gkjY*1 zVJDDvTuA4vo3B5wu*|7`bXq=oHfe=cdWEO z>_!Y3>#`?eB+9{=u@)Uv=lA!s<_vF>$H{ze4!MGCYRsIU>XBih(R-UKRG_%}PUb|f zO*i?b&f(RiQ13T=u1Gi6ah)#|ZmA(2Fr0m_=&{H=P?NGRzA;#L4bocT{)rf;n5qp5 zMFd{X9b+L6)3&LKga_z=3(1uZ&gk3Wfg)CSz!^tw+u3)6p$kprHiB+sOCPFRa1nV2Ws9^`sj|KIJBw1gQ^h z^Y~eNq#6)iYO_hVT_fOUdQ>m($7;u>r1{XJ%)v&Z(|tR@csHDmVEQ}74KAOrv0Q^$ zUJ(_fU zOf9mjDhlkbAO)j%|KlPUH!Xye&`68@qoYe0vc3UodHpzn}Cksr)<=y4w0mbIbSQz#4ob5B{k?o(JP?a zxt=TQ0v4$dV#*CKUkBi&`1Jux94d!>0o472pwj?+EAV34aC^uGyaC0A9wasN0(zm5 z?E&%ip^t+TGp-Zt}XU4mz$5x~z8I2BrcUS+zE;9LYxIPm@dUDx9IyS)ZQ1 z>GC(OQb7~{id_y-K~IA2!h#;<`hXq$ByctXR{pFhCKW-t<;505I#;y5jVNrz5?x?^=1M4(*~O+rG6q{66KmB_x_WLSU= z-o#%=j)`zc1~?Hn*mMAN#g~rSm)4mL-es}xLKKs7ZswVMKogSMo{(6om3$|iq>&!* z`Wzp%rJG2|u&@xjbt4`;F}}Cb{Aw>G1Vmd#;1S4E$;ho6d7MqQGM-wvdkA%Fd<;$* zO=*N39ge4YUH)!)x%Qv~+a~Mh*g|+Eg)ta#v6vp`mtl6ZT*N#X1XgW)B#vBd`bo5C zDs|O~dAC@Nh3*V|CHYL$;n_}tPWh9uXH1y}>T;s01cYxR;s=@t#Z6Ox&oHW4!r$jx z>FCUtWs~E_`fNrD<8x;$lU|y9owsxOxzGvZe!+n@%M5aj`a|d6({zi|p!tMl`2<<8 zk2)W1QeQ&314zc}&HZ7D#n=&;1SMH;4-2}nN(*hN2qj`<7{%a^Y)JVQjrI)R!7=Kv z2;jf}dMyKcJeq^Jq`a7`SJjS$0HZ@=%q%tCedk&E*#;;Tbn?X4eXC+ykbt@g_62DB zzwH59i$6bJ?8`NVm|1eA?fqVM z@<^PmVw9Z6+034nBeNi9T3&Q;4YjRM)7}O7?H^`opr-A5=DCVN&EdYmv~4M$I8+Eu z54CaB)=s+_zZ;j+UuR4)W4Sty<1fsc^E%%TXU2Cc;m< zLn$;-Okjv691q6#riPh;pdy^fruLrKr1*j$tC|a3m&D-oVs((TfP7g#tl&u|*ePnqf9pxbDDKe~WRBN`{jEB7fYQ?<}`Ftv^35FRiRBn=tD- zACJ_!A-_#|s5&Hr2yp>4y9_})34??Z1>(ryI$E@rgg5qJ{5+EBCe9*W;gVrpZJm)J4MUTI{GDe2;tEuFI0yy@x(9&_ZRpApje?$%HHuB% zelJ(`KG0G<9k>1ESQ5MIX@p(^MxCsngDU8DQXsHd0P8~UI9_i@dtWRJmI~Em*VEE$ zUf<+kuKIRGkKM@dVV;5FkIf}Z4Aid#%CGwR@FNDuDAc0GIxK-#iv8*?`Mz}M-( zWXozQM|+rcpW?!FvbMN}(_I$!OVTV1-M$|0zv8~klvtFCinTrVN;7sC=I~Qq)L|H) z9%aDPPpoLj3KZu071(e`4+lH#{_D*sRdnk!z&wXNz;&-t*ErX*;K}}%#Z1?!ot2lZ zI5Nzg>@UDkW6heXr`90;#RRd0_0ub{xJDbn)KP7JqJi6`0@g%wXV!EDOjs3+BZ%(D zMtuAUyK%Xhoq-E=Jd7>rn*UV4R}-)x!an1ln}5rN$8s@soCz@}=2naT?=PUETICgb zNXjcjO6K``=ar7r)dlrZ!VG>J){UhsTtjngKi_83hW)61J>BTf3m*|y1T*^SY5m8> zT14WmnU^5=Q^LmmqF~U*ke4asMR2DI3!DygTm10#M%4*e|M~^2dTuo*hP-*P-!uI+ z7HHb2dJcJeYkpY0>bCgLkuxWW2_x2(fviw+XX*a;(|0!i74&gU=7dB#6k4n9?Cn0% z3b>B~X@QDGb5{@F=3z{F-(plXw(>n1`2B7cnEoBUXxPE{F=HcN3P1>BWH+lq{sx{c z*NZ^`O^#aNbyeVLRiXbQGm;|Afe6!8UK>z&>aJ3R|MMR@_V8Q*H^}0pr%_8I_^v(Z zM(gNZ(>mLtcUip$j8fB(lbOV*5Lswq*xklx=$&ea@V(X;g$ClK=_@S%WtC#!xF>i^ zu>3}p5i@=D39ruoG=rweP;LQ6@hsopM(wlOo1#rrL1{l4;|@dLP~Qzp*9`PqK}bNG z<}(=(2K9(t7Ti4jKa4EZpRI2Jm?gge?MVGujs6e5vGILXTXPVB*mQ098AGHt zL&_jP=z1X~Dq7{gc>w?ozKW!)gmY85NTZ+2xejNd$ z^}(U2B&u~k7qE)WX&SPZ@QE7qcm{fH1AS}cb?)WCAIrbT5_CWK8JW}}hjowfuXC}z z(a*cj!O{8QvgOEs#^n4j@Sp)7Kzg#C*Hrilh>{sB?2G=9`8N0+ud>@iAU7I?S?*>{HAb3k{B zUaQ1jo%^5`(Cg8Oy!r~u*ZJ*jyPz#sudN;60K3s6_f{6wP5ZJj1WeVZn@C)+j{XkW z7dbodsy>Kpn7B{hlpCXVEGR5oakQ_9xL1Hl)wR5!Eu!!*BDBclRKTEKR1aVfYmL~GMZd~~V@duT-))^`9({boKaHb!!|PaSu4jaI@X`;ndhpytzvVe&QUE}j(&sbxZtUFx@wQMdqn8v2LY zfz${_zTL^8LD>&%3zV#R7LVbjM+i()*H@}*?n}RO5L-c2TKK7V@zoVRbWA7uJ;AwF zk{o-Xu&xG?3oWGuS+OX?2%)oD0{n>Xu=R;b2mUy@@|x%!cq!v9u4$Zx;XM~T%iY{{ zo=5^;EX%oSbkyrZ$#}cxFKRezqCZ!*a(OfTUPC&F|MtaPwZ&tERJ-hNvc2^OHYP?_ z35DR6U0$2`l+RYKoEVyMIGxFKhXA?)HBM(f$EytETLjNkRK5=7z{#ogBhIKC2EJ3P zUROM$j_hoKf>5l7R-0xhna1Sfp>{*3>RLrzxomK)?__IgMCgK^#j%2R;+VN|%I?oh zt@Lc_@DIGpYv%1viViD(>a)_Y;Qf}1~+#V!_ z5d>#B3XWe)wCVW7^XJNuc`|p}^B4yQ6(5B{e^1z1)8|uR9>^{XW3VF)xW8W|O-C

    PVRAk2 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 z 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

    H=SmGeLc(YYD4!zfrCTeWkRXiXW?hR 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℧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�xHmhFfF5cgY9O_RMnFU+P*4(xB` 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�e->s!p7 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%0D`3oME5#kb2~bxA{Gp6{RjQV&$KCOH2z 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

    $#=4|AFJi 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

    Sg>kO z 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 z

    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 E5BB=$2LJ#7 diff --git a/bi-connectors/PowerBIConnector/img/pbi_service_setting.png b/bi-connectors/PowerBIConnector/img/pbi_service_setting.png deleted file mode 100644 index 574aba671d4526d57a68fbebd0123c7de9afcda5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32300 zcmeEuWmHsc+qQ+MNTcL{gd$2xGlWVEh%h&x0!m0oNDMhND3St$fPl1=NJw`|NH@~m zIW!C~zzYcz!wN{2bJd@c@w+Mc@VE91c!I?8Tfdq#-c;NTT7P9KrXU<%| zdGhzHoHEP$nKLfca#9bT*lVFju__vvn0ee2v^KXyiZWaB;g&19^`}1aHL@@P(dOU3 zziQgMqWF5cRd8J4-t|j14`eP~zN~q5;UX#7MV3UrS1kJSJbIcWU4+>jEYh;|!2u6y zs5C!x;mK1~-)C~F#q`Euu+~D+=703qFc87AU~HTR+lxK()}>J$ye`vFDXETP2d~&m z;UvU_4@FD=z6SXC)O+mpyZCrtWTe;p`zj+PrT6e~S-ej29Z4YP-&ba)1Rlm?TZXCl z2R<;$zptdEU7tvBrNkSZH|i1z{=WM77(MoJ8}+s~BAM#){QD{;#doW&YE@E{@6yJ? z!@sXgOf=+E+89Q98V`G$Kd<7%=#u$Zr;Q(!J>A`XnVK)2J=>j&LiADXon_4-G1S4! z_(FMuDIsZnzrP~xpN2rAhtxw`9TI`Jou>l?iRuXNPBRsMHg~_hedo>{FE1|{-!EtF z7)OG(Ir(EHs#Xo9{vPnj;M2T!r~J6WK7KSJzIB1JLB_^fO2>0wi`6Z`*e@b5_1IS8 z-S1CQ7R)cPo(~HRH9n(AE8t1E^u@OZ7HjFew>~MBU|ejwe0^267`g~)xoHcYr1ATc z?s)B1thsP;alsS0QnS@fHL|>JKW@#FP87kBE4&*C-$u;_zt_f`CH;Gj!F-2r$G62m zi@to3dBKI3Z7F_Mj*(@nLh)Ft=LY6xgquVP%WpDqrB#-C&UB3Ub z_ra1V7#hhPhP>e|(GY$g`J ziuTkFW58{j<9tNfWnc%T9jb;ME{YursZRpU+XM6L_zRJk0DtGiMA{>R3+GMEMnaFK ze~#THryug;s{Gm;<}Zta6MW%dJk2Sf6W_L^!N&=fFVI6DU+R`F# z&ZT&v-+ejw?vDaJhV844294jcLfjtNMh_e;S3S6Q+&g}>(%Ua!#)&$75wjnNqbA+& z$LUGiwwP%K8r&`6Iyq63+8C94^9{KC+>9@Cf0&usDkuy#yFJ>VyQM6YKR;)nS~LdX zYvAi<7%jlHvEvX0qow*bHtXglcdS`F6KT0@(0et_2W3G~3sFJGv}kmk%<nyR&O;d44y#yUNOv0_X>5N-{o@x+;wcLW#w^CbMr?>5X zW*!n~-joJ|yh%va-54-ETjhM#@|y65L!11#L+YIM)eJ^#$y)h(OU)3`KJiFQHC77 zQa|6I@HA43@uO8c+n_3oir_%!jRSRZhfgV`5Cq?~W9FKi&x>B1KFH*Q&??7CuAa24 z1>;E1naU(P_V7B_(FSA1cFV1+9gU;%1)f=rEydPzmC9;Pa+C}ma+5uxsdUffmIV_> zy|)Q>thJyBFY^8I{eBxMYhv3#*PclKc}`vV*@gPcPoa;t?N;9J^SBEO2U)|Q$mH$2 z$I9HL!hnl$JMzr z&6|Ok=YfmCsgZr!kq(Q=;Y{8RHZ}={bZ$H8+A%_wQB^*t&LY;hazMMcvrX2vk+ z1xNB$32f5I-ie!&o9wLQE!wSLSV&R)qpfK~Lq$bXCC_1HF+XN|8k% zUvSJ`QqSxTjk(O&y?g7@?_yEOlYVD2c?l>zVAoLCF9Bf ztKM7`AEuTb!%`inW>WT!(mRVPNkt@drv7c;Wl@vW$0$0Nu znBmO3(qn8qcpa|%>SEfvCGps;OcJgry+#=qoyInrjg&S=>D5j~Too)#WPYoSvD`0o~6f3--PhvV94uwp|pau$$i||LWUU5*<#ytt}hfhd)uX-`+8g!gzO{ zn3fG$_6Qg(r&7o+EzGSheb;PpePZ%x##&R(<*oSJ_?ripmr*b`nxn!j1-L@Sx3%Fe z39+S46_v1wly3wC1eT^nX2V}nG;cZ9cM&cx49U5RRU71}I*JJAL+}~gl()2Pg9wH# zt#F5{^XK0Mwja;oJBm!X9TgJv_iAjqh{Xt%FfY!;orCmd9j<%2hiES~HE9lFt8%PD zV&A_&V1t6M`TV$sm;4m5I!L~+>WN~H>9Wv+ijeKuG6V|ue)@DkYqdS&(W(+S+RNrJ z$5SHt!U3sovwryKaC>CL?YUCr-SKOvj<%zn15N&3{<1#Y&{6eL_@-TG)*fq~{_K8r zS5RJ%JgdAFOwjj_it&xqV@~BKM=7_~T8!o97Fuy}mg8A-tz4;MPhOB=HJQfpnCupl zjH9lm{J4l)<8_ddAp_SOHIZfoPrdO*>0ez42cwt zUo}uR_*q*$dm3Asney%}dO>!g-$ita2t^^@7Sb9oraE@ewlI2-vu0^io?r4nygW^& zlvbd@UVO8E#|~Cy%mH7xmi;MMxKvI|1ucZRKhsp)XI!qf{X~vVb4HP$^Z3#8*-Rm_ zBgSuPh7sHT4q1wi&q=;0Lw++D`nk7V&WwcH**uz|G~aGWher$Pn0utuMmk35e~*0` zHE>rfhK}qh_KvHY+xo^)%PY5ZziVKj^U5HI{#o3*=goo*7c8d4jO%zk1v>5MGCaG| z9vvN>mgjiq_5ccX0mOP{ee_;jT6WZ2*@h?=QS&@fBCD6ndEc*fsDnou=EC2hogr#o zX`kiN;nsb#C#L+1Jo#+Y+<0>Rablr^Bvbt_ws5WK0vKGJG-sjaCmB1=J=s-j)q~x9IAc~F``(5aVwoH3P%js(vMbcVO@l$wcIg<(-IWXGLwY6 z(MJmYs!QJ}wFZwKr0{lE#=>a|%csi8G%eM`p*T*}NE2#IR`NqtxW|Z}%_iKlu&7(h z-qlu9RC{zFcR8g4_q6MycCG+=?_lwTqZN}~CV#If$45b_Of^l7QTroQtlmh;SbmjF z?NX!3xRBdZIoptB@^QsWT5eU2=btr=T0iIrYBN`R#Z{zZ7h;pU%*3CJH@9*v{r&js z(lL{EBIZBg6$mXGmxi}cb66Zx2bU}PzIi$2O3h{g2qgI|*BYp=fwz2;w z3wOTYxU&kc*?Z@`X#STcD^z!w8?Z6_EUZC}D};q@U{3AHVuLu%rY7R2pLs)7RxzDi zJ~TYA_X*k&Gs9{}A3y*6&f~Wcn`Pq@2RMG|wp;PyI5gb$ZQsmn^T66g|JM!LE0wzM z*Jb2K!IrMFUD=$s+8jv8aXuXGWn~VhDIXrxC^NC^MbHkl%9W|s7b6dkry5n>O{@BB za+M7|=5LlYS$bYNqd)p^a7R1CSEGNntavQUE`5C~vlqAN*Si;Am`v=wv5Cmhw|nZ^ z8hGP}oVj_-p-RGXjC2QXJ+vtH;PR(oLOiaD_3-rNlta8pyY^?_9!6YaFpZcQY%65` zQ6hX->+Uz z=TEqC`LHw)wlLIXzd9Q%f0T(Z^LM^$zwI=A53ZBCHS%;O>IRl8v<`d3W+{KXP{$=N z>Oi{u#W_`9ezOYF8I%^U@UWI=U;70)heM)#jUHo&{n=^3< z1RAwJ4b`CI5L$zL?N9T6jCwO|wn5jBFDH+@G&H$~we!4&*ANG5@S`!r*3qO}=zw>| z+URSsCv=PV>c)@1AZeZT9ABiV&S#{(KG0neu6m&mG{G*WW4%=qWVz_D{P<>}>H$4e|5VPBi`Zc_KN2p z4x1=Nd9D>MHhl=f29M=v{L0y#1=D$(kp){ZX#QQUkN#C`+G^Co!b5KHEVePB3GoUO z$(nOnu-L$z%PCJ}#};(U4aA=2VfamgN~;Vx$eh~_s1KqGdQe}Bn1dY4tfjgQouSP| z9d*Ykh!tKgWw+enqW{;&^q zpiVu{%R_`!r`{*1v389Xt2TVK9q8EczN6WGv&&ZHfE4wiG+sKYjMb_I$*{>r$LNsg zcbw509quN)kCWKQ;C7O@%Zw6mcHZi$lD{LfU;90LY@RuVy}F}WRC0W6;dO&7vGlq0 ztx>n?j_Kj9CqXW(ar1GNIcwNZj>1wVIM1VdGVaO(%3ju^S^JIwCJnyKtr^HN&dtxh zV{R=gzAjgKGH&5?ov#Ijn_%f<)uMaRUnf63yXH{8;kSkOc04!^;M{z}5q6m&#Z0)1 zbe!^j{rt0K=nq-G`54c+%QfARn5f8vV@)I8^zFj9+q^CjMTNyy9kE9+MTYeE<;+$Z zP{-I3(HFDN8J}nPWkW*POgo_BdgEQw?Jy^m0}9lK?)U(V)r{N}Roo-RcotOq7DUX` z(DJ<45tr~zT)|}?zpBLf?{D?O&0Wo6tqyw_@K;Ao%bW`z;LLZ{#w6SdmdEbT%&q{o z=UrLu_%Mu>sd{a}!Rt7)b#J%3h`SJt#fL+`M9fwNUVBZn)vC)v-A26ma}>iISK}+H zP+U4$>GDmu&=P%Hm2%ku=78)er#IW>?gJUKL~{Ne^j@oG?h&-@X2|^X-aPwgYfrQp zc4hdsAp(jbfHk1GGNaQaEH@i-^mbSyIc-N24fsXOV>oI3@(B=A^Ha?It-fkAv`pzV znps>?{TZxg4FpbB)>efgh)>(Pf5G2uaFj5k6V_I!asK@Qi_3zq?B01yH_VEQJ_uim zFOgbxWu^?q+O(>$Slh&|UBs289^vh)AC6A2X3B`)<~=}9RG_RQ{kvT4QVqGuK8zFD zxP12ea;JLjBEG|*$WONp5g91cE>jT3{`0rjd_`rPpF;46P@EjTcvK zZ}^RePD#y1T$UJL(Nd4FlT;i+X-5x4hJ?Hr@TqxY^JD?Dt2wZvImVDK_X zUSAaqNxdmRRPJJItLt1b zax=s&QsQP}I=YIts;lHKaaC-SWl|m=cHlH912E~@M@x0SyC38B+%}{B>HOT~D)`U`bG^7Uo&ejDWR7mn z5dPskk1Sm z#!U`rVV<=OnoO6i6Kt_91&g>SuWykj2d#}*y3A0oI$OUP~7%(c#A}UD53BMj#wa0 zZ?AlAmI2q(oEtf9IK1Yn5mF~d6D(Fb5beCpL026YPn}l*LF1AaO&XE0>xGESodsOJ z!OCc9$1B*_BGnt5#MX#)hw+ym-*z}(uMfZFils+Q9dR*@_mX!oaQl0W_COTAqaaWV ze+leL-U6`(_WUog>m}Sq>7GI-%7|}kRM05H(u_sh;vGA7#CcK|y(q9hVD%-IL1*gn za()H>uIlR<-^bX8TOOils>Slgp7)t+b}K%nhR$rq75j-o=f~FU=rE8E)86~q1hhi$TCo2V-Zty)0=-{uiCq;R^zsi?h@ z+Cg>Zeg7lOW3Y=&VSs@h^<-omV-K#I;C_ue`ZGi0NRtaW}o zslsYEuWz22nwpt97`<4oR=nJ!?|Oyt`5l-b(Pqw3hTG(&Ng_6 zm|~xxS7pC)Eioo=9cs94kQj?1M?SXW(b;U~KWCm`$e@DXe|z$iyK4Fm5A=`&XDX1STT0rmB*bW6gYTegi%cG0(nZ-5KU^%{~}0PdbM5*l?>i$WF;CSqjC; zcUarwc3WqMYT{6y%u<9Z%=X>RhjE^3TJ*GwF{r$H7VReUZ3ON? zxEMEuWy{rg^M1hxx3s|o*8-15wi*bUaqmU{=j_kKhTFn#;)X}bX@@?J zZQ8FA(Ho5Kx+Jhp?_jx@bDZa+WBuV%2&B#7VBAr}4D-zFthAfWt!ow>oAj{nzbVx? zo3?c)I%9*TU(N{7@#606zex$*l)wV*nQ#AfEG=Q#^-2>RNg%tal(nPg$Z%K>b)pZ@0UEuovoLqV%~WizyiqH~8rPW|fpkKQ!eef%;- z`j_?^P>{mwRxc719`}M7;S@c^P*{&z<{= z%FTua_Mh-4%_YB%#G4`d9D>W|ri-)vM_nU-lbSBNd1WZGCPj=tn4OJo$l5wDz1jawNkep8 zD4*0ZgC9@#xENB;76bJ|@QLn}GkNEn^LAwwF1@_^&|%Wnfi{COs-} zZ{Q2azYo`PY;rh9cFf14spn{+$+l;4wT;F~u(QeS`SUxtpvk?*A%DV0U^_aeG7LqR z2$#`_9Fzs3D$e2lb~9#}Gub{SbVU$1HZbqUnOU85t@XI0S;|+mYG7b!RPdgAE7`ce z|F&(BK)tK@Jzp~V=Ob~2t2DCPDqM5E4R80-c{ku{@F|$Yfs&36V+~PN&@4iWm7vhe zOt)pgHMgoE$bg|l^;2q`(eppmY7gK^Y5(p?*?2t@_$I*}qCY@A%8@WAJLeR0==%x%Qa!$?IqSw>~}Bxw*NSKWgx#wF*y?FY1&v*8{9M{ok#* z9=ah+C8i=Wl7^$0+8y%Ue1V9xP5G3e#s@mD{(I-Qy#=PTG`4zQUpXJKX1mE6dGVJH z@amvy_59tx-QN=@m`xJ9-{F=CnTKi=tX}BKxOK{bob7kv{@w1nX=0>uAkW(r>`}!e zNkQ^^ALReTDkSrsvlhQc$M!_OvcD)sDOx@sF{6 zO%gkXsSHn8bEz}fw-u#Ol$4Y-YIsp(Zk&kc`|L6vea!}@3MW=$X<_jPFhf&;`bhHo zjHl8Ljg(l2?7;|f*u+O=b)G3HF~Y?zz88Hbou}yFPy*PGGG^Je{`aX#b~NIu+|!kl z^S$`;p@pTXlpu^kw-M&B%X2CJ!L4<-+h6G=T1LfIhvtsBP1lK#7oPU>mWpUH9euG3bVpvl$4 zHz8_1dD-Wl^$?JdDk=YUpF`}f%HR9qqy*r&x08I5Y%2b2?x)N5Xgz7XJ$hTQ-96uNwGkcz_wH|@T9*ZqmzHt9Gp}e95(;iXm!=` za#b$GF!7&{GZJN-EcM}g=VEe}U$q3Fil7zuUpC_QS1H2)D(}g!VuXN1H^TrQ_MdsVlf-UR)YR1U^z<||j)!|Z?cMTZO7ABpz3?IQj`nA!bbRoc z>4P^1>eO!#tGS$^b(CXz^mDC24@%~+=%Lpr%3>YtG0lM6gSD#Rj@NMFLP9sZ#k=~kANg- z?c|2eCYXaqbK+C_k^^o7D49Z(K;jQ13k}SWR?^@`L;yF3n8W6Uyr1jq>k|_<<~Z29 zTK>9`gjmL5BN8q~mW=xAmJ}Lr%VpSyBH?ByItFp)uaq|usNKEe%Q2+Hk3~giEopce zcFswCBr%imL(B5X%u`Fw(MNc5GnQz7bKPF(I>KUh?n&`Uu5;JD>)L8A5H*4H7jS^lSEKHeTH%_~Xa6GGsORN{+4kA zSJh!KT9)EMH>zE`0Bq}IpI>`aS)_uB48^Skbv;;2Ie7+HdJ*((x947<$t(XfS!W7+ ztY`{Ln0N^#+n4+`)od|ZR|}by*1;w`jQ_j;7l(s_mlFfUBLxv-IeHD-d^g|aPlGid zKuNJB|NWtQ{~~6l^Ql2`ae;SxrIjw?;{&%!oh9$wFwZsc!Q)PYeDLE@3MKOm^rx^e zTH18B#F|G%|2_2RL+;>}qd9H^u=hfEP>% zO(++$KWl7hDYKe=zhVInSSF9idp(~c?Sj|WGNpGfMD=dz260Rb6c!YGQ_qvx{g$8q zvjWGxZxC~~u&79{AvZVIe5~Ae7PC5<{`KnzQk_ZYTKU#Y6M4y{mqJdvE7exfes`sl zbp*FXw}N@X&Y;Lp9Kn!uju(Y1HJ${;=?jnMA|^su;hAbV=b#s<&h0+v@Joc`u#H46 z_kFAV3=-lz7@nHe)2E&UrNXq;(jp=v0;U5u1TXAXm6jfCOgC6@%G&4>>`m_UYd07y zFE8gfZ)#o>N)sx~3uFF68w2&E+j!L zrN6$tDIYdc>GGn3+k%Y1#Ka`g?*h5#mCH9havjzxFxjLmbG6>Yvl{9QXY;LQ9~~Bf zl}}2#V3`f@^;MO=pouq$us~gApC=jFc57O6gzE9>=>+|p{q7tSRYJbU7Ddb`9Zk*A z!~Lxy(?NIJY&KJp^vT@ZhkVqV!-%Swn3xJToT~GT$_S|f;TZk znC*z&`4x#r1hfrLKYz8dvdTu~&BM)LPavF}!xAnBe5jNR|9E}@0bP~GSEkfXK2K__ zM(73zNBCs*HDde;UVMM;;^JZu;;5oqWO+SvbntDH-8F8cKM}#KqC3B3;%ELG{uIbY z=XXMnUW@SBfSV0%E@<&nC)WQ>K67bGUY_-2jc22jSnYSY)>$zzu`X%%6$=T>J6{He zuFlRItgl>JHxx~E-rPQqxjRjDOZSJIocdW+)+YDaOA46lXC(A|%OIA{*=^SI?UOH? zgYk*!KU+PLmmh`imFQ3m2xeG=xT>jtyg*ktExL8^v#t3||F;*I)v`4aTlgLJb1gn*jm{?n(_r|rXof6|L#_5hk*_O05a|wfnmWR=UjX}+j~sAqGPH%cwSt0%C(+XG=vNq!k5pa zor6q^US4`@Qf(eBV*3bAJMaYHON~3RVEkeX+%@*Ryu3hy;T1z$9Uty*Z*MOU=d~CP zSn99m}cC$>h#FcCBw;5MsT~mzj@>WcW^J8B%qjZ+kP% zg%t1X>}<_;3?i=Xgy@W`XOZNf!3o}uU`37F~d+d8b#4QxMsP@!Al8@f`XKgciVM%U3^gF ziUsHF7>^*vO741H-;dkjT-pGI2K(8I+O}+%3e25}Pf0O6I@qCl;^=tL9s`Xjw#0mh z(g>#$q(jm8S!ZcVKd=bjJyMp72n7#xPz6!ss?WZM-uJ+ zF~)N3jT1(61a@QYHGH(!7v<|DY)&+CyI605aKas@&1k2{a5^V_9wKcAdp0P@ve!Za zf02#sLIa3ZqX_(u!egoUc4|T+wAC+3zr+ecrr76|_Z&72@i%yhC<@$LZpbfy6u$8e2=-d`+vpllAm@8sIQSgJOqWmPXI!MBK zk9$=(*WD({nho`0^)Ux+GVqBdB zcF^XnTp>rRzQ;PhBLx4?1FKn2H}OfpRbLfx2^D5}(LPNlEF!gX+%CKfo>%zArdZ3=5?H zK{E5o?&EdW-SQ&hk+uDh$2KXnjSuIIoXojC9N2KqiZ{YNl@KGvq_#f85Y}XhQRoeC z-2@C&q(yHm5%DcI3>77%w-rMeRo36savoOtkiPgXJwmz#0=}APzx(9;?5s`{C6|^n7G0DR zw`!&fX}sT63pY0WQzy;uCRSj`r4^mIIUuLO?Cbw zQz85E1j>U0I*s>Jz#K1Q&Y5)30NVI30PBCIkQr%!-9>Nqik99^leOsc zB%quz$x%8F0uV_51B!>}OP72AESsUoJ!9E9HipU@39l)T!Yzg`KY}Kx%ot3AU!BeOx*C>3q4(BH6RrW+4K~Isq|lrXJqowS|?zJbc0Y zSW0c^IiinrRbP6lZZ!x$HG=Rt+Tgyj%-$uXV9a({Y~Q)v)*6tiH+Zpm_7yP zK~Yr@_;W8YGjnz7hu_{>B)`dAgv5Ct$)vkCJt$tRhypNVJ|*c*#GzeD zhZ}zhwx_+&!lUZ%U_9Rc@D|es--%Cr0s;w?y!V*g(0_;zY)pDHOx<3j@zsT1ykOpp z8FMJ2)Qx zMm}>U=KI_8#>U0~D*pKK!^uA_Ev>w~{NTV*lZ~I78aF3cC2Tq65ld8vLZRH<-2)|# z)!?k~r9#o0;3S@k3MULdlQP-I!g={yk(al(ZK}5T!9t?L)*PeywoSHhR{rYzS-3sV&Dlh63qS4i3*sPp@rXU}DID;0^OkoH|T;2E#z_wLlLQczSy7J)rz? z@7}%KriHb&@gfAnb3i{vt*-Cx&oqU!gmFk7=CCitfO z((*EoaZ-mQD0qRv3LN|q0wVj8GTNJwzP ztTw5~jy5(or)6dW?Jy^rAeZ;))2Dl9C2L=U=`-oeFh(H4uVw2ER5WTmS7W%_QUW+u za&mI6CEfcI%486l_od{O;G*dvrD~Dow2VJ#UzWBTpe35MA71GHcz>;!sl!${+w`_!n^7Jfhz?bXKro|aE(k`qtk7kfxD`i z6HEg`z%S<1Dz^t(NqjtGw5OjQ^VjcyYELU)yLQcoMI%Vc@G+2hTHD%ecQ2@_K6~cn zDMZk4eYkpOZg!S2Et;?tqjH58B;L!`@q=M@tR$)H_p$ckz59-Ss+QcE|{ayXACQ`v>Y*55?;K2dRIr70j%n^zcnwhb0-NxYKVu2 zcj?|rA-jb2+~a4@!mtip9u!mO9avZq%%-E;>dy_{IodW6_5wM-66?07oa}yGnM$GgtM{WWo zXpqxYRB?+R0 zP|ecnl}=0?fU^*YTu$r+|AfbivT<-o?<;KQM5U$O!Iy zIiL6rt9}AV{*}PNNe|KYmK^FDb-p3y9qBu#MIJ7_y)s-x9M7grznJ-SkpL5Yc&iTcx?rq3t@SZOY(J~6el$OT{%KZH=PXAf+VQGXF8PPQqMg+b4UX8FTIn!$_3nXzuVoAF?cc9lMhHhbd5?~? zSaLnw2jPK{y30p)7!XKZ;@Q$$!Zhc~-nLBb*5DEsP87*HFm-< zD1VUUK@el*5uu^8&J!XuGC){ebDd|pp#fB45WQyzmQ>&kXR#CIRh{RtAHu^a|737d zO9dwV>((`%-s!OmZ171*sP2t+(lW=LC9uXotoFx-MlV-p%Avfzn@{vT*vouga7R$k zF4$7c3F|(G}=}Y@m5Sv%9Ebx(A<+DcJs90v^^Oj@9Y#Z}*S|4yu zH~RUzx-5h!!-)gSB;FtUpF&^$5oWLtTy^T%FRQU@RcoT^cmskO{MV=EKcRiD?XHan z8d}{_AV$7c(9w%M_M3Q;y1~njXvWSU6UPxZk$-Db3 zqp_pIu83LY&Pgr{q!+srhm$V&{OT-a5Q0aFTUxs;N<+UZK^o+&9p@@$BKGULtTAhL zbyP~yt81ygdF$CuLQ)Gq>+9=>hMup8nmPv^Ny#iHqMy9L&HBxLaPLID zNtZz|UI=<{iNa<8L^%-mv%Q5Vb>8k-6ruF&?d<`@SdiAZ5|g7->xDuQl~CLWX8D;t z2m=1@?kKFmX&PY~bgz7`>FdDZ#F<2tbylWyq`v2w3>7X=vK6?E;9+rqDozj0 zveW4w5?RT3v&%^7Hd=AksoPUgz9(Gt3dqo|(mJLhz7B+Q#>iLGWXN_^3I)R!`fk)7 zSKmj88DoSLKo6a{PH^i|-@{fnOh zUh%^hE%ffxc>_)U&n6Q8Z6FzNkBzgWZMXkzGXI^z)%Bo$Ia#N`@PAvU{;%ME|82A5 zuik}XW@ZN24JgGfd+YI>34;@V8ie%6=_zbVrxuCl9jNQxMFZ0Zpd!5fbU%%31k`R- zqu4^n(2#Z5GE5hG3;097sdTL`p;JpFs79Dn5~q~|u*~0IyDMNec^VFF$$cDtn$DcK`T>8oOrz)SHpa03w(<`a>#J#lHOfqj#sX;!zerm^k z8bp=@Ur13=al55&APxjaLqkKo+@I1qb;u;4Q+{ZDYat*)0mb$kQ>&}yn)^`VzICAzK_La|~#ddxZjmGQXuBKhp47DJG3Gd8IPBDZHMSp=|M{Gt0dkJzS)@eGo_6-DBkT)`E z(sfk1G>UIHdCpQ1T^AX_e;`nKLTMl8B@VyXCO$*4nv4qS&cx4&%$!qWw@?Q6*RaT0tmwf*G(#S~m z8DLWz0D6=15E2sRUic%Vu^K47i;Eld;?6!CpREdkNf%@M`t`#`Es)FG%@Bx&-uU4U z8bD(FXwuLQ)~@kNF0t(Gj~jqZSZ)Bm(jsCdYWX!wqr{y+HwzHuw*eZJ&gw`i$?x|& zb&4-#mL?%J(0jBC(FqhSHGr(*fW*9(e2S;M9^R^R|N zn$yfAMiczSf6NIop8euKEu*O7JOG3zbKBK!yPn?H;7yXFh);mTeGCg@f~}5MamgnP zZvZZ?uC5MT;qZ{o-d@kT2c%Q;AP-|g%s^h1e6RDaojjtpwiZ~(Hj0iDe|#Po;aCvh z=6>@bSg}|73qSbK@=D$ccW%?D90YP=T}y2VtKKo5T{RfF0KT-KwoJ@Iz^)U9K)2E2r)a3_fm4 zS<9D}_#xJ8zee*f)=@u9iv2@V6OFp&&_zvP8OFYm&%B%c^=so+T0RA98iA&dT5D^o zP3$YFhm%uPM`%P0E6wbk5x8V&6R+7S!~*Je?Cj`Rx)uFZGWNcixp{p@ZmqDeu;TGK ztL)F8@9+K*CPhh4R0G6mmO{GRA{dIUy5j^a=j*w;ikpLD)Yui0?w6XD)?C72Ax*U- z#b6vf`rS<_Y@uapO4mzI_f)>r1KrKkst|EIJ_M61>`PKDH;<>go}ZXck-!p}!OW$+ zHjs1veBEcTy{v#c$wIn`hx>8;4}0O#|2=0IXafRV0R~na)=#=NK_|svN2FZNhE*4C`yE8G+K!jw~NqKDBD5x%%3dyN_CNkBE* zDr(JRX8~Oiq5<^?K%J@AL!WGmwN`_nq;g?PwhXT0QQZh=kw z7G2VMevoLbH!8?l@3pzPj0Yq2#ycsNi+&^Q92`Gnu3Wid5m5U2BOn{|N1k046+Cfv zb!6<}ZMQV+ioT&gcfnpSr2fbA?{eI^^IXrq=8~wH$LLs}--8A7qecBjm~SE_#@CA4&fq=D~tJ*|Ukp42_a|bMqNFTcAQqh}v*cE}}$UNxTki z%s#@&;Jkj;oaQhZPzpKd6nCt+%aE`?nFG}gFW-<{2&TbnX1ZGu3ZBXUqoNGrve~v6 zB9&-qctx^ZtkP6MA#o}z`Jx*+gy>T^z~*e1mLYn<(JA8JDhPZ`c2RbUDJNQ9Q)YS*+c8*XBDR>0ei>t;h7rT>JC;al(Euy!! zwz_nHY6JpuXw@I>R)xg{XxEo({d--&-8jV`mx0Cp{? zQL)Ojq3`S8n&K2SLLgx8b(oEE$HuhOeFF3pG}yxQ-mC_|ty|2yQ9ci&%YgoNfe8?U zv7>JhZ+b~O2dJa{db4w}N2qg9|7mupf8qvU6)my$L!>jt@^jNqPNg^*i=iOrx%|Y~ zFK141(yN8jfCLGFx1)Y5Pr5j~5%B{VEq!W#y+iM{0*1hJDq&P3oegpzhNP#~_Wzp| zzg24df3xEMG=GUFefY2PJ0O-jiZGt01y}q6#Se_e${m2v*we#j^6#gNw7>FIOBjH7 zAYd&gr075uQD`cfQ-=mr?||Apph>rNbO6K*-GzlK-eE%vy#R_T1qFrk;YNd_2$5++ z=joEDiF`dXGxQgQC>mPYyu3Uf*i!e&cQW`~kh;W#zhgr;fQkq7=r`H&tT9aE1c}_4 zKR&{Oin9~(l=l`m*mT1@e5cMf$X)h3OCT+|6o6_^r(A#`fY!U>6>F%Y+5x^UO!voo zFd_i?N6YNSi!EzMPq{6i@N6d#6-~f5F(If^ zi|jXa=^Qksf&T$sToB)%A!n~XATmUVy%;XG)I%V$O!5C?$PbKQ8qh1mC0^#WO<(~M z2SlLIS&g@&!)10{X{0&eU2_}ob$0wFeV@}wp2i|I%8+PKv756F%xiWwwrc6-mX?#e z5DYa2!v2lBF_u3}VRd(r#-KK?m{a3A;e4empK$~5JEmwrEoh9GRH;r8&wX`59dDQV zFWFAAwV;k~N_n8Rv{Yo|dM+w|8qgO?PL10UKD1MSM1eYOmKN zf&}%_1XKyqbAAGXsPlsNf9w|z^l?@I+~jm!hQafZ<^0NRxPASmm36$8XYzv3);&U;PX_Mldg&EpnPDtq0ARN<6+ zcePLnFb(vLR8_+>&J>GKq~sAz2;GPYdJ_;3&`xwFOb;8|pP}@%IC;Bn!N}U0_fdX) z`~$^Yh~&Se!%h^~TMthPpkFBJW|1I$SXaE*t5@TPNj^3{QfIOt)#&U&0pz^e`$1(P z1^DHQi(OrS(Ym{z%kbT?yk`J)6kwtp{IgV!lLkK2Rnaj8N>d^tB7TADuabPaW@g`_ zXFtrg(?4Q%?55T&OoZ9lVZcvG&Bn&>BJF2&{)-MY=b6h!8!5hbpy`@aU-f;+ zcr>HP+3`A-)4znYL!@hJP?B%tf0g&;;ZXMd+m(v!imXG78nQ1%j4jJhB$5ziD@1l< zZ%aY>vx$3^Vn|j{&`2F!d&+#6|)1NxHuIqb! zm-BOe&hxy!w?p5HhY#~$EF?-%9tZ2iW}(so`~%W9avT~bD<{_#L#d`(*3gY8EG%>+ zLGar+x7(WsN68Fb#@6v_4{2oz+)nqf#Ruc@3!u}O@d6cQ(=h72`B4Y&nc~6wN3wD& zk+vQ_Vdw0vJv}l(RC@sQXxNS=zzp=Sw73)a^5x5nz}#cdUu~P(1#OJo1EPu(W`_?; z%gbj(UxB4%#}50~5;tyZpz=3vd|M&<#@>R1o*XWu>0kR>xX9->`!`COe++6v zx6cIKU`j%ZwCPkj;l?Q+UuC7JjE{{SFFf-GY8a^JjQ4H@M!T!43m|L0eHuRDqHY*H zWA9h)^bwjWJR=ho+_+hZuSo=fv&w1A`h`cZ@}RE>b4O9s=CWe^lx2dOj<}RmOLH^R zA>}mhwlZi8iadpqTgs|b9*wU4Dud!Pv`<@ELA@X2?;F#99W#5^^Gb1EULJ_5irF@Y zHVy=1LNXb{^+#gsA19kr%!j2LDbk8 z|Mu-$poj1Af@I|Rxv!-;Hk69Vt^$mh7(-y_teAv^55a>SMvr-e=aJRRj73;QMUjK< zBDovQ%}<`}@9K(d%tuv+Q^8N5gQ{zsa4H4~CR7JYC0?Jt2%X7JwHUzn4*Gl1U*r;` z3?O$8P#s<%krC~TNihE9PyT-0crjt+KW=|aTmUkCG7)y;qt?im+bGb`1U{I?-s zovn~8gj*F@9eiG~`l{^XIMQwVr%~yGTMg7%{n+P?r>fY2`dw2&Lnfn=@-J^ZZjBIk zK0pB!WIy{ELMH0Yx74XUyG;f!#ZR*1xKjMb;cMbcA{i&QoUn@t_XK@b)5tXAP*A| zb}`-z;75OV_ox#Iz*z__i=zV912x+n;kEJ#0<4D?7x%Cd7>CMj}TVg^rVxbFdWJr@gOV3v*VI z%T6Yw2KDF8)Yj@)GVrh+3z!+uHrbS9ST5J8n1i6AI5Fwg2*m@A2NE*HE1Rz#u5GJs ziJz*5^WELJ-5c7+9Go|bbJ{yP(s@o@0o_ckhgW})>W^pt$3+l}*NXDN!_%(O?60POF80~ck_5ArAt6T#W!XkCL+TE*pZjV6d8>F3^8 zMLx>N#KghQo^4gO7lT2{ll*CTpXB=bMUDJ(AVMMgP-v4AFz8c*Kq`Y%Dap&jke81y zA@ytA?=x9(0x}bCWO+=0mdXZR4T6$eM)30$+rdV<$$SmyK~Lj5QhB+Vnc9Xp5Bz2| zl8gEHmf1RU+`_)k2I0`jX#{}~VWUqqMM8EuL{c`l+Oc16^T=C;2v<_pb}bj~-1-78?tcl?gy|`5Zsq13suDmX@H&HGa)&8XJ2ZBMSwC zkh4;+@)c=|X90U8w>J0ryV7Mt8XlBnV@?c^Q0+0vt5s}=RUVA7;5#vdTA*D^tV;@x zJ}=;YFf%Kw%uv$eiLR?uuM*KIcNKKTxf_bmV@smHZ$lvFKW1fOBCH~;rhKwDWL3RT z(LBUUZ1?V5VKFf^Y zZB|Ldac?wz%WVB3Q(BJw+GY8q{4z;;EVnkF7YaP zDXA$y!=94w5bHtLT>VzcTN^$Rm%BtF7s-Geyt~V=CHmt#=`&;pyJ%xEvUz*DWL-H`s;f}?s%NhEi>hT&F}dfdWiY((R~L+#QtKmuXFLNOit7Gfv}u%dKB)KtWz! z-}4Re$XT!wbVT&EYu~@|uWpJCN{8927bac390cw-B@xS8X;&;=RI{*e@ZJi^L1En` z?93Z>FBv3#juARI2aRHEdNk+V}WNz`L8rjvcc@PcGUH?EZGA zJGkQl$geI75mMsnjz2&5Y>v&T%S2DF9;7146Qlx`3+R(3CZKN&i*AhW$mdhOP%z|B z;rS)?A{cd6mfQZQnT)NZhBND3aLcot{yR-LwF}XQgr2i1Af2fxW-V8HDs6ma;x%DZRA17`+e^Ew!ZXv3WgB8&cD8A zE?EdqqoR~)cisE%{py;obSacJpuh)R>|l0*TfeHI-_Fq2x99pk6hzDwpP%=(zWf`^ zBZ*d4itgS$`?OJ7wDp9HT01JJ)2n4$-g>s*f!<)aoe%WBpXjZ9K4=Tn%nfn#fz{S| z7s2y$aJp<*6tH6F`W?)92-Oj(#rVy)i%&If=M%CL6~r7$7TLW!U^vAWjI z{@*7b0T~QSgrg1>76v}&7upz2z`sTe>Hnddf_3m;YOna;NNli2Cj16!BDJHp2hX?R z0&Y1bQB&23NZ%1)9CVaNvCaShz%dhmpUp)%fimVN-PjdwHxd*Pn{=R`$4{dM&`OVG6T{7k{zIoy{Wm>>1eF5X4#mMCX65QG3tojVI8_v%FdD$`it^~JZ(0)cA+ zCs~COaC!)#2X)LmHqD8u0SBT`5}1wP3GQ}+mM<4m>Wv-mgt{Y_IcgeMbUFk3UJwI+ z{`}e96*+M2(#4%zA<=k7=tIX%hCI(Ee9dNn5Rq%P&ESh;A1XTA<1S*4;=2k81M%Lc z{&M(P5LPtakZOT{Aa>}U0r@XcQk+!MNhh?GlQNf*phZ<>%M?t|-DHllb%bw^v;$hu z<{bJ%&H-F$5O|Z5Wgvyf?V)SoDZAQ{ZC8ZOXW>oQsYoaC95nlQJicM8Wgy6ItgKKm ziQ;j$YBr_dvEC!C2>G8qBn+sZ5<9x(*CF6`!>PYTsRo&yn3fP19|v++PXA9By9tmL zl|6{o!KGsTjV&xnJqBwj6r1Ga)5>XIhBBadt*rtB`xo&J<|Pd>2hrNX;#L{zFZ1#~ zy##Nn=VH5zXQ!(Kc{=Z=KftI;soFHoyWKXwiA>gM($?f@;N6zh6>~k3*<8d5QF(qx z){W-OEw~^^0!iWm(l;a|BtKRplDdvooDh*#M#Qnzt{^y#H+BLDOyq(xM6A;$Tdo=J zeTd#y`Ov(~^a$c$2NKZm;K752hW#a8Sy~cC`BYq@PHQ)tDmbr)<3$kFPD4Y~xeqN8 zZze|kjd*vRIlz|(({X4J>}Z=eZ}t{#dqTBm>a6Q&vpRiEKn+AkKHq$(vB|tlfwynm z7_P6m$&l3@lOG4s33c0&V?aH%Z_MvqEWb*CyoAIA+-qrsV>i`vA#^Y=nEjuWHRY;7 z;Y(0EzY0LjV{0H0G-Vk#SK`S_>xY#D?rWgZ*i?eKy(lKYADdWNrNqTi&KcSRxPfU4 zg<*xy0uv&uT3c062<4($eXx`d{0U~CJ4B*i3qb{RtmMYV>aAa{e2w#IJp&35k8&Hf zMdPgkedgj$v1A$&lnZ{ctwkZghZ#9RW%nsKO&q6Flz70 zwb8`kXz?dn_D;EiWI&xl=>=5fo))_03Hse(#HoW8G4dA1vxL9si@70bwZCs5${jJ_ zq)EMR42ih@i-xZVLX5R>{QzTW0Bp4GtSO1c^_Mq-OGwJzCyK;b;cZd z1C9v$`mHS(Vx%$kF4q|ouk10P1yVOC8d-v|adPN*n<1T#MRv{vvs9r4+8lRJs zgUkhz_fWbt?6&VxuL`D8&8FW^;Qtyu@63}y8lhX%iqGFq#fU7_CnQkkm!bV{)ja?E z@ZtXoiji7>@)vr~&Mz(kS^5+bDhyZXjzvAJWghwHz(KwF_$jCPf&TIaRlH9gk7>I$ zd*}q0E%o6Mi-$NI&;ve|jJgDYXYiE*7ZNMg3IKfk4Sl_5ZHrYN|bfba)6-2(#yKRs=01Dyh0<4ixCIGo$J-^ciy^BcuI6`SdEUall4^|;A(&Kra4vZJWK#H+S^r|^LQl1#I&mK*4{g; z%e5hgvn>2m908$KF7d^Kq5-U_uu%hfZ6mi`kVc^AmsaM(&vY!@xB5wxrO48?~H+C^EFyYpbZ2C%l6c^zeeOywewMiH^5_ome zR#P-6m!ORd>3r^3MA2}zA<=diPCNI^NkL7ZwZ;xRHE}WQ@r0PGbmE@Pa&uf>M*ccM0*6p&rM~l5dk8zvwa}dD|?~~(3y`wc3 zN>#yGs07UGCe>xSzX7>k;?CCg_OL!LLMw`kOPv8U>917IBzx;zrQBId=85NU-+G*o zfjZ@YB{i@;GjKe6_UhZbk#7h!;rPbzQ;4p+LI#(O?tOnEDkS7Jj0jf-76*rEuco9I zggZ}?ee6>e&UO#^XYz8~ynTBN;&;NTkDHiWzG{7>)X|$gF|u8YgNcP@FvH|de5Ct# z{0Zs^%gVfkJTi6O#yw! zleR*_!|mJ79!au03?y3;fiSt8tuh%4L1P}>MsJs+#;$v9@}#E(4%M-J5ig#i6$skl z5W0nGYupIwOmhJCcW(F zjoRxPJto1!D}BaF{+!{E{pr&m!0b1aQT>c3&GfN2y=go}OU-U~hbp*)ZR0X#=?h6( zJ(m&vuBhht&AHwz-kjI_#6g8$`q;?6e~4oO^q|mWTjy(Ca50v;CRHy?$6_#sgY_+B z&PBg`mSIy96YDM4Gl9^a@rA)ih|fZ0Za@*P)*YW`jnFl;WaW-h^!h7xC-TAHT=uC& zuglDqtehl{j{%Y+CfqLbM@iWVEoWxNrHgW5PlB$^vjd#o^;%b#UgK-b4^jN}J~(u@5KA;ac;G;q8b)C}>u4F2X%&I-QD z&_N;v?Na1vS95J$gvDt+4<%*ssUugoRkp=-xT{QA&PU`_+zcEuXTs#oP5SC> zaBYSj-tg$qsgo^A%)Or>Ir#XYO-gTrUD9m|6io@fV)Xm8wms`_GnagPaxiMhQqXtv za9Gmq&N=>eJ+R-bAG2!=2-r(~FhjP_>-P2r=a@-X_zKL<9I5$A)kfcT{X$eqM~#N6 z=7i;es+}J&=lhg{J~VNUKN!}mNeLrxv5NkC)&}Z4sI8G~9P{$J+>DHjl9J^+%f@4$#yZNRc4kJTc$6Ek z1{T_pU>y#+3#xmFj?*k;+`qqtS8F98r<Zv!aQz_7Z{fa^=1O(_r!+R-4F}pdFJ-BRjg=3Y%yewR47NGXo}nB{q(Yq| zS9vA==E+SMB%{TvKQCP!Jhwr-8$wW_$=DW6q$_&*-MQ)TwCxz1gYtlI3{A}Dm@P%( z7e|&?cW|?x;V6sp5iS}kyLfq=mzjb5f=$(Dlzmq0b9eeD;;JQ+BogzZ+#H^M(e4r& zeJrY3NXVmi$nv5OlA%?6|FxiGjF?X``klp)TZ{D`KK1Odl?Tbtk$k`UYR_cBX=Mc1 z>C40bjS0b&2>)g7kmeRIcmU;u!wQ2~;-C0QohCdV7niki?d6cc)sZc6YE+fR;Qfit z_V#<6fgdPlC@ABbKecTWI#29@WKT%DjQY{!g^V0fsp|P{pRQpFv)!)&gHCk`_`kL{=w>*&S)^8E1kk|RT?OT?nop%^_e+YGYf7MD0BRZKxFdoGt@3 z6Ptjq2}$@75$bq_ES-ag;|)QU6MloWpd@R%Qe6#+xG?-!aK%4kWHU(lo{F0u-&8ZP z1d0PE(!v5B{-c={%b1CpsqijN$9ldu%4Ttb-e?8lE8T)}a{AFPKDl0XdaQer<4E0x_s}hJYF#H*_j#rs+5dGWs+6jsJ zL;fn4?4tG7>(?5sEua%WIyLqD{Mst$EOLM)_$fMf;9_Jr2Cl39J)!g7>$V;>s7>pHu--w#oaS8%iFMS^#9E1kn6VTV5#;tsMH;Z{x)|{GDc^*pQA@uP22-@^H zQufS_MBGEH=O-JNkrxpnffeCpB%YpT5+zdU=Y$sV@QO5iAgzg;ft|C&=? zz6y#GpLQe{H+cH>8_M0wwCwz*e(n^(Fj^jdSHD)u-Ei7FPpz+p+r#JFKCO2dp}8Hg z^?UB?Q|~I743tKmy&~ zB@3m^%;!Okb#~re~4F)=aDacnnBtUUt5WOmdkQits?}A>@5wL+E=uE7*4$ zsvsGxjZ)8%+42FDCq)37tPeOlIRU<|@~4?g9u#MLVIZ(K40}uZ7^N~aoQvPlk4Vu7 z59jB<;K$VvALD1;fKH%52=4VO%&_tql_t0*v-sa{lbfYIE$#McVZoLeL?@*XN9K?k zyikuxwRTSmVBJdTNwN`0Uc$P7~pd%8=H=kx5eIUDu;7mb@iOS%XDj% z2~KNEYj|sQ`0UN95C#^R`#S!mY%J>j!m@mk#s;^IzN{{;sU51_)iVF4GZ4P;zD`g3 LkXFuq>r4LwBhS4- diff --git a/bi-connectors/PowerBIConnector/img/pbi_settings.png b/bi-connectors/PowerBIConnector/img/pbi_settings.png deleted file mode 100644 index ebd9ce02842941cde8455ad4d43a018276fca532..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71079 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

    DX8 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 YBTaA5?(e4m`<%DtV;$AXN7j-51D5?bMgRZ+ diff --git a/bi-connectors/PowerBIConnector/img/pbi_third_party_warning.png b/bi-connectors/PowerBIConnector/img/pbi_third_party_warning.png deleted file mode 100644 index f05502ad57411f80c991b99711cb72d14b7691c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75297 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�+72IW?U;c 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

    M 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 DOhSs} diff --git a/bi-connectors/PowerBIConnector/power_bi_service_support.md b/bi-connectors/PowerBIConnector/power_bi_service_support.md deleted file mode 100644 index 1ccb20ccea..0000000000 --- a/bi-connectors/PowerBIConnector/power_bi_service_support.md +++ /dev/null @@ -1,82 +0,0 @@ -# Connecting OpenSearch to Microsoft Power BI Service - -## Setup -* Download and Install [On-premises data gateway](https://docs.microsoft.com/en-us/data-integration/gateway/service-gateway-install) -* Change the path for custom data connector folder in On-premises data gateway so that the gateway can find the custom connector. -> NOTE: Ensure the gateway service account (**PBIEgwService**) has permissions to access the custom connector folder. Alternatively, you can copy connector file to `C:\Windows\ServiceProfiles\PBIEgwService\Documents\Power BI Desktop\Custom Connectors\`. - - - -* Verify the status of data gateway is ready to be used. - - - -* Login to Power BI Service. -* Click on **Setting** > **Manage Gateway**. - - - -* Select **Allow user's custom data connectors to refresh through this gateway cluster(preview)**. Click on **Apply**. - - - -* Click on **Add data sources to use the gateway**. -* Select Data Source Type as **OpenSearch**. -* Enter Data Source Name and Server values. -* Select required **Authentication Method**. Select **Anonymous** for auth **NONE**. -For **AWS_SIGV4**, select **Key** and set aws access credentials for user **PBIEgwService** at path `C:\Windows\ServiceProfiles\PBIEgwService\.aws\` - -* Select Encryption mode for connection. -* Click on **Add**. - - - -* You will get a **Connection Successful** message. - - - - -## Publish Report - -* Follow [instructions](./power_bi_support.md) to create graph using OpenSearch Data connector. -* Click on **Publish** to publish the report on Power BI service. - - - -* Select destination and click on **Select**. - - - -* You will get a success message when report is published. - - - -* Click on **Open '%report name%' in Power BI** to open published report in Power BI service. - -## Modify report using Power BI Service - -* Click on **Edit report** to modfify report. - - - -* Use **Filters**,**Visualizations** and **Fields** to modify report. - - - -## Dataset Scheduled Refresh - -* Click on **Settings** > **Datasets**. -* Select required Gateway and click on **Apply**. - - - -* Turn on Keep your data up to date option. -* Select refresh frequency and timezone. -* Add email for failure notifications if required. -* Click on **Apply**. - - - -* You can also check history by clicking on **Refresh history**. - - \ No newline at end of file diff --git a/bi-connectors/PowerBIConnector/power_bi_support.md b/bi-connectors/PowerBIConnector/power_bi_support.md deleted file mode 100644 index 2c5451a684..0000000000 --- a/bi-connectors/PowerBIConnector/power_bi_support.md +++ /dev/null @@ -1,100 +0,0 @@ -# Connecting OpenSearch to Microsoft Power BI Desktop - -## Prerequisites -* Microsoft Power BI Desktop -* [OpenSearch](https://docs-beta.opensearch.org/opensearch/install/index/) -* [OpenSearch SQL ODBC driver](https://docs-beta.opensearch.org/search-plugins/sql/odbc/) -* [OpenSearchProject.mez](OpenSearchProject.mez) or [AmazonOpenSearchService.mez](AmazonOpenSearchService.mez) -* Optional: [sqlodbc_import.pbids](PBIDSExamples/sqlodbc_import.pbids) to help with repeated connections to the same server - -## Setup -* Copy `mez` file in the `\Documents\Power BI Desktop\Custom Connectors\` folder. This will let Power BI access custom connector. -* Open Power BI Desktop. -* Change the security settings. Click on **Files** > **Options and settings** > **Options** > **Security** > Select **Allow any extension to load without validation or warning** for Data Extensions. This will allow the custom connector to load data into Power BI. - - - -* Restart Power BI Desktop. - -## Load Data - -> **NOTE**: Currently only import mode is supported. Direct query support will be added soon. - -* Open Power BI Desktop. - -* Disable parallel loading of tables. Click on **Files** > **Options and settings** > **Options** > **CURRENT FILE** > **Data Load** > Deselect **Enable parallel loading of tables** and click **OK**. - - - -* Click on **Home** > **Get Data** > **More** > **Other**. Select **OpenSearch Project**. Click on **Connect**. - - - -* You will get a warning for using a third-party service. Click on **Continue**. - - - -* Enter host and port values and select your preferred SSL option. Click on **OK**. - - - -* Select authentication option. Enter credentials if required and click on **Connect**. - - - -* Select required table. Data preview will be loaded. - - - -* Click on **Load**. - -* Select required columns for creating graph. - - - -## Using .PBIDS Files - -More info: https://docs.microsoft.com/en-us/power-bi/connect-data/desktop-data-sources#using-pbids-files-to-get-data - -Example PBIDS file for OpenSearch: (available here: [sqlodbc_import.pbids](PBIDSExamples/sqlodbc_import.pbids)) -```json -{ - "version": "0.1", - "connections": [ - { - "details": { - "protocol": "sqlodbc", - "address": { - "server": "localhost:9200" - } - }, - "mode": "Import" - } - ] -} -``` - -The only part you should change is the `server` attribute, to point to the location of your OpenSearch server. -* For AWS connections, this will be the full path of your OpenSearch instance (ex: `https://aws-opensearch-instance.us-west-1.com`). -* Otherwise, this will be the `host:port` combination for your instance (ex: `localhost:9200`). - -Save this as a `.pbids` file. Double-click on it to open up your connection in Power BI Desktop. -It will take you straight to the **Navigator** window for selecting the tables from the OpenSearch server. -* If this is the first time you are connecting to this instance, you will be prompted for your credentials. - - - -## Troubleshooting - -* If you get an following error, please install [OpenSearch SQL ODBC Driver](https://docs-beta.opensearch.org/search-plugins/sql/odbc/). - - - -* If you get an following error, - - - -1. Check if host and port values are correct. -2. Check if auth credentials are correct. -3. Check if server is running. - diff --git a/bi-connectors/PowerBIConnector/src/Diagnostics.pqm b/bi-connectors/PowerBIConnector/src/Diagnostics.pqm deleted file mode 100644 index ca10c3cf98..0000000000 --- a/bi-connectors/PowerBIConnector/src/Diagnostics.pqm +++ /dev/null @@ -1,275 +0,0 @@ -let - Diagnostics.LogValue = (prefix, value) => Diagnostics.Trace(TraceLevel.Information, prefix & ": " & (try Diagnostics.ValueToText(value) otherwise ""), value), - Diagnostics.LogValue2 = (prefix, value, result, optional delayed) => Diagnostics.Trace(TraceLevel.Information, prefix & ": " & Diagnostics.ValueToText(value), result, delayed), - Diagnostics.LogFailure = (text, function) => - let - result = try function() - in - if result[HasError] then Diagnostics.LogValue2(text, result[Error], () => error result[Error], true) else result[Value], - - Diagnostics.WrapFunctionResult = (innerFunction as function, outerFunction as function) as function => - Function.From(Value.Type(innerFunction), (list) => outerFunction(() => Function.Invoke(innerFunction, list))), - - Diagnostics.WrapHandlers = (handlers as record) as record => - Record.FromList( - List.Transform( - Record.FieldNames(handlers), - (h) => Diagnostics.WrapFunctionResult(Record.Field(handlers, h), (fn) => Diagnostics.LogFailure(h, fn))), - Record.FieldNames(handlers)), - - Diagnostics.ValueToText = (value) => - let - _canBeIdentifier = (x) => - let - keywords = {"and", "as", "each", "else", "error", "false", "if", "in", "is", "let", "meta", "not", "otherwise", "or", "section", "shared", "then", "true", "try", "type" }, - charAlpha = (c as number) => (c>= 65 and c <= 90) or (c>= 97 and c <= 122) or c=95, - charDigit = (c as number) => c>= 48 and c <= 57 - in - try - charAlpha(Character.ToNumber(Text.At(x,0))) - and - List.MatchesAll( - Text.ToList(x), - (c)=> let num = Character.ToNumber(c) in charAlpha(num) or charDigit(num) - ) - and not - List.MatchesAny( keywords, (li)=> li=x ) - otherwise - false, - - Serialize.Binary = (x) => "#binary(" & Serialize(Binary.ToList(x)) & ") ", - - Serialize.Date = (x) => "#date(" & - Text.From(Date.Year(x)) & ", " & - Text.From(Date.Month(x)) & ", " & - Text.From(Date.Day(x)) & ") ", - - Serialize.Datetime = (x) => "#datetime(" & - Text.From(Date.Year(DateTime.Date(x))) & ", " & - Text.From(Date.Month(DateTime.Date(x))) & ", " & - Text.From(Date.Day(DateTime.Date(x))) & ", " & - Text.From(Time.Hour(DateTime.Time(x))) & ", " & - Text.From(Time.Minute(DateTime.Time(x))) & ", " & - Text.From(Time.Second(DateTime.Time(x))) & ") ", - - Serialize.Datetimezone =(x) => let - dtz = DateTimeZone.ToRecord(x) - in - "#datetimezone(" & - Text.From(dtz[Year]) & ", " & - Text.From(dtz[Month]) & ", " & - Text.From(dtz[Day]) & ", " & - Text.From(dtz[Hour]) & ", " & - Text.From(dtz[Minute]) & ", " & - Text.From(dtz[Second]) & ", " & - Text.From(dtz[ZoneHours]) & ", " & - Text.From(dtz[ZoneMinutes]) & ") ", - - Serialize.Duration = (x) => let - dur = Duration.ToRecord(x) - in - "#duration(" & - Text.From(dur[Days]) & ", " & - Text.From(dur[Hours]) & ", " & - Text.From(dur[Minutes]) & ", " & - Text.From(dur[Seconds]) & ") ", - - Serialize.Function = (x) => _serialize_function_param_type( - Type.FunctionParameters(Value.Type(x)), - Type.FunctionRequiredParameters(Value.Type(x)) ) & - " as " & - _serialize_function_return_type(Value.Type(x)) & - " => (...) ", - - Serialize.List = (x) => "{" & - List.Accumulate(x, "", (seed,item) => if seed="" then Serialize(item) else seed & ", " & Serialize(item)) & - "} ", - - Serialize.Logical = (x) => Text.From(x), - - Serialize.Null = (x) => "null", - - Serialize.Number = (x) => - let Text.From = (i as number) as text => - if Number.IsNaN(i) then "#nan" else - if i=Number.PositiveInfinity then "#infinity" else - if i=Number.NegativeInfinity then "-#infinity" else - Text.From(i) - in - Text.From(x), - - Serialize.Record = (x) => "[ " & - List.Accumulate( - Record.FieldNames(x), - "", - (seed,item) => - (if seed="" then Serialize.Identifier(item) else seed & ", " & Serialize.Identifier(item)) & " = " & Serialize(Record.Field(x, item)) - ) & - " ] ", - - Serialize.Table = (x) => "#table( type " & - _serialize_table_type(Value.Type(x)) & - ", " & - Serialize(Table.ToRows(x)) & - ") ", - - Serialize.Text = (x) => """" & - _serialize_text_content(x) & - """", - - _serialize_text_content = (x) => let - escapeText = (n as number) as text => "#(#)(" & Text.PadStart(Number.ToText(n, "X", "en-US"), 4, "0") & ")" - in - List.Accumulate( - List.Transform( - Text.ToList(x), - (c) => let n=Character.ToNumber(c) in - if n = 9 then "#(#)(tab)" else - if n = 10 then "#(#)(lf)" else - if n = 13 then "#(#)(cr)" else - if n = 34 then """""" else - if n = 35 then "#(#)(#)" else - if n < 32 then escapeText(n) else - if n < 127 then Character.FromNumber(n) else - escapeText(n) - ), - "", - (s,i)=>s&i - ), - - Serialize.Identifier = (x) => - if _canBeIdentifier(x) then - x - else - "#""" & - _serialize_text_content(x) & - """", - - Serialize.Time = (x) => "#time(" & - Text.From(Time.Hour(x)) & ", " & - Text.From(Time.Minute(x)) & ", " & - Text.From(Time.Second(x)) & ") ", - - Serialize.Type = (x) => "type " & _serialize_typename(x), - - - _serialize_typename = (x, optional funtype as logical) => /* Optional parameter: Is this being used as part of a function signature? */ - let - isFunctionType = (x as type) => try if Type.FunctionReturn(x) is type then true else false otherwise false, - isTableType = (x as type) => try if Type.TableSchema(x) is table then true else false otherwise false, - isRecordType = (x as type) => try if Type.ClosedRecord(x) is type then true else false otherwise false, - isListType = (x as type) => try if Type.ListItem(x) is type then true else false otherwise false - in - - if funtype=null and isTableType(x) then _serialize_table_type(x) else - if funtype=null and isListType(x) then "{ " & @_serialize_typename( Type.ListItem(x) ) & " }" else - if funtype=null and isFunctionType(x) then "function " & _serialize_function_type(x) else - if funtype=null and isRecordType(x) then _serialize_record_type(x) else - - if x = type any then "any" else - let base = Type.NonNullable(x) in - (if Type.IsNullable(x) then "nullable " else "") & - (if base = type anynonnull then "anynonnull" else - if base = type binary then "binary" else - if base = type date then "date" else - if base = type datetime then "datetime" else - if base = type datetimezone then "datetimezone" else - if base = type duration then "duration" else - if base = type logical then "logical" else - if base = type none then "none" else - if base = type null then "null" else - if base = type number then "number" else - if base = type text then "text" else - if base = type time then "time" else - if base = type type then "type" else - - /* Abstract types: */ - if base = type function then "function" else - if base = type table then "table" else - if base = type record then "record" else - if base = type list then "list" else - - "any /*Actually unknown type*/"), - - _serialize_table_type = (x) => - let - schema = Type.TableSchema(x) - in - "table " & - (if Table.IsEmpty(schema) then "" else - "[" & List.Accumulate( - List.Transform( - Table.ToRecords(Table.Sort(schema,"Position")), - each Serialize.Identifier(_[Name]) & " = " & _[Kind]), - "", - (seed,item) => (if seed="" then item else seed & ", " & item ) - ) & "] " ), - - _serialize_record_type = (x) => - let flds = Type.RecordFields(x) - in - if Record.FieldCount(flds)=0 then "record" else - "[" & List.Accumulate( - Record.FieldNames(flds), - "", - (seed,item) => - seed & - (if seed<>"" then ", " else "") & - (Serialize.Identifier(item) & "=" & _serialize_typename(Record.Field(flds,item)[Type]) ) - ) & - (if Type.IsOpenRecord(x) then ",..." else "") & - "]", - - _serialize_function_type = (x) => _serialize_function_param_type( - Type.FunctionParameters(x), - Type.FunctionRequiredParameters(x) ) & - " as " & - _serialize_function_return_type(x), - - _serialize_function_param_type = (t,n) => - let - funsig = Table.ToRecords( - Table.TransformColumns( - Table.AddIndexColumn( Record.ToTable( t ), "isOptional", 1 ), - { "isOptional", (x)=> x>n } ) ) - in - "(" & - List.Accumulate( - funsig, - "", - (seed,item)=> - (if seed="" then "" else seed & ", ") & - (if item[isOptional] then "optional " else "") & - Serialize.Identifier(item[Name]) & " as " & _serialize_typename(item[Value], true) ) - & ")", - - _serialize_function_return_type = (x) => _serialize_typename(Type.FunctionReturn(x), true), - - Serialize = (x) as text => - if x is binary then try Serialize.Binary(x) otherwise "null /*serialize failed*/" else - if x is date then try Serialize.Date(x) otherwise "null /*serialize failed*/" else - if x is datetime then try Serialize.Datetime(x) otherwise "null /*serialize failed*/" else - if x is datetimezone then try Serialize.Datetimezone(x) otherwise "null /*serialize failed*/" else - if x is duration then try Serialize.Duration(x) otherwise "null /*serialize failed*/" else - if x is function then try Serialize.Function(x) otherwise "null /*serialize failed*/" else - if x is list then try Serialize.List(x) otherwise "null /*serialize failed*/" else - if x is logical then try Serialize.Logical(x) otherwise "null /*serialize failed*/" else - if x is null then try Serialize.Null(x) otherwise "null /*serialize failed*/" else - if x is number then try Serialize.Number(x) otherwise "null /*serialize failed*/" else - if x is record then try Serialize.Record(x) otherwise "null /*serialize failed*/" else - if x is table then try Serialize.Table(x) otherwise "null /*serialize failed*/" else - if x is text then try Serialize.Text(x) otherwise "null /*serialize failed*/" else - if x is time then try Serialize.Time(x) otherwise "null /*serialize failed*/" else - if x is type then try Serialize.Type(x) otherwise "null /*serialize failed*/" else - "[#_unable_to_serialize_#]" - in - try Serialize(value) otherwise "" -in - [ - LogValue = Diagnostics.LogValue, - LogValue2 = Diagnostics.LogValue2, - LogFailure = Diagnostics.LogFailure, - WrapFunctionResult = Diagnostics.WrapFunctionResult, - WrapHandlers = Diagnostics.WrapHandlers, - ValueToText = Diagnostics.ValueToText - ] \ No newline at end of file diff --git a/bi-connectors/PowerBIConnector/src/OdbcConstants.pqm b/bi-connectors/PowerBIConnector/src/OdbcConstants.pqm deleted file mode 100644 index 144e525413..0000000000 --- a/bi-connectors/PowerBIConnector/src/OdbcConstants.pqm +++ /dev/null @@ -1,1253 +0,0 @@ -// values from https://github.com/Microsoft/ODBC-Specification/blob/master/Windows/inc/sqlext.h -[ - Flags = (flags as list) => - if (List.IsEmpty(flags)) then 0 else - let - Loop = List.Generate(()=> [i = 0, Combined = flags{0}], - each [i] < List.Count(flags), - each [Combined = Number.BitwiseOr([Combined], flags{i}), i = [i]+1], - each [Combined]), - Result = List.Last(Loop) - in - Result, - - SQL_HANDLE = - [ - ENV = 1, - DBC = 2, - STMT = 3, - DESC = 4 - ], - - RetCode = - [ - SUCCESS = 0, - SUCCESS_WITH_INFO = 1, - ERROR = -1, - INVALID_HANDLE = -2, - NO_DATA = 100 - ], - - SQL_CONVERT = - [ - BIGINT = 53, - BINARY = 54, - BIT = 55, - CHAR = 56, - DATE = 57, - DECIMAL = 58, - DOUBLE = 59, - FLOAT = 60, - INTEGER = 61, - LONGVARCHAR = 62, - NUMERIC = 63, - REAL = 64, - SMALLINT = 65, - TIME = 66, - TIMESTAMP = 67, - TINYINT = 68, - VARBINARY = 69, - VARCHAR = 70, - LONGVARBINARY = 71 - ], - - SQL_ROW = - [ - PROCEED = 0, - IGNORE = 1, - SUCCESS = 0, - DELETED = 1, - UPDATED = 2, - NOROW = 3, - ADDED = 4, - ERROR = 5, - SUCCESS_WITH_INFO = 6 - ], - -SQL_CVT = -[ - //None = 0, - - CHAR = 0x00000001, - NUMERIC = 0x00000002, - DECIMAL = 0x00000004, - INTEGER = 0x00000008, - SMALLINT = 0x00000010, - FLOAT = 0x00000020, - REAL = 0x00000040, - DOUBLE = 0x00000080, - VARCHAR = 0x00000100, - LONGVARCHAR = 0x00000200, - BINARY = 0x00000400, - VARBINARY = 0x00000800, - BIT = 0x00001000, - TINYINT = 0x00002000, - BIGINT = 0x00004000, - DATE = 0x00008000, - TIME = 0x00010000, - TIMESTAMP = 0x00020000, - LONGVARBINARY = 0x00040000, - INTERVAL_YEAR_MONTH = 0x00080000, - INTERVAL_DAY_TIME = 0x00100000, - WCHAR = 0x00200000, - WLONGVARCHAR = 0x00400000, - WVARCHAR = 0x00800000, - GUID = 0x01000000 -], - - STMT = - [ - CLOSE = 0, - DROP = 1, - UNBIND = 2, - RESET_PARAMS = 3 - ], - - SQL_MAX = - [ - NUMERIC_LEN = 16 - ], - - SQL_IS = - [ - POINTER = -4, - INTEGER = -6, - UINTEGER = -5, - SMALLINT = -8 - ], - - //SQL Server specific defines - // - SQL_HC = // from Odbcss.h - [ - OFF = 0, // FOR BROWSE columns are hidden - ON = 1 // FOR BROWSE columns are exposed - ], - - SQL_NB = // from Odbcss.h - [ - OFF = 0, // NO_BROWSETABLE is off - ON = 1 // NO_BROWSETABLE is on - ], - - // SQLColAttributes driver specific defines. - // SQLSet/GetDescField driver specific defines. - // Microsoft has 1200 thru 1249 reserved for Microsoft SQL Server driver usage. - // - SQL_CA_SS = // from Odbcss.h - [ - BASE = 1200, // SQL_CA_SS_BASE - - COLUMN_HIDDEN = 1200 + 11, // Column is hidden (FOR BROWSE) - COLUMN_KEY = 1200 + 12, // Column is key column (FOR BROWSE) - VARIANT_TYPE = 1200 + 15, - VARIANT_SQL_TYPE = 1200 + 16, - VARIANT_SERVER_TYPE = 1200 + 17 - - ], - - SQL_SOPT_SS = // from Odbcss.h - [ - BASE = 1225, // SQL_SOPT_SS_BASE - HIDDEN_COLUMNS = 1225 + 2, // Expose FOR BROWSE hidden columns - NOBROWSETABLE = 1225 + 3 // Set NOBROWSETABLE option - ], - - SQL_COMMIT = 0, //Commit - SQL_ROLLBACK = 1, //Abort - - //static public readonly IntPtr SQL_AUTOCOMMIT_OFF = IntPtr.Zero; - //static public readonly IntPtr SQL_AUTOCOMMIT_ON = new IntPtr(1); - - SQL_TRANSACTION = - [ - READ_UNCOMMITTED = 0x00000001, - READ_COMMITTED = 0x00000002, - REPEATABLE_READ = 0x00000004, - SERIALIZABLE = 0x00000008, - SNAPSHOT = 0x00000020 // VSDD 414121: SQL_TXN_SS_SNAPSHOT == 0x20 (sqlncli.h) - ], - - SQL_PARAM = - [ - TYPE_UNKNOWN = 0, // SQL_PARAM_TYPE_UNKNOWN - INPUT = 1, // SQL_PARAM_INPUT - INPUT_OUTPUT = 2, // SQL_PARAM_INPUT_OUTPUT - RESULT_COL = 3, // SQL_RESULT_COL - OUTPUT = 4, // SQL_PARAM_OUTPUT - RETURN_VALUE = 5 // SQL_RETURN_VALUE - ], - - SQL_DESC = - [ - // from sql.h (ODBCVER >= 3.0) - // - COUNT = 1001, - TYPE = 1002, - LENGTH = 1003, - OCTET_LENGTH_PTR = 1004, - PRECISION = 1005, - SCALE = 1006, - DATETIME_INTERVAL_CODE = 1007, - NULLABLE = 1008, - INDICATOR_PTR = 1009, - DATA_PTR = 1010, - NAME = 1011, - UNNAMED = 1012, - OCTET_LENGTH = 1013, - ALLOC_TYPE = 1099, - - // from sqlext.h (ODBCVER >= 3.0) - // - CONCISE_TYPE = SQL_COLUMN[TYPE], - DISPLAY_SIZE = SQL_COLUMN[DISPLAY_SIZE], - UNSIGNED = SQL_COLUMN[UNSIGNED], - UPDATABLE = SQL_COLUMN[UPDATABLE], - AUTO_UNIQUE_VALUE = SQL_COLUMN[AUTO_INCREMENT], - - TYPE_NAME = SQL_COLUMN[TYPE_NAME], - TABLE_NAME = SQL_COLUMN[TABLE_NAME], - SCHEMA_NAME = SQL_COLUMN[OWNER_NAME], - CATALOG_NAME = SQL_COLUMN[QUALIFIER_NAME], - - BASE_COLUMN_NAME = 22, - BASE_TABLE_NAME = 23, - - NUM_PREC_RADIX = 32 - ], - - // ODBC version 2.0 style attributes - // All IdentifierValues are ODBC 1.0 unless marked differently - // - SQL_COLUMN = - [ - COUNT = 0, - NAME = 1, - TYPE = 2, - LENGTH = 3, - PRECISION = 4, - SCALE = 5, - DISPLAY_SIZE = 6, - NULLABLE = 7, - UNSIGNED = 8, - MONEY = 9, - UPDATABLE = 10, - AUTO_INCREMENT = 11, - CASE_SENSITIVE = 12, - SEARCHABLE = 13, - TYPE_NAME = 14, - TABLE_NAME = 15, // (ODBC 2.0) - OWNER_NAME = 16, // (ODBC 2.0) - QUALIFIER_NAME = 17, // (ODBC 2.0) - LABEL = 18 - ], - - // values from sqlext.h - SQL_SQL92_RELATIONAL_JOIN_OPERATORS = - [ - CORRESPONDING_CLAUSE = 0x00000001, // SQL_SRJO_CORRESPONDING_CLAUSE - CROSS_JOIN = 0x00000002, // SQL_SRJO_CROSS_JOIN - EXCEPT_JOIN = 0x00000004, // SQL_SRJO_EXCEPT_JOIN - FULL_OUTER_JOIN = 0x00000008, // SQL_SRJO_FULL_OUTER_JOIN - INNER_JOIN = 0x00000010, // SQL_SRJO_INNER_JOIN - INTERSECT_JOIN = 0x00000020, // SQL_SRJO_INTERSECT_JOIN - LEFT_OUTER_JOIN = 0x00000040, // SQL_SRJO_LEFT_OUTER_JOIN - NATURAL_JOIN = 0x00000080, // SQL_SRJO_NATURAL_JOIN - RIGHT_OUTER_JOIN = 0x00000100, // SQL_SRJO_RIGHT_OUTER_JOIN - UNION_JOIN = 0x00000200 // SQL_SRJO_UNION_JOIN - ], - - // values from sqlext.h - SQL_QU = - [ - SQL_QU_DML_STATEMENTS = 0x00000001, - SQL_QU_PROCEDURE_INVOCATION = 0x00000002, - SQL_QU_TABLE_DEFINITION = 0x00000004, - SQL_QU_INDEX_DEFINITION = 0x00000008, - SQL_QU_PRIVILEGE_DEFINITION = 0x00000010 - ], - - // values from sql.h - SQL_OJ_CAPABILITIES = - [ - LEFT = 0x00000001, // SQL_OJ_LEFT - RIGHT = 0x00000002, // SQL_OJ_RIGHT - FULL = 0x00000004, // SQL_OJ_FULL - NESTED = 0x00000008, // SQL_OJ_NESTED - NOT_ORDERED = 0x00000010, // SQL_OJ_NOT_ORDERED - INNER = 0x00000020, // SQL_OJ_INNER - ALL_COMPARISON_OPS = 0x00000040 //SQL_OJ_ALLCOMPARISION+OPS - ], - - SQL_UPDATABLE = - [ - READONLY = 0, // SQL_ATTR_READ_ONLY - WRITE = 1, // SQL_ATTR_WRITE - READWRITE_UNKNOWN = 2 // SQL_ATTR_READWRITE_UNKNOWN - ], - - SQL_IDENTIFIER_CASE = - [ - UPPER = 1, // SQL_IC_UPPER - LOWER = 2, // SQL_IC_LOWER - SENSITIVE = 3, // SQL_IC_SENSITIVE - MIXED = 4 // SQL_IC_MIXED - ], - - // Uniqueness parameter in the SQLStatistics function - SQL_INDEX = - [ - UNIQUE = 0, - ALL = 1 - ], - - // Reserved parameter in the SQLStatistics function - SQL_STATISTICS_RESERVED = - [ - QUICK = 0, // SQL_QUICK - ENSURE = 1 // SQL_ENSURE - ], - - // Identifier type parameter in the SQLSpecialColumns function - SQL_SPECIALCOLS = - [ - BEST_ROWID = 1, // SQL_BEST_ROWID - ROWVER = 2 // SQL_ROWVER - ], - - // Scope parameter in the SQLSpecialColumns function - SQL_SCOPE = - [ - CURROW = 0, // SQL_SCOPE_CURROW - TRANSACTION = 1, // SQL_SCOPE_TRANSACTION - SESSION = 2 // SQL_SCOPE_SESSION - ], - - SQL_NULLABILITY = - [ - NO_NULLS = 0, // SQL_NO_NULLS - NULLABLE = 1, // SQL_NULLABLE - UNKNOWN = 2 // SQL_NULLABLE_UNKNOWN - ], - - SQL_SEARCHABLE = - [ - UNSEARCHABLE = 0, // SQL_UNSEARCHABLE - LIKE_ONLY = 1, // SQL_LIKE_ONLY - ALL_EXCEPT_LIKE = 2, // SQL_ALL_EXCEPT_LIKE - SEARCHABLE = 3 // SQL_SEARCHABLE - ], - - SQL_UNNAMED = - [ - NAMED = 0, // SQL_NAMED - UNNAMED = 1 // SQL_UNNAMED - ], - // todo:move - // internal constants - // not odbc specific - // - HANDLER = - [ - IGNORE = 0x00000000, - THROW = 0x00000001 - ], - - // values for SQLStatistics TYPE column - SQL_STATISTICSTYPE = - [ - TABLE_STAT = 0, // TABLE Statistics - INDEX_CLUSTERED = 1, // CLUSTERED index statistics - INDEX_HASHED = 2, // HASHED index statistics - INDEX_OTHER = 3 // OTHER index statistics - ], - - // values for SQLProcedures PROCEDURE_TYPE column - SQL_PROCEDURETYPE = - [ - UNKNOWN = 0, // procedure is of unknow type - PROCEDURE = 1, // procedure is a procedure - FUNCTION = 2 // procedure is a function - ], - - // private constants - // to define data types (see below) - // - SIGNED_OFFSET = -20, // SQL_SIGNED_OFFSET - UNSIGNED_OFFSET = -22, // SQL_UNSIGNED_OFFSET - - // C Data Types - SQL_C = - [ - CHAR = 1, - WCHAR = -8, - SLONG = 4 + SIGNED_OFFSET, - ULONG = 4 + UNSIGNED_OFFSET, - SSHORT = 5 + SIGNED_OFFSET, - USHORT = 5 + UNSIGNED_OFFSET, - FLOAT = 7, - DOUBLE = 8, - BIT = -7, - STINYINT = -6 + SIGNED_OFFSET, - UTINYINT = -6 + UNSIGNED_OFFSET, - SBIGINT = -5 + SIGNED_OFFSET, - UBIGINT = -5 + UNSIGNED_OFFSET, - BINARY = -2, - TIMESTAMP = 11, - - TYPE_DATE = 91, - TYPE_TIME = 92, - TYPE_TIMESTAMP = 93, - - NUMERIC = 2, - GUID = -11, - DEFAULT = 99, - ARD_TYPE = -99 - ], - - // SQL Data Types - SQL_TYPE = - [ - // Base data types (sql.h) - UNKNOWN = 0, - NULL = 0, - CHAR = 1, - NUMERIC = 2, - DECIMAL = 3, - INTEGER = 4, - SMALLINT = 5, - FLOAT = 6, - REAL = 7, - DOUBLE = 8, - DATETIME = 9, // V3 Only - VARCHAR = 12, - - // Unicode types (sqlucode.h) - WCHAR = -8, - WVARCHAR = -9, - WLONGVARCHAR = -10, - - // Extended data types (sqlext.h) - INTERVAL = 10, // V3 Only - TIME = 10, - TIMESTAMP = 11, - LONGVARCHAR = -1, - BINARY = -2, - VARBINARY = -3, - LONGVARBINARY = -4, - BIGINT = -5, - TINYINT = -6, - BIT = -7, - GUID = -11, // V3 Only - - // One-parameter shortcuts for date/time data types. - TYPE_DATE = 91, - TYPE_TIME = 92, - TYPE_TIMESTAMP = 93, - - // SQL Server Types -150 to -159 (sqlncli.h) - SS_VARIANT = -150, - SS_UDT = -151, - SS_XML = -152, - SS_TABLE = -153, - SS_TIME2 = -154, - SS_TIMESTAMPOFFSET = -155 - ], - - //SQL_ALL_TYPES = 0, - //static public readonly IntPtr SQL_HANDLE_NULL = IntPtr.Zero; - - SQL_LENGTH = - [ - SQL_IGNORE = -6, - SQL_DEFAULT_PARAM = -5, - SQL_NO_TOTAL = -4, - SQL_NTS = -3, - SQL_DATA_AT_EXEC = -2, - SQL_NULL_DATA = -1 - ], - - SQL_DEFAULT_PARAM = -5, - - // column ordinals for SQLProcedureColumns result set - // this column ordinals are not defined in any c/c++ header but in the ODBC Programmer's Reference under SQLProcedureColumns - // - COLUMN_NAME = 4, - COLUMN_TYPE = 5, - DATA_TYPE = 6, - COLUMN_SIZE = 8, - DECIMAL_DIGITS = 10, - NUM_PREC_RADIX = 11, - - SQL_ATTR = - [ - ODBC_VERSION = 200, - CONNECTION_POOLING = 201, - AUTOCOMMIT = 102, - TXN_ISOLATION = 108, - CURRENT_CATALOG = 109, - LOGIN_TIMEOUT = 103, - QUERY_TIMEOUT = 0, - CONNECTION_DEAD = 1209, - - SQL_COPT_SS_BASE = 1200, - SQL_COPT_SS_ENLIST_IN_DTC = (1200 + 7), - SQL_COPT_SS_TXN_ISOLATION = (1200 + 27), - - MAX_LENGTH = 3, - ROW_BIND_TYPE = 5, - CURSOR_TYPE = 6, - RETRIEVE_DATA = 11, - ROW_STATUS_PTR = 25, - ROWS_FETCHED_PTR = 26, - ROW_ARRAY_SIZE = 27, - - // ODBC 3.0 - APP_ROW_DESC = 10010, - APP_PARAM_DESC = 10011, - IMP_ROW_DESC = 10012, - IMP_PARAM_DESC = 10013, - METADATA_ID = 10014, - - // ODBC 4.0 - PRIVATE_DRIVER_LOCATION = 204 - ], - - SQL_RD = - [ - OFF = 0, - ON = 1 - ], - - SQL_GD = - [ - //None = 0, - ANY_COLUMN = 1, - ANY_ORDER = 2, - BLOCK = 4, - BOUND = 8, - OUTPUT_PARAMS = 16 - ], - - //SQLGetInfo -/* - SQL_INFO = - [ - SQL_ACTIVE_CONNECTIONS = 0, - SQL_MAX_DRIVER_CONNECTIONS = 0, - SQL_MAX_CONCURRENT_ACTIVITIES = 1, - SQL_ACTIVE_STATEMENTS = 1, - SQL_DATA_SOURCE_NAME = 2, - SQL_DRIVER_HDBC, - SQL_DRIVER_HENV, - SQL_DRIVER_HSTMT, - SQL_DRIVER_NAME, - SQL_DRIVER_VER, - SQL_FETCH_DIRECTION, - SQL_ODBC_API_CONFORMANCE, - SQL_ODBC_VER, - SQL_ROW_UPDATES, - SQL_ODBC_SAG_CLI_CONFORMANCE, - SQL_SERVER_NAME, - SQL_SEARCH_PATTERN_ESCAPE, - SQL_ODBC_SQL_CONFORMANCE, - - SQL_DATABASE_NAME, - SQL_DBMS_NAME, - SQL_DBMS_VER, - - SQL_ACCESSIBLE_TABLES, - SQL_ACCESSIBLE_PROCEDURES, - SQL_PROCEDURES, - SQL_CONCAT_NULL_BEHAVIOR, - SQL_CURSOR_COMMIT_BEHAVIOR, - SQL_CURSOR_ROLLBACK_BEHAVIOR, - SQL_DATA_SOURCE_READ_ONLY, - SQL_DEFAULT_TXN_ISOLATION, - SQL_EXPRESSIONS_IN_ORDERBY, - SQL_IDENTIFIER_CASE, - SQL_IDENTIFIER_QUOTE_CHAR, - SQL_MAX_COLUMN_NAME_LEN, - SQL_MAX_CURSOR_NAME_LEN, - SQL_MAX_OWNER_NAME_LEN, - SQL_MAX_SCHEMA_NAME_LEN = 32, - SQL_MAX_PROCEDURE_NAME_LEN, - SQL_MAX_QUALIFIER_NAME_LEN, - SQL_MAX_CATALOG_NAME_LEN = 34, - SQL_MAX_TABLE_NAME_LEN, - SQL_MULT_RESULT_SETS, - SQL_MULTIPLE_ACTIVE_TXN, - SQL_OUTER_JOINS, - SQL_SCHEMA_TERM, - SQL_PROCEDURE_TERM, - SQL_CATALOG_NAME_SEPARATOR, - SQL_CATALOG_TERM, - SQL_SCROLL_CONCURRENCY, - SQL_SCROLL_OPTIONS, - SQL_TABLE_TERM, - SQL_TXN_CAPABLE, - SQL_USER_NAME, - - SQL_CONVERT_FUNCTIONS, - SQL_NUMERIC_FUNCTIONS, - SQL_STRING_FUNCTIONS, - SQL_SYSTEM_FUNCTIONS, - SQL_TIMEDATE_FUNCTIONS, - - SQL_CONVERT_BIGINT, - SQL_CONVERT_BINARY, - SQL_CONVERT_BIT, - SQL_CONVERT_CHAR, - SQL_CONVERT_DATE, - SQL_CONVERT_DECIMAL, - SQL_CONVERT_DOUBLE, - SQL_CONVERT_FLOAT, - SQL_CONVERT_INTEGER, - SQL_CONVERT_LONGVARCHAR, - SQL_CONVERT_NUMERIC, - SQL_CONVERT_REAL, - SQL_CONVERT_SMALLINT, - SQL_CONVERT_TIME, - SQL_CONVERT_TIMESTAMP, - SQL_CONVERT_TINYINT, - SQL_CONVERT_VARBINARY, - SQL_CONVERT_VARCHAR, - SQL_CONVERT_LONGVARBINARY, - - SQL_TXN_ISOLATION_OPTION, - SQL_ODBC_SQL_OPT_IEF, - SQL_INTEGRITY = 73, - SQL_CORRELATION_NAME, - SQL_NON_NULLABLE_COLUMNS, - SQL_DRIVER_HLIB, - SQL_DRIVER_ODBC_VER, - SQL_LOCK_TYPES, - SQL_POS_OPERATIONS, - SQL_POSITIONED_STATEMENTS, - SQL_GETDATA_EXTENSIONS, - SQL_BOOKMARK_PERSISTENCE, - SQL_STATIC_SENSITIVITY, - SQL_FILE_USAGE, - SQL_NULL_COLLATION, - SQL_ALTER_TABLE, - SQL_COLUMN_ALIAS, - SQL_GROUP_BY, - SQL_KEYWORDS, - SQL_ORDER_BY_COLUMNS_IN_SELECT, - SQL_SCHEMA_USAGE, - SQL_CATALOG_USAGE, - SQL_QUOTED_IDENTIFIER_CASE, - SQL_SPECIAL_CHARACTERS, - SQL_SUBQUERIES, - SQL_UNION_STATEMENT, - SQL_MAX_COLUMNS_IN_GROUP_BY, - SQL_MAX_COLUMNS_IN_INDEX, - SQL_MAX_COLUMNS_IN_ORDER_BY, - SQL_MAX_COLUMNS_IN_SELECT, - SQL_MAX_COLUMNS_IN_TABLE, - SQL_MAX_INDEX_SIZE, - SQL_MAX_ROW_SIZE_INCLUDES_LONG, - SQL_MAX_ROW_SIZE, - SQL_MAX_STATEMENT_LEN, - SQL_MAX_TABLES_IN_SELECT, - SQL_MAX_USER_NAME_LEN, - SQL_MAX_CHAR_LITERAL_LEN, - SQL_TIMEDATE_ADD_INTERVALS, - SQL_TIMEDATE_DIFF_INTERVALS, - SQL_NEED_LONG_DATA_LEN, - SQL_MAX_BINARY_LITERAL_LEN, - SQL_LIKE_ESCAPE_CLAUSE, - SQL_CATALOG_LOCATION, - SQL_OJ_CAPABILITIES, - - SQL_ACTIVE_ENVIRONMENTS, - SQL_ALTER_DOMAIN, - SQL_SQL_CONFORMANCE, - SQL_DATETIME_LITERALS, - SQL_BATCH_ROW_COUNT, - SQL_BATCH_SUPPORT, - SQL_CONVERT_WCHAR, - SQL_CONVERT_INTERVAL_DAY_TIME, - SQL_CONVERT_INTERVAL_YEAR_MONTH, - SQL_CONVERT_WLONGVARCHAR, - SQL_CONVERT_WVARCHAR, - SQL_CREATE_ASSERTION, - SQL_CREATE_CHARACTER_SET, - SQL_CREATE_COLLATION, - SQL_CREATE_DOMAIN, - SQL_CREATE_SCHEMA, - SQL_CREATE_TABLE, - SQL_CREATE_TRANSLATION, - SQL_CREATE_VIEW, - SQL_DRIVER_HDESC, - SQL_DROP_ASSERTION, - SQL_DROP_CHARACTER_SET, - SQL_DROP_COLLATION, - SQL_DROP_DOMAIN, - SQL_DROP_SCHEMA, - SQL_DROP_TABLE, - SQL_DROP_TRANSLATION, - SQL_DROP_VIEW, - SQL_DYNAMIC_CURSOR_ATTRIBUTES1, - SQL_DYNAMIC_CURSOR_ATTRIBUTES2, - SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1, - SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2, - SQL_INDEX_KEYWORDS, - SQL_INFO_SCHEMA_VIEWS, - SQL_KEYSET_CURSOR_ATTRIBUTES1, - SQL_KEYSET_CURSOR_ATTRIBUTES2, - SQL_ODBC_INTERFACE_CONFORMANCE, - SQL_PARAM_ARRAY_ROW_COUNTS, - SQL_PARAM_ARRAY_SELECTS, - SQL_SQL92_DATETIME_FUNCTIONS, - SQL_SQL92_FOREIGN_KEY_DELETE_RULE, - SQL_SQL92_FOREIGN_KEY_UPDATE_RULE, - SQL_SQL92_GRANT, - SQL_SQL92_NUMERIC_VALUE_FUNCTIONS, - SQL_SQL92_PREDICATES, - SQL_SQL92_RELATIONAL_JOIN_OPERATORS, - SQL_SQL92_REVOKE, - SQL_SQL92_ROW_VALUE_CONSTRUCTOR, - SQL_SQL92_STRING_FUNCTIONS, - SQL_SQL92_VALUE_EXPRESSIONS, - SQL_STANDARD_CLI_CONFORMANCE, - SQL_STATIC_CURSOR_ATTRIBUTES1, - SQL_STATIC_CURSOR_ATTRIBUTES2, - SQL_AGGREGATE_FUNCTIONS, - SQL_DDL_INDEX, - SQL_DM_VER, - SQL_INSERT_STATEMENT, - SQL_CONVERT_GUID, - - SQL_XOPEN_CLI_YEAR = 10000, - SQL_CURSOR_SENSITIVITY, - SQL_DESCRIBE_PARAMETER, - SQL_CATALOG_NAME, - SQL_COLLATION_SEQ, - SQL_MAX_IDENTIFIER_LEN, - SQL_ASYNC_MODE = 10021, - SQL_MAX_ASYNC_CONCURRENT_STATEMENTS, - - SQL_DTC_TRANSITION_COST = 1750, - ], -*/ - SQL_OAC = - [ - SQL_OAC_None = 0x0000, - SQL_OAC_LEVEL1 = 0x0001, - SQL_OAC_LEVEL2 = 0x0002 - ], - - SQL_OSC = - [ - SQL_OSC_MINIMUM = 0x0000, - SQL_OSC_CORE = 0x0001, - SQL_OSC_EXTENDED = 0x0002 - ], - - SQL_SCC = - [ - SQL_SCC_XOPEN_CLI_VERSION1 = 0x00000001, - SQL_SCC_ISO92_CLI = 0x00000002 - ], - - SQL_SVE = - [ - SQL_SVE_CASE = 0x00000001, - SQL_SVE_CAST = 0x00000002, - SQL_SVE_COALESCE = 0x00000004, - SQL_SVE_NULLIF = 0x00000008 - ], - - SQL_SSF = - [ - SQL_SSF_CONVERT = 0x00000001, - SQL_SSF_LOWER = 0x00000002, - SQL_SSF_UPPER = 0x00000004, - SQL_SSF_SUBSTRING = 0x00000008, - SQL_SSF_TRANSLATE = 0x00000010, - SQL_SSF_TRIM_BOTH = 0x00000020, - SQL_SSF_TRIM_LEADING = 0x00000040, - SQL_SSF_TRIM_TRAILING = 0x00000080 - ], - - SQL_SP = - [ - //None = 0, - - SQL_SP_EXISTS = 0x00000001, - SQL_SP_ISNOTNULL = 0x00000002, - SQL_SP_ISNULL = 0x00000004, - SQL_SP_MATCH_FULL = 0x00000008, - SQL_SP_MATCH_PARTIAL = 0x00000010, - SQL_SP_MATCH_UNIQUE_FULL = 0x00000020, - SQL_SP_MATCH_UNIQUE_PARTIAL = 0x00000040, - SQL_SP_OVERLAPS = 0x00000080, - SQL_SP_UNIQUE = 0x00000100, - SQL_SP_LIKE = 0x00000200, - SQL_SP_IN = 0x00000400, - SQL_SP_BETWEEN = 0x00000800, - SQL_SP_COMPARISON = 0x00001000, - SQL_SP_QUANTIFIED_COMPARISON = 0x00002000, - - All = 0x0000FFFF - ], - - SQL_OIC = - [ - SQL_OIC_CORE = 1, - SQL_OIC_LEVEL1 = 2, - SQL_OIC_LEVEL2 = 3 - ], - - SQL_USAGE = - [ - SQL_U_DML_STATEMENTS = 0x00000001, - SQL_U_PROCEDURE_INVOCATION = 0x00000002, - SQL_U_TABLE_DEFINITION = 0x00000004, - SQL_U_INDEX_DEFINITION = 0x00000008, - SQL_U_PRIVILEGE_DEFINITION = 0x00000010 - ], - - SQL_GB = - [ - - SQL_GB_NOT_SUPPORTED = 0, - SQL_GB_GROUP_BY_EQUALS_SELECT = 1, - SQL_GB_GROUP_BY_CONTAINS_SELECT = 2, - SQL_GB_NO_RELATION = 3, - SQL_GB_COLLATE = 4 - ], - - SQL_NC = - [ - SQL_NC_END = 0, - SQL_NC_HIGH = 1, - SQL_NC_LOW = 2, - SQL_NC_START = 3 - ], - - SQL_CN = - [ - SQL_CN_None = 0, - SQL_CN_DIFFERENT = 1, - SQL_CN_ANY = 2 - ], - - SQL_NNC = - [ - SQL_NNC_NULL = 0, - SQL_NNC_NON_NULL = 1 - ], - - SQL_CB = - [ - SQL_CB_NULL = 0, - SQL_CB_NON_NULL = 1 - ], - - SQL_FD_FETCH = - [ - SQL_FD_FETCH_NEXT = 0x00000001, - SQL_FD_FETCH_FIRST = 0x00000002, - SQL_FD_FETCH_LAST = 0x00000004, - SQL_FD_FETCH_PRIOR = 0x00000008, - SQL_FD_FETCH_ABSOLUTE = 0x00000010, - SQL_FD_FETCH_RELATIVE = 0x00000020, - SQL_FD_FETCH_BOOKMARK = 0x00000080 - ], - - SQL_SQ = - [ - SQL_SQ_COMPARISON = 0x00000001, - SQL_SQ_EXISTS = 0x00000002, - SQL_SQ_IN = 0x00000004, - SQL_SQ_QUANTIFIED = 0x00000008, - SQL_SQ_CORRELATED_SUBQUERIES = 0x00000010 - ], - - SQL_U = - [ - SQL_U_UNION = 0x00000001, - SQL_U_UNION_ALL = 0x00000002 - ], - - SQL_BP = - [ - SQL_BP_CLOSE = 0x00000001, - SQL_BP_DELETE = 0x00000002, - SQL_BP_DROP = 0x00000004, - SQL_BP_TRANSACTION = 0x00000008, - SQL_BP_UPDATE = 0x00000010, - SQL_BP_OTHER_HSTMT = 0x00000020, - SQL_BP_SCROLL = 0x00000040 - ], - - SQL_QL = - [ - SQL_QL_START = 0x0001, - SQL_QL_END = 0x0002 - ], - - SQL_OJ = - [ - SQL_OJ_LEFT = 0x00000001, - SQL_OJ_RIGHT = 0x00000002, - SQL_OJ_FULL = 0x00000004, - SQL_OJ_NESTED = 0x00000008, - SQL_OJ_NOT_ORDERED = 0x00000010, - SQL_OJ_INNER = 0x00000020, - SQL_OJ_ALL_COMPARISON_OPS = 0x00000040 - ], - - SQL_FN_CVT = - [ - //None = 0, - - SQL_FN_CVT_CONVERT = 0x00000001, - SQL_FN_CVT_CAST = 0x00000002 - ], - - SQL_FN_NUM = - [ - //None = 0, - - SQL_FN_NUM_ABS = 0x00000001, - SQL_FN_NUM_ACOS = 0x00000002, - SQL_FN_NUM_ASIN = 0x00000004, - SQL_FN_NUM_ATAN = 0x00000008, - SQL_FN_NUM_ATAN2 = 0x00000010, - SQL_FN_NUM_CEILING = 0x00000020, - SQL_FN_NUM_COS = 0x00000040, - SQL_FN_NUM_COT = 0x00000080, - SQL_FN_NUM_EXP = 0x00000100, - SQL_FN_NUM_FLOOR = 0x00000200, - SQL_FN_NUM_LOG = 0x00000400, - SQL_FN_NUM_MOD = 0x00000800, - SQL_FN_NUM_SIGN = 0x00001000, - SQL_FN_NUM_SIN = 0x00002000, - SQL_FN_NUM_SQRT = 0x00004000, - SQL_FN_NUM_TAN = 0x00008000, - SQL_FN_NUM_PI = 0x00010000, - SQL_FN_NUM_RAND = 0x00020000, - SQL_FN_NUM_DEGREES = 0x00040000, - SQL_FN_NUM_LOG10 = 0x00080000, - SQL_FN_NUM_POWER = 0x00100000, - SQL_FN_NUM_RADIANS = 0x00200000, - SQL_FN_NUM_ROUND = 0x00400000, - SQL_FN_NUM_TRUNCATE = 0x00800000 - ], - - SQL_SNVF = - [ - SQL_SNVF_BIT_LENGTH = 0x00000001, - SQL_SNVF_CHAR_LENGTH = 0x00000002, - SQL_SNVF_CHARACTER_LENGTH = 0x00000004, - SQL_SNVF_EXTRACT = 0x00000008, - SQL_SNVF_OCTET_LENGTH = 0x00000010, - SQL_SNVF_POSITION = 0x00000020 - ], - - SQL_FN_STR = - [ - //None = 0, - - SQL_FN_STR_CONCAT = 0x00000001, - SQL_FN_STR_INSERT = 0x00000002, - SQL_FN_STR_LEFT = 0x00000004, - SQL_FN_STR_LTRIM = 0x00000008, - SQL_FN_STR_LENGTH = 0x00000010, - SQL_FN_STR_LOCATE = 0x00000020, - SQL_FN_STR_LCASE = 0x00000040, - SQL_FN_STR_REPEAT = 0x00000080, - SQL_FN_STR_REPLACE = 0x00000100, - SQL_FN_STR_RIGHT = 0x00000200, - SQL_FN_STR_RTRIM = 0x00000400, - SQL_FN_STR_SUBSTRING = 0x00000800, - SQL_FN_STR_UCASE = 0x00001000, - SQL_FN_STR_ASCII = 0x00002000, - SQL_FN_STR_CHAR = 0x00004000, - SQL_FN_STR_DIFFERENCE = 0x00008000, - SQL_FN_STR_LOCATE_2 = 0x00010000, - SQL_FN_STR_SOUNDEX = 0x00020000, - SQL_FN_STR_SPACE = 0x00040000, - SQL_FN_STR_BIT_LENGTH = 0x00080000, - SQL_FN_STR_CHAR_LENGTH = 0x00100000, - SQL_FN_STR_CHARACTER_LENGTH = 0x00200000, - SQL_FN_STR_OCTET_LENGTH = 0x00400000, - SQL_FN_STR_POSITION = 0x00800000 - ], - - SQL_FN_SYSTEM = - [ - //None = 0, - - SQL_FN_SYS_USERNAME = 0x00000001, - SQL_FN_SYS_DBNAME = 0x00000002, - SQL_FN_SYS_IFNULL = 0x00000004 - ], - - SQL_FN_TD = - [ - //None = 0, - - SQL_FN_TD_NOW = 0x00000001, - SQL_FN_TD_CURDATE = 0x00000002, - SQL_FN_TD_DAYOFMONTH = 0x00000004, - SQL_FN_TD_DAYOFWEEK = 0x00000008, - SQL_FN_TD_DAYOFYEAR = 0x00000010, - SQL_FN_TD_MONTH = 0x00000020, - SQL_FN_TD_QUARTER = 0x00000040, - SQL_FN_TD_WEEK = 0x00000080, - SQL_FN_TD_YEAR = 0x00000100, - SQL_FN_TD_CURTIME = 0x00000200, - SQL_FN_TD_HOUR = 0x00000400, - SQL_FN_TD_MINUTE = 0x00000800, - SQL_FN_TD_SECOND = 0x00001000, - SQL_FN_TD_TIMESTAMPADD = 0x00002000, - SQL_FN_TD_TIMESTAMPDIFF = 0x00004000, - SQL_FN_TD_DAYNAME = 0x00008000, - SQL_FN_TD_MONTHNAME = 0x00010000, - SQL_FN_TD_CURRENT_DATE = 0x00020000, - SQL_FN_TD_CURRENT_TIME = 0x00040000, - SQL_FN_TD_CURRENT_TIMESTAMP = 0x00080000, - SQL_FN_TD_EXTRACT = 0x00100000 - ], - - SQL_SDF = - [ - SQL_SDF_CURRENT_DATE = 0x00000001, - SQL_SDF_CURRENT_TIME = 0x00000002, - SQL_SDF_CURRENT_TIMESTAMP = 0x00000004 - ], - - SQL_TSI = - [ - //None = 0, - - SQL_TSI_FRAC_SECOND = 0x00000001, - SQL_TSI_SECOND = 0x00000002, - SQL_TSI_MINUTE = 0x00000004, - SQL_TSI_HOUR = 0x00000008, - SQL_TSI_DAY = 0x00000010, - SQL_TSI_WEEK = 0x00000020, - SQL_TSI_MONTH = 0x00000040, - SQL_TSI_QUARTER = 0x00000080, - SQL_TSI_YEAR = 0x00000100 - ], - - SQL_AF = - [ - //None = 0, - - SQL_AF_AVG = 0x00000001, - SQL_AF_COUNT = 0x00000002, - SQL_AF_MAX = 0x00000004, - SQL_AF_MIN = 0x00000008, - SQL_AF_SUM = 0x00000010, - SQL_AF_DISTINCT = 0x00000020, - SQL_AF_ALL = 0x00000040, - - All = 0xFF - ], - - SQL_SC = - [ - //None = 0, - - SQL_SC_SQL92_ENTRY = 0x00000001, - SQL_SC_FIPS127_2_TRANSITIONAL = 0x00000002, - SQL_SC_SQL92_INTERMEDIATE = 0x00000004, - SQL_SC_SQL92_FULL = 0x00000008 - ], - - SQL_DL_SQL92 = - [ - SQL_DL_SQL92_DATE = 0x00000001, - SQL_DL_SQL92_TIME = 0x00000002, - SQL_DL_SQL92_TIMESTAMP = 0x00000004, - SQL_DL_SQL92_INTERVAL_YEAR = 0x00000008, - SQL_DL_SQL92_INTERVAL_MONTH = 0x00000010, - SQL_DL_SQL92_INTERVAL_DAY = 0x00000020, - SQL_DL_SQL92_INTERVAL_HOUR = 0x00000040, - SQL_DL_SQL92_INTERVAL_MINUTE = 0x00000080, - SQL_DL_SQL92_INTERVAL_SECOND = 0x00000100, - SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH = 0x00000200, - SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR = 0x00000400, - SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE = 0x00000800, - SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND = 0x00001000, - SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE = 0x00002000, - SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND = 0x00004000, - SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND = 0x00008000 - ], - - SQL_IK = - [ - SQL_IK_NONE = 0x00000000, - SQL_IK_ASC = 0x00000001, - SQL_IK_DESC = 0x00000002, - SQL_IK_ALL = 0x00000003 //SQL_IK_ASC | SQL_IK_DESC - ], - - SQL_ISV = - [ - SQL_ISV_ASSERTIONS = 0x00000001, - SQL_ISV_CHARACTER_SETS = 0x00000002, - SQL_ISV_CHECK_CONSTRAINTS = 0x00000004, - SQL_ISV_COLLATIONS = 0x00000008, - SQL_ISV_COLUMN_DOMAIN_USAGE = 0x00000010, - SQL_ISV_COLUMN_PRIVILEGES = 0x00000020, - SQL_ISV_COLUMNS = 0x00000040, - SQL_ISV_CONSTRAINT_COLUMN_USAGE = 0x00000080, - SQL_ISV_CONSTRAINT_TABLE_USAGE = 0x00000100, - SQL_ISV_DOMAIN_CONSTRAINTS = 0x00000200, - SQL_ISV_DOMAINS = 0x00000400, - SQL_ISV_KEY_COLUMN_USAGE = 0x00000800, - SQL_ISV_REFERENTIAL_CONSTRAINTS = 0x00001000, - SQL_ISV_SCHEMATA = 0x00002000, - SQL_ISV_SQL_LANGUAGES = 0x00004000, - SQL_ISV_TABLE_CONSTRAINTS = 0x00008000, - SQL_ISV_TABLE_PRIVILEGES = 0x00010000, - SQL_ISV_TABLES = 0x00020000, - SQL_ISV_TRANSLATIONS = 0x00040000, - SQL_ISV_USAGE_PRIVILEGES = 0x00080000, - SQL_ISV_VIEW_COLUMN_USAGE = 0x00100000, - SQL_ISV_VIEW_TABLE_USAGE = 0x00200000, - SQL_ISV_VIEWS = 0x00400000 - ], - - SQL_SRJO = - [ - //None = 0, - - SQL_SRJO_CORRESPONDING_CLAUSE = 0x00000001, - SQL_SRJO_CROSS_JOIN = 0x00000002, - SQL_SRJO_EXCEPT_JOIN = 0x00000004, - SQL_SRJO_FULL_OUTER_JOIN = 0x00000008, - SQL_SRJO_INNER_JOIN = 0x00000010, - SQL_SRJO_INTERSECT_JOIN = 0x00000020, - SQL_SRJO_LEFT_OUTER_JOIN = 0x00000040, - SQL_SRJO_NATURAL_JOIN = 0x00000080, - SQL_SRJO_RIGHT_OUTER_JOIN = 0x00000100, - SQL_SRJO_UNION_JOIN = 0x00000200 - ], - - SQL_SRVC = - [ - SQL_SRVC_VALUE_EXPRESSION = 0x00000001, - SQL_SRVC_NULL = 0x00000002, - SQL_SRVC_DEFAULT = 0x00000004, - SQL_SRVC_ROW_SUBQUERY = 0x00000008 - ], - - //public static readonly int SQL_OV_ODBC3 = 3; - //public const Int32 SQL_NTS = -3; //flags for null-terminated string - - //Pooling - SQL_CP = - [ - OFF = 0, - ONE_PER_DRIVER = 1, - ONE_PER_HENV = 2 - ], - -/* - public const Int32 SQL_CD_TRUE = 1; - public const Int32 SQL_CD_FALSE = 0; - - public const Int32 SQL_DTC_DONE = 0; - public const Int32 SQL_IS_POINTER = -4; - public const Int32 SQL_IS_PTR = 1; -*/ - SQL_DRIVER = - [ - NOPROMPT = 0, - COMPLETE = 1, - PROMPT = 2, - COMPLETE_REQUIRED = 3 - ], - - // Column set for SQLPrimaryKeys - SQL_PRIMARYKEYS = - [ - /* - CATALOGNAME = 1, // TABLE_CAT - SCHEMANAME = 2, // TABLE_SCHEM - TABLENAME = 3, // TABLE_NAME - */ - COLUMNNAME = 4 // COLUMN_NAME - /* - KEY_SEQ = 5, // KEY_SEQ - PKNAME = 6, // PK_NAME - */ - ], - - // Column set for SQLStatistics - SQL_STATISTICS = - [ - /* - CATALOGNAME = 1, // TABLE_CAT - SCHEMANAME = 2, // TABLE_SCHEM - TABLENAME = 3, // TABLE_NAME - NONUNIQUE = 4, // NON_UNIQUE - INDEXQUALIFIER = 5, // INDEX_QUALIFIER - */ - INDEXNAME = 6, // INDEX_NAME - /* - TYPE = 7, // TYPE - */ - ORDINAL_POSITION = 8, // ORDINAL_POSITION - COLUMN_NAME = 9 // COLUMN_NAME - /* - ASC_OR_DESC = 10, // ASC_OR_DESC - CARDINALITY = 11, // CARDINALITY - PAGES = 12, // PAGES - FILTER_CONDITION = 13, // FILTER_CONDITION - */ - ], - - // Column set for SQLSpecialColumns - SQL_SPECIALCOLUMNSET = - [ - /* - SCOPE = 1, // SCOPE - */ - COLUMN_NAME = 2 // COLUMN_NAME - /* - DATA_TYPE = 3, // DATA_TYPE - TYPE_NAME = 4, // TYPE_NAME - COLUMN_SIZE = 5, // COLUMN_SIZE - BUFFER_LENGTH = 6, // BUFFER_LENGTH - DECIMAL_DIGITS = 7, // DECIMAL_DIGITS - PSEUDO_COLUMN = 8, // PSEUDO_COLUMN - */ - ], - - SQL_DIAG = - [ - CURSOR_ROW_COUNT= -1249, - ROW_NUMBER = -1248, - COLUMN_NUMBER = -1247, - RETURNCODE = 1, - NUMBER = 2, - ROW_COUNT = 3, - SQLSTATE = 4, - NATIVE = 5, - MESSAGE_TEXT = 6, - DYNAMIC_FUNCTION = 7, - CLASS_ORIGIN = 8, - SUBCLASS_ORIGIN = 9, - CONNECTION_NAME = 10, - SERVER_NAME = 11, - DYNAMIC_FUNCTION_CODE = 12 - ], - - SQL_SU = - [ - SQL_SU_DML_STATEMENTS = 0x00000001, - SQL_SU_PROCEDURE_INVOCATION = 0x00000002, - SQL_SU_TABLE_DEFINITION = 0x00000004, - SQL_SU_INDEX_DEFINITION = 0x00000008, - SQL_SU_PRIVILEGE_DEFINITION = 0x00000010 - ] -] diff --git a/bi-connectors/PowerBIConnector/src/OpenSearch16.png b/bi-connectors/PowerBIConnector/src/OpenSearch16.png deleted file mode 100644 index 67c00e9609a29afd6f621df7ce2e08fa46201ff8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1777 zcmbVNeM}o=7(bj0RzbFflsR-eZ!8&!_tlm{FH}ZbghmPss+7#>u6J+S3vKVXJD}jy z41}?;WkxU#mbtk2dlYpv%jJXZ8HS{Pv;#W6lF&9Ed{GpP{HF zs7vGpU(0Gxnr4iK`=BsucvfZq70h#tPn1I}bXf?oen3iLKZYg($=Jo9C_}~2I^)WH zr`=v9i#{O;50vUs8|o~vn`w*Lj2j3#X0FS{IKzs{hB@GLSTPtLLJ)X{Gf_s1ndWht z&9~sD0*b>~KzVVNrYVpQXj6gDyDaYzxkfDsmgV{XDPJiIunO7W1M_ILsbvpSCMfV; zTjIr20~+G1pn%2_hG99a5Ud!dWdPu@__pxC5m=&a4gg5{4|%Z!Q$(NI%*vqH52N)T zGLMAjlUmU(c|!ix$=KP70$+y1uAwax{R)00IvxnaHYdY=w(rZFHxVRhpVLw7E;xMn zN>P30uFTHp^|UtK#^Q3W$Bdpm*)@3lwY|e%Y#!cC=*`~T4MqD?y;;W`j?N#``aPe6 z_NGVmI$b}}aS}~!^WK8ZAF}iQBY(Zhz#Apb zXu}&{xprp1-I)WTwz}bqLl=r3JG*82qmF{U)M&=5v!@DoKT-e5q@{a%`HpT!*VV|0 zQwP?m9lvPwrQsmh$&@-;xn{CwV>hvsihPoz%= pc6R+1O@3wY-R_c>55DXDBYAMl_ptu>m2vH-X##lhd2nI57aYS(eCyEe=I)M=)!Zbq=1;-XKqT&byP*8l=bZ0VA^2`?oG}4T<3#(jGJ+(|Qb(Mlc;*m-Xp(tX zsZ#39qgf%KXE?zP^x=RA(Fl^YAS^Ph4=AV`l<`3e_Vb|+F_h;l*wS<-=@hNN%iF6Z zP*R=mVyk_unZp*$N3+5-BnSY7LBj!mP^QBcEW%5}wYp7UXau78ELgTG5G{2UqEQs46~kN+zjh>KaCnl14WQVf->SHNvD}ESOhO zM4BK%p^!e5rWd3#f-;-U1Zf})1{@-AxhkkIVLT}7Mi^{BW+h%!cp-?YjEq~TP%Ic! zb=Zc07^4l!Q9nVC5n)CoC_Sm#6ajK<3@27d{)ljnC4e6UKv0n(mWp9Tub>FBSNI$1 z*zunPK;Jr@F&X#OB@l>-kd>TDXhzf__eIODDiILHKo%+_7UWbyHFc^rB5jobqX?2q z5d0&NDjZQ6H5l|p^eHF9@A1n@qB3bRjW(EYGJ__`VW?B! zcu&>+pcF;JIE{wFtl=1i`ByN<(jGwyFwkT^z?1<(43=SN%#pNJ@Cyyd=V;R8p$uj-fSE}d za3h(Sj+-fp!l^WtNuyX3lTI=t_iX}Op(eq|eeQqWFOYaxg^d4!dDPlevxm0xGK_0g zw0KIu%IM0^qmhK68CER>3&yG$05~kV%|EaQhG|1y07?HLFNR^V;88-11hUJZxBf%s z5m0?XE!tsAh`$;cIU7~rBXHO?)Mcz+!H-zS13}p4B-qccoXY4xkhtp(Ted5+xwWsr zo=`OP__fokzSRAydo5d&-D_yrSo33c_B!&d`15Ccm<-;1x%@M_pcbML5 zpeEO@@XmQsTh}{#b7E2Mz47IgZhpmO$HVJC*|F+WX!WhH5AL_lD1_KU(4TJob-(~)N+2o zFXwB2-+gQ#)Zax`rRM45TRJM1Yumby-3`or{{2gG@^hE$CAYip9>nuzQyZ9~A?ER$ z<9a%-)$G*gEu}sm*nCHvA*?%b70g{TkQCoCG38@h!la@7nk}6vzs)<`GBN4&?8Pxqy03c4~T-M+Zx=Cs;y zDRQXxu>&);yHfAGSm$t7`hKA1X)h+E$eHyQCTo@^?%%K$Y`x%lwbS#{!FReZZ~o#V z|BhQp2+&!e|jk=Xo@=&k(FLdPO+x9G6 GQS%4#I+-Z| diff --git a/bi-connectors/PowerBIConnector/src/OpenSearch24.png b/bi-connectors/PowerBIConnector/src/OpenSearch24.png deleted file mode 100644 index dbca9acdf42ed6c1d0863b49b9d271e55ef6dd85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1999 zcmbVN4N%i&7_Lm2fIr(56x?YjPMxkz(w5Rjsul{g(;{LyD5slglG2=QQ<9VxaH87~ z{9$fWwz+{!MN|fY^UisCq7ww1yE$Pu-HAvM6@N}-8w$#F2|qpExj%FF<@@q|&-=VT z-}}B)q4B}P^2Y3-~&2NK3U;x6dR0-9*LLfz- z07O$X0m#LW2!kLw5TO*~s0qbPrZ)fyB!NLl2EsBC1R+u-B9j3_kC0PG<7OmL6Fa1g z`%(!lEbBl((B*Q8T~aYcr-86isRSVjD3ORbgow$sv#48SXTpXVGz5duq=O|XJHRud zCd$dGgq*2^KG+;yT01ioCoW>38+CxN7~*{z0OFVz=Wx>20p&Ob5>~=S*ja|d!d|Sy zLa`KMq5g*2d;F9FF1C8TSI0ALvDv&T7&az@b7LqV&qOnZOa}ob5)9>}F(M{|Gc%0$ z#(_lB1j|@)`bY z9=_N07!`*Al*yh+po9}Z^t9-T$`i0e%9tA zFBAxTQgs@&LA$>Ar?X!L60bINpWn8uqwHvPjHfD9yYb7q+)h7(OuQ?n)&uvSD-YVO zjq#&va|6a+8m+qqRkrMHX){jj*m>jApO**ut4|&?se|9t8b#Zc>>cM1MW@f2%{3*N zHC<^nm%F4Y+s*M=iu~jQAvvDe=JeF0M@>hj9`jps#ckV^J&E#cE$_en_=N}WHKb42 zyy!xQ^7fL#oQQ44GbhvLPS3mKb`|~Nd$>8YFM;YDFE4oU{lh!HeK_uIcI59+^O(`; z(u~Nq($C}12jtulWG>06exMd)SJ$NLl3JG(<{fzDV)xY5*0ok+NT*+ScEu@XLw{;s zanrPlhB@xj?P_;iQrWt^-pOT>irQVhDfx?CK8CABgD%nRR1k-r5r!^!WB$_3Ov2`AyV%(LLhehW;kgf{!jIcT_EO?ysM&DA*iQ{L=k} ze;7}+qVE1pdA(x}d2}tcdp7jnT6h2Jtm|>5zuJ;Im@OlgZw<*xoPEY8qhLmkVgaIQ zZklz?$p&Qy_Eqk#TI^eTyxn-?MCHfvoe9a1)N0xCNr5z0mRp=6F7!y3)#vWMYH2!t XZszu$E>C4T|I5|I#B26Pt$6oOHZ$kf diff --git a/bi-connectors/PowerBIConnector/src/OpenSearch32.png b/bi-connectors/PowerBIConnector/src/OpenSearch32.png deleted file mode 100644 index 0698737da453adefaf7e057be9554e46afa8a7ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2213 zcmbVO3se+U7#>qJR3ai!BW)blx4Sd@V1dEKaF@px%gc>j71Y_8+1-iVo!Om{eUyTV z1qo@^$ufL)D!>O8f)+kW!&662<^z>HCe{H<6p@63rOoizqaAzBId|@zd%yqtANT+N zGsWqtNkJo@83_PDkTzM9$OE7{qkrI!c;n4svdya>}@LZAuO{9f#sGys5har$6RFEN3hv*nJX{C~VE^?kP zRge2}@fZS{69>-rpge({enUqk{T)QGP9K!w}d9;c`__yr2*?>e4|q?IJ;? z1QFv1q6DL2Bm`!{aFb~kC_`jY7*W7dg&09lc?_yhfCCT2t8)=%G*go}pp5@gK~|1q zP#AW*-4eH4Lc1)mG$tknMr5!|Cgu@h*6ZLfkJ!OZ8f4IrEbgKhj-nl)z=)aXrJM@l zP3`x=&iH8^>_D9Oh`}C=fu#~e@Tm_-;C>vl)Me{aPT(+UBkiPvV|lF9k7cYhN3&M? zFR1;;4=LbdtJC>)Jkl1s-LHb>67qOA1_JU(G^_VAB%DdI^img2CgkyEP7=IfP_>K1 zINGJBY1`mUr4O16%48A+I8BG)ltXZ0`U4`Q2IEK-B;1=Ai4@BedTBI@$WfV6j6|Ub z(ht?q1ZDO<3M!SNQu#wrK5Gb!!~PLW;Ha5)*)iT_%8pq`m~mJj&>u)tP1|S}ub8(^ z{@}h=txk8*X3EANu$f77L2ZIsDUDGo#WIPs&s?1j)jC)XbKs;_qk{PGNGOUxqj7~& zN%9$mMaj)#g*g%zo1)}|I65jaQl=oJGC8gsl-JPsQXvTj<%$0&pXQ?YD#UF6n@6Zk zA$!ndiskRsJ5W6HNaw)HMuB|^gJQT)2r38{GJqtYfoK=`$J8MQ z=5Nyn#}89=Wj&@UAJ_0g$iZ@ML3{jL89rv7ZQ_!Q;1CT073Y8Z@tuywjVCu=+LY71 z;>x9Emo3Y0c5m`-Y4uu?=kGZ88nSxT`4u6vu0pAJ*5>647gX)pHepKshk(^`A3Q$M z+l$XHctLx(Lh^QK_-&D-^4yIG#gS?3?L;@FXeWR9=Y|oy5Upx zxluunE!mw`)ZCHjE{JY!N@xrC?b6g^@nuw-TXzrp>h=22xC`Iq8%{MEn99QR+oehAV=Rk{syB^4c$?E2f4G)^x5Z{m zetDgtLvpWe$ac(qm37vBvgY#4&b{6(?Z-=x->eSPcFE1X0H{A;i1qz=?XFmrHm3c6 zs4}XBz1aJ~rzNEu?vzyTvOayNi4qlwdc#I^Exz^j#f&R$wdJ0lcZ{1+9QWls_Md8iAuWaJ+2OAM(OIU>Sm%Kr1AVCV@YL<1-m%Rc?=oj@5Y@-e zQk@xPM-#8anhuM;_*e)%faKamM122Gd;$qBAbfV zKR4xfqo=hYpe-y#yM5onOT&YooZDW0HfUc-!$L!xv0&Yz?vYya;uTHu z%zNi&y>mvoE$({l#zlb{icoVa-LYt7P**$m3%0B==azmm3 diff --git a/bi-connectors/PowerBIConnector/src/OpenSearch40.png b/bi-connectors/PowerBIConnector/src/OpenSearch40.png deleted file mode 100644 index 201319e6e0026bd8e8e7a0ea586e39ea0bd4af31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2496 zcmbVO3se(l7S5t>cu1vUv?|@k@Cr(jNeF?=CLkdoQ3DhLrlP=PG6`8oCL{xah-*Pn zKw*#dP@s+Iky0sAKx>h+n6+p@rQ)M;D?SPezOYgrrNGJ(cf#w~9{1HbXJ-ES|L_04 zd+&emJyRGRxxv|Sl_P;ba27=fWAHcCcH93Re;%+ltMQkEHsU=!fw0`ucK=Qk<1s`a zELyFSNHM8+GYF$(HAYHcV=By*Q-XuYyetqWP$L*b&Qhmo^k5dBGR+I(W7{-?LY{_TseDR^ zO^_@VN0UQQ9YW^N0U8Vd9C84cE{9|gER*??SpbX40N4yBn+5=&9~We^$+H&)m($4= zV2m()Rt*2*Q&KQY3o;l6gMn`FqoX<{gURJ`832pHV$pB}O`om7pe&k3?>@&MMD(yu zrNvaJhHPVmWM~G)r{Jc}_@LI#(`xjyal#|U$bz&CCLOT(G!2x)^EhpWE^S&|4l|H6 zM2%=LJ&tA0W3?$LhU!z$e?vXL{0jj*wqo(T#%pa+tLG*3SXd_R#%w@di`GlBwFn~y z(W4nU7zxY7&2+bUqXk2C2!x?J35ur8omBLk$z&Fb&L&gE5UkSJobY*N3nGLtgio=Z z8x8QMvDgx3APD$@EDj9_00CeIDn{ihMfU5UOeP3$e*wj_Mh;=ne+A27P=V^y5bm-{ z4Ji?ZR->el=K~3bqG_lO7sjpgdv#tE8XB!b6{<9RK_9b0Ko*6Ca+q8WhsL5ar_B|M zL6Js}K^hnl3HcN}Jam;x4zgtko6AB1X#iKjp|M#^4h`aPWHf|}z#KThUk0#nq3JUN zg(#e1OMbDYMh6-yDG%T0;tglm3Uin1Sh01!jPBNQe@T*8h-s4BUK%t!QUFVf@<3>9to1 zd=8Fx4clxGclG#ClD5H5(z^j(tLB*_8L;$GU8AVzk6}@$Va4* zLK&1)vn1?h?$Nu%;#SX&vQrkGZ z<;G$Q(ZSF0&Hm5<=-P1Q4)95Lg&v)Hpj8Y`^`u&NC_1;M4hETzbvG|H++S*vj#~3* z6K|m%mcboONk;MpvTKP=ygrEEUBqN{l|(Q(_saG{TD8 z4snbAkZ`caLHVHc)Wcf4amho&g{42YXCMXcc717E9jtfFYoEOz_pI1D91)Ui>J(Iv z%((`yPk*3ZrRuLec0HT4@@0qRf;5kqo^03qQFAs=AU26F>P%ZZ2J#@n7 zLD_$euk3#RkT&0CV@GrAZPFT;i{Z&=Q zyt~e_SaHNt@wVOG-eGPJ`v*s`QWsMI24xhrIegdm#i|l?_1P$s+4riKdn!BsM^esI z{~J|@*P0X?5BJax`Cjl!&m8u+jC7e9^$e1ARx-V%vDfOMOM5d4B z2Da3WKIeVE&kUAr-%Y#qacY*+z=@i?pfz2}USFS_n#Dow`>Kq+bxS^X`d)fScuqF3 zaA8xg7ccgM$xnFdDEo{nw0c9tv4KwDr{+R_TYR01(ytwP)W7BJCnd?WPHLqvxc4)W z3-Ka#{6=xOsk8OlV;S}hOt6!e$MB-o7oPfaR}tj?06FY&M|9#Vj~AORwY7LtBazkV znV&UQd-BW=9$$YdDHHC{Rt)bRmv;FSW=dQFTpOB3>pm22xQ1B|??3dExQ%K$F`DPS zw%}vR#GQM`lq=$!V!#znqSIRn)MwzNMd=ME8lSZ77nCm8)n^o)K357@nc*g9d++zo z+&9td7UcEReIVSovC9-w(DG&Vc%*1F=Z|0B;chZ@x+cDK+w2-|CJmlx$XUGFFaH*J z^V`XC4`Yq1`PS~E-7bIoZcFim8*lHv7PX)Co!m9{OIAC0?m528aQxPtqL-1$5&z6s zvyhY4u|#2!!g@h+-oF5Bb==ti diff --git a/bi-connectors/PowerBIConnector/src/OpenSearch48.png b/bi-connectors/PowerBIConnector/src/OpenSearch48.png deleted file mode 100644 index 5aed8ebf93f03a17e095d6a0d83c1b8208d1804a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2698 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

    IwsiGhS z7pz4V1+jo^Qb4gH2udv?i_(G{21F2xz&}Cd`2VN>);Z_Rd-L9Rm+!uN?>Up?>$3r+ zZLF=Nq=fSHaPvpzb&8>>j=V2&qk54^OXv|QR#GysQVeBJf6Eair3EJ3zz|6YVl?mcf{}@t3~v`ST{k689K{#>asCC0ZO9D}-?VkQj~@ zu^{&t#7zqY8zJB-flXCjarD1qo0#l2zi zYq3PTKmrxOlK>(ai>Cm1{0ArlW^==1{|ZVV0C+_5GboZZY)}IJS1_9egu@~}h*0M8 zK@Nly3OE?_d>{c=m;7<|~~{_O~Ske5b4h|>R%7aw3^I9wtHMUXQGiPry+c{s#1XyW)lwxT^=F=L&VjP*&hD=ZO@oYXj&3@ko$RiB z)KIID;$@Sd?i+Qq+)L%e<+DYKFopBJ?2%aFUtJIf!`=TkK&9IQ3?vearWC65?VOe7&!Myl7wEDoxRHNV* z6QZ8pH5ShuH&vV89Ue}uJG;y^3g@W5>vU?DYTUzJGODih>4Z+|YU6v#4D}knF0(a~ zT^fygsn5PCcfX&N(lfHKr`Md&$OO>I&K9M(;`ZU1!hGMCp*tLDi?+jG>fKWw)2l=Y zGX!!oh8h#-&pG(jxsLj#Yc&t=#ctGiZ*%rnYPHGof^J!uMxHx=1-N9)ckcva(yM2G znAs5n`+=0Jj8$W^{b~-|!p=D!csh}G@!sV+jon&zemG8y|Kb2M*5doPylCTn^%mHe zMpg*UyH~F%TOg0fKEyiv6gA}e@=Qyv$%S^w;z`Sxdh-rUt4e+gym`>O}^07btU}b5%O^WWe6yj_a(Mbu`-*$ETK%Jj_DRuWF^@Zn~BBR*byQW4jL|Bgp z3`Rzk;HC1!w>~}cy+1#!TP-&&uTRL&mnYYjIqFhATVTE37o-s$tEP;qS&%51 zK0MNpb_B|2#y_&bG8g%bYhAkOPIYOfksn*Wy!&?g_q56}8Qe77akf33qz%=2H7h@& zY$%Ff>}T|{z57t9@gu`>uM|>V)525hR*ywfjTg8256E5h4NwNDf3CCdS1CMZFt+UB z=72$ysA|0LVj}OZx#ao{of-0t;l=gZ+^B-G5NoVKT07Yss#WJ~-clLwal3w!$2!G@LYWu*TLpb&_Iso~9W? zwMKm})^sJD;uPf?RI!G>?YL@In9A1Mhtx|Y@Bjf^}BM6vt!Vt%K`>O4PPD zxppx3l~IA@otbcbT>VV0PJWG~f68)m4EvVYrTlwbT0NuV3BdJ}c0Opc-n}8yi4=LL zOtw$gZTyN?h69N%;w)KYbYiLSLfLPZ&a}=7+m8UZc_u0isEryfp|4E}1rZ)*6F0^? zp8SEbv)w#6YwAA~unc-o!nd3(QeSTe5*&l8qBFPChQ>#-%qYIs)@KxkhiPm{>gy!u z8RbU!P1*4%zA;^I4ixD$r(>yRV<)t`e{nAQasQp10ClgGL4Z;zds!>L>0~8$jmV*? zMVuUbD}AV8_TuEUNkxs--oe9VzlDt_Jgc6;k<4_TBtTi5?Ki-$7iJBe>bg>V+)6rb z7l6MD``un0UQ@gU z<2^$Sp}sYC^nTS;mFSwxA1!;lFtc5gmSlR#q=LADcfWOqOwYpGe2EYEJ})!+iYU$I z-3H4danSP4=|Y=)hX%W^3|4yQWLVL`o8epeW8waqdxOLsPXaqvy4xPJs>>?sl5q=d zD%Gd7dbsyO_?%MH<;ShQLq&U}Y#K;UUQ?c*qn&$UCiI&l6JGnMd$I%0o>J4;L-|FW zH~B|_`HY{bwRg_Rg4pZ^UG8Yy?)7W1M_0>QwCwp!#GyA|&7UmjB4p6ut7B9x+KB9jQJRx9;F@8)d5F zou8?bSGjzsN&Zcd_e0X1+MU&?l{zLP7iFUWnl17PsL2~1a>=G$J!o>u@Pw+%#6-i- zZ{o5uGqd+tj~IoDSl@-!Ue?j<4)RW9q?~to9*5s$-<*e+=hDMu_BzA%Xj5;RR+YAV z1Osl0D#_dx-B4k`2`YO2yrWq4=Wp|Z_Rn4v6Osyqy*r2&>U_Bz7cl$yf#$8-xBnE& zO1Rz11E$~S>c`ziRR{pMkIc947n$z+j&IgZ@tJ05*1evd+?!u>En_&depXp9aixS> SVLzq#1MqbBaVvJ&k?;>j`5@x} diff --git a/bi-connectors/PowerBIConnector/src/OpenSearch80.png b/bi-connectors/PowerBIConnector/src/OpenSearch80.png deleted file mode 100644 index 606f76205a716a8dfa80371a2ab6921d3041d08f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3648 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 - - Debug - 2.0 - {75a2dabe-6c5b-498e-8df1-e85d4483a7dc} - Exe - MyRootNamespace - MyAssemblyName - False - False - False - False - False - False - False - False - False - False - 1000 - Yes - OpenSearch - - - false - - bin\Debug\ - - - false - bin\Release\ - - - - - - - - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Content - - - Content - - - Code - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/bi-connectors/PowerBIConnector/src/OpenSearchProject.pq b/bi-connectors/PowerBIConnector/src/OpenSearchProject.pq deleted file mode 100644 index b3f65ddc99..0000000000 --- a/bi-connectors/PowerBIConnector/src/OpenSearchProject.pq +++ /dev/null @@ -1,263 +0,0 @@ -// This file contains Data Connector logic -[Version = "1.0.1"] -section OpenSearchProject; - -// When set to true, additional trace information will be written out to the User log. -// This should be set to false before release. Tracing is done through a call to -// Diagnostics.LogValue(). When EnableTraceOutput is set to false, the call becomes a -// no-op and simply returns the original value. -EnableTraceOutput = false; - -[DataSource.Kind="OpenSearchProject", Publish="OpenSearchProject.Publish"] -shared OpenSearchProject.Contents = Value.ReplaceType(OpenSearchProjectImpl, OpenSearchProjectType); - -// Wrapper function to provide additional UI customization. -OpenSearchProjectType = type function ( - Server as (type text meta [ - Documentation.FieldCaption = "Server", - Documentation.FieldDescription = "The hostname of the OpenSearch server.", - Documentation.SampleValues = { "localhost" } - ]), - Port as (type number meta [ - Documentation.FieldCaption = "Port", - Documentation.FieldDescription = "Port which OpenSearch server listens on.", - Documentation.SampleValues = { 9200 } - ]), - UseSSL as (type logical meta [ - Documentation.FieldCaption = "Use SSL", - Documentation.FieldDescription = "Use SSL", - Documentation.AllowedValues = { true, false } - ]), - HostnameVerification as (type logical meta [ - Documentation.FieldCaption = "Certificate validation", - Documentation.FieldDescription = "Certificate validation", - Documentation.AllowedValues = { true, false } - ]) - ) - as table meta [ - Documentation.Name = "OpenSearch Project" - ]; - -OpenSearchProjectImpl = (Server as text, Port as number, UseSSL as logical, HostnameVerification as logical) as table => - let - Credential = Extension.CurrentCredential(), - AuthenticationMode = Credential[AuthenticationKind], - - // Sets connection string properties for authentication. - CredentialConnectionString = - if AuthenticationMode = "UsernamePassword" then - [ - Auth = "BASIC", - UID = Credential[Username], - PWD = Credential[Password] - ] - else if AuthenticationMode = "Key" then - [ - Auth = "AWS_SIGV4", - Region = Credential[Key] - ] - else - [ - Auth = "NONE" - ], - - // Sets connection string properties for encrypted connections. - EncryptedConnectionString = - if Credential[EncryptConnection] = null or Credential[EncryptConnection] = true then - [ - UseSSL = 1 - ] - else - [ - UseSSL = 0 - ], - - // Subtract the server from the user input in case it's entered like 'http://localhost' or 'https://srv.com:100500' or 'localhost:0' - // And build the proper string on our own - FinalServerString = if UseSSL then - "https://" & Uri.Parts(Server)[Host] & ":" & Text.From(Port) - else - "http://" & Uri.Parts(Server)[Host] & ":" & Text.From(Port), - - ConnectionString = [ - Driver = "OpenSearch SQL ODBC Driver", - Host = FinalServerString, - HostnameVerification = if HostnameVerification then 1 else 0 - ], - - SQLGetInfo = Diagnostics.LogValue("SQLGetInfo_Options", [ - SQL_AGGREGATE_FUNCTIONS = ODBC[SQL_AF][All], - SQL_SQL_CONFORMANCE = ODBC[SQL_SC][SQL_SC_SQL92_INTERMEDIATE] - ]), - - SQLGetTypeInfo = (types) => - if (EnableTraceOutput <> true) then types else - let - // Outputting the entire table might be too large, and result in the value being truncated. - // We can output a row at a time instead with Table.TransformRows() - rows = Table.TransformRows(types, each Diagnostics.LogValue("SQLGetTypeInfo " & _[TYPE_NAME], _)), - toTable = Table.FromRecords(rows) - in - Value.ReplaceType(toTable, Value.Type(types)), - - // SQLColumns is a function handler that receives the results of an ODBC call to SQLColumns(). - SQLColumns = (catalogName, schemaName, tableName, columnName, source) => - if (EnableTraceOutput <> true) then source else - // the if statement conditions will force the values to evaluated/written to diagnostics - if (Diagnostics.LogValue("SQLColumns.TableName", tableName) <> "***" and Diagnostics.LogValue("SQLColumns.ColumnName", columnName) <> "***") then - let - // Outputting the entire table might be too large, and result in the value being truncated. - // We can output a row at a time instead with Table.TransformRows() - rows = Table.TransformRows(source, each Diagnostics.LogValue("SQLColumns", _)), - toTable = Table.FromRecords(rows) - in - Value.ReplaceType(toTable, Value.Type(source)) - else - source, - - SQLGetFunctions = Diagnostics.LogValue("SQLGetFunctions_Options", [ - SQL_API_SQLBINDPARAMETER = false - ]), - - SqlCapabilities = Diagnostics.LogValue("SqlCapabilities_Options", [ - SupportsTop = false, - LimitClauseKind = LimitClauseKind.LimitOffset, - Sql92Conformance = ODBC[SQL_SC][SQL_SC_SQL92_FULL], - SupportsNumericLiterals = true, - SupportsStringLiterals = true, - SupportsOdbcDateLiterals = true, - SupportsOdbcTimeLiterals = true, - SupportsOdbcTimestampLiterals = true - ]), - - OdbcOptions = [ - // Do not view the tables grouped by their schema names. - HierarchicalNavigation = false, - // Prevents execution of native SQL statements. Extensions should set this to true. - HideNativeQuery = true, - // Allows upconversion of numeric types - SoftNumbers = true, - // Allow upconversion / resizing of numeric and string types - TolerateConcatOverflow = true, - // Enables connection pooling via the system ODBC manager - ClientConnectionPooling = true, - - // These values should be set by previous steps - SQLColumns = SQLColumns, - SQLGetTypeInfo = SQLGetTypeInfo, - SQLGetInfo = SQLGetInfo, - SQLGetFunctions = SQLGetFunctions, - SqlCapabilities = SqlCapabilities, - - OnError = OnOdbcError, - - // Connection string properties used for encrypted connections. - CredentialConnectionString = EncryptedConnectionString - ], - - FullConnectionString = (ConnectionString & CredentialConnectionString & EncryptedConnectionString), - - OdbcDatasource = Odbc.DataSource(FullConnectionString, OdbcOptions) - in - OdbcDatasource; - -// Handles ODBC errors. -OnOdbcError = (errorRecord as record) => - let - ErrorMessage = errorRecord[Message], - ConnectionServer = errorRecord[Detail][DataSourcePath], - - IsDriverNotInstalled = Text.Contains(ErrorMessage, "doesn't correspond to an installed ODBC driver"), - - OdbcError = errorRecord[Detail][OdbcErrors]{0}, - OdbcErrorCode = OdbcError[NativeError], - - // Failed to connect to given host - IsHostUnreachable = - OdbcErrorCode = 202 - in - if IsDriverNotInstalled then - error Error.Record("DataSource.Error", "The OpenSearch SQL ODBC driver is not installed. Please install the driver") - else if IsHostUnreachable then - error Error.Record("DataSource.Error", "Couldn't reach server. Please double-check the server and auth. [" & ConnectionServer & "]") - else - error errorRecord; - -// Data Source Kind description -OpenSearchProject = [ - // Required for use with Power BI Service. - TestConnection = (dataSourcePath) => - let - json = Json.Document(dataSourcePath), - Server = json[Server], - Port = json[Port], - UseSSL = json[UseSSL], - HostnameVerification = json[HostnameVerification] - in - { "OpenSearchProject.Contents", Server, Port, UseSSL, HostnameVerification }, - - // Authentication modes - Authentication = [ - Implicit = [ - Label = "NONE" - ], - UsernamePassword = [ - Label = "BASIC" - ], - Key = [ - Label = "AWS_SIGV4", - KeyLabel = "Region" - ] - ], - - // PBIDS Handler - DSRHandlers = [ - opensearchproject = [ - GetDSR = (Server, Port, UseSSL, HostnameVerification, optional Options) => [ protocol = "opensearchproject-odbc", address = [ server = Server, port = Port, useSSL = UseSSL, hostnameVerification = HostnameVerification ] ], - GetFormula = (dsr, optional options) => () => - let - db = OpenSearchProject.Contents(dsr[address][server], dsr[address][port], dsr[address][useSSL], dsr[address][hostnameVerification]) - in - db, - GetFriendlyName = (dsr) => "OpenSearch Project" - ] - ], - - // Enable Encryption - SupportsEncryption = true, - - Label = Extension.LoadString("DataSourceLabel") -]; - -// Data Source UI publishing description -OpenSearchProject.Publish = [ - Beta = false, - Category = "Other", - ButtonText = { Extension.LoadString("ButtonTitle"), Extension.LoadString("ButtonHelp") }, - LearnMoreUrl = "https://github.com/opensearch-project/sql/blob/main/bi-connectors/PowerBIConnector/docs/OpenSearchProject.md", - - SupportsDirectQuery = true, - - SourceImage = OpenSearch.Icons, - SourceTypeImage = OpenSearch.Icons -]; - -OpenSearch.Icons = [ - Icon16 = { Extension.Contents("OpenSearch16.png"), Extension.Contents("OpenSearch20.png"), Extension.Contents("OpenSearch24.png"), Extension.Contents("OpenSearch32.png") }, - Icon32 = { Extension.Contents("OpenSearch32.png"), Extension.Contents("OpenSearch40.png"), Extension.Contents("OpenSearch48.png"), Extension.Contents("OpenSearch64.png") } -]; - -// Load common library functions -Extension.LoadFunction = (name as text) => - let - binary = Extension.Contents(name), - asText = Text.FromBinary(binary) - in - Expression.Evaluate(asText, #shared); - -// Diagnostics module contains multiple functions. . -Diagnostics = Extension.LoadFunction("Diagnostics.pqm"); -Diagnostics.LogValue = if (EnableTraceOutput) then Diagnostics[LogValue] else (prefix, value) => value; - -// OdbcConstants contains numeric constants from the ODBC header files, and helper function to create bitfield values. -ODBC = Extension.LoadFunction("OdbcConstants.pqm"); diff --git a/bi-connectors/PowerBIConnector/src/OpenSearchProject.query.pq b/bi-connectors/PowerBIConnector/src/OpenSearchProject.query.pq deleted file mode 100644 index 45026f96a3..0000000000 --- a/bi-connectors/PowerBIConnector/src/OpenSearchProject.query.pq +++ /dev/null @@ -1,324 +0,0 @@ -// This file contains queries to test your data connector -section OpenSearch.UnitTests; - -shared MyExtension.UnitTest = -[ - // Common variables for all tests - Host = "localhost", - Port = 9200, - UseSSL = false, - HostnameVerification = false, - - facts = - { - Fact("Connection Test", - 7, - let - Source = OpenSearchProject.Contents(Host, Port, UseSSL, HostnameVerification), - no_of_columns = Table.ColumnCount(Source) - in - no_of_columns - ), - Fact("calcs_data:bool0", - #table(type table [bool0 = logical], - { {null}, {false}, {true} }), - let - Source = OpenSearchProject.Contents(Host, Port, UseSSL, HostnameVerification), - calcs_null_null = Source{[Item="calcs",Schema=null,Catalog=null]}[Data], - grouped = Table.Group(calcs_null_null, {"bool0"}, {}) - in - grouped - ) - }, - - report = Facts.Summarize(facts) -][report]; - -/// COMMON UNIT TESTING CODE -Fact = (_subject as text, _expected, _actual) as record => -[ expected = try _expected, - safeExpected = if expected[HasError] then "Expected : "& @ValueToText(expected[Error]) else expected[Value], - actual = try _actual, - safeActual = if actual[HasError] then "Actual : "& @ValueToText(actual[Error]) else actual[Value], - attempt = try safeExpected = safeActual, - result = if attempt[HasError] or not attempt[Value] then "Failure ⛔" else "Success ✓", - resultOp = if result = "Success ✓" then " = " else " <> ", - addendumEvalAttempt = if attempt[HasError] then @ValueToText(attempt[Error]) else "", - addendumEvalExpected = try @ValueToText(safeExpected) otherwise "...", - addendumEvalActual = try @ValueToText(safeActual) otherwise "...", - ShortenedAddendumEvalExpected = if Text.Length(addendumEvalExpected) > 20 then Text.Range(addendumEvalExpected, 0, 20) & "..." else addendumEvalExpected, - ShortenedAddendumEvalActual = if Text.Length(addendumEvalActual) > 20 then Text.Range(addendumEvalActual, 0, 20) & "..." else addendumEvalActual, - fact = - [ Result = result & " " & addendumEvalAttempt, - Notes =_subject, - Details = ShortenedAddendumEvalExpected & resultOp & ShortenedAddendumEvalActual - ] -][fact]; - -Facts = (_subject as text, _predicates as list) => List.Transform(_predicates, each Fact(_subject,_{0},_{1})); - -Facts.Summarize = (_facts as list) as table => -[ Fact.CountSuccesses = (count, i) => - [ result = try i[Result], - sum = if result[HasError] or not Text.StartsWith(result[Value], "Success") then count else count + 1 - ][sum], - passed = List.Accumulate(_facts, 0, Fact.CountSuccesses), - total = List.Count(_facts), - format = if passed = total then "All #{0} Passed !!! ✓" else "#{0} Passed ☺ #{1} Failed ☹", - result = if passed = total then "Success" else "⛔", - rate = Number.IntegerDivide(100*passed, total), - header = - [ Result = result, - Notes = Text.Format(format, {passed, total-passed}), - Details = Text.Format("#{0}% success rate", {rate}) - ], - report = Table.FromRecords(List.Combine({{header},_facts})) -][report]; - -ValueToText = (value, optional depth) => - let - _canBeIdentifier = (x) => - let - keywords = {"and", "as", "each", "else", "error", "false", "if", "in", "is", "let", "meta", "not", "otherwise", "or", "section", "shared", "then", "true", "try", "type" }, - charAlpha = (c as number) => (c>= 65 and c <= 90) or (c>= 97 and c <= 122) or c=95, - charDigit = (c as number) => c>= 48 and c <= 57 - in - try - charAlpha(Character.ToNumber(Text.At(x,0))) - and - List.MatchesAll( - Text.ToList(x), - (c)=> let num = Character.ToNumber(c) in charAlpha(num) or charDigit(num) - ) - and not - List.MatchesAny( keywords, (li)=> li=x ) - otherwise - false, - - Serialize.Binary = (x) => "#binary(" & Serialize(Binary.ToList(x)) & ") ", - - Serialize.Date = (x) => "#date(" & - Text.From(Date.Year(x)) & ", " & - Text.From(Date.Month(x)) & ", " & - Text.From(Date.Day(x)) & ") ", - - Serialize.Datetime = (x) => "#datetime(" & - Text.From(Date.Year(DateTime.Date(x))) & ", " & - Text.From(Date.Month(DateTime.Date(x))) & ", " & - Text.From(Date.Day(DateTime.Date(x))) & ", " & - Text.From(Time.Hour(DateTime.Time(x))) & ", " & - Text.From(Time.Minute(DateTime.Time(x))) & ", " & - Text.From(Time.Second(DateTime.Time(x))) & ") ", - - Serialize.Datetimezone =(x) => let - dtz = DateTimeZone.ToRecord(x) - in - "#datetimezone(" & - Text.From(dtz[Year]) & ", " & - Text.From(dtz[Month]) & ", " & - Text.From(dtz[Day]) & ", " & - Text.From(dtz[Hour]) & ", " & - Text.From(dtz[Minute]) & ", " & - Text.From(dtz[Second]) & ", " & - Text.From(dtz[ZoneHours]) & ", " & - Text.From(dtz[ZoneMinutes]) & ") ", - - Serialize.Duration = (x) => let - dur = Duration.ToRecord(x) - in - "#duration(" & - Text.From(dur[Days]) & ", " & - Text.From(dur[Hours]) & ", " & - Text.From(dur[Minutes]) & ", " & - Text.From(dur[Seconds]) & ") ", - - Serialize.Function = (x) => _serialize_function_param_type( - Type.FunctionParameters(Value.Type(x)), - Type.FunctionRequiredParameters(Value.Type(x)) ) & - " as " & - _serialize_function_return_type(Value.Type(x)) & - " => (...) ", - - Serialize.List = (x) => "{" & - List.Accumulate(x, "", (seed,item) => if seed="" then Serialize(item) else seed & ", " & Serialize(item)) & - "} ", - - Serialize.Logical = (x) => Text.From(x), - - Serialize.Null = (x) => "null", - - Serialize.Number = (x) => - let Text.From = (i as number) as text => - if Number.IsNaN(i) then "#nan" else - if i=Number.PositiveInfinity then "#infinity" else - if i=Number.NegativeInfinity then "-#infinity" else - Text.From(i) - in - Text.From(x), - - Serialize.Record = (x) => "[ " & - List.Accumulate( - Record.FieldNames(x), - "", - (seed,item) => - (if seed="" then Serialize.Identifier(item) else seed & ", " & Serialize.Identifier(item)) & " = " & Serialize(Record.Field(x, item)) - ) & - " ] ", - - Serialize.Table = (x) => "#table( type " & - _serialize_table_type(Value.Type(x)) & - ", " & - Serialize(Table.ToRows(x)) & - ") ", - - Serialize.Text = (x) => """" & - _serialize_text_content(x) & - """", - - _serialize_text_content = (x) => let - escapeText = (n as number) as text => "#(#)(" & Text.PadStart(Number.ToText(n, "X", "en-US"), 4, "0") & ")" - in - List.Accumulate( - List.Transform( - Text.ToList(x), - (c) => let n=Character.ToNumber(c) in - if n = 9 then "#(#)(tab)" else - if n = 10 then "#(#)(lf)" else - if n = 13 then "#(#)(cr)" else - if n = 34 then """""" else - if n = 35 then "#(#)(#)" else - if n < 32 then escapeText(n) else - if n < 127 then Character.FromNumber(n) else - escapeText(n) - ), - "", - (s,i)=>s&i - ), - - Serialize.Identifier = (x) => - if _canBeIdentifier(x) then - x - else - "#""" & - _serialize_text_content(x) & - """", - - Serialize.Time = (x) => "#time(" & - Text.From(Time.Hour(x)) & ", " & - Text.From(Time.Minute(x)) & ", " & - Text.From(Time.Second(x)) & ") ", - - Serialize.Type = (x) => "type " & _serialize_typename(x), - - - _serialize_typename = (x, optional funtype as logical) => /* Optional parameter: Is this being used as part of a function signature? */ - let - isFunctionType = (x as type) => try if Type.FunctionReturn(x) is type then true else false otherwise false, - isTableType = (x as type) => try if Type.TableSchema(x) is table then true else false otherwise false, - isRecordType = (x as type) => try if Type.ClosedRecord(x) is type then true else false otherwise false, - isListType = (x as type) => try if Type.ListItem(x) is type then true else false otherwise false - in - - if funtype=null and isTableType(x) then _serialize_table_type(x) else - if funtype=null and isListType(x) then "{ " & @_serialize_typename( Type.ListItem(x) ) & " }" else - if funtype=null and isFunctionType(x) then "function " & _serialize_function_type(x) else - if funtype=null and isRecordType(x) then _serialize_record_type(x) else - - if x = type any then "any" else - let base = Type.NonNullable(x) in - (if Type.IsNullable(x) then "nullable " else "") & - (if base = type anynonnull then "anynonnull" else - if base = type binary then "binary" else - if base = type date then "date" else - if base = type datetime then "datetime" else - if base = type datetimezone then "datetimezone" else - if base = type duration then "duration" else - if base = type logical then "logical" else - if base = type none then "none" else - if base = type null then "null" else - if base = type number then "number" else - if base = type text then "text" else - if base = type time then "time" else - if base = type type then "type" else - - /* Abstract types: */ - if base = type function then "function" else - if base = type table then "table" else - if base = type record then "record" else - if base = type list then "list" else - - "any /*Actually unknown type*/"), - - _serialize_table_type = (x) => - let - schema = Type.TableSchema(x) - in - "table " & - (if Table.IsEmpty(schema) then "" else - "[" & List.Accumulate( - List.Transform( - Table.ToRecords(Table.Sort(schema,"Position")), - each Serialize.Identifier(_[Name]) & " = " & _[Kind]), - "", - (seed,item) => (if seed="" then item else seed & ", " & item ) - ) & "] " ), - - _serialize_record_type = (x) => - let flds = Type.RecordFields(x) - in - if Record.FieldCount(flds)=0 then "record" else - "[" & List.Accumulate( - Record.FieldNames(flds), - "", - (seed,item) => - seed & - (if seed<>"" then ", " else "") & - (Serialize.Identifier(item) & "=" & _serialize_typename(Record.Field(flds,item)[Type]) ) - ) & - (if Type.IsOpenRecord(x) then ",..." else "") & - "]", - - _serialize_function_type = (x) => _serialize_function_param_type( - Type.FunctionParameters(x), - Type.FunctionRequiredParameters(x) ) & - " as " & - _serialize_function_return_type(x), - - _serialize_function_param_type = (t,n) => - let - funsig = Table.ToRecords( - Table.TransformColumns( - Table.AddIndexColumn( Record.ToTable( t ), "isOptional", 1 ), - { "isOptional", (x)=> x>n } ) ) - in - "(" & - List.Accumulate( - funsig, - "", - (seed,item)=> - (if seed="" then "" else seed & ", ") & - (if item[isOptional] then "optional " else "") & - Serialize.Identifier(item[Name]) & " as " & _serialize_typename(item[Value], true) ) - & ")", - - _serialize_function_return_type = (x) => _serialize_typename(Type.FunctionReturn(x), true), - - Serialize = (x) as text => - if x is binary then try Serialize.Binary(x) otherwise "null /*serialize failed*/" else - if x is date then try Serialize.Date(x) otherwise "null /*serialize failed*/" else - if x is datetime then try Serialize.Datetime(x) otherwise "null /*serialize failed*/" else - if x is datetimezone then try Serialize.Datetimezone(x) otherwise "null /*serialize failed*/" else - if x is duration then try Serialize.Duration(x) otherwise "null /*serialize failed*/" else - if x is function then try Serialize.Function(x) otherwise "null /*serialize failed*/" else - if x is list then try Serialize.List(x) otherwise "null /*serialize failed*/" else - if x is logical then try Serialize.Logical(x) otherwise "null /*serialize failed*/" else - if x is null then try Serialize.Null(x) otherwise "null /*serialize failed*/" else - if x is number then try Serialize.Number(x) otherwise "null /*serialize failed*/" else - if x is record then try Serialize.Record(x) otherwise "null /*serialize failed*/" else - if x is table then try Serialize.Table(x) otherwise "null /*serialize failed*/" else - if x is text then try Serialize.Text(x) otherwise "null /*serialize failed*/" else - if x is time then try Serialize.Time(x) otherwise "null /*serialize failed*/" else - if x is type then try Serialize.Type(x) otherwise "null /*serialize failed*/" else - "[#_unable_to_serialize_#]" - in - try Serialize(value) otherwise ""; diff --git a/bi-connectors/PowerBIConnector/src/resources.resx b/bi-connectors/PowerBIConnector/src/resources.resx deleted file mode 100644 index 3db608e458..0000000000 --- a/bi-connectors/PowerBIConnector/src/resources.resx +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Connect to OpenSearch - - - OpenSearch Project - - - OpenSearch Project - - \ No newline at end of file diff --git a/bi-connectors/TableauConnector/README.md b/bi-connectors/TableauConnector/README.md deleted file mode 100644 index 71c3d206d1..0000000000 --- a/bi-connectors/TableauConnector/README.md +++ /dev/null @@ -1,32 +0,0 @@ -## Connector Download - -The Tableau connector is available to download from the automated CI workflow: [link](https://github.com/opensearch-project/sql/actions/workflows/bi-connectors.yml). -The release snapshot is also available [here](opensearch_sql_jdbc.taco). - -## Connector Install - -1. Put connector `taco` file into - * Windows: `C:\Users\%USERNAME%\Documents\My Tableau Repository\Connectors`; - * MacOS: `~/Documents/My Tableau Repository/Connectors`. -2. Put OpenSearch `JDBC` [driver](../../sql-jdbc/README.md) (`jar` file) into - * Windows: `C:\Program Files\Tableau\Drivers`; - * MacOS: `~/Library/Tableau/Drivers`. -3. Run `Tableau Desktop` with command line flag `-DDisableVerifyConnectorPluginSignature=true`: - * Windows: `"C:\Program Files\Tableau\Tableau 2022.1\bin\tableau.exe" -DDisableVerifyConnectorPluginSignature=true`; - * MacOS: `open -n /Applications/Tableau\ Desktop\ 2022.1.app --args -DDisableVerifyConnectorPluginSignature=true`. -Adjust the command line accoring to the Tableau version you have. You can create a shortcut or a script to simplify this step. - -## TDVT report for OpenSearch JDBC Tableau connector - -Each Tableau connector has to be tested and verified using [TDVT](https://tableau.github.io/connector-plugin-sdk/docs/tdvt). - -Most recent tests of the connector were performed on OpenSearch v.1.2.0 with SQL plugin v.1.2.0. - -TDVT test results are available in [tdvt_test_results.csv](tdvt_test_results.csv). - -Test pass rate is 669/837 (80%). - -## See also - -* [Connector user manual for Tableau Desktop](tableau_support.md) -* JDBC Driver user manual [describes](../../sql-jdbc/docs/tableau.md) how to use the `JDBC` driver without the connector \ No newline at end of file diff --git a/bi-connectors/TableauConnector/img/tableau_columns_list.png b/bi-connectors/TableauConnector/img/tableau_columns_list.png deleted file mode 100644 index 967ba224cafb82045e8b7055d61d34f5ed8943ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195300 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


    |d+X^&Wx{tqeG-x0U-%AiFS`(n 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

    RgyBdPi;=8e)59I&$&u{0^@h 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 AuK)l5 diff --git a/bi-connectors/TableauConnector/img/tableau_data_preview.png b/bi-connectors/TableauConnector/img/tableau_data_preview.png deleted file mode 100644 index 6c03338f2ddfb1d46997968b23b14b9bbf650db8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274510 zcmc$`c|4Tu|2|BMr9veUg9;HzMGP{Mke$%jr3evY$-b4Xtl5)gvW$ISvyLr7mPYn{ zi?J_b>^$ey-TnRC&-Zgb&+B>q`t^F|^#-5|Sf~>_Z84NBzYE^J2Q5c)tCWvZ{6Fnr**(N7gX5&Q)|;`@6Is z_XOlbe$9RE`Pg_iq&bypaNwcp{S$8`DC-!86J<}V$eON%-oL=e=P22Dx$*Sm$#d+- z-o^@~k5iw0Z@S-E@?vSQB-dq$$AuSxUSl%q$=1>+x@mqXhfhOMv3pcq?m8yo@&Edt zOrd{T8(Za;^AZejYJD%boD#f8FHww+FgkyZ`OyndmG>?SFZ)+@>uCjaZ0D zZ9D1`*om}z^{*HA%89!X2TWc$dF-?q5NDaciE45QHc=;<=(5v~Z!hQBTne_U{?{v; zt_&6xfHDHIrSZVS8rXtLh!$LMDDtVIat`B2XRb(JQ^2!Q{7oNG!wpbWU`_FCm(#&3xG$x?HZ;-d@B@qTPtmzru*c zpM+eA0|{Gxk;Ou&ncx=H(zgG8Lo&zLpE}c%Nt&^|!#it3& zewt8S7^lz>L;sk?2dUuGP~$j4Qy0-8wNYd^H(jh9HBIfj$%z_XJ&fu^xY!xWy2$pt z@=SjIeWzc}>IM8I1QWv_d6pNZbXIJ z&lS&-WaF}>#W6w;FzEU>0U=}WNP|Pf58=Loi1yRyDZj4s2*2{%wdYvtLq+F~!I*gu zE{%T^b78~g5F}N}|J%%&eVGNvVTpzBgAV1byye6(q`}*sLC_r$?o-{$;s<+UM=XpD zXmHEHhT-jZ!OLXuFr+)XU~#J0&~exR^~pT8>(r>}zBsN&!s>$$Ys8Aa+VJXSCy~gM z7t0ZaFB#KvYlvJp34hiZmMv|`cLM%j0V}s@=GHq$8mw}=Y%NxN8IS$5ZR9j8Fvv-7 z*M=&+;30$KT9!}1FCKEx-sN)CmqOH@v-1{wCSPG8;mL*_BpRQ#WuO!K(MKALE14

    I$j?eO#QQ$EO=i};6OphGBq&*m8j-(K#6t>C9 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� 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 z

    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 S>PGH9K=QquXvw>eU;ZDzW3dGQ diff --git a/bi-connectors/TableauConnector/img/tableau_select_table.png b/bi-connectors/TableauConnector/img/tableau_select_table.png deleted file mode 100644 index 0e793473048f57a586e04d2a852eb1f96e8f15fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151028 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

    Sw~OrZFY7x@Owb@ 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 EU(Chc761SM diff --git a/bi-connectors/TableauConnector/img/tableau_table_list.png b/bi-connectors/TableauConnector/img/tableau_table_list.png deleted file mode 100644 index 104b4becddd115f2c0abcf7275cc27d8904a4bde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98838 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 bR9a)kKe$nep80>wuJdO-zppy;)BS$|l~W~* diff --git a/bi-connectors/TableauConnector/opensearch_sql_jdbc.taco b/bi-connectors/TableauConnector/opensearch_sql_jdbc.taco deleted file mode 100644 index 44dea102d67f217763847a2cb32e42cbafb6a779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6319 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 O0UGY-Wr6V5+y4O-Le;qd diff --git a/bi-connectors/TableauConnector/src/META-INF/MANIFEST.MF b/bi-connectors/TableauConnector/src/META-INF/MANIFEST.MF deleted file mode 100644 index 97a662d62c..0000000000 --- a/bi-connectors/TableauConnector/src/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Created-By: 13 (Oracle Corporation) - diff --git a/bi-connectors/TableauConnector/src/connection-fields.xml b/bi-connectors/TableauConnector/src/connection-fields.xml deleted file mode 100644 index 54f5296f7e..0000000000 --- a/bi-connectors/TableauConnector/src/connection-fields.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/bi-connectors/TableauConnector/src/connection-metadata.xml b/bi-connectors/TableauConnector/src/connection-metadata.xml deleted file mode 100644 index 1b3432c317..0000000000 --- a/bi-connectors/TableauConnector/src/connection-metadata.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/bi-connectors/TableauConnector/src/connectionBuilder.js b/bi-connectors/TableauConnector/src/connectionBuilder.js deleted file mode 100644 index 1a16fddaec..0000000000 --- a/bi-connectors/TableauConnector/src/connectionBuilder.js +++ /dev/null @@ -1,28 +0,0 @@ -(function dsbuilder(attr){ - var connStr = "jdbc:opensearch://"; - // Set SSL value in connection string - if (attr[connectionHelper.attributeSSLMode] == "require"){ - connStr += "https://"; - } else { - connStr += "http://"; - } - - // Set host information in connection string - connStr += attr[connectionHelper.attributeServer] + ":" + attr[connectionHelper.attributePort] + "?"; - - // Set authentication values in connection string - var authAttrValue = attr[connectionHelper.attributeAuthentication]; - if (authAttrValue == "auth-none"){ - connStr += "auth=NONE&trustSelfSigned=" + attr["v-trustSelfSigned"]; - } else if (authAttrValue == "auth-integrated"){ - connStr += "auth=AWS_SIGV4"; - var region = attr["v-region"]; - if (region){ - connStr += "&Region=" + region; - } - } else { //if (authAttrValue == "auth-user-pass"){ - connStr += "auth=BASIC&user=" + attr[connectionHelper.attributeUsername] + "&password=" + attr[connectionHelper.attributePassword] + "&trustSelfSigned=" + attr["v-trustSelfSigned"]; - } - - return [connStr]; -}) diff --git a/bi-connectors/TableauConnector/src/connectionResolver.tdr b/bi-connectors/TableauConnector/src/connectionResolver.tdr deleted file mode 100644 index c51adc002e..0000000000 --- a/bi-connectors/TableauConnector/src/connectionResolver.tdr +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/sql-odbc/src/TestRunner/test_exclude_list.txt b/sql-odbc/src/TestRunner/test_exclude_list.txt deleted file mode 100644 index 32a0ca2634..0000000000 --- a/sql-odbc/src/TestRunner/test_exclude_list.txt +++ /dev/null @@ -1,2 +0,0 @@ -ut_aws_sdk_cpp -itodbc_aws_auth \ No newline at end of file diff --git a/sql-odbc/src/TestRunner/test_runner.py b/sql-odbc/src/TestRunner/test_runner.py deleted file mode 100644 index ad2c4d9014..0000000000 --- a/sql-odbc/src/TestRunner/test_runner.py +++ /dev/null @@ -1,304 +0,0 @@ -import os -import subprocess -import json -import re -import traceback -import sys -import getopt -import shutil -from mako.template import Template -from string import capwords - -UT_TYPE = "UT" -IT_TYPE = "IT" -PERFORMANCE_TYPE = "performance" -PERFORMANCE_INFO = "performance_info" -PERFORMANCE_RESULTS = "performance_results" -EXCLUDE_EXTENSION_LIST = ( - ".py", ".c", ".cmake", ".log", - ".pdb", ".dll", ".sln", ".vcxproj", ".user", - ".tlog", ".lastbuildstate", ".filters", - ".obj", ".exp", ".lib", ".h", ".cpp", ".ilk") -total_failures = 0 -SYNC_START = "%%__PARSE__SYNC__START__%%" -SYNC_SEP = "%%__SEP__%%" -SYNC_END = "%%__PARSE__SYNC__END__%%" -SYNC_QUERY = "%%__QUERY__%%"; -SYNC_CASE = "%%__CASE__%%"; -SYNC_MIN = "%%__MIN__%%"; -SYNC_MAX = "%%__MAX__%%"; -SYNC_MEAN = "%%__MEAN__%%"; -SYNC_MEDIAN = "%%__MEDIAN__%%"; - -def GetTestSuiteExes(test_type, test_suites, exclude_tests_list): - test_exes = [] - for root, dirs, files in os.walk(os.getcwd()): - for name in dirs: - if name.startswith("bin"): - dirs = name - for file_name in files: - if file_name.endswith(EXCLUDE_EXTENSION_LIST): - continue - if file_name.startswith(tuple(exclude_tests_list)): - continue - if test_suites is None and file_name.startswith(test_type.lower()): - print(f"Found {test_type} file: {file_name}") - test_exes.append(os.path.join(root, file_name)) - elif test_suites is not None and file_name.startswith(test_type.lower()) and (file_name in test_suites.split(sep=",")): - print(f"Found {test_type} file: {file_name}") - test_exes.append(os.path.join(root, file_name)) - return test_exes - -def RunTests(tests, test_type): - output = [] - global total_failures - for test in tests: - print("Running " + test) - output_path = test.replace(".exe", "") + ".log" - total_failures += subprocess.call([test, "-fout", output_path, "--gtest_color=no"]) - if test_type == UT_TYPE: - with open(output_path, "r+") as f: - output.append({"UnitTest" : test.split(os.path.sep)[-1].replace(".exe",""), "Log": f.read()}) - elif test_type == IT_TYPE: - with open(output_path, "r+") as f: - output.append({"IntegrationTest" : test.split(os.path.sep)[-1].replace(".exe",""), "Log": f.read()}) - print("Total Failures :", total_failures) - return output - -def FindBetween(s, f, l): - try: - start = s.index(f) + len(f) - end = s.index(l,start) - return s[start:end] - except ValueError: - return "" - -def GetAndTranslatePerformanceInfo(test): - global total_failures - output_path = test.replace(".exe", "") + ".log" - total_failures += subprocess.call([test, "-fout", output_path, "--gtest_color=no"]) - output = None - with open(output_path, "r+") as f: - log = f.readlines() - if log == None: - raise Exception("Failed to read in performance info test results") - reading = False - output = {} - for line in log: - if SYNC_START in line: - reading = True - continue - if SYNC_END in line: - reading = False - continue - if reading: - data = line.split(SYNC_SEP) - if len(data) != 2: - raise Exception(f"Unknown log line format: {line}") - if data[0].rstrip() == "number": - data[0] = "Version Number" - else: - data[0] = capwords(data[0].rstrip().replace("_", " ")) - data[0].replace("Uuid", "UUID") - output[data[0]] = data[1] - if "Not all tests passed" in line: - raise Exception("Performance info test failed") - if output == {}: - raise Exception("Failed to get any information out of performance info log") - return output - -def GetAndTranslatePerformanceResults(test): - global total_failures - output_path = test.replace(".exe", "") + ".log" - total_failures += subprocess.call([test, "-fout", output_path, "--gtest_color=no"]) - output = None - with open(output_path, "r+") as f: - log = f.readlines() - if log == None: - raise Exception("Failed to read in performance info test results") - reading = False - output = [] - single_case = {} - sync_items_line = [SYNC_QUERY, SYNC_CASE, SYNC_MIN, SYNC_MAX, SYNC_MEAN, SYNC_MEDIAN] - sync_items_readable = [item.replace("%%","").replace("__","").capitalize() for item in sync_items_line] - for line in log: - if SYNC_START in line: - single_case = {} - reading = True - continue - if SYNC_END in line: - if set(sync_items_readable) != set(single_case.keys()): - info = f'Missing data in test case: {single_case}. Items {sync_items_readable}. Keys {single_case.keys()}' - raise Exception(info) - output.append(single_case) - reading = False - continue - if reading: - for sync_item in sync_items_line: - if sync_item in line: - single_case[sync_item.replace("%%","").replace("__","").capitalize()] = line.replace(sync_item,"").rstrip() - return output - -def ParseUnitTestCase(log_lines, test_case): - start_tag = test_case + "." - test_case_info = { "TestCase" : test_case } - tests = [] - for log_line in log_lines: - if start_tag in log_line and "RUN" in log_line: - test = log_line.split(start_tag)[1] - tests.append(test) - if "[----------] " in log_line and (test_case + " ") in log_line and log_line.endswith(" ms total)"): - test_case_info["TotalTime"] = FindBetween(log_line, "(", ")").replace(" total","") - - test_infos = [] - for test in tests: - test_tag = start_tag + test - test_info = { "TestName" : test } - for log_line in log_lines: - if test_tag in log_line and log_line.endswith(")"): - test_info["TestTime"] = FindBetween(log_line, "(", ")") - test_info["TestResult"] = FindBetween(log_line, "[", "]").replace(" ", "") - - if test_info["TestResult"] != "OK": - start_error_grab = False - error_info = "" - for log_line in log_lines: - if test_tag in log_line and not log_line.endswith(")"): - start_error_grab = True - elif test_tag in log_line and log_line.endswith(")"): - break - elif start_error_grab: - if error_info != "": - error_info += os.linesep + log_line - else: - error_info += log_line - test_info["Error"] = error_info - test_infos.append(test_info) - test_case_info["TestCount"] = str(len(test_infos)) - test_case_info["TestResults"] = test_infos - pass_count = 0 - for test_info in test_infos: - if test_info["TestResult"] == "OK": - pass_count = pass_count + 1 - test_case_info["PassCount"] = str(pass_count) - return test_case_info - -def ParseUnitTestLog(unit_test, log): - log_json = { "UnitTest" : unit_test } - log_split = log.splitlines() - if len(log) < 8: - return {} - - tmp = "" - for log in log_split: - if log.startswith("[==========] Running"): - tmp = log.replace("[==========] Running ", "").replace(" test suites.", "").replace( - " test suite.", "").replace("tests from", "").replace("test from", "") - if tmp == "": - print('!!! FAILED TO FIND LOG WITH RUNNING !!!') - log_json["TotalTestCount"] = "0" - log_json["TotalTestCases"] = "0" - else: - log_json["TotalTestCount"] = tmp.split(" ")[0] - log_json["TotalTestCases"] = tmp.split(" ")[1] - log_json["TestCases"] = [] - test_cases = [] - for _line in log_split: - tag = { } - if re.match(r".*tests? from.*", _line) and "[----------]" in _line and "total" not in _line: - test_cases.append(re.split(" tests? from ", _line)[1]) - case_pass_count = 0 - test_pass_count = 0 - for test_case in test_cases: - log_json["TestCases"].append(ParseUnitTestCase(log_split, test_case)) - for test_case in log_json["TestCases"]: - if test_case["PassCount"] == test_case["TestCount"]: - case_pass_count += 1 - test_pass_count += int(test_case["PassCount"]) - log_json["CasePassCount"] = str(case_pass_count) - log_json["TestPassCount"] = str(test_pass_count) - return log_json - -def TranslateTestOutput(test_type, outputs): - log_jsons = [] - if test_type == UT_TYPE: - for output in outputs: - log_jsons.append(ParseUnitTestLog(output["UnitTest"], output["Log"])) - elif test_type == IT_TYPE: - for output in outputs: - log_jsons.append(ParseUnitTestLog(output["IntegrationTest"], output["Log"])) - return log_jsons - -def RunAllTests(test_types, test_suites, exclude_test_list): - final_output = {} - - for _type in test_types: - tests = GetTestSuiteExes(_type, test_suites, exclude_test_list) - print("!! Found tests:", *tests, sep="\n") - if PERFORMANCE_TYPE == _type: - final_output[PERFORMANCE_TYPE] = {} - for test in tests: - if test.replace(".exe", "").endswith(PERFORMANCE_INFO): - final_output[PERFORMANCE_TYPE]["Info"] = GetAndTranslatePerformanceInfo(test) - elif test.replace(".exe", "").endswith(PERFORMANCE_RESULTS): - final_output[PERFORMANCE_TYPE]["Results"] = GetAndTranslatePerformanceResults(test) - else: - test_outputs = RunTests(tests, _type) - final_output[_type] = TranslateTestOutput(_type, test_outputs) - return final_output - -def ParseCommandLineArguments(): - infile = None - outfile = None - suites = None - efile = None - opts, args = getopt.getopt(sys.argv[1:],"i:o:s:e:",["ifile=","ofile=","suites=","efile="]) - for opt,arg in opts: - if opt in ('-i', '--ifile'): - infile = arg - elif opt in ('-s', '--suites'): - suites = arg - elif opt in ('-o', '--ofile'): - outfile = arg - elif opt in ('-e', '--efile'): - efile = arg - return (infile, outfile, suites, efile) - -def main(): - try: - (infile, outfile, suites, efile) = ParseCommandLineArguments() - if infile is None or outfile is None: - print("Usage: -i -o [-s -e ]") - sys.exit(1) - exclude_test_list = [] - global total_failures - total_failures = 0 - if efile is not None: - with open(efile) as ef: - exclude_test_list = ef.readlines() - exclude_test_list = [l.strip() for l in exclude_test_list if l.strip() != ""] - if len(exclude_test_list) == 0: - print('== Exclude list empty. Running all available tests ==') - else: - print(f'== Excluding tests {exclude_test_list} ==') - else: - print('== No exclude list. Running all available tests ==') - print(f'== Using template file {infile} ==') - template = Template(filename=infile) - - if suites is not None: - print(f'== Using suites {suites} ==') - with open(os.path.join(os.getcwd(), outfile), 'w+') as results_file: - data = RunAllTests([UT_TYPE, IT_TYPE, PERFORMANCE_TYPE], suites, exclude_test_list) - os.chmod(outfile, 0o744) - results_file.write(template.render(data = data)) - - print(f"== Finished generating results file {outfile} ==") - os._exit(total_failures) - - except: - print(traceback.format_exc()) - os._exit(255) - -if __name__ == "__main__": - main() diff --git a/sql-odbc/src/UnitTests/CMakeLists.txt b/sql-odbc/src/UnitTests/CMakeLists.txt deleted file mode 100644 index 825c0c1770..0000000000 --- a/sql-odbc/src/UnitTests/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -project(unit_tests) - -set(HELPER_UTEST "${CMAKE_CURRENT_SOURCE_DIR}/UTHelper") -set(CONN_UTEST "${CMAKE_CURRENT_SOURCE_DIR}/UTConn") -set(RABBIT_UTEST "${CMAKE_CURRENT_SOURCE_DIR}/UTRabbit") -set(CRITICALSECTION_UTEST "${CMAKE_CURRENT_SOURCE_DIR}/UTCriticalSection") -set(AWSSDKCPP_UTEST "${CMAKE_CURRENT_SOURCE_DIR}/UTAwsSdkCpp") - -# Projects to build -add_subdirectory(${HELPER_UTEST}) -add_subdirectory(${CONN_UTEST}) -add_subdirectory(${RABBIT_UTEST}) -add_subdirectory(${CRITICALSECTION_UTEST}) -add_subdirectory(${AWSSDKCPP_UTEST}) diff --git a/sql-odbc/src/UnitTests/GoogleTest.LICENSE b/sql-odbc/src/UnitTests/GoogleTest.LICENSE deleted file mode 100644 index 65c76c50ce..0000000000 --- a/sql-odbc/src/UnitTests/GoogleTest.LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Copyright 2008, Google Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/sql-odbc/src/UnitTests/UTAwsSdkCpp/CMakeLists.txt b/sql-odbc/src/UnitTests/UTAwsSdkCpp/CMakeLists.txt deleted file mode 100644 index 05f665aabf..0000000000 --- a/sql-odbc/src/UnitTests/UTAwsSdkCpp/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -project(ut_aws_sdk_cpp) - -# Source, headers, and include dirs -set(SOURCE_FILES test_aws_sdk_cpp.cpp) -include_directories( ${UT_HELPER} - ${AWSSDK_INCLUDE_DIR} - ${VLD_SRC}) - -# Generate executable -add_executable(ut_aws_sdk_cpp ${SOURCE_FILES}) - -# Find packages from vcpkg -find_package(GTest CONFIG REQUIRED) - -# Library dependencies -target_link_libraries(ut_aws_sdk_cpp ut_helper GTest::gtest_main aws-cpp-sdk-core ${VLD}) -target_compile_definitions(ut_aws_sdk_cpp PUBLIC _UNICODE UNICODE) diff --git a/sql-odbc/src/UnitTests/UTAwsSdkCpp/packages.config b/sql-odbc/src/UnitTests/UTAwsSdkCpp/packages.config deleted file mode 100644 index 3c6fe17f54..0000000000 --- a/sql-odbc/src/UnitTests/UTAwsSdkCpp/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/sql-odbc/src/UnitTests/UTAwsSdkCpp/pch.cpp b/sql-odbc/src/UnitTests/UTAwsSdkCpp/pch.cpp deleted file mode 100644 index 97b544ec11..0000000000 --- a/sql-odbc/src/UnitTests/UTAwsSdkCpp/pch.cpp +++ /dev/null @@ -1,6 +0,0 @@ -// -// pch.cpp -// Include the standard header and generate the precompiled header. -// - -#include "pch.h" diff --git a/sql-odbc/src/UnitTests/UTAwsSdkCpp/pch.h b/sql-odbc/src/UnitTests/UTAwsSdkCpp/pch.h deleted file mode 100644 index 29c81fffa1..0000000000 --- a/sql-odbc/src/UnitTests/UTAwsSdkCpp/pch.h +++ /dev/null @@ -1,8 +0,0 @@ -// -// pch.h -// Header for standard system include files. -// - -#pragma once - -#include "gtest/gtest.h" diff --git a/sql-odbc/src/UnitTests/UTAwsSdkCpp/test_aws_sdk_cpp.cpp b/sql-odbc/src/UnitTests/UTAwsSdkCpp/test_aws_sdk_cpp.cpp deleted file mode 100644 index 4952c70fc2..0000000000 --- a/sql-odbc/src/UnitTests/UTAwsSdkCpp/test_aws_sdk_cpp.cpp +++ /dev/null @@ -1,61 +0,0 @@ -// clang-format off -#include "pch.h" -#ifdef __APPLE__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunused-parameter" -#endif // __APPLE__ -#include -#include -#include -#include -#ifdef __APPLE__ -#pragma clang diagnostic pop -#endif // __APPLE__ -#include "unit_test_helper.h" - -using namespace Aws::Auth; -using namespace Aws::Client; -using namespace Aws::Http; - -static const char service_name[] = "es"; -static const char allocation_tag[] = "AWS_SIGV4_Test"; -static const char host[] = "https://search-bit-quill-cx3hpfoxvasohujxkllmgjwqde.us-west-2.es.amazonaws.com"; -static const char region[] = "us-west-2"; - -TEST(AWS_SIGV4, EnvironmentAWSCredentials) { - Aws::SDKOptions options; - EXPECT_NO_THROW(Aws::InitAPI(options)); - - auto request = CreateHttpRequest(Aws::String(host), HttpMethod::HTTP_GET, Aws::Utils::Stream::DefaultResponseStreamFactoryMethod); - - std::shared_ptr credential_provider = Aws::MakeShared(allocation_tag); - - AWSAuthV4Signer signer(credential_provider, service_name, region); - ASSERT_TRUE(signer.SignRequest(*request)); - - auto http_client = CreateHttpClient(Aws::Client::ClientConfiguration()); - - auto response = http_client->MakeRequest(request); - ASSERT_NE(response, nullptr); - EXPECT_EQ(Aws::Http::HttpResponseCode::OK, response->GetResponseCode()); - - EXPECT_NO_THROW(Aws::ShutdownAPI(options)); -} - -TEST(SettingSDKOptions, TurnLoggingOn) { - Aws::SDKOptions options; - options.loggingOptions.logLevel = Aws::Utils::Logging::LogLevel::Info; - EXPECT_NO_THROW(Aws::InitAPI(options)); - EXPECT_NO_THROW(Aws::ShutdownAPI(options)); -} - -int main(int argc, char** argv) { - testing::internal::CaptureStdout(); - ::testing::InitGoogleTest(&argc, argv); - int failures = RUN_ALL_TESTS(); - std::string output = testing::internal::GetCapturedStdout(); - std::cout << output << std::endl; - std::cout << (failures ? "Not all tests passed." : "All tests passed") << std::endl; - WriteFileIfSpecified(argv, argv + argc, "-fout", output); - return failures; -} diff --git a/sql-odbc/src/UnitTests/UTConn/CMakeLists.txt b/sql-odbc/src/UnitTests/UTConn/CMakeLists.txt deleted file mode 100644 index 0e90d8f4d6..0000000000 --- a/sql-odbc/src/UnitTests/UTConn/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -project(ut_conn) - -# Source, headers, and include dirs -set(SOURCE_FILES test_conn.cpp test_query_execution.cpp) -include_directories( ${UT_HELPER} - ${OPENSEARCHODBC_SRC} - ${RAPIDJSON_SRC} - ${RABBIT_SRC} - ${LIBCURL_SRC} - ${VLD_SRC} ) - -# Generate executable -add_executable(ut_conn ${SOURCE_FILES}) - -# Find packages from vcpkg -find_package(GTest CONFIG REQUIRED) - -# Library dependencies -target_link_libraries(ut_conn sqlodbc ut_helper GTest::gtest_main) -target_compile_definitions(ut_conn PUBLIC _UNICODE UNICODE) diff --git a/sql-odbc/src/UnitTests/UTConn/packages.config b/sql-odbc/src/UnitTests/UTConn/packages.config deleted file mode 100644 index 3c6fe17f54..0000000000 --- a/sql-odbc/src/UnitTests/UTConn/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/sql-odbc/src/UnitTests/UTConn/pch.cpp b/sql-odbc/src/UnitTests/UTConn/pch.cpp deleted file mode 100644 index 97b544ec11..0000000000 --- a/sql-odbc/src/UnitTests/UTConn/pch.cpp +++ /dev/null @@ -1,6 +0,0 @@ -// -// pch.cpp -// Include the standard header and generate the precompiled header. -// - -#include "pch.h" diff --git a/sql-odbc/src/UnitTests/UTConn/pch.h b/sql-odbc/src/UnitTests/UTConn/pch.h deleted file mode 100644 index 29c81fffa1..0000000000 --- a/sql-odbc/src/UnitTests/UTConn/pch.h +++ /dev/null @@ -1,8 +0,0 @@ -// -// pch.h -// Header for standard system include files. -// - -#pragma once - -#include "gtest/gtest.h" diff --git a/sql-odbc/src/UnitTests/UTConn/test_conn.cpp b/sql-odbc/src/UnitTests/UTConn/test_conn.cpp deleted file mode 100644 index a93962a0f7..0000000000 --- a/sql-odbc/src/UnitTests/UTConn/test_conn.cpp +++ /dev/null @@ -1,128 +0,0 @@ -// clang-format off -#include "pch.h" -#include "unit_test_helper.h" -#include "opensearch_communication.h" -// clang-format on - -const size_t valid_option_count = 4; -const size_t invalid_option_count = 4; -const size_t missing_option_count = 3; -const std::string valid_host = (use_ssl ? "https://localhost" : "localhost"); -const std::string valid_port = "9200"; -const std::string valid_user = "admin"; -const std::string valid_pw = "admin"; -const std::string valid_region = "us-west-3"; -const std::string invalid_host = "10.1.1.189"; -const std::string invalid_port = "920"; -const std::string invalid_user = "amin"; -const std::string invalid_pw = "amin"; -const std::string invalid_region = "bad-region"; -runtime_options valid_opt_val = {{valid_host, valid_port, "1", "0"}, - {"BASIC", valid_user, valid_pw, valid_region}, - {use_ssl, false, "", "", "", ""}}; -runtime_options invalid_opt_val = { - {invalid_host, invalid_port, "1", "0"}, - {"BASIC", invalid_user, invalid_pw, valid_region}, - {use_ssl, false, "", "", "", ""}}; -runtime_options missing_opt_val = {{"", "", "1", "0"}, - {"BASIC", "", invalid_pw, valid_region}, - {use_ssl, false, "", "", "", ""}}; - -TEST(TestOpenSearchConnConnectionOptions, ValidParameters) { - OpenSearchCommunication conn; - EXPECT_EQ(true, - conn.ConnectionOptions(valid_opt_val, 1, 1, valid_option_count)); -} - -TEST(TestOpenSearchConnConnectionOptions, MissingParameters) { - OpenSearchCommunication conn; - EXPECT_EQ(false, conn.ConnectionOptions(missing_opt_val, 1, 1, - missing_option_count)); -} - -class TestOpenSearchConnConnectDBStart : public testing::Test { - public: - TestOpenSearchConnConnectDBStart() { - } - - void SetUp() { - } - - void TearDown() { - m_conn.DropDBConnection(); - } - - ~TestOpenSearchConnConnectDBStart() { - // cleanup any pending stuff, but no exceptions allowed - } - - OpenSearchCommunication m_conn; -}; - -TEST_F(TestOpenSearchConnConnectDBStart, ValidParameters) { - ASSERT_NE(false, m_conn.ConnectionOptions(valid_opt_val, 1, 1, - valid_option_count)); - EXPECT_EQ(true, m_conn.ConnectDBStart()); - EXPECT_EQ(CONNECTION_OK, m_conn.GetConnectionStatus()); -} - -TEST_F(TestOpenSearchConnConnectDBStart, InvalidParameters) { - ASSERT_TRUE( - m_conn.ConnectionOptions(invalid_opt_val, 1, 1, invalid_option_count)); - EXPECT_EQ(false, m_conn.ConnectDBStart()); - EXPECT_EQ(CONNECTION_BAD, m_conn.GetConnectionStatus()); -} - -TEST_F(TestOpenSearchConnConnectDBStart, MissingParameters) { - ASSERT_NE(true, m_conn.ConnectionOptions(missing_opt_val, 1, 1, - missing_option_count)); - EXPECT_EQ(false, m_conn.ConnectDBStart()); - EXPECT_EQ(CONNECTION_BAD, m_conn.GetConnectionStatus()); -} - -TEST(TestOpenSearchConnDropDBConnection, InvalidParameters) { - OpenSearchCommunication conn; - ASSERT_EQ(CONNECTION_BAD, conn.GetConnectionStatus()); - ASSERT_TRUE( - conn.ConnectionOptions(invalid_opt_val, 1, 1, invalid_option_count)); - ASSERT_NE(true, conn.ConnectDBStart()); - ASSERT_EQ(CONNECTION_BAD, conn.GetConnectionStatus()); - conn.DropDBConnection(); - EXPECT_EQ(CONNECTION_BAD, conn.GetConnectionStatus()); -} - -TEST(TestOpenSearchConnDropDBConnection, MissingParameters) { - OpenSearchCommunication conn; - ASSERT_EQ(CONNECTION_BAD, conn.GetConnectionStatus()); - ASSERT_NE(true, conn.ConnectionOptions(missing_opt_val, 1, 1, - missing_option_count)); - ASSERT_NE(true, conn.ConnectDBStart()); - ASSERT_EQ(CONNECTION_BAD, conn.GetConnectionStatus()); - conn.DropDBConnection(); - EXPECT_EQ(CONNECTION_BAD, conn.GetConnectionStatus()); -} - -TEST(TestOpenSearchConnDropDBConnection, ValidParameters) { - OpenSearchCommunication conn; - ASSERT_NE(false, - conn.ConnectionOptions(valid_opt_val, 1, 1, valid_option_count)); - ASSERT_NE(false, conn.ConnectDBStart()); - ASSERT_EQ(CONNECTION_OK, conn.GetConnectionStatus()); - conn.DropDBConnection(); - EXPECT_EQ(CONNECTION_BAD, conn.GetConnectionStatus()); -} - -int main(int argc, char** argv) { - testing::internal::CaptureStdout(); - ::testing::InitGoogleTest(&argc, argv); - - int failures = RUN_ALL_TESTS(); - - std::string output = testing::internal::GetCapturedStdout(); - std::cout << output << std::endl; - std::cout << (failures ? "Not all tests passed." : "All tests passed") - << std::endl; - WriteFileIfSpecified(argv, argv + argc, "-fout", output); - - return failures; -} diff --git a/sql-odbc/src/UnitTests/UTConn/test_query_execution.cpp b/sql-odbc/src/UnitTests/UTConn/test_query_execution.cpp deleted file mode 100644 index f3899123dd..0000000000 --- a/sql-odbc/src/UnitTests/UTConn/test_query_execution.cpp +++ /dev/null @@ -1,115 +0,0 @@ -// clang-format off -#include "pch.h" -#include "unit_test_helper.h" -#include "opensearch_communication.h" -#include "opensearch_helper.h" -// clang-format on - -const std::string valid_host = (use_ssl ? "https://localhost" : "localhost"); -const std::string valid_port = "9200"; -const std::string valid_user = "admin"; -const std::string valid_pw = "admin"; -const std::string valid_region = "us-west-3"; -const std::string query = - "SELECT Origin FROM opensearch_dashboards_sample_data_flights LIMIT 5"; -const std::string all_columns_flights_query = - "SELECT * FROM opensearch_dashboards_sample_data_flights LIMIT 5"; -const std::string some_columns_flights_query = - "SELECT Origin, OriginWeather FROM opensearch_dashboards_sample_data_flights LIMIT 5"; -const std::string invalid_query = "SELECT"; -const int EXECUTION_SUCCESS = 0; -const int EXECUTION_ERROR = -1; -const std::string fetch_size = "0"; -const int all_columns_flights_count = 25; -const int some_columns_flights_count = 2; -runtime_options valid_conn_opt_val = { - {valid_host, valid_port, "1", "0"}, - {"BASIC", valid_user, valid_pw, valid_region}, - {use_ssl, false, "", "", "", ""}}; - -TEST(TestOpenSearchExecDirect, ValidQuery) { - OpenSearchCommunication conn; - ASSERT_TRUE(conn.ConnectionOptions(valid_conn_opt_val, false, 0, 0)); - ASSERT_TRUE(conn.ConnectDBStart()); - EXPECT_EQ(EXECUTION_SUCCESS, - OpenSearchExecDirect(&conn, some_columns_flights_query.c_str(), fetch_size.c_str())); -} - -TEST(TestOpenSearchExecDirect, MissingQuery) { - OpenSearchCommunication conn; - ASSERT_TRUE(conn.ConnectionOptions(valid_conn_opt_val, false, 0, 0)); - ASSERT_TRUE(conn.ConnectDBStart()); - EXPECT_EQ(EXECUTION_ERROR, - OpenSearchExecDirect(&conn, NULL, fetch_size.c_str())); -} - -TEST(TestOpenSearchExecDirect, MissingConnection) { - EXPECT_EQ(EXECUTION_ERROR, - OpenSearchExecDirect(NULL, query.c_str(), fetch_size.c_str())); -} - -// Conn::ExecDirect - -TEST(TestConnExecDirect, ValidQueryAllColumns) { - OpenSearchCommunication conn; - ASSERT_TRUE(conn.ConnectionOptions(valid_conn_opt_val, false, 0, 0)); - ASSERT_TRUE(conn.ConnectDBStart()); - - conn.ExecDirect(all_columns_flights_query.c_str(), fetch_size.c_str()); - OpenSearchResult* result = conn.PopResult(); - EXPECT_EQ("SELECT", result->command_type); - EXPECT_FALSE(result->result_json.empty()); - EXPECT_EQ(all_columns_flights_count, result->num_fields); - EXPECT_EQ((size_t)all_columns_flights_count, result->column_info.size()); -} - -TEST(TestConnExecDirect, ValidQuerySomeColumns) { - OpenSearchCommunication conn; - ASSERT_TRUE(conn.ConnectionOptions(valid_conn_opt_val, false, 0, 0)); - ASSERT_TRUE(conn.ConnectDBStart()); - - conn.ExecDirect(some_columns_flights_query.c_str(), fetch_size.c_str()); - OpenSearchResult* result = conn.PopResult(); - EXPECT_EQ("SELECT", result->command_type); - EXPECT_FALSE(result->result_json.empty()); - EXPECT_EQ(some_columns_flights_count, result->num_fields); - EXPECT_EQ((size_t)some_columns_flights_count, result->column_info.size()); -} - -TEST(TestConnExecDirect, InvalidQuery) { - OpenSearchCommunication conn; - ASSERT_TRUE(conn.ConnectionOptions(valid_conn_opt_val, false, 0, 0)); - ASSERT_TRUE(conn.ConnectDBStart()); - - conn.ExecDirect(invalid_query.c_str(), fetch_size.c_str()); - OpenSearchResult* result = conn.PopResult(); - EXPECT_EQ(NULL, (void*)result); -} - -// Conn::PopResult - -TEST(TestConnPopResult, PopEmptyQueue) { - OpenSearchCommunication conn; - ASSERT_TRUE(conn.ConnectionOptions(valid_conn_opt_val, false, 0, 0)); - ASSERT_TRUE(conn.ConnectDBStart()); - - OpenSearchResult* result = conn.PopResult(); - EXPECT_EQ(NULL, (void*)result); -} - -TEST(TestConnPopResult, PopTwoQueryResults) { - OpenSearchCommunication conn; - ASSERT_TRUE(conn.ConnectionOptions(valid_conn_opt_val, false, 0, 0)); - ASSERT_TRUE(conn.ConnectDBStart()); - - conn.ExecDirect(some_columns_flights_query.c_str(), fetch_size.c_str()); - conn.ExecDirect(all_columns_flights_query.c_str(), fetch_size.c_str()); - - // Pop some_columns - OpenSearchResult* result = conn.PopResult(); - EXPECT_EQ(some_columns_flights_count, result->num_fields); - - // Pop all_columns - result = conn.PopResult(); - EXPECT_EQ(all_columns_flights_count, result->num_fields); -} diff --git a/sql-odbc/src/UnitTests/UTCriticalSection/CMakeLists.txt b/sql-odbc/src/UnitTests/UTCriticalSection/CMakeLists.txt deleted file mode 100644 index e806ef9f4b..0000000000 --- a/sql-odbc/src/UnitTests/UTCriticalSection/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -project(ut_critical_section) - -# Source, headers, and include dirs -set(SOURCE_FILES test_critical_section.cpp) -include_directories( ${UT_HELPER} - ${OPENSEARCHODBC_SRC} - ${RAPIDJSON_SRC} - ${VLD_SRC} - ${RABBIT_SRC} ) - -# Generate executable -add_executable(ut_critical_section ${SOURCE_FILES}) - -# Find packages from vcpkg -find_package(GTest CONFIG REQUIRED) - -# Library dependencies -target_link_libraries(ut_critical_section sqlodbc ut_helper GTest::gtest_main) -target_compile_definitions(ut_critical_section PUBLIC _UNICODE UNICODE) diff --git a/sql-odbc/src/UnitTests/UTCriticalSection/packages.config b/sql-odbc/src/UnitTests/UTCriticalSection/packages.config deleted file mode 100644 index 3c6fe17f54..0000000000 --- a/sql-odbc/src/UnitTests/UTCriticalSection/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/sql-odbc/src/UnitTests/UTCriticalSection/pch.cpp b/sql-odbc/src/UnitTests/UTCriticalSection/pch.cpp deleted file mode 100644 index 97b544ec11..0000000000 --- a/sql-odbc/src/UnitTests/UTCriticalSection/pch.cpp +++ /dev/null @@ -1,6 +0,0 @@ -// -// pch.cpp -// Include the standard header and generate the precompiled header. -// - -#include "pch.h" diff --git a/sql-odbc/src/UnitTests/UTCriticalSection/pch.h b/sql-odbc/src/UnitTests/UTCriticalSection/pch.h deleted file mode 100644 index 29c81fffa1..0000000000 --- a/sql-odbc/src/UnitTests/UTCriticalSection/pch.h +++ /dev/null @@ -1,8 +0,0 @@ -// -// pch.h -// Header for standard system include files. -// - -#pragma once - -#include "gtest/gtest.h" diff --git a/sql-odbc/src/UnitTests/UTCriticalSection/test_critical_section.cpp b/sql-odbc/src/UnitTests/UTCriticalSection/test_critical_section.cpp deleted file mode 100644 index 31a3f7ea2b..0000000000 --- a/sql-odbc/src/UnitTests/UTCriticalSection/test_critical_section.cpp +++ /dev/null @@ -1,136 +0,0 @@ -#include - -#include -#include -#include - -#include "opensearch_helper.h" -#include "pch.h" -#include "unit_test_helper.h" - -const size_t loop_count = 10; -const size_t thread_count = 1000; - -#define INIT_CS(x) XPlatformInitializeCriticalSection(&(x)) -#define ENTER_CS(x) XPlatformEnterCriticalSection((x)) -#define LEAVE_CS(x) XPlatformLeaveCriticalSection((x)) -#define DELETE_CS(x) XPlatformDeleteCriticalSection(&(x)) - -class TestCriticalSection : public testing::Test { - public: - TestCriticalSection() : m_lock(NULL) { - } - - void SetUp() { - INIT_CS(m_lock); - } - - void TearDown() { - DELETE_CS(m_lock); - } - - ~TestCriticalSection() { - } - void* m_lock; - - typedef struct CriticalInfo { - volatile size_t* shared_mem; - void* lock; - } CriticalInfo; -}; - -TEST_F(TestCriticalSection, SingleEnterExit) { - ENTER_CS(m_lock); - LEAVE_CS(m_lock); -} - -TEST_F(TestCriticalSection, MultipleEntersMultipleExits) { - for (size_t i = 0; i < loop_count; i++) - ENTER_CS(m_lock); - for (size_t i = 0; i < loop_count; i++) - LEAVE_CS(m_lock); -} - -TEST_F(TestCriticalSection, MultipleEnterExit) { - for (size_t i = 0; i < loop_count; i++) { - ENTER_CS(m_lock); - LEAVE_CS(m_lock); - } -} - -TEST_F(TestCriticalSection, MultiThreadSingleLock) { - auto f = [](CriticalInfo* info) { - *info->shared_mem = static_cast< size_t >(1); - ENTER_CS(info->lock); - *info->shared_mem = static_cast< size_t >(2); - LEAVE_CS(info->lock); - }; - - volatile size_t shared_mem = 0; - CriticalInfo crit_info; - crit_info.shared_mem = &shared_mem; - crit_info.lock = m_lock; - - ENTER_CS(m_lock); - std::thread thread_object(f, &crit_info); -#ifdef WIN32 - Sleep(1000); -#else - usleep(1000 * 1000); -#endif - EXPECT_EQ(shared_mem, static_cast< size_t >(1)); - LEAVE_CS(m_lock); -#ifdef WIN32 - Sleep(1000); -#else - usleep(1000 * 1000); -#endif - EXPECT_EQ(shared_mem, static_cast< size_t >(2)); - thread_object.join(); -} - -// Make many threads to see if multiple simultaneous attempts at locking cause -// any issues -TEST_F(TestCriticalSection, RaceConditions) { - auto f = [](CriticalInfo* info) { - std::stringstream ss_thread_id; - ss_thread_id << std::this_thread::get_id(); - size_t thread_id = static_cast< size_t >( - strtoull(ss_thread_id.str().c_str(), NULL, 10)); - ENTER_CS(info->lock); - // Update shared memory, release thread priority, then check if memory - // is still the same - *info->shared_mem = static_cast< size_t >(thread_id); -#ifdef WIN32 - Sleep(0); -#else - usleep(0); -#endif - EXPECT_EQ(thread_id, *info->shared_mem); - LEAVE_CS(info->lock); - }; - - volatile size_t shared_mem = 0; - CriticalInfo crit_info; - crit_info.shared_mem = &shared_mem; - crit_info.lock = m_lock; - std::vector< std::thread > threads; - threads.reserve(thread_count); - - for (size_t i = 0; i < thread_count; i++) - threads.emplace_back(std::thread(f, &crit_info)); - - for (auto& it : threads) - it.join(); -} - -int main(int argc, char** argv) { - testing::internal::CaptureStdout(); - ::testing::InitGoogleTest(&argc, argv); - int failures = RUN_ALL_TESTS(); - std::string output = testing::internal::GetCapturedStdout(); - std::cout << output << std::endl; - std::cout << (failures ? "Not all tests passed." : "All tests passed") - << std::endl; - WriteFileIfSpecified(argv, argv + argc, "-fout", output); -} diff --git a/sql-odbc/src/UnitTests/UTHelper/CMakeLists.txt b/sql-odbc/src/UnitTests/UTHelper/CMakeLists.txt deleted file mode 100644 index 1bfad42485..0000000000 --- a/sql-odbc/src/UnitTests/UTHelper/CMakeLists.txt +++ /dev/null @@ -1,30 +0,0 @@ -project(ut_helper) - -# Source, headers, and include dirs -set(SOURCE_FILES unit_test_helper.cpp) -set(HEADER_FILES unit_test_helper.h) -include_directories(${OPENSEARCHODBC_SRC} ${VLD_SRC}) - -# Generate dll (SHARED) -add_library(ut_helper SHARED ${SOURCE_FILES} ${HEADER_FILES}) - -if (WIN32 AND BITNESS EQUAL 64) -find_library( VLD - vld - HINTS "${LIBRARY_DIRECTORY}/VisualLeakDetector/lib64" - ) -target_link_libraries(ut_helper ${VLD}) -elseif (WIN32 AND BITNESS EQUAL 32) -find_library( VLD - vld - HINTS "${LIBRARY_DIRECTORY}/VisualLeakDetector/lib" - ) -target_link_libraries(ut_helper ${VLD}) -endif() - -# Find packages from vcpkg -find_package(GTest CONFIG REQUIRED) - -# Library dependencies -target_link_libraries(ut_helper sqlodbc GTest::gtest_main) -target_compile_definitions(ut_helper PUBLIC _UNICODE UNICODE) diff --git a/sql-odbc/src/UnitTests/UTHelper/unit_test_helper.cpp b/sql-odbc/src/UnitTests/UTHelper/unit_test_helper.cpp deleted file mode 100644 index 9f8fbd7508..0000000000 --- a/sql-odbc/src/UnitTests/UTHelper/unit_test_helper.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "unit_test_helper.h" - -#include -#include - -void WriteFileIfSpecified(char** begin, char** end, const std::string& option, - std::string& output) { - char** itr = std::find(begin, end, option); - if (itr != end && ++itr != end) { - std::ofstream out_file(*itr); - if (out_file.good()) - out_file << output; - } - return; -} diff --git a/sql-odbc/src/UnitTests/UTHelper/unit_test_helper.h b/sql-odbc/src/UnitTests/UTHelper/unit_test_helper.h deleted file mode 100644 index fcdbfa95b2..0000000000 --- a/sql-odbc/src/UnitTests/UTHelper/unit_test_helper.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef UNIT_TEST_HELPER -#define UNIT_TEST_HELPER - -#if defined(WIN32) || defined (WIN64) -#ifdef _DEBUG -#define VLD_FORCE_ENABLE 1 -#include -#endif -#endif - -#include -#ifdef USE_SSL -const bool use_ssl = true; -#else -const bool use_ssl = false; -#endif - -void WriteFileIfSpecified(char** begin, char** end, const std::string& option, - std::string& output); - -#endif diff --git a/sql-odbc/src/UnitTests/UTRabbit/CMakeLists.txt b/sql-odbc/src/UnitTests/UTRabbit/CMakeLists.txt deleted file mode 100644 index b5f638fe01..0000000000 --- a/sql-odbc/src/UnitTests/UTRabbit/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -project(ut_rabbit) - -# Source, headers, and include dirs -set(SOURCE_FILES test_rabbit.cpp) -include_directories( ${UT_HELPER} - ${RAPIDJSON_SRC} - ${RABBIT_SRC} - ${VLD_SRC} ) - -# Generate executable -add_executable(ut_rabbit ${SOURCE_FILES}) - -# Find packages from vcpkg -find_package(GTest CONFIG REQUIRED) - -target_link_libraries(ut_rabbit ut_helper GTest::gtest_main ${VLD}) -target_compile_definitions(ut_rabbit PUBLIC _UNICODE UNICODE) diff --git a/sql-odbc/src/UnitTests/UTRabbit/packages.config b/sql-odbc/src/UnitTests/UTRabbit/packages.config deleted file mode 100644 index 3c6fe17f54..0000000000 --- a/sql-odbc/src/UnitTests/UTRabbit/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/sql-odbc/src/UnitTests/UTRabbit/pch.cpp b/sql-odbc/src/UnitTests/UTRabbit/pch.cpp deleted file mode 100644 index 97b544ec11..0000000000 --- a/sql-odbc/src/UnitTests/UTRabbit/pch.cpp +++ /dev/null @@ -1,6 +0,0 @@ -// -// pch.cpp -// Include the standard header and generate the precompiled header. -// - -#include "pch.h" diff --git a/sql-odbc/src/UnitTests/UTRabbit/pch.h b/sql-odbc/src/UnitTests/UTRabbit/pch.h deleted file mode 100644 index 29c81fffa1..0000000000 --- a/sql-odbc/src/UnitTests/UTRabbit/pch.h +++ /dev/null @@ -1,8 +0,0 @@ -// -// pch.h -// Header for standard system include files. -// - -#pragma once - -#include "gtest/gtest.h" diff --git a/sql-odbc/src/UnitTests/UTRabbit/test_rabbit.cpp b/sql-odbc/src/UnitTests/UTRabbit/test_rabbit.cpp deleted file mode 100644 index 84f53605a7..0000000000 --- a/sql-odbc/src/UnitTests/UTRabbit/test_rabbit.cpp +++ /dev/null @@ -1,268 +0,0 @@ -// clang-format off -#include "pch.h" -#ifdef __APPLE__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunused-parameter" -#endif // __APPLE__ -#include "rabbit.hpp" -#ifdef __APPLE__ -#pragma clang diagnostic pop -#endif // __APPLE__ -#include "unit_test_helper.h" - -const std::string invalid_json_schema = "{ invalid schema }"; -const std::string valid_json_schema = "{" // This was generated from the example OpenSearch data - "\"type\": \"object\"," - "\"properties\": {" - "\"schema\": {" - "\"type\": \"array\"," - "\"items\": [{" - "\"type\": \"object\"," - "\"properties\": {" - "\"name\": { \"type\": \"string\" }," - "\"type\": { \"type\": \"string\" }" - "}," - "\"required\": [ \"name\", \"type\" ]" - "}]" - "}," - "\"total\": { \"type\": \"integer\" }," - "\"datarows\": {" - "\"type\": \"array\"," - "\"items\": {}" - "}," - "\"size\": { \"type\": \"integer\" }," - "\"status\": { \"type\": \"integer\" }" - "}," - "\"required\": [\"schema\", \"total\", \"datarows\", \"size\", \"status\"]" -"}"; -const std::string valid_json_for_schema = "{" // This was taken from the example OpenSearch data - "\"schema\": [{" - "\"name\": \"valid_name1\"," - "\"type\": \"valid_type1\"},{" - "\"name\": \"valid_name2\"," - "\"type\": \"valid_type2\"},{" - "\"name\": \"valid_name3\"," - "\"type\": \"valid_type3\"}]," - "\"total\": 10," - "\"datarows\": []," - "\"size\": 3," - "\"status\": 200" -"}"; -const std::string invalid_json_for_schema = "{" - "\"schema\": [{" - "\"name\": 1," - "\"type\": \"valid_type1\"},{" - "\"name\": 2," - "\"type\": \"valid_type2\"},{" - "\"name\": 3," - "\"type\": \"valid_type3\"}]," - "\"total\": \"10\"," - "\"datarows\": {}," - "\"size\": \"string_size\"," - "\"status\": 200" -"}"; -const std::string invalid_json = "invalid json"; -const std::string valid_json_int = "{ \"value\" : 123 }"; -const std::string invalid_json_int = "{ \"value\" : invalid }"; -const std::string valid_json_str = "{ \"value\" : \"123\"}"; -const std::string invalid_json_str = "{ \"value\" : \"123}"; -const std::string valid_json_arr = "{ \"value\" : [ 1, \"2\", true] }"; -const std::string invalid_json_arr = "{ \"value\" : [ 1, 2 3] }"; -const std::string valid_json_obj = "{" - "\"value\" : {" - "\"subval_str\" : \"1\"," - "\"subval_int\" : 2," - "\"subval_bool\" : true," - "\"subval_flt\" : 3.4" - "}" -"}"; -const std::string invalid_json_obj = "{" - "\"value\" : {" - "\"subval_str\" : \"1\"" - "\"subval_int\" : 2," - "\"subval_bool\" : true," - "\"subval_flt\" : 3.4" - "}" -"}"; -// Intentionally serialized because it will be compared to a str parsed by rabbit, which is serialized by default -const std::string valid_sub_obj_for_conversion = "{\"subval_obj\":{\"subval_str\":\"1\",\"subval_int\":2,\"subval_bool\":true,\"subval_flt\":3.4}}"; -const std::string valid_obj_for_conversion = "{ \"value\" : " + valid_sub_obj_for_conversion + "}"; -// clang-format on - -const std::vector< size_t > distances = {0, 1, 5, 30}; - -TEST(StandardDistance, ValidIterator) { - rabbit::array arr; - for (size_t i = 0; i < distances.size(); i++) { - rabbit::array sub_array; - for (size_t j = 0; j < distances[i]; j++) { - sub_array.push_back(static_cast< uint64_t >(j)); - } - arr.push_back(sub_array); - } - - ASSERT_EQ(static_cast< size_t >(std::distance(arr.begin(), arr.end())), - distances.size()); - size_t i = 0; - for (auto it = arr.begin(); it < arr.end(); it++, i++) { - EXPECT_EQ(static_cast< size_t >( - std::distance(it->value_begin(), it->value_end())), - distances[i]); - } -} - -TEST(ConvertObjectToString, IteratorAtStringConvert) { - rabbit::document doc; - ASSERT_NO_THROW(doc.parse(valid_json_for_schema)); - rabbit::array arr; - ASSERT_NO_THROW(arr = doc["schema"]); - size_t i = 1; - std::string valid_name = "valid_name"; - std::string valid_type = "valid_type"; - for (auto it = arr.begin(); it < arr.end(); ++it, ++i) { - std::string name, type; - ASSERT_NO_THROW(name = it->at("name").as_string()); - ASSERT_NO_THROW(type = it->at("type").as_string()); - EXPECT_EQ(name, valid_name + std::to_string(i)); - EXPECT_EQ(type, valid_type + std::to_string(i)); - } -} - -TEST(ConvertObjectToString, ValidObject) { - rabbit::document doc; - EXPECT_NO_THROW(doc.parse(valid_obj_for_conversion)); - ASSERT_TRUE(doc.is_object()); - ASSERT_TRUE(doc.has("value")); - ASSERT_TRUE(doc["value"].is_object()); - std::string value_str = doc["value"].str(); - EXPECT_EQ(value_str, valid_sub_obj_for_conversion); -} - -TEST(ParseSchema, ValidSchemaValidDoc) { - rabbit::document doc; - EXPECT_NO_THROW(doc.parse(valid_json_for_schema, valid_json_schema)); -} - -TEST(ParseSchema, InvalidSchemaValidDoc) { - rabbit::document doc; - EXPECT_THROW(doc.parse(valid_json_for_schema, invalid_json_schema), - rabbit::parse_error); -} - -TEST(ParseSchema, ValidSchemaInvalidDoc) { - rabbit::document doc; - EXPECT_THROW(doc.parse(invalid_json_for_schema, valid_json_schema), - rabbit::parse_error); -} - -TEST(ParseSchema, InvalidSchemaInvalidDoc) { - rabbit::document doc; - EXPECT_THROW(doc.parse(invalid_json, invalid_json_schema), - rabbit::parse_error); -} - -TEST(ParseObj, ValidObj) { - rabbit::document doc; - EXPECT_NO_THROW(doc.parse(valid_json_obj)); - ASSERT_TRUE(doc.is_object()); - ASSERT_TRUE(doc.has("value")); - ASSERT_TRUE(doc["value"].is_object()); - ASSERT_TRUE(doc["value"].has("subval_str")); - ASSERT_TRUE(doc["value"].has("subval_int")); - ASSERT_TRUE(doc["value"].has("subval_bool")); - ASSERT_TRUE(doc["value"].has("subval_flt")); - ASSERT_TRUE(doc["value"]["subval_str"].is_string()); - ASSERT_TRUE(doc["value"]["subval_int"].is_int()); - ASSERT_TRUE(doc["value"]["subval_bool"].is_bool()); - ASSERT_TRUE(doc["value"]["subval_flt"].is_number()); - EXPECT_EQ("1", doc["value"]["subval_str"].as_string()); - EXPECT_EQ(2, doc["value"]["subval_int"].as_int()); - EXPECT_EQ(true, doc["value"]["subval_bool"].as_bool()); - EXPECT_EQ(3.4, doc["value"]["subval_flt"].as_double()); -} - -TEST(ParseObj, InvalidObj) { - rabbit::document doc; - EXPECT_THROW(doc.parse(invalid_json_obj), rabbit::parse_error); -} - -TEST(ParseArr, ValidArr) { - rabbit::document doc; - ASSERT_NO_THROW(doc.parse(valid_json_arr)); - ASSERT_TRUE(doc.is_object()); - ASSERT_TRUE(doc.has("value")); - ASSERT_TRUE(doc["value"].is_array()); - - rabbit::array arr; - ASSERT_NO_THROW(arr = doc["value"]); - size_t i = 0; - for (rabbit::array::iterator it = arr.begin(); it != arr.end(); ++it, ++i) { - switch (i) { - case 0: - ASSERT_TRUE(it->is_int()); - EXPECT_EQ(1, it->as_int()); - break; - case 1: - ASSERT_TRUE(it->is_string()); - EXPECT_EQ("2", it->as_string()); - break; - case 2: - ASSERT_TRUE(it->is_bool()); - EXPECT_EQ(true, it->as_bool()); - break; - default: - FAIL() << "Array iterator exceeded bounds"; - return; - } - } -} -TEST(ParseArr, InvalidArr) { - rabbit::document doc; - EXPECT_THROW(doc.parse(invalid_json_arr), rabbit::parse_error); -} - -TEST(ParseStr, ValidStr) { - rabbit::document doc; - ASSERT_NO_THROW(doc.parse(valid_json_str)); - ASSERT_TRUE(doc.is_object()); - ASSERT_TRUE(doc.has("value")); - ASSERT_TRUE(doc["value"].is_string()); - EXPECT_EQ("123", doc["value"].as_string()); -} - -TEST(ParseStr, InvalidStr) { - rabbit::document doc; - EXPECT_THROW(doc.parse(invalid_json_str), rabbit::parse_error); -} - -TEST(ParseInt, ValidInt) { - rabbit::document doc; - ASSERT_NO_THROW(doc.parse(valid_json_int)); - ASSERT_TRUE(doc.is_object()); - ASSERT_TRUE(doc.has("value")); - ASSERT_TRUE(doc["value"].is_int()); - EXPECT_EQ(123, doc["value"].as_int()); -} - -TEST(ParseInt, InvalidInt) { - rabbit::document doc; - EXPECT_THROW(doc.parse(invalid_json_int), rabbit::parse_error); -} - -TEST(Parse, InvalidJson) { - rabbit::document doc; - EXPECT_THROW(doc.parse(invalid_json), rabbit::parse_error); -} - -int main(int argc, char** argv) { - testing::internal::CaptureStdout(); - ::testing::InitGoogleTest(&argc, argv); - int failures = RUN_ALL_TESTS(); - std::string output = testing::internal::GetCapturedStdout(); - std::cout << output << std::endl; - std::cout << (failures ? "Not all tests passed." : "All tests passed") - << std::endl; - WriteFileIfSpecified(argv, argv + argc, "-fout", output); - - return failures; -} diff --git a/sql-odbc/src/autoconf.h.in b/sql-odbc/src/autoconf.h.in deleted file mode 100644 index 5abb4109e0..0000000000 --- a/sql-odbc/src/autoconf.h.in +++ /dev/null @@ -1,2 +0,0 @@ -#cmakedefine AUTOCONF_ENABLE -#cmakedefine AUTOCONF_STRING "@AUTOCONF_STRING@" diff --git a/sql-odbc/src/installer/CMakeLists.txt b/sql-odbc/src/installer/CMakeLists.txt deleted file mode 100644 index d172b91ac0..0000000000 --- a/sql-odbc/src/installer/CMakeLists.txt +++ /dev/null @@ -1,93 +0,0 @@ -include(InstallRequiredSystemLibraries) -include(CPackComponent) - -set(CMAKE_INSTALL_PREFIX ${INSTALL_ROOT}) - -# General package info -set(CPACK_PACKAGE_NAME "OpenSearch SQL ODBC Driver ${BITNESS}-bit") -set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenSearch SQL ODBC Driver ${BITNESS}-bit") -set(CPACK_PACKAGE_VENDOR "Amazon") -set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}") -set(CPACK_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}") -set(CPACK_PACKAGE_VERSION "${DRIVER_PACKAGE_VERSION}") - -# OS-specific package info -if(WIN32) - # Set generator to WIX - set(CPACK_GENERATOR "WIX") - - # This is a unique id for the installer - required for Windows - # Generated at https://www.guidgen.com/ - set(CPACK_WIX_UPGRADE_GUID "2D325BD7-1176-40E8-8AB8-C52DD2F7B792") - - # The Icon shown next to the program name in Add/Remove programs - set(CPACK_WIX_PRODUCT_ICON "${CMAKE_CURRENT_SOURCE_DIR}/icon.ico") - - # The bitmap will appear at the top of all installer pages other than the welcome and completion dialogs - set(CPACK_WIX_UI_BANNER "${CMAKE_CURRENT_SOURCE_DIR}/banner.bmp") - - # Background bitmap used on the welcome and completion dialogs - set(CPACK_WIX_UI_DIALOG "${CMAKE_CURRENT_SOURCE_DIR}/dialog.bmp") - - # This XML file is used for registry setup - set(CPACK_WIX_PATCH_FILE "${CMAKE_CURRENT_SOURCE_DIR}/patch.xml") - - # Add license file - set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_ROOT}/LICENSE.txt") -else() - set(CPACK_GENERATOR "productbuild") - - # This script will be run once the Driver component has finished installing. - set(CPACK_POSTFLIGHT_DRIVER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/postinstall") - - # The productbuild generator copies files from this directory - set(CPACK_PRODUCTBUILD_RESOURCES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Resources") - - # Background setup to Distribution XML - set(CPACK_PRODUCTBUILD_BACKGROUND "background.bmp") - set(CPACK_PRODUCTBUILD_BACKGROUND_ALIGNMENT "bottomleft") - set(CPACK_PRODUCTBUILD_BACKGROUND_SCALING "none") - - # Background setup for the Dark Aqua theme to Distribution XML - set(CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA "background_darkaqua.bmp") - set(CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_ALIGNMENT "bottomleft") - set(CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_SCALING "none") - - # Add license file - set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_ROOT}/LICENSE.txt") - set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/Resources/README.txt") - set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_SOURCE_DIR}/Resources/Welcome.txt") -endif() - -# Set up components for installer -cpack_add_component(Docs - DISPLAY_NAME "Documentation" - DESCRIPTION "Documentation about OpenSearch SQL ODBC Driver" -) -cpack_add_component(Driver - DISPLAY_NAME "Driver" - DESCRIPTION "Library files for running the OpenSearch SQL ODBC Driver" - REQUIRED -) -cpack_add_component(Resources - DISPLAY_NAME "Resources" - DESCRIPTION "Resources for OpenSearch SQL ODBC Driver" -) -# Install driver files -install(TARGETS sqlodbc DESTINATION bin COMPONENT "Driver") - -# TODO: look into DSN Installer failure -# if(APPLE) -# install(FILES "${PROJECT_ROOT}/bin64/dsn_installer" DESTINATION bin COMPONENT "Driver") -# install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/remove-opensearch-dsn.sh" DESTINATION bin COMPONENT "Driver") -# endif() - -# Install documentation files -install(FILES "${PROJECT_ROOT}/README.md" DESTINATION doc COMPONENT "Docs") -install(FILES "${PROJECT_ROOT}/LICENSE.txt" DESTINATION doc COMPONENT "Docs") -install(FILES "${PROJECT_ROOT}/THIRD-PARTY" DESTINATION doc COMPONENT "Docs") - -# Install resource files -install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/Resources/opensearch_sql_odbc.tdc" DESTINATION resources COMPONENT "Resources") - -include(CPack) diff --git a/sql-odbc/src/installer/Resources/README.txt b/sql-odbc/src/installer/Resources/README.txt deleted file mode 100644 index 86ec3cd375..0000000000 --- a/sql-odbc/src/installer/Resources/README.txt +++ /dev/null @@ -1,19 +0,0 @@ -All files are available in '/Library/ODBC/opensearch-sql-odbc' after installation. - -To setup a connection, you can use DSN to store your data source connection information, -1. Open 'iODBC Data Source Administrator'. -2. Go to 'User DSN'. -3. Select 'OpenSearch SQL ODBC DSN' and click on 'Configure'. -4. Update the connection string values. For the list of all supported options, check '/Library/ODBC/opensearch-sql-odbc/doc/README.md'. -5. Click 'Ok' to save changes. - -If using with ODBC compatible BI tools, refer to the tool documentation on configuring a new ODBC driver. The typical requirement is to make the tool aware of the location of the driver library file and then use it to setup database (i.e OpenSearch) connections. - -For example, if you want to use Tableau with OpenSearch Server, -1. Open 'Tableau'. -2. Click on 'Other Databases (ODBC)'. -3. Select 'OpenSearch SQL ODBC DSN' from the DSN list or 'OpenSearch SQL ODBC Driver' from the driver list. If using driver, you need to enter connection string values. -4. Click on 'Connect'. All connection attributes will be retrived. -5. Click on 'Sign In'. You will be successfully connected to OpenSearch server. - -For more details, check 'https://github.com/opensearch-project/sql/tree/main/sql-odbc'. \ No newline at end of file diff --git a/sql-odbc/src/installer/Resources/Welcome.txt b/sql-odbc/src/installer/Resources/Welcome.txt deleted file mode 100644 index b4412f3294..0000000000 --- a/sql-odbc/src/installer/Resources/Welcome.txt +++ /dev/null @@ -1 +0,0 @@ -OpenSearch SQL ODBC is a read-only ODBC driver for connecting to OpenSearch SQL support. \ No newline at end of file diff --git a/sql-odbc/src/installer/Resources/background.bmp b/sql-odbc/src/installer/Resources/background.bmp deleted file mode 100644 index 7ddbfeecd7703ee41596aa5d6658cabb0922edbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606776 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 Ordk9DWEL1`{`)`GZ}?{b diff --git a/sql-odbc/src/installer/Resources/background_darkaqua.bmp b/sql-odbc/src/installer/Resources/background_darkaqua.bmp deleted file mode 100644 index dbd5fc3e50d19f64e6eee1ad7189d3017927cbe6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606776 zcmeI5zi$+2o`^Ge~MS6T){r4Z$fB(}iivMdBMXT7GJ}%nT^xw@Cz5jY2_=f}}AOQ@4|N2i% zRD()D0&oKQ4*nOw_!0mS(08D+jVb{+0euJm3t)T+fC%V2P}xS60GxongZ~9Ez63x7 z^c|>dqe=iyK;Oat0vKNcAOiXhRJKti04MOde0Q~VyPcjZ)zu$9Bp?9^d z;Jpd#?zMwDn`_(a7)EC{FbDvPR%Yuzh{(wCfHj8E6P%he}&uKNpj_QvP+cO<)=@5JZn_5Q-fZ2Y`2 zn^)?_eE#J5h;RF=?27~>@R$~RP2;WO!HxrobyR!IoqOCUDqiXx1H{u#UCvU5`HZ-;icU^1eky-dI zeSWDrw=bsO?ZJ9F`0W?lPg}2g`wHLBckA85Wg3;$W4mW7-*q0GN%l*=yLCEyYpr{1 z@%zTeZL;rP>Jb~XH}9t(XRo~XvsQYQN+kCjp&9S;kV`9YLrvqzsbIfscAo7JoH_V@Kpl4oxmjD#aOGh zT)g}DAp^w`&NRaNsTzINkF$MyZ8nZ&lszw|Z#rAe8@`K?VcsrIQ(MK~`%91COW@7E ztABrbx931?sn(;oJqL#8DT>&ucVj+JiS64-zPmgfcD&v{GLe?iccV=GSpvJ2z_{oOBv6Y;*Xv23gM{Tlvo=Y-c9NVbb)pO;&fJM`*TDLRs)K>oA@HS?Aa3(wK!I`r6X&kMcG_%-wZv^R%hYGTE%bM&UYKLvF-Wn%=N(;Bl}lhpKCtn55!jQdiU9x`wPp5!he%| z_q>0!Vy&CkIsd8enlyYbf!$1C+;`tp?y8@c+Bd5+jq})NG{>`*zn#gSrE}$e8B8t* zRvLC>J#s7uzDq|T(xYBxtN8E6@2}S+oelH0zPq!xJ|6qzXzjZgpT+BPSr*?lj>^X8 z>Abq}^Y7y5>>s!BUF`|jGnHm}C6sc5eC;p)t_wQk_^KCI~+*oGVcR%!3WzzU=`B3bYTkoE_uryuocdLDt z-{qqeX;fD)k*73$7v~W_9Bj`vhpqMaPTw{Ee)wJjyN|%Q@3LPuC+t0IuKmNgQ@!(d zulM$drLEKY=t6yTHmsDFtdB`-415>+@9Jfi23K_)X&tP#a}N&YU1^N(!lbc{9NWcZ z@zu%NYHQu;>Ig+SI4bdQt}~UMf9vnHtB+rlQ(Jo<&b`;q@0x#Od@q5|Phi}4Xv>~7#zT2bleSdr?b&*(GoL*iOHcA$ zoOANHKlaHYULc*3Q*Y14wQI5OaP)o!gJ0qs2}t0x5E%E})#~c4roCddHfFCJ`o0t6y6lfI zM$D66>the~m@iEUkKL}$F^=Q2x2q$tN2@ z`YMimWF&l4UFUVQxlZA(weFq+muKS$#j(Xa&x13sSMD$TJa=dBlfD<%yLYRfa>huy zR(%#nBG$X#cb**m{`CIUa;o;-dUthkxvcLeQ2VyIF20w51U?smao=rKcP1HLn{w*P z{6G3zgiQymcOUeR&koOD430R|`}EQraTfB$%3NWweCN=x-DW!voMs39iz#_~Ied4b zam8(#BcIn?pJ$iHam}@A?$rx}ZT0p&HphgKF69c})uY+vvNO2;BIaB^6u!&X)5hoN zNXZDs=IZ!f0uuNP1jc=r&f#sY$o1LS#;gA=$Gf;Hp*eqgAJ_ZmYh`01Cr=}}+*aB#w%Hp{6eNB6I$HD9at?ZvUwwA}N3#}?zxd4H_7NwY1l&)zznp6PgQ z-bP*RZU6o}7hCnGF03x@IS{^keXb~O%;&S5_pgRc)A#$3fCP32fl0m_UbErxOw)SX z|C^3+*zIuvuA* zj`S{1Z|$9A!^)-Al8={yce!kMU`Y(q69|F4LXeU!Qxn@-e>mP2Vx>yEo10 zGzm!H^AgzEcX7v%=E!cn`@g4~*UXP+SlZ^Qu+5Qs4va7PA)nO8SL?NnvEGM#@0*s@ zcW*Qztm;`*wc5_~&ySNK=G;|x13^`L{VX?^=Hi+#|% z*JuCKU)xV{|A - - - - - - - - \ No newline at end of file diff --git a/sql-odbc/src/installer/banner.bmp b/sql-odbc/src/installer/banner.bmp deleted file mode 100644 index c0e4b9506f74b6f05554533ad6ee63be9effd8b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122176 zcmeI*Piq=!0LSrhsRwrxST_V>v4si^+p?R3ErQaOC5IdWwTEm|Qjr`ycqr6^B!X5- zU%}oKLXy{zy{ym>Z~FpzNpCfOmiZ z0tk@BoC63TfWYhp$l}?52D}3V5I}$|<{Ur(0R(0*Ko-ybGvFN{fB*tyG3NjR2p}+f z0kU}Zp8@Xx0R#{ri#Z1nKmdW+3y{UL{|tBs2q5tP6Q~ugHm^3XGtsSQ*;@X%*e$#J z9?4>NeW@J*1iUCvE9?jKkMnRP9^Gn{+-VP4?2aq7B7lIG1)?wXNi4sv2a>DNt!{PN zts{%4ElPa|AmDw0R&ey5NMU! z8<)%4UUD)vjqmfw;(0iKXd?m$Oj972jl|S>+zdU-I<229b}GpJ2p}+z0=eDGh?2+k zKzrSp0$J?LkG&BeyD~U?{Akkj$j{;lX)6uO~;!5B6^~7mR7W?g7qCE&8Fo{5Jx3V^Rf5+gS zj;>`Mw>OkD{+OEN=r`}l;>q0D3jqZDBM{xX&|RmdWb1z5JX|YSwe@OK*(3VGsrRP|CbWG9UqLF>|^x@7UF32P8QU|s}H({(Y8*vRE&|YXlIO4}nfOskviAPEzCN_J*~JQlI@%W3t%Vml6md;6H&@ zNq;Z1aR$q4FP5zhS|xcFp?cuxjdgi-39?wN!7>5}%!fdyY%hriiQFn$+x(K1vpX5H zF0C#>7OOQ_MgW1i5U8%$7@d&QRcy|QoyT(d+^!uGIZ~Hsl^=q|)T&L)`24fWCb=iUd0{#2KAD~<8)b%00Mp!Q0|EvpTPTpdN3JlZ-}MvQ0VP) zPkJ8KY9&{P#}K`)jV#vs@d^P1{3~E}WpQ({5`XrpTec@~SnNrIM^-cA{K3~5G*|A6 z)kYSJIZ+A$1iUX$A3IlZBUFjon?FL)c$yeyaa}X3=5=P+FK#X>CC!$|Vly4KA%K9N z1dK-}&cj!m=GRG>8N7S*&uy=`Cw+dTE|=StkEUKbewi#DZ^IS@5b&3PoQ}$KBiR3L z&E(2qtM+%w#r|0F@bOkN!?AL|hgBWJ?PRf-6QvM9!21G91`n4mBX+)_8*P85dh$R{ z;-0jixt932C?9QfKch8dv5^Yv5J13>0&+SIpLft7QunZ1CHZJ# zl4P-%6QvM9!21GnIu4#iuQeOj>TLdbSewK>siV09WB7YZjo`Q%wCl-Ytp~3VK)}BO z@+|NB0ekbj>qT1S-%|P$Hd&|nBR!FW!V!5oc#%zf!Hq&7n0tom?;4(7o88<^M zO%K*i8_!C6>7PPINxUG~12#SyS#0dWS_BaApFrj7Z!2AGPSUnc^~?6>M+-rt93HI8 z=E9#cdcxZE`q_c($&khNyeN$T0$vu_S=$e^*F{>8%|A)}yr@lE^H&kU zZ|RJWP8J)xuoeLX{3tM(SNJ+()v_0!J1>yBM$u*Z#iCM_LjVE43mko&6<(jT)~_$Oo!XGa zP6gQ?0R;RaaFMZ2U852w_nZrm#m)_>0RaU3A+Wb@l(bgs7J~0gMm^STDkB1Q3{4fj>8mvetavQhYjEWbt$ysRaQ9yf2X2HP7AA zttStyuTSHJVAFC|3w6EL%Ve>&5hV~nV15MdX0695 zK0Q1vPFsX5p0+6UA%K9l1@30e`o<^sQoC-nk1TdWl{yhXz{>)y@{`19?>G~Fn#dO1 zY8P4TmMrxmfPkk3sz=3aA)8O-v-xV_u-KXS*Gk0{$YL=kN+Ey%0&WVB#ct|SHv$MC zASOT-i#bsW0R#|mQ-CaXQ--PEOS1Q0+#On@vFbD|Ui2q56509ov&E_EY-00LqHWU-hNr4T>>0XGH6 eVmEcE8vz6m5ECGa#hfUG00IcODe&QrB>fA|+z`J2 diff --git a/sql-odbc/src/installer/dialog.bmp b/sql-odbc/src/installer/dialog.bmp deleted file mode 100644 index 72d7858622ad50d0a53b3511085f383c8c44bb26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1122936 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 diff --git a/sql-odbc/src/installer/icon.ico b/sql-odbc/src/installer/icon.ico deleted file mode 100644 index 10fc89a5620797d600ca73ee5ae7becad4c6b89f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106292 zcmeHQ30#cnAAghk*j&r{W7|dUW1W>s);e<^IXd0#l0vSKT6Wic-$X2}qZCq9RL+pf z(SfL3MWINkRP+D--kCSkG)*(rOo!>?>zU{N9nbH%-sgQ@hEZXvGW4gy{KVX7!Z0)O z+rfeFZ(Ci3>G(f}>DyP}@5eCXTBtC;{KEGi*I=0C(~FLgsk1>z2Zl=Y|-da+CFXbHYqQ|+C^%r9N+x#YoTjMhHCSwGMg5@ z+qd=Jp+B`Z57F=1S|_U8<-}Pbd%C(!`15qen2}%J>)5!SKXI~+Q;+!JOEsVNve=~E znPLo*7vgaVB-bRJUz6ov=33fH(H` zqNHB&v;G+te5Xfz)0B^2{Ib0g4Vh;F-%+lAh3M+eRQLGnuX{S(yWR1Q==REax5W0x?vv+Gxxa8cTb4Y4?hkf_d1|R8Ue8=|M^_@D_evcg8{nI=RzkK#JtCDq13?avz z&EhwXP}hlYbm?$()_apk!%CZm-QWKCZP&nhC;n`jnc6)*sd@01h&0oxeS^=45yh-_ zE7D(I$XXuc@Y}~PI~pSY!tG`q?ayDT_S2SzOOrDbgERiAQ>)R#Xb+V=;`8T3?6|74 zXkyj36JA7lEi}~_HS%ez&2|~i+T(-zsih{&2+_2hcsllGy~y=_pXOts?fr!+$3O2o zId=GdqxpV`&5nC(zS{a-^E>m}j&%OM;lvew!y{H+>mOC+Y^#RzFActMS)2$?rTNSo zwn2lpWA||8*}r29SMYM;E=ImRuqr2Wf{mH(h?>VnF1}P#Ox{3`?S(rXj&*yvZe7ixD}I@3xVv-Qk{3rEJ)NE18vmI*xf)cccJHe;uPtLn8T)FS zTj*j}-GX5ToptWf{`NMt<39E`YA4p7{VqnsA#;86uX^XV!6cQwovx2;dO&OHUo!&s z*Z-24=;l&+RD*=xYn%7D>1e%YE6;ND*2MOsyXR{+EB@}zy!q_DuerK)h|R$twX9wY zjMS{ubGL@d(3Va7rwz*Zl4QI>*VHO0`f2L_7{|3{El)+9>K=dnUdG5Lb61HiGN+ma zvu#_=nwClX`oy0axN83VJGLRWe%&~5<9xf8bvs{jGnf zg{J7xy+-PH7w)x`c1EtdtJld_1z=gA?6mTr^q8*o?UGz4O>O#1cfF^n?N#)vm_=;7f8X^t zE!9yL`Py7&l_ZtH2JPFfS@TQ0|D^lrVeg;rs?m8@=$udoo6l985+Z_AH}x5FPky}MkJ002ZqmGAo-^HLyjKmjeN{IX zQ=0`drhBbHb$+zm``lt@PK2>njaJcV8`>`JdwTTxMsC)XmxtReyM1A3m!9!;(rynw zGRU~~!~YC&lB*4k9zS#8yIHrKwoP^z*vz7xUY`YH<3r*uF1fa{p40N@J_hC=s;TAe zSY9`FR2iIjVg8+_))T9mxL7yub1_b%zw3B+Ps=|-%(Gk1i_Xaod0%%_hsdBGykEDl zF*|eq?2C<>`)pDV9<&TvIMnl;y?s#V$X$E>sbd;bCEcLfjJu|b_oh4_^l_}&lFJKs z`b`yW!VTMP>t=O5?Z(DV(+obTdRc7oH0(J+efY3*wX3hoN;G$~syj+2ar(h#y1zHM zYv6Z0?z2w#E;XO!Pu9Ku-DZVr{MLW$GAGWoALv)TYVety!EViZhdH_gzWRI7yDRe( z=QbKOd_m&-r|+g|sm9h6Z5%&qY)ySDW%pP!So zt!nHD_mwYK&UWh>Z%}2thQ?kSJMXtY^t}BsWpR-6DPvzVjajaj`n#H2Z_@PJ=QK_4 z$jV>xad));eWONt>0x7cb&U*4-QL=}!)S|J-?wWQr|Ula^!1fh-Y2MzYC5U@>8#&c z{XAtt(2DFkwr#tAdX@em&ScK^)ZhM@*xCQrk6~TXM>Gr@)%cCyVt4ImEgjy$pw2d? zN8R%cRPDB&)Bj%YtmWPr!~VXuI>nbc8E&xX$KKO#@g{0}3~g-VxGZ>Mlv=a76ZIL3 z=Yh@}67OB@cIeo!{oMn%>AQDZqBbP>jepRI25s)x&Wp*q9)B>=$6)b|!H2yL{8?Sk z<-hNm&b+nEMJuYw`YbEe?z=kobk5g5>=^vmc0hN(^ef%sTE7W9yehF@r_SRV=;u6a zHfZ3%-tN}sHhmUno__u!(6mb>hgw7MSFc`NR=|X=N!hQu?5g3F;5|}z$|l2=9Y19> zIlp3({&+L1ko7vj*3BEd@VTAb#MgRZzx}=9E+%;1Zal}{{#LJcv!7gui<~gvV@mhX zJ!2NZ`UN8_f2=fU)#*~(lrKr0rk$(pA6qH%?}&bjZ#}&DsF{=1+}?}s{$%6#i_Pmn z5nogTjBDsa9AUQ{6ZemMiMHRm?e3%%UyLJNsvoKC{qMh5npqDEo)6 zW@L9h(9iVu?9K-tx8EMPBI{nmv!Vmrx`taZ@g`tGn1Iqsghko1_1@_1o%wDQo5#K5&g`6Z7lvbsHC+ z?_=lUWA|lIki(!S;b|^EoE-5elzDyH%uI7zT;Qg?`5VF37WKERyt?|-k#0?UEinCE zFYVI7DPJ6|+IBjflKnZ@_VM$7H+dzsziS`X-O{3NTKx6OyE}G`PkdR`aMGL1)+$=t zw>9#PY^F6iA)GYsIIAC%vp6 zf>!9jTg}cK`9rnFwnZaG2i9rYahlauix)3U8?XCcVn+?%#l{~OYs`DrZ>V4U1<#&e zkJI}6GImi!=+CNi|BGDRPUpN;&-ethp07^2Tv=?FJu-am&AK*bPqdSqzwhwmsngt{ z%e;Tj){L20)pd7+dGn@poP2Vh&+l8?P0!!Iwzz(FR%GX(Jx#{kZsM@??X)-dd^|O* zI}U0y((C2<%C5GLlmB(rS+vK-?%?~2mU}hSDw}och8Aso~y}T-F=kC>s zaVn|%A9tQ-6ZbIiV*1ohowxivVcfWhZZZCsx27hV#{8Y^{q9faOO{EQ?v^ciey>{u zRZi6SAtdvY+WgNG%*EADT+v8pL`!~6et^go}@4Hrh#U+b4O-^R7Soz=1l-u3Mc zbkcv^>U74n8a4;h7TmiX?$RmMv|X3Z=2n|jFP|K2+-KxJ9eXeN#d5J)b(c}qE*(35 z)3I9r@b{H8Z^mlI^ayOK7J4Z&eO~0^pO?4ae#AWK;k|B?|JiZUDEhh4qoYIpavqB_ z+R@gl=dWMiX_{4yw+l>L>n<9%ub1WTxAYt6S?=i>dhXTX#VyvI>lJ^Z&V+&1(Uu{q zFFslCLUY-v*H1m})n3+|J9MZO8N4bfI_d182ho?}bp4WEtGOnfbl>r)vAN}@@L_vD z-|pZx;ms)5rAJ4qM=^FTK_5Taj2Uk<%ixjF1fOj_1J<3>_C9go-IsqCH&4v?qFSw^ zO^=Ar=JVGk{>}8<(el@*_ys#($6}6Q^K|sJU4wemyr!GBM|Iw-MY z#>>~EZOr<-dDu23CMlm$uehwUZmg5B_RNTmK@In(p8EXc#nPW0j!j)Kb;Kr(T{pvD z1ny6H`&LEOGPLfzMTv%eG7o#s?xeb6%djZlob@k08u$6)nrQgf$T4Gn{dL?9ZC>zi z8)I~rKkRn7b`!hz-cvfx_49d<7SrZ@`+4Ux^xEdDy@iW<{q(^DU&ZaS>GZF*Dx)>u z;MA~@=db;FcgI1!;Edz{B$-$&+nsTxfj=)GQ+r<6>{+YhMW*&s zalB`i@yCPKHc#T7ZZo#DsD8H9P|KusgP!g>-OG8#@{8IrbFXIEHP!TSyMN%^{`HSL z8%=L=cj7_+SG#^`w59U^qx~=L&i8h=TV`{RXL%?bE4>Pm+z1tl+Xj6}P?b)ju)T)WqUf8htA3wetz8~FVe9QegpZ()ZHtv3L z?;b?B&az$SUV+|oR&AeSq4hT3EFpVkQl;Y~-X~uRs#Po4*2v_Zw#)cQt$+B*x^}bI znFATE26_|S29NNnJ+Z@;CQR6bt&RKt=$|qo$l*i%CJ~U?-Sy74W@Z;=T8Q>EpY$^>SCIT{R3oC5|5LpLsy#rxqVqnk-KZcU#ZQYTa_$q)3~PuJOmr zcK@|3$#YoU9rsT++H>?rUWSEDGf&elwPTtz%{Q9+Uuojt=y`dq^R8oUPjnryceC!) z5JT6S=l<}|IfdeXn{I6Bs^Rp`r*DAka?>!^JHvt;4t4g-S+P25@PW+R9pch=Zok|} zKdY|WdJoaTI`jJwX56tkQ*I6ArLWeGS!lmmU+ss10JluP3 z)t`o9n%^z{R<&K~KXkov_OI`^nm2B2+EM$tvvaz`~2un zZ+2x3uuZs9t9iuY{$`=Kx(3$jU1#lM-$=uG`79$Lpov35$BA=aY#g*{Ps*7uDSBtw@*339aqiH+5-uruLpT>KEMVS-6Lp{=L0^{f?@OhGslG zvunA{o?4D=GxW2kZ*tl9*W(cfW@XqOi*e4k=so_Uqss9Rmrh@-A9@Bk9_wYk&=r$A zw_bn6xlfwr-FIcP3vaujwkOqx8P1Nj4P5xWma#^gF6PnaPH0caHgvhD8&tW*{J!m0 z*IHw^)ypC)#X`+$!uYt;eLCdRdS|BtVfCi*{H89mbk%k@`eDiP4^x9GADA)DsgK(P zm9SAK4Eij&+pJojb-kbXcxpSf(L6r(m`RsP3wK9&S$ujEJU-{yM$L};&3D|{Z@p+@ z&awJqjb?3{=3~CZ3M(O99be<~4~{jDu)Z!jg<8{{3IE^usn^qJnel1Wni<_^PHg@9 z$mgfF$23B>9(oXZ=8EBl`gU!4y4 zan|$!e`_Q;pHF>1XOoS44X=miZcWMdyppdri_j^%BhJ3QoRi&2we{d(i@Y>=6PG^h zv%1d2cjLOm$M1jfWaC=ih~W!OTP3)B`n0nHyYFM<|7lxd`%bA(Prg6+%Vo#-IwPKR zwfQfx{nfuk`;@vCjN?#Rv99YD-*wvlVSb67ZQPeSWWi#Gb7Lzu8-)25%=w6<&f;r$&}G}FG{?Q;94iJNpfX4tmB z>v2pY$=#{O-N6xi4z_mj&$!{}GWb?@qIs~bm1Xjl)FvG#Z|!v^StqJVy|tr{9kh?$ z=DXsC{jmCdvctx#@L2Qt%crjKj~=O3ZKjuSdd0EyRZT^T6$)jbg@jTH%c$n zcU9F%A4fVrr2#X$&04?ASwmG~65e+*Hu{*8;QMgmP(SlN9(|5jwhtWPc>3jUtlw`8vG$N4I?&yC-uANU}8(!!V{n~hfJ z4pO^wd;X=W>+8(FbxR(jYsF-CcvH|qqW_~ zW$u`ME43$hghi&r8@JYKu{YxL^b6yI?eS zVwfrYgnHB@6(;t~h7B`JL$w1Pce}6Ow{!0wA-_4jIijX-84}*S{uG^-qvB25&3ZG& zrkRIci!BGOLOeXG)z(@XmfB+O%zPc2mMU}T$Dt$4{4V}6)+T!LvX`&*d5;_uFMWLU zSB+h@Dm(Y+6_MJ0_Tkn4n>2a~rdPI!m#YQahD55qun0M4+PB>)(=PRUUd?B4-5KUe z+m_Q(;;PoUV{3bB@lvb?-J*^gj~&}7!)2S!g5%l~Uc6d@1)p!-f#Da|o5u}_in8h+ z=p9+v*z)nqrS;~n5@TZy9!9q>d>_?Rvse6|D{tyAdi#4wc%!Gzi>-sI41ANFojK`a ze5;Vml~3UxB}5%vs~r)TsuQvJUf}H`@1l$o z_P5IJ;-@uCQ!U(oHg7=I+C{cDjB&Zeo{RabBU%2F;1ARjcNm zj1Fy9by|^rdA?ncPAdnWjba2nch`g9mpOXN?r6JTIo|w$hEp@WSs{ixsrP-8j9RC& zle%WB({8=9z69Hgs=7*N(FMO+eeLo!{591MX(j$~s-u5AjTC`toj;FSyFB%n{$86@ z9dDOkRfAq7ZNEq=Y8saQBCu1qe!F^Jp@&_LeR5v*+2~_G?{pXUj*0u*MLwLL?YLv- zu6-#VW12VhTo<92TUs?z z0M-EXbcg?^!cfa)TdyFbygEFvMYv$jY+zx=Bwyeo6)xe808ijPxnRoNCY(28TnNbX z7YkFy6yc^9OqgzjlZK2cp}flFTcKO2|8GUp;`#J8VMY;P+q@D6*N>b*xddw#CQK{z z53R&gqYPEF1eE$$w8YC+eHgRnvM71`FRVYgj{e{}>i(U@G^YLqplnH};!~s4f5q3a zBo4hznV$);#Sa1$X18*Q_cmkF2%up*!PkuWksyh7WnA$kpwxfyWmpkPxHy$*L4XY| zAz)3vnS~j%ANIK4+nhN`zG;ppFk*TzYvDJgkFT=(y7cZ9| z?GLzh!aU3i=5f!n%Da3jI{ixhS9A@_#-GPbrY3=Gn1H_EodB}-2d9zmwC_wtjUXEp z%G9ML0j2&+OY&v2UV0Wtz@EZZ0&F^40BQRJc6~s5hJ>=orIM(Y|dV$n7RSw67BK10D0}Gy!Hd8%wgPM#N0We!q!#n`-bv5Kd98d?7Az79Hp&) zp?)Y5c2B4ncK?-+N8ssEN$5(RWq?NZ`GpknXYW5KDO!~JFDXeDuN+0|-@$>YL_od1 z0#r1+=lFRG{^+*gGW~bajA=jst%(9~^ozQgh|lyiV$=ymWlE|4qDoFa`4p{x%!wDV z_&QFCwzG=j{{(yaBpiR#K&#uB7#k@nQ(!8?t-8-Iz1uG3JdgU2V!< zyU@N|VfT`;_m&q{gHr#6NvLea%R&DEXafP?kp15RueZ2;E=6nCSdY;m6t`ZC*Zl7q z6+B<#KQ}DoJ0_%irT&Yn4e9fj75!sBp*!IlvU~P<-^EExV}kS=E7_DLI*cn}&Jd;= zp{S+f-A4AFQYrMue$Pm>9;N<8C88LAnbH5(`>G_bBMTm1%0)hmlZOap<^5Uc-=AQr z!^|TTwbkXmXUD&@oX!9hq>nR*J0n^T&hv5il@*k)LWC>z&wkS`SO46+7jwRs1PSe? zyy>5NpPt>UT%4ve=QlUe=P<2eqXw>8TDq=39QYN-E+`oTwwn$MXet)Vc!FWD_L*cch8mjFRG}Em9Na`-;DVeZG|AY zy(lg|3baJwK9o%aeCK%pfqTEaSVAvDnPKl10(`Z7ejkv5@QkTCOdW!(B%hhe)FD8I z65kWTdVdu`pnIkMWfgQW)0Y+fV?Ttue^1f&AC0z0_?y7ZLyIZaa+4kUzbAmG{j+}T z1sV{F$`E84CxBSJVx7Q#7geeMqDr`U`O1p^(MDvwmtJgpLOBw{xpv0gb5_>w-z%Or zrOyq$8w()T?h(hge_iG;Q$YHX^QOd_j{DwmL3+6Zoe`A!&nr5)`pTgGxpj3x?WCyT zA!u76UXvLuf?S1K4hlEZW||V9{{#Uf+P_I}#+^`9*0}LqLcjbNaRjCQiz;Lp@|9uz zbN9y;)y}zm^vpR0=TNK&-18+FL{uS@a_e~5JpVZ#x6fCIYplbB5sE4l=tA;60p`qW zoOgbWbV~gfRmf80D+l`jf;K?l>{wQpJx7PF#q3xaHal>DrDrV0Q&bp z8zAIuANl?4cY8d{n5Kkch^#_n#hhM?02`HQU61tA_6MJk_ET|%g)`4T5uji8y&s&V z7)8jvUz)FbrT%3UbOqA?8ng{UVfJr?G)6LtsoW=bU~vB-V5ZCTCt!^CAiy?r1d!IA zWla~0@?+&KK!NU+`Y%Axq4c1bItZssC?V|6KdRyT5J((RqOP6s9?WOIKdp$$gn02(a<#1lZDP z0)DgWYPe$UuFQn@X8u5b^oOG4t<--RYYz(6KhEVE5QOai1%AI!RQoGxJ;s_$GZwnc z5@P`Nds~2PxP-E8=LOKm%|nYS7g_Tu^xfGoI#a%t!J=oZ`q;vm>}lD9m$@|F58BkiY@^v|^eyf}fik84!rF(t;$Z{h1^6b$``mu5nD_q4OCO3ZSE+wROT28=2mN#Vdf$rudxK~1 zvZaO6qeiL!(vy8zs2Tca&%MH}==RUP-)FAFbRd)k*_QDzyD$ zZ*vi$^dwz2YgX#NZ0bc(RN?u@I|AB4g|vU1LG&d!DERrlqV!kXdX)Mvt^~_>e%SpJ z0V*!*(>?7jt|Jm{b_X;kXJG^Jnq zb>p3vDJ;tQ{2z1t7=mdZ=4V3bOSXJapwxf)(38BV#5;S{2^a_B1SntgfZj|n+Hmm1 zK1_3hyyR3-%T?;XqH0z)zHs($CINjwS+{@o9w3bMy9wO=0-{s-f?cBaI%4P2jD*{Q% zEDDr>QvW3*Y##k(F^nqvL-3y%Kcgm;0P*?!jQ-aI6ray8R0A6?+_q6pgdwoI6f=CUqB8&KNytg=ZVC_FCdqnzYxDZ zFF;i|J^2Ofu##7k;HQ=&9MAcM*;D0&CtzR5Psw=&`}HY0>ubD-pKse)3|GF0Uts!( z=Sxr2Ple+T+T+Lby}5pUfgjpu<3;^~XlRljFX9)}MsaMssGlnil4s*Z{a=gY$BXzm zqbJgYjh^#!)sZ5QRnQP9CEqWoj@3KGi}&-J#n<>;e*l}Fl?z*5K0osCE92J}AkNP( zjh~<5h5X6nCtC4GtcvpsYR`=q_GbwdN1_n*BPh2zPE=g=qJDi!j6W`3pY=)a7bMTk zFQcE+G?!o0&ymZ;i~2coxp+}OM-CUC>*vcew>o|+=Q?{z#cD@CH@$fO*JysckUszg z;EFhAjc{Pks+tKad#`sMr|_)!sjiz*p+4$?O%>03ij za2M5W+(G7oxWDk*^nwY~jqa(FGdT(`p1#KeenszHFUU_aIs;fk9<3BktQ;zYZs*Ft zzo=ZUBmeIgrZM&9K$=2|#5Wjz2LJiL(I$PH;Nkw}G?cO3*Npj5Aw-vOCG@>I@UR57 zz8QS%r|;K8um1S`3J}$~B!33-I^tgYW+hBwsTD_e^rMYvg0BUTg%?2IT9+gPic6vN zcV;qGN{w(iRZKkLZn_cd*kHz_7b1%=#P^aDDWzWQIU}YXWMK;)6C}uiY+@dbv!zb3 zoCxrk$hn;CeE~9v!5q3tNz_wN8UB-*>clhJ<2BGwkWGpk%U?lvlL{(V)^OBsf%>z= z$l;zm`b4@%R4}inwVXKqqzyaZ-qiq=$AcNB-IX0q>{y=mw`OcLO+RqVj z{1hb&W8_S+bYTrvl=6i0kj;YDohUy?Y#qgD2Pk){a9zdujk4^;&_{hxk>`nCQ<(3O z|FW2JbM;uvxOnPIio-XTSFqpWE{2}4qO2DL>(>}D<&_lg{Bq10GmeMix-@SFz4>US zHIpo5)4CPq&^I$mmRE7*nKFlEp{=mAf;p0?t)@sjKNQH2z8^1t-uZPrDvT#t<3alY zG4$^*tQ-dirV{e`ipeWaS-dTbE?MI*nlTN)L!t;DnVv?Bx}>r&wl5ONBTv4$vWxva zba6Zh){R^poV#6IS_;Gbv;%mj@q$aMC^x1cnu-%nYiID1Xa4|WWLiOcs^~YoOM!Qi z@#*65DJd_?UYd_5>?@1rfn0{ftc#1|!e~!b41d;K zykK8RQ9QHtKqrSvVtoq!{ps93$BQ_ZU9;xjTR%f-sqLZdzZ4@MdB}s->8H<6W_pUF zvnXNUKZMRb8W!^W6!p^c1!10&>6xpS8PioHTsTch{LaCg;x_GNOFRFRMGoNq6~KcG z2209E^Z$H&;<+6MR9 zdiHL{{F^VlX#7WEA7&Gtc@HS5Jw8eNP#k!-$mL&$$(X9c)F~*>nW;=2@R?^#gnn-o z`XSoCD~gUO5A6m0O*T|ez48nP@AriG=b;}okW?RNjT7b-HgOXEg7(r2lnKd<_S{Np z|4tIk1;v4HV`1LuH{LD&tDy804qNvZ<{!W5TbN|41@bBq7veRU(UMe$BI58Zp{C%M z-doH2j!bXHT~hr5eGBvY82m}I-bq3KZB-V|=#Y(r?~r`FLl!vmA0~-^@S1l|z?^xF zurDGy7M2hFeuQzWy`*v#6^DDq>e2fR;&>N?y_Q4^c-bPtE1k)DD-xE=KkPinV-nL) zQkja1!#uw|czh^CKlsMOjA<&VEJehjt!sfNv9?}-EDGI6!rc2O@M}$H^Vt1z zGiHq#{*4sDpSU_4aDT9wF4G@6_W+M{2T9&OUa~({T$z%>Fb5hg!hfiw^zw?M?_z`3 zzX7^`K^C5c(_WF4KJ@M1f&WY)8BCY8jH0BcH9PnmfOX48yrcHG7(D0l4|{Pc3N2Xw zx^et_Pm$lR1!SrDWf;@M^X64T-HFq|BIsJmz2j?lWAtG%Paw% zw*h(wIagmL{hMq^5-kPA(Yy}))3dG;`!2lDx7-!;4R`E;IH2z=h{wXhu{L18ja^u} z!s3O#X)QNBi)%Mn`)w|aHc9ccM}|3mvAzq8F^l`IuR?hzd6dMrb$yEQT~r6OJ*+=V z>$|4@l60$xIOu@h*H*aR**Xi^`%@7A^nJV1;NM#j{1sLQc&G1sDVqO`vhs~B@J`=1 zQYioEZxq*`jO-;d$cRfK z5N3};;0D<99H_cjebj=|V%1SA++=lJWdJu_jUH&|^Rn3cTHsbgcKCCu#qwQMzRP3p zV*xb+*Zxlj#M|@qS(gVFUJ#=m02f5Eu01b@TmA8AVhp#Qeu$zXH z;pW~G(Mmq|MEFi(>SB-aB9I2qb0|7{K+oXm9D*J8;KsnE^GJFgQ^1Ev;>Vq0XnBf z?{?DJggob!;HP))wgX+t6azxUK(;E7a}zvM(E**SffRsiQ{>XKwg=EdU+NLd`rn1g zOjFSN5AYBW<|7&YmB9C9o`-2{`_cxjX8>XQptDbV@xCx_1uFZ0Xjjegjt1$1#tu#w zbbe`TN%4Sp@#wwc`Y2NyE}ac^21xg$Z)&^mfnZ=GXz77xCbeXd9JP6rOXCPVZxiNW zH_9tkTkLHzUk!FkoueFhO2OylED@RuMD*E*Q$x1)97u5e3z|Bj@#Z{S@)v2#A~HXZ4xALP=OgiCYhC56#hP(0putb#W4w-8O)(93V4>CwmjfHcB3 zUlO!a8KlekqV>t*7tA%NKjUaRA-sNot=B-Dqfk7Tt|VMK8$MhXdc~zh88qkP`tKP0 z?#rbE{r%vl^-)RCD_VvZ`r<}hU4^+gPbxO8VBSh|Zz`X3x|G(UXj?V$dp$tyRJ88m z`V-I>cXx0ojOwrP*i)K=Gi3ShOr*It=o9XXXf4_ppmo!Ipt!Vh`ANt0-qgQnw=&(6j7)L`1|HdCZCzMwq@I#_R_ z$JEHf06Zv{)^W5JCHlSy_BDk2CRypG_3Kk$FXUhVw=LRfk?1B`aZaor=+6Xhfd>sS z^wV1O9>CFQhu;B0elENqm&W8M-~#BiMcZzRcY^Y@RndB-^@Hvy06k~Q#y;ZiXX5CiJ&b4}KNl|QQroxz*aKP^r)!IrU0gqCZVY$}=qDaFiYpWK9|So1Xpc;I zT;Rfm-4|Gkn4n#>yf8`pxGk<8S;BC}stV|x1AGvo-&b52pqKV$IQnRvQBc468f|19 zWG%Ko7FTvr!tm~dDrlYth@Mjrd*&1L(wv^7pXSH3XUX|F_bqJO4Er}StpR1FA7fQ5 z&}|Cjf9D71XvLKWTBixoOYeDb{Sim|JIH-H-tVX^E`Lddp?{$>f$MnBa!pjiXB4P@esdtGVrh)aWW&Gi0RThMF(cQ5c1D9*X= zzr@ue8s=rn&Od3r8!Z|qjbA|b5YV~@xC^8Mg~_(Ccq(J0H1%U%NAF+KzSlWv(hH|C z)@E9xo_~RtfUNJtNaEo>?7W?DU6Ou-he{Y@XGuyU9OnQJ%I^l6#r4~g=#nOmzJIh1 zV{*Rvr!Wnozw!J;>TyURK^f zyA2>qUnnj8&v9<{2U+QnH9csz1xot;kN0So(`BWlDCt4_T!6kWCaqixOGo|XCKGMR zdz(d}Ra_p_MPn58nT63MO+2;34VXt4dEF_FMoD3q$NUdLhh(w~U@3(?m!lvI~I<4`}%8Kimtm}^HgMibq%$J0ihv`JGo+7Ycm?15(h zM`JFGR#w2q+rk*tADAhZ3aRC?i+|7@tfWsJqFA{JJH6RqXD(OlBA10 z$AyPAaB=F0b#bhS+yERmA{VEiSQj6|;=4HYMd66xyEyd)e}D=vKp(CHzDlJI7yrn` zsVMy{oRmoyxHz?>p96m^9g4!v5$6VwAE&t-$i2*WKO+!-`YC*u_knd)cpqXBibGM) zSl6EK;;htVIz)yuQh$A)Jf zPDo2`3|y9fA-5XBaqNmOA0d~@pm2SG%gU2IWruL~I3DYQ1csq=T0a4Of!uRib&GdS z%g2~$i1~O7K}wg_dF+fTt6nm(xW5J1mEIa)6J;0%P^Di%{Po_naH z{-Z)PB;t2pF-hebg#DgjsQ0aaj?eH9m$gF3?tjR?2%x=TYVWisNqc*jfYF7Ohqm$) z(me!7A7nFq3d=+BNJnP`b^^k>hisNBbBbshw2vN$r+rT@ zjkN9u(XtBiqwHgX@?YUud2SzteZN`=r{^Ei)+wA$?0&8|8U(hFV-m%Jn4D^I) zLm4z?QGGOaKN9>FS3lX}DZmJ}*+94qX?~;b5dh7bcL=9PdCLWL2Ei3)bM)-W{=A9w zdr!jU({Jo^(S0f0eRp~8sX*CAg8HdX=k};M{x6{ql-Ng#)+Or4nzu6QJ}%&$_)ii} zgF3msh~!J-30Lm_<=cqkJ10jO?@8bCgX3$0Z zGw;pRN1aOnaqGTR(NbYMtpxK)8s~_Ana5|`d(;5+(KDA*fTVqwhobd!e$-3-K|1#M zrQ#j?0vfQVC8+N@Anjh&e_VZ{E}dUM{TD>TMg3Tlc0_&NfXw^ZXcMNQg-pfU-n`m?pLsSim2k^Ayzg&~qX`^hb+fqcWeRCA#nm9gi1_-3$8WI=yGdOV-DhhI)=l4&J5X z;r%)LRd|W*Y5-&Z%z+QgckSmQ=P!(EjutjFwD3J`EmdB+RyAI-7WO-IvB#mWj&HK- z2Qd2n4%n_hMgdR-c1#>lUjVi#0@T^}$*?WK`~>9gQ&g62p8{){@6dOC0^R{v0h(9H zGIgdn+ysxgbReAGGq?tD^95mdfS59fjx`jHK3)~SFBg!P%CQyB&*tItLh>LPnM=q^ zbErIPTeL~`JT}5frlc2fb<^C3=D&I7@R+w&Lc3lrpn>#4y5-I@W#Ko?Tl+yCV&_W8 zOV6#@F(2tjx3mvHYj>J=Yl-qH>_=hP241aNbL z+;bjyj!o@!Ip!FZMC#H;dfJCg21NVv0O7RIA1hBT4C(s-lFkvBb7{r7$V+oI(K - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/sql-odbc/src/installer/postinstall b/sql-odbc/src/installer/postinstall deleted file mode 100644 index c95783c053..0000000000 --- a/sql-odbc/src/installer/postinstall +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -PKG_INSTALL_DIR=/Applications -FINAL_INSTALL_DIR=/Library/ODBC/opensearch-sql-odbc - -# Remove install directory if it already exists -if [ -d "${FINAL_INSTALL_DIR}" ]; then - # Fail if FINAL_INSTALL_DIR is not set for whatever reason - if [ -z ${FINAL_INSTALL_DIR} ]; then exit 1; fi - rm -rf ${FINAL_INSTALL_DIR} -fi - -# Move PKG installed folders to intended install directory -mkdir -p ${FINAL_INSTALL_DIR} -mv ${PKG_INSTALL_DIR}/bin ${FINAL_INSTALL_DIR}/bin -mv ${PKG_INSTALL_DIR}/doc ${FINAL_INSTALL_DIR}/doc -mv ${PKG_INSTALL_DIR}/resources ${FINAL_INSTALL_DIR}/resources - -# TODO: look into why DSN installer is not working for fresh Mac install -# Current issue: "General installer error" when adding driver entry - -# Run DSN installer to configurate driver and DSN for system for easy setup. -# chmod a+x ${FINAL_INSTALL_DIR}/bin/dsn_installer -# chmod a+x ${FINAL_INSTALL_DIR}/bin/remove-opensearch-dsn.sh -# echo "I can write to this file" > /tmp/dsn_installer.log -# ${FINAL_INSTALL_DIR}/bin/dsn_installer ${FINAL_INSTALL_DIR}/bin/ >> /tmp/dsn_installer.log -# echo "After DSN Installer finishes" >> /tmp/dsn_installer.log diff --git a/sql-odbc/src/installer/remove-opensearch-dsn.sh b/sql-odbc/src/installer/remove-opensearch-dsn.sh deleted file mode 100644 index ecf7121f5f..0000000000 --- a/sql-odbc/src/installer/remove-opensearch-dsn.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -echo "This script will only remove the default DSN and Driver entries from your ODBC configuration." -echo "You will be responsible for removing installed files from the system." -if [[ $EUID -ne 0 ]]; then - echo "ERROR: This script must be run as root" - exit 1 -fi - -# check for "Yes" -while true; do - read -p "Do you want to continue? (Y/y) " yn - case $yn in - [Yy]* ) break;; - [Nn]* ) exit;; - * ) echo "Please answer yes or no.";; - esac -done - -# Run dsn_installer uninstall -${BASH_SOURCE%/*}/dsn_installer uninstall -if [ $? -ne 0 ]; then - echo "Error while removing DSN and Driver entries." -else - echo "DSN and Driver entries have been removed successfully." -fi diff --git a/sql-odbc/src/modules/code-coverage.cmake b/sql-odbc/src/modules/code-coverage.cmake deleted file mode 100644 index 0d24190c5d..0000000000 --- a/sql-odbc/src/modules/code-coverage.cmake +++ /dev/null @@ -1,610 +0,0 @@ -# -# Copyright (C) 2018-2020 by George Cave - gcave@stablecoder.ca -# -# Licensed 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. - -# USAGE: To enable any code coverage instrumentation/targets, the single CMake -# option of `CODE_COVERAGE` needs to be set to 'ON', either by GUI, ccmake, or -# on the command line. -# -# From this point, there are two primary methods for adding instrumentation to -# targets: 1 - A blanket instrumentation by calling `add_code_coverage()`, where -# all targets in that directory and all subdirectories are automatically -# instrumented. 2 - Per-target instrumentation by calling -# `target_code_coverage()`, where the target is given and thus only -# that target is instrumented. This applies to both libraries and executables. -# -# To add coverage targets, such as calling `make ccov` to generate the actual -# coverage information for perusal or consumption, call -# `target_code_coverage()` on an *executable* target. -# -# Example 1: All targets instrumented -# -# In this case, the coverage information reported will will be that of the -# `theLib` library target and `theExe` executable. -# -# 1a: Via global command -# -# ~~~ -# add_code_coverage() # Adds instrumentation to all targets -# -# add_library(theLib lib.cpp) -# -# add_executable(theExe main.cpp) -# target_link_libraries(theExe PRIVATE theLib) -# target_code_coverage(theExe) # As an executable target, adds the 'ccov-theExe' target (instrumentation already added via global anyways) for generating code coverage reports. -# ~~~ -# -# 1b: Via target commands -# -# ~~~ -# add_library(theLib lib.cpp) -# target_code_coverage(theLib) # As a library target, adds coverage instrumentation but no targets. -# -# add_executable(theExe main.cpp) -# target_link_libraries(theExe PRIVATE theLib) -# target_code_coverage(theExe) # As an executable target, adds the 'ccov-theExe' target and instrumentation for generating code coverage reports. -# ~~~ -# -# Example 2: Target instrumented, but with regex pattern of files to be excluded -# from report -# -# ~~~ -# add_executable(theExe main.cpp non_covered.cpp) -# target_code_coverage(theExe EXCLUDE non_covered.cpp test/*) # As an executable target, the reports will exclude the non-covered.cpp file, and any files in a test/ folder. -# ~~~ -# -# Example 3: Target added to the 'ccov' and 'ccov-all' targets -# -# ~~~ -# add_code_coverage_all_targets(EXCLUDE test/*) # Adds the 'ccov-all' target set and sets it to exclude all files in test/ folders. -# -# add_executable(theExe main.cpp non_covered.cpp) -# target_code_coverage(theExe AUTO ALL EXCLUDE non_covered.cpp test/*) # As an executable target, adds to the 'ccov' and ccov-all' targets, and the reports will exclude the non-covered.cpp file, and any files in a test/ folder. -# ~~~ - -# Options -option( - CODE_COVERAGE - "Builds targets with code coverage instrumentation. (Requires GCC or Clang)" - OFF) - -# Programs -find_program(LLVM_COV_PATH llvm-cov) -find_program(LLVM_PROFDATA_PATH llvm-profdata) -find_program(LCOV_PATH lcov) -find_program(GENHTML_PATH genhtml) -# Hide behind the 'advanced' mode flag for GUI/ccmake -mark_as_advanced( - FORCE - LLVM_COV_PATH - LLVM_PROFDATA_PATH - LCOV_PATH - GENHTML_PATH) - -# Variables -set(CMAKE_COVERAGE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/ccov) - -# Common initialization/checks -if(CODE_COVERAGE AND NOT CODE_COVERAGE_ADDED) - set(CODE_COVERAGE_ADDED ON) - - # Common Targets - add_custom_target( - ccov-preprocessing - COMMAND ${CMAKE_COMMAND} -E make_directory - ${CMAKE_COVERAGE_OUTPUT_DIRECTORY} - DEPENDS ccov-clean) - - if(CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang" - OR CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?[Cc]lang") - # Messages - message(STATUS "Building with llvm Code Coverage Tools") - - if(NOT LLVM_COV_PATH) - message(FATAL_ERROR "llvm-cov not found! Aborting.") - else() - # Version number checking for 'EXCLUDE' compatibility - execute_process(COMMAND ${LLVM_COV_PATH} --version - OUTPUT_VARIABLE LLVM_COV_VERSION_CALL_OUTPUT) - string( - REGEX MATCH - "[0-9]+\\.[0-9]+\\.[0-9]+" - LLVM_COV_VERSION - ${LLVM_COV_VERSION_CALL_OUTPUT}) - - if(LLVM_COV_VERSION VERSION_LESS "7.0.0") - message( - WARNING - "target_code_coverage()/add_code_coverage_all_targets() 'EXCLUDE' option only available on llvm-cov >= 7.0.0" - ) - endif() - endif() - - # Targets - add_custom_target( - ccov-clean - COMMAND rm -f ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list - COMMAND rm -f ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/profraw.list) - - # Used to get the shared object file list before doing the main all- - # processing - add_custom_target( - ccov-libs - COMMAND ; - COMMENT "libs ready for coverage report.") - - elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" - OR CMAKE_CXX_COMPILER_ID MATCHES "GNU") - # Messages - message(STATUS "Building with lcov Code Coverage Tools") - - if(CMAKE_BUILD_TYPE) - string(TOUPPER ${CMAKE_BUILD_TYPE} upper_build_type) - if(NOT - ${upper_build_type} - STREQUAL - "DEBUG") - message( - WARNING - "Code coverage results with an optimized (non-Debug) build may be misleading" - ) - endif() - else() - message( - WARNING - "Code coverage results with an optimized (non-Debug) build may be misleading" - ) - endif() - if(NOT LCOV_PATH) - message(FATAL_ERROR "lcov not found! Aborting...") - endif() - if(NOT GENHTML_PATH) - message(FATAL_ERROR "genhtml not found! Aborting...") - endif() - - # Targets - add_custom_target(ccov-clean COMMAND ${LCOV_PATH} --directory - ${CMAKE_BINARY_DIR} --zerocounters) - - else() - message(FATAL_ERROR "Code coverage requires Clang or GCC. Aborting.") - endif() -endif() - -# Adds code coverage instrumentation to a library, or instrumentation/targets -# for an executable target. -# ~~~ -# EXECUTABLE ADDED TARGETS: -# GCOV/LCOV: -# ccov : Generates HTML code coverage report for every target added with 'AUTO' parameter. -# ccov-${TARGET_NAME} : Generates HTML code coverage report for the associated named target. -# ccov-all : Generates HTML code coverage report, merging every target added with 'ALL' parameter into a single detailed report. -# -# LLVM-COV: -# ccov : Generates HTML code coverage report for every target added with 'AUTO' parameter. -# ccov-report : Generates HTML code coverage report for every target added with 'AUTO' parameter. -# ccov-${TARGET_NAME} : Generates HTML code coverage report. -# ccov-report-${TARGET_NAME} : Prints to command line summary per-file coverage information. -# ccov-show-${TARGET_NAME} : Prints to command line detailed per-line coverage information. -# ccov-all : Generates HTML code coverage report, merging every target added with 'ALL' parameter into a single detailed report. -# ccov-all-report : Prints summary per-file coverage information for every target added with ALL' parameter to the command line. -# -# Required: -# TARGET_NAME - Name of the target to generate code coverage for. -# Optional: -# PUBLIC - Sets the visibility for added compile options to targets to PUBLIC instead of the default of PRIVATE. -# PUBLIC - Sets the visibility for added compile options to targets to INTERFACE instead of the default of PRIVATE. -# AUTO - Adds the target to the 'ccov' target so that it can be run in a batch with others easily. Effective on executable targets. -# ALL - Adds the target to the 'ccov-all' and 'ccov-all-report' targets, which merge several executable targets coverage data to a single report. Effective on executable targets. -# EXTERNAL - For GCC's lcov, allows the profiling of 'external' files from the processing directory -# COVERAGE_TARGET_NAME - For executables ONLY, changes the outgoing target name so instead of `ccov-${TARGET_NAME}` it becomes `ccov-${COVERAGE_TARGET_NAME}`. -# EXCLUDE - Excludes files of the patterns provided from coverage. **These do not copy to the 'all' targets.** -# OBJECTS - For executables ONLY, if the provided targets are shared libraries, adds coverage information to the output -# ARGS - For executables ONLY, appends the given arguments to the associated ccov-* executable call -# ~~~ -function(target_code_coverage TARGET_NAME) - # Argument parsing - set(options - AUTO - ALL - EXTERNAL - PUBLIC - INTERFACE) - set(single_value_keywords COVERAGE_TARGET_NAME) - set(multi_value_keywords EXCLUDE OBJECTS ARGS) - cmake_parse_arguments( - target_code_coverage - "${options}" - "${single_value_keywords}" - "${multi_value_keywords}" - ${ARGN}) - - # Set the visibility of target functions to PUBLIC, INTERFACE or default to - # PRIVATE. - if(target_code_coverage_PUBLIC) - set(TARGET_VISIBILITY PUBLIC) - elseif(target_code_coverage_INTERFACE) - set(TARGET_VISIBILITY INTERFACE) - else() - set(TARGET_VISIBILITY PRIVATE) - endif() - - if(NOT target_code_coverage_COVERAGE_TARGET_NAME) - # If a specific name was given, use that instead. - set(target_code_coverage_COVERAGE_TARGET_NAME ${TARGET_NAME}) - endif() - - if(CODE_COVERAGE) - - # Add code coverage instrumentation to the target's linker command - if(CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang" - OR CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?[Cc]lang") - target_compile_options( - ${TARGET_NAME} - ${TARGET_VISIBILITY} - -fprofile-instr-generate - -fcoverage-mapping) - target_link_options( - ${TARGET_NAME} - ${TARGET_VISIBILITY} - -fprofile-instr-generate - -fcoverage-mapping) - elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" - OR CMAKE_CXX_COMPILER_ID MATCHES "GNU") - target_compile_options( - ${TARGET_NAME} - ${TARGET_VISIBILITY} - -fprofile-arcs - -ftest-coverage) - target_link_libraries(${TARGET_NAME} ${TARGET_VISIBILITY} gcov) - endif() - - # Targets - get_target_property(target_type ${TARGET_NAME} TYPE) - - # Add shared library to processing for 'all' targets - if(target_type STREQUAL "SHARED_LIBRARY" AND target_code_coverage_ALL) - if(CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang" - OR CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?[Cc]lang") - add_custom_target( - ccov-run-${target_code_coverage_COVERAGE_TARGET_NAME} - COMMAND echo "-object=$" >> - ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list - DEPENDS ccov-preprocessing ${TARGET_NAME}) - - if(NOT TARGET ccov-libs) - message( - FATAL_ERROR - "Calling target_code_coverage with 'ALL' must be after a call to 'add_code_coverage_all_targets'." - ) - endif() - - add_dependencies(ccov-libs - ccov-run-${target_code_coverage_COVERAGE_TARGET_NAME}) - endif() - endif() - - # For executables add targets to run and produce output - if(target_type STREQUAL "EXECUTABLE") - if(CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang" - OR CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?[Cc]lang") - - # If there are shared objects to also work with, generate the string to - # add them here - foreach(SO_TARGET ${target_code_coverage_OBJECTS}) - # Check to see if the target is a shared object - if(TARGET ${SO_TARGET}) - get_target_property(SO_TARGET_TYPE ${SO_TARGET} TYPE) - if(${SO_TARGET_TYPE} STREQUAL "SHARED_LIBRARY") - set(SO_OBJECTS ${SO_OBJECTS} -object=$) - endif() - endif() - endforeach() - - # Run the executable, generating raw profile data - add_custom_target( - ccov-run-${target_code_coverage_COVERAGE_TARGET_NAME} - COMMAND - LLVM_PROFILE_FILE=${target_code_coverage_COVERAGE_TARGET_NAME}.profraw - $ ${target_code_coverage_ARGS} - COMMAND echo "-object=$" >> - ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list - COMMAND - echo - "${CMAKE_CURRENT_BINARY_DIR}/${target_code_coverage_COVERAGE_TARGET_NAME}.profraw " - >> ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/profraw.list - DEPENDS ccov-preprocessing ccov-libs ${TARGET_NAME}) - - # Merge the generated profile data so llvm-cov can process it - add_custom_target( - ccov-processing-${target_code_coverage_COVERAGE_TARGET_NAME} - COMMAND - ${LLVM_PROFDATA_PATH} merge -sparse - ${target_code_coverage_COVERAGE_TARGET_NAME}.profraw -o - ${target_code_coverage_COVERAGE_TARGET_NAME}.profdata - DEPENDS ccov-run-${target_code_coverage_COVERAGE_TARGET_NAME}) - - # Ignore regex only works on LLVM >= 7 - if(LLVM_COV_VERSION VERSION_GREATER_EQUAL "7.0.0") - foreach(EXCLUDE_ITEM ${target_code_coverage_EXCLUDE}) - set(EXCLUDE_REGEX ${EXCLUDE_REGEX} - -ignore-filename-regex='${EXCLUDE_ITEM}') - endforeach() - endif() - - # Print out details of the coverage information to the command line - add_custom_target( - ccov-show-${target_code_coverage_COVERAGE_TARGET_NAME} - COMMAND - ${LLVM_COV_PATH} show $ ${SO_OBJECTS} - -instr-profile=${target_code_coverage_COVERAGE_TARGET_NAME}.profdata - -show-line-counts-or-regions ${EXCLUDE_REGEX} - DEPENDS ccov-processing-${target_code_coverage_COVERAGE_TARGET_NAME}) - - # Print out a summary of the coverage information to the command line - add_custom_target( - ccov-report-${target_code_coverage_COVERAGE_TARGET_NAME} - COMMAND - ${LLVM_COV_PATH} report $ ${SO_OBJECTS} - -instr-profile=${target_code_coverage_COVERAGE_TARGET_NAME}.profdata - ${EXCLUDE_REGEX} - DEPENDS ccov-processing-${target_code_coverage_COVERAGE_TARGET_NAME}) - - # Generates HTML output of the coverage information for perusal - add_custom_target( - ccov-${target_code_coverage_COVERAGE_TARGET_NAME} - COMMAND - ${LLVM_COV_PATH} show $ ${SO_OBJECTS} - -instr-profile=${target_code_coverage_COVERAGE_TARGET_NAME}.profdata - -show-line-counts-or-regions - -output-dir=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/${target_code_coverage_COVERAGE_TARGET_NAME} - -format="html" ${EXCLUDE_REGEX} - DEPENDS ccov-processing-${target_code_coverage_COVERAGE_TARGET_NAME}) - - elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" - OR CMAKE_CXX_COMPILER_ID MATCHES "GNU") - set(COVERAGE_INFO - "${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/${target_code_coverage_COVERAGE_TARGET_NAME}.info" - ) - - # Run the executable, generating coverage information - add_custom_target( - ccov-run-${target_code_coverage_COVERAGE_TARGET_NAME} - COMMAND $ ${target_code_coverage_ARGS} - DEPENDS ccov-preprocessing ${TARGET_NAME}) - - # Generate exclusion string for use - foreach(EXCLUDE_ITEM ${target_code_coverage_EXCLUDE}) - set(EXCLUDE_REGEX - ${EXCLUDE_REGEX} - --remove - ${COVERAGE_INFO} - '${EXCLUDE_ITEM}') - endforeach() - - if(EXCLUDE_REGEX) - set(EXCLUDE_COMMAND ${LCOV_PATH} ${EXCLUDE_REGEX} --output-file - ${COVERAGE_INFO}) - else() - set(EXCLUDE_COMMAND ;) - endif() - - if(NOT ${target_code_coverage_EXTERNAL}) - set(EXTERNAL_OPTION --no-external) - endif() - - # Capture coverage data - add_custom_target( - ccov-capture-${target_code_coverage_COVERAGE_TARGET_NAME} - COMMAND ${CMAKE_COMMAND} -E remove ${COVERAGE_INFO} - COMMAND ${LCOV_PATH} --directory ${CMAKE_BINARY_DIR} --zerocounters - COMMAND $ ${target_code_coverage_ARGS} - COMMAND - ${LCOV_PATH} --directory ${CMAKE_BINARY_DIR} --base-directory - ${CMAKE_SOURCE_DIR} --capture ${EXTERNAL_OPTION} --output-file - ${COVERAGE_INFO} - COMMAND ${EXCLUDE_COMMAND} - DEPENDS ccov-preprocessing ${TARGET_NAME}) - - # Generates HTML output of the coverage information for perusal - add_custom_target( - ccov-${target_code_coverage_COVERAGE_TARGET_NAME} - COMMAND - ${GENHTML_PATH} -o - ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/${target_code_coverage_COVERAGE_TARGET_NAME} - ${COVERAGE_INFO} - DEPENDS ccov-capture-${target_code_coverage_COVERAGE_TARGET_NAME}) - endif() - - add_custom_command( - TARGET ccov-${target_code_coverage_COVERAGE_TARGET_NAME} - POST_BUILD - COMMAND ; - COMMENT - "Open ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/${target_code_coverage_COVERAGE_TARGET_NAME}/index.html in your browser to view the coverage report." - ) - - # AUTO - if(target_code_coverage_AUTO) - if(NOT TARGET ccov) - add_custom_target(ccov) - endif() - add_dependencies(ccov ccov-${target_code_coverage_COVERAGE_TARGET_NAME}) - - if(NOT CMAKE_C_COMPILER_ID MATCHES "GNU" - OR NOT CMAKE_CXX_COMPILER_ID MATCHES "GNU") - if(NOT TARGET ccov-report) - add_custom_target(ccov-report) - endif() - add_dependencies( - ccov-report - ccov-report-${target_code_coverage_COVERAGE_TARGET_NAME}) - endif() - endif() - - # ALL - if(target_code_coverage_ALL) - if(NOT TARGET ccov-all-processing) - message( - FATAL_ERROR - "Calling target_code_coverage with 'ALL' must be after a call to 'add_code_coverage_all_targets'." - ) - endif() - - add_dependencies(ccov-all-processing - ccov-run-${target_code_coverage_COVERAGE_TARGET_NAME}) - endif() - endif() - endif() -endfunction() - -# Adds code coverage instrumentation to all targets in the current directory and -# any subdirectories. To add coverage instrumentation to only specific targets, -# use `target_code_coverage`. -function(add_code_coverage) - if(CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang" - OR CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?[Cc]lang") - add_compile_options(-fprofile-instr-generate -fcoverage-mapping) - add_link_options(-fprofile-instr-generate -fcoverage-mapping) - elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" - OR CMAKE_CXX_COMPILER_ID MATCHES "GNU") - add_compile_options(-fprofile-arcs -ftest-coverage) - link_libraries(gcov) - endif() -endfunction() - -# Adds the 'ccov-all' type targets that calls all targets added via -# `target_code_coverage` with the `ALL` parameter, but merges all the coverage -# data from them into a single large report instead of the numerous smaller -# reports. Also adds the ccov-all-capture Generates an all-merged.info file, for -# use with coverage dashboards (e.g. codecov.io, coveralls). -# ~~~ -# Optional: -# EXCLUDE - Excludes files of the regex patterns provided from coverage. -# ~~~ -function(add_code_coverage_all_targets) - # Argument parsing - set(multi_value_keywords EXCLUDE) - cmake_parse_arguments( - add_code_coverage_all_targets - "" - "" - "${multi_value_keywords}" - ${ARGN}) - - if(CODE_COVERAGE) - if(CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang" - OR CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?[Cc]lang") - - # Merge the profile data for all of the run executables - add_custom_target( - ccov-all-processing - COMMAND - ${LLVM_PROFDATA_PATH} merge -o - ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata -sparse `cat - ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/profraw.list`) - - # Regex exclude only available for LLVM >= 7 - if(LLVM_COV_VERSION VERSION_GREATER_EQUAL "7.0.0") - foreach(EXCLUDE_ITEM ${add_code_coverage_all_targets_EXCLUDE}) - set(EXCLUDE_REGEX ${EXCLUDE_REGEX} - -ignore-filename-regex='${EXCLUDE_ITEM}') - endforeach() - endif() - - # Print summary of the code coverage information to the command line - add_custom_target( - ccov-all-report - COMMAND - ${LLVM_COV_PATH} report `cat - ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list` - -instr-profile=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata - ${EXCLUDE_REGEX} - DEPENDS ccov-all-processing) - - # Export coverage information so continuous integration tools (e.g. - # Jenkins) can consume it - add_custom_target( - ccov-all-export - COMMAND - ${LLVM_COV_PATH} export `cat - ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list` - -instr-profile=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata - -format="text" ${EXCLUDE_REGEX} > - ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/coverage.json - DEPENDS ccov-all-processing) - - # Generate HTML output of all added targets for perusal - add_custom_target( - ccov-all - COMMAND - ${LLVM_COV_PATH} show `cat - ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list` - -instr-profile=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata - -show-line-counts-or-regions - -output-dir=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged - -format="html" ${EXCLUDE_REGEX} - DEPENDS ccov-all-processing) - - elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" - OR CMAKE_CXX_COMPILER_ID MATCHES "GNU") - set(COVERAGE_INFO "${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.info") - - # Nothing required for gcov - add_custom_target(ccov-all-processing COMMAND ;) - - # Exclusion regex string creation - set(EXCLUDE_REGEX) - foreach(EXCLUDE_ITEM ${add_code_coverage_all_targets_EXCLUDE}) - set(EXCLUDE_REGEX - ${EXCLUDE_REGEX} - --remove - ${COVERAGE_INFO} - '${EXCLUDE_ITEM}') - endforeach() - - if(EXCLUDE_REGEX) - set(EXCLUDE_COMMAND ${LCOV_PATH} ${EXCLUDE_REGEX} --output-file - ${COVERAGE_INFO}) - else() - set(EXCLUDE_COMMAND ;) - endif() - - # Capture coverage data - add_custom_target( - ccov-all-capture - COMMAND ${CMAKE_COMMAND} -E remove ${COVERAGE_INFO} - COMMAND ${LCOV_PATH} --directory ${CMAKE_BINARY_DIR} --capture - --output-file ${COVERAGE_INFO} - COMMAND ${EXCLUDE_COMMAND} - DEPENDS ccov-all-processing) - - # Generates HTML output of all targets for perusal - add_custom_target( - ccov-all - COMMAND ${GENHTML_PATH} -o ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged - ${COVERAGE_INFO} - DEPENDS ccov-all-capture) - - endif() - - add_custom_command( - TARGET ccov-all - POST_BUILD - COMMAND ; - COMMENT - "Open ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged/index.html in your browser to view the coverage report." - ) - endif() -endfunction() diff --git a/sql-odbc/src/opensearchenlist/CMakeLists.txt b/sql-odbc/src/opensearchenlist/CMakeLists.txt deleted file mode 100644 index 6e4c00524d..0000000000 --- a/sql-odbc/src/opensearchenlist/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -project(opensearchenlist) - -# Source files for opensearchenlist -set(SOURCE_FILES msdtc_enlist.cpp) -set(HEADER_FILES opensearch_enlist.h) - -# Generate static lib -add_library(opensearchenlist STATIC ${SOURCE_FILES} ${HEADER_FILES}) - -# Library dependencies -target_link_libraries(opensearchenlist kernel32 advapi32 Delayimp XOleHlp) - -# Platform specific library dependencies -if(WIN32) - # Windows specifiec - target_link_libraries(opensearchenlist wsock32 winspool user32 gdi32 comdlg32 shell32 uuid) -else() - # Unix specific -endif() diff --git a/sql-odbc/src/opensearchenlist/msdtc_enlist.cpp b/sql-odbc/src/opensearchenlist/msdtc_enlist.cpp deleted file mode 100644 index f427d837ad..0000000000 --- a/sql-odbc/src/opensearchenlist/msdtc_enlist.cpp +++ /dev/null @@ -1,1279 +0,0 @@ -#ifdef _HANDLE_ENLIST_IN_DTC_ - -#undef _MEMORY_DEBUG_ -#ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x0400 -#endif /* _WIN32_WINNT */ - -#define WIN32_LEAN_AND_MEAN -#include -#include -/*#include */ -#define _ESDTC_FUNCS_IMPORT_ -#include "connexp.h" - -/*#define _SLEEP_FOR_TEST_*/ -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif /* WIN32 */ - -#include -#define _MYLOG_FUNCS_IMPORT_ -#include "mylog.h" -#define _OPENSEARCH_ENLIST_FUNCS_IMPLEMENT_ -#include "opensearch_enlist.h" -#include "xalibname.h" - -#ifdef WIN32 -#ifndef snprintf -#define snprintf _snprintf -#endif /* snprintf */ -#endif /* WIN32 */ - -/* Define a type for defining a constant string expression */ -#ifndef CSTR -#define CSTR static const char *const -#endif /* CSTR */ - -EXTERN_C { - HINSTANCE s_hModule; /* Saved module handle. */ -} -/* This is where the Driver Manager attaches to this Driver */ -BOOL WINAPI DllMain(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved) { - switch (ul_reason_for_call) { - case DLL_PROCESS_ATTACH: - s_hModule = (HINSTANCE)hInst; /* Save for dialog boxes */ - break; - case DLL_PROCESS_DETACH: - mylog("DETACHING opensearch_enlist\n"); - break; - } - return TRUE; -} - -/* - * A comment About locks used in this module - * - * the locks should be acquired with stronger to weaker order. - * - * 1:ELOCK -- the strongest per IAsyncES object lock - * When the *isolated* or *dtcconn* member of an IAsyncES object - * is changed, this lock should be held. - * While an IAsyncES object accesses a es_odbc connection, - * this lock should be held. - * - * 2:[CONN_CS] -- per es_odbc connection lock - * This lock would be held for a pretty long time while accessing - * the es_odbc connection assigned to an IAsyncES object. You - * can use the connecion safely by holding a ELOCK for the - * IAsyncES object because the assignment is ensured to be - * fixed while the ELOCK is held. - * - * 3:LIFELOCK -- a global lock to ensure the lives of IAsyncES objects - * While this lock is held, IAsyncES objects would never die. - * - * 4:SLOCK -- the short term per IAsyncES object lock - * When any member of an IAsyncES object is changed, this lock - * should be held. - */ - -// #define _LOCK_DEBUG_ -static class INIT_CRIT { - public: - CRITICAL_SECTION life_cs; /* for asdum member of ConnectionClass */ - INIT_CRIT() { - InitializeCriticalSection(&life_cs); - } - ~INIT_CRIT() { - DeleteCriticalSection(&life_cs); - } -} init_crit; -#define LIFELOCK_ACQUIRE EnterCriticalSection(&init_crit.life_cs) -#define LIFELOCK_RELEASE LeaveCriticalSection(&init_crit.life_cs) - -/* - * Some helper macros about connection handling. - */ -#define CONN_CS_ACQUIRE(conn) EsDtc_lock_cntrl((conn), TRUE, FALSE) -#define TRY_CONN_CS_ACQUIRE(conn) EsDtc_lock_cntrl((conn), TRUE, TRUE) -#define CONN_CS_RELEASE(conn) EsDtc_lock_cntrl((conn), FALSE, FALSE) - -#define CONN_IS_IN_TRANS(conn) EsDtc_get_property((conn), inTrans) - -static const char *XidToText(const XID &xid, char *rtext) { - int glen = xid.gtrid_length, blen = xid.bqual_length; - int i, j; - - for (i = 0, j = 0; i < glen; i++, j += 2) - sprintf(rtext + j, "%02x", (unsigned char)xid.data[i]); - strcat(rtext, "-"); - j++; - for (; i < glen + blen; i++, j += 2) - sprintf(rtext + j, "%02x", (unsigned char)xid.data[i]); - return rtext; -} - -static LONG g_cComponents = 0; -static LONG g_cServerLocks = 0; - -// -// �ȉ���ITransactionResourceAsync�I�u�W�F�N�g�͔C�ӂ̃X���b�h���� -// ���R�ɃA�N�Z�X�”\�Ȃ悤�Ɏ�������B�eRequest�̌��ʂ�Ԃ����߂� -// �g�p����ITransactionEnlistmentAsync�C���^�[�t�F�C�X�����̂悤�� -// ��������Ă���i�Ǝv����A���L�Q�Ɓj�̂ŌĂяo����COM�̃A�p�[ -// �g�����g���ӎ�����(CoMarshalInterThreadInterfaceInStream/CoGetIn -// terfaceAndReleaseStream���g�p����j�K�v�͂Ȃ��B -// ����DLL���Ŏg�p����ITransactionResourceAsync��ITransactionEnlist -// mentAsync�̃C���^�[�t�F�C�X�|�C���^�[�͔C�ӂ̃X���b�h���璼�ڎg�p -// ���邱�Ƃ��ł���B -// - -// OLE Transactions Standard -// -// OLE Transactions is the Microsoft interface standard for transaction -// management. Applications use OLE Transactions-compliant interfaces to -// initiate, commit, abort, and inquire about transactions. Resource -// managers use OLE Transactions-compliant interfaces to enlist in -// transactions, to propagate transactions to other resource managers, -// to propagate transactions from process to process or from system to -// system, and to participate in the two-phase commit protocol. -// -// The Microsoft DTC system implements most OLE Transactions-compliant -// objects, interfaces, and methods. Resource managers that wish to use -// OLE Transactions must implement some OLE Transactions-compliant objects, -// interfaces, and methods. -// -// The OLE Transactions specification is based on COM but it differs in the -// following respects: -// -// OLE Transactions objects cannot be created using the COM CoCreate APIs. -// References to OLE Transactions objects are always direct. Therefore, -// no proxies or stubs are created for inter-apartment, inter-process, -// or inter-node calls and OLE Transactions references cannot be marshaled -// using standard COM marshaling. -// All references to OLE Transactions objects and their sinks are completely -// free threaded and cannot rely upon COM concurrency control models. -// For example, you cannot pass a reference to an IResourceManagerSink -// interface on a single-threaded apartment and expect the callback to occur -// only on the same single-threaded apartment. - -class IAsyncES : public ITransactionResourceAsync { - private: - IDtcToXaHelperSinglePipe *helper; - DWORD RMCookie; - void *dtcconn; - LONG refcnt; - CRITICAL_SECTION as_spin; // to make this object Both - CRITICAL_SECTION as_exec; // to make this object Both - XID xid; - bool isolated; - bool prepared; - bool done; - bool abort; - HANDLE eThread[3]; - bool eFin[3]; - bool requestAccepted; - HRESULT prepare_result; - HRESULT commit_result; -#ifdef _LOCK_DEBUG_ - int spin_cnt; - int cs_cnt; -#endif /* _LOCK_DEBUG_ */ - - public: - enum { PrepareExec = 0, CommitExec, AbortExec }; - - ITransactionEnlistmentAsync *enlist; - - HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, void **ppvObject); - ULONG STDMETHODCALLTYPE AddRef(void); - ULONG STDMETHODCALLTYPE Release(void); - - HRESULT STDMETHODCALLTYPE PrepareRequest(BOOL fRetaining, DWORD grfRM, - BOOL fWantMoniker, - BOOL fSinglePhase); - HRESULT STDMETHODCALLTYPE CommitRequest(DWORD grfRM, XACTUOW *pNewUOW); - HRESULT STDMETHODCALLTYPE AbortRequest(BOID *pboidReason, BOOL fRetaining, - XACTUOW *pNewUOW); - HRESULT STDMETHODCALLTYPE TMDown(void); - - IAsyncES(); - void SetHelper(IDtcToXaHelperSinglePipe *pHelper, DWORD dwRMCookie) { - helper = pHelper; - RMCookie = dwRMCookie; - } - - HRESULT RequestExec(DWORD type, HRESULT res); - HRESULT ReleaseConnection(void); - void SetConnection(void *sconn) { - SLOCK_ACQUIRE(); - dtcconn = sconn; - SLOCK_RELEASE(); - } - void SetXid(const XID *ixid) { - SLOCK_ACQUIRE(); - xid = *ixid; - SLOCK_RELEASE(); - } - void *separateXAConn(bool spinAcquired, bool continueConnection); - bool CloseThread(DWORD type); - - private: - ~IAsyncES(); - void SLOCK_ACQUIRE() { - EnterCriticalSection(&as_spin); - } - void SLOCK_RELEASE() { - LeaveCriticalSection(&as_spin); - } - void ELOCK_ACQUIRE() { - EnterCriticalSection(&as_exec); - } - void ELOCK_RELEASE() { - LeaveCriticalSection(&as_exec); - } - void *getLockedXAConn(void); - void *generateXAConn(bool spinAcquired); - void *isolateXAConn(bool spinAcquired, bool continueConnection); - void SetPrepareResult(HRESULT res) { - SLOCK_ACQUIRE(); - prepared = true; - prepare_result = res; - SLOCK_RELEASE(); - } - void SetDone(HRESULT); - void Wait_pThread(bool slock_hold); - void Wait_cThread(bool slock_hold, bool once); -}; - -IAsyncES::IAsyncES(void) - : helper(NULL), - RMCookie(0), - enlist(NULL), - dtcconn(NULL), - refcnt(1), - isolated(false), - done(false), - abort(false), - prepared(false), - requestAccepted(false) { - InterlockedIncrement(&g_cComponents); - InitializeCriticalSection(&as_spin); - InitializeCriticalSection(&as_exec); - eThread[0] = eThread[1] = eThread[2] = NULL; - eFin[0] = eFin[1] = eFin[2] = false; - memset(&xid, 0, sizeof(xid)); -#ifdef _LOCK_DEBUG_ - spin_cnt = 0; - cs_cnt = 0; -#endif /* _LOCK_DEBUG_ */ -} - -// -// invoked from *delete*. -// When entered ELOCK -> LIFELOCK -> SLOCK are held -// and they are released. -// -IAsyncES::~IAsyncES(void) { - void *fconn = NULL; - - if (dtcconn) { - if (isolated) - fconn = dtcconn; - EsDtc_set_async(dtcconn, NULL); - dtcconn = NULL; - } - SLOCK_RELEASE(); - LIFELOCK_RELEASE; - if (fconn) { - mylog("IAsyncES Destructor is freeing the connection\n"); - EsDtc_free_connect(fconn); - } - DeleteCriticalSection(&as_spin); - ELOCK_RELEASE(); - DeleteCriticalSection(&as_exec); - InterlockedDecrement(&g_cComponents); -} -HRESULT STDMETHODCALLTYPE IAsyncES::QueryInterface(REFIID riid, - void **ppvObject) { - mylog("%p QueryInterface called\n", this); - if (riid == IID_IUnknown || riid == IID_ITransactionResourceAsync) { - *ppvObject = this; - AddRef(); - return S_OK; - } - *ppvObject = NULL; - return E_NOINTERFACE; -} -// -// acquire/releases SLOCK. -// -ULONG STDMETHODCALLTYPE IAsyncES::AddRef(void) { - mylog("%p->AddRef called\n", this); - SLOCK_ACQUIRE(); - refcnt++; - SLOCK_RELEASE(); - return refcnt; -} -// -// acquire/releases [ELOCK -> LIFELOCK -> ] SLOCK. -// -ULONG STDMETHODCALLTYPE IAsyncES::Release(void) { - mylog("%p->Release called refcnt=%d\n", this, refcnt); - SLOCK_ACQUIRE(); - refcnt--; - if (refcnt <= 0) { - SLOCK_RELEASE(); - ELOCK_ACQUIRE(); - LIFELOCK_ACQUIRE; - SLOCK_ACQUIRE(); - if (refcnt <= 0) { - const int refcnt_copy = refcnt; - mylog("delete %p\n", this); - delete this; - return refcnt_copy; - } else { - SLOCK_RELEASE(); - LIFELOCK_RELEASE; - ELOCK_RELEASE(); - } - } else - SLOCK_RELEASE(); - return refcnt; -} - -// -// Acquire/release SLOCK. -// -void IAsyncES::Wait_pThread(bool slock_hold) { - mylog("Wait_pThread %d in\n", slock_hold); - HANDLE wThread; - int wait_idx = PrepareExec; - DWORD ret; - - if (!slock_hold) - SLOCK_ACQUIRE(); - while (NULL != (wThread = eThread[wait_idx]) && !eFin[wait_idx]) { - SLOCK_RELEASE(); - ret = WaitForSingleObject(wThread, 2000); - SLOCK_ACQUIRE(); - if (WAIT_TIMEOUT != ret) - eFin[wait_idx] = true; - } - if (!slock_hold) - SLOCK_RELEASE(); - mylog("Wait_pThread out\n"); -} - -// -// Acquire/releases SLOCK. -// -void IAsyncES::Wait_cThread(bool slock_hold, bool once) { - HANDLE wThread; - int wait_idx; - DWORD ret; - - mylog("Wait_cThread %d,%d in\n", slock_hold, once); - if (!slock_hold) - SLOCK_ACQUIRE(); - if (NULL != eThread[CommitExec]) - wait_idx = CommitExec; - else - wait_idx = AbortExec; - while (NULL != (wThread = eThread[wait_idx]) && !eFin[wait_idx]) { - SLOCK_RELEASE(); - ret = WaitForSingleObject(wThread, 2000); - SLOCK_ACQUIRE(); - if (WAIT_TIMEOUT != ret) - eFin[wait_idx] = true; - else if (once) - break; - } - if (!slock_hold) - SLOCK_RELEASE(); - mylog("Wait_cThread out\n"); -} - -/* Processing Prepare/Commit Request */ -typedef struct RequestPara { - DWORD type; - LPVOID lpr; - HRESULT res; -} RequestPara; - -// -// Acquire/releases LIFELOCK -> SLOCK. -// may acquire/release ELOCK. -// -void IAsyncES::SetDone(HRESULT res) { - LIFELOCK_ACQUIRE; - SLOCK_ACQUIRE(); - done = true; - if (E_FAIL == res || E_UNEXPECTED == res) - abort = true; - requestAccepted = true; - commit_result = res; - if (dtcconn) { - EsDtc_set_async(dtcconn, NULL); - if (isolated) { - SLOCK_RELEASE(); - LIFELOCK_RELEASE; - ELOCK_ACQUIRE(); - if (dtcconn) { - mylog("Freeing isolated connection=%p\n", dtcconn); - EsDtc_free_connect(dtcconn); - SetConnection(NULL); - } - ELOCK_RELEASE(); - } else { - dtcconn = NULL; - SLOCK_RELEASE(); - LIFELOCK_RELEASE; - } - } else { - SLOCK_RELEASE(); - LIFELOCK_RELEASE; - } -} - -// -// Acquire/releases [ELOCK -> LIFELOCK -> ] SLOCK. -// -void *IAsyncES::generateXAConn(bool spinAcquired) { - mylog("generateXAConn isolated=%d dtcconn=%p\n", isolated, dtcconn); - if (!spinAcquired) - SLOCK_ACQUIRE(); - if (isolated || done) { - SLOCK_RELEASE(); - return dtcconn; - } - SLOCK_RELEASE(); - ELOCK_ACQUIRE(); - LIFELOCK_ACQUIRE; - SLOCK_ACQUIRE(); - if (dtcconn && !isolated && !done && prepared) { - void *sconn = dtcconn; - - dtcconn = EsDtc_isolate(sconn, useAnotherRoom); - isolated = true; - SLOCK_RELEASE(); - LIFELOCK_RELEASE; - // EsDtc_connect(dtcconn); may be called in getLockedXAConn - } else { - SLOCK_RELEASE(); - LIFELOCK_RELEASE; - } - ELOCK_RELEASE(); - return dtcconn; -} - -// -// Acquire/releases [ELOCK -> LIFELOCK -> ] SLOCK. -// -void *IAsyncES::isolateXAConn(bool spinAcquired, bool continueConnection) { - void *sconn; - - mylog("isolateXAConn isolated=%d dtcconn=%p\n", isolated, dtcconn); - if (!spinAcquired) - SLOCK_ACQUIRE(); - if (isolated || done || NULL == dtcconn) { - SLOCK_RELEASE(); - return dtcconn; - } - SLOCK_RELEASE(); - ELOCK_ACQUIRE(); - LIFELOCK_ACQUIRE; - SLOCK_ACQUIRE(); - if (isolated || done || NULL == dtcconn) { - SLOCK_RELEASE(); - LIFELOCK_RELEASE; - ELOCK_RELEASE(); - return dtcconn; - } - sconn = dtcconn; - - dtcconn = - EsDtc_isolate(sconn, continueConnection ? 0 : disposingConnection); - - isolated = true; - SLOCK_RELEASE(); - LIFELOCK_RELEASE; - if (continueConnection) { - EsDtc_connect(sconn); - } - ELOCK_RELEASE(); - return dtcconn; -} - -// -// Acquire/releases [ELOCK -> LIFELOCK -> ] SLOCK. -// -void *IAsyncES::separateXAConn(bool spinAcquired, bool continueConnection) { - mylog("%s isolated=%d dtcconn=%p\n", __FUNCTION__, isolated, dtcconn); - if (!spinAcquired) - SLOCK_ACQUIRE(); - if (prepared) - return generateXAConn(true); - else - return isolateXAConn(true, continueConnection); -} - -// -// [when entered] -// ELOCK is held. -// -// Acquire/releases SLOCK. -// Try to acquire CONN_CS also. -// -// [on exit] -// ELOCK is kept held. -// If the return connection != NULL -// the CONN_CS lock for the connection is held. -// -void *IAsyncES::getLockedXAConn() { - SLOCK_ACQUIRE(); - while (!done && !isolated && NULL != dtcconn) { - /* - * Note that COMMIT/ROLLBACK PREPARED command should be - * issued outside the transaction. - */ - if (!prepared || !CONN_IS_IN_TRANS(dtcconn)) { - if (TRY_CONN_CS_ACQUIRE(dtcconn)) { - if (prepared && CONN_IS_IN_TRANS(dtcconn)) { - CONN_CS_RELEASE(dtcconn); - } else - break; - } - } - separateXAConn(true, true); - SLOCK_ACQUIRE(); // SLOCK was released by separateXAConn() - } - SLOCK_RELEASE(); - if (isolated && NULL != dtcconn) { - CONN_CS_ACQUIRE(dtcconn); - if (!EsDtc_get_property(dtcconn, connected)) - EsDtc_connect(dtcconn); - } - return dtcconn; -} - -// -// Acquire/release ELOCK -> SLOCK. -// -HRESULT IAsyncES::RequestExec(DWORD type, HRESULT res) { - HRESULT ret; - bool bReleaseEnlist = false; - void *econn; - char esxid[258]; - - mylog("%p->RequestExec type=%d conn=%p\n", this, type, dtcconn); - XidToText(xid, esxid); -#ifdef _SLEEP_FOR_TEST_ - /*Sleep(2000);*/ -#endif /* _SLEEP_FOR_TEST_ */ - ELOCK_ACQUIRE(); - switch (type) { - case PrepareExec: - if (done || NULL == dtcconn) { - res = E_UNEXPECTED; - break; - } - if (econn = getLockedXAConn(), NULL != econn) { - EsDtc_set_property(econn, inprogress, (void *)1); - if (E_FAIL == res) - EsDtc_one_phase_operation(econn, ABORT_GLOBAL_TRANSACTION); - else if (XACT_S_SINGLEPHASE == res) { - if (!EsDtc_one_phase_operation(econn, ONE_PHASE_COMMIT)) - res = E_FAIL; - } else { - if (!EsDtc_two_phase_operation(econn, PREPARE_TRANSACTION, - esxid)) - res = E_FAIL; - } - EsDtc_set_property(econn, inprogress, (void *)0); - CONN_CS_RELEASE(econn); - } - if (S_OK != res) { - SetDone(res); - bReleaseEnlist = true; - } - ret = enlist->PrepareRequestDone(res, NULL, NULL); - SetPrepareResult(res); - break; - case CommitExec: - Wait_pThread(false); - if (E_FAIL != res) { - econn = getLockedXAConn(); - if (econn) { - EsDtc_set_property(econn, inprogress, (void *)1); - if (!EsDtc_two_phase_operation(econn, COMMIT_PREPARED, - esxid)) - res = E_FAIL; - EsDtc_set_property(econn, inprogress, (void *)0); - CONN_CS_RELEASE(econn); - } - } - SetDone(res); - ret = enlist->CommitRequestDone(res); - bReleaseEnlist = true; - break; - case AbortExec: - Wait_pThread(false); - if (prepared && !done) { - econn = getLockedXAConn(); - if (econn) { - EsDtc_set_property(econn, inprogress, (void *)1); - if (!EsDtc_two_phase_operation(econn, ROLLBACK_PREPARED, - esxid)) - res = E_FAIL; - EsDtc_set_property(econn, inprogress, (void *)0); - CONN_CS_RELEASE(econn); - } - } - SetDone(res); - ret = enlist->AbortRequestDone(res); - bReleaseEnlist = true; - break; - default: - ret = -1; - } - if (bReleaseEnlist) { - helper->ReleaseRMCookie(RMCookie, TRUE); - enlist->Release(); - } - ELOCK_RELEASE(); - mylog("%p->Done ret=%d\n", this, ret); - return ret; -} - -// -// Acquire/releses SLOCK -// or [ELOCK -> LIFELOCK -> ] SLOCK. -// -HRESULT IAsyncES::ReleaseConnection(void) { - mylog("%p->ReleaseConnection\n", this); - - SLOCK_ACQUIRE(); - if (isolated || NULL == dtcconn) { - SLOCK_RELEASE(); - return SQL_SUCCESS; - } - Wait_pThread(true); - if (NULL != eThread[CommitExec] || NULL != eThread[AbortExec] - || requestAccepted) { - if (!done) - Wait_cThread(true, true); - } - if (!isolated && !done && dtcconn - && EsDtc_get_property(dtcconn, connected)) { - isolateXAConn(true, false); - } else - SLOCK_RELEASE(); - mylog("%p->ReleaseConnection exit\n", this); - return SQL_SUCCESS; -} - -EXTERN_C static unsigned WINAPI DtcRequestExec(LPVOID para); -EXTERN_C static void __cdecl ClosePrepareThread(LPVOID para); -EXTERN_C static void __cdecl CloseCommitThread(LPVOID para); -EXTERN_C static void __cdecl CloseAbortThread(LPVOID para); - -// -// Acquire/release [ELOCK -> ] SLOCK. -// -HRESULT STDMETHODCALLTYPE IAsyncES::PrepareRequest(BOOL fRetaining, DWORD grfRM, - BOOL fWantMoniker, - BOOL fSinglePhase) { - HRESULT ret, res; - RequestPara *reqp; - const DWORD reqtype = PrepareExec; - - mylog("%p PrepareRequest called grhRM=%d enl=%p\n", this, grfRM, enlist); - SLOCK_ACQUIRE(); - if (dtcconn && 0 != EsDtc_get_property(dtcconn, errorNumber)) - res = ret = E_FAIL; - else { - ret = S_OK; - if (fSinglePhase) { - res = XACT_S_SINGLEPHASE; - mylog("XACT is singlePhase\n"); - } else - res = S_OK; - } - SLOCK_RELEASE(); - ELOCK_ACQUIRE(); -#ifdef _SLEEP_FOR_TEST_ - Sleep(2000); -#endif /* _SLEEP_FOR_TEST_ */ - reqp = new RequestPara; - reqp->type = reqtype; - reqp->lpr = (LPVOID)this; - reqp->res = res; -#define DONT_CALL_RETURN_FROM_HERE ? ? ? - AddRef(); - HANDLE hThread = - (HANDLE)_beginthreadex(NULL, 0, DtcRequestExec, reqp, 0, NULL); - if (NULL == hThread) { - delete (reqp); - ret = E_FAIL; - } else { - SLOCK_ACQUIRE(); - eThread[reqtype] = hThread; - SLOCK_RELEASE(); - /* - * We call here _beginthread not _beginthreadex - * so as not to call CloseHandle() to clean up - * the thread. - */ - _beginthread(ClosePrepareThread, 0, (void *)this); - } - ELOCK_RELEASE(); - Release(); -#undef return - return ret; -} -// -// Acquire/release [ELOCK -> ] SLOCK. -// -HRESULT STDMETHODCALLTYPE IAsyncES::CommitRequest(DWORD grfRM, - XACTUOW *pNewUOW) { - HRESULT res = S_OK, ret = S_OK; - RequestPara *reqp; - const DWORD reqtype = CommitExec; - - mylog("%p CommitRequest called grfRM=%d enl=%p\n", this, grfRM, enlist); - - SLOCK_ACQUIRE(); - if (!prepared || done) - ret = E_UNEXPECTED; - else if (S_OK != prepare_result) - ret = E_UNEXPECTED; - SLOCK_RELEASE(); - if (S_OK != ret) - return ret; -#define DONT_CALL_RETURN_FROM_HERE ? ? ? - AddRef(); - ELOCK_ACQUIRE(); -#ifdef _SLEEP_FOR_TEST_ - Sleep(1000); -#endif /* _SLEEP_FOR_TEST_ */ - reqp = new RequestPara; - reqp->type = reqtype; - reqp->lpr = (LPVOID)this; - reqp->res = res; - enlist->AddRef(); - HANDLE hThread = - (HANDLE)_beginthreadex(NULL, 0, DtcRequestExec, reqp, 0, NULL); - if (NULL == hThread) { - delete (reqp); - enlist->Release(); - ret = E_FAIL; - } else { - SLOCK_ACQUIRE(); - eThread[reqtype] = hThread; - SLOCK_RELEASE(); - /* - * We call here _beginthread not _beginthreadex - * so as not to call CloseHandle() to clean up - * the thread. - */ - _beginthread(CloseCommitThread, 0, (void *)this); - } - mylog("CommitRequest ret=%d\n", ret); - requestAccepted = true; - ELOCK_RELEASE(); - Release(); -#undef return - return ret; -} -// -// Acquire/release [ELOCK -> ] SLOCK. -// -HRESULT STDMETHODCALLTYPE IAsyncES::AbortRequest(BOID *pboidReason, - BOOL fRetaining, - XACTUOW *pNewUOW) { - HRESULT res = S_OK, ret = S_OK; - RequestPara *reqp; - const DWORD reqtype = AbortExec; - - mylog("%p AbortRequest called\n", this); - SLOCK_ACQUIRE(); - if (done) - ret = E_UNEXPECTED; - else if (prepared && S_OK != prepare_result) - ret = E_UNEXPECTED; - SLOCK_RELEASE(); - if (S_OK != ret) - return ret; -#ifdef __APPLE__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wkeyword-macro" -#endif // __APPLE__ -#define return DONT_CALL_RETURN_FROM_HERE ? ? ? -#ifdef __APPLE__ -#pragma clang diagnostic pop -#endif // __APPLE__ - AddRef(); - ELOCK_ACQUIRE(); - if (!prepared && dtcconn) { - EsDtc_set_property(dtcconn, inprogress, (void *)1); - EsDtc_one_phase_operation(dtcconn, ONE_PHASE_ROLLBACK); - EsDtc_set_property(dtcconn, inprogress, (void *)0); - } - reqp = new RequestPara; - reqp->type = reqtype; - reqp->lpr = (LPVOID)this; - reqp->res = res; - enlist->AddRef(); - HANDLE hThread = - (HANDLE)_beginthreadex(NULL, 0, DtcRequestExec, reqp, 0, NULL); - if (NULL == hThread) { - delete (reqp); - enlist->Release(); - ret = E_FAIL; - } else { - SLOCK_ACQUIRE(); - eThread[reqtype] = hThread; - SLOCK_RELEASE(); - /* - * We call here _beginthread not _beginthreadex - * so as not to call CloseHandle() to clean up - * the thread. - */ - _beginthread(CloseAbortThread, 0, (void *)this); - } - mylog("AbortRequest ret=%d\n", ret); - requestAccepted = true; - ELOCK_RELEASE(); - Release(); -#undef return - return ret; -} -HRESULT STDMETHODCALLTYPE IAsyncES::TMDown(void) { - mylog("%p TMDown called\n", this); - return S_OK; -} - -bool IAsyncES::CloseThread(DWORD type) { - CSTR func = "CloseThread"; - HANDLE th; - DWORD ret, excode = S_OK; - bool rls_async = false; - - mylog("%s for %p thread=%d\n", func, this, eThread[type]); - if (th = eThread[type], NULL == th || eFin[type]) - return false; - ret = WaitForSingleObject(th, INFINITE); - if (WAIT_OBJECT_0 == ret) { - switch (type) { - case IAsyncES::AbortExec: - case IAsyncES::CommitExec: - rls_async = true; - break; - default: - GetExitCodeThread(th, &excode); - if (S_OK != excode) - rls_async = true; - } - SLOCK_ACQUIRE(); - eThread[type] = NULL; - eFin[type] = true; - SLOCK_RELEASE(); - CloseHandle(th); - } - mylog("%s ret=%d\n", func, ret); - return rls_async; -} - -EXTERN_C static void __cdecl ClosePrepareThread(LPVOID para) { - CSTR func = "ClosePrepareThread"; - IAsyncES *async = (IAsyncES *)para; - bool release; - - mylog("%s for %p", func, async); - if (release = async->CloseThread(IAsyncES::PrepareExec), release) - async->Release(); - mylog("%s release=%d\n", func, release); -} - -EXTERN_C static void __cdecl CloseCommitThread(LPVOID para) { - CSTR func = "CloseCommitThread"; - IAsyncES *async = (IAsyncES *)para; - bool release; - - mylog("%s for %p", func, async); - if (release = async->CloseThread(IAsyncES::CommitExec), release) - async->Release(); - mylog("%s release=%d\n", func, release); -} - -EXTERN_C static void __cdecl CloseAbortThread(LPVOID para) { - CSTR func = "CloseAbortThread"; - IAsyncES *async = (IAsyncES *)para; - bool release; - - mylog("%s for %p", func, async); - if (release = async->CloseThread(IAsyncES::AbortExec), release) - async->Release(); - mylog("%s release=%d\n", func, release); -} - -EXTERN_C static unsigned WINAPI DtcRequestExec(LPVOID para) { - RequestPara *reqp = (RequestPara *)para; - DWORD type = reqp->type; - IAsyncES *async = (IAsyncES *)reqp->lpr; - HRESULT res = reqp->res, ret; - - mylog("DtcRequestExec type=%d", reqp->type); - delete (reqp); - ret = async->RequestExec(type, res); - mylog(" Done ret=%d\n", ret); - return ret; -} - -CSTR regKey = "SOFTWARE\\Microsoft\\MSDTC\\XADLL"; - -static int regkeyCheck(const char *xalibname, const char *xalibpath) { - int retcode = 0; - LONG ret; - HKEY sKey; - DWORD rSize; - - ret = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, regKey, 0, - KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_WOW64_64KEY, - &sKey); - switch (ret) { - case ERROR_SUCCESS: - break; - case ERROR_FILE_NOT_FOUND: - ret = ::RegCreateKeyEx(HKEY_LOCAL_MACHINE, regKey, 0, NULL, - REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, - NULL, &sKey, NULL); - mylog("%s:CreateKeyEx ret=%d\n", __FUNCTION__, ret); - break; - default: - mylog("%s:OpenKeyEx ret=%d\n", __FUNCTION__, ret); - } - if (ERROR_SUCCESS != ret) - return -1; - else { - char keyval[1024]; - - rSize = sizeof(keyval); - switch (ret = ::RegQueryValueEx(sKey, xalibname, NULL, NULL, - (LPBYTE)keyval, &rSize)) { - case ERROR_SUCCESS: - if (rSize > 0) { - if (0 == _stricmp(keyval, xalibpath)) - break; - mylog("%s:XADLL value %s is different from %s\n", - __FUNCTION__, keyval, xalibpath); - if (IsWow64()) { - mylog( - "%s:avoid RegSetValue operation from wow64 " - "process\n", - __FUNCTION__); - break; - } - } - case ERROR_FILE_NOT_FOUND: - mylog("%s:Setting value %s\n", __FUNCTION__, xalibpath); - ret = ::RegSetValueEx(sKey, xalibname, 0, REG_SZ, - (CONST BYTE *)xalibpath, - (DWORD)strlen(xalibpath) + 1); - if (ERROR_SUCCESS == ret) - retcode = 1; - else { - retcode = -1; - mylog("%s:SetValuEx ret=%d\n", __FUNCTION__, ret); - } - break; - default: - retcode = -1; - mylog("%s:QueryValuEx ret=%d\n", __FUNCTION__, ret); - break; - } - ::RegCloseKey(sKey); - } - return retcode; -} - -RETCODE static EnlistInDtc_1pipe(void *conn, ITransaction *pTra, - ITransactionDispenser *pDtc, int method) { - CSTR func = "EnlistInDtc_1pipe"; - static IDtcToXaHelperSinglePipe *pHelper = NULL; - ITransactionResourceAsync *pRes = NULL; - IAsyncES *asdum; - HRESULT res; - DWORD dwRMCookie; - XID xid; - const char *xalibname = GetXaLibName(); - const char *xalibpath = GetXaLibPath(); - - int recovLvl; - char errmsg[256]; - char reason[128]; - - if (!pHelper) { - res = pDtc->QueryInterface(IID_IDtcToXaHelperSinglePipe, - (void **)&pHelper); - if (res != S_OK || !pHelper) { - mylog("DtcToXaHelperSingelPipe get error %d\n", res); - pHelper = NULL; - return SQL_ERROR; - } - } - res = (NULL != (asdum = new IAsyncES)) ? S_OK : E_FAIL; - if (S_OK != res) { - mylog("CoCreateInstance error %d\n", res); - return SQL_ERROR; - } - - recovLvl = EsDtc_is_recovery_available(conn, reason, sizeof(reason)); - switch (method) { - case DTC_CHECK_BEFORE_LINK: - if (0 == recovLvl) { - snprintf(errmsg, sizeof(errmsg), - "%s is unavailable in distributed transactions", - reason); - EsDtc_set_error(conn, errmsg, func); - return SQL_ERROR; - } - } - /*mylog("dllname=%s dsn=%s\n", xalibname, conn->connInfo.dsn); res = 0;*/ - char dtcname[1024]; - EsDtc_create_connect_string(conn, dtcname, sizeof(dtcname)); - - bool confirmedRegkey = false, confirmingLink = false, xarmerr = false; - char error_header[64]; - while (true) { - res = pHelper->XARMCreate(dtcname, (char *)xalibname, &dwRMCookie); - - mylog("XARMcreate error code=%x (%d %d)\n", res, confirmedRegkey, - confirmingLink); - xarmerr = true; - if (!confirmingLink) - snprintf(error_header, sizeof(error_header), - "XARMcreate error code=%x", res); - switch (res) { - case S_OK: - if (confirmingLink) { - switch (recovLvl) { - case 0: - snprintf(errmsg, sizeof(errmsg), - "%s:%s is currently unavailable in " - "distributed transactions", - error_header, reason); - break; - case -1: - snprintf( - errmsg, sizeof(errmsg), - "%s:Possibly you connect to the database whose " - "authentication method is %s or ident", - error_header, reason); - break; - case 1: - snprintf( - errmsg, sizeof(errmsg), - "%s:Are you trying to connect to the database " - "whose authentication method is ident?", - error_header); - break; - } - } else - xarmerr = false; - break; - case XACT_E_XA_TX_DISABLED: - snprintf(errmsg, sizeof(errmsg), - "%s:Please enable XA transaction in MSDTC security " - "configuration", - error_header); - break; - case XACT_E_TMNOTAVAILABLE: - snprintf(errmsg, sizeof(errmsg), - "%s:Please start Distributed Transaction Coordinator " - "service", - error_header); - break; - case E_FAIL: - if (!confirmedRegkey) { - int retcode = regkeyCheck(xalibname, xalibpath); - confirmedRegkey = true; - if (retcode > 0) - continue; - } - switch (method) { - case DTC_CHECK_RM_CONNECTION: - if (!confirmingLink) { - confirmingLink = true; - strcat(dtcname, ";" KEYWORD_DTC_CHECK "=0"); - continue; - } - default: - snprintf(errmsg, sizeof(errmsg), - "%s:Failed to link with DTC service. Please " - "look at the log of Event Viewer etc.", - error_header); - } - break; - case XACT_E_CONNECTION_DOWN: - snprintf(errmsg, sizeof(errmsg), - "%s:Lost connection with DTC transaction " - "manager\nMSDTC has some trouble?", - error_header); - break; - default: - snprintf(errmsg, sizeof(errmsg), "%s\n", error_header); - break; - } - break; - } - if (xarmerr) { - EsDtc_set_error(conn, errmsg, func); - return SQL_ERROR; - } - - res = pHelper->ConvertTridToXID((DWORD *)pTra, dwRMCookie, &xid); - if (res != S_OK) { - mylog("ConvertTridToXid error %d\n", res); - return SQL_ERROR; - } - { - char esxid[258]; - XidToText(xid, esxid); - mylog("ConvertTridToXID -> %s\n", esxid); - } - asdum->SetXid(&xid); - /* Create an IAsyncES instance by myself */ - /* DLLGetClassObject(GUID_IAsyncES, IID_ITransactionResourceAsync, (void **) - * &asdum); */ - - asdum->SetHelper(pHelper, dwRMCookie); - res = pHelper->EnlistWithRM(dwRMCookie, pTra, asdum, &asdum->enlist); - if (res != S_OK) { - mylog("EnlistWithRM error %d\n", res); - pHelper->ReleaseRMCookie(dwRMCookie, TRUE); - return SQL_ERROR; - } - - mylog("asdum=%p start transaction\n", asdum); - asdum->SetConnection(conn); - LIFELOCK_ACQUIRE; - EsDtc_set_async(conn, asdum); - LIFELOCK_RELEASE; - - return SQL_SUCCESS; -} - -EXTERN_C RETCODE IsolateDtcConn(void *conn, BOOL continueConnection) { - IAsyncES *async; - - LIFELOCK_ACQUIRE; - if (async = (IAsyncES *)EsDtc_get_async(conn), NULL != async) { - if (EsDtc_get_property(conn, idleInGlobalTransaction)) { - async->AddRef(); - LIFELOCK_RELEASE; - async->separateXAConn(false, continueConnection ? true : false); - async->Release(); - } else - LIFELOCK_RELEASE; - } else - LIFELOCK_RELEASE; - return SQL_SUCCESS; -} - -static ITransactionDispenser *getITransactionDispenser(DWORD grfOptions, - HRESULT *hres) { - static ITransactionDispenser *pDtc = NULL; - HRESULT res = S_OK; - - if (!pDtc) { - res = DtcGetTransactionManagerEx(NULL, NULL, IID_ITransactionDispenser, - - grfOptions, NULL, (void **)&pDtc); - if (FAILED(res)) { - mylog("DtcGetTransactionManager error %x\n", res); - pDtc = NULL; - } - } - if (hres) - *hres = res; - - return pDtc; -} - -EXTERN_C void *GetTransactionObject(HRESULT *hres) { - ITransaction *pTra = NULL; - ITransactionDispenser *pDtc = NULL; - - if (pDtc = getITransactionDispenser(OLE_TM_FLAG_NONE, hres), NULL == pDtc) - return pTra; - HRESULT res = pDtc->BeginTransaction(NULL, ISOLATIONLEVEL_READCOMMITTED, 0, - NULL, &pTra); - switch (res) { - case S_OK: - break; - default: - pTra = NULL; - } - if (hres) - *hres = res; - return pTra; -} - -EXTERN_C void ReleaseTransactionObject(void *pObj) { - ITransaction *pTra = (ITransaction *)pObj; - - if (!pTra) - return; - pTra->Release(); -} - -EXTERN_C RETCODE EnlistInDtc(void *conn, void *pTra, int method) { - ITransactionDispenser *pDtc = NULL; - RETCODE ret; - - if (!pTra) { - IAsyncES *asdum = (IAsyncES *)EsDtc_get_async(conn); - EsDtc_set_property(conn, enlisted, (void *)0); - return SQL_SUCCESS; - } - if (CONN_IS_IN_TRANS(conn)) { - EsDtc_one_phase_operation(conn, SHUTDOWN_LOCAL_TRANSACTION); - } - HRESULT hres; - pDtc = getITransactionDispenser(OLE_TM_FLAG_NODEMANDSTART, &hres); - if (!pDtc) { - char errmsg[128]; - snprintf(errmsg, sizeof(errmsg), - "enlistment error:DtcGetTransactionManager error code=%x", - hres); - EsDtc_set_error(conn, errmsg, __FUNCTION__); - return SQL_ERROR; - } - ret = EnlistInDtc_1pipe(conn, (ITransaction *)pTra, pDtc, method); - if (SQL_SUCCEEDED(ret)) - EsDtc_set_property(conn, enlisted, (void *)1); - return ret; -} - -EXTERN_C RETCODE DtcOnDisconnect(void *conn) { - mylog("DtcOnDisconnect\n"); - LIFELOCK_ACQUIRE; - IAsyncES *asdum = (IAsyncES *)EsDtc_get_async(conn); - if (asdum) { - asdum->AddRef(); - LIFELOCK_RELEASE; - asdum->ReleaseConnection(); - asdum->Release(); - } else - LIFELOCK_RELEASE; - return SQL_SUCCESS; -} - -#endif /* _HANDLE_ENLIST_IN_DTC_ */ diff --git a/sql-odbc/src/opensearchenlist/opensearch_enlist.h b/sql-odbc/src/opensearchenlist/opensearch_enlist.h deleted file mode 100644 index a87d402bd6..0000000000 --- a/sql-odbc/src/opensearchenlist/opensearch_enlist.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef __OPENSEARCH_ENLIST_H__ -#define __OPENSEARCH_ENLIST_H__ - -#ifdef __cplusplus -extern "C" { -#endif -#ifdef WIN32 -#ifdef _HANDLE_ENLIST_IN_DTC_ - -#undef DLL_DECLARE -#ifdef _OPENSEARCH_ENLIST_FUNCS_IMPLEMENT_ -#define DLL_DECLARE _declspec(dllexport) -#else -#ifdef _OPENSEARCH_ENLIST_FUNCS_IMPORT_ -#define DLL_DECLARE _declspec(dllimport) -#else -#define DLL_DECLARE -#endif /* _OPENSEARCH_ENLIST_FUNCS_IMPORT_ */ -#endif /* _OPENSEARCH_ENLIST_FUNCS_IMPLEMENT_ */ - -RETCODE EnlistInDtc(void *conn, void *pTra, int method); -RETCODE DtcOnDisconnect(void *); -RETCODE IsolateDtcConn(void *, BOOL continueConnection); -// for testing -DLL_DECLARE void *GetTransactionObject(HRESULT *hres); -DLL_DECLARE void ReleaseTransactionObject(void *); - -#endif /* _HANDLE_ENLIST_IN_DTC_ */ -#endif /* WIN32 */ - -#ifdef __cplusplus -} -#endif -#endif /* __OPENSEARCH_ENLIST_H__ */ diff --git a/sql-odbc/src/sqlodbc/CMakeLists.txt b/sql-odbc/src/sqlodbc/CMakeLists.txt deleted file mode 100644 index f926dfe644..0000000000 --- a/sql-odbc/src/sqlodbc/CMakeLists.txt +++ /dev/null @@ -1,62 +0,0 @@ -project(sqlodbc) - -# Source files for sqlodbc -set( SOURCE_FILES - bind.c columninfo.c connection.c convert.c - descriptor.c dlg_specific.c drvconn.c options.c - environ.c execute.c info.c loadlib.c - misc.c multibyte.c mylog.c tuple.c - parse.c results.c statement.c odbcapi30.c - qresult.c odbcapi30w.c opensearch_api30.c opensearch_types.c - opensearch_utility.cpp opensearch_communication.cpp opensearch_connection.cpp opensearch_odbc.c - opensearch_driver_connect.cpp opensearch_helper.cpp opensearch_info.cpp opensearch_parse_result.cpp - opensearch_semaphore.cpp opensearch_statement.cpp win_unicode.c odbcapi.c - odbcapiw.c opensearch_result_queue.cpp - ) -if(WIN32) -set(SOURCE_FILES ${SOURCE_FILES} dlg_wingui.c setup.c) -endif() - -set( HEADER_FILES - bind.h catfunc.h columninfo.h - convert.h descriptor.h dlg_specific.h drvconn.h - environ.h opensearch_apifunc.h opensearch_communication.h opensearch_parse_result.h - opensearch_connection.h opensearch_driver_connect.h opensearch_helper.h opensearch_info.h - opensearch_statement.h opensearch_types.h loadlib.h - misc.h multibyte.h mylog.h opensearch_utility.h - resource.h statement.h tuple.h unicode_support.h - opensearch_apifunc.h opensearch_odbc.h opensearch_semaphore.h qresult.h - version.h win_setup.h opensearch_result_queue.h - ) - -# Generate dll (SHARED) -if(WIN32) -set(RESOURCE_FILES opensearch_odbc.rc) -add_library(sqlodbc SHARED ${SOURCE_FILES} ${HEADER_FILES} ${RESOURCE_FILES} ${AWSSDK_LIB_DIR}) -else() -add_library(sqlodbc SHARED ${SOURCE_FILES} ${HEADER_FILES}) -endif() - -include_directories( - ${LIBRARY_DIRECTORY}/../src - ${CMAKE_CURRENT_SOURCE_DIR} - ${OPENSEARCHENLIST_SRC} - ${RABBIT_SRC} - ${RAPIDJSON_SRC} - ${AWSSDK_INCLUDE_DIR} - ) - -# Platform specific library dependencies -if(WIN32) - # Windows specifiec - target_link_libraries(sqlodbc wsock32 ws2_32 winmm user32 gdi32 legacy_stdio_definitions aws-cpp-sdk-core kernel32 advapi32 secur32 XOleHlp Wldap32 crypt32 Normaliz odbccp32 odbc32) - target_link_libraries(sqlodbc debug msvcrtd) - target_link_libraries(sqlodbc optimized msvcrt) -elseif(APPLE) - # Apple specific - target_link_libraries(sqlodbc iodbc iodbcinst aws-cpp-sdk-core) -elseif(UNIX) - # Unix specific - include_directories(/usr/src/linux-headers-5.0.0-27/include) - target_link_libraries(sqlodbc aws-cpp-sdk-core odbc odbcinst) -endif() diff --git a/sql-odbc/src/sqlodbc/LICENSE.txt b/sql-odbc/src/sqlodbc/LICENSE.txt deleted file mode 100644 index f2ff00e7d8..0000000000 --- a/sql-odbc/src/sqlodbc/LICENSE.txt +++ /dev/null @@ -1,961 +0,0 @@ - GNU LIBRARY GENERAL PUBLIC LICENSE - - Version 2, June 1991 - - - - Copyright (C) 1991 Free Software Foundation, Inc. - - 675 Mass Ave, Cambridge, MA 02139, USA - - Everyone is permitted to copy and distribute verbatim copies - - of this license document, but changing it is not allowed. - - - -[This is the first released version of the library GPL. It is - - numbered 2 because it goes with version 2 of the ordinary GPL.] - - - - Preamble - - - - The licenses for most software are designed to take away your - -freedom to share and change it. By contrast, the GNU General Public - -Licenses are intended to guarantee your freedom to share and change - -free software--to make sure the software is free for all its users. - - - - This license, the Library General Public License, applies to some - -specially designated Free Software Foundation software, and to any - -other libraries whose authors decide to use it. You can use it for - -your libraries, too. - - - - When we speak of free software, we are referring to freedom, not - -price. Our General Public Licenses are designed to make sure that you - -have the freedom to distribute copies of free software (and charge for - -this service if you wish), that you receive source code or can get it - -if you want it, that you can change the software or use pieces of it - -in new free programs; and that you know you can do these things. - - - - To protect your rights, we need to make restrictions that forbid - -anyone to deny you these rights or to ask you to surrender the rights. - -These restrictions translate to certain responsibilities for you if - -you distribute copies of the library, or if you modify it. - - - - For example, if you distribute copies of the library, whether gratis - -or for a fee, you must give the recipients all the rights that we gave - -you. You must make sure that they, too, receive or can get the source - -code. If you link a program with the library, you must provide - -complete object files to the recipients so that they can relink them - -with the library, after making changes to the library and recompiling - -it. And you must show them these terms so they know their rights. - - - - Our method of protecting your rights has two steps: (1) copyright - -the library, and (2) offer you this license which gives you legal - -permission to copy, distribute and/or modify the library. - - - - Also, for each distributor's protection, we want to make certain - -that everyone understands that there is no warranty for this free - -library. If the library is modified by someone else and passed on, we - -want its recipients to know that what they have is not the original - -version, so that any problems introduced by others will not reflect on - -the original authors' reputations. - - - - Finally, any free program is threatened constantly by software - -patents. We wish to avoid the danger that companies distributing free - -software will individually obtain patent licenses, thus in effect - -transforming the program into proprietary software. To prevent this, - -we have made it clear that any patent must be licensed for everyone's - -free use or not licensed at all. - - - - Most GNU software, including some libraries, is covered by the ordinary - -GNU General Public License, which was designed for utility programs. This - -license, the GNU Library General Public License, applies to certain - -designated libraries. This license is quite different from the ordinary - -one; be sure to read it in full, and don't assume that anything in it is - -the same as in the ordinary license. - - - - The reason we have a separate public license for some libraries is that - -they blur the distinction we usually make between modifying or adding to a - -program and simply using it. Linking a program with a library, without - -changing the library, is in some sense simply using the library, and is - -analogous to running a utility program or application program. However, in - -a textual and legal sense, the linked executable is a combined work, a - -derivative of the original library, and the ordinary General Public License - -treats it as such. - - - - Because of this blurred distinction, using the ordinary General - -Public License for libraries did not effectively promote software - -sharing, because most developers did not use the libraries. We - -concluded that weaker conditions might promote sharing better. - - - - However, unrestricted linking of non-free programs would deprive the - -users of those programs of all benefit from the free status of the - -libraries themselves. This Library General Public License is intended to - -permit developers of non-free programs to use free libraries, while - -preserving your freedom as a user of such programs to change the free - -libraries that are incorporated in them. (We have not seen how to achieve - -this as regards changes in header files, but we have achieved it as regards - -changes in the actual functions of the Library.) The hope is that this - -will lead to faster development of free libraries. - - - - The precise terms and conditions for copying, distribution and - -modification follow. Pay close attention to the difference between a - -"work based on the library" and a "work that uses the library". The - -former contains code derived from the library, while the latter only - -works together with the library. - - - - Note that it is possible for a library to be covered by the ordinary - -General Public License rather than by this special one. - - - - GNU LIBRARY GENERAL PUBLIC LICENSE - - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - - - 0. This License Agreement applies to any software library which - -contains a notice placed by the copyright holder or other authorized - -party saying it may be distributed under the terms of this Library - -General Public License (also called "this License"). Each licensee is - -addressed as "you". - - - - A "library" means a collection of software functions and/or data - -prepared so as to be conveniently linked with application programs - -(which use some of those functions and data) to form executables. - - - - The "Library", below, refers to any such software library or work - -which has been distributed under these terms. A "work based on the - -Library" means either the Library or any derivative work under - -copyright law: that is to say, a work containing the Library or a - -portion of it, either verbatim or with modifications and/or translated - -straightforwardly into another language. (Hereinafter, translation is - -included without limitation in the term "modification".) - - - - "Source code" for a work means the preferred form of the work for - -making modifications to it. For a library, complete source code means - -all the source code for all modules it contains, plus any associated - -interface definition files, plus the scripts used to control compilation - -and installation of the library. - - - - Activities other than copying, distribution and modification are not - -covered by this License; they are outside its scope. The act of - -running a program using the Library is not restricted, and output from - -such a program is covered only if its contents constitute a work based - -on the Library (independent of the use of the Library in a tool for - -writing it). Whether that is true depends on what the Library does - -and what the program that uses the Library does. - - - - 1. You may copy and distribute verbatim copies of the Library's - -complete source code as you receive it, in any medium, provided that - -you conspicuously and appropriately publish on each copy an - -appropriate copyright notice and disclaimer of warranty; keep intact - -all the notices that refer to this License and to the absence of any - -warranty; and distribute a copy of this License along with the - -Library. - - - - You may charge a fee for the physical act of transferring a copy, - -and you may at your option offer warranty protection in exchange for a - -fee. - - - - 2. You may modify your copy or copies of the Library or any portion - -of it, thus forming a work based on the Library, and copy and - -distribute such modifications or work under the terms of Section 1 - -above, provided that you also meet all of these conditions: - - - - a) The modified work must itself be a software library. - - - - b) You must cause the files modified to carry prominent notices - - stating that you changed the files and the date of any change. - - - - c) You must cause the whole of the work to be licensed at no - - charge to all third parties under the terms of this License. - - - - d) If a facility in the modified Library refers to a function or a - - table of data to be supplied by an application program that uses - - the facility, other than as an argument passed when the facility - - is invoked, then you must make a good faith effort to ensure that, - - in the event an application does not supply such function or - - table, the facility still operates, and performs whatever part of - - its purpose remains meaningful. - - - - (For example, a function in a library to compute square roots has - - a purpose that is entirely well-defined independent of the - - application. Therefore, Subsection 2d requires that any - - application-supplied function or table used by this function must - - be optional: if the application does not supply it, the square - - root function must still compute square roots.) - - - -These requirements apply to the modified work as a whole. If - -identifiable sections of that work are not derived from the Library, - -and can be reasonably considered independent and separate works in - -themselves, then this License, and its terms, do not apply to those - -sections when you distribute them as separate works. But when you - -distribute the same sections as part of a whole which is a work based - -on the Library, the distribution of the whole must be on the terms of - -this License, whose permissions for other licensees extend to the - -entire whole, and thus to each and every part regardless of who wrote - -it. - - - -Thus, it is not the intent of this section to claim rights or contest - -your rights to work written entirely by you; rather, the intent is to - -exercise the right to control the distribution of derivative or - -collective works based on the Library. - - - -In addition, mere aggregation of another work not based on the Library - -with the Library (or with a work based on the Library) on a volume of - -a storage or distribution medium does not bring the other work under - -the scope of this License. - - - - 3. You may opt to apply the terms of the ordinary GNU General Public - -License instead of this License to a given copy of the Library. To do - -this, you must alter all the notices that refer to this License, so - -that they refer to the ordinary GNU General Public License, version 2, - -instead of to this License. (If a newer version than version 2 of the - -ordinary GNU General Public License has appeared, then you can specify - -that version instead if you wish.) Do not make any other change in - -these notices. - - - - Once this change is made in a given copy, it is irreversible for - -that copy, so the ordinary GNU General Public License applies to all - -subsequent copies and derivative works made from that copy. - - - - This option is useful when you wish to copy part of the code of - -the Library into a program that is not a library. - - - - 4. You may copy and distribute the Library (or a portion or - -derivative of it, under Section 2) in object code or executable form - -under the terms of Sections 1 and 2 above provided that you accompany - -it with the complete corresponding machine-readable source code, which - -must be distributed under the terms of Sections 1 and 2 above on a - -medium customarily used for software interchange. - - - - If distribution of object code is made by offering access to copy - -from a designated place, then offering equivalent access to copy the - -source code from the same place satisfies the requirement to - -distribute the source code, even though third parties are not - -compelled to copy the source along with the object code. - - - - 5. A program that contains no derivative of any portion of the - -Library, but is designed to work with the Library by being compiled or - -linked with it, is called a "work that uses the Library". Such a - -work, in isolation, is not a derivative work of the Library, and - -therefore falls outside the scope of this License. - - - - However, linking a "work that uses the Library" with the Library - -creates an executable that is a derivative of the Library (because it - -contains portions of the Library), rather than a "work that uses the - -library". The executable is therefore covered by this License. - -Section 6 states terms for distribution of such executables. - - - - When a "work that uses the Library" uses material from a header file - -that is part of the Library, the object code for the work may be a - -derivative work of the Library even though the source code is not. - -Whether this is true is especially significant if the work can be - -linked without the Library, or if the work is itself a library. The - -threshold for this to be true is not precisely defined by law. - - - - If such an object file uses only numerical parameters, data - -structure layouts and accessors, and small macros and small inline - -functions (ten lines or less in length), then the use of the object - -file is unrestricted, regardless of whether it is legally a derivative - -work. (Executables containing this object code plus portions of the - -Library will still fall under Section 6.) - - - - Otherwise, if the work is a derivative of the Library, you may - -distribute the object code for the work under the terms of Section 6. - -Any executables containing that work also fall under Section 6, - -whether or not they are linked directly with the Library itself. - - - - 6. As an exception to the Sections above, you may also compile or - -link a "work that uses the Library" with the Library to produce a - -work containing portions of the Library, and distribute that work - -under terms of your choice, provided that the terms permit - -modification of the work for the customer's own use and reverse - -engineering for debugging such modifications. - - - - You must give prominent notice with each copy of the work that the - -Library is used in it and that the Library and its use are covered by - -this License. You must supply a copy of this License. If the work - -during execution displays copyright notices, you must include the - -copyright notice for the Library among them, as well as a reference - -directing the user to the copy of this License. Also, you must do one - -of these things: - - - - a) Accompany the work with the complete corresponding - - machine-readable source code for the Library including whatever - - changes were used in the work (which must be distributed under - - Sections 1 and 2 above); and, if the work is an executable linked - - with the Library, with the complete machine-readable "work that - - uses the Library", as object code and/or source code, so that the - - user can modify the Library and then relink to produce a modified - - executable containing the modified Library. (It is understood - - that the user who changes the contents of definitions files in the - - Library will not necessarily be able to recompile the application - - to use the modified definitions.) - - - - b) Accompany the work with a written offer, valid for at - - least three years, to give the same user the materials - - specified in Subsection 6a, above, for a charge no more - - than the cost of performing this distribution. - - - - c) If distribution of the work is made by offering access to copy - - from a designated place, offer equivalent access to copy the above - - specified materials from the same place. - - - - d) Verify that the user has already received a copy of these - - materials or that you have already sent this user a copy. - - - - For an executable, the required form of the "work that uses the - -Library" must include any data and utility programs needed for - -reproducing the executable from it. However, as a special exception, - -the source code distributed need not include anything that is normally - -distributed (in either source or binary form) with the major - -components (compiler, kernel, and so on) of the operating system on - -which the executable runs, unless that component itself accompanies - -the executable. - - - - It may happen that this requirement contradicts the license - -restrictions of other proprietary libraries that do not normally - -accompany the operating system. Such a contradiction means you cannot - -use both them and the Library together in an executable that you - -distribute. - - - - 7. You may place library facilities that are a work based on the - -Library side-by-side in a single library together with other library - -facilities not covered by this License, and distribute such a combined - -library, provided that the separate distribution of the work based on - -the Library and of the other library facilities is otherwise - -permitted, and provided that you do these two things: - - - - a) Accompany the combined library with a copy of the same work - - based on the Library, uncombined with any other library - - facilities. This must be distributed under the terms of the - - Sections above. - - - - b) Give prominent notice with the combined library of the fact - - that part of it is a work based on the Library, and explaining - - where to find the accompanying uncombined form of the same work. - - - - 8. You may not copy, modify, sublicense, link with, or distribute - -the Library except as expressly provided under this License. Any - -attempt otherwise to copy, modify, sublicense, link with, or - -distribute the Library is void, and will automatically terminate your - -rights under this License. However, parties who have received copies, - -or rights, from you under this License will not have their licenses - -terminated so long as such parties remain in full compliance. - - - - 9. You are not required to accept this License, since you have not - -signed it. However, nothing else grants you permission to modify or - -distribute the Library or its derivative works. These actions are - -prohibited by law if you do not accept this License. Therefore, by - -modifying or distributing the Library (or any work based on the - -Library), you indicate your acceptance of this License to do so, and - -all its terms and conditions for copying, distributing or modifying - -the Library or works based on it. - - - - 10. Each time you redistribute the Library (or any work based on the - -Library), the recipient automatically receives a license from the - -original licensor to copy, distribute, link with or modify the Library - -subject to these terms and conditions. You may not impose any further - -restrictions on the recipients' exercise of the rights granted herein. - -You are not responsible for enforcing compliance by third parties to - -this License. - - - - 11. If, as a consequence of a court judgment or allegation of patent - -infringement or for any other reason (not limited to patent issues), - -conditions are imposed on you (whether by court order, agreement or - -otherwise) that contradict the conditions of this License, they do not - -excuse you from the conditions of this License. If you cannot - -distribute so as to satisfy simultaneously your obligations under this - -License and any other pertinent obligations, then as a consequence you - -may not distribute the Library at all. For example, if a patent - -license would not permit royalty-free redistribution of the Library by - -all those who receive copies directly or indirectly through you, then - -the only way you could satisfy both it and this License would be to - -refrain entirely from distribution of the Library. - - - -If any portion of this section is held invalid or unenforceable under any - -particular circumstance, the balance of the section is intended to apply, - -and the section as a whole is intended to apply in other circumstances. - - - -It is not the purpose of this section to induce you to infringe any - -patents or other property right claims or to contest validity of any - -such claims; this section has the sole purpose of protecting the - -integrity of the free software distribution system which is - -implemented by public license practices. Many people have made - -generous contributions to the wide range of software distributed - -through that system in reliance on consistent application of that - -system; it is up to the author/donor to decide if he or she is willing - -to distribute software through any other system and a licensee cannot - -impose that choice. - - - -This section is intended to make thoroughly clear what is believed to - -be a consequence of the rest of this License. - - - - 12. If the distribution and/or use of the Library is restricted in - -certain countries either by patents or by copyrighted interfaces, the - -original copyright holder who places the Library under this License may add - -an explicit geographical distribution limitation excluding those countries, - -so that distribution is permitted only in or among countries not thus - -excluded. In such case, this License incorporates the limitation as if - -written in the body of this License. - - - - 13. The Free Software Foundation may publish revised and/or new - -versions of the Library General Public License from time to time. - -Such new versions will be similar in spirit to the present version, - -but may differ in detail to address new problems or concerns. - - - -Each version is given a distinguishing version number. If the Library - -specifies a version number of this License which applies to it and - -"any later version", you have the option of following the terms and - -conditions either of that version or of any later version published by - -the Free Software Foundation. If the Library does not specify a - -license version number, you may choose any version ever published by - -the Free Software Foundation. - - - - 14. If you wish to incorporate parts of the Library into other free - -programs whose distribution conditions are incompatible with these, - -write to the author to ask for permission. For software which is - -copyrighted by the Free Software Foundation, write to the Free - -Software Foundation; we sometimes make exceptions for this. Our - -decision will be guided by the two goals of preserving the free status - -of all derivatives of our free software and of promoting the sharing - -and reuse of software generally. - - - - NO WARRANTY - - - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO - -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY - -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE - -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE - -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME - -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU - -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR - -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE - -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING - -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A - -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF - -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH - -DAMAGES. - - - - END OF TERMS AND CONDITIONS - - - - Appendix: How to Apply These Terms to Your New Libraries - - - - If you develop a new library, and you want it to be of the greatest - -possible use to the public, we recommend making it free software that - -everyone can redistribute and change. You can do so by permitting - -redistribution under these terms (or, alternatively, under the terms of the - -ordinary General Public License). - - - - To apply these terms, attach the following notices to the library. It is - -safest to attach them to the start of each source file to most effectively - -convey the exclusion of warranty; and each file should have at least the - -"copyright" line and a pointer to where the full notice is found. - - - - - - Copyright (C) - - - - This library is free software; you can redistribute it and/or - - modify it under the terms of the GNU Library General Public - - License as published by the Free Software Foundation; either - - version 2 of the License, or (at your option) any later version. - - - - This library is distributed in the hope that it will be useful, - - but WITHOUT ANY WARRANTY; without even the implied warranty of - - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - - Library General Public License for more details. - - - - You should have received a copy of the GNU Library General Public - - License along with this library; if not, write to the Free - - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - - -Also add information on how to contact you by electronic and paper mail. - - - -You should also get your employer (if you work as a programmer) or your - -school, if any, to sign a "copyright disclaimer" for the library, if - -necessary. Here is a sample; alter the names: - - - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - - - , 1 April 1990 - - Ty Coon, President of Vice - - - -That's all there is to it! diff --git a/sql-odbc/src/sqlodbc/bind.c b/sql-odbc/src/sqlodbc/bind.c deleted file mode 100644 index 889c4c66c1..0000000000 --- a/sql-odbc/src/sqlodbc/bind.c +++ /dev/null @@ -1,687 +0,0 @@ -#include "bind.h" - -#include -#include - -#include "descriptor.h" -#include "environ.h" -#include "misc.h" -#include "multibyte.h" -#include "opensearch_apifunc.h" -#include "opensearch_types.h" -#include "qresult.h" -#include "statement.h" - -/* Associate a user-supplied buffer with a database column. */ -RETCODE SQL_API OPENSEARCHAPI_BindCol(HSTMT hstmt, SQLUSMALLINT icol, - SQLSMALLINT fCType, PTR rgbValue, - SQLLEN cbValueMax, SQLLEN *pcbValue) { - StatementClass *stmt = (StatementClass *)hstmt; - CSTR func = "OPENSEARCHAPI_BindCol"; - ARDFields *opts; - GetDataInfo *gdata_info; - BindInfoClass *bookmark; - RETCODE ret = SQL_SUCCESS; - - MYLOG(OPENSEARCH_TRACE, "entering...\n"); - - MYLOG(OPENSEARCH_DEBUG, "**** : stmt = %p, icol = %d\n", stmt, icol); - MYLOG(OPENSEARCH_DEBUG, "**** : fCType=%d rgb=%p valusMax=" FORMAT_LEN " pcb=%p\n", - fCType, rgbValue, cbValueMax, pcbValue); - - if (!stmt) { - SC_log_error(func, "", NULL); - return SQL_INVALID_HANDLE; - } - - opts = SC_get_ARDF(stmt); - if (stmt->status == STMT_EXECUTING) { - SC_set_error(stmt, STMT_SEQUENCE_ERROR, - "Can't bind columns while statement is still executing.", - func); - return SQL_ERROR; - } - -#ifdef __APPLE__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wkeyword-macro" -#endif // __APPLE__ -#define return DONT_CALL_RETURN_FROM_HERE ? ? ? -#ifdef __APPLE__ -#pragma clang diagnostic pop -#endif // __APPLE__ - SC_clear_error(stmt); - /* If the bookmark column is being bound, then just save it */ - if (icol == 0) { - bookmark = opts->bookmark; - if (rgbValue == NULL) { - if (bookmark) { - bookmark->buffer = NULL; - bookmark->used = bookmark->indicator = NULL; - } - } else { - /* Make sure it is the bookmark data type */ - switch (fCType) { - case SQL_C_BOOKMARK: - case SQL_C_VARBOOKMARK: - break; - default: - SC_set_error(stmt, STMT_PROGRAM_TYPE_OUT_OF_RANGE, - "Bind column 0 is not of type SQL_C_BOOKMARK", - func); - MYLOG( - OPENSEARCH_ERROR, - "Bind column 0 is type %d not of type SQL_C_BOOKMARK\n", - fCType); - ret = SQL_ERROR; - goto cleanup; - } - - bookmark = ARD_AllocBookmark(opts); - bookmark->buffer = rgbValue; - bookmark->used = bookmark->indicator = pcbValue; - bookmark->buflen = cbValueMax; - bookmark->returntype = fCType; - } - goto cleanup; - } - - /* - * Allocate enough bindings if not already done. Most likely, - * execution of a statement would have setup the necessary bindings. - * But some apps call BindCol before any statement is executed. - */ - if (icol > opts->allocated) - extend_column_bindings(opts, icol); - gdata_info = SC_get_GDTI(stmt); - if (icol > gdata_info->allocated) - extend_getdata_info(gdata_info, icol, FALSE); - - /* check to see if the bindings were allocated */ - if (!opts->bindings || !gdata_info->gdata) { - SC_set_error(stmt, STMT_NO_MEMORY_ERROR, - "Could not allocate memory for bindings.", func); - ret = SQL_ERROR; - goto cleanup; - } - - /* use zero based col numbers from here out */ - icol--; - - /* Reset for SQLGetData */ - GETDATA_RESET(gdata_info->gdata[icol]); - - if (rgbValue == NULL) { - /* we have to unbind the column */ - opts->bindings[icol].buflen = 0; - opts->bindings[icol].buffer = NULL; - opts->bindings[icol].used = opts->bindings[icol].indicator = NULL; - opts->bindings[icol].returntype = SQL_C_CHAR; - opts->bindings[icol].precision = 0; - opts->bindings[icol].scale = 0; - if (gdata_info->gdata[icol].ttlbuf) - free(gdata_info->gdata[icol].ttlbuf); - gdata_info->gdata[icol].ttlbuf = NULL; - gdata_info->gdata[icol].ttlbuflen = 0; - gdata_info->gdata[icol].ttlbufused = 0; - } else { - /* ok, bind that column */ - opts->bindings[icol].buflen = cbValueMax; - opts->bindings[icol].buffer = rgbValue; - opts->bindings[icol].used = opts->bindings[icol].indicator = pcbValue; - opts->bindings[icol].returntype = fCType; - opts->bindings[icol].precision = 0; - switch (fCType) { - case SQL_C_NUMERIC: - opts->bindings[icol].precision = 32; - break; - case SQL_C_TIMESTAMP: - case SQL_C_INTERVAL_DAY_TO_SECOND: - case SQL_C_INTERVAL_HOUR_TO_SECOND: - case SQL_C_INTERVAL_MINUTE_TO_SECOND: - case SQL_C_INTERVAL_SECOND: - opts->bindings[icol].precision = 6; - break; - } - opts->bindings[icol].scale = 0; - - MYLOG(OPENSEARCH_DEBUG, " bound buffer[%d] = %p\n", icol, - opts->bindings[icol].buffer); - } - -cleanup: -#undef return - return ret; -} - -RETCODE SQL_API OPENSEARCHAPI_NumParams(HSTMT hstmt, SQLSMALLINT *pcpar) { - StatementClass *stmt = (StatementClass *)hstmt; - if (pcpar != NULL) { - *pcpar = 0; - } else { - SC_set_error(stmt, STMT_EXEC_ERROR, "Parameter count address is null", - "OPENSEARCHAPI_NumParams"); - return SQL_ERROR; - } - return SQL_SUCCESS; -} - -/* - * Bindings Implementation - */ -static BindInfoClass *create_empty_bindings(int num_columns) { - BindInfoClass *new_bindings; - int i; - - new_bindings = (BindInfoClass *)malloc(num_columns * sizeof(BindInfoClass)); - if (!new_bindings) - return NULL; - - for (i = 0; i < num_columns; i++) { - new_bindings[i].buflen = 0; - new_bindings[i].buffer = NULL; - new_bindings[i].used = new_bindings[i].indicator = NULL; - } - - return new_bindings; -} - -void extend_parameter_bindings(APDFields *self, SQLSMALLINT num_params) { - ParameterInfoClass *new_bindings; - - MYLOG(OPENSEARCH_TRACE, - "entering ... self=%p, parameters_allocated=%d, num_params=%d,%p\n", - self, self->allocated, num_params, self->parameters); - - /* - * if we have too few, allocate room for more, and copy the old - * entries into the new structure - */ - if (self->allocated < num_params) { - new_bindings = (ParameterInfoClass *)realloc( - self->parameters, sizeof(ParameterInfoClass) * num_params); - if (!new_bindings) { - MYLOG(OPENSEARCH_DEBUG, - "unable to create %d new bindings from %d old bindings\n", - num_params, self->allocated); - - if (self->parameters) - free(self->parameters); - self->parameters = NULL; - self->allocated = 0; - return; - } - memset(&new_bindings[self->allocated], 0, - sizeof(ParameterInfoClass) * (num_params - self->allocated)); - - self->parameters = new_bindings; - self->allocated = num_params; - } - - MYLOG(OPENSEARCH_TRACE, "leaving %p\n", self->parameters); -} - -void extend_iparameter_bindings(IPDFields *self, SQLSMALLINT num_params) { - ParameterImplClass *new_bindings; - - MYLOG(OPENSEARCH_TRACE, - "entering ... self=%p, parameters_allocated=%d, num_params=%d\n", - self, self->allocated, num_params); - - /* - * if we have too few, allocate room for more, and copy the old - * entries into the new structure - */ - if (self->allocated < num_params) { - new_bindings = (ParameterImplClass *)realloc( - self->parameters, sizeof(ParameterImplClass) * num_params); - if (!new_bindings) { - MYLOG(OPENSEARCH_DEBUG, - "unable to create %d new bindings from %d old bindings\n", - num_params, self->allocated); - - if (self->parameters) - free(self->parameters); - self->parameters = NULL; - self->allocated = 0; - return; - } - memset(&new_bindings[self->allocated], 0, - sizeof(ParameterImplClass) * (num_params - self->allocated)); - - self->parameters = new_bindings; - self->allocated = num_params; - } - - MYLOG(OPENSEARCH_TRACE, "leaving %p\n", self->parameters); -} - -void reset_a_parameter_binding(APDFields *self, int ipar) { - MYLOG(OPENSEARCH_TRACE, "entering ... self=%p, parameters_allocated=%d, ipar=%d\n", - self, self->allocated, ipar); - - if (ipar < 1 || ipar > self->allocated) - return; - - ipar--; - self->parameters[ipar].buflen = 0; - self->parameters[ipar].buffer = NULL; - self->parameters[ipar].used = self->parameters[ipar].indicator = NULL; - self->parameters[ipar].CType = 0; - self->parameters[ipar].data_at_exec = FALSE; - self->parameters[ipar].precision = 0; - self->parameters[ipar].scale = 0; -} - -void reset_a_iparameter_binding(IPDFields *self, int ipar) { - MYLOG(OPENSEARCH_TRACE, "entering ... self=%p, parameters_allocated=%d, ipar=%d\n", - self, self->allocated, ipar); - - if (ipar < 1 || ipar > self->allocated) - return; - - ipar--; - NULL_THE_NAME(self->parameters[ipar].paramName); - self->parameters[ipar].paramType = 0; - self->parameters[ipar].SQLType = 0; - self->parameters[ipar].column_size = 0; - self->parameters[ipar].decimal_digits = 0; - self->parameters[ipar].precision = 0; - self->parameters[ipar].scale = 0; - PIC_set_opensearch_type(self->parameters[ipar], 0); -} - -int CountParameters(const StatementClass *self, Int2 *inputCount, Int2 *ioCount, - Int2 *outputCount) { - IPDFields *ipdopts = SC_get_IPDF(self); - int i, num_params, valid_count; - - if (inputCount) - *inputCount = 0; - if (ioCount) - *ioCount = 0; - if (outputCount) - *outputCount = 0; - if (!ipdopts) - return -1; - num_params = self->num_params; - if (ipdopts->allocated < num_params) - num_params = ipdopts->allocated; - for (i = 0, valid_count = 0; i < num_params; i++) { - if (SQL_PARAM_OUTPUT == ipdopts->parameters[i].paramType) { - if (outputCount) { - (*outputCount)++; - valid_count++; - } - } else if (SQL_PARAM_INPUT_OUTPUT == ipdopts->parameters[i].paramType) { - if (ioCount) { - (*ioCount)++; - valid_count++; - } - } else if (inputCount) { - (*inputCount)++; - valid_count++; - } - } - return valid_count; -} - -/* - * Free parameters and free the memory. - */ -void APD_free_params(APDFields *apdopts, char option) { - MYLOG(OPENSEARCH_TRACE, "entering self=%p\n", apdopts); - - if (!apdopts->parameters) - return; - - if (option == STMT_FREE_PARAMS_ALL) { - free(apdopts->parameters); - apdopts->parameters = NULL; - apdopts->allocated = 0; - } - - MYLOG(OPENSEARCH_TRACE, "leaving\n"); -} - -void PDATA_free_params(PutDataInfo *pdata, char option) { - int i; - - MYLOG(OPENSEARCH_TRACE, "entering self=%p\n", pdata); - - if (!pdata->pdata) - return; - - for (i = 0; i < pdata->allocated; i++) { - if (pdata->pdata[i].EXEC_used) { - free(pdata->pdata[i].EXEC_used); - pdata->pdata[i].EXEC_used = NULL; - } - if (pdata->pdata[i].EXEC_buffer) { - free(pdata->pdata[i].EXEC_buffer); - pdata->pdata[i].EXEC_buffer = NULL; - } - } - - if (option == STMT_FREE_PARAMS_ALL) { - free(pdata->pdata); - pdata->pdata = NULL; - pdata->allocated = 0; - } - - MYLOG(OPENSEARCH_TRACE, "leaving\n"); -} - -/* - * Free parameters and free the memory. - */ -void IPD_free_params(IPDFields *ipdopts, char option) { - MYLOG(OPENSEARCH_TRACE, "entering self=%p\n", ipdopts); - - if (!ipdopts->parameters) - return; - if (option == STMT_FREE_PARAMS_ALL) { - free(ipdopts->parameters); - ipdopts->parameters = NULL; - ipdopts->allocated = 0; - } - - MYLOG(OPENSEARCH_TRACE, "leaving\n"); -} - -void extend_column_bindings(ARDFields *self, SQLSMALLINT num_columns) { - BindInfoClass *new_bindings; - SQLSMALLINT i; - - MYLOG(OPENSEARCH_TRACE, - "entering ... self=%p, bindings_allocated=%d, num_columns=%d\n", self, - self->allocated, num_columns); - - /* - * if we have too few, allocate room for more, and copy the old - * entries into the new structure - */ - if (self->allocated < num_columns) { - new_bindings = create_empty_bindings(num_columns); - if (!new_bindings) { - MYLOG(OPENSEARCH_DEBUG, - "unable to create %d new bindings from %d old bindings\n", - num_columns, self->allocated); - - if (self->bindings) { - free(self->bindings); - self->bindings = NULL; - } - self->allocated = 0; - return; - } - - if (self->bindings) { - for (i = 0; i < self->allocated; i++) - new_bindings[i] = self->bindings[i]; - - free(self->bindings); - } - - self->bindings = new_bindings; - self->allocated = num_columns; - } - - /* - * There is no reason to zero out extra bindings if there are more - * than needed. If an app has allocated extra bindings, let it worry - * about it by unbinding those columns. - */ - - /* SQLBindCol(1..) ... SQLBindCol(10...) # got 10 bindings */ - /* SQLExecDirect(...) # returns 5 cols */ - /* SQLExecDirect(...) # returns 10 cols (now OK) */ - - MYLOG(OPENSEARCH_TRACE, "leaving %p\n", self->bindings); -} - -void reset_a_column_binding(ARDFields *self, int icol) { - BindInfoClass *bookmark; - - MYLOG(OPENSEARCH_TRACE, "entering ... self=%p, bindings_allocated=%d, icol=%d\n", - self, self->allocated, icol); - - if (icol > self->allocated) - return; - - /* use zero based col numbers from here out */ - if (0 == icol) { - if (bookmark = self->bookmark, bookmark != NULL) { - bookmark->buffer = NULL; - bookmark->used = bookmark->indicator = NULL; - } - } else { - icol--; - - /* we have to unbind the column */ - self->bindings[icol].buflen = 0; - self->bindings[icol].buffer = NULL; - self->bindings[icol].used = self->bindings[icol].indicator = NULL; - self->bindings[icol].returntype = SQL_C_CHAR; - } -} - -void ARD_unbind_cols(ARDFields *self, BOOL freeall) { - Int2 lf; - - MYLOG(OPENSEARCH_ALL, "freeall=%d allocated=%d bindings=%p\n", freeall, - self->allocated, self->bindings); - for (lf = 1; lf <= self->allocated; lf++) - reset_a_column_binding(self, lf); - if (freeall) { - if (self->bindings) - free(self->bindings); - self->bindings = NULL; - self->allocated = 0; - } -} -void GDATA_unbind_cols(GetDataInfo *self, BOOL freeall) { - Int2 lf; - - MYLOG(OPENSEARCH_ALL, "freeall=%d allocated=%d gdata=%p\n", freeall, - self->allocated, self->gdata); - if (self->fdata.ttlbuf) { - free(self->fdata.ttlbuf); - self->fdata.ttlbuf = NULL; - } - self->fdata.ttlbuflen = self->fdata.ttlbufused = 0; - GETDATA_RESET(self->fdata); - for (lf = 1; lf <= self->allocated; lf++) - reset_a_getdata_info(self, lf); - if (freeall) { - if (self->gdata) - free(self->gdata); - self->gdata = NULL; - self->allocated = 0; - } -} - -void GetDataInfoInitialize(GetDataInfo *gdata_info) { - GETDATA_RESET(gdata_info->fdata); - gdata_info->fdata.ttlbuf = NULL; - gdata_info->fdata.ttlbuflen = gdata_info->fdata.ttlbufused = 0; - gdata_info->allocated = 0; - gdata_info->gdata = NULL; -} -static GetDataClass *create_empty_gdata(int num_columns) { - GetDataClass *new_gdata; - int i; - - new_gdata = (GetDataClass *)malloc(num_columns * sizeof(GetDataClass)); - if (!new_gdata) - return NULL; - for (i = 0; i < num_columns; i++) { - GETDATA_RESET(new_gdata[i]); - new_gdata[i].ttlbuf = NULL; - new_gdata[i].ttlbuflen = 0; - new_gdata[i].ttlbufused = 0; - } - - return new_gdata; -} -void extend_getdata_info(GetDataInfo *self, SQLSMALLINT num_columns, - BOOL shrink) { - GetDataClass *new_gdata; - - MYLOG(OPENSEARCH_TRACE, - "entering ... self=%p, gdata_allocated=%d, num_columns=%d\n", self, - self->allocated, num_columns); - - /* - * if we have too few, allocate room for more, and copy the old - * entries into the new structure - */ - if (self->allocated < num_columns) { - new_gdata = create_empty_gdata(num_columns); - if (!new_gdata) { - MYLOG(OPENSEARCH_DEBUG, "unable to create %d new gdata from %d old gdata\n", - num_columns, self->allocated); - - if (self->gdata) { - free(self->gdata); - self->gdata = NULL; - } - self->allocated = 0; - return; - } - if (self->gdata) { - SQLSMALLINT i; - - for (i = 0; i < self->allocated; i++) - new_gdata[i] = self->gdata[i]; - free(self->gdata); - } - self->gdata = new_gdata; - self->allocated = num_columns; - } else if (shrink && self->allocated > num_columns) { - int i; - - for (i = self->allocated; i > num_columns; i--) - reset_a_getdata_info(self, i); - self->allocated = num_columns; - if (0 == num_columns) { - free(self->gdata); - self->gdata = NULL; - } - } - - /* - * There is no reason to zero out extra gdata if there are more - * than needed. If an app has allocated extra gdata, let it worry - * about it by unbinding those columns. - */ - - MYLOG(OPENSEARCH_TRACE, "leaving %p\n", self->gdata); -} -void reset_a_getdata_info(GetDataInfo *gdata_info, int icol) { - if (icol < 1 || icol > gdata_info->allocated) - return; - icol--; - if (gdata_info->gdata[icol].ttlbuf) { - free(gdata_info->gdata[icol].ttlbuf); - gdata_info->gdata[icol].ttlbuf = NULL; - } - gdata_info->gdata[icol].ttlbuflen = gdata_info->gdata[icol].ttlbufused = 0; - GETDATA_RESET(gdata_info->gdata[icol]); -} - -void PutDataInfoInitialize(PutDataInfo *pdata_info) { - pdata_info->allocated = 0; - pdata_info->pdata = NULL; -} -void extend_putdata_info(PutDataInfo *self, SQLSMALLINT num_params, - BOOL shrink) { - PutDataClass *new_pdata; - - MYLOG(OPENSEARCH_TRACE, - "entering ... self=%p, parameters_allocated=%d, num_params=%d\n", - self, self->allocated, num_params); - - /* - * if we have too few, allocate room for more, and copy the old - * entries into the new structure - */ - if (self->allocated < num_params) { - if (self->allocated <= 0 && self->pdata) { - MYLOG(OPENSEARCH_DEBUG, "??? pdata is not null while allocated == 0\n"); - self->pdata = NULL; - } - new_pdata = (PutDataClass *)realloc(self->pdata, - sizeof(PutDataClass) * num_params); - if (!new_pdata) { - MYLOG(OPENSEARCH_DEBUG, "unable to create %d new pdata from %d old pdata\n", - num_params, self->allocated); - - self->pdata = NULL; - self->allocated = 0; - return; - } - memset(&new_pdata[self->allocated], 0, - sizeof(PutDataClass) * (num_params - self->allocated)); - - self->pdata = new_pdata; - self->allocated = num_params; - } else if (shrink && self->allocated > num_params) { - int i; - - for (i = self->allocated; i > num_params; i--) - reset_a_putdata_info(self, i); - self->allocated = num_params; - if (0 == num_params) { - free(self->pdata); - self->pdata = NULL; - } - } - - MYLOG(OPENSEARCH_TRACE, "leaving %p\n", self->pdata); -} -void reset_a_putdata_info(PutDataInfo *pdata_info, int ipar) { - if (ipar < 1 || ipar > pdata_info->allocated) - return; - ipar--; - if (pdata_info->pdata[ipar].EXEC_used) { - free(pdata_info->pdata[ipar].EXEC_used); - pdata_info->pdata[ipar].EXEC_used = NULL; - } - if (pdata_info->pdata[ipar].EXEC_buffer) { - free(pdata_info->pdata[ipar].EXEC_buffer); - pdata_info->pdata[ipar].EXEC_buffer = NULL; - } - pdata_info->pdata[ipar].lobj_oid = 0; -} - -void SC_param_next(const StatementClass *stmt, int *param_number, - ParameterInfoClass **apara, ParameterImplClass **ipara) { - int next; - IPDFields *ipdopts = SC_get_IPDF(stmt); - - if (*param_number < 0) - next = stmt->proc_return; - else - next = *param_number + 1; - if (stmt->discard_output_params) { - for (; next < ipdopts->allocated - && SQL_PARAM_OUTPUT == ipdopts->parameters[next].paramType; - next++) - ; - } - *param_number = next; - if (ipara) { - if (next < ipdopts->allocated) - *ipara = ipdopts->parameters + next; - else - *ipara = NULL; - } - if (apara) { - APDFields *apdopts = SC_get_APDF(stmt); - if (next < apdopts->allocated) - *apara = apdopts->parameters + next; - else - *apara = NULL; - } -} diff --git a/sql-odbc/src/sqlodbc/bind.h b/sql-odbc/src/sqlodbc/bind.h deleted file mode 100644 index adcdb66999..0000000000 --- a/sql-odbc/src/sqlodbc/bind.h +++ /dev/null @@ -1,132 +0,0 @@ -#ifndef __BIND_H__ -#define __BIND_H__ - -#include "descriptor.h" -#include "opensearch_odbc.h" - -// C Interface -#ifdef __cplusplus -extern "C" { -#endif -/* - * BindInfoClass -- stores information about a bound column - */ -struct BindInfoClass_ { - SQLLEN buflen; /* size of buffer */ - char *buffer; /* pointer to the buffer */ - SQLLEN *used; /* used space in the buffer (for strings - * not counting the '\0') */ - SQLLEN *indicator; /* indicator == used in many cases ? */ - SQLSMALLINT returntype; /* kind of conversion to be applied when - * returning (SQL_C_DEFAULT, - * SQL_C_CHAR... etc) */ - SQLSMALLINT precision; /* the precision for numeric or timestamp type */ - SQLSMALLINT scale; /* the scale for numeric type */ - /* area for work variables */ - char dummy_data; /* currently not used */ -}; - -/* struct for SQLGetData */ -typedef struct { - /* for BLOBs which don't hold the data */ - struct GetBlobDataClass { - Int8 data_left64; /* amount of large object data - left to read before conversion */ - } blob; - /* for non-BLOBs which hold the data in ttlbuf after conversion */ - char *ttlbuf; /* to save the large result */ - SQLLEN ttlbuflen; /* the buffer length */ - SQLLEN ttlbufused; /* used length of the buffer */ - SQLLEN data_left; /* amount of data left to read */ -} GetDataClass; -#define GETDATA_RESET(gdc) ((gdc).blob.data_left64 = (gdc).data_left = -1) - -/* - * ParameterInfoClass -- stores information about a bound parameter - */ -struct ParameterInfoClass_ { - SQLLEN buflen; - char *buffer; - SQLLEN *used; - SQLLEN *indicator; /* indicator == used in many cases ? */ - SQLSMALLINT CType; - SQLSMALLINT precision; /* the precision for numeric or timestamp type */ - SQLSMALLINT scale; /* the scale for numeric type */ - /* area for work variables */ - char data_at_exec; -}; - -typedef struct { - SQLLEN *EXEC_used; /* amount of data */ - char *EXEC_buffer; /* the data */ - OID lobj_oid; -} PutDataClass; - -/* - * ParameterImplClass -- stores implementation information about a parameter - */ -struct ParameterImplClass_ { - opensearchNAME paramName; /* this is unavailable even in 8.1 */ - SQLSMALLINT paramType; - SQLSMALLINT SQLType; - OID OpenSearchType; - SQLULEN column_size; - SQLSMALLINT decimal_digits; - SQLSMALLINT precision; /* the precision for numeric or timestamp type */ - SQLSMALLINT scale; /* the scale for numeric type */ -}; - -typedef struct { - GetDataClass fdata; - SQLSMALLINT allocated; - GetDataClass *gdata; -} GetDataInfo; -typedef struct { - SQLSMALLINT allocated; - PutDataClass *pdata; -} PutDataInfo; - -#define PARSE_PARAM_CAST FALSE -#define EXEC_PARAM_CAST TRUE -#define SIMPLE_PARAM_CAST TRUE - -#define CALC_BOOKMARK_ADDR(book, offset, bind_size, index) \ - (book->buffer + offset \ - + (bind_size > 0 \ - ? bind_size \ - : (SQL_C_VARBOOKMARK == book->returntype ? book->buflen \ - : sizeof(UInt4))) \ - * index) - -/* Macros to handle opensearch type of parameters */ -#define PIC_get_opensearch_type(pari) ((pari).OpenSearchType) -#define PIC_set_opensearch_type(pari, type) ((pari).OpenSearchType = (type)) -#define PIC_dsp_opensearch_type(conn, pari) \ - ((pari).OpenSearchType ? (pari).OpenSearchType : sqltype_to_opensearchtype(conn, (pari).SQLType)) - -void extend_column_bindings(ARDFields *opts, SQLSMALLINT num_columns); -void reset_a_column_binding(ARDFields *opts, int icol); -void extend_parameter_bindings(APDFields *opts, SQLSMALLINT num_params); -void extend_iparameter_bindings(IPDFields *opts, SQLSMALLINT num_params); -void reset_a_parameter_binding(APDFields *opts, int ipar); -void reset_a_iparameter_binding(IPDFields *opts, int ipar); -int CountParameters(const StatementClass *stmt, Int2 *inCount, Int2 *ioCount, - Int2 *outputCount); -void GetDataInfoInitialize(GetDataInfo *gdata); -void extend_getdata_info(GetDataInfo *gdata, SQLSMALLINT num_columns, - BOOL shrink); -void reset_a_getdata_info(GetDataInfo *gdata, int icol); -void GDATA_unbind_cols(GetDataInfo *gdata, BOOL freeall); -void PutDataInfoInitialize(PutDataInfo *pdata); -void extend_putdata_info(PutDataInfo *pdata, SQLSMALLINT num_params, - BOOL shrink); -void reset_a_putdata_info(PutDataInfo *pdata, int ipar); -void PDATA_free_params(PutDataInfo *pdata, char option); -void SC_param_next(const StatementClass *, int *param_number, - ParameterInfoClass **, ParameterImplClass **); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/sql-odbc/src/sqlodbc/catfunc.h b/sql-odbc/src/sqlodbc/catfunc.h deleted file mode 100644 index 8378454256..0000000000 --- a/sql-odbc/src/sqlodbc/catfunc.h +++ /dev/null @@ -1,220 +0,0 @@ -#ifndef __CATFUNC_H__ -#define __CATFUNC_H__ - -#include "opensearch_odbc.h" - -/* SQLTables field position */ -enum { - TABLES_CATALOG_NAME = 0, - TABLES_SCHEMA_NAME, - TABLES_TABLE_NAME, - TABLES_TABLE_TYPE, - TABLES_REMARKS, - NUM_OF_TABLES_FIELDS -}; - -/* SQLColumns field position */ -enum { - COLUMNS_CATALOG_NAME = 0, - COLUMNS_SCHEMA_NAME, - COLUMNS_TABLE_NAME, - COLUMNS_COLUMN_NAME, - COLUMNS_DATA_TYPE, - COLUMNS_TYPE_NAME, - COLUMNS_PRECISION, - COLUMNS_LENGTH, - COLUMNS_SCALE, - COLUMNS_RADIX, - COLUMNS_NULLABLE, - COLUMNS_REMARKS, - COLUMNS_COLUMN_DEF /* ODBC 3.0 but always use it */ - , - COLUMNS_SQL_DATA_TYPE, - COLUMNS_SQL_DATETIME_SUB, - COLUMNS_CHAR_OCTET_LENGTH, - COLUMNS_ORDINAL_POSITION, - COLUMNS_IS_NULLABLE, - COLUMNS_DISPLAY_SIZE, - COLUMNS_FIELD_TYPE, - COLUMNS_AUTO_INCREMENT, - COLUMNS_PHYSICAL_NUMBER, - COLUMNS_TABLE_OID, - COLUMNS_BASE_TYPEID, - COLUMNS_ATTTYPMOD, - COLUMNS_TABLE_INFO, - NUM_OF_COLUMNS_FIELDS -}; -/* SQLPrimaryKeys field position */ -enum { - PKS_TABLE_CAT = 0, - PKS_TABLE_SCHEM, - PKS_TABLE_NAME, - PKS_COLUMN_NAME, - PKS_KEY_SQ, - PKS_PK_NAME, - NUM_OF_PKS_FIELDS -}; -/* SQLForeignKeys field position */ -enum { - FKS_PKTABLE_CAT = 0, - FKS_PKTABLE_SCHEM, - FKS_PKTABLE_NAME, - FKS_PKCOLUMN_NAME, - FKS_FKTABLE_CAT, - FKS_FKTABLE_SCHEM, - FKS_FKTABLE_NAME, - FKS_FKCOLUMN_NAME, - FKS_KEY_SEQ, - FKS_UPDATE_RULE, - FKS_DELETE_RULE, - FKS_FK_NAME, - FKS_PK_NAME, - FKS_DEFERRABILITY, - FKS_TRIGGER_NAME, - NUM_OF_FKS_FIELDS -}; -/* SQLColAttribute */ -enum { - COLATTR_DESC_COUNT = -1, - COLATTR_DESC_AUTO_UNIQUE_VALUE = 0, - COLATTR_DESC_BASE_COLUMN_NAME, - COLATTR_DESC_BASE_TABLE_NAME, - COLATTR_DESC_CASE_SENSITIVE, - COLATTR_DESC_CATALOG_NAME, - COLATTR_DESC_CONCISE_TYPE, - COLATTR_DESC_DISPLAY_SIZE, - COLATTR_DESC_FIXED_PREC_SCALE, - COLATTR_DESC_LABEL, - COLATTR_DESC_LENGTH, - COLATTR_DESC_LITERAL_PREFIX, - COLATTR_DESC_LITERAL_SUFFIX, - COLATTR_DESC_LOCAL_TYPE_NAME, - COLATTR_DESC_NAME, - COLATTR_DESC_NULLABLE, - COLATTR_DESC_NUM_PREX_RADIX, - COLATTR_DESC_OCTET_LENGTH, - COLATTR_DESC_PRECISION, - COLATTR_DESC_SCALE, - COLATTR_DESC_SCHEMA_NAME, - COLATTR_DESC_SEARCHABLE, - COLATTR_DESC_TABLE_NAME, - COLATTR_DESC_TYPE, - COLATTR_DESC_TYPE_NAME, - COLATTR_DESC_UNNAMED, - COLATTR_DESC_UNSIGNED, - COLATTR_DESC_UPDATABLE -}; - -/* SQLStatistics field position */ -enum { - STATS_CATALOG_NAME = 0, - STATS_SCHEMA_NAME, - STATS_TABLE_NAME, - STATS_NON_UNIQUE, - STATS_INDEX_QUALIFIER, - STATS_INDEX_NAME, - STATS_TYPE, - STATS_SEQ_IN_INDEX, - STATS_COLUMN_NAME, - STATS_COLLATION, - STATS_CARDINALITY, - STATS_PAGES, - STATS_FILTER_CONDITION, - NUM_OF_STATS_FIELDS -}; - -/* SQLProcedure field position */ -enum { - PRO_PROCEDURE_CAT = 0, - PRO_PROCEDURE_SCHEM, - PRO_PROCEDURE_NAME, - PRO_NUM_INPUT_PARAMS, - PRO_NUM_OUTPUT_PARAMS, - PRO_RESULT_SETS, - PRO_REMARKS, - PRO_PROCEDURE_TYPE, - NUM_OF_PRO_FIELDS -}; - -/* SQLProcedureColumns field position */ -enum { - PROCOLS_PROCEDURE_CAT = 0, - PROCOLS_PROCEDURE_SCHEM, - PROCOLS_PROCEDURE_NAME, - PROCOLS_COLUMN_NAME, - PROCOLS_COLUMN_TYPE, - PROCOLS_DATA_TYPE, - PROCOLS_TYPE_NAME, - PROCOLS_COLUMN_SIZE, - PROCOLS_BUFFER_LENGTH, - PROCOLS_DECIMAL_DIGITS, - PROCOLS_NUM_PREC_RADIX, - PROCOLS_NULLABLE, - PROCOLS_REMARKS, - PROCOLS_COLUMN_DEF, - PROCOLS_SQL_DATA_TYPE, - PROCOLS_SQL_DATETIME_SUB, - PROCOLS_CHAR_OCTET_LENGTH, - PROCOLS_ORDINAL_POSITION, - PROCOLS_IS_NULLABLE, - NUM_OF_PROCOLS_FIELDS -}; -/* SQLGetTypeInfo field position */ -enum { - GETTYPE_TYPE_NAME = 0, - GETTYPE_DATA_TYPE, - GETTYPE_COLUMN_SIZE, - GETTYPE_LITERAL_PREFIX, - GETTYPE_LITERAL_SUFFIX, - GETTYPE_CREATE_PARAMS, - GETTYPE_NULLABLE, - GETTYPE_CASE_SENSITIVE, - GETTYPE_SEARCHABLE, - GETTYPE_UNSIGNED_ATTRIBUTE, - GETTYPE_FIXED_PREC_SCALE, - GETTYPE_AUTO_UNIQUE_VALUE, - GETTYPE_LOCAL_TYPE_NAME, - GETTYPE_MINIMUM_SCALE, - GETTYPE_MAXIMUM_SCALE, - GETTYPE_SQL_DATA_TYPE, - GETTYPE_SQL_DATETIME_SUB, - GETTYPE_NUM_PREC_RADIX, - GETTYPE_INTERVAL_PRECISION, - NUM_OF_GETTYPE_FIELDS -}; -/* SQLSpecialColumns field position */ -enum { - SPECOLS_SCOPE = 0, - SPECOLS_COLUMN_NAME, - SPECOLS_DATA_TYPE, - SPECOLS_TYPE_NAME, - SPECOLS_COLUMN_SIZE, - SPECOLS_BUFFER_LENGTH, - SPECOLS_DECIMAL_DIGITS, - SPECOLS_PSEUDO_COLUMN, - NUM_OF_SPECOLS_FIELDS -}; -/* SQLColumnPrivileges field position */ -enum { - COLPRIV_TABLE_CAT = 0, - COLPRIV_TABLE_SCHEM, - COLPRIV_TABLE_NAME, - COLPRIV_COLUMN_NAME, - COLPRIV_GRANTOR, - COLPRIV_GRANTEE, - COLPRIV_PRIVILEGE, - COLPRIV_IS_GRANTABLE, - NUM_OF_COLPRIV_FIELDS -}; -/* SQLTablePrivileges field position */ -enum { - TABPRIV_TABLE_CAT = 0, - TABPRIV_TABLE_SCHEM, - TABPRIV_TABLE_NAME, - TABPRIV_GRANTOR, - TABPRIV_GRANTEE, - TABPRIV_PRIVILEGE, - TABPRIV_IS_GRANTABLE, - NUM_OF_TABPRIV_FIELDS -}; -#endif /* __CARFUNC_H__ */ diff --git a/sql-odbc/src/sqlodbc/columninfo.c b/sql-odbc/src/sqlodbc/columninfo.c deleted file mode 100644 index 8c31901b2d..0000000000 --- a/sql-odbc/src/sqlodbc/columninfo.c +++ /dev/null @@ -1,73 +0,0 @@ -#include "columninfo.h" - -#include -#include - -#include "opensearch_types.h" -#include "opensearch_apifunc.h" -#include "opensearch_connection.h" - -ColumnInfoClass *CI_Constructor(void) { - ColumnInfoClass *rv; - - rv = (ColumnInfoClass *)malloc(sizeof(ColumnInfoClass)); - - if (rv) { - rv->refcount = 0; - rv->num_fields = 0; - rv->coli_array = NULL; - } - - return rv; -} - -void CI_Destructor(ColumnInfoClass *self) { - CI_free_memory(self); - - free(self); -} - -void CI_free_memory(ColumnInfoClass *self) { - register Int2 lf; - int num_fields = self->num_fields; - - /* Safe to call even if null */ - self->num_fields = 0; - if (self->coli_array) { - for (lf = 0; lf < num_fields; lf++) { - if (self->coli_array[lf].name) { - free(self->coli_array[lf].name); - self->coli_array[lf].name = NULL; - } - } - free(self->coli_array); - self->coli_array = NULL; - } -} - -void CI_set_num_fields(ColumnInfoClass *self, SQLSMALLINT new_num_fields) { - CI_free_memory(self); /* always safe to call */ - - self->num_fields = new_num_fields; - - self->coli_array = - (struct srvr_info *)calloc(sizeof(struct srvr_info), self->num_fields); -} - -void CI_set_field_info(ColumnInfoClass *self, int field_num, - const char *new_name, OID new_adtid, Int2 new_adtsize, - Int4 new_atttypmod, OID new_relid, OID new_attid) { - /* check bounds */ - if ((field_num < 0) || (field_num >= self->num_fields)) - return; - - /* store the info */ - self->coli_array[field_num].name = strdup(new_name); - self->coli_array[field_num].adtid = new_adtid; - self->coli_array[field_num].adtsize = new_adtsize; - self->coli_array[field_num].atttypmod = new_atttypmod; - - self->coli_array[field_num].display_size = OPENSEARCH_ADT_UNSET; - self->coli_array[field_num].relid = new_relid; - self->coli_array[field_num].attid = (short)new_attid; -} diff --git a/sql-odbc/src/sqlodbc/columninfo.h b/sql-odbc/src/sqlodbc/columninfo.h deleted file mode 100644 index 01afe68db4..0000000000 --- a/sql-odbc/src/sqlodbc/columninfo.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef __COLUMNINFO_H__ -#define __COLUMNINFO_H__ - -#include "opensearch_odbc.h" - -struct ColumnInfoClass_ { - UInt4 refcount; /* reference count. A ColumnInfo can be shared by - * several qresults. */ - Int2 num_fields; - struct srvr_info { - char *name; /* field name */ - OID adtid; /* type oid */ - Int2 adtsize; /* type size */ - Int4 display_size; /* the display size (longest row) */ - Int4 atttypmod; /* the length of bpchar/varchar */ - OID relid; /* the relation id */ - Int2 attid; /* the attribute number */ - } * coli_array; -}; - -#define CI_get_num_fields(self) (self->num_fields) -#define CI_get_oid(self, col) (self->coli_array[col].adtid) -#define CI_get_fieldname(self, col) (self->coli_array[col].name) -#define CI_get_fieldsize(self, col) (self->coli_array[col].adtsize) -#define CI_get_display_size(self, col) (self->coli_array[col].display_size) -#define CI_get_atttypmod(self, col) (self->coli_array[col].atttypmod) -#define CI_get_relid(self, col) (self->coli_array[col].relid) -#define CI_get_attid(self, col) (self->coli_array[col].attid) - -ColumnInfoClass *CI_Constructor(void); -void CI_Destructor(ColumnInfoClass *self); -void CI_free_memory(ColumnInfoClass *self); - -/* functions for setting up the fields from within the program, */ -/* without reading from a socket */ -void CI_set_num_fields(ColumnInfoClass *self, SQLSMALLINT new_num_fields); - -// Used in opensearch_parse_results.cpp -#ifdef __cplusplus -extern "C" { -#endif -void CI_set_field_info(ColumnInfoClass *self, int field_num, - const char *new_name, OID new_adtid, Int2 new_adtsize, - Int4 atttypmod, OID new_relid, OID new_attid); -#ifdef __cplusplus -} -#endif - -#endif diff --git a/sql-odbc/src/sqlodbc/connection.c b/sql-odbc/src/sqlodbc/connection.c deleted file mode 100644 index 597ab12b4d..0000000000 --- a/sql-odbc/src/sqlodbc/connection.c +++ /dev/null @@ -1,696 +0,0 @@ -/* TryEnterCritiaclSection needs the following #define */ -#ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x0400 -#endif /* _WIN32_WINNT */ - -#include -#include -#include - -#include "opensearch_connection.h" -#include "misc.h" - -/* for htonl */ -#ifdef WIN32 -#include -#else -#include -#endif - -#include "dlg_specific.h" -#include "environ.h" -#include "loadlib.h" -#include "multibyte.h" -#include "opensearch_apifunc.h" -#include "opensearch_connection.h" -#include "opensearch_helper.h" -#include "qresult.h" -#include "statement.h" -#ifndef WIN32 -#include -#endif -#define SAFE_STR(s) (NULL != (s) ? (s) : "(null)") - -#define ELASTIC_MAXIMUM_ID_LEN SHRT_MAX // Max 16-bit signed int -#define ELASTIC_TRANSACTION_SUPPORT 0 // Not supported -#define STMT_INCREMENT \ - 16 /* how many statement holders to allocate \ \ - * at a time */ - -#define PROTOCOL3_OPTS_MAX 30 - -RETCODE SQL_API OPENSEARCHAPI_AllocConnect(HENV henv, HDBC *phdbc) { - EnvironmentClass *env = (EnvironmentClass *)henv; - ConnectionClass *conn; - CSTR func = "OPENSEARCHAPI_AllocConnect"; - - MYLOG(OPENSEARCH_TRACE, "entering...\n"); - - conn = CC_Constructor(); - MYLOG(OPENSEARCH_DEBUG, "**** henv = %p, conn = %p\n", henv, conn); - - if (!conn) { - env->errormsg = "Couldn't allocate memory for Connection object."; - env->errornumber = ENV_ALLOC_ERROR; - *phdbc = SQL_NULL_HDBC; - EN_log_error(func, "", env); - return SQL_ERROR; - } - - if (!EN_add_connection(env, conn)) { - env->errormsg = "Maximum number of connections exceeded."; - env->errornumber = ENV_ALLOC_ERROR; - CC_Destructor(conn); - *phdbc = SQL_NULL_HDBC; - EN_log_error(func, "", env); - return SQL_ERROR; - } - - if (phdbc) - *phdbc = (HDBC)conn; - - return SQL_SUCCESS; -} - -RETCODE SQL_API OPENSEARCHAPI_Connect(HDBC hdbc, const SQLCHAR *szDSN, - SQLSMALLINT cbDSN, const SQLCHAR *szUID, - SQLSMALLINT cbUID, const SQLCHAR *szAuthStr, - SQLSMALLINT cbAuthStr) { - ConnectionClass *conn = (ConnectionClass *)hdbc; - ConnInfo *ci; - CSTR func = "OPENSEARCHAPI_Connect"; - RETCODE ret = SQL_SUCCESS; - char fchar, *tmpstr; - - MYLOG(OPENSEARCH_TRACE, "entering..cbDSN=%hi.\n", cbDSN); - - if (!conn) { - CC_log_error(func, "", NULL); - return SQL_INVALID_HANDLE; - } - - ci = &conn->connInfo; - CC_conninfo_init(ci, INIT_GLOBALS); - - make_string(szDSN, cbDSN, ci->dsn, sizeof(ci->dsn)); - - /* get the values for the DSN from the registry */ - getDSNinfo(ci, NULL); - - logs_on_off(1, ci->drivers.loglevel, ci->drivers.loglevel); - /* initialize opensearch_version from connInfo.protocol */ - CC_initialize_opensearch_version(conn); - - /* - * override values from DSN info with UID and authStr(pwd) This only - * occurs if the values are actually there. - */ - fchar = ci->username[0]; /* save the first byte */ - make_string(szUID, cbUID, ci->username, sizeof(ci->username)); - if ('\0' == ci->username[0]) /* an empty string is specified */ - ci->username[0] = fchar; /* restore the original username */ - tmpstr = make_string(szAuthStr, cbAuthStr, NULL, 0); - if (tmpstr) { - if (tmpstr[0]) /* non-empty string is specified */ - STR_TO_NAME(ci->password, tmpstr); - free(tmpstr); - } - - MYLOG(OPENSEARCH_DEBUG, "conn = %p (DSN='%s', UID='%s', PWD='%s')\n", conn, ci->dsn, - ci->username, NAME_IS_VALID(ci->password) ? "xxxxx" : ""); - - if ((fchar = CC_connect(conn)) <= 0) { - /* Error messages are filled in */ - CC_log_error(func, "Error on CC_connect", conn); - ret = SQL_ERROR; - } - if (SQL_SUCCESS == ret && 2 == fchar) - ret = SQL_SUCCESS_WITH_INFO; - - MYLOG(OPENSEARCH_TRACE, "leaving..%d.\n", ret); - - return ret; -} - -RETCODE SQL_API OPENSEARCHAPI_BrowseConnect(HDBC hdbc, const SQLCHAR *szConnStrIn, - SQLSMALLINT cbConnStrIn, - SQLCHAR *szConnStrOut, - SQLSMALLINT cbConnStrOutMax, - SQLSMALLINT *pcbConnStrOut) { - UNUSED(szConnStrIn, cbConnStrIn, szConnStrOut, cbConnStrOutMax, - cbConnStrOutMax, pcbConnStrOut); - CSTR func = "OPENSEARCHAPI_BrowseConnect"; - ConnectionClass *conn = (ConnectionClass *)hdbc; - - MYLOG(OPENSEARCH_TRACE, "entering...\n"); - - CC_set_error(conn, CONN_NOT_IMPLEMENTED_ERROR, "Function not implemented", - func); - return SQL_ERROR; -} - -/* Drop any hstmts open on hdbc and disconnect from database */ -RETCODE SQL_API OPENSEARCHAPI_Disconnect(HDBC hdbc) { - ConnectionClass *conn = (ConnectionClass *)hdbc; - CSTR func = "OPENSEARCHAPI_Disconnect"; - RETCODE ret = SQL_SUCCESS; - - MYLOG(OPENSEARCH_TRACE, "entering...\n"); - - if (!conn) { - CC_log_error(func, "", NULL); - return SQL_INVALID_HANDLE; - } - - if (conn->status == CONN_EXECUTING) { - // This should only be possible if transactions are supported, but they - // are not. Return an error regardless - CC_set_error(conn, CONN_IN_USE, "Connection is currently in use!", - func); - return SQL_ERROR; - } - - logs_on_off(-1, conn->connInfo.drivers.loglevel, - conn->connInfo.drivers.loglevel); - MYLOG(OPENSEARCH_DEBUG, "about to CC_cleanup\n"); - - /* Close the connection and free statements */ - ret = CC_cleanup(conn, FALSE); - - MYLOG(OPENSEARCH_DEBUG, "done CC_cleanup\n"); - MYLOG(OPENSEARCH_TRACE, "leaving...\n"); - - return ret; -} - -RETCODE SQL_API OPENSEARCHAPI_FreeConnect(HDBC hdbc) { - ConnectionClass *conn = (ConnectionClass *)hdbc; - CSTR func = "OPENSEARCHAPI_FreeConnect"; - EnvironmentClass *env; - - MYLOG(OPENSEARCH_TRACE, "entering...hdbc=%p\n", hdbc); - - if (!conn) { - CC_log_error(func, "", NULL); - return SQL_INVALID_HANDLE; - } - - /* Remove the connection from the environment */ - if (NULL != (env = CC_get_env(conn)) && !EN_remove_connection(env, conn)) { - // This should only be possible if transactions are supported, but they - // are not. Return an error regardless - CC_set_error(conn, CONN_IN_USE, "Connection is currently in use!", - func); - return SQL_ERROR; - } - - CC_Destructor(conn); - - MYLOG(OPENSEARCH_TRACE, "leaving...\n"); - - return SQL_SUCCESS; -} - -/* - * IMPLEMENTATION CONNECTION CLASS - */ - -static void reset_current_schema(ConnectionClass *self) { - if (self->current_schema) { - free(self->current_schema); - self->current_schema = NULL; - } - self->current_schema_valid = FALSE; -} - -static ConnectionClass *CC_alloc(void) { - return (ConnectionClass *)calloc(sizeof(ConnectionClass), 1); -} - -static void CC_lockinit(ConnectionClass *self) { - UNUSED(self); - INIT_CONNLOCK(self); - INIT_CONN_CS(self); -} - -static ConnectionClass *CC_initialize(ConnectionClass *rv, BOOL lockinit) { - size_t clear_size; - - clear_size = (char *)&(rv->cs) - (char *)rv; - - memset(rv, 0, clear_size); - rv->status = CONN_NOT_CONNECTED; - rv->transact_status = CONN_IN_AUTOCOMMIT; /* autocommit by default */ - rv->unnamed_prepared_stmt = NULL; - - rv->stmts = - (StatementClass **)malloc(sizeof(StatementClass *) * STMT_INCREMENT); - if (!rv->stmts) - goto cleanup; - memset(rv->stmts, 0, sizeof(StatementClass *) * STMT_INCREMENT); - - rv->num_stmts = STMT_INCREMENT; - rv->descs = - (DescriptorClass **)malloc(sizeof(DescriptorClass *) * STMT_INCREMENT); - if (!rv->descs) - goto cleanup; - memset(rv->descs, 0, sizeof(DescriptorClass *) * STMT_INCREMENT); - - rv->num_descs = STMT_INCREMENT; - - rv->lobj_type = OPENSEARCH_TYPE_LO_UNDEFINED; - if (isMsAccess()) - rv->ms_jet = 1; - rv->isolation = 0; // means initially unknown server's default isolation - rv->mb_maxbyte_per_char = 1; - rv->max_identifier_length = ELASTIC_MAXIMUM_ID_LEN; - rv->autocommit_public = SQL_AUTOCOMMIT_ON; - - /* Initialize statement options to defaults */ - /* Statements under this conn will inherit these options */ - - InitializeStatementOptions(&rv->stmtOptions); - InitializeARDFields(&rv->ardOptions); - InitializeAPDFields(&rv->apdOptions); -#ifdef _HANDLE_ENLIST_IN_DTC_ - rv->asdum = NULL; - rv->gTranInfo = 0; -#endif /* _HANDLE_ENLIST_IN_DTC_ */ - if (lockinit) - CC_lockinit(rv); - - return rv; - -cleanup: - CC_Destructor(rv); - return NULL; -} - -ConnectionClass *CC_Constructor() { - ConnectionClass *rv, *retrv = NULL; - - if (rv = CC_alloc(), NULL != rv) - retrv = CC_initialize(rv, TRUE); - return retrv; -} - -char CC_Destructor(ConnectionClass *self) { - MYLOG(OPENSEARCH_TRACE, "entering self=%p\n", self); - - if (self->status == CONN_EXECUTING) - return 0; - - CC_cleanup(self, FALSE); /* cleanup socket and statements */ - - MYLOG(OPENSEARCH_DEBUG, "after CC_Cleanup\n"); - - /* Free up statement holders */ - if (self->stmts) { - free(self->stmts); - self->stmts = NULL; - } - if (self->descs) { - free(self->descs); - self->descs = NULL; - } - MYLOG(OPENSEARCH_DEBUG, "after free statement holders\n"); - - NULL_THE_NAME(self->schemaIns); - NULL_THE_NAME(self->tableIns); - CC_conninfo_release(&self->connInfo); - if (self->__error_message) - free(self->__error_message); - DELETE_CONN_CS(self); - DELETE_CONNLOCK(self); - free(self); - - MYLOG(OPENSEARCH_TRACE, "leaving\n"); - - return 1; -} - -void CC_clear_error(ConnectionClass *self) { - if (!self) - return; - CONNLOCK_ACQUIRE(self); - self->__error_number = 0; - if (self->__error_message) { - free(self->__error_message); - self->__error_message = NULL; - } - self->sqlstate[0] = '\0'; - CONNLOCK_RELEASE(self); -} - -/* This is called by SQLSetConnectOption etc also */ -BOOL CC_set_autocommit(ConnectionClass *self, BOOL on) { - BOOL currsts = CC_is_in_autocommit(self); - - if ((on && currsts) || (!on && !currsts)) - return on; - MYLOG(OPENSEARCH_DEBUG, " %d->%d\n", currsts, on); - if (on) - self->transact_status |= CONN_IN_AUTOCOMMIT; - else - self->transact_status &= ~CONN_IN_AUTOCOMMIT; - - return on; -} - -/* Clear cached table info */ -static void CC_clear_col_info(ConnectionClass *self, BOOL destroy) { - if (self->col_info) { - int i; - COL_INFO *coli; - - for (i = 0; i < self->ntables; i++) { - if (coli = self->col_info[i], NULL != coli) { - if (destroy || coli->refcnt == 0) { - free_col_info_contents(coli); - free(coli); - self->col_info[i] = NULL; - } else - coli->acc_time = 0; - } - } - self->ntables = 0; - if (destroy) { - free(self->col_info); - self->col_info = NULL; - self->coli_allocated = 0; - } - } -} - -/* This is called by SQLDisconnect also */ -RETCODE -CC_cleanup(ConnectionClass *self, BOOL keepCommunication) { - int i; - StatementClass *stmt; - DescriptorClass *desc; - RETCODE ret = SQL_SUCCESS; - CSTR func = "CC_cleanup"; - - if (self->status == CONN_EXECUTING) - return FALSE; - - MYLOG(OPENSEARCH_TRACE, "entering self=%p\n", self); - - ENTER_CONN_CS(self); - /* Cancel an ongoing transaction */ - /* We are always in the middle of a transaction, */ - /* even if we are in auto commit. */ - if (self->opensearchconn) { - QLOG(0, "LIBOPENSEARCH_disconnect: %p\n", self->opensearchconn); - LIBOPENSEARCH_disconnect(self->opensearchconn); - self->opensearchconn = NULL; - } else { - ret = SQL_ERROR; - CC_set_error(self, CC_not_connected(self), "Connection not open", func); - } - - MYLOG(OPENSEARCH_DEBUG, "after LIBOPENSEARCH_disconnect\n"); - - /* Free all the stmts on this connection */ - for (i = 0; i < self->num_stmts; i++) { - stmt = self->stmts[i]; - if (stmt) { - stmt->hdbc = NULL; /* prevent any more dbase interactions */ - - SC_Destructor(stmt); - - self->stmts[i] = NULL; - } - } - /* Free all the descs on this connection */ - for (i = 0; i < self->num_descs; i++) { - desc = self->descs[i]; - if (desc) { - DC_get_conn(desc) = NULL; /* prevent any more dbase interactions */ - DC_Destructor(desc); - free(desc); - self->descs[i] = NULL; - } - } - - /* Check for translation dll */ -#ifdef WIN32 - if (!keepCommunication && self->translation_handle) { - FreeLibrary(self->translation_handle); - self->translation_handle = NULL; - } -#endif - - if (!keepCommunication) { - self->status = CONN_NOT_CONNECTED; - self->transact_status = CONN_IN_AUTOCOMMIT; - self->unnamed_prepared_stmt = NULL; - } - if (!keepCommunication) { - CC_conninfo_init(&(self->connInfo), CLEANUP_FOR_REUSE); - if (self->original_client_encoding) { - free(self->original_client_encoding); - self->original_client_encoding = NULL; - } - if (self->locale_encoding) { - free(self->locale_encoding); - self->locale_encoding = NULL; - } - if (self->server_encoding) { - free(self->server_encoding); - self->server_encoding = NULL; - } - reset_current_schema(self); - } - /* Free cached table info */ - CC_clear_col_info(self, TRUE); - if (self->num_discardp > 0 && self->discardp) { - for (i = 0; i < self->num_discardp; i++) - free(self->discardp[i]); - self->num_discardp = 0; - } - if (self->discardp) { - free(self->discardp); - self->discardp = NULL; - } - - LEAVE_CONN_CS(self); - MYLOG(OPENSEARCH_TRACE, "leaving\n"); - return ret; -} - -#ifndef OPENSEARCH_DIAG_SEVERITY_NONLOCALIZED -#define OPENSEARCH_DIAG_SEVERITY_NONLOCALIZED 'V' -#endif - -#define TRANSACTION_ISOLATION "transaction_isolation" -#define ISOLATION_SHOW_QUERY "show " TRANSACTION_ISOLATION - -char CC_add_statement(ConnectionClass *self, StatementClass *stmt) { - int i; - char ret = TRUE; - - MYLOG(OPENSEARCH_DEBUG, "self=%p, stmt=%p\n", self, stmt); - - CONNLOCK_ACQUIRE(self); - for (i = 0; i < self->num_stmts; i++) { - if (!self->stmts[i]) { - stmt->hdbc = self; - self->stmts[i] = stmt; - break; - } - } - - if (i >= self->num_stmts) /* no more room -- allocate more memory */ - { - StatementClass **newstmts; - Int2 new_num_stmts; - - new_num_stmts = STMT_INCREMENT + self->num_stmts; - - if (new_num_stmts > 0) - newstmts = (StatementClass **)realloc( - self->stmts, sizeof(StatementClass *) * new_num_stmts); - else - newstmts = NULL; /* num_stmts overflowed */ - if (!newstmts) - ret = FALSE; - else { - self->stmts = newstmts; - memset(&self->stmts[self->num_stmts], 0, - sizeof(StatementClass *) * STMT_INCREMENT); - - stmt->hdbc = self; - self->stmts[self->num_stmts] = stmt; - - self->num_stmts = new_num_stmts; - } - } - CONNLOCK_RELEASE(self); - - return ret; -} - -static void CC_set_error_statements(ConnectionClass *self) { - int i; - - MYLOG(OPENSEARCH_TRACE, "entering self=%p\n", self); - - for (i = 0; i < self->num_stmts; i++) { - if (NULL != self->stmts[i]) - SC_ref_CC_error(self->stmts[i]); - } -} - -char CC_remove_statement(ConnectionClass *self, StatementClass *stmt) { - int i; - char ret = FALSE; - - CONNLOCK_ACQUIRE(self); - for (i = 0; i < self->num_stmts; i++) { - if (self->stmts[i] == stmt && stmt->status != STMT_EXECUTING) { - self->stmts[i] = NULL; - ret = TRUE; - break; - } - } - CONNLOCK_RELEASE(self); - - return ret; -} - -char CC_get_escape(const ConnectionClass *self) { - UNUSED(self); - return ESCAPE_IN_LITERAL; -} - -int CC_get_max_idlen(ConnectionClass *self) { - UNUSED(self); - return self->max_identifier_length; -} - -SQLUINTEGER CC_get_isolation(ConnectionClass *self) { - UNUSED(self); - return ELASTIC_TRANSACTION_SUPPORT; -} - -void CC_set_error(ConnectionClass *self, int number, const char *message, - const char *func) { - CONNLOCK_ACQUIRE(self); - if (self->__error_message) - free(self->__error_message); - self->__error_number = number; - self->__error_message = message ? strdup(message) : NULL; - if (0 != number) - CC_set_error_statements(self); - if (func && number != 0) - CC_log_error(func, "", self); - CONNLOCK_RELEASE(self); -} - -void CC_set_errormsg(ConnectionClass *self, const char *message) { - CONNLOCK_ACQUIRE(self); - if (self->__error_message) - free(self->__error_message); - self->__error_message = message ? strdup(message) : NULL; - CONNLOCK_RELEASE(self); -} - -int CC_get_error(ConnectionClass *self, int *number, char **message) { - int rv; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - - CONNLOCK_ACQUIRE(self); - - if (CC_get_errornumber(self)) { - *number = CC_get_errornumber(self); - *message = CC_get_errormsg(self); - } - rv = (CC_get_errornumber(self) != 0); - - CONNLOCK_RELEASE(self); - - MYLOG(OPENSEARCH_TRACE, "leaving\n"); - - return rv; -} -void CC_log_error(const char *func, const char *desc, - const ConnectionClass *self) { -#define NULLCHECK(a) (a ? a : "(NULL)") - - if (self) { - MYLOG(OPENSEARCH_ERROR, - "CONN ERROR: func=%s, desc='%s', errnum=%d, errmsg='%s'\n", func, - desc, self->__error_number, NULLCHECK(self->__error_message)); - MYLOG(OPENSEARCH_ERROR, - " " - "------------------------------------------------------------\n"); - MYLOG(OPENSEARCH_ERROR, - " henv=%p, conn=%p, status=%u, num_stmts=%d\n", - self->henv, self, self->status, self->num_stmts); - MYLOG(OPENSEARCH_ERROR, " opensearchconn=%p, stmts=%p, lobj_type=%d\n", - self->opensearchconn, self->stmts, self->lobj_type); - } else { - MYLOG(OPENSEARCH_ERROR, "INVALID CONNECTION HANDLE ERROR: func=%s, desc='%s'\n", - func, desc); - } -} - -const char *CurrCat(const ConnectionClass *conn) { - UNUSED(conn); - return NULL; -} - -const char *CurrCatString(const ConnectionClass *conn) { - const char *cat = CurrCat(conn); - - if (!cat) - cat = NULL_STRING; - return cat; -} - -/*------ - * Create a null terminated lower-case string if the - * original string contains upper-case characters. - * The SQL_NTS length is considered. - *------ - */ -SQLCHAR *make_lstring_ifneeded(ConnectionClass *conn, const SQLCHAR *s, - ssize_t len, BOOL ifallupper) { - ssize_t length = len; - char *str = NULL; - const char *ccs = (const char *)s; - - if (s && (len > 0 || (len == SQL_NTS && (length = strlen(ccs)) > 0))) { - int i; - int tchar; - encoded_str encstr; - - make_encoded_str(&encstr, conn, ccs); - for (i = 0; i < length; i++) { - tchar = encoded_nextchar(&encstr); - if (MBCS_NON_ASCII(encstr)) - continue; - if (ifallupper && islower(tchar)) { - if (str) { - free(str); - str = NULL; - } - break; - } - if (tolower(tchar) != tchar) { - if (!str) { - str = malloc(length + 1); - if (!str) - return NULL; - memcpy(str, s, length); - str[length] = '\0'; - } - str[i] = (char)tolower(tchar); - } - } - } - - return (SQLCHAR *)str; -} diff --git a/sql-odbc/src/sqlodbc/convert.c b/sql-odbc/src/sqlodbc/convert.c deleted file mode 100644 index 8cc686aaed..0000000000 --- a/sql-odbc/src/sqlodbc/convert.c +++ /dev/null @@ -1,2282 +0,0 @@ -#include "convert.h" - -#include "misc.h" -#include "unicode_support.h" -#ifdef WIN32 -#include -#define HAVE_LOCALE_H -#endif /* WIN32 */ - -#include -#include -#include -#include - -#include "multibyte.h" -#ifdef HAVE_LOCALE_H -#include -#endif -#include -#include -#include - -#include "bind.h" -#include "catfunc.h" -#include "opensearch_types.h" -#include "opensearch_apifunc.h" -#include "opensearch_connection.h" -#include "qresult.h" -#include "statement.h" - -CSTR NAN_STRING = "NaN"; -CSTR INFINITY_STRING = "Infinity"; -CSTR MINFINITY_STRING = "-Infinity"; - -#if defined(WIN32) || defined(__CYGWIN__) -#define TIMEZONE_GLOBAL _timezone -#define TZNAME_GLOBAL _tzname -#define DAYLIGHT_GLOBAL _daylight -#elif defined(HAVE_INT_TIMEZONE) -#define TIMEZONE_GLOBAL timezone -#define TZNAME_GLOBAL tzname -#define DAYLIGHT_GLOBAL daylight -#endif - -typedef struct { - int infinity; - int m; - int d; - int y; - int hh; - int mm; - int ss; - int fr; -} SIMPLE_TIME; - -static BOOL convert_money(const char *s, char *sout, size_t soutmax); -size_t convert_linefeeds(const char *s, char *dst, size_t max, BOOL convlf, - BOOL *changed); -static size_t convert_from_opensearchbinary(const char *value, char *rgbValue, - SQLLEN cbValueMax); -static int convert_lo(StatementClass *stmt, const void *value, - SQLSMALLINT fCType, PTR rgbValue, SQLLEN cbValueMax, - SQLLEN *pcbValue); -static int conv_from_octal(const char *s); -static SQLLEN opensearch_bin2hex(const char *src, char *dst, SQLLEN length); -#ifdef UNICODE_SUPPORT -static SQLLEN es_bin2whex(const char *src, SQLWCHAR *dst, SQLLEN length); -#endif /* UNICODE_SUPPORT */ - -/*--------- - * A Guide for date/time/timestamp conversions - * - * field_type fCType Output - * ---------- ------ ---------- - * OPENSEARCH_TYPE_DATE SQL_C_DEFAULT SQL_C_DATE - * OPENSEARCH_TYPE_DATE SQL_C_DATE SQL_C_DATE - * OPENSEARCH_TYPE_DATE SQL_C_TIMESTAMP SQL_C_TIMESTAMP (time = 0 - *(midnight)) OPENSEARCH_TYPE_TIME SQL_C_DEFAULT SQL_C_TIME OPENSEARCH_TYPE_TIME - *SQL_C_TIME SQL_C_TIME - * OPENSEARCH_TYPE_TIME SQL_C_TIMESTAMP SQL_C_TIMESTAMP (date = - *current date) OPENSEARCH_TYPE_ABSTIME SQL_C_DEFAULT SQL_C_TIMESTAMP - *OPENSEARCH_TYPE_ABSTIME SQL_C_DATE SQL_C_DATE (time is truncated) - *OPENSEARCH_TYPE_ABSTIME SQL_C_TIME SQL_C_TIME (date is truncated) - *OPENSEARCH_TYPE_ABSTIME SQL_C_TIMESTAMP SQL_C_TIMESTAMP - *--------- - */ - -/* - * Macros for unsigned long handling. - */ -#ifdef WIN32 -#define ATOI32U(val) strtoul(val, NULL, 10) -#elif defined(HAVE_STRTOUL) -#define ATOI32U(val) strtoul(val, NULL, 10) -#else /* HAVE_STRTOUL */ -#define ATOI32U atol -#endif /* WIN32 */ - -/* - * Macros for BIGINT handling. - */ -#ifdef ODBCINT64 -#ifdef WIN32 -#define ATOI64(val) _strtoi64(val, NULL, 10) -#define ATOI64U(val) _strtoui64(val, NULL, 10) -#elif (SIZEOF_LONG == 8) -#define ATOI64(val) strtol(val, NULL, 10) -#define ATOI64U(val) strtoul(val, NULL, 10) -#else -#if defined(HAVE_STRTOLL) -#define ATOI64(val) strtoll(val, NULL, 10) -#define ATOI64U(val) strtoull(val, NULL, 10) -#else -static ODBCINT64 ATOI64(const char *val) { - ODBCINT64 ll; - sscanf(val, "%lld", &ll); - return ll; -} -static unsigned ODBCINT64 ATOI64U(const char *val) { - unsigned ODBCINT64 ll; - sscanf(val, "%llu", &ll); - return ll; -} -#endif /* HAVE_STRTOLL */ -#endif /* WIN32 */ -#endif /* ODBCINT64 */ - -static void parse_to_numeric_struct(const char *wv, SQL_NUMERIC_STRUCT *ns, - BOOL *overflow); - -/* - * TIMESTAMP <-----> SIMPLE_TIME - * precision support since 7.2. - * time zone support is unavailable(the stuff is unreliable) - */ -static BOOL timestamp2stime(const char *str, SIMPLE_TIME *st, BOOL *bZone, - int *zone) { - char rest[64], bc[16], *ptr; - int scnt, i; - int y, m, d, hh, mm, ss; -#ifdef TIMEZONE_GLOBAL - long timediff; -#endif - BOOL withZone = *bZone; - - *bZone = FALSE; - *zone = 0; - st->fr = 0; - st->infinity = 0; - rest[0] = '\0'; - bc[0] = '\0'; - if ((scnt = sscanf(str, "%4d-%2d-%2d %2d:%2d:%2d%31s %15s", &y, &m, &d, &hh, - &mm, &ss, rest, bc)) - < 6) { - if (scnt == 3) /* date */ - { - st->y = y; - st->m = m; - st->d = d; - st->hh = 0; - st->mm = 0; - st->ss = 0; - return TRUE; - } - if ((scnt = - sscanf(str, "%2d:%2d:%2d%31s %15s", &hh, &mm, &ss, rest, bc)) - < 3) - return FALSE; - else { - st->hh = hh; - st->mm = mm; - st->ss = ss; - if (scnt == 3) /* time */ - return TRUE; - } - } else { - st->y = y; - st->m = m; - st->d = d; - st->hh = hh; - st->mm = mm; - st->ss = ss; - if (scnt == 6) - return TRUE; - } - switch (rest[0]) { - case '+': - *bZone = TRUE; - *zone = atoi(&rest[1]); - break; - case '-': - *bZone = TRUE; - *zone = -atoi(&rest[1]); - break; - case '.': - if ((ptr = strchr(rest, '+')) != NULL) { - *bZone = TRUE; - *zone = atoi(&ptr[1]); - *ptr = '\0'; - } else if ((ptr = strchr(rest, '-')) != NULL) { - *bZone = TRUE; - *zone = -atoi(&ptr[1]); - *ptr = '\0'; - } - for (i = 1; i < 10; i++) { - if (!isdigit((UCHAR)rest[i])) - break; - } - for (; i < 10; i++) - rest[i] = '0'; - rest[i] = '\0'; - st->fr = atoi(&rest[1]); - break; - case 'B': - if (stricmp(rest, "BC") == 0) - st->y *= -1; - return TRUE; - default: - return TRUE; - } - if (stricmp(bc, "BC") == 0) { - st->y *= -1; - } - if (!withZone || !*bZone || st->y < 1970) - return TRUE; -#ifdef TIMEZONE_GLOBAL - if (!TZNAME_GLOBAL[0] || !TZNAME_GLOBAL[0][0]) { - *bZone = FALSE; - return TRUE; - } - timediff = TIMEZONE_GLOBAL + (*zone) * 3600; - if (!DAYLIGHT_GLOBAL && timediff == 0) /* the same timezone */ - return TRUE; - else { - struct tm tm, *tm2; - time_t time0; - - *bZone = FALSE; - tm.tm_year = st->y - 1900; - tm.tm_mon = st->m - 1; - tm.tm_mday = st->d; - tm.tm_hour = st->hh; - tm.tm_min = st->mm; - tm.tm_sec = st->ss; - tm.tm_isdst = -1; - time0 = mktime(&tm); - if (time0 < 0) - return TRUE; - if (tm.tm_isdst > 0) - timediff -= 3600; - if (timediff == 0) /* the same time zone */ - return TRUE; - time0 -= timediff; -#ifdef HAVE_LOCALTIME_R - if (time0 >= 0 && (tm2 = localtime_r(&time0, &tm)) != NULL) -#else - if (time0 >= 0 && (tm2 = localtime(&time0)) != NULL) -#endif /* HAVE_LOCALTIME_R */ - { - st->y = tm2->tm_year + 1900; - st->m = tm2->tm_mon + 1; - st->d = tm2->tm_mday; - st->hh = tm2->tm_hour; - st->mm = tm2->tm_min; - st->ss = tm2->tm_sec; - *bZone = TRUE; - } - } -#endif /* TIMEZONE_GLOBAL */ - return TRUE; -} - -static int stime2timestamp(const SIMPLE_TIME *st, char *str, size_t bufsize, - BOOL bZone, int precision) { - UNUSED(bZone); - char precstr[16], zonestr[16]; - int i; - - precstr[0] = '\0'; - if (st->infinity > 0) { - return snprintf(str, bufsize, "%s", INFINITY_STRING); - } else if (st->infinity < 0) { - return snprintf(str, bufsize, "%s", MINFINITY_STRING); - } - if (precision > 0 && st->fr) { - SPRINTF_FIXED(precstr, ".%09d", st->fr); - if (precision < 9) - precstr[precision + 1] = '\0'; - else if (precision > 9) - precision = 9; - for (i = precision; i > 0; i--) { - if (precstr[i] != '0') - break; - precstr[i] = '\0'; - } - if (i == 0) - precstr[i] = '\0'; - } - zonestr[0] = '\0'; -#ifdef TIMEZONE_GLOBAL - if (bZone && TZNAME_GLOBAL[0] && TZNAME_GLOBAL[0][0] && st->y >= 1970) { - long zoneint; - struct tm tm; - time_t time0; - - zoneint = TIMEZONE_GLOBAL; - if (DAYLIGHT_GLOBAL && st->y >= 1900) { - tm.tm_year = st->y - 1900; - tm.tm_mon = st->m - 1; - tm.tm_mday = st->d; - tm.tm_hour = st->hh; - tm.tm_min = st->mm; - tm.tm_sec = st->ss; - tm.tm_isdst = -1; - time0 = mktime(&tm); - if (time0 >= 0 && tm.tm_isdst > 0) - zoneint -= 3600; - } - if (zoneint > 0) - SPRINTF_FIXED(zonestr, "-%02d", (int)zoneint / 3600); - else - SPRINTF_FIXED(zonestr, "+%02d", -(int)zoneint / 3600); - } -#endif /* TIMEZONE_GLOBAL */ - if (st->y < 0) - return snprintf(str, bufsize, "%.4d-%.2d-%.2d %.2d:%.2d:%.2d%s%s BC", - -st->y, st->m, st->d, st->hh, st->mm, st->ss, precstr, - zonestr); - else - return snprintf(str, bufsize, "%.4d-%.2d-%.2d %.2d:%.2d:%.2d%s%s", - st->y, st->m, st->d, st->hh, st->mm, st->ss, precstr, - zonestr); -} - -static SQLINTERVAL interval2itype(SQLSMALLINT ctype) { - SQLINTERVAL sqlitv = 0; - - switch (ctype) { - case SQL_C_INTERVAL_YEAR: - sqlitv = SQL_IS_YEAR; - break; - case SQL_C_INTERVAL_MONTH: - sqlitv = SQL_IS_MONTH; - break; - case SQL_C_INTERVAL_YEAR_TO_MONTH: - sqlitv = SQL_IS_YEAR_TO_MONTH; - break; - case SQL_C_INTERVAL_DAY: - sqlitv = SQL_IS_DAY; - break; - case SQL_C_INTERVAL_HOUR: - sqlitv = SQL_IS_HOUR; - break; - case SQL_C_INTERVAL_DAY_TO_HOUR: - sqlitv = SQL_IS_DAY_TO_HOUR; - break; - case SQL_C_INTERVAL_MINUTE: - sqlitv = SQL_IS_MINUTE; - break; - case SQL_C_INTERVAL_DAY_TO_MINUTE: - sqlitv = SQL_IS_DAY_TO_MINUTE; - break; - case SQL_C_INTERVAL_HOUR_TO_MINUTE: - sqlitv = SQL_IS_HOUR_TO_MINUTE; - break; - case SQL_C_INTERVAL_SECOND: - sqlitv = SQL_IS_SECOND; - break; - case SQL_C_INTERVAL_DAY_TO_SECOND: - sqlitv = SQL_IS_DAY_TO_SECOND; - break; - case SQL_C_INTERVAL_HOUR_TO_SECOND: - sqlitv = SQL_IS_HOUR_TO_SECOND; - break; - case SQL_C_INTERVAL_MINUTE_TO_SECOND: - sqlitv = SQL_IS_MINUTE_TO_SECOND; - break; - } - return sqlitv; -} - -/* - * Interval data <-----> SQL_INTERVAL_STRUCT - */ - -static int getPrecisionPart(int precision, const char *precPart) { - char fraction[] = "000000000"; - size_t fracs = (size_t)(sizeof(fraction) - 1); - size_t cpys; - - if (precision < 0) - precision = 6; /* default */ - if (precision == 0) - return 0; - cpys = strlen(precPart); - if (cpys > fracs) - cpys = fracs; - memcpy(fraction, precPart, cpys); - fraction[precision] = '\0'; - - return atoi(fraction); -} - -static BOOL interval2istruct(SQLSMALLINT ctype, int precision, const char *str, - SQL_INTERVAL_STRUCT *st) { - char lit1[64], lit2[64]; - int scnt, years, mons, days, hours, minutes, seconds; - SQLSMALLINT sign; - SQLINTERVAL itype = interval2itype(ctype); - - memset(st, 0, sizeof(SQL_INTERVAL_STRUCT)); - if ((scnt = sscanf(str, "%d-%d", &years, &mons)) >= 2) { - if (SQL_IS_YEAR_TO_MONTH == itype) { - sign = years < 0 ? SQL_TRUE : SQL_FALSE; - st->interval_type = itype; - st->interval_sign = sign; - st->intval.year_month.year = sign ? (-years) : years; - st->intval.year_month.month = mons; - return TRUE; - } - return FALSE; - } else if (scnt = sscanf(str, "%d %02d:%02d:%02d.%09s", &days, &hours, - &minutes, &seconds, lit2), - 5 == scnt || 4 == scnt) { - sign = days < 0 ? SQL_TRUE : SQL_FALSE; - st->interval_type = itype; - st->interval_sign = sign; - st->intval.day_second.day = sign ? (-days) : days; - st->intval.day_second.hour = hours; - st->intval.day_second.minute = minutes; - st->intval.day_second.second = seconds; - if (scnt > 4) - st->intval.day_second.fraction = getPrecisionPart(precision, lit2); - return TRUE; - } else if ((scnt = - sscanf(str, "%d %10s %d %10s", &years, lit1, &mons, lit2)) - >= 4) { - if (strnicmp(lit1, "year", 4) == 0 && strnicmp(lit2, "mon", 2) == 0 - && (SQL_IS_MONTH == itype || SQL_IS_YEAR_TO_MONTH == itype)) { - sign = years < 0 ? SQL_TRUE : SQL_FALSE; - st->interval_type = itype; - st->interval_sign = sign; - st->intval.year_month.year = sign ? (-years) : years; - st->intval.year_month.month = sign ? (-mons) : mons; - return TRUE; - } - return FALSE; - } - if ((scnt = sscanf(str, "%d %10s %d", &years, lit1, &days)) == 2) { - sign = years < 0 ? SQL_TRUE : SQL_FALSE; - if (SQL_IS_YEAR == itype - && (stricmp(lit1, "year") == 0 || stricmp(lit1, "years") == 0)) { - st->interval_type = itype; - st->interval_sign = sign; - st->intval.year_month.year = sign ? (-years) : years; - return TRUE; - } - if (SQL_IS_MONTH == itype - && (stricmp(lit1, "mon") == 0 || stricmp(lit1, "mons") == 0)) { - st->interval_type = itype; - st->interval_sign = sign; - st->intval.year_month.month = sign ? (-years) : years; - return TRUE; - } - if (SQL_IS_DAY == itype - && (stricmp(lit1, "day") == 0 || stricmp(lit1, "days") == 0)) { - st->interval_type = itype; - st->interval_sign = sign; - st->intval.day_second.day = sign ? (-years) : years; - return TRUE; - } - return FALSE; - } - if (itype == SQL_IS_YEAR || itype == SQL_IS_MONTH - || itype == SQL_IS_YEAR_TO_MONTH) { - /* these formats should've been handled above already */ - return FALSE; - } - scnt = sscanf(str, "%d %10s %02d:%02d:%02d.%09s", &days, lit1, &hours, - &minutes, &seconds, lit2); - if (scnt == 5 || scnt == 6) { - if (strnicmp(lit1, "day", 3) != 0) - return FALSE; - sign = days < 0 ? SQL_TRUE : SQL_FALSE; - - st->interval_type = itype; - st->interval_sign = sign; - st->intval.day_second.day = sign ? (-days) : days; - st->intval.day_second.hour = sign ? (-hours) : hours; - st->intval.day_second.minute = minutes; - st->intval.day_second.second = seconds; - if (scnt > 5) - st->intval.day_second.fraction = getPrecisionPart(precision, lit2); - return TRUE; - } - scnt = sscanf(str, "%02d:%02d:%02d.%09s", &hours, &minutes, &seconds, lit2); - if (scnt == 3 || scnt == 4) { - sign = hours < 0 ? SQL_TRUE : SQL_FALSE; - - st->interval_type = itype; - st->interval_sign = sign; - st->intval.day_second.hour = sign ? (-hours) : hours; - st->intval.day_second.minute = minutes; - st->intval.day_second.second = seconds; - if (scnt > 3) - st->intval.day_second.fraction = getPrecisionPart(precision, lit2); - return TRUE; - } - - return FALSE; -} - -#ifdef HAVE_LOCALE_H -/* - * Get the decimal point of the current locale. - * - * XXX: This isn't thread-safe, if another thread changes the locale with - * setlocale() concurrently. There are two problems with that: - * - * 1. The pointer returned by localeconv(), or the lc->decimal_point string, - * might be invalidated by calls in other threads. Until someone comes up - * with a thread-safe version of localeconv(), there isn't much we can do - * about that. (libc implementations that return a static buffer (like glibc) - * happen to be safe from the lconv struct being invalidated, but the - * decimal_point string might still not point to a static buffer). - * - * 2. The between the call to sprintf() and get_current_decimal_point(), the - * decimal point might change. That would cause set_server_decimal_point() - * to fail to recognize a decimal separator, and we might send a numeric - * string to the server that the server won't recognize. This would cause - * the query to fail in the server. - * - * XXX: we only take into account the first byte of the decimal separator. - */ -static char get_current_decimal_point(void) { - struct lconv *lc = localeconv(); - - return lc->decimal_point[0]; -} - -/* - * Inverse of set_server_decimal_point. - */ -static void set_client_decimal_point(char *num) { - char current_decimal_point = get_current_decimal_point(); - char *str; - - if ('.' == current_decimal_point) - return; - for (str = num; '\0' != *str; str++) { - if (*str == '.') { - *str = current_decimal_point; - break; - } - } -} -#else -static void set_client_decimal_point(char *num) { - UNUSED(num); -} -#endif /* HAVE_LOCALE_H */ - -/* This is called by SQLFetch() */ -int copy_and_convert_field_bindinfo(StatementClass *stmt, OID field_type, - int atttypmod, void *value, int col) { - ARDFields *opts = SC_get_ARDF(stmt); - BindInfoClass *bic; - SQLULEN offset = opts->row_offset_ptr ? *opts->row_offset_ptr : 0; - - if (opts->allocated <= col) - extend_column_bindings(opts, (SQLSMALLINT)(col + 1)); - bic = &(opts->bindings[col]); - SC_set_current_col(stmt, -1); - return copy_and_convert_field(stmt, field_type, atttypmod, value, - bic->returntype, bic->precision, - (PTR)(bic->buffer + offset), bic->buflen, - LENADDR_SHIFT(bic->used, offset), - LENADDR_SHIFT(bic->indicator, offset)); -} - -static double get_double_value(const char *str) { - if (stricmp(str, NAN_STRING) == 0) -#ifdef NAN - return (double)NAN; -#else - { - double a = .0; - return .0 / a; - } -#endif /* NAN */ - else if (stricmp(str, INFINITY_STRING) == 0) -#ifdef INFINITY - return (double)INFINITY; -#else - return (double)(HUGE_VAL * HUGE_VAL); -#endif /* INFINITY */ - else if (stricmp(str, MINFINITY_STRING) == 0) -#ifdef INFINITY - return (double)-INFINITY; -#else - return (double)-(HUGE_VAL * HUGE_VAL); -#endif /* INFINITY */ - return atof(str); -} - -static int char2guid(const char *str, SQLGUID *g) { - /* - * SQLGUID.Data1 is an "unsigned long" on some platforms, and - * "unsigned int" on others. For format "%08X", it should be an - * "unsigned int", so use a temporary variable for it. - */ - unsigned int Data1; - if (sscanf(str, - "%08X-%04hX-%04hX-%02hhX%02hhX-%02hhX%02hhX%02hhX%02hhX%02hhX%" - "02hhX", - &Data1, &g->Data2, &g->Data3, &g->Data4[0], &g->Data4[1], - &g->Data4[2], &g->Data4[3], &g->Data4[4], &g->Data4[5], - &g->Data4[6], &g->Data4[7]) - < 11) - return COPY_GENERAL_ERROR; - g->Data1 = Data1; - return COPY_OK; -} - -static int effective_fraction(int fraction, int *width) { - for (*width = 9; fraction % 10 == 0; (*width)--, fraction /= 10) - ; - return fraction; -} - -static int get_terminator_len(SQLSMALLINT fCType) { - switch (fCType) { -#ifdef UNICODE_SUPPORT - case SQL_C_WCHAR: - return WCLEN; -#endif /* UNICODE_SUPPORT */ - case SQL_C_BINARY: - return 0; - } - - /* SQL_C_CHAR or INTERNAL_ASIS_TYPE */ - return 1; -} - -static SQLLEN get_adjust_len(SQLSMALLINT fCType, SQLLEN len) { - switch (fCType) { -#ifdef UNICODE_SUPPORT - case SQL_C_WCHAR: - return (len / WCLEN) * WCLEN; -#endif /* UNICODE_SUPPORT */ - } - - return len; -} - -#define BYTEA_PROCESS_ESCAPE 1 -#define BYTEA_PROCESS_BINARY 2 - -static int setup_getdataclass(SQLLEN *const length_return, - const char **const ptr_return, - int *needbuflen_return, GetDataClass *const esdc, - const char *neut_str, const OID field_type, - const SQLSMALLINT fCType, const SQLLEN cbValueMax, - const ConnectionClass *const conn) { - SQLLEN len = (-2); - const char *ptr = NULL; - int needbuflen = 0; - int result = COPY_OK; - - BOOL lf_conv = 0; - int bytea_process_kind = 0; - BOOL already_processed = FALSE; - BOOL changed = FALSE; - int len_for_wcs_term = 0; - -#ifdef UNICODE_SUPPORT - char *allocbuf = NULL; - int unicode_count = -1; - BOOL localize_needed = FALSE; - BOOL hybrid = FALSE; -#endif /* UNICODE_SUPPORT */ - - if (OPENSEARCH_TYPE_BYTEA == field_type) { - if (SQL_C_BINARY == fCType) - bytea_process_kind = BYTEA_PROCESS_BINARY; - else if (0 == strnicmp(neut_str, "\\x", 2)) /* hex format */ - neut_str += 2; - else - bytea_process_kind = BYTEA_PROCESS_ESCAPE; - } - -#ifdef UNICODE_SUPPORT - if (0 == bytea_process_kind) { - if (get_convtype() - > 0) /* coversion between the current locale is available */ - { - BOOL wcs_debug = 0; - BOOL same_encoding = - (conn->ccsc == opensearch_CS_code(conn->locale_encoding)); - BOOL is_utf8 = (UTF8 == conn->ccsc); - - switch (field_type) { - case OPENSEARCH_TYPE_UNKNOWN: - case OPENSEARCH_TYPE_BPCHAR: - case OPENSEARCH_TYPE_VARCHAR: - case OPENSEARCH_TYPE_TEXT: - case OPENSEARCH_TYPE_BPCHARARRAY: - case OPENSEARCH_TYPE_VARCHARARRAY: - case OPENSEARCH_TYPE_TEXTARRAY: - if (SQL_C_CHAR == fCType || SQL_C_BINARY == fCType) - localize_needed = (!same_encoding || wcs_debug); - if (SQL_C_WCHAR == fCType) - hybrid = (!is_utf8 || (same_encoding && wcs_debug)); - } - MYLOG(OPENSEARCH_DEBUG, - "localize=%d hybrid=%d is_utf8=%d same_encoding=%d " - "wcs_debug=%d\n", - localize_needed, hybrid, is_utf8, same_encoding, wcs_debug); - } - } - if (fCType == SQL_C_WCHAR) { - if (BYTEA_PROCESS_ESCAPE == bytea_process_kind) - unicode_count = (int)convert_from_opensearchbinary(neut_str, NULL, 0) * 2; - else if (hybrid) { - MYLOG(OPENSEARCH_DEBUG, "hybrid estimate\n"); - if ((unicode_count = - (int)bindcol_hybrid_estimate(neut_str, lf_conv, &allocbuf)) - < 0) { - result = COPY_INVALID_STRING_CONVERSION; - goto cleanup; - } - } else /* normally */ - { - unicode_count = (int)utf8_to_ucs2_lf(neut_str, SQL_NTS, lf_conv, - NULL, 0, FALSE); - } - len = WCLEN * unicode_count; - already_processed = changed = TRUE; - } else if (localize_needed) { - if ((len = bindcol_localize_estimate(neut_str, lf_conv, &allocbuf)) - < 0) { - result = COPY_INVALID_STRING_CONVERSION; - goto cleanup; - } - already_processed = changed = TRUE; - } -#endif /* UNICODE_SUPPORT */ - - if (already_processed) /* skip */ - ; - else if (0 != bytea_process_kind) { - len = convert_from_opensearchbinary(neut_str, NULL, 0); - if (BYTEA_PROCESS_BINARY != bytea_process_kind) - len *= 2; - changed = TRUE; - } else - /* convert linefeeds to carriage-return/linefeed */ - len = convert_linefeeds(neut_str, NULL, 0, lf_conv, &changed); - - /* just returns length info */ - if (cbValueMax == 0) { - result = COPY_RESULT_TRUNCATED; - goto cleanup; - } - - if (!esdc->ttlbuf) - esdc->ttlbuflen = 0; - needbuflen = (int)len + get_terminator_len(fCType); - if (SQL_C_BINARY == fCType) { - /* - * Though Binary doesn't have NULL terminator, - * bindcol_localize_exec() needs output buffer - * for NULL terminator. - */ - len_for_wcs_term = 1; - } - if (changed || needbuflen > cbValueMax) { - if (needbuflen > (SQLLEN)esdc->ttlbuflen) { - esdc->ttlbuf = realloc(esdc->ttlbuf, needbuflen + len_for_wcs_term); - esdc->ttlbuflen = needbuflen; - } - - already_processed = FALSE; -#ifdef UNICODE_SUPPORT - if (fCType == SQL_C_WCHAR) { - if (BYTEA_PROCESS_ESCAPE == bytea_process_kind) { - len = convert_from_opensearchbinary(neut_str, esdc->ttlbuf, - esdc->ttlbuflen); - len = es_bin2whex(esdc->ttlbuf, (SQLWCHAR *)esdc->ttlbuf, len); - } else { - if (!hybrid) /* normally */ - utf8_to_ucs2_lf(neut_str, SQL_NTS, lf_conv, - (SQLWCHAR *)esdc->ttlbuf, unicode_count, - FALSE); - else /* hybrid */ - { - MYLOG(OPENSEARCH_DEBUG, "hybrid convert\n"); - if (bindcol_hybrid_exec((SQLWCHAR *)esdc->ttlbuf, neut_str, - unicode_count + 1, lf_conv, - &allocbuf) - < 0) { - result = COPY_INVALID_STRING_CONVERSION; - goto cleanup; - } - } - } - already_processed = TRUE; - } else if (localize_needed) { - if (bindcol_localize_exec(esdc->ttlbuf, len + 1, lf_conv, &allocbuf) - < 0) { - result = COPY_INVALID_STRING_CONVERSION; - goto cleanup; - } - already_processed = TRUE; - } -#endif /* UNICODE_SUPPORT */ - - if (already_processed) - ; - else if (0 != bytea_process_kind) { - len = convert_from_opensearchbinary(neut_str, esdc->ttlbuf, - esdc->ttlbuflen); - if (BYTEA_PROCESS_ESCAPE == bytea_process_kind) - len = opensearch_bin2hex(esdc->ttlbuf, esdc->ttlbuf, len); - } else - convert_linefeeds(neut_str, esdc->ttlbuf, esdc->ttlbuflen, lf_conv, - &changed); - ptr = esdc->ttlbuf; - esdc->ttlbufused = len; - } else { - if (esdc->ttlbuf) { - free(esdc->ttlbuf); - esdc->ttlbuf = NULL; - } - ptr = neut_str; - } -cleanup: -#ifdef UNICODE_SUPPORT - if (allocbuf) - free(allocbuf); -#endif /* UNICODE_SUPPORT */ - - *length_return = len; - *ptr_return = ptr; - *needbuflen_return = needbuflen; - - return result; -} - -/* - gdata SC_get_GDTI(stmt) - current_col stmt->current_col - */ - -/* - * fCType treated in the following function is - * - * SQL_C_CHAR, SQL_C_BINARY, SQL_C_WCHAR or INTERNAL_ASIS_TYPE - */ -static int convert_text_field_to_sql_c( - GetDataInfo *const gdata, const int current_col, const char *const neut_str, - const OID field_type, const SQLSMALLINT fCType, char *const rgbValueBindRow, - const SQLLEN cbValueMax, const ConnectionClass *const conn, - SQLLEN *const length_return) { - int result = COPY_OK; - SQLLEN len = (-2); - GetDataClass *esdc; - int copy_len = 0, needbuflen = 0, i; - const char *ptr; - - MYLOG(OPENSEARCH_DEBUG, "field_type=%u type=%d\n", field_type, fCType); - - switch (field_type) { - case OPENSEARCH_TYPE_FLOAT4: - case OPENSEARCH_TYPE_FLOAT8: - case OPENSEARCH_TYPE_NUMERIC: - set_client_decimal_point((char *)neut_str); - break; - } - - if (current_col < 0) { - esdc = &(gdata->fdata); - esdc->data_left = -1; - } else - esdc = &gdata->gdata[current_col]; - if (esdc->data_left < 0) { - if (COPY_OK - != (result = - setup_getdataclass(&len, &ptr, &needbuflen, esdc, neut_str, - field_type, fCType, cbValueMax, conn))) - goto cleanup; - } else { - ptr = esdc->ttlbuf; - len = esdc->ttlbufused; - } - - MYLOG(OPENSEARCH_DEBUG, "DEFAULT: len = " FORMAT_LEN ", ptr = '%.*s'\n", len, - (int)len, ptr); - - if (current_col >= 0) { - if (esdc->data_left > 0) { - ptr += (len - esdc->data_left); - len = esdc->data_left; - needbuflen = (int)len + (int)(esdc->ttlbuflen - esdc->ttlbufused); - } else - esdc->data_left = len; - } - - if (cbValueMax > 0) { - BOOL already_copied = FALSE; - int terminatorlen; - - terminatorlen = get_terminator_len(fCType); - if (terminatorlen >= cbValueMax) - copy_len = 0; - else if (len + terminatorlen > cbValueMax) - copy_len = (int)get_adjust_len(fCType, cbValueMax - terminatorlen); - else - copy_len = (int)len; - - if (!already_copied) { - /* Copy the data */ - if (copy_len > 0) - memcpy(rgbValueBindRow, ptr, copy_len); - /* Add null terminator */ - for (i = 0; i < terminatorlen && copy_len + i < cbValueMax; i++) - rgbValueBindRow[copy_len + i] = '\0'; - } - /* Adjust data_left for next time */ - if (current_col >= 0) - esdc->data_left -= copy_len; - } - - /* - * Finally, check for truncation so that proper status can - * be returned - */ - if (cbValueMax > 0 && needbuflen > cbValueMax) - result = COPY_RESULT_TRUNCATED; - else { - if (esdc->ttlbuf != NULL) { - free(esdc->ttlbuf); - esdc->ttlbuf = NULL; - } - } - -#ifdef UNICODE_SUPPORT - if (SQL_C_WCHAR == fCType) - MYLOG(OPENSEARCH_DEBUG, - " SQL_C_WCHAR, default: len = " FORMAT_LEN - ", cbValueMax = " FORMAT_LEN ", rgbValueBindRow = '%s'\n", - len, cbValueMax, rgbValueBindRow); - else -#endif /* UNICODE_SUPPORT */ - if (SQL_C_BINARY == fCType) - MYLOG(OPENSEARCH_DEBUG, - " SQL_C_BINARY, default: len = " FORMAT_LEN - ", cbValueMax = " FORMAT_LEN ", rgbValueBindRow = '%.*s'\n", - len, cbValueMax, copy_len, rgbValueBindRow); - else - MYLOG(OPENSEARCH_DEBUG, - " SQL_C_CHAR, default: len = " FORMAT_LEN - ", cbValueMax = " FORMAT_LEN ", rgbValueBindRow = '%s'\n", - len, cbValueMax, rgbValueBindRow); - -cleanup: - *length_return = len; - - return result; -} - -/* This is called by SQLGetData() */ -int copy_and_convert_field(StatementClass *stmt, OID field_type, int atttypmod, - void *valuei, SQLSMALLINT fCType, int precision, - PTR rgbValue, SQLLEN cbValueMax, SQLLEN *pcbValue, - SQLLEN *pIndicator) { - CSTR func = "copy_and_convert_field"; - const char *value = valuei; - ARDFields *opts = SC_get_ARDF(stmt); - GetDataInfo *gdata = SC_get_GDTI(stmt); - SQLLEN len = 0; - SIMPLE_TIME std_time; -#ifdef HAVE_LOCALTIME_R - struct tm tm; -#endif /* HAVE_LOCALTIME_R */ - SQLLEN pcbValueOffset, rgbValueOffset; - char *rgbValueBindRow = NULL; - SQLLEN *pcbValueBindRow = NULL, *pIndicatorBindRow = NULL; - SQLSETPOSIROW bind_row = stmt->bind_row; - int bind_size = opts->bind_size; - int result = COPY_OK; - const ConnectionClass *conn = SC_get_conn(stmt); - BOOL text_bin_handling; - const char *neut_str = value; - char booltemp[3]; - char midtemp[64]; - GetDataClass *esdc; - - if (stmt->current_col >= 0) { - if (stmt->current_col >= opts->allocated) { - return SQL_ERROR; - } - if (gdata->allocated != opts->allocated) - extend_getdata_info(gdata, opts->allocated, TRUE); - esdc = &gdata->gdata[stmt->current_col]; - if (esdc->data_left == -2) - esdc->data_left = (cbValueMax > 0) ? 0 : -1; /* This seems to be * - * needed by ADO ? */ - if (esdc->data_left == 0) { - if (esdc->ttlbuf != NULL) { - free(esdc->ttlbuf); - esdc->ttlbuf = NULL; - esdc->ttlbuflen = 0; - } - esdc->data_left = -2; /* needed by ADO ? */ - return COPY_NO_DATA_FOUND; - } - } - /*--------- - * rgbValueOffset is *ONLY* for character and binary data. - * pcbValueOffset is for computing any pcbValue location - *--------- - */ - - if (bind_size > 0) - pcbValueOffset = rgbValueOffset = (bind_size * bind_row); - else { - pcbValueOffset = bind_row * sizeof(SQLLEN); - rgbValueOffset = bind_row * cbValueMax; - } - /* - * The following is applicable in case bind_size > 0 - * or the fCType is of variable length. - */ - if (rgbValue) - rgbValueBindRow = (char *)rgbValue + rgbValueOffset; - if (pcbValue) - pcbValueBindRow = LENADDR_SHIFT(pcbValue, pcbValueOffset); - if (pIndicator) { - pIndicatorBindRow = (SQLLEN *)((char *)pIndicator + pcbValueOffset); - *pIndicatorBindRow = 0; - } - - memset(&std_time, 0, sizeof(SIMPLE_TIME)); - - MYLOG(OPENSEARCH_DEBUG, - "field_type = %d, fctype = %d, value = '%s', cbValueMax=" FORMAT_LEN - "\n", - field_type, fCType, (value == NULL) ? "" : value, cbValueMax); - - if (!value) { - /* - * handle a null just by returning SQL_NULL_DATA in pcbValue, and - * doing nothing to the buffer. - */ - if (pIndicator) { - *pIndicatorBindRow = SQL_NULL_DATA; - return COPY_OK; - } else { - SC_set_error(stmt, STMT_RETURN_NULL_WITHOUT_INDICATOR, - "StrLen_or_IndPtr was a null pointer and NULL data " - "was retrieved", - func); - return SQL_ERROR; - } - } - - if (stmt->hdbc->DataSourceToDriver != NULL) { - size_t length = strlen(value); - - stmt->hdbc->DataSourceToDriver(stmt->hdbc->translation_option, SQL_CHAR, - valuei, (SDWORD)length, valuei, - (SDWORD)length, NULL, NULL, 0, NULL); - } - - /* - * First convert any specific OpenSearch types into more useable data. - * - * NOTE: Conversions from ES char/varchar of a date/time/timestamp value - * to SQL_C_DATE,SQL_C_TIME, SQL_C_TIMESTAMP not supported - */ - switch (field_type) { - /* - * $$$ need to add parsing for date/time/timestamp strings in - * OPENSEARCH_TYPE_CHAR,VARCHAR $$$ - */ - case OPENSEARCH_TYPE_DATE: - sscanf(value, "%4d-%2d-%2d", &std_time.y, &std_time.m, &std_time.d); - break; - - case OPENSEARCH_TYPE_TIME: { - BOOL bZone = FALSE; /* time zone stuff is unreliable */ - int zone; - timestamp2stime(value, &std_time, &bZone, &zone); - } break; - - case OPENSEARCH_TYPE_ABSTIME: - case OPENSEARCH_TYPE_DATETIME: - case OPENSEARCH_TYPE_TIMESTAMP_NO_TMZONE: - case OPENSEARCH_TYPE_TIMESTAMP: - std_time.fr = 0; - std_time.infinity = 0; - if (strnicmp(value, INFINITY_STRING, 8) == 0) { - std_time.infinity = 1; - std_time.m = 12; - std_time.d = 31; - std_time.y = 9999; - std_time.hh = 23; - std_time.mm = 59; - std_time.ss = 59; - } - if (strnicmp(value, MINFINITY_STRING, 9) == 0) { - std_time.infinity = -1; - std_time.m = 1; - std_time.d = 1; - // std_time.y = -4713; - std_time.y = -9999; - std_time.hh = 0; - std_time.mm = 0; - std_time.ss = 0; - } - if (strnicmp(value, "invalid", 7) != 0) { - BOOL bZone = field_type != OPENSEARCH_TYPE_TIMESTAMP_NO_TMZONE; - int zone; - - /* - * sscanf(value, "%4d-%2d-%2d %2d:%2d:%2d", &std_time.y, - * &std_time.m, &std_time.d, &std_time.hh, &std_time.mm, - * &std_time.ss); - */ - bZone = FALSE; /* time zone stuff is unreliable */ - timestamp2stime(value, &std_time, &bZone, &zone); - MYLOG(OPENSEARCH_ALL, "2stime fr=%d\n", std_time.fr); - } else { - /* - * The timestamp is invalid so set something conspicuous, - * like the epoch - */ - struct tm *tim; - time_t t = 0; -#ifdef HAVE_LOCALTIME_R - tim = localtime_r(&t, &tm); -#else - tim = localtime(&t); -#endif /* HAVE_LOCALTIME_R */ - std_time.m = tim->tm_mon + 1; - std_time.d = tim->tm_mday; - std_time.y = tim->tm_year + 1900; - std_time.hh = tim->tm_hour; - std_time.mm = tim->tm_min; - std_time.ss = tim->tm_sec; - } - break; - - case OPENSEARCH_TYPE_BOOL: { /* change T/F to 1/0 */ - switch (((char *)value)[0]) { - case 'f': - case 'F': - case 'n': - case 'N': - case '0': - STRCPY_FIXED(booltemp, "0"); - break; - default: - STRCPY_FIXED(booltemp, "1"); - } - neut_str = booltemp; - } break; - - /* This is for internal use by SQLStatistics() */ - case OPENSEARCH_TYPE_INT2VECTOR: - if (SQL_C_DEFAULT == fCType) { - int i, nval, maxc; - const char *vp; - /* this is an array of eight integers */ - short *short_array = (short *)rgbValueBindRow, shortv; - - maxc = 0; - if (NULL != short_array) - maxc = (int)cbValueMax / sizeof(short); - vp = value; - nval = 0; - MYLOG(OPENSEARCH_DEBUG, "index=("); - for (i = 0;; i++) { - if (sscanf(vp, "%hi", &shortv) != 1) - break; - MYPRINTF(0, " %hi", shortv); - nval++; - if (nval < maxc) - short_array[i + 1] = shortv; - - /* skip the current token */ - while (IS_NOT_SPACE(*vp)) - vp++; - /* and skip the space to the next token */ - while ((*vp != '\0') && (isspace(*vp))) - vp++; - if (*vp == '\0') - break; - } - MYPRINTF(0, ") nval = %i\n", nval); - if (maxc > 0) - short_array[0] = (short)nval; - - /* There is no corresponding fCType for this. */ - len = (nval + 1) * sizeof(short); - if (pcbValue) - *pcbValueBindRow = len; - - if (len <= cbValueMax) - return COPY_OK; /* dont go any further or the data will be - * trashed */ - else - return COPY_RESULT_TRUNCATED; - } - break; - - /* - * This is a large object OID, which is used to store - * LONGVARBINARY objects. - */ - case OPENSEARCH_TYPE_LO_UNDEFINED: - - return convert_lo(stmt, value, fCType, rgbValueBindRow, cbValueMax, - pcbValueBindRow); - - case 0: - break; - - default: - if (field_type - == (OID)stmt->hdbc - ->lobj_type /* hack until permanent type available */ - || (OPENSEARCH_TYPE_OID == field_type && SQL_C_BINARY == fCType - && conn->lo_is_domain)) - return convert_lo(stmt, value, fCType, rgbValueBindRow, - cbValueMax, pcbValueBindRow); - } - - /* Change default into something useable */ - if (fCType == SQL_C_DEFAULT) { - fCType = opensearchtype_attr_to_ctype(conn, field_type, atttypmod); -#ifdef UNICODE_SUPPORT - if (fCType == SQL_C_WCHAR && CC_default_is_c(conn)) - fCType = SQL_C_CHAR; -#endif - - MYLOG(OPENSEARCH_DEBUG, ", SQL_C_DEFAULT: fCType = %d\n", fCType); - } - - text_bin_handling = FALSE; - switch (fCType) { - case INTERNAL_ASIS_TYPE: -#ifdef UNICODE_SUPPORT - case SQL_C_WCHAR: -#endif /* UNICODE_SUPPORT */ - case SQL_C_CHAR: - text_bin_handling = TRUE; - break; - case SQL_C_BINARY: - switch (field_type) { - case OPENSEARCH_TYPE_UNKNOWN: - case OPENSEARCH_TYPE_BPCHAR: - case OPENSEARCH_TYPE_VARCHAR: - case OPENSEARCH_TYPE_TEXT: - case OPENSEARCH_TYPE_XML: - case OPENSEARCH_TYPE_BPCHARARRAY: - case OPENSEARCH_TYPE_VARCHARARRAY: - case OPENSEARCH_TYPE_TEXTARRAY: - case OPENSEARCH_TYPE_XMLARRAY: - case OPENSEARCH_TYPE_BYTEA: - text_bin_handling = TRUE; - break; - } - break; - } - - if (text_bin_handling) { - BOOL pre_convert = TRUE; - int midsize = sizeof(midtemp); - int i; - - /* Special character formatting as required */ - - /* - * These really should return error if cbValueMax is not big - * enough. - */ - switch (field_type) { - case OPENSEARCH_TYPE_DATE: - len = SPRINTF_FIXED(midtemp, "%.4d-%.2d-%.2d", std_time.y, - std_time.m, std_time.d); - break; - - case OPENSEARCH_TYPE_TIME: - len = SPRINTF_FIXED(midtemp, "%.2d:%.2d:%.2d", std_time.hh, - std_time.mm, std_time.ss); - if (std_time.fr > 0) { - int wdt; - int fr = effective_fraction(std_time.fr, &wdt); - - char *fraction = NULL; - len = sprintf(fraction, ".%0*d", wdt, fr); - strcat(midtemp, fraction); - } - break; - - case OPENSEARCH_TYPE_ABSTIME: - case OPENSEARCH_TYPE_DATETIME: - case OPENSEARCH_TYPE_TIMESTAMP_NO_TMZONE: - case OPENSEARCH_TYPE_TIMESTAMP: - len = stime2timestamp(&std_time, midtemp, midsize, FALSE, - (int)(midsize - 19 - 2)); - break; - - case OPENSEARCH_TYPE_UUID: - len = strlen(neut_str); - for (i = 0; i < len && i < midsize - 2; i++) - midtemp[i] = (char)toupper((UCHAR)neut_str[i]); - midtemp[i] = '\0'; - MYLOG(OPENSEARCH_DEBUG, "OPENSEARCH_TYPE_UUID: rgbValueBindRow = '%s'\n", - rgbValueBindRow); - break; - - /* - * Currently, data is SILENTLY TRUNCATED for BYTEA and - * character data types if there is not enough room in - * cbValueMax because the driver can't handle multiple - * calls to SQLGetData for these, yet. Most likely, the - * buffer passed in will be big enough to handle the - * maximum limit of OpenSearch, anyway. - * - * LongVarBinary types are handled correctly above, observing - * truncation and all that stuff since there is - * essentially no limit on the large object used to store - * those. - */ - case OPENSEARCH_TYPE_BYTEA: /* convert binary data to hex strings - * (i.e, 255 = "FF") */ - - default: - pre_convert = FALSE; - } - if (pre_convert) - neut_str = midtemp; - result = convert_text_field_to_sql_c( - gdata, stmt->current_col, neut_str, field_type, fCType, - rgbValueBindRow, cbValueMax, conn, &len); - } else { - SQLGUID g; - - /* - * for SQL_C_CHAR, it's probably ok to leave currency symbols in. - * But to convert to numeric types, it is necessary to get rid of - * those. - */ - if (field_type == OPENSEARCH_TYPE_MONEY) { - if (convert_money(neut_str, midtemp, sizeof(midtemp))) - neut_str = midtemp; - else { - MYLOG(OPENSEARCH_DEBUG, "couldn't convert money type to %d\n", fCType); - return COPY_UNSUPPORTED_TYPE; - } - } - - switch (fCType) { - case SQL_C_DATE: - case SQL_C_TYPE_DATE: /* 91 */ - len = 6; - { - DATE_STRUCT *ds; - struct tm *tim; - - if (bind_size > 0) - ds = (DATE_STRUCT *)rgbValueBindRow; - else - ds = (DATE_STRUCT *)rgbValue + bind_row; - - /* - * Initialize date in case conversion destination - * expects date part from this source time data. - * A value may be partially set here, so do some - * sanity checks on the existing values before - * setting them. - */ - tim = SC_get_localtime(stmt); - if (std_time.m == 0) - std_time.m = tim->tm_mon + 1; - if (std_time.d == 0) - std_time.d = tim->tm_mday; - if (std_time.y == 0) - std_time.y = tim->tm_year + 1900; - ds->year = (SQLSMALLINT)std_time.y; - ds->month = (SQLUSMALLINT)std_time.m; - ds->day = (SQLUSMALLINT)std_time.d; - } - break; - - case SQL_C_TIME: - case SQL_C_TYPE_TIME: /* 92 */ - len = 6; - { - TIME_STRUCT *ts; - - if (bind_size > 0) - ts = (TIME_STRUCT *)rgbValueBindRow; - else - ts = (TIME_STRUCT *)rgbValue + bind_row; - ts->hour = (SQLUSMALLINT)std_time.hh; - ts->minute = (SQLUSMALLINT)std_time.mm; - ts->second = (SQLUSMALLINT)std_time.ss; - } - break; - - case SQL_C_TIMESTAMP: - case SQL_C_TYPE_TIMESTAMP: /* 93 */ - len = 16; - { - struct tm *tim; - TIMESTAMP_STRUCT *ts; - - if (bind_size > 0) - ts = (TIMESTAMP_STRUCT *)rgbValueBindRow; - else - ts = (TIMESTAMP_STRUCT *)rgbValue + bind_row; - - /* - * Initialize date in case conversion destination - * expects date part from this source time data. - * A value may be partially set here, so do some - * sanity checks on the existing values before - * setting them. - */ - tim = SC_get_localtime(stmt); - if (std_time.m == 0) - std_time.m = tim->tm_mon + 1; - if (std_time.d == 0) - std_time.d = tim->tm_mday; - if (std_time.y == 0) - std_time.y = tim->tm_year + 1900; - - ts->year = (SQLSMALLINT)std_time.y; - ts->month = (SQLUSMALLINT)std_time.m; - ts->day = (SQLUSMALLINT)std_time.d; - ts->hour = (SQLUSMALLINT)std_time.hh; - ts->minute = (SQLUSMALLINT)std_time.mm; - ts->second = (SQLUSMALLINT)std_time.ss; - ts->fraction = (SQLUINTEGER)std_time.fr; - } - break; - - case SQL_C_BIT: - len = 1; - if (bind_size > 0) - *((UCHAR *)rgbValueBindRow) = (UCHAR)atoi(neut_str); - else - *((UCHAR *)rgbValue + bind_row) = (UCHAR)atoi(neut_str); - - MYLOG(99, - "SQL_C_BIT: bind_row = " FORMAT_POSIROW - " val = %d, cb = " FORMAT_LEN ", rgb=%d\n", - bind_row, atoi(neut_str), cbValueMax, - *((UCHAR *)rgbValue)); - break; - - case SQL_C_STINYINT: - case SQL_C_TINYINT: - len = 1; - if (bind_size > 0) - *((SCHAR *)rgbValueBindRow) = (SCHAR)atoi(neut_str); - else - *((SCHAR *)rgbValue + bind_row) = (SCHAR)atoi(neut_str); - break; - - case SQL_C_UTINYINT: - len = 1; - if (bind_size > 0) - *((UCHAR *)rgbValueBindRow) = (UCHAR)atoi(neut_str); - else - *((UCHAR *)rgbValue + bind_row) = (UCHAR)atoi(neut_str); - break; - - case SQL_C_FLOAT: - set_client_decimal_point((char *)neut_str); - len = 4; - if (bind_size > 0) - *((SFLOAT *)rgbValueBindRow) = - (SFLOAT)get_double_value(neut_str); - else - *((SFLOAT *)rgbValue + bind_row) = - (SFLOAT)get_double_value(neut_str); - break; - - case SQL_C_DOUBLE: - set_client_decimal_point((char *)neut_str); - len = 8; - if (bind_size > 0) - *((SDOUBLE *)rgbValueBindRow) = - (SDOUBLE)get_double_value(neut_str); - else - *((SDOUBLE *)rgbValue + bind_row) = - (SDOUBLE)get_double_value(neut_str); - break; - - case SQL_C_NUMERIC: { - SQL_NUMERIC_STRUCT *ns; - BOOL overflowed; - - if (bind_size > 0) - ns = (SQL_NUMERIC_STRUCT *)rgbValueBindRow; - else - ns = (SQL_NUMERIC_STRUCT *)rgbValue + bind_row; - - parse_to_numeric_struct(neut_str, ns, &overflowed); - if (overflowed) - result = COPY_RESULT_TRUNCATED; - } break; - - case SQL_C_SSHORT: - case SQL_C_SHORT: - len = 2; - if (bind_size > 0) - *((SQLSMALLINT *)rgbValueBindRow) = - (SQLSMALLINT)atoi(neut_str); - else - *((SQLSMALLINT *)rgbValue + bind_row) = - (SQLSMALLINT)atoi(neut_str); - break; - - case SQL_C_USHORT: - len = 2; - if (bind_size > 0) - *((SQLUSMALLINT *)rgbValueBindRow) = - (SQLUSMALLINT)atoi(neut_str); - else - *((SQLUSMALLINT *)rgbValue + bind_row) = - (SQLUSMALLINT)atoi(neut_str); - break; - - case SQL_C_SLONG: - case SQL_C_LONG: - len = 4; - if (bind_size > 0) - *((SQLINTEGER *)rgbValueBindRow) = atol(neut_str); - else - *((SQLINTEGER *)rgbValue + bind_row) = atol(neut_str); - break; - - case SQL_C_ULONG: - len = 4; - if (bind_size > 0) - *((SQLUINTEGER *)rgbValueBindRow) = ATOI32U(neut_str); - else - *((SQLUINTEGER *)rgbValue + bind_row) = ATOI32U(neut_str); - break; - -#ifdef ODBCINT64 - case SQL_C_SBIGINT: - len = 8; - if (bind_size > 0) - *((SQLBIGINT *)rgbValueBindRow) = ATOI64(neut_str); - else - *((SQLBIGINT *)rgbValue + bind_row) = ATOI64(neut_str); - break; - - case SQL_C_UBIGINT: - len = 8; - if (bind_size > 0) - *((SQLUBIGINT *)rgbValueBindRow) = ATOI64U(neut_str); - else - *((SQLUBIGINT *)rgbValue + bind_row) = ATOI64U(neut_str); - break; - -#endif /* ODBCINT64 */ - case SQL_C_BINARY: - /* The following is for SQL_C_VARBOOKMARK */ - if (OPENSEARCH_TYPE_INT4 == field_type) { - UInt4 ival = ATOI32U(neut_str); - - MYLOG(OPENSEARCH_ALL, "SQL_C_VARBOOKMARK value=%d\n", ival); - if (pcbValue) - *pcbValueBindRow = sizeof(ival); - if (cbValueMax >= (SQLLEN)sizeof(ival)) { - memcpy(rgbValueBindRow, &ival, sizeof(ival)); - return COPY_OK; - } else - return COPY_RESULT_TRUNCATED; - } else if (OPENSEARCH_TYPE_UUID == field_type) { - int rtn = char2guid(neut_str, &g); - - if (COPY_OK != rtn) - return rtn; - if (pcbValue) - *pcbValueBindRow = sizeof(g); - if (cbValueMax >= (SQLLEN)sizeof(g)) { - memcpy(rgbValueBindRow, &g, sizeof(g)); - return COPY_OK; - } else - return COPY_RESULT_TRUNCATED; - } else { - MYLOG(OPENSEARCH_DEBUG, - "couldn't convert the type %d to SQL_C_BINARY\n", - field_type); - return COPY_UNSUPPORTED_TYPE; - } - break; - case SQL_C_GUID: - - result = char2guid(neut_str, &g); - if (COPY_OK != result) { - MYLOG(OPENSEARCH_DEBUG, "Could not convert to SQL_C_GUID\n"); - return COPY_UNSUPPORTED_TYPE; - } - len = sizeof(g); - if (bind_size > 0) - *((SQLGUID *)rgbValueBindRow) = g; - else - *((SQLGUID *)rgbValue + bind_row) = g; - break; - case SQL_C_INTERVAL_YEAR: - case SQL_C_INTERVAL_MONTH: - case SQL_C_INTERVAL_YEAR_TO_MONTH: - case SQL_C_INTERVAL_DAY: - case SQL_C_INTERVAL_HOUR: - case SQL_C_INTERVAL_DAY_TO_HOUR: - case SQL_C_INTERVAL_MINUTE: - case SQL_C_INTERVAL_HOUR_TO_MINUTE: - case SQL_C_INTERVAL_SECOND: - case SQL_C_INTERVAL_DAY_TO_SECOND: - case SQL_C_INTERVAL_HOUR_TO_SECOND: - case SQL_C_INTERVAL_MINUTE_TO_SECOND: - interval2istruct( - fCType, precision, neut_str, - bind_size > 0 ? (SQL_INTERVAL_STRUCT *)rgbValueBindRow - : (SQL_INTERVAL_STRUCT *)rgbValue + bind_row); - break; - - default: - MYLOG(OPENSEARCH_DEBUG, "conversion to the type %d isn't supported\n", - fCType); - return COPY_UNSUPPORTED_TYPE; - } - } - - /* store the length of what was copied, if there's a place for it */ - if (pcbValue) - *pcbValueBindRow = len; - - if (result == COPY_OK && stmt->current_col >= 0) - gdata->gdata[stmt->current_col].data_left = 0; - return result; -} - -/*-------------------------------------------------------------------- - * Functions/Macros to get rid of query size limit. - * - * I always used the follwoing macros to convert from - * old_statement to new_statement. Please improve it - * if you have a better way. Hiroshi 2001/05/22 - *-------------------------------------------------------------------- - */ - -#define FLGP_USING_CURSOR (1L << 1) -#define FLGP_SELECT_INTO (1L << 2) -#define FLGP_SELECT_FOR_UPDATE_OR_SHARE (1L << 3) -#define FLGP_MULTIPLE_STATEMENT (1L << 5) -#define FLGP_SELECT_FOR_READONLY (1L << 6) -typedef struct _QueryParse { - const char *statement; - int statement_type; - size_t opos; - ssize_t from_pos; - ssize_t where_pos; - ssize_t stmt_len; - int in_status; - char escape_in_literal, prev_token_end; - const char *dollar_tag; - ssize_t taglen; - char token_curr[64]; - int token_len; - size_t declare_pos; - UInt4 flags, comment_level; - encoded_str encstr; -} QueryParse; - -enum { - QP_IN_IDENT_KEYWORD = 1L /* identifier or keyword */ - , - QP_IN_DQUOTE_IDENTIFIER = (1L << 1) /* "" */ - , - QP_IN_LITERAL = (1L << 2) /* '' */ - , - QP_IN_ESCAPE = (1L << 3) /* \ in literal */ - , - QP_IN_DOLLAR_QUOTE = (1L << 4) /* $...$ $...$ */ - , - QP_IN_COMMENT_BLOCK = (1L << 5) /* slash asterisk */ - , - QP_IN_LINE_COMMENT = (1L << 6) /* -- */ -}; - -#define QP_in_idle_status(qp) ((qp)->in_status == 0) - -#define QP_is_in(qp, status) (((qp)->in_status & status) != 0) -#define QP_enter(qp, status) ((qp)->in_status |= status) -#define QP_exit(qp, status) ((qp)->in_status &= (~status)) - -typedef enum { - RPM_REPLACE_PARAMS, - RPM_FAKE_PARAMS, - RPM_BUILDING_PREPARE_STATEMENT, - RPM_BUILDING_BIND_REQUEST -} ResolveParamMode; - -#define FLGB_INACCURATE_RESULT (1L << 4) -#define FLGB_CREATE_KEYSET (1L << 5) -#define FLGB_KEYSET_DRIVEN (1L << 6) -#define FLGB_CONVERT_LF (1L << 7) -#define FLGB_DISCARD_OUTPUT (1L << 8) -#define FLGB_BINARY_AS_POSSIBLE (1L << 9) -#define FLGB_LITERAL_EXTENSION (1L << 10) -#define FLGB_HEX_BIN_FORMAT (1L << 11) -#define FLGB_PARAM_CAST (1L << 12) -typedef struct _QueryBuild { - char *query_statement; - size_t str_alsize; - size_t npos; - SQLLEN current_row; - Int2 param_number; - Int2 dollar_number; - Int2 num_io_params; - Int2 num_output_params; - Int2 num_discard_params; - Int2 proc_return; - Int2 brace_level; - char parenthesize_the_first; - APDFields *apdopts; - IPDFields *ipdopts; - PutDataInfo *pdata; - size_t load_stmt_len; - size_t load_from_pos; - ResolveParamMode param_mode; - UInt4 flags; - int ccsc; - int errornumber; - const char *errormsg; - - ConnectionClass *conn; /* mainly needed for LO handling */ - StatementClass *stmt; /* needed to set error info in ENLARGE_.. */ -} QueryBuild; - -#define INIT_MIN_ALLOC 4096 - -/* - * New macros (Aceto) - *-------------------- - */ - -#define F_OldChar(qp) ((qp)->statement[(qp)->opos]) - -#define F_OldPtr(qp) ((qp)->statement + (qp)->opos) - -#define F_OldNext(qp) (++(qp)->opos) - -#define F_OldPrior(qp) (--(qp)->opos) - -#define F_OldPos(qp) (qp)->opos - -#define F_ExtractOldTo(qp, buf, ch, maxsize) \ - do { \ - size_t c = 0; \ - while ((qp)->statement[qp->opos] != '\0' \ - && (qp)->statement[qp->opos] != ch) { \ - if (c >= maxsize) \ - break; \ - buf[c++] = (qp)->statement[qp->opos++]; \ - } \ - if ((qp)->statement[qp->opos] == '\0') { \ - retval = SQL_ERROR; \ - goto cleanup; \ - } \ - buf[c] = '\0'; \ - } while (0) - -#define F_NewChar(qb) (qb->query_statement[(qb)->npos]) - -#define F_NewPtr(qb) ((qb)->query_statement + (qb)->npos) - -#define F_NewNext(qb) (++(qb)->npos) - -#define F_NewPos(qb) ((qb)->npos) - -/*---------- - * Terminate the stmt_with_params string with NULL. - *---------- - */ -#define CVT_TERMINATE(qb) \ - do { \ - if (NULL == (qb)->query_statement) { \ - retval = SQL_ERROR; \ - goto cleanup; \ - } \ - (qb)->query_statement[(qb)->npos] = '\0'; \ - } while (0) - -/*---------- - * Append a data. - *---------- - */ -#define CVT_APPEND_DATA(qb, s, len) \ - do { \ - size_t newpos = (qb)->npos + len; \ - ENLARGE_NEWSTATEMENT((qb), newpos); \ - memcpy(&(qb)->query_statement[(qb)->npos], s, len); \ - (qb)->npos = newpos; \ - (qb)->query_statement[newpos] = '\0'; \ - } while (0) - -/*---------- - * Append a string. - *---------- - */ -#define CVT_APPEND_STR(qb, s) \ - do { \ - size_t len = strlen(s); \ - CVT_APPEND_DATA(qb, s, len); \ - } while (0) - -/*---------- - * Append a char. - *---------- - */ -#define CVT_APPEND_CHAR(qb, c) \ - do { \ - ENLARGE_NEWSTATEMENT(qb, (qb)->npos + 1); \ - (qb)->query_statement[(qb)->npos++] = c; \ - } while (0) - -int findIdentifier(const UCHAR *str, int ccsc, const UCHAR **next_token) { - int slen = -1; - encoded_str encstr; - UCHAR tchar; - BOOL dquote = FALSE; - - *next_token = NULL; - encoded_str_constr(&encstr, ccsc, (const char *)str); - for (tchar = (UCHAR)encoded_nextchar(&encstr); tchar; - tchar = (UCHAR)encoded_nextchar(&encstr)) { - if (MBCS_NON_ASCII(encstr)) - continue; - if (encstr.pos == 0) /* the first character */ - { - if (dquote = (IDENTIFIER_QUOTE == tchar), dquote) - continue; - if (!isalpha(tchar)) { - slen = 0; - if (IS_NOT_SPACE(tchar)) - *next_token = ENCODE_PTR(encstr); - break; - } - } - if (dquote) { - if (IDENTIFIER_QUOTE == tchar) { - tchar = (UCHAR)encoded_nextchar(&encstr); - if (IDENTIFIER_QUOTE == tchar) - continue; - slen = (int)encstr.pos; - break; - } - } else { - if (isalnum(tchar)) - continue; - switch (tchar) { - case '_': - case DOLLAR_QUOTE: - continue; - } - slen = (int)encstr.pos; - if (IS_NOT_SPACE(tchar)) - *next_token = ENCODE_PTR(encstr); - break; - } - } - if (slen < 0 && !dquote) - slen = (int)encstr.pos; - if (NULL == *next_token) { - for (; tchar; tchar = (UCHAR)encoded_nextchar(&encstr)) { - if (IS_NOT_SPACE((UCHAR)tchar)) { - *next_token = ENCODE_PTR(encstr); - break; - } - } - } - return slen; -} - -static opensearchNAME lower_or_remove_dquote(opensearchNAME nm, const UCHAR *src, int srclen, - int ccsc) { - int i, outlen; - char *tc; - UCHAR tchar; - BOOL idQuote; - encoded_str encstr; - - if (nm.name) - tc = realloc(nm.name, srclen + 1); - else - tc = malloc(srclen + 1); - if (!tc) { - NULL_THE_NAME(nm); - return nm; - } - nm.name = tc; - idQuote = (src[0] == IDENTIFIER_QUOTE); - encoded_str_constr(&encstr, ccsc, (const char *)src); - for (i = 0, tchar = (UCHAR)encoded_nextchar(&encstr), outlen = 0; - i < srclen; i++, tchar = (UCHAR)encoded_nextchar(&encstr)) { - if (MBCS_NON_ASCII(encstr)) { - tc[outlen++] = tchar; - continue; - } - if (idQuote) { - if (IDENTIFIER_QUOTE == tchar) { - if (0 == i) - continue; - if (i == srclen - 1) - continue; - i++; - tchar = (UCHAR)encoded_nextchar(&encstr); - } - tc[outlen++] = tchar; - } else { - tc[outlen++] = (char)tolower(tchar); - } - } - tc[outlen] = '\0'; - return nm; -} - -int eatTableIdentifiers(const UCHAR *str, int ccsc, opensearchNAME *table, - opensearchNAME *schema) { - int len; - const UCHAR *next_token; - const UCHAR *tstr = str; - - while (isspace(*tstr)) - tstr++; - - if ((len = findIdentifier(tstr, ccsc, &next_token)) <= 0) - return len; /* table name doesn't exist */ - if (table) { - if (IDENTIFIER_QUOTE == *tstr) - *table = lower_or_remove_dquote(*table, tstr, len, ccsc); - else - STRN_TO_NAME(*table, tstr, len); - } - if (!next_token || '.' != *next_token || (int)(next_token - tstr) != len) - return (int)(next_token - str); /* table only */ - tstr = next_token + 1; - if ((len = findIdentifier(tstr, ccsc, &next_token)) <= 0) - return -1; - if (table) { - if (schema) - MOVE_NAME(*schema, *table); - *table = lower_or_remove_dquote(*table, tstr, len, ccsc); - } - if (!next_token || '.' != *next_token || (int)(next_token - tstr) != len) - return (int)(next_token - str); /* schema.table */ - tstr = next_token + 1; - if ((len = findIdentifier(tstr, ccsc, &next_token)) <= 0) - return -1; - if (table) { - if (schema) - MOVE_NAME(*schema, *table); - *table = lower_or_remove_dquote(*table, tstr, len, ccsc); - } - return (int)(next_token - str); /* catalog.schema.table */ -} - -#define PT_TOKEN_IGNORE(pt) ((pt)->curchar_processed = TRUE) - -#define MIN_ALC_SIZE 128 - -/* - * With SQL_MAX_NUMERIC_LEN = 16, the highest representable number is - * 2^128 - 1, which fits in 39 digits. - */ -#define MAX_NUMERIC_DIGITS 39 - -/* - * Convert a string representation of a numeric into SQL_NUMERIC_STRUCT. - */ -static void parse_to_numeric_struct(const char *wv, SQL_NUMERIC_STRUCT *ns, - BOOL *overflow) { - int i, nlen, dig; - char calv[SQL_MAX_NUMERIC_LEN * 3]; - BOOL dot_exist; - - *overflow = FALSE; - - /* skip leading space */ - while (*wv && isspace((unsigned char)*wv)) - wv++; - - /* sign */ - ns->sign = 1; - if (*wv == '-') { - ns->sign = 0; - wv++; - } else if (*wv == '+') - wv++; - - /* skip leading zeros */ - while (*wv == '0') - wv++; - - /* read the digits into calv */ - ns->precision = 0; - ns->scale = 0; - for (nlen = 0, dot_exist = FALSE;; wv++) { - if (*wv == '.') { - if (dot_exist) - break; - dot_exist = TRUE; - } else if (*wv == '\0' || !isdigit((unsigned char)*wv)) - break; - else { - if (nlen >= (int)sizeof(calv)) { - if (dot_exist) - break; - else { - ns->scale--; - *overflow = TRUE; - continue; - } - } - if (dot_exist) - ns->scale++; - calv[nlen++] = *wv; - } - } - ns->precision = (SQLCHAR)nlen; - - /* Convert the decimal digits to binary */ - memset(ns->val, 0, sizeof(ns->val)); - for (dig = 0; dig < nlen; dig++) { - UInt4 carry; - - /* multiply the current value by 10, and add the next digit */ - carry = calv[dig] - '0'; - for (i = 0; i < (int)sizeof(ns->val); i++) { - UInt4 t; - - t = ((UInt4)ns->val[i]) * 10 + carry; - ns->val[i] = (unsigned char)(t & 0xFF); - carry = (t >> 8); - } - - if (carry != 0) - *overflow = TRUE; - } -} - -static BOOL convert_money(const char *s, char *sout, size_t soutmax) { - char in, decp = 0; - size_t i = 0, out = 0; - int num_in = -1, period_in = -1, comma_in = -1; - - for (i = 0; s[i]; i++) { - switch (in = s[i]) { - case '.': - if (period_in < 0) - period_in = (int)i; - break; - case ',': - if (comma_in < 0) - comma_in = (int)i; - break; - default: - if ('0' <= in && '9' >= in) - num_in = (int)i; - break; - } - } - if (period_in > comma_in) { - if (period_in >= num_in - 2) - decp = '.'; - } else if (comma_in >= 0 && comma_in >= num_in - 2) - decp = ','; - for (i = 0; s[i] && out + 1 < soutmax; i++) { - switch (in = s[i]) { - case '(': - case '-': - sout[out++] = '-'; - break; - default: - if (in >= '0' && in <= '9') - sout[out++] = in; - else if (in == decp) - sout[out++] = '.'; - } - } - sout[out] = '\0'; - return TRUE; -} - -/* Change linefeed to carriage-return/linefeed */ -size_t convert_linefeeds(const char *si, char *dst, size_t max, BOOL convlf, - BOOL *changed) { - size_t i = 0, out = 0; - - if (max == 0) - max = 0xffffffff; - *changed = FALSE; - for (i = 0; si[i] && out < max - 1; i++) { - if (convlf && si[i] == '\n') { - /* Only add the carriage-return if needed */ - if (i > 0 && OPENSEARCH_CARRIAGE_RETURN == si[i - 1]) { - if (dst) - dst[out++] = si[i]; - else - out++; - continue; - } - *changed = TRUE; - - if (dst) { - dst[out++] = OPENSEARCH_CARRIAGE_RETURN; - dst[out++] = '\n'; - } else - out += 2; - } else { - if (dst) - dst[out++] = si[i]; - else - out++; - } - } - if (dst) - dst[out] = '\0'; - return out; -} - -static int conv_from_octal(const char *s) { - ssize_t i; - int y = 0; - - for (i = 1; i <= 3; i++) - y += (s[i] - '0') << (3 * (3 - i)); - - return y; -} - -/* convert octal escapes to bytes */ -static size_t convert_from_opensearchbinary(const char *value, char *rgbValue, - SQLLEN cbValueMax) { - UNUSED(cbValueMax); - size_t i, ilen = strlen(value); - size_t o = 0; - - for (i = 0; i < ilen;) { - if (value[i] == BYTEA_ESCAPE_CHAR) { - if (value[i + 1] == BYTEA_ESCAPE_CHAR) { - if (rgbValue) - rgbValue[o] = value[i]; - o++; - i += 2; - } else if (value[i + 1] == 'x') { - i += 2; - if (i < ilen) { - ilen -= i; - if (rgbValue) - opensearch_hex2bin(value + i, rgbValue + o, ilen); - o += ilen / 2; - } - break; - } else { - if (rgbValue) - rgbValue[o] = (char)conv_from_octal(&value[i]); - o++; - i += 4; - } - } else { - if (rgbValue) - rgbValue[o] = value[i]; - o++; - i++; - } - /** if (rgbValue) - MYLOG(OPENSEARCH_DEBUG, "i=%d, rgbValue[%d] = %d, %c\n", i, o, rgbValue[o], - rgbValue[o]); ***/ - } - - if (rgbValue) - rgbValue[o] = '\0'; /* extra protection */ - - MYLOG(OPENSEARCH_DEBUG, "in=" FORMAT_SIZE_T ", out = " FORMAT_SIZE_T "\n", ilen, o); - - return o; -} - -static const char *hextbl = "0123456789ABCDEF"; - -#define def_bin2hex(type) \ - (const char *src, type *dst, SQLLEN length) { \ - const char *src_wk; \ - UCHAR chr; \ - type *dst_wk; \ - BOOL backwards; \ - int i; \ - \ - backwards = FALSE; \ - if ((char *)dst < src) { \ - if ((char *)(dst + 2 * (length - 1)) > src + length - 1) \ - return -1; \ - } else if ((char *)dst < src + length) \ - backwards = TRUE; \ - if (backwards) { \ - for (i = 0, src_wk = src + length - 1, \ - dst_wk = dst + 2 * length - 1; \ - i < length; i++, src_wk--) { \ - chr = *src_wk; \ - *dst_wk-- = hextbl[chr % 16]; \ - *dst_wk-- = hextbl[chr >> 4]; \ - } \ - } else { \ - for (i = 0, src_wk = src, dst_wk = dst; i < length; \ - i++, src_wk++) { \ - chr = *src_wk; \ - *dst_wk++ = hextbl[chr >> 4]; \ - *dst_wk++ = hextbl[chr % 16]; \ - } \ - } \ - dst[2 * length] = '\0'; \ - return 2 * length * sizeof(type); \ - } -#ifdef UNICODE_SUPPORT -static SQLLEN es_bin2whex def_bin2hex(SQLWCHAR) -#endif /* UNICODE_SUPPORT */ - - static SQLLEN opensearch_bin2hex def_bin2hex(char) - - SQLLEN opensearch_hex2bin(const char *in, char *out, SQLLEN len) { - UCHAR chr; - const char *src_wk; - char *dst_wk; - SQLLEN i; - int val; - BOOL HByte = TRUE; - - for (i = 0, src_wk = in, dst_wk = out; i < len; i++, src_wk++) { - chr = *src_wk; - if (!chr) - break; - if (chr >= 'a' && chr <= 'f') - val = chr - 'a' + 10; - else if (chr >= 'A' && chr <= 'F') - val = chr - 'A' + 10; - else - val = chr - '0'; - if (HByte) - *dst_wk = (char)(val << 4); - else { - *dst_wk += (char)val; - dst_wk++; - } - HByte = !HByte; - } - *dst_wk = '\0'; - return len; -} - -static int convert_lo(StatementClass *stmt, const void *value, - SQLSMALLINT fCType, PTR rgbValue, SQLLEN cbValueMax, - SQLLEN *pcbValue) { - UNUSED(cbValueMax, pcbValue, rgbValue, fCType, value); - SC_set_error(stmt, STMT_EXEC_ERROR, - "Could not convert large object to c-type (large objects are " - "not supported).", - "convert_lo"); - return COPY_GENERAL_ERROR; -} diff --git a/sql-odbc/src/sqlodbc/convert.h b/sql-odbc/src/sqlodbc/convert.h deleted file mode 100644 index c833f46720..0000000000 --- a/sql-odbc/src/sqlodbc/convert.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef __CONVERT_H__ -#define __CONVERT_H__ - -#include "opensearch_odbc.h" - -#ifdef __cplusplus -extern "C" { -#endif -/* copy_and_convert results */ -#define COPY_OK 0 -#define COPY_UNSUPPORTED_TYPE 1 -#define COPY_UNSUPPORTED_CONVERSION 2 -#define COPY_RESULT_TRUNCATED 3 -#define COPY_GENERAL_ERROR 4 -#define COPY_NO_DATA_FOUND 5 -#define COPY_INVALID_STRING_CONVERSION 6 - -int copy_and_convert_field_bindinfo(StatementClass *stmt, OID field_type, - int atttypmod, void *value, int col); -int copy_and_convert_field(StatementClass *stmt, OID field_type, int atttypmod, - void *value, SQLSMALLINT fCType, int precision, - PTR rgbValue, SQLLEN cbValueMax, SQLLEN *pcbValue, - SQLLEN *pIndicator); - -SQLLEN opensearch_hex2bin(const char *in, char *out, SQLLEN len); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/sql-odbc/src/sqlodbc/descriptor.c b/sql-odbc/src/sqlodbc/descriptor.c deleted file mode 100644 index 3c668f24dc..0000000000 --- a/sql-odbc/src/sqlodbc/descriptor.c +++ /dev/null @@ -1,574 +0,0 @@ -#include "descriptor.h" - -#include -#include -#include - -#include "environ.h" -#include "misc.h" -#include "opensearch_apifunc.h" -#include "opensearch_connection.h" -#include "qresult.h" -#include "statement.h" - -void TI_Destructor(TABLE_INFO **ti, int count) { - int i; - - MYLOG(OPENSEARCH_TRACE, "entering count=%d\n", count); - if (ti) { - for (i = 0; i < count; i++) { - if (ti[i]) { - COL_INFO *coli = ti[i]->col_info; - if (coli) { - MYLOG(OPENSEARCH_ALL, "!!!refcnt %p:%d -> %d\n", coli, coli->refcnt, - coli->refcnt - 1); - coli->refcnt--; - if (coli->refcnt <= 0 - && 0 == coli->acc_time) /* acc_time == 0 means the table - is dropped */ - free_col_info_contents(coli); - } - NULL_THE_NAME(ti[i]->schema_name); - NULL_THE_NAME(ti[i]->table_name); - NULL_THE_NAME(ti[i]->table_alias); - NULL_THE_NAME(ti[i]->bestitem); - NULL_THE_NAME(ti[i]->bestqual); - TI_Destroy_IH(ti[i]); - free(ti[i]); - ti[i] = NULL; - } - } - } -} - -void FI_Destructor(FIELD_INFO **fi, int count, BOOL freeFI) { - int i; - - MYLOG(OPENSEARCH_TRACE, "entering count=%d\n", count); - if (fi) { - for (i = 0; i < count; i++) { - if (fi[i]) { - NULL_THE_NAME(fi[i]->column_name); - NULL_THE_NAME(fi[i]->column_alias); - NULL_THE_NAME(fi[i]->schema_name); - NULL_THE_NAME(fi[i]->before_dot); - if (freeFI) { - free(fi[i]); - fi[i] = NULL; - } - } - } - if (freeFI) - free(fi); - } -} - -#define INIT_IH 32 - -void TI_Destroy_IH(TABLE_INFO *ti) { - InheritanceClass *ih; - unsigned int i; - - if (NULL == (ih = ti->ih)) - return; - for (i = 0; i < ih->count; i++) { - NULL_THE_NAME(ih->inf[i].fullTable); - } - free(ih); - ti->ih = NULL; -} - -void DC_Constructor(DescriptorClass *self, BOOL embedded, - StatementClass *stmt) { - UNUSED(stmt); - memset(self, 0, sizeof(DescriptorClass)); - self->deschd.embedded = (char)embedded; -} - -static void ARDFields_free(ARDFields *self) { - MYLOG(OPENSEARCH_TRACE, "entering %p bookmark=%p\n", self, self->bookmark); - if (self->bookmark) { - free(self->bookmark); - self->bookmark = NULL; - } - /* - * the memory pointed to by the bindings is not deallocated by the - * driver but by the application that uses that driver, so we don't - * have to care - */ - ARD_unbind_cols(self, TRUE); -} - -static void APDFields_free(APDFields *self) { - if (self->bookmark) { - free(self->bookmark); - self->bookmark = NULL; - } - /* param bindings */ - APD_free_params(self, STMT_FREE_PARAMS_ALL); -} - -static void IRDFields_free(IRDFields *self) { - /* Free the parsed field information */ - if (self->fi) { - FI_Destructor(self->fi, self->allocated, TRUE); - self->fi = NULL; - } - self->allocated = 0; - self->nfields = 0; -} - -static void IPDFields_free(IPDFields *self) { - /* param bindings */ - IPD_free_params(self, STMT_FREE_PARAMS_ALL); -} - -void DC_Destructor(DescriptorClass *self) { - DescriptorHeader *deschd = &(self->deschd); - if (deschd->__error_message) { - free(deschd->__error_message); - deschd->__error_message = NULL; - } - if (deschd->opensearch_error) { - ER_Destructor(deschd->opensearch_error); - deschd->opensearch_error = NULL; - } - if (deschd->type_defined) { - switch (deschd->desc_type) { - case SQL_ATTR_APP_ROW_DESC: - ARDFields_free(&(self->ardf)); - break; - case SQL_ATTR_APP_PARAM_DESC: - APDFields_free(&(self->apdf)); - break; - case SQL_ATTR_IMP_ROW_DESC: - IRDFields_free(&(self->irdf)); - break; - case SQL_ATTR_IMP_PARAM_DESC: - IPDFields_free(&(self->ipdf)); - break; - } - } -} - -void InitializeEmbeddedDescriptor(DescriptorClass *self, StatementClass *stmt, - UInt4 desc_type) { - DescriptorHeader *deschd = &(self->deschd); - DC_Constructor(self, TRUE, stmt); - DC_get_conn(self) = SC_get_conn(stmt); - deschd->type_defined = TRUE; - deschd->desc_type = desc_type; - switch (desc_type) { - case SQL_ATTR_APP_ROW_DESC: - memset(&(self->ardf), 0, sizeof(ARDFields)); - stmt->ard = self; - break; - case SQL_ATTR_APP_PARAM_DESC: - memset(&(self->apdf), 0, sizeof(APDFields)); - stmt->apd = self; - break; - case SQL_ATTR_IMP_ROW_DESC: - memset(&(self->irdf), 0, sizeof(IRDFields)); - stmt->ird = self; - stmt->ird->irdf.stmt = stmt; - break; - case SQL_ATTR_IMP_PARAM_DESC: - memset(&(self->ipdf), 0, sizeof(IPDFields)); - stmt->ipd = self; - break; - } -} - -/* - * ARDFields initialize - */ -void InitializeARDFields(ARDFields *opt) { - memset(opt, 0, sizeof(ARDFields)); - opt->size_of_rowset = 1; - opt->bind_size = 0; /* default is to bind by column */ - opt->size_of_rowset_odbc2 = 1; -} -/* - * APDFields initialize - */ -void InitializeAPDFields(APDFields *opt) { - memset(opt, 0, sizeof(APDFields)); - opt->paramset_size = 1; - opt->param_bind_type = 0; /* default is to bind by column */ - opt->paramset_size_dummy = 1; /* dummy setting */ -} - -BindInfoClass *ARD_AllocBookmark(ARDFields *ardopts) { - if (!ardopts->bookmark) { - ardopts->bookmark = (BindInfoClass *)malloc(sizeof(BindInfoClass)); - memset(ardopts->bookmark, 0, sizeof(BindInfoClass)); - } - return ardopts->bookmark; -} - -#define DESC_INCREMENT 10 -char CC_add_descriptor(ConnectionClass *self, DescriptorClass *desc) { - int i; - int new_num_descs; - DescriptorClass **descs; - - MYLOG(OPENSEARCH_TRACE, "entering self=%p, desc=%p\n", self, desc); - - for (i = 0; i < self->num_descs; i++) { - if (!self->descs[i]) { - DC_get_conn(desc) = self; - self->descs[i] = desc; - return TRUE; - } - } - /* no more room -- allocate more memory */ - new_num_descs = DESC_INCREMENT + self->num_descs; - descs = (DescriptorClass **)realloc( - self->descs, sizeof(DescriptorClass *) * new_num_descs); - if (!descs) - return FALSE; - self->descs = descs; - - memset(&self->descs[self->num_descs], 0, - sizeof(DescriptorClass *) * DESC_INCREMENT); - DC_get_conn(desc) = self; - self->descs[self->num_descs] = desc; - self->num_descs = new_num_descs; - - return TRUE; -} - -/* - * This API allocates a Application descriptor. - */ -RETCODE SQL_API OPENSEARCHAPI_AllocDesc(HDBC ConnectionHandle, - SQLHDESC *DescriptorHandle) { - CSTR func = "OPENSEARCHAPI_AllocDesc"; - ConnectionClass *conn = (ConnectionClass *)ConnectionHandle; - RETCODE ret = SQL_SUCCESS; - DescriptorClass *desc; - - MYLOG(OPENSEARCH_TRACE, "entering...\n"); - - desc = (DescriptorClass *)malloc(sizeof(DescriptorClass)); - if (desc) { - memset(desc, 0, sizeof(DescriptorClass)); - DC_get_conn(desc) = conn; - if (CC_add_descriptor(conn, desc)) - *DescriptorHandle = desc; - else { - free(desc); - CC_set_error(conn, CONN_STMT_ALLOC_ERROR, - "Maximum number of descriptors exceeded", func); - ret = SQL_ERROR; - } - } else { - CC_set_error(conn, CONN_STMT_ALLOC_ERROR, - "No more memory ti allocate a further descriptor", func); - ret = SQL_ERROR; - } - return ret; -} - -RETCODE SQL_API OPENSEARCHAPI_FreeDesc(SQLHDESC DescriptorHandle) { - DescriptorClass *desc = (DescriptorClass *)DescriptorHandle; - RETCODE ret = SQL_SUCCESS; - - MYLOG(OPENSEARCH_TRACE, "entering...\n"); - DC_Destructor(desc); - if (!desc->deschd.embedded) { - int i; - ConnectionClass *conn = DC_get_conn(desc); - - for (i = 0; i < conn->num_descs; i++) { - if (conn->descs[i] == desc) { - conn->descs[i] = NULL; - break; - } - } - free(desc); - } - return ret; -} - -static void BindInfoClass_copy(const BindInfoClass *src, - BindInfoClass *target) { - memcpy(target, src, sizeof(BindInfoClass)); -} -static void ARDFields_copy(const ARDFields *src, ARDFields *target) { - memcpy(target, src, sizeof(ARDFields)); - target->bookmark = NULL; - if (src->bookmark) { - BindInfoClass *bookmark = ARD_AllocBookmark(target); - if (bookmark) - BindInfoClass_copy(src->bookmark, bookmark); - } - if (src->allocated <= 0) { - target->allocated = 0; - target->bindings = NULL; - } else { - int i; - - target->bindings = malloc(target->allocated * sizeof(BindInfoClass)); - if (!target->bindings) - target->allocated = 0; - for (i = 0; i < target->allocated; i++) - BindInfoClass_copy(&src->bindings[i], &target->bindings[i]); - } -} - -static void ParameterInfoClass_copy(const ParameterInfoClass *src, - ParameterInfoClass *target) { - memcpy(target, src, sizeof(ParameterInfoClass)); -} -static void APDFields_copy(const APDFields *src, APDFields *target) { - memcpy(target, src, sizeof(APDFields)); - if (src->bookmark) { - target->bookmark = malloc(sizeof(ParameterInfoClass)); - if (target->bookmark) - ParameterInfoClass_copy(src->bookmark, target->bookmark); - } - if (src->allocated <= 0) { - target->allocated = 0; - target->parameters = NULL; - } else { - int i; - - target->parameters = - malloc(target->allocated * sizeof(ParameterInfoClass)); - if (!target->parameters) - target->allocated = 0; - for (i = 0; i < target->allocated; i++) - ParameterInfoClass_copy(&src->parameters[i], - &target->parameters[i]); - } -} - -static void ParameterImplClass_copy(const ParameterImplClass *src, - ParameterImplClass *target) { - memcpy(target, src, sizeof(ParameterImplClass)); -} -static void IPDFields_copy(const IPDFields *src, IPDFields *target) { - memcpy(target, src, sizeof(IPDFields)); - if (src->allocated <= 0) { - target->allocated = 0; - target->parameters = NULL; - } else { - int i; - - target->parameters = (ParameterImplClass *)malloc( - target->allocated * sizeof(ParameterImplClass)); - if (!target->parameters) - target->allocated = 0; - for (i = 0; i < target->allocated; i++) - ParameterImplClass_copy(&src->parameters[i], - &target->parameters[i]); - } -} - -RETCODE SQL_API OPENSEARCHAPI_CopyDesc(SQLHDESC SourceDescHandle, - SQLHDESC TargetDescHandle) { - RETCODE ret = SQL_ERROR; - DescriptorClass *src, *target; - DescriptorHeader *srchd, *targethd; - ARDFields *ard_src, *ard_tgt; - APDFields *apd_src, *apd_tgt; - IPDFields *ipd_src, *ipd_tgt; - - MYLOG(OPENSEARCH_TRACE, "entering...\n"); - src = (DescriptorClass *)SourceDescHandle; - target = (DescriptorClass *)TargetDescHandle; - srchd = &(src->deschd); - targethd = &(target->deschd); - if (!srchd->type_defined) { - MYLOG(OPENSEARCH_ERROR, "source type undefined\n"); - DC_set_error(target, DESC_EXEC_ERROR, "source handle type undefined"); - return ret; - } - if (targethd->type_defined) { - MYLOG(OPENSEARCH_DEBUG, "source type=%d -> target type=%d\n", srchd->desc_type, - targethd->desc_type); - if (SQL_ATTR_IMP_ROW_DESC == targethd->desc_type) { - MYLOG(OPENSEARCH_DEBUG, "can't modify IRD\n"); - DC_set_error(target, DESC_EXEC_ERROR, "can't copy to IRD"); - return ret; - } else if (targethd->desc_type != srchd->desc_type) { - if (targethd->embedded) { - MYLOG(OPENSEARCH_DEBUG, "src type != target type\n"); - DC_set_error( - target, DESC_EXEC_ERROR, - "copying different type descriptor to embedded one"); - return ret; - } - } - DC_Destructor(target); - } - ret = SQL_SUCCESS; - switch (srchd->desc_type) { - case SQL_ATTR_APP_ROW_DESC: - MYLOG(OPENSEARCH_DEBUG, "src=%p target=%p type=%d", src, target, - srchd->desc_type); - if (!targethd->type_defined) { - targethd->desc_type = srchd->desc_type; - } - ard_src = &(src->ardf); - MYPRINTF(OPENSEARCH_DEBUG, - " rowset_size=" FORMAT_LEN " bind_size=" FORMAT_UINTEGER - " ope_ptr=%p off_ptr=%p\n", - ard_src->size_of_rowset, ard_src->bind_size, - ard_src->row_operation_ptr, ard_src->row_offset_ptr); - ard_tgt = &(target->ardf); - MYPRINTF(OPENSEARCH_DEBUG, " target=%p", ard_tgt); - ARDFields_copy(ard_src, ard_tgt); - MYPRINTF(OPENSEARCH_DEBUG, " offset_ptr=%p\n", ard_tgt->row_offset_ptr); - break; - case SQL_ATTR_APP_PARAM_DESC: - if (!targethd->type_defined) { - targethd->desc_type = srchd->desc_type; - } - apd_src = &(src->apdf); - apd_tgt = &(target->apdf); - APDFields_copy(apd_src, apd_tgt); - break; - case SQL_ATTR_IMP_PARAM_DESC: - if (!targethd->type_defined) { - targethd->desc_type = srchd->desc_type; - } - ipd_src = &(src->ipdf); - ipd_tgt = &(target->ipdf); - IPDFields_copy(ipd_src, ipd_tgt); - break; - default: - MYLOG(OPENSEARCH_DEBUG, "invalid descriptor handle type=%d\n", - srchd->desc_type); - DC_set_error(target, DESC_EXEC_ERROR, "invalid descriptor type"); - ret = SQL_ERROR; - } - - if (SQL_SUCCESS == ret) - targethd->type_defined = TRUE; - return ret; -} - -void DC_set_error(DescriptorClass *self, int errornumber, - const char *errormsg) { - DescriptorHeader *deschd = &(self->deschd); - if (deschd->__error_message) - free(deschd->__error_message); - deschd->__error_number = errornumber; - deschd->__error_message = errormsg ? strdup(errormsg) : NULL; -} -void DC_set_errormsg(DescriptorClass *self, const char *errormsg) { - DescriptorHeader *deschd = &(self->deschd); - if (deschd->__error_message) - free(deschd->__error_message); - deschd->__error_message = errormsg ? strdup(errormsg) : NULL; -} -const char *DC_get_errormsg(const DescriptorClass *desc) { - return desc->deschd.__error_message; -} -int DC_get_errornumber(const DescriptorClass *desc) { - return desc->deschd.__error_number; -} - -/* Map sql commands to statement types */ -static const struct { - int number; - const char ver3str[6]; - const char ver2str[6]; -} Descriptor_sqlstate[] = - - { - {DESC_ERROR_IN_ROW, "01S01", "01S01"}, - {DESC_OPTION_VALUE_CHANGED, "01S02", "01S02"}, - {DESC_OK, "00000", "00000"}, /* OK */ - {DESC_EXEC_ERROR, "HY000", "S1000"}, /* also a general error */ - {DESC_STATUS_ERROR, "HY010", "S1010"}, - {DESC_SEQUENCE_ERROR, "HY010", "S1010"}, /* Function sequence error */ - {DESC_NO_MEMORY_ERROR, "HY001", - "S1001"}, /* memory allocation failure */ - {DESC_COLNUM_ERROR, "07009", "S1002"}, /* invalid column number */ - {DESC_NO_STMTSTRING, "HY001", - "S1001"}, /* having no stmtstring is also a malloc problem */ - {DESC_ERROR_TAKEN_FROM_BACKEND, "HY000", "S1000"}, /* general error */ - {DESC_INTERNAL_ERROR, "HY000", "S1000"}, /* general error */ - {DESC_STILL_EXECUTING, "HY010", "S1010"}, - {DESC_NOT_IMPLEMENTED_ERROR, "HYC00", "S1C00"}, /* == 'driver not - * capable' */ - {DESC_BAD_PARAMETER_NUMBER_ERROR, "07009", "S1093"}, - {DESC_OPTION_OUT_OF_RANGE_ERROR, "HY092", "S1092"}, - {DESC_INVALID_COLUMN_NUMBER_ERROR, "07009", "S1002"}, - {DESC_RESTRICTED_DATA_TYPE_ERROR, "07006", "07006"}, - {DESC_INVALID_CURSOR_STATE_ERROR, "07005", "24000"}, - {DESC_CREATE_TABLE_ERROR, "42S01", "S0001"}, /* table already exists */ - {DESC_NO_CURSOR_NAME, "S1015", "S1015"}, - {DESC_INVALID_CURSOR_NAME, "34000", "34000"}, - {DESC_INVALID_ARGUMENT_NO, "HY024", - "S1009"}, /* invalid argument value */ - {DESC_ROW_OUT_OF_RANGE, "HY107", "S1107"}, - {DESC_OPERATION_CANCELLED, "HY008", "S1008"}, - {DESC_INVALID_CURSOR_POSITION, "HY109", "S1109"}, - {DESC_VALUE_OUT_OF_RANGE, "HY019", "22003"}, - {DESC_OPERATION_INVALID, "HY011", "S1011"}, - {DESC_PROGRAM_TYPE_OUT_OF_RANGE, "?????", "?????"}, - {DESC_BAD_ERROR, "08S01", "08S01"}, /* communication link failure */ - {DESC_INVALID_OPTION_IDENTIFIER, "HY092", "HY092"}, - {DESC_RETURN_NULL_WITHOUT_INDICATOR, "22002", "22002"}, - {DESC_INVALID_DESCRIPTOR_IDENTIFIER, "HY091", "HY091"}, - {DESC_OPTION_NOT_FOR_THE_DRIVER, "HYC00", "HYC00"}, - {DESC_FETCH_OUT_OF_RANGE, "HY106", "S1106"}, - {DESC_COUNT_FIELD_INCORRECT, "07002", "07002"}, -}; - -static OpenSearch_ErrorInfo *DC_create_errorinfo(const DescriptorClass *self) { - const DescriptorHeader *deschd = &(self->deschd); - OpenSearch_ErrorInfo *error; - ConnectionClass *conn; - EnvironmentClass *env; - Int4 errornum; - BOOL env_is_odbc3 = TRUE; - - if (deschd->opensearch_error) - return deschd->opensearch_error; - errornum = deschd->__error_number; - error = ER_Constructor(errornum, deschd->__error_message); - if (!error) - return error; - conn = DC_get_conn(self); - if (conn && (env = (EnvironmentClass *)conn->henv, env)) - env_is_odbc3 = EN_is_odbc3(env); - errornum -= LOWEST_DESC_ERROR; - if (errornum < 0 - || errornum >= (int)(sizeof(Descriptor_sqlstate) - / sizeof(Descriptor_sqlstate[0]))) - errornum = 1 - LOWEST_DESC_ERROR; - STRCPY_FIXED(error->sqlstate, env_is_odbc3 - ? Descriptor_sqlstate[errornum].ver3str - : Descriptor_sqlstate[errornum].ver2str); - return error; -} -void DC_log_error(const char *func, const char *desc, - const DescriptorClass *self) { -#define nullcheck(a) (a ? a : "(NULL)") - if (self) { - MYLOG(OPENSEARCH_DEBUG, - "DESCRIPTOR ERROR: func=%s, desc='%s', errnum=%d, errmsg='%s'\n", - func, desc, self->deschd.__error_number, - nullcheck(self->deschd.__error_message)); - } -} - -/* Returns the next SQL error information. */ -RETCODE SQL_API OPENSEARCHAPI_DescError(SQLHDESC hdesc, SQLSMALLINT RecNumber, - SQLCHAR *szSqlState, SQLINTEGER *pfNativeError, - SQLCHAR *szErrorMsg, SQLSMALLINT cbErrorMsgMax, - SQLSMALLINT *pcbErrorMsg, UWORD flag) { - /* CC: return an error of a hdesc */ - DescriptorClass *desc = (DescriptorClass *)hdesc; - DescriptorHeader *deschd = &(desc->deschd); - - MYLOG(OPENSEARCH_TRACE, "entering RecN=%hd\n", RecNumber); - deschd->opensearch_error = DC_create_errorinfo(desc); - return ER_ReturnError(deschd->opensearch_error, RecNumber, szSqlState, pfNativeError, - szErrorMsg, cbErrorMsgMax, pcbErrorMsg, flag); -} diff --git a/sql-odbc/src/sqlodbc/descriptor.h b/sql-odbc/src/sqlodbc/descriptor.h deleted file mode 100644 index 59831d8d97..0000000000 --- a/sql-odbc/src/sqlodbc/descriptor.h +++ /dev/null @@ -1,254 +0,0 @@ -#ifndef __DESCRIPTOR_H__ -#define __DESCRIPTOR_H__ - -#include "opensearch_odbc.h" - -#ifdef WIN32 -#pragma warning(push) -#pragma warning(disable : 4201) // nonstandard extension used: nameless - // struct/union warning -#endif // WIN32 - -typedef struct InheritanceClass { - UInt4 allocated; - UInt4 count; - OID cur_tableoid; - opensearchNAME cur_fullTable; - struct { - OID tableoid; - opensearchNAME fullTable; - } inf[1]; -} InheritanceClass; - -enum { - TI_UPDATABLE = 1L, - TI_HASOIDS_CHECKED = (1L << 1), - TI_HASOIDS = (1L << 2), - TI_COLATTRIBUTE = (1L << 3), - TI_HASSUBCLASS = (1L << 4) -}; -typedef struct { - OID table_oid; - COL_INFO *col_info; /* cached SQLColumns info for this table */ - opensearchNAME schema_name; - opensearchNAME table_name; - opensearchNAME table_alias; - opensearchNAME bestitem; - opensearchNAME bestqual; - UInt4 flags; - InheritanceClass *ih; -} TABLE_INFO; -#define TI_set_updatable(ti) (ti->flags |= TI_UPDATABLE) -#define TI_is_updatable(ti) (0 != (ti->flags & TI_UPDATABLE)) -#define TI_no_updatable(ti) (ti->flags &= (~TI_UPDATABLE)) -#define TI_set_hasoids_checked(ti) (ti->flags |= TI_HASOIDS_CHECKED) -#define TI_checked_hasoids(ti) (0 != (ti->flags & TI_HASOIDS)) -#define TI_set_hasoids(ti) (ti->flags |= TI_HASOIDS) -#define TI_has_oids(ti) (0 != (ti->flags & TI_HASOIDS)) -#define TI_set_has_no_oids(ti) (ti->flags &= (~TI_HASOIDS)) -#define TI_set_hassubclass(ti) (ti->flags |= TI_HASSUBCLASS) -#define TI_has_subclass(ti) (0 != (ti->flags & TI_HASSUBCLASS)) -#define TI_set_has_no_subclass(ti) (ti->flags &= (~TI_HASSUBCLASS)) -void TI_Destructor(TABLE_INFO **, int); -void TI_Destroy_IH(TABLE_INFO *ti); - -enum { - FIELD_INITIALIZED = 0, - FIELD_PARSING = 1L, - FIELD_TEMP_SET = (1L << 1), - FIELD_COL_ATTRIBUTE = (1L << 2), - FIELD_PARSED_OK = (1L << 3), - FIELD_PARSED_INCOMPLETE = (1L << 4) -}; -typedef struct { - char flag; - char updatable; - Int2 attnum; - opensearchNAME schema_name; - TABLE_INFO *ti; /* to resolve explicit table names */ - opensearchNAME column_name; - opensearchNAME column_alias; - char nullable; - char auto_increment; - char func; - char columnkey; - int column_size; /* precision in 2.x */ - int decimal_digits; /* scale in 2.x */ - int display_size; - SQLLEN length; - OID columntype; - OID basetype; /* may be the basetype when the column type is a domain */ - int typmod; - char expr; - char quote; - char dquote; - char numeric; - opensearchNAME before_dot; -} FIELD_INFO; -Int4 FI_precision(const FIELD_INFO *); -void FI_Destructor(FIELD_INFO **, int, BOOL freeFI); -#define FI_is_applicable(fi) \ - (NULL != fi && (fi->flag & (FIELD_PARSED_OK | FIELD_COL_ATTRIBUTE)) != 0) -#define FI_type(fi) (0 == (fi)->basetype ? (fi)->columntype : (fi)->basetype) - -typedef struct DescriptorHeader_ { - ConnectionClass *conn_conn; - char embedded; - char type_defined; - UInt4 desc_type; - UInt4 error_row; /* 1-based row */ - UInt4 error_index; /* 1-based index */ - Int4 __error_number; - char *__error_message; - OpenSearch_ErrorInfo *opensearch_error; -} DescriptorHeader; - -/* - * ARD and APD are(must be) of the same format - */ -struct ARDFields_ { - SQLLEN size_of_rowset; /* for ODBC3 fetch operation */ - SQLUINTEGER bind_size; /* size of each structure if using - * Row-wise Binding */ - SQLUSMALLINT *row_operation_ptr; - SQLULEN *row_offset_ptr; - BindInfoClass *bookmark; - BindInfoClass *bindings; - SQLSMALLINT allocated; - SQLLEN size_of_rowset_odbc2; /* for SQLExtendedFetch */ -}; - -/* - * APD must be of the same format as ARD - */ -struct APDFields_ { - SQLLEN paramset_size; /* really an SQLINTEGER type */ - SQLUINTEGER param_bind_type; /* size of each structure if using - * Row-wise Parameter Binding */ - SQLUSMALLINT *param_operation_ptr; - SQLULEN *param_offset_ptr; - ParameterInfoClass *bookmark; /* dummy item to fit APD to ARD */ - ParameterInfoClass *parameters; - SQLSMALLINT allocated; - SQLLEN paramset_size_dummy; /* dummy item to fit APD to ARD */ -}; - -struct IRDFields_ { - StatementClass *stmt; - SQLULEN *rowsFetched; - SQLUSMALLINT *rowStatusArray; - UInt4 nfields; - SQLSMALLINT allocated; - FIELD_INFO **fi; -}; - -struct IPDFields_ { - SQLULEN *param_processed_ptr; - SQLUSMALLINT *param_status_ptr; - SQLSMALLINT allocated; - ParameterImplClass *parameters; -}; - -/*** -typedef struct -{ - DescriptorHeader deschd; - ARDFields ardopts; -} ARDClass; -typedef struct -{ - DescriptorHeader deschd; - APDFields apdopts; -} APDClass; -typedef struct -{ - DescriptorHeader deschd; - IRDFields irdopts; -} IRDClass; -typedef struct -{ - DescriptorHeader deschd; - IPDFields ipdopts; -} IPDClass; -***/ -typedef struct { - DescriptorHeader deschd; - union { - ARDFields ardf; - APDFields apdf; - IRDFields irdf; - IPDFields ipdf; - }; -} DescriptorClass; - -#define DC_get_conn(a) ((a)->deschd.conn_conn) -#define DC_get_desc_type(a) ((a)->deschd.desc_type) -#define DC_get_embedded(a) ((a)->deschd.embedded) - -void InitializeEmbeddedDescriptor(DescriptorClass *, StatementClass *stmt, - UInt4 desc_type); -void DC_Destructor(DescriptorClass *desc); -void InitializeARDFields(ARDFields *self); -void InitializeAPDFields(APDFields *self); -/* void InitializeIRDFields(IRDFields *self); -void InitializeIPDFiedls(IPDFields *self); */ -BindInfoClass *ARD_AllocBookmark(ARDFields *self); -void ARD_unbind_cols(ARDFields *self, BOOL freeall); -void APD_free_params(APDFields *self, char option); -void IPD_free_params(IPDFields *self, char option); -RETCODE DC_set_stmt(DescriptorClass *desc, StatementClass *stmt); -void DC_set_error(DescriptorClass *desc, int errornumber, const char *errormsg); -void DC_set_errormsg(DescriptorClass *desc, const char *errormsg); -OpenSearch_ErrorInfo *DC_get_error(DescriptorClass *self); -int DC_get_errornumber(const DescriptorClass *self); -const char *DC_get_errormsg(const DescriptorClass *self); -void DC_log_error(const char *func, const char *desc, - const DescriptorClass *self); - -/* Error numbers about descriptor handle */ -enum { - LOWEST_DESC_ERROR = -2 - /* minus means warning/notice message */ - , - DESC_ERROR_IN_ROW = -2, - DESC_OPTION_VALUE_CHANGED = -1, - DESC_OK = 0, - DESC_EXEC_ERROR, - DESC_STATUS_ERROR, - DESC_SEQUENCE_ERROR, - DESC_NO_MEMORY_ERROR, - DESC_COLNUM_ERROR, - DESC_NO_STMTSTRING, - DESC_ERROR_TAKEN_FROM_BACKEND, - DESC_INTERNAL_ERROR, - DESC_STILL_EXECUTING, - DESC_NOT_IMPLEMENTED_ERROR, - DESC_BAD_PARAMETER_NUMBER_ERROR, - DESC_OPTION_OUT_OF_RANGE_ERROR, - DESC_INVALID_COLUMN_NUMBER_ERROR, - DESC_RESTRICTED_DATA_TYPE_ERROR, - DESC_INVALID_CURSOR_STATE_ERROR, - DESC_CREATE_TABLE_ERROR, - DESC_NO_CURSOR_NAME, - DESC_INVALID_CURSOR_NAME, - DESC_INVALID_ARGUMENT_NO, - DESC_ROW_OUT_OF_RANGE, - DESC_OPERATION_CANCELLED, - DESC_INVALID_CURSOR_POSITION, - DESC_VALUE_OUT_OF_RANGE, - DESC_OPERATION_INVALID, - DESC_PROGRAM_TYPE_OUT_OF_RANGE, - DESC_BAD_ERROR, - DESC_INVALID_OPTION_IDENTIFIER, - DESC_RETURN_NULL_WITHOUT_INDICATOR, - DESC_INVALID_DESCRIPTOR_IDENTIFIER, - DESC_OPTION_NOT_FOR_THE_DRIVER, - DESC_FETCH_OUT_OF_RANGE, - DESC_COUNT_FIELD_INCORRECT -}; - -#ifdef WIN32 -#pragma warning(pop) -#endif // WIN32 - -#endif /* __DESCRIPTOR_H__ */ diff --git a/sql-odbc/src/sqlodbc/dlg_specific.c b/sql-odbc/src/sqlodbc/dlg_specific.c deleted file mode 100644 index f210bf0257..0000000000 --- a/sql-odbc/src/sqlodbc/dlg_specific.c +++ /dev/null @@ -1,506 +0,0 @@ -#include "dlg_specific.h" - -#include - -#include "misc.h" -#include "opensearch_apifunc.h" - -#define NULL_IF_NULL(a) ((a) ? ((const char *)(a)) : "(null)") - -static void encode(const opensearchNAME, char *out, int outlen); -static opensearchNAME decode(const char *in); -static opensearchNAME decode_or_remove_braces(const char *in); - -#define OVR_EXTRA_BITS \ - (BIT_FORCEABBREVCONNSTR | BIT_FAKE_MSS | BIT_BDE_ENVIRONMENT \ - | BIT_CVT_NULL_DATE | BIT_ACCESSIBLE_ONLY | BIT_IGNORE_ROUND_TRIP_TIME \ - | BIT_DISABLE_KEEPALIVE) - -#define OPENING_BRACKET '{' -#define CLOSING_BRACKET '}' - -#ifdef __APPLE__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wembedded-directive" -#endif // __APPLE__ -void makeConnectString(char *connect_string, const ConnInfo *ci, UWORD len) { - UNUSED(len); - char got_dsn = (ci->dsn[0] != '\0'); - char encoded_item[LARGE_REGISTRY_LEN]; - char *connsetStr = NULL; - char *esoptStr = NULL; -#ifdef _HANDLE_ENLIST_IN_DTC_ - char xaOptStr[16]; -#endif - ssize_t hlen, nlen, olen; - - encode(ci->password, encoded_item, sizeof(encoded_item)); - /* fundamental info */ - nlen = MAX_CONNECT_STRING; - olen = snprintf( - connect_string, nlen, - "%s=%s;" INI_SERVER - "=%s;" - "database=OpenSearch;" INI_PORT "=%s;" INI_USERNAME_ABBR - "=%s;" INI_PASSWORD_ABBR "=%s;" INI_AUTH_MODE "=%s;" INI_REGION - "=%s;" INI_SSL_USE "=%d;" INI_SSL_HOST_VERIFY "=%d;" INI_LOG_LEVEL - "=%d;" INI_LOG_OUTPUT "=%s;" INI_TIMEOUT "=%s;" INI_FETCH_SIZE "=%s;", - got_dsn ? "DSN" : "DRIVER", got_dsn ? ci->dsn : ci->drivername, - ci->server, ci->port, ci->username, encoded_item, ci->authtype, - ci->region, (int)ci->use_ssl, (int)ci->verify_server, - (int)ci->drivers.loglevel, ci->drivers.output_dir, - ci->response_timeout, ci->fetch_size); - if (olen < 0 || olen >= nlen) { - connect_string[0] = '\0'; - return; - } - - /* extra info */ - hlen = strlen(connect_string); - nlen = MAX_CONNECT_STRING - hlen; - if (olen < 0 || olen >= nlen) /* failed */ - connect_string[0] = '\0'; - - if (NULL != connsetStr) - free(connsetStr); - if (NULL != esoptStr) - free(esoptStr); -} -#ifdef __APPLE__ -#pragma clang diagnostic pop -#endif // __APPLE__ - -BOOL get_DSN_or_Driver(ConnInfo *ci, const char *attribute, const char *value) { - BOOL found = TRUE; - - if (stricmp(attribute, "DSN") == 0) - STRCPY_FIXED(ci->dsn, value); - else if (stricmp(attribute, "driver") == 0) - STRCPY_FIXED(ci->drivername, value); - else - found = FALSE; - - return found; -} - -BOOL copyConnAttributes(ConnInfo *ci, const char *attribute, - const char *value) { - BOOL found = TRUE, printed = FALSE; - if (stricmp(attribute, "DSN") == 0) - STRCPY_FIXED(ci->dsn, value); - else if (stricmp(attribute, "driver") == 0) - STRCPY_FIXED(ci->drivername, value); - else if ((stricmp(attribute, INI_HOST) == 0) - || (stricmp(attribute, INI_SERVER) == 0)) - STRCPY_FIXED(ci->server, value); - else if (stricmp(attribute, INI_PORT) == 0) - STRCPY_FIXED(ci->port, value); - else if ((stricmp(attribute, INI_USERNAME) == 0) - || (stricmp(attribute, INI_USERNAME_ABBR) == 0)) - STRCPY_FIXED(ci->username, value); - else if ((stricmp(attribute, INI_PASSWORD) == 0) - || (stricmp(attribute, INI_PASSWORD_ABBR) == 0)) { - ci->password = decode_or_remove_braces(value); -#ifndef FORCE_PASSWORDE_DISPLAY - MYLOG(OPENSEARCH_DEBUG, "key='%s' value='xxxxxxxx'\n", attribute); - printed = TRUE; -#endif - } else if (stricmp(attribute, INI_AUTH_MODE) == 0) - STRCPY_FIXED(ci->authtype, value); - else if (stricmp(attribute, INI_REGION) == 0) - STRCPY_FIXED(ci->region, value); - else if (stricmp(attribute, INI_SSL_USE) == 0) - ci->use_ssl = (char)atoi(value); - else if (stricmp(attribute, INI_SSL_HOST_VERIFY) == 0) - ci->verify_server = (char)atoi(value); - else if (stricmp(attribute, INI_LOG_LEVEL) == 0) - ci->drivers.loglevel = (char)atoi(value); - else if (stricmp(attribute, INI_LOG_OUTPUT) == 0) - STRCPY_FIXED(ci->drivers.output_dir, value); - else if (stricmp(attribute, INI_TIMEOUT) == 0) - STRCPY_FIXED(ci->response_timeout, value); - else if (stricmp(attribute, INI_FETCH_SIZE) == 0) - STRCPY_FIXED(ci->fetch_size, value); - else - found = FALSE; - - if (!printed) - MYLOG(OPENSEARCH_DEBUG, "key='%s' value='%s'%s\n", attribute, value, - found ? NULL_STRING : " not found"); - - return found; -} - -static void getCiDefaults(ConnInfo *ci) { - strncpy(ci->desc, DEFAULT_DESC, MEDIUM_REGISTRY_LEN); - strncpy(ci->drivername, DEFAULT_DRIVERNAME, MEDIUM_REGISTRY_LEN); - strncpy(ci->server, DEFAULT_HOST, MEDIUM_REGISTRY_LEN); - strncpy(ci->port, DEFAULT_PORT, SMALL_REGISTRY_LEN); - strncpy(ci->response_timeout, DEFAULT_RESPONSE_TIMEOUT_STR, - SMALL_REGISTRY_LEN); - strncpy(ci->fetch_size, DEFAULT_FETCH_SIZE_STR, - SMALL_REGISTRY_LEN); - strncpy(ci->authtype, DEFAULT_AUTHTYPE, MEDIUM_REGISTRY_LEN); - if (ci->password.name != NULL) - free(ci->password.name); - ci->password.name = NULL; - strncpy(ci->username, DEFAULT_USERNAME, MEDIUM_REGISTRY_LEN); - strncpy(ci->region, DEFAULT_REGION, MEDIUM_REGISTRY_LEN); - ci->use_ssl = DEFAULT_USE_SSL; - ci->verify_server = DEFAULT_VERIFY_SERVER; - strcpy(ci->drivers.output_dir, "C:\\"); -} - -#ifdef __APPLE__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wembedded-directive" -#endif // __APPLE__ -int getDriverNameFromDSN(const char *dsn, char *driver_name, int namelen) { -#ifdef WIN32 - return SQLGetPrivateProfileString(ODBC_DATASOURCES, dsn, NULL_STRING, - driver_name, namelen, ODBC_INI); -#else /* WIN32 */ - int cnt; - - cnt = SQLGetPrivateProfileString(dsn, "Driver", NULL_STRING, driver_name, - namelen, ODBC_INI); - if (!driver_name[0]) - return cnt; - if (strchr(driver_name, '/') || /* path to the driver */ - strchr(driver_name, '.')) { - driver_name[0] = '\0'; - return 0; - } - return cnt; -#endif /* WIN32 */ -#ifdef __APPLE__ -#pragma clang diagnostic pop -#endif // __APPLE__ -} - -void getDriversDefaults(const char *drivername, GLOBAL_VALUES *comval) { - if (NULL != drivername) - STR_TO_NAME(comval->drivername, drivername); -} - -void getDSNinfo(ConnInfo *ci, const char *configDrvrname) { - char *DSN = ci->dsn; - char temp[LARGE_REGISTRY_LEN]; - const char *drivername; - getCiDefaults(ci); - drivername = ci->drivername; - if (DSN[0] == '\0') { - if (drivername[0] == '\0') /* adding new DSN via configDSN */ - { - if (configDrvrname) - drivername = configDrvrname; - strncpy_null(DSN, INI_DSN, sizeof(ci->dsn)); - } - /* else dns-less connections */ - } - - /* brute-force chop off trailing blanks... */ - while (*(DSN + strlen(DSN) - 1) == ' ') - *(DSN + strlen(DSN) - 1) = '\0'; - - if (!drivername[0] && DSN[0]) - getDriverNameFromDSN(DSN, (char *)drivername, sizeof(ci->drivername)); - MYLOG(OPENSEARCH_DEBUG, "drivername=%s\n", drivername); - if (!drivername[0]) - drivername = INVALID_DRIVER; - getDriversDefaults(drivername, &(ci->drivers)); - - if (DSN[0] == '\0') - return; - - /* Proceed with getting info for the given DSN. */ - if (SQLGetPrivateProfileString(DSN, INI_SERVER, NULL_STRING, temp, - sizeof(temp), ODBC_INI) - > 0) - STRCPY_FIXED(ci->server, temp); - if (SQLGetPrivateProfileString(DSN, INI_HOST, NULL_STRING, temp, - sizeof(temp), ODBC_INI) - > 0) - STRCPY_FIXED(ci->server, temp); - if (SQLGetPrivateProfileString(DSN, INI_PORT, NULL_STRING, temp, - sizeof(temp), ODBC_INI) - > 0) - STRCPY_FIXED(ci->port, temp); - if (SQLGetPrivateProfileString(DSN, INI_USERNAME, NULL_STRING, temp, - sizeof(temp), ODBC_INI) - > 0) - STRCPY_FIXED(ci->username, temp); - if (SQLGetPrivateProfileString(DSN, INI_USERNAME_ABBR, NULL_STRING, temp, - sizeof(temp), ODBC_INI) - > 0) - STRCPY_FIXED(ci->username, temp); - if (SQLGetPrivateProfileString(DSN, INI_PASSWORD, NULL_STRING, temp, - sizeof(temp), ODBC_INI) - > 0) - ci->password = decode(temp); - if (SQLGetPrivateProfileString(DSN, INI_PASSWORD_ABBR, NULL_STRING, temp, - sizeof(temp), ODBC_INI) - > 0) - ci->password = decode(temp); - if (SQLGetPrivateProfileString(DSN, INI_AUTH_MODE, NULL_STRING, temp, - sizeof(temp), ODBC_INI) - > 0) - STRCPY_FIXED(ci->authtype, temp); - if (SQLGetPrivateProfileString(DSN, INI_REGION, NULL_STRING, temp, - sizeof(temp), ODBC_INI) - > 0) - STRCPY_FIXED(ci->region, temp); - if (SQLGetPrivateProfileString(DSN, INI_SSL_USE, NULL_STRING, temp, - sizeof(temp), ODBC_INI) - > 0) - ci->use_ssl = (char)atoi(temp); - if (SQLGetPrivateProfileString(DSN, INI_SSL_HOST_VERIFY, NULL_STRING, temp, - sizeof(temp), ODBC_INI) - > 0) - ci->verify_server = (char)atoi(temp); - if (SQLGetPrivateProfileString(DSN, INI_LOG_LEVEL, NULL_STRING, temp, - sizeof(temp), ODBC_INI) - > 0) - ci->drivers.loglevel = (char)atoi(temp); - if (SQLGetPrivateProfileString(DSN, INI_LOG_OUTPUT, NULL_STRING, temp, - sizeof(temp), ODBC_INI) - > 0) - STRCPY_FIXED(ci->drivers.output_dir, temp); - if (SQLGetPrivateProfileString(DSN, INI_TIMEOUT, NULL_STRING, temp, - sizeof(temp), ODBC_INI) - > 0) - STRCPY_FIXED(ci->response_timeout, temp); - if (SQLGetPrivateProfileString(DSN, INI_FETCH_SIZE, NULL_STRING, temp, - sizeof(temp), ODBC_INI) - > 0) - STRCPY_FIXED(ci->fetch_size, temp); - STR_TO_NAME(ci->drivers.drivername, drivername); -} -/* - * This function writes any global parameters (that can be manipulated) - * to the ODBCINST.INI portion of the registry - */ -int write_Ci_Drivers(const char *fileName, const char *sectionName, - const GLOBAL_VALUES *comval) { - UNUSED(comval, fileName, sectionName); - - // We don't need anything here - return 0; -} - -int writeDriversDefaults(const char *drivername, const GLOBAL_VALUES *comval) { - return write_Ci_Drivers(ODBCINST_INI, drivername, comval); -} - -/* This is for datasource based options only */ -void writeDSNinfo(const ConnInfo *ci) { - const char *DSN = ci->dsn; - char encoded_item[MEDIUM_REGISTRY_LEN], temp[SMALL_REGISTRY_LEN]; - - SQLWritePrivateProfileString(DSN, INI_HOST, ci->server, ODBC_INI); - SQLWritePrivateProfileString(DSN, INI_PORT, ci->port, ODBC_INI); - SQLWritePrivateProfileString(DSN, INI_USERNAME, ci->username, ODBC_INI); - encode(ci->password, encoded_item, sizeof(encoded_item)); - SQLWritePrivateProfileString(DSN, INI_PASSWORD, encoded_item, ODBC_INI); - SQLWritePrivateProfileString(DSN, INI_AUTH_MODE, ci->authtype, ODBC_INI); - SQLWritePrivateProfileString(DSN, INI_REGION, ci->region, ODBC_INI); - ITOA_FIXED(temp, ci->use_ssl); - SQLWritePrivateProfileString(DSN, INI_SSL_USE, temp, ODBC_INI); - ITOA_FIXED(temp, ci->verify_server); - SQLWritePrivateProfileString(DSN, INI_SSL_HOST_VERIFY, temp, ODBC_INI); - ITOA_FIXED(temp, ci->drivers.loglevel); - SQLWritePrivateProfileString(DSN, INI_LOG_LEVEL, temp, ODBC_INI); - SQLWritePrivateProfileString(DSN, INI_LOG_OUTPUT, ci->drivers.output_dir, - ODBC_INI); - SQLWritePrivateProfileString(DSN, INI_TIMEOUT, ci->response_timeout, - ODBC_INI); - SQLWritePrivateProfileString(DSN, INI_FETCH_SIZE, ci->fetch_size, - ODBC_INI); - -} - -static void encode(const opensearchNAME in, char *out, int outlen) { - size_t i, ilen = 0; - int o = 0; - char inc, *ins; - - if (NAME_IS_NULL(in)) { - out[0] = '\0'; - return; - } - ins = GET_NAME(in); - ilen = strlen(ins); - for (i = 0; i < ilen && o < outlen - 1; i++) { - inc = ins[i]; - if (inc == '+') { - if (o + 2 >= outlen) - break; - snprintf(&out[o], outlen - o, "%%2B"); - o += 3; - } else if (isspace((unsigned char)inc)) - out[o++] = '+'; - else if (!isalnum((unsigned char)inc)) { - if (o + 2 >= outlen) - break; - snprintf(&out[o], outlen - o, "%%%02x", inc); - o += 3; - } else - out[o++] = inc; - } - out[o++] = '\0'; -} - -static unsigned int conv_from_hex(const char *s) { - int i, y = 0, val; - - for (i = 1; i <= 2; i++) { - if (s[i] >= 'a' && s[i] <= 'f') - val = s[i] - 'a' + 10; - else if (s[i] >= 'A' && s[i] <= 'F') - val = s[i] - 'A' + 10; - else - val = s[i] - '0'; - - y += val << (4 * (2 - i)); - } - - return y; -} - -static opensearchNAME decode(const char *in) { - size_t i, ilen = strlen(in), o = 0; - char inc, *outs; - opensearchNAME out; - - INIT_NAME(out); - if (0 == ilen) { - return out; - } - outs = (char *)malloc(ilen + 1); - if (!outs) - return out; - for (i = 0; i < ilen; i++) { - inc = in[i]; - if (inc == '+') - outs[o++] = ' '; - else if (inc == '%') { - snprintf(&outs[o], ilen + 1 - o, "%c", conv_from_hex(&in[i])); - o++; - i += 2; - } else - outs[o++] = inc; - } - outs[o++] = '\0'; - STR_TO_NAME(out, outs); - free(outs); - return out; -} - -/* - * Remove braces if the input value is enclosed by braces({}). - * Othewise decode the input value. - */ -static opensearchNAME decode_or_remove_braces(const char *in) { - if (OPENING_BRACKET == in[0]) { - size_t inlen = strlen(in); - if (CLOSING_BRACKET == in[inlen - 1]) /* enclosed with braces */ - { - int i; - const char *istr, *eptr; - char *ostr; - opensearchNAME out; - - INIT_NAME(out); - if (NULL == (ostr = (char *)malloc(inlen))) - return out; - eptr = in + inlen - 1; - for (istr = in + 1, i = 0; *istr && istr < eptr; i++) { - if (CLOSING_BRACKET == istr[0] && CLOSING_BRACKET == istr[1]) - istr++; - ostr[i] = *(istr++); - } - ostr[i] = '\0'; - SET_NAME_DIRECTLY(out, ostr); - return out; - } - } - return decode(in); -} - -void CC_conninfo_release(ConnInfo *conninfo) { - NULL_THE_NAME(conninfo->password); - finalize_globals(&conninfo->drivers); -} - -void CC_conninfo_init(ConnInfo *conninfo, UInt4 option) { - MYLOG(OPENSEARCH_TRACE, "entering opt=%d\n", option); - - if (0 != (CLEANUP_FOR_REUSE & option)) - CC_conninfo_release(conninfo); - memset(conninfo, 0, sizeof(ConnInfo)); - - strncpy(conninfo->dsn, DEFAULT_DSN, MEDIUM_REGISTRY_LEN); - strncpy(conninfo->desc, DEFAULT_DESC, MEDIUM_REGISTRY_LEN); - strncpy(conninfo->drivername, DEFAULT_DRIVERNAME, MEDIUM_REGISTRY_LEN); - strncpy(conninfo->server, DEFAULT_HOST, MEDIUM_REGISTRY_LEN); - strncpy(conninfo->port, DEFAULT_PORT, SMALL_REGISTRY_LEN); - strncpy(conninfo->response_timeout, DEFAULT_RESPONSE_TIMEOUT_STR, - SMALL_REGISTRY_LEN); - strncpy(conninfo->fetch_size, DEFAULT_FETCH_SIZE_STR, - SMALL_REGISTRY_LEN); - strncpy(conninfo->authtype, DEFAULT_AUTHTYPE, MEDIUM_REGISTRY_LEN); - if (conninfo->password.name != NULL) - free(conninfo->password.name); - conninfo->password.name = NULL; - strncpy(conninfo->username, DEFAULT_USERNAME, MEDIUM_REGISTRY_LEN); - strncpy(conninfo->region, DEFAULT_REGION, MEDIUM_REGISTRY_LEN); - conninfo->use_ssl = DEFAULT_USE_SSL; - conninfo->verify_server = DEFAULT_VERIFY_SERVER; - - if (0 != (INIT_GLOBALS & option)) - init_globals(&(conninfo->drivers)); -} - -void init_globals(GLOBAL_VALUES *glbv) { - memset(glbv, 0, sizeof(*glbv)); - glbv->loglevel = DEFAULT_LOGLEVEL; - glbv->output_dir[0] = '\0'; -} - -#define CORR_STRCPY(item) strncpy_null(to->item, from->item, sizeof(to->item)) -#define CORR_VALCPY(item) (to->item = from->item) - -void copy_globals(GLOBAL_VALUES *to, const GLOBAL_VALUES *from) { - memset(to, 0, sizeof(*to)); - NAME_TO_NAME(to->drivername, from->drivername); - CORR_VALCPY(loglevel); -} - -void finalize_globals(GLOBAL_VALUES *glbv) { - NULL_THE_NAME(glbv->drivername); -} - -#undef CORR_STRCPY -#undef CORR_VALCPY -#define CORR_STRCPY(item) strncpy_null(ci->item, sci->item, sizeof(ci->item)) -#define CORR_VALCPY(item) (ci->item = sci->item) - -void CC_copy_conninfo(ConnInfo *ci, const ConnInfo *sci) { - memset(ci, 0, sizeof(ConnInfo)); - CORR_STRCPY(dsn); - CORR_STRCPY(desc); - CORR_STRCPY(drivername); - CORR_STRCPY(server); - CORR_STRCPY(username); - CORR_STRCPY(authtype); - CORR_STRCPY(region); - NAME_TO_NAME(ci->password, sci->password); - CORR_VALCPY(use_ssl); - CORR_VALCPY(verify_server); - CORR_STRCPY(port); - CORR_STRCPY(response_timeout); - CORR_STRCPY(fetch_size); - copy_globals(&(ci->drivers), &(sci->drivers)); -} -#undef CORR_STRCPY -#undef CORR_VALCPY diff --git a/sql-odbc/src/sqlodbc/dlg_specific.h b/sql-odbc/src/sqlodbc/dlg_specific.h deleted file mode 100644 index 9b67d84cd5..0000000000 --- a/sql-odbc/src/sqlodbc/dlg_specific.h +++ /dev/null @@ -1,198 +0,0 @@ -#ifndef __DLG_SPECIFIC_H__ -#define __DLG_SPECIFIC_H__ - -#include "opensearch_odbc.h" - -#ifdef WIN32 -#include - -#include "resource.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ -/* Unknown data type sizes */ -#define UNKNOWNS_AS_MAX 0 -#define UNKNOWNS_AS_DONTKNOW 1 -#define UNKNOWNS_AS_LONGEST 2 - -/* ODBC initialization files */ -#ifndef WIN32 -#define ODBC_INI ".odbc.ini" -#define ODBCINST_INI "odbcinst.ini" -#else -#define ODBC_INI "ODBC.INI" -#define ODBCINST_INI "ODBCINST.INI" -#endif - -#define ODBC_DATASOURCES "ODBC Data Sources" -#define INVALID_DRIVER " @@driver not exist@@ " - -#ifdef UNICODE_SUPPORT -#define INI_DSN "OpenSearch35W" -#else -#define INI_DSN "OpenSearch30" -#endif /* UNICODE_SUPPORT */ - -#define INI_HOST "host" -#define INI_SERVER "server" -#define INI_PORT "port" -#define INI_USERNAME "user" -#define INI_USERNAME_ABBR "UID" -#define INI_PASSWORD "password" -#define INI_PASSWORD_ABBR "PWD" -#define INI_AUTH_MODE "auth" -#define INI_REGION "region" -#define INI_SSL_USE "useSSL" -#define INI_SSL_HOST_VERIFY "hostnameVerification" -#define INI_LOG_LEVEL "logLevel" -#define INI_LOG_OUTPUT "logOutput" -#define INI_TIMEOUT "responseTimeout" -#define INI_FETCH_SIZE "fetchSize" - -#define DEFAULT_FETCH_SIZE -1 -#define DEFAULT_FETCH_SIZE_STR "-1" -#define DEFAULT_RESPONSE_TIMEOUT 10 // Seconds -#define DEFAULT_RESPONSE_TIMEOUT_STR "10" -#define DEFAULT_AUTHTYPE "NONE" -#define DEFAULT_HOST "" -#define DEFAULT_PORT "" -#define DEFAULT_USERNAME "" -#define DEFAULT_PASSWORD "" -#define DEFAULT_DRIVERNAME "opensearchodbc" -#define DEFAULT_DESC "" -#define DEFAULT_DSN "" -#define DEFAULT_REGION "" -#define DEFAULT_VERIFY_SERVER 1 - -#define AUTHTYPE_NONE "NONE" -#define AUTHTYPE_BASIC "BASIC" -#define AUTHTYPE_IAM "AWS_SIGV4" - -#ifdef _HANDLE_ENLIST_IN_DTC_ -#define INI_XAOPT "XaOpt" -#endif /* _HANDLE_ENLIST_IN_DTC_ */ -/* Bit representation for abbreviated connection strings */ -#define BIT_LFCONVERSION (1L) -#define BIT_UPDATABLECURSORS (1L << 1) -/* #define BIT_DISALLOWPREMATURE (1L<<2) */ -#define BIT_UNIQUEINDEX (1L << 3) -#define BIT_UNKNOWN_DONTKNOW (1L << 6) -#define BIT_UNKNOWN_ASMAX (1L << 7) -#define BIT_COMMLOG (1L << 10) -#define BIT_DEBUG (1L << 11) -#define BIT_PARSE (1L << 12) -#define BIT_CANCELASFREESTMT (1L << 13) -#define BIT_USEDECLAREFETCH (1L << 14) -#define BIT_READONLY (1L << 15) -#define BIT_TEXTASLONGVARCHAR (1L << 16) -#define BIT_UNKNOWNSASLONGVARCHAR (1L << 17) -#define BIT_BOOLSASCHAR (1L << 18) -#define BIT_ROWVERSIONING (1L << 19) -#define BIT_SHOWSYSTEMTABLES (1L << 20) -#define BIT_SHOWOIDCOLUMN (1L << 21) -#define BIT_FAKEOIDINDEX (1L << 22) -#define BIT_TRUEISMINUS1 (1L << 23) -#define BIT_BYTEAASLONGVARBINARY (1L << 24) -#define BIT_USESERVERSIDEPREPARE (1L << 25) -#define BIT_LOWERCASEIDENTIFIER (1L << 26) - -#define EFFECTIVE_BIT_COUNT 28 - -/* Mask for extra options */ -#define BIT_FORCEABBREVCONNSTR 1L -#define BIT_FAKE_MSS (1L << 1) -#define BIT_BDE_ENVIRONMENT (1L << 2) -#define BIT_CVT_NULL_DATE (1L << 3) -#define BIT_ACCESSIBLE_ONLY (1L << 4) -#define BIT_IGNORE_ROUND_TRIP_TIME (1L << 5) -#define BIT_DISABLE_KEEPALIVE (1L << 6) - -/* Connection Defaults */ -#define DEFAULT_READONLY 1 -#define DEFAULT_PROTOCOL \ - "7.4" /* the latest protocol is \ \ - * the default */ -#define DEFAULT_USEDECLAREFETCH 0 -#define DEFAULT_TEXTASLONGVARCHAR 0 -#define DEFAULT_UNKNOWNSASLONGVARCHAR 0 -#define DEFAULT_BOOLSASCHAR 0 -#define DEFAULT_UNIQUEINDEX 1 /* dont recognize */ -#define DEFAULT_LOGLEVEL OPENSEARCH_WARNING -#define DEFAULT_USE_SSL 0 -#define DEFAULT_TRUST_SELF_SIGNED 0 -#define DEFAULT_AUTH_MODE "NONE" -#define DEFAULT_REGION "" -#define DEFAULT_CERTIFICATE "" -#define DEFAULT_KEY "" -#define DEFAULT_UNKNOWNSIZES UNKNOWNS_AS_MAX - -#define DEFAULT_FAKEOIDINDEX 0 -#define DEFAULT_SHOWOIDCOLUMN 0 -#define DEFAULT_ROWVERSIONING 0 -#define DEFAULT_SHOWSYSTEMTABLES 0 /* dont show system tables */ -#define DEFAULT_LIE 0 -#define DEFAULT_PARSE 0 - -#define DEFAULT_CANCELASFREESTMT 0 - -#define DEFAULT_EXTRASYSTABLEPREFIXES "" - -#define DEFAULT_TRUEISMINUS1 0 -#define DEFAULT_UPDATABLECURSORS 1 -#ifdef WIN32 -#define DEFAULT_LFCONVERSION 1 -#else -#define DEFAULT_LFCONVERSION 0 -#endif /* WIN32 */ -#define DEFAULT_INT8AS 0 -#define DEFAULT_BYTEAASLONGVARBINARY 0 -#define DEFAULT_USESERVERSIDEPREPARE 1 -#define DEFAULT_LOWERCASEIDENTIFIER 0 -#define DEFAULT_NUMERIC_AS (-101) - -#ifdef _HANDLE_ENLIST_IN_DTC_ -#define DEFAULT_XAOPT 1 -#endif /* _HANDLE_ENLIST_IN_DTC_ */ - -/* for CC_DSN_info */ -#define CONN_DONT_OVERWRITE 0 -#define CONN_OVERWRITE 1 - -struct authmode { - int authtype_id; - const char *authtype_str; -}; -const struct authmode *GetAuthModes(); - -/* prototypes */ - -#ifdef WIN32 -void SetDlgStuff(HWND hdlg, const ConnInfo *ci); -void GetDlgStuff(HWND hdlg, ConnInfo *ci); -INT_PTR CALLBACK advancedOptionsProc(HWND hdlg, UINT wMsg, WPARAM wParam, - LPARAM lParam); -INT_PTR CALLBACK logOptionsProc(HWND hdlg, UINT wMsg, WPARAM wParam, LPARAM lParam); -#endif /* WIN32 */ - -int write_Ci_Drivers(const char *fileName, const char *sectionName, - const GLOBAL_VALUES *); -int writeDriversDefaults(const char *drivername, const GLOBAL_VALUES *); -void writeDSNinfo(const ConnInfo *ci); -void getDriversDefaults(const char *drivername, GLOBAL_VALUES *); -void getDSNinfo(ConnInfo *ci, const char *configDrvrname); -void makeConnectString(char *connect_string, const ConnInfo *ci, UWORD); -BOOL get_DSN_or_Driver(ConnInfo *ci, const char *attribute, const char *value); -BOOL copyConnAttributes(ConnInfo *ci, const char *attribute, const char *value); -int getDriverNameFromDSN(const char *dsn, char *driver_name, int namelen); -UInt4 getExtraOptions(const ConnInfo *); -void SetAuthenticationVisibility(HWND hdlg, const struct authmode *am); -const struct authmode *GetCurrentAuthMode(HWND hdlg); -int *GetLogLevels(); -int GetCurrentLogLevel(HWND hdlg); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ -#endif /* __DLG_SPECIFIC_H__ */ diff --git a/sql-odbc/src/sqlodbc/dlg_wingui.c b/sql-odbc/src/sqlodbc/dlg_wingui.c deleted file mode 100644 index 376a1438aa..0000000000 --- a/sql-odbc/src/sqlodbc/dlg_wingui.c +++ /dev/null @@ -1,278 +0,0 @@ -#ifdef WIN32 - -#include "dlg_specific.h" -#include "opensearch_apifunc.h" -#include "loadlib.h" -#include "misc.h" // strncpy_null -#include "win_setup.h" -#ifdef _HANDLE_ENLIST_IN_DTC_ -#include "connexp.h" -#include "xalibname.h" -#endif /* _HANDLE_ENLIST_IN_DTC_ */ - -#define HTTP_PREFIX "http://" -#define HTTPS_PREFIX "https://" - -#define AUTHMODE_CNT 3 -#define LOGLEVEL_CNT 8 -extern HINSTANCE s_hModule; - -int loglevels[LOGLEVEL_CNT] = { - {IDS_LOGTYPE_OFF}, - {IDS_LOGTYPE_FATAL}, - {IDS_LOGTYPE_ERROR}, - {IDS_LOGTYPE_WARNING}, - {IDS_LOGTYPE_INFO}, - {IDS_LOGTYPE_DEBUG}, - {IDS_LOGTYPE_TRACE}, - {IDS_LOGTYPE_ALL}}; - -static const struct authmode authmodes[AUTHMODE_CNT] = { - {IDS_AUTHTYPE_NONE, AUTHTYPE_IAM}, - {IDS_AUTHTYPE_BASIC, AUTHTYPE_BASIC}, - {IDS_AUTHTYPE_IAM, AUTHTYPE_NONE}}; - -const struct authmode *GetCurrentAuthMode(HWND hdlg) { - unsigned int ams_cnt = 0; - const struct authmode *ams = GetAuthModes(&ams_cnt); - unsigned int authtype_selection_idx = (unsigned int)(DWORD)SendMessage( - GetDlgItem(hdlg, IDC_AUTHTYPE), CB_GETCURSEL, 0L, 0L); - if (authtype_selection_idx >= ams_cnt) - authtype_selection_idx = 0; - return &ams[authtype_selection_idx]; -} - -int *GetLogLevels(unsigned int *count) { - *count = LOGLEVEL_CNT; - return loglevels; -} - -int GetCurrentLogLevel(HWND hdlg) { - unsigned int log_cnt = 0; - int *log = GetLogLevels(&log_cnt); - unsigned int loglevel_selection_idx = (unsigned int)(DWORD)SendMessage( - GetDlgItem(hdlg, IDC_LOG_LEVEL), CB_GETCURSEL, 0L, 0L); - if (loglevel_selection_idx >= log_cnt) - loglevel_selection_idx = 0; - return log[loglevel_selection_idx]; -} - - -void SetAuthenticationVisibility(HWND hdlg, const struct authmode *am) { - if (strcmp(am->authtype_str, AUTHTYPE_BASIC) == 0) { - EnableWindow(GetDlgItem(hdlg, IDC_USER), TRUE); - EnableWindow(GetDlgItem(hdlg, IDC_PASSWORD), TRUE); - EnableWindow(GetDlgItem(hdlg, IDC_REGION), FALSE); - } else if (strcmp(am->authtype_str, AUTHTYPE_IAM) == 0) { - EnableWindow(GetDlgItem(hdlg, IDC_USER), FALSE); - EnableWindow(GetDlgItem(hdlg, IDC_PASSWORD), FALSE); - EnableWindow(GetDlgItem(hdlg, IDC_REGION), TRUE); - } else { - EnableWindow(GetDlgItem(hdlg, IDC_USER), FALSE); - EnableWindow(GetDlgItem(hdlg, IDC_PASSWORD), FALSE); - EnableWindow(GetDlgItem(hdlg, IDC_REGION), FALSE); - } -} - -void SetDlgStuff(HWND hdlg, const ConnInfo *ci) { - // Connection - SetDlgItemText(hdlg, IDC_DRIVER_VERSION, "V."OPENSEARCHDRIVERVERSION); - SetDlgItemText(hdlg, IDC_DSNAME, ci->dsn); - SetDlgItemText(hdlg, IDC_SERVER, ci->server); - SetDlgItemText(hdlg, IDC_PORT, ci->port); - - // Authentication - int authtype_selection_idx = 0; - unsigned int ams_cnt = 0; - const struct authmode *ams = GetAuthModes(&ams_cnt); - char buff[MEDIUM_REGISTRY_LEN + 1]; - for (unsigned int i = 0; i < ams_cnt; i++) { - LoadString(GetWindowInstance(hdlg), ams[i].authtype_id, buff, - MEDIUM_REGISTRY_LEN); - SendDlgItemMessage(hdlg, IDC_AUTHTYPE, CB_ADDSTRING, 0, (WPARAM)buff); - if (!stricmp(ci->authtype, ams[i].authtype_str)) { - authtype_selection_idx = i; - } - } - SendDlgItemMessage(hdlg, IDC_AUTHTYPE, CB_SETCURSEL, - ams[authtype_selection_idx].authtype_id, (WPARAM)0); - SetDlgItemText(hdlg, IDC_USER, ci->username); - SetDlgItemText(hdlg, IDC_PASSWORD, SAFE_NAME(ci->password)); - SetDlgItemText(hdlg, IDC_REGION, ci->region); -} - -static void GetNameField(HWND hdlg, int item, opensearchNAME *name) { - char medium_buf[MEDIUM_REGISTRY_LEN + 1]; - GetDlgItemText(hdlg, item, medium_buf, sizeof(medium_buf)); - STR_TO_NAME((*name), medium_buf); -} - -void GetDlgStuff(HWND hdlg, ConnInfo *ci) { - // Connection - GetDlgItemText(hdlg, IDC_DESC, ci->desc, sizeof(ci->desc)); - GetDlgItemText(hdlg, IDC_SERVER, ci->server, sizeof(ci->server)); - GetDlgItemText(hdlg, IDC_PORT, ci->port, sizeof(ci->port)); - - // Authentication - GetDlgItemText(hdlg, IDC_USER, ci->username, sizeof(ci->username)); - GetNameField(hdlg, IDC_PASSWORD, &ci->password); - GetDlgItemText(hdlg, IDC_REGION, ci->region, sizeof(ci->region)); - const struct authmode *am = GetCurrentAuthMode(hdlg); - SetAuthenticationVisibility(hdlg, am); - STRCPY_FIXED(ci->authtype, am->authtype_str); - -} - -const struct authmode *GetAuthModes(unsigned int *count) { - *count = AUTHMODE_CNT; - return authmodes; -} -static void getDriversDefaultsOfCi(const ConnInfo *ci, GLOBAL_VALUES *glbv) { - const char *drivername = NULL; - - if (ci->drivername[0]) - drivername = ci->drivername; - else if (NAME_IS_VALID(ci->drivers.drivername)) - drivername = SAFE_NAME(ci->drivers.drivername); - if (drivername && drivername[0]) - getDriversDefaults(drivername, glbv); - else - getDriversDefaults(INVALID_DRIVER, glbv); -} - -/** - * @brief Initializes and closes the advanced dialog box. - * - * @param hdlg : Handle to dialog box - * @param wMsg : Dialog box command message - * @param wParam : Handle to the control to receive keyboard focus - * @param lParam : Dialog connection data - * @return INT_PTR : Returns true on successful command of advanced dialog box - */ -INT_PTR CALLBACK advancedOptionsProc(HWND hdlg, UINT wMsg, WPARAM wParam, - LPARAM lParam) { - switch (wMsg) { - case WM_INITDIALOG: { - SetWindowLongPtr(hdlg, DWLP_USER, lParam); - ConnInfo *ci = (ConnInfo *)lParam; - - // To avoid cases in which the "UseSSL" flag is different from a specified server protocol - if (strncmp(HTTP_PREFIX, ci->server, strlen(HTTP_PREFIX)) == 0) { - CheckDlgButton(hdlg, IDC_USESSL, FALSE); - CheckDlgButton(hdlg, IDC_HOST_VER, FALSE); - EnableWindow(GetDlgItem(hdlg, IDC_USESSL), FALSE); - EnableWindow(GetDlgItem(hdlg, IDC_HOST_VER), FALSE); - } else if (strncmp(HTTPS_PREFIX, ci->server, strlen(HTTPS_PREFIX)) == 0) { - CheckDlgButton(hdlg, IDC_USESSL, TRUE); - CheckDlgButton(hdlg, IDC_HOST_VER, ci->verify_server); - EnableWindow(GetDlgItem(hdlg, IDC_USESSL), FALSE); - } else { - CheckDlgButton(hdlg, IDC_USESSL, ci->use_ssl); - CheckDlgButton(hdlg, IDC_HOST_VER, ci->verify_server); - } - - SetDlgItemText(hdlg, IDC_CONNTIMEOUT, ci->response_timeout); - SetDlgItemText(hdlg, IDC_FETCH_SIZE, ci->fetch_size); - break; - } - - case WM_COMMAND: { - ConnInfo *ci = (ConnInfo *)GetWindowLongPtr(hdlg, DWLP_USER); - switch (GET_WM_COMMAND_ID(wParam, lParam)) { - case IDOK: - // Get Dialog Values - ci->use_ssl = (IsDlgButtonChecked(hdlg, IDC_USESSL) ? 1 : 0); - ci->verify_server = (IsDlgButtonChecked(hdlg, IDC_HOST_VER) ? 1 : 0); - GetDlgItemText(hdlg, IDC_CONNTIMEOUT, ci->response_timeout, - sizeof(ci->response_timeout)); - GetDlgItemText(hdlg, IDC_FETCH_SIZE, ci->fetch_size, - sizeof(ci->fetch_size)); - case IDCANCEL: - EndDialog(hdlg, FALSE); - return TRUE; - } - } - } - return FALSE; -} - -INT_PTR CALLBACK logOptionsProc(HWND hdlg, UINT wMsg, WPARAM wParam, - LPARAM lParam) { - switch (wMsg) { - case WM_INITDIALOG: { - ConnInfo *ci = (ConnInfo *)lParam; - SetWindowLongPtr(hdlg, DWLP_USER, lParam); - - // Logging - int loglevel_selection_idx = 0; - unsigned int log_cnt = 0; - int *log = GetLogLevels(&log_cnt); - char buff[MEDIUM_REGISTRY_LEN + 1]; - for (unsigned int i = 0; i < log_cnt; i++) { - LoadString(GetWindowInstance(hdlg), log[i], buff, - MEDIUM_REGISTRY_LEN); - SendDlgItemMessage(hdlg, IDC_LOG_LEVEL, CB_ADDSTRING, 0, - (WPARAM)buff); - if ((unsigned int)ci->drivers.loglevel == i) { - loglevel_selection_idx = i; - } - } - SendDlgItemMessage(hdlg, IDC_LOG_LEVEL, CB_SETCURSEL, - loglevel_selection_idx, (WPARAM)0); - SetDlgItemText(hdlg, IDC_LOG_PATH, ci->drivers.output_dir); - break; - } - - case WM_COMMAND: { - ConnInfo *ci = (ConnInfo *)GetWindowLongPtr(hdlg, DWLP_USER); - switch (GET_WM_COMMAND_ID(wParam, lParam)) { - case IDOK: { - // Get Dialog Values - int log = GetCurrentLogLevel(hdlg); - switch (log) { - case IDS_LOGTYPE_OFF: - ci->drivers.loglevel = (char)OPENSEARCH_OFF; - break; - case IDS_LOGTYPE_FATAL: - ci->drivers.loglevel = (char)OPENSEARCH_FATAL; - break; - case IDS_LOGTYPE_ERROR: - ci->drivers.loglevel = (char)OPENSEARCH_ERROR; - break; - case IDS_LOGTYPE_WARNING: - ci->drivers.loglevel = (char)OPENSEARCH_WARNING; - break; - case IDS_LOGTYPE_INFO: - ci->drivers.loglevel = (char)OPENSEARCH_INFO; - break; - case IDS_LOGTYPE_DEBUG: - ci->drivers.loglevel = (char)OPENSEARCH_DEBUG; - break; - case IDS_LOGTYPE_TRACE: - ci->drivers.loglevel = (char)OPENSEARCH_TRACE; - break; - case IDS_LOGTYPE_ALL: - ci->drivers.loglevel = (char)OPENSEARCH_ALL; - break; - default: - ci->drivers.loglevel = (char)OPENSEARCH_OFF; - break; - } - setGlobalCommlog(ci->drivers.loglevel); - setGlobalDebug(ci->drivers.loglevel); - writeGlobalLogs(); - GetDlgItemText(hdlg, IDC_LOG_PATH, ci->drivers.output_dir, - sizeof(ci->drivers.output_dir)); - setLogDir(ci->drivers.output_dir); - } - - case IDCANCEL: - EndDialog(hdlg, FALSE); - return TRUE; - } - } - } - return FALSE; -} - -#endif /* WIN32 */ diff --git a/sql-odbc/src/sqlodbc/drvconn.c b/sql-odbc/src/sqlodbc/drvconn.c deleted file mode 100644 index e4e53def22..0000000000 --- a/sql-odbc/src/sqlodbc/drvconn.c +++ /dev/null @@ -1,320 +0,0 @@ -#include "drvconn.h" - -#include -#include - -#include "opensearch_odbc.h" -#include "misc.h" -#include "opensearch_connection.h" - -#ifndef WIN32 -#include -#include -#else -#include -#endif - -#include - -#ifdef WIN32 -#include - -#include "resource.h" -#include "win_setup.h" -#endif -#include "dlg_specific.h" -#include "opensearch_apifunc.h" - -#ifdef WIN32 -INT_PTR CALLBACK dconn_FDriverConnectProc(HWND hdlg, UINT wMsg, WPARAM wParam, - LPARAM lParam); -extern HINSTANCE s_hModule; /* Saved module handle. */ -#endif - -char *hide_password(const char *str) { - char *outstr, *pwdp; - - if (!str) - return NULL; - outstr = strdup(str); - if (!outstr) - return NULL; - if (pwdp = strstr(outstr, "PWD="), !pwdp) - pwdp = strstr(outstr, "pwd="); - if (pwdp) { - char *p; - - for (p = pwdp + 4; *p && *p != ';'; p++) - *p = 'x'; - } - return outstr; -} - -int paramRequired(const ConnInfo *ci, int reqs) { - int required = 0; - const char *pw = SAFE_NAME(ci->password); - - /* Password is not necessarily a required parameter. */ - if ((reqs & PASSWORD_IS_REQUIRED) != 0) - if ('\0' == pw[0]) - required |= PASSWORD_IS_REQUIRED; - - return required; -} - -#ifdef WIN32 -RETCODE -dconn_DoDialog(HWND hwnd, ConnInfo *ci) { - INT_PTR dialog_result; - - MYLOG(OPENSEARCH_TRACE, "entering ci = %p\n", ci); - - if (hwnd) { - dialog_result = - DialogBoxParam(s_hModule, MAKEINTRESOURCE(DLG_CONFIG), hwnd, - dconn_FDriverConnectProc, (LPARAM)ci); - if (-1 == dialog_result) { - int errc = GetLastError(); - MYLOG(OPENSEARCH_DEBUG, " LastError=%d\n", errc); - } - if (!dialog_result || (dialog_result == -1)) - return SQL_NO_DATA_FOUND; - else - return SQL_SUCCESS; - } - - MYLOG(OPENSEARCH_DEBUG, " No window specified\n"); - return SQL_ERROR; -} - -INT_PTR CALLBACK dconn_FDriverConnectProc(HWND hdlg, UINT wMsg, WPARAM wParam, - LPARAM lParam) { - MYLOG(OPENSEARCH_DEBUG, "dconn_FDriverConnectProc\n"); - ConnInfo *ci; - - switch (wMsg) { - case WM_INITDIALOG: - ci = (ConnInfo *)lParam; - - /* Change the caption for the setup dialog */ - SetWindowText(hdlg, "OpenSearch Connection"); - - /* Hide the DSN and description fields */ - ShowWindow(GetDlgItem(hdlg, IDC_DSNAMETEXT), SW_HIDE); - ShowWindow(GetDlgItem(hdlg, IDC_DSNAME), SW_HIDE); - - SetWindowLongPtr(hdlg, DWLP_USER, - lParam); /* Save the ConnInfo for the "OK" */ - SetDlgStuff(hdlg, ci); - - if (ci->server[0] == '\0') - SetFocus(GetDlgItem(hdlg, IDC_SERVER)); - else if (ci->port[0] == '\0') - SetFocus(GetDlgItem(hdlg, IDC_PORT)); - else if (ci->username[0] == '\0') - SetFocus(GetDlgItem(hdlg, IDC_USER)); - else if (ci->region[0] == '\0') - SetFocus(GetDlgItem(hdlg, IDC_REGION)); - - SendDlgItemMessage(hdlg, IDC_AUTHTYPE, CB_SETCURSEL, 2, (WPARAM)0); - - // Encryption - ci->use_ssl = (IsDlgButtonChecked(hdlg, IDC_USESSL) ? 1 : 0); - break; - - case WM_COMMAND: - switch (GET_WM_COMMAND_ID(wParam, lParam)) { - case IDOK: - ci = (ConnInfo *)GetWindowLongPtr(hdlg, DWLP_USER); - GetDlgStuff(hdlg, ci); - case IDCANCEL: - EndDialog(hdlg, GET_WM_COMMAND_ID(wParam, lParam) == IDOK); - return TRUE; - - case IDOK2: // <== TEST button - { - ConnInfo tmp_info; - ci = (ConnInfo *)GetWindowLongPtr(hdlg, DWLP_USER); - GetDlgStuff(hdlg, ci); - CC_copy_conninfo(&tmp_info, ci); - test_connection(hdlg, &tmp_info, FALSE); - CC_conninfo_release(&tmp_info); - break; - } - case ID_ADVANCED_OPTIONS: { - ci = (ConnInfo *)GetWindowLongPtr(hdlg, DWLP_USER); - DialogBoxParam(s_hModule, - MAKEINTRESOURCE(DLG_ADVANCED_OPTIONS), hdlg, - advancedOptionsProc, (LPARAM)ci); - break; - } - case ID_LOG_OPTIONS: { - ci = (ConnInfo *)GetWindowLongPtr(hdlg, DWLP_USER); - DialogBoxParam(s_hModule, MAKEINTRESOURCE(DLG_LOG_OPTIONS), - hdlg, logOptionsProc, (LPARAM)ci); - break; - } - case IDC_AUTHTYPE: { - ci = (ConnInfo *)GetWindowLongPtr(hdlg, DWLP_USER); - const struct authmode *am = GetCurrentAuthMode(hdlg); - SetAuthenticationVisibility(hdlg, am); - break; - } - } - break; - case WM_CTLCOLORSTATIC: - if (lParam == (LPARAM)GetDlgItem(hdlg, IDC_NOTICE_USER)) { - HBRUSH hBrush = (HBRUSH)GetStockObject(WHITE_BRUSH); - SetTextColor((HDC)wParam, RGB(255, 0, 0)); - return (INT_PTR)hBrush; - } - break; - } - - return FALSE; -} -#endif /* WIN32 */ - -#define ATTRIBUTE_DELIMITER ';' -#define OPENING_BRACKET '{' -#define CLOSING_BRACKET '}' - -typedef BOOL (*copyfunc)(ConnInfo *, const char *attribute, const char *value); -BOOL dconn_get_attributes(copyfunc func, const char *connect_string, - ConnInfo *ci) { - BOOL ret = TRUE; - char *our_connect_string; - const char *pair, *attribute, *value, *termp; - BOOL eoftok; - char *equals, *delp; - char *strtok_arg; -#ifdef HAVE_STRTOK_R - char *last = NULL; -#endif /* HAVE_STRTOK_R */ - - if (our_connect_string = strdup(connect_string), NULL == our_connect_string) { - ret = FALSE; - goto cleanup; - } - strtok_arg = our_connect_string; - -#ifdef FORCE_PASSWORD_DISPLAY - MYLOG(OPENSEARCH_DEBUG, "our_connect_string = '%s'\n", our_connect_string); -#else - if (get_mylog()) { - char *hide_str = hide_password(our_connect_string); - - MYLOG(OPENSEARCH_DEBUG, "our_connect_string = '%s'\n", hide_str); - free(hide_str); - } -#endif /* FORCE_PASSWORD_DISPLAY */ - - termp = strchr(our_connect_string, '\0'); - eoftok = FALSE; - while (!eoftok) { - if (strtok_arg != NULL && strtok_arg >= termp) /* for safety */ - break; -#ifdef HAVE_STRTOK_R - pair = strtok_r(strtok_arg, ";", &last); -#else - pair = strtok(strtok_arg, ";"); -#endif /* HAVE_STRTOK_R */ - if (strtok_arg) - strtok_arg = NULL; - if (!pair) - break; - - equals = strchr(pair, '='); - if (!equals) - continue; - - *equals = '\0'; - attribute = pair; /* ex. DSN */ - value = equals + 1; /* ex. 'CEO co1' */ - /* - * Values enclosed with braces({}) can contain ; etc - * We don't remove the braces here because - * decode_or_remove_braces() in dlg_specifi.c - * would remove them later. - * Just correct the misdetected delimter(;). - */ - switch (*value) { - const char *valuen, *closep; - - case OPENING_BRACKET: - delp = strchr(value, '\0'); - if (delp >= termp) { - eoftok = TRUE; - break; - } - /* Where's a corresponding closing bracket? */ - closep = strchr(value, CLOSING_BRACKET); - if (NULL != closep && closep[1] == '\0') - break; - - for (valuen = value; valuen < termp; - closep = strchr(valuen, CLOSING_BRACKET)) { - if (NULL == closep) { - if (!delp) /* error */ - { - MYLOG(OPENSEARCH_DEBUG, - "closing bracket doesn't exist 1\n"); - ret = FALSE; - goto cleanup; - } - closep = strchr(delp + 1, CLOSING_BRACKET); - if (!closep) /* error */ - { - MYLOG(OPENSEARCH_DEBUG, - "closing bracket doesn't exist 2\n"); - ret = FALSE; - goto cleanup; - } - *delp = ATTRIBUTE_DELIMITER; /* restore delimiter */ - delp = NULL; - } - if (CLOSING_BRACKET == closep[1]) { - valuen = closep + 2; - if (valuen >= termp) - break; - else if (valuen == delp) { - *delp = ATTRIBUTE_DELIMITER; - delp = NULL; - } - continue; - } else if (ATTRIBUTE_DELIMITER == closep[1] - || '\0' == closep[1] || delp == closep + 1) { - delp = (char *)(closep + 1); - *delp = '\0'; - strtok_arg = delp + 1; - if (strtok_arg + 1 >= termp) - eoftok = TRUE; - break; - } - MYLOG(OPENSEARCH_DEBUG, - "subsequent char to the closing bracket is %c " - "value=%s\n", - closep[1], value); - ret = FALSE; - goto cleanup; - } - } - - /* Copy the appropriate value to the conninfo */ - (*func)(ci, attribute, value); - } - -cleanup: - free(our_connect_string); - - return ret; -} - -BOOL dconn_get_DSN_or_Driver(const char *connect_string, ConnInfo *ci) { - CC_conninfo_init(ci, INIT_GLOBALS); - return dconn_get_attributes(get_DSN_or_Driver, connect_string, ci); -} - -BOOL dconn_get_connect_attributes(const char *connect_string, ConnInfo *ci) { - return dconn_get_attributes(copyConnAttributes, connect_string, ci); -} diff --git a/sql-odbc/src/sqlodbc/drvconn.h b/sql-odbc/src/sqlodbc/drvconn.h deleted file mode 100644 index 3a00957b8b..0000000000 --- a/sql-odbc/src/sqlodbc/drvconn.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef _DRVCONN_H_ -#define _DRVCONN_H_ - -#include -#include - -#include "opensearch_odbc.h" -#include "misc.h" -#include "opensearch_connection.h" - -#ifndef WIN32 -#include -#include -#else -#include -#endif - -#include - -#ifdef WIN32 -#include - -#include "resource.h" -#endif -#include "dlg_specific.h" -#include "opensearch_apifunc.h" - -#define PASSWORD_IS_REQUIRED 1 - -#ifdef __cplusplus -extern "C" { -#endif -char *hide_password(const char *str); -BOOL dconn_get_connect_attributes(const char *connect_string, ConnInfo *ci); -BOOL dconn_get_DSN_or_Driver(const char *connect_string, ConnInfo *ci); -int paramRequired(const ConnInfo *ci, int reqs); -#ifdef WIN32 -RETCODE dconn_DoDialog(HWND hwnd, ConnInfo *ci); -#endif -#ifdef __cplusplus -} -#endif - -#endif diff --git a/sql-odbc/src/sqlodbc/environ.c b/sql-odbc/src/sqlodbc/environ.c deleted file mode 100644 index c12dc085a7..0000000000 --- a/sql-odbc/src/sqlodbc/environ.c +++ /dev/null @@ -1,547 +0,0 @@ -#include "environ.h" - -#include -#include - -#include "dlg_specific.h" -#include "misc.h" -#include "opensearch_apifunc.h" -#include "opensearch_connection.h" -#include "statement.h" -#ifdef WIN32 -#include -#endif /* WIN32 */ -#include "loadlib.h" - -/* The one instance of the handles */ -static int conns_count = 0; -static ConnectionClass **conns = NULL; - -void *conns_cs = NULL; -void *common_cs = NULL; -void *common_lcs = NULL; - -RETCODE SQL_API OPENSEARCHAPI_AllocEnv(HENV *phenv) { - CSTR func = "OPENSEARCHAPI_AllocEnv"; - SQLRETURN ret = SQL_SUCCESS; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - - /* - * For systems on which none of the constructor-making - * techniques in elasticodbc.c work: - * It's ok to call initialize_global_cs() twice. - */ - { initialize_global_cs(); } - - *phenv = (HENV)EN_Constructor(); - if (!*phenv) { - *phenv = SQL_NULL_HENV; - EN_log_error(func, "Error allocating environment", NULL); - ret = SQL_ERROR; - } - - MYLOG(OPENSEARCH_TRACE, "leaving phenv=%p\n", *phenv); - return ret; -} - -RETCODE SQL_API OPENSEARCHAPI_FreeEnv(HENV henv) { - CSTR func = "OPENSEARCHAPI_FreeEnv"; - SQLRETURN ret = SQL_SUCCESS; - EnvironmentClass *env = (EnvironmentClass *)henv; - - MYLOG(OPENSEARCH_TRACE, "entering env=%p\n", env); - - if (env && EN_Destructor(env)) { - MYLOG(OPENSEARCH_DEBUG, " ok\n"); - goto cleanup; - } - - ret = SQL_ERROR; - EN_log_error(func, "Error freeing environment", NULL); -cleanup: - return ret; -} - -#define SIZEOF_SQLSTATE 6 - -static void opensearch_sqlstate_set(const EnvironmentClass *env, UCHAR *szSqlState, - const char *ver3str, const char *ver2str) { - strncpy_null((char *)szSqlState, EN_is_odbc3(env) ? ver3str : ver2str, - SIZEOF_SQLSTATE); -} - -OpenSearch_ErrorInfo *ER_Constructor(SDWORD errnumber, const char *msg) { - OpenSearch_ErrorInfo *error; - ssize_t aladd, errsize; - - if (DESC_OK == errnumber) - return NULL; - if (msg) { - errsize = strlen(msg); - aladd = errsize - sizeof(error->__error_message) + 1; - if (aladd < 0) - aladd = 0; - } else { - errsize = -1; - aladd = 0; - } - error = (OpenSearch_ErrorInfo *)malloc(sizeof(OpenSearch_ErrorInfo) + aladd); - if (error) { - memset(error, 0, sizeof(OpenSearch_ErrorInfo)); - error->status = errnumber; - error->errorsize = (Int2)errsize; - if (errsize > 0) - memcpy(error->__error_message, msg, errsize); - error->__error_message[errsize] = '\0'; - error->recsize = -1; - } - return error; -} - -void ER_Destructor(OpenSearch_ErrorInfo *self) { - free(self); -} - -OpenSearch_ErrorInfo *ER_Dup(const OpenSearch_ErrorInfo *self) { - OpenSearch_ErrorInfo *new; - Int4 alsize; - - if (!self) - return NULL; - alsize = sizeof(OpenSearch_ErrorInfo); - if (self->errorsize > 0) - alsize += self->errorsize; - new = (OpenSearch_ErrorInfo *)malloc(alsize); - if (new) - memcpy(new, self, alsize); - - return new; -} - -#define DRVMNGRDIV 511 -/* Returns the next SQL error information. */ -RETCODE SQL_API ER_ReturnError(OpenSearch_ErrorInfo *openSearchError, SQLSMALLINT RecNumber, - SQLCHAR *szSqlState, SQLINTEGER *pfNativeError, - SQLCHAR *szErrorMsg, SQLSMALLINT cbErrorMsgMax, - SQLSMALLINT *pcbErrorMsg, UWORD flag) { - /* CC: return an error of a hstmt */ - OpenSearch_ErrorInfo *error; - BOOL partial_ok = ((flag & PODBC_ALLOW_PARTIAL_EXTRACT) != 0); - const char *msg; - SWORD msglen, stapos, wrtlen, pcblen; - - if (!openSearchError) - return SQL_NO_DATA_FOUND; - error = openSearchError; - msg = error->__error_message; - MYLOG(OPENSEARCH_TRACE, "entering status = %d, msg = #%s#\n", error->status, msg); - msglen = (SQLSMALLINT)strlen(msg); - /* - * Even though an application specifies a larger error message - * buffer, the driver manager changes it silently. - * Therefore we divide the error message into ... - */ - if (error->recsize < 0) { - if (cbErrorMsgMax > 0) - error->recsize = cbErrorMsgMax - 1; /* apply the first request */ - else - error->recsize = DRVMNGRDIV; - } else if (1 == RecNumber && cbErrorMsgMax > 0) - error->recsize = cbErrorMsgMax - 1; - if (RecNumber < 0) { - if (0 == error->errorpos) - RecNumber = 1; - else - RecNumber = 2 + (error->errorpos - 1) / error->recsize; - } - stapos = (RecNumber - 1) * error->recsize; - if (stapos > msglen) - return SQL_NO_DATA_FOUND; - pcblen = wrtlen = msglen - stapos; - if (pcblen > error->recsize) - pcblen = error->recsize; - if (0 == cbErrorMsgMax) - wrtlen = 0; - else if (wrtlen >= cbErrorMsgMax) { - if (partial_ok) - wrtlen = cbErrorMsgMax - 1; - else if (cbErrorMsgMax <= error->recsize) - wrtlen = cbErrorMsgMax - 1; - else - wrtlen = error->recsize; - } - if (wrtlen > pcblen) - wrtlen = pcblen; - if (NULL != pcbErrorMsg) - *pcbErrorMsg = pcblen; - - if ((NULL != szErrorMsg) && (cbErrorMsgMax > 0)) { - memcpy(szErrorMsg, msg + stapos, wrtlen); - szErrorMsg[wrtlen] = '\0'; - } - - if (NULL != pfNativeError) - *pfNativeError = error->status; - - if (NULL != szSqlState) - strncpy_null((char *)szSqlState, error->sqlstate, 6); - - MYLOG(OPENSEARCH_DEBUG, " szSqlState = '%s',len=%d, szError='%s'\n", - szSqlState, pcblen, szErrorMsg); - if (wrtlen < pcblen) - return SQL_SUCCESS_WITH_INFO; - else - return SQL_SUCCESS; -} - -RETCODE SQL_API OPENSEARCHAPI_ConnectError(HDBC hdbc, SQLSMALLINT RecNumber, - SQLCHAR *szSqlState, - SQLINTEGER *pfNativeError, - SQLCHAR *szErrorMsg, - SQLSMALLINT cbErrorMsgMax, - SQLSMALLINT *pcbErrorMsg, UWORD flag) { - UNUSED(flag); - ConnectionClass *conn = (ConnectionClass *)hdbc; - EnvironmentClass *env = (EnvironmentClass *)conn->henv; - char *msg; - int status; - BOOL once_again = FALSE; - ssize_t msglen; - - MYLOG(OPENSEARCH_ERROR, "entering hdbc=%p <%d>\n", hdbc, cbErrorMsgMax); - if (RecNumber != 1 && RecNumber != -1) - return SQL_NO_DATA_FOUND; - if (cbErrorMsgMax < 0) - return SQL_ERROR; - if (CONN_EXECUTING == conn->status || !CC_get_error(conn, &status, &msg) - || NULL == msg) { - MYLOG(OPENSEARCH_ERROR, "CC_Get_error returned nothing.\n"); - if (NULL != szSqlState) - strncpy_null((char *)szSqlState, "00000", SIZEOF_SQLSTATE); - if (NULL != pcbErrorMsg) - *pcbErrorMsg = 0; - if ((NULL != szErrorMsg) && (cbErrorMsgMax > 0)) - szErrorMsg[0] = '\0'; - - return SQL_NO_DATA_FOUND; - } - MYLOG(OPENSEARCH_ERROR, "CC_get_error: status = %d, msg = #%s#\n", status, msg); - - msglen = strlen(msg); - if (NULL != pcbErrorMsg) { - *pcbErrorMsg = (SQLSMALLINT)msglen; - if (cbErrorMsgMax == 0) - once_again = TRUE; - else if (msglen >= cbErrorMsgMax) - *pcbErrorMsg = cbErrorMsgMax - 1; - } - if ((NULL != szErrorMsg) && (cbErrorMsgMax > 0)) - strncpy_null((char *)szErrorMsg, msg, cbErrorMsgMax); - if (NULL != pfNativeError) - *pfNativeError = status; - - if (NULL != szSqlState) { - if (conn->sqlstate[0]) - strncpy_null((char *)szSqlState, conn->sqlstate, SIZEOF_SQLSTATE); - else - switch (status) { - case CONN_OPTION_VALUE_CHANGED: - opensearch_sqlstate_set(env, szSqlState, "01S02", "01S02"); - break; - case CONN_TRUNCATED: - opensearch_sqlstate_set(env, szSqlState, "01004", "01004"); - /* data truncated */ - break; - case CONN_INIREAD_ERROR: - opensearch_sqlstate_set(env, szSqlState, "IM002", "IM002"); - /* data source not found */ - break; - case CONNECTION_SERVER_NOT_REACHED: - case CONN_OPENDB_ERROR: - opensearch_sqlstate_set(env, szSqlState, "08001", "08001"); - /* unable to connect to data source */ - break; - case CONN_INVALID_AUTHENTICATION: - case CONN_AUTH_TYPE_UNSUPPORTED: - opensearch_sqlstate_set(env, szSqlState, "28000", "28000"); - break; - case CONN_STMT_ALLOC_ERROR: - opensearch_sqlstate_set(env, szSqlState, "HY001", "S1001"); - /* memory allocation failure */ - break; - case CONN_IN_USE: - opensearch_sqlstate_set(env, szSqlState, "HY000", "S1000"); - /* general error */ - break; - case CONN_UNSUPPORTED_OPTION: - opensearch_sqlstate_set(env, szSqlState, "HYC00", "IM001"); - /* driver does not support this function */ - break; - case CONN_INVALID_ARGUMENT_NO: - opensearch_sqlstate_set(env, szSqlState, "HY009", "S1009"); - /* invalid argument value */ - break; - case CONN_TRANSACT_IN_PROGRES: - opensearch_sqlstate_set(env, szSqlState, "HY011", "S1011"); - break; - case CONN_NO_MEMORY_ERROR: - opensearch_sqlstate_set(env, szSqlState, "HY001", "S1001"); - break; - case CONN_NOT_IMPLEMENTED_ERROR: - opensearch_sqlstate_set(env, szSqlState, "HYC00", "S1C00"); - break; - case CONN_ILLEGAL_TRANSACT_STATE: - opensearch_sqlstate_set(env, szSqlState, "25000", "S1010"); - break; - case CONN_VALUE_OUT_OF_RANGE: - opensearch_sqlstate_set(env, szSqlState, "HY019", "22003"); - break; - case CONNECTION_COULD_NOT_SEND: - case CONNECTION_COULD_NOT_RECEIVE: - case CONNECTION_COMMUNICATION_ERROR: - case CONNECTION_NO_RESPONSE: - opensearch_sqlstate_set(env, szSqlState, "08S01", "08S01"); - break; - default: - opensearch_sqlstate_set(env, szSqlState, "HY000", "S1000"); - /* general error */ - break; - } - } - - MYLOG(OPENSEARCH_DEBUG, - " szSqlState = '%s',len=" FORMAT_SSIZE_T ", szError='%s'\n", - szSqlState ? (char *)szSqlState : PRINT_NULL, msglen, - szErrorMsg ? (char *)szErrorMsg : PRINT_NULL); - if (once_again) { - CC_set_errornumber(conn, status); - return SQL_SUCCESS_WITH_INFO; - } else - return SQL_SUCCESS; -} - -RETCODE SQL_API OPENSEARCHAPI_EnvError(HENV henv, SQLSMALLINT RecNumber, - SQLCHAR *szSqlState, SQLINTEGER *pfNativeError, - SQLCHAR *szErrorMsg, SQLSMALLINT cbErrorMsgMax, - SQLSMALLINT *pcbErrorMsg, UWORD flag) { - UNUSED(flag); - EnvironmentClass *env = (EnvironmentClass *)henv; - char *msg = NULL; - int status; - - MYLOG(OPENSEARCH_ERROR, "entering henv=%p <%d>\n", henv, cbErrorMsgMax); - if (RecNumber != 1 && RecNumber != -1) - return SQL_NO_DATA_FOUND; - if (cbErrorMsgMax < 0) - return SQL_ERROR; - if (!EN_get_error(env, &status, &msg) || NULL == msg) { - MYLOG(OPENSEARCH_ERROR, "EN_get_error: msg = #%s#\n", msg); - - if (NULL != szSqlState) - opensearch_sqlstate_set(env, szSqlState, "00000", "00000"); - if (NULL != pcbErrorMsg) - *pcbErrorMsg = 0; - if ((NULL != szErrorMsg) && (cbErrorMsgMax > 0)) - szErrorMsg[0] = '\0'; - - return SQL_NO_DATA_FOUND; - } - MYLOG(OPENSEARCH_ERROR, "EN_get_error: status = %d, msg = #%s#\n", status, msg); - - if (NULL != pcbErrorMsg) - *pcbErrorMsg = (SQLSMALLINT)strlen(msg); - if ((NULL != szErrorMsg) && (cbErrorMsgMax > 0)) - strncpy_null((char *)szErrorMsg, msg, cbErrorMsgMax); - if (NULL != pfNativeError) - *pfNativeError = status; - - if (szSqlState) { - switch (status) { - case ENV_ALLOC_ERROR: - /* memory allocation failure */ - opensearch_sqlstate_set(env, szSqlState, "HY001", "S1001"); - break; - default: - opensearch_sqlstate_set(env, szSqlState, "HY000", "S1000"); - /* general error */ - break; - } - } - - return SQL_SUCCESS; -} - -/* - * EnvironmentClass implementation - */ -EnvironmentClass *EN_Constructor(void) { - EnvironmentClass *rv = NULL; -#ifdef WIN32 - WORD wVersionRequested; - WSADATA wsaData; - const int major = 2, minor = 2; - - /* Load the WinSock Library */ - wVersionRequested = MAKEWORD(major, minor); - - if (WSAStartup(wVersionRequested, &wsaData)) { - MYLOG(OPENSEARCH_ERROR, " WSAStartup error\n"); - return rv; - } - /* Verify that this is the minimum version of WinSock */ - if (LOBYTE(wsaData.wVersion) >= 1 - && (LOBYTE(wsaData.wVersion) >= 2 || HIBYTE(wsaData.wVersion) >= 1)) - ; - else { - MYLOG(OPENSEARCH_DEBUG, " WSAStartup version=(%d,%d)\n", - LOBYTE(wsaData.wVersion), HIBYTE(wsaData.wVersion)); - goto cleanup; - } -#endif /* WIN32 */ - - rv = (EnvironmentClass *)malloc(sizeof(EnvironmentClass)); - if (NULL == rv) { - MYLOG(OPENSEARCH_ERROR, " malloc error\n"); - goto cleanup; - } - rv->errormsg = 0; - rv->errornumber = 0; - rv->flag = 0; - INIT_ENV_CS(rv); -cleanup: -#ifdef WIN32 - if (NULL == rv) { - WSACleanup(); - } -#endif /* WIN32 */ - - return rv; -} - -char EN_Destructor(EnvironmentClass *self) { - int lf, nullcnt; - char rv = 1; - - MYLOG(OPENSEARCH_TRACE, "entering self=%p\n", self); - if (!self) - return 0; - - /* - * the error messages are static strings distributed throughout the - * source--they should not be freed - */ - - /* Free any connections belonging to this environment */ - ENTER_CONNS_CS; - for (lf = 0, nullcnt = 0; lf < conns_count; lf++) { - if (NULL == conns[lf]) - nullcnt++; - else if (conns[lf]->henv == self) { - if (CC_Destructor(conns[lf])) - conns[lf] = NULL; - else - rv = 0; - nullcnt++; - } - } - if (conns && nullcnt >= conns_count) { - MYLOG(OPENSEARCH_DEBUG, "clearing conns count=%d\n", conns_count); - free(conns); - conns = NULL; - conns_count = 0; - } - LEAVE_CONNS_CS; - DELETE_ENV_CS(self); - free(self); - -#ifdef WIN32 - WSACleanup(); -#endif - MYLOG(OPENSEARCH_TRACE, "leaving rv=%d\n", rv); -#ifdef _MEMORY_DEBUG_ - debug_memory_check(); -#endif /* _MEMORY_DEBUG_ */ - return rv; -} - -char EN_get_error(EnvironmentClass *self, int *number, char **message) { - if (self && self->errormsg && self->errornumber) { - *message = self->errormsg; - *number = self->errornumber; - self->errormsg = 0; - self->errornumber = 0; - return 1; - } else - return 0; -} - -#define INIT_CONN_COUNT 128 - -char EN_add_connection(EnvironmentClass *self, ConnectionClass *conn) { - int i, alloc; - ConnectionClass **newa; - char ret = FALSE; - - MYLOG(OPENSEARCH_TRACE, "entering self = %p, conn = %p\n", self, conn); - - ENTER_CONNS_CS; - for (i = 0; i < conns_count; i++) { - if (!conns[i]) { - conn->henv = self; - conns[i] = conn; - ret = TRUE; - MYLOG( - 0, - " added at i=%d, conn->henv = %p, conns[i]->henv = %p\n", - i, conn->henv, conns[i]->henv); - goto cleanup; - } - } - if (conns_count > 0) - alloc = 2 * conns_count; - else - alloc = INIT_CONN_COUNT; - if (newa = (ConnectionClass **)realloc(conns, - alloc * sizeof(ConnectionClass *)), - NULL == newa) - goto cleanup; - conn->henv = self; - newa[conns_count] = conn; - conns = newa; - ret = TRUE; - MYLOG(OPENSEARCH_DEBUG, - " added at %d, conn->henv = %p, conns[%d]->henv = %p\n", - conns_count, conn->henv, conns_count, conns[conns_count]->henv); - for (i = conns_count + 1; i < alloc; i++) - conns[i] = NULL; - conns_count = alloc; -cleanup: - LEAVE_CONNS_CS; - return ret; -} - -char EN_remove_connection(EnvironmentClass *self, ConnectionClass *conn) { - UNUSED(self); - int i; - - for (i = 0; i < conns_count; i++) - if (conns[i] == conn && conns[i]->status != CONN_EXECUTING) { - ENTER_CONNS_CS; - conns[i] = NULL; - LEAVE_CONNS_CS; - return TRUE; - } - - return FALSE; -} - -void EN_log_error(const char *func, char *desc, EnvironmentClass *self) { - if (self) - MYLOG(OPENSEARCH_ERROR, - "ENVIRON ERROR: func=%s, desc='%s', errnum=%d, errmsg='%s'\n", - func, desc, self->errornumber, self->errormsg); - else - MYLOG(OPENSEARCH_ERROR, "INVALID ENVIRON HANDLE ERROR: func=%s, desc='%s'\n", - func, desc); -} diff --git a/sql-odbc/src/sqlodbc/environ.h b/sql-odbc/src/sqlodbc/environ.h deleted file mode 100644 index bcbb04b78a..0000000000 --- a/sql-odbc/src/sqlodbc/environ.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef __ENVIRON_H__ -#define __ENVIRON_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "opensearch_helper.h" -#include "opensearch_odbc.h" - -#define ENV_ALLOC_ERROR 1 - -/********** Environment Handle *************/ -struct EnvironmentClass_ { - char *errormsg; - int errornumber; - Int4 flag; - void *cs; -}; - -/* Environment prototypes */ -EnvironmentClass *EN_Constructor(void); -char EN_Destructor(EnvironmentClass *self); -char EN_get_error(EnvironmentClass *self, int *number, char **message); -char EN_add_connection(EnvironmentClass *self, ConnectionClass *conn); -char EN_remove_connection(EnvironmentClass *self, ConnectionClass *conn); -void EN_log_error(const char *func, char *desc, EnvironmentClass *self); - -#define EN_OV_ODBC2 1L -#define EN_CONN_POOLING (1L << 1) -#define EN_is_odbc2(env) ((env->flag & EN_OV_ODBC2) != 0) -#define EN_is_odbc3(env) (env && (env->flag & EN_OV_ODBC2) == 0) -#define EN_set_odbc2(env) (env->flag |= EN_OV_ODBC2) -#define EN_set_odbc3(env) (env->flag &= ~EN_OV_ODBC2) -#define EN_is_pooling(env) (env && (env->flag & EN_CONN_POOLING) != 0) -#define EN_set_pooling(env) (env->flag |= EN_CONN_POOLING) -#define EN_unset_pooling(env) (env->flag &= ~EN_CONN_POOLING) - -/* For Multi-thread */ -#define INIT_CONNS_CS XPlatformInitializeCriticalSection(&conns_cs) -#define ENTER_CONNS_CS XPlatformEnterCriticalSection(conns_cs) -#define LEAVE_CONNS_CS XPlatformLeaveCriticalSection(conns_cs) -#define DELETE_CONNS_CS XPlatformDeleteCriticalSection(&conns_cs) -#define INIT_ENV_CS(x) XPlatformInitializeCriticalSection(&((x)->cs)) -#define ENTER_ENV_CS(x) XPlatformEnterCriticalSection(((x)->cs)) -#define LEAVE_ENV_CS(x) XPlatformLeaveCriticalSection(((x)->cs)) -#define DELETE_ENV_CS(x) XPlatformDeleteCriticalSection(&((x)->cs)) -#define INIT_COMMON_CS XPlatformInitializeCriticalSection(&common_cs) -#define ENTER_COMMON_CS XPlatformEnterCriticalSection(common_cs) -#define LEAVE_COMMON_CS XPlatformLeaveCriticalSection(common_cs) -#define DELETE_COMMON_CS XPlatformDeleteCriticalSection(&common_cs) - -#ifdef __cplusplus -} -#endif -#endif /* __ENVIRON_H_ */ diff --git a/sql-odbc/src/sqlodbc/execute.c b/sql-odbc/src/sqlodbc/execute.c deleted file mode 100644 index f2f2cd24e3..0000000000 --- a/sql-odbc/src/sqlodbc/execute.c +++ /dev/null @@ -1,134 +0,0 @@ -#include -#include - -#include "opensearch_odbc.h" -#include "misc.h" - -#ifndef WIN32 -#include -#endif /* WIN32 */ - -#include "bind.h" -#include "convert.h" -#include "environ.h" -#include "opensearch_types.h" -#include "opensearch_apifunc.h" -#include "opensearch_connection.h" -#include "opensearch_statement.h" -#include "qresult.h" -#include "statement.h" - -RETCODE SQL_API OPENSEARCHAPI_Prepare(HSTMT hstmt, const SQLCHAR *stmt_str, - SQLINTEGER stmt_sz) { - if (hstmt == NULL) - return SQL_ERROR; - - // We know cursor is not open at this point - StatementClass *stmt = (StatementClass *)hstmt; - - // PrepareStatement deallocates memory if necessary - RETCODE ret = PrepareStatement(stmt, stmt_str, stmt_sz); - if (ret != SQL_SUCCESS) - return ret; - - // Execute the statement - ret = ExecuteStatement(stmt, FALSE); - if (ret == SQL_SUCCESS) - stmt->prepared = PREPARED; - - return ret; -} - -RETCODE SQL_API OPENSEARCHAPI_Execute(HSTMT hstmt) { - if (hstmt == NULL) - return SQL_ERROR; - - // We know cursor is not open at this point - StatementClass *stmt = (StatementClass *)hstmt; - RETCODE ret = SQL_ERROR; - switch (stmt->prepared) { - case PREPARED: - ret = AssignResult(stmt); - stmt->prepared = EXECUTED; - break; - case EXECUTED: - ret = RePrepareStatement(stmt); - if (ret != SQL_SUCCESS) - break; - ret = ExecuteStatement(stmt, TRUE); - if (ret != SQL_SUCCESS) - break; - stmt->prepared = EXECUTED; - break; - case NOT_PREPARED: - ret = SQL_ERROR; - break; - default: - break; - } - return ret; -} - -RETCODE SQL_API OPENSEARCHAPI_ExecDirect(HSTMT hstmt, const SQLCHAR *stmt_str, - SQLINTEGER stmt_sz, BOOL commit) { - if (hstmt == NULL) - return SQL_ERROR; - - // We know cursor is not open at this point - StatementClass *stmt = (StatementClass *)hstmt; - RETCODE ret = PrepareStatement(stmt, stmt_str, stmt_sz); - if (ret != SQL_SUCCESS) - return ret; - - // Execute statement - ret = ExecuteStatement(hstmt, commit); - if (ret != SQL_SUCCESS) - return ret; - stmt->prepared = NOT_PREPARED; - return ret; -} - -/* - * Returns the SQL string as modified by the driver. - * Currently, just copy the input string without modification - * observing buffer limits and truncation. - */ -RETCODE SQL_API OPENSEARCHAPI_NativeSql(HDBC hdbc, const SQLCHAR *szSqlStrIn, - SQLINTEGER cbSqlStrIn, SQLCHAR *szSqlStr, - SQLINTEGER cbSqlStrMax, SQLINTEGER *pcbSqlStr) { - CSTR func = "OPENSEARCHAPI_NativeSql"; - size_t len = 0; - char *ptr; - ConnectionClass *conn = (ConnectionClass *)hdbc; - RETCODE result; - - MYLOG(OPENSEARCH_TRACE, "entering...cbSqlStrIn=" FORMAT_INTEGER "\n", cbSqlStrIn); - - ptr = (cbSqlStrIn == 0) ? "" : make_string(szSqlStrIn, cbSqlStrIn, NULL, 0); - if (!ptr) { - CC_set_error(conn, CONN_NO_MEMORY_ERROR, - "No memory available to store native sql string", func); - return SQL_ERROR; - } - - result = SQL_SUCCESS; - len = strlen(ptr); - - if (szSqlStr) { - strncpy_null((char *)szSqlStr, ptr, cbSqlStrMax); - - if (len >= (size_t)cbSqlStrMax) { - result = SQL_SUCCESS_WITH_INFO; - CC_set_error(conn, CONN_TRUNCATED, - "The buffer was too small for the NativeSQL.", func); - } - } - - if (pcbSqlStr) - *pcbSqlStr = (SQLINTEGER)len; - - if (cbSqlStrIn) - free(ptr); - - return result; -} diff --git a/sql-odbc/src/sqlodbc/info.c b/sql-odbc/src/sqlodbc/info.c deleted file mode 100644 index c40f783a55..0000000000 --- a/sql-odbc/src/sqlodbc/info.c +++ /dev/null @@ -1,1897 +0,0 @@ -#include -#include - -#include "opensearch_odbc.h" -#include "unicode_support.h" - -#ifndef WIN32 -#include -#endif - -#include "bind.h" -#include "catfunc.h" -#include "dlg_specific.h" -#include "environ.h" -#include "opensearch_types.h" -#include "misc.h" -#include "multibyte.h" -#include "opensearch_apifunc.h" -#include "opensearch_connection.h" -#include "opensearch_info.h" -#include "qresult.h" -#include "statement.h" -#include "tuple.h" - -/* Trigger related stuff for SQLForeign Keys */ -#define TRIGGER_SHIFT 3 -#define TRIGGER_MASK 0x03 -#define TRIGGER_DELETE 0x01 -#define TRIGGER_UPDATE 0x02 - -RETCODE SQL_API OPENSEARCHAPI_GetInfo(HDBC hdbc, SQLUSMALLINT fInfoType, - PTR rgbInfoValue, SQLSMALLINT cbInfoValueMax, - SQLSMALLINT *pcbInfoValue) { - CSTR func = "OPENSEARCHAPI_GetInfo"; - ConnectionClass *conn = (ConnectionClass *)hdbc; - const char *p = NULL; - char tmp[MAX_INFO_STRING]; - SQLULEN len = 0, value = 0; - RETCODE ret = SQL_ERROR; - char odbcver[16]; - - MYLOG(OPENSEARCH_TRACE, "entering...fInfoType=%d\n", fInfoType); - - if (!conn) { - CC_log_error(func, NULL_STRING, NULL); - return SQL_INVALID_HANDLE; - } - - switch (fInfoType) { - case SQL_ACCESSIBLE_PROCEDURES: /* ODBC 1.0 */ - p = "N"; - break; - - case SQL_ACCESSIBLE_TABLES: /* ODBC 1.0 */ - p = "N"; - break; - - case SQL_ACTIVE_CONNECTIONS: /* ODBC 1.0 */ - len = 2; - value = 0; - break; - - case SQL_ACTIVE_STATEMENTS: /* ODBC 1.0 */ - len = 2; - value = 0; - break; - - case SQL_ALTER_TABLE: /* ODBC 2.0 */ - len = 4; - value = SQL_AT_ADD_COLUMN | SQL_AT_DROP_COLUMN - | SQL_AT_ADD_COLUMN_SINGLE | SQL_AT_ADD_CONSTRAINT - | SQL_AT_ADD_TABLE_CONSTRAINT - | SQL_AT_CONSTRAINT_INITIALLY_DEFERRED - | SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE - | SQL_AT_CONSTRAINT_DEFERRABLE - | SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT - | SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE - | SQL_AT_DROP_COLUMN_RESTRICT | SQL_AT_DROP_COLUMN_CASCADE; - break; - - case SQL_BOOKMARK_PERSISTENCE: /* ODBC 2.0 */ - /* very simple bookmark support */ - len = 4; - value = SQL_BP_SCROLL | SQL_BP_DELETE | SQL_BP_UPDATE - | SQL_BP_TRANSACTION; - break; - - case SQL_COLUMN_ALIAS: /* ODBC 2.0 */ - p = "Y"; - break; - - case SQL_CONCAT_NULL_BEHAVIOR: /* ODBC 1.0 */ - len = 2; - value = SQL_CB_NULL; - break; - - case SQL_CONVERT_GUID: - case SQL_CONVERT_SMALLINT: - case SQL_CONVERT_TINYINT: - case SQL_CONVERT_VARCHAR: - case SQL_CONVERT_DECIMAL: - case SQL_CONVERT_FLOAT: - case SQL_CONVERT_NUMERIC: - case SQL_CONVERT_DATE: - case SQL_CONVERT_TIME: - case SQL_CONVERT_BINARY: - case SQL_CONVERT_LONGVARBINARY: - case SQL_CONVERT_VARBINARY: /* ODBC 1.0 */ - case SQL_CONVERT_CHAR: - case SQL_CONVERT_LONGVARCHAR: -#ifdef UNICODE_SUPPORT - case SQL_CONVERT_WCHAR: - case SQL_CONVERT_WLONGVARCHAR: -#endif /* UNICODE_SUPPORT */ - len = sizeof(SQLUINTEGER); - value = 0; /* CONVERT is unavailable */ - break; - - case SQL_CONVERT_INTEGER: /* ODBC 1.0 */ - len = sizeof(SQLUINTEGER); - value = SQL_CVT_INTEGER | SQL_CVT_BIT | SQL_CVT_WVARCHAR | SQL_CVT_DOUBLE | SQL_CVT_BIGINT | SQL_CVT_REAL; - break; - - case SQL_CONVERT_BIT: /* ODBC 1.0 */ - len = sizeof(SQLUINTEGER); - value = SQL_CVT_BIT | SQL_CVT_INTEGER | SQL_CVT_WVARCHAR | SQL_CVT_DOUBLE | SQL_CVT_BIGINT | SQL_CVT_REAL; - break; - - case SQL_CONVERT_WVARCHAR: /* ODBC 1.0 */ - len = sizeof(SQLUINTEGER); - value = SQL_CVT_WVARCHAR | SQL_CVT_INTEGER | SQL_CVT_DOUBLE | SQL_CVT_BIGINT | SQL_CVT_REAL; - break; - - case SQL_CONVERT_DOUBLE: /* ODBC 1.0 */ - len = sizeof(SQLUINTEGER); - value = SQL_CVT_DOUBLE | SQL_CVT_INTEGER | SQL_CVT_BIT | SQL_CVT_WVARCHAR | SQL_CVT_BIGINT | SQL_CVT_REAL; - break; - - case SQL_CONVERT_BIGINT: /* ODBC 1.0 */ - len = sizeof(SQLUINTEGER); - value = SQL_CVT_BIGINT | SQL_CVT_INTEGER | SQL_CVT_BIT | SQL_CVT_WVARCHAR | SQL_CVT_DOUBLE | SQL_CVT_REAL; - break; - - case SQL_CONVERT_REAL: /* ODBC 1.0 */ - len = sizeof(SQLUINTEGER); - value = SQL_CVT_REAL | SQL_CVT_INTEGER | SQL_CVT_BIT | SQL_CVT_WVARCHAR | SQL_CVT_DOUBLE | SQL_CVT_BIGINT; - break; - - case SQL_CONVERT_TIMESTAMP: /* ODBC 1.0 */ - len = sizeof(SQLUINTEGER); - value = SQL_CVT_TIMESTAMP | SQL_CVT_WVARCHAR; - break; - - case SQL_CONVERT_FUNCTIONS: /* ODBC 1.0 */ - len = sizeof(SQLUINTEGER); - value = SQL_FN_CVT_CAST; - MYLOG(OPENSEARCH_DEBUG, "CONVERT_FUNCTIONS=" FORMAT_ULEN "\n", value); - break; - - case SQL_CORRELATION_NAME: /* ODBC 1.0 */ - - /* - * Saying no correlation name makes Query not work right. - * value = SQL_CN_NONE; - */ - len = 2; - value = SQL_CN_ANY; - break; - - case SQL_CURSOR_COMMIT_BEHAVIOR: /* ODBC 1.0 */ - len = 2; - value = SQL_CB_CLOSE; - break; - - case SQL_CURSOR_ROLLBACK_BEHAVIOR: /* ODBC 1.0 */ - len = 2; - value = SQL_CB_PRESERVE; - break; - - case SQL_DATA_SOURCE_NAME: /* ODBC 1.0 */ - p = CC_get_DSN(conn); - break; - - case SQL_DATA_SOURCE_READ_ONLY: /* ODBC 1.0 */ - p = "Y"; - break; - - case SQL_DATABASE_NAME: /* Support for old ODBC 1.0 Apps */ - - /* - * Returning the database name causes problems in MS Query. It - * generates query like: "SELECT DISTINCT a FROM byronnbad3 - * bad3" - * - * p = CC_get_database(conn); - */ - p = CurrCatString(conn); - break; - - case SQL_DBMS_NAME: /* ODBC 1.0 */ - p = "OpenSearch"; - break; - - case SQL_DBMS_VER: /* ODBC 1.0 */ - STRCPY_FIXED(tmp, conn->opensearch_version); - p = tmp; - break; - - case SQL_DEFAULT_TXN_ISOLATION: /* ODBC 1.0 */ - len = 4; - if (0 == conn->default_isolation) - conn->isolation = CC_get_isolation(conn); - value = conn->default_isolation; - break; - - case SQL_DRIVER_NAME: /* ODBC 1.0 */ - p = DRIVER_FILE_NAME; - break; - - case SQL_DRIVER_ODBC_VER: - SPRINTF_FIXED(odbcver, "%02x.%02x", ODBCVER / 256, ODBCVER % 256); - /* p = DRIVER_ODBC_VER; */ - p = odbcver; - break; - - case SQL_DRIVER_VER: /* ODBC 1.0 */ - p = OPENSEARCHDRIVERVERSION; - break; - - case SQL_EXPRESSIONS_IN_ORDERBY: /* ODBC 1.0 */ - p = "Y"; - break; - - case SQL_FETCH_DIRECTION: /* ODBC 1.0 */ - len = 4; - value = (SQL_FD_FETCH_NEXT | SQL_FD_FETCH_FIRST | SQL_FD_FETCH_LAST - | SQL_FD_FETCH_PRIOR | SQL_FD_FETCH_ABSOLUTE - | SQL_FD_FETCH_RELATIVE | SQL_FD_FETCH_BOOKMARK); - break; - - case SQL_FILE_USAGE: /* ODBC 2.0 */ - len = 2; - value = SQL_FILE_NOT_SUPPORTED; - break; - - case SQL_GETDATA_EXTENSIONS: /* ODBC 2.0 */ - len = 4; - value = (SQL_GD_ANY_COLUMN | SQL_GD_ANY_ORDER | SQL_GD_BOUND - | SQL_GD_BLOCK); - break; - - case SQL_GROUP_BY: /* ODBC 2.0 */ - len = 2; - value = SQL_GB_GROUP_BY_CONTAINS_SELECT; - break; - - case SQL_IDENTIFIER_CASE: /* ODBC 1.0 */ - - /* - * are identifiers case-sensitive (yes, but only when quoted. - * If not quoted, they default to lowercase) - */ - len = 2; - value = SQL_IC_LOWER; - break; - - case SQL_IDENTIFIER_QUOTE_CHAR: /* ODBC 1.0 */ - /* the character used to quote "identifiers" */ - p = "`"; - break; - - case SQL_KEYWORDS: /* ODBC 2.0 */ - p = NULL_STRING; - break; - - case SQL_LIKE_ESCAPE_CLAUSE: /* ODBC 2.0 */ - p = "Y"; - break; - - case SQL_LOCK_TYPES: /* ODBC 2.0 */ - len = 4; - value = SQL_LCK_NO_CHANGE; - break; - - case SQL_MAX_BINARY_LITERAL_LEN: /* ODBC 2.0 */ - len = 4; - value = 0; - break; - - case SQL_MAX_CHAR_LITERAL_LEN: /* ODBC 2.0 */ - len = 4; - value = 0; - break; - - case SQL_MAX_COLUMN_NAME_LEN: /* ODBC 1.0 */ - len = 2; - value = CC_get_max_idlen(conn); - if (0 == value) - value = NAMEDATALEN_V73 - 1; - break; - - case SQL_MAX_COLUMNS_IN_GROUP_BY: /* ODBC 2.0 */ - len = 2; - value = 0; - break; - - case SQL_MAX_COLUMNS_IN_INDEX: /* ODBC 2.0 */ - len = 2; - value = 0; - break; - - case SQL_MAX_COLUMNS_IN_ORDER_BY: /* ODBC 2.0 */ - len = 2; - value = 0; - break; - - case SQL_MAX_COLUMNS_IN_SELECT: /* ODBC 2.0 */ - len = 2; - value = 0; - break; - - case SQL_MAX_COLUMNS_IN_TABLE: /* ODBC 2.0 */ - len = 2; - value = 0; - break; - - case SQL_MAX_CURSOR_NAME_LEN: /* ODBC 1.0 */ - len = 2; - value = MAX_CURSOR_LEN; - break; - - case SQL_MAX_INDEX_SIZE: /* ODBC 2.0 */ - len = 4; - value = 0; - break; - - case SQL_MAX_OWNER_NAME_LEN: /* ODBC 1.0 */ - len = 2; - value = 0; - break; - - case SQL_MAX_PROCEDURE_NAME_LEN: /* ODBC 1.0 */ - len = 2; - value = 0; - break; - - case SQL_MAX_QUALIFIER_NAME_LEN: /* ODBC 1.0 */ - len = 2; - value = 0; - break; - - case SQL_MAX_ROW_SIZE: /* ODBC 2.0 */ - len = 4; - /* No limit with tuptoaster in 7.1+ */ - value = 0; - break; - - case SQL_MAX_STATEMENT_LEN: /* ODBC 2.0 */ - len = 4; - value = 0; - break; - - case SQL_MAX_TABLE_NAME_LEN: /* ODBC 1.0 */ - len = 2; - if (OPENSEARCH_VERSION_GT(conn, 7.4)) - value = CC_get_max_idlen(conn); -#ifdef MAX_TABLE_LEN - else - value = MAX_TABLE_LEN; -#endif /* MAX_TABLE_LEN */ - if (0 == value) - value = NAMEDATALEN_V73 - 1; - break; - - case SQL_MAX_TABLES_IN_SELECT: /* ODBC 2.0 */ - len = 2; - value = 0; - break; - - case SQL_MAX_USER_NAME_LEN: - len = 2; - value = 0; - break; - - case SQL_MULT_RESULT_SETS: /* ODBC 1.0 */ - /* Don't support multiple result sets but say yes anyway? */ - p = "Y"; - break; - - case SQL_MULTIPLE_ACTIVE_TXN: /* ODBC 1.0 */ - p = "Y"; - break; - - case SQL_NEED_LONG_DATA_LEN: /* ODBC 2.0 */ - - /* - * Don't need the length, SQLPutData can handle any size and - * multiple calls - */ - p = "N"; - break; - - case SQL_NON_NULLABLE_COLUMNS: /* ODBC 1.0 */ - len = 2; - value = SQL_NNC_NON_NULL; - break; - - case SQL_NULL_COLLATION: /* ODBC 2.0 */ - /* where are nulls sorted? */ - len = 2; - value = SQL_NC_HIGH; - break; - - case SQL_NUMERIC_FUNCTIONS: /* ODBC 1.0 */ - len = 4; - value = SQL_FN_NUM_ABS | SQL_FN_NUM_ATAN | SQL_FN_NUM_ATAN2 - | SQL_FN_NUM_COS | SQL_FN_NUM_COT | SQL_FN_NUM_DEGREES - | SQL_FN_NUM_FLOOR | SQL_FN_NUM_LOG | SQL_FN_NUM_LOG10 - | SQL_FN_NUM_PI | SQL_FN_NUM_POWER | SQL_FN_NUM_RADIANS - | SQL_FN_NUM_ROUND | SQL_FN_NUM_SIGN | SQL_FN_NUM_SIN - | SQL_FN_NUM_SQRT | SQL_FN_NUM_TAN; - break; - - case SQL_ODBC_API_CONFORMANCE: /* ODBC 1.0 */ - len = 2; - value = SQL_OAC_LEVEL1; - break; - - case SQL_ODBC_SAG_CLI_CONFORMANCE: /* ODBC 1.0 */ - len = 2; - value = SQL_OSCC_NOT_COMPLIANT; - break; - - case SQL_ODBC_SQL_CONFORMANCE: /* ODBC 1.0 */ - len = 2; - value = SQL_OSC_CORE; - break; - - case SQL_ODBC_SQL_OPT_IEF: /* ODBC 1.0 */ - p = "N"; - break; - - case SQL_OJ_CAPABILITIES: /* ODBC 2.01 */ - len = 4; - value = SQL_OJ_LEFT | SQL_OJ_RIGHT | SQL_OJ_NOT_ORDERED - | SQL_OJ_ALL_COMPARISON_OPS; - break; - - case SQL_ORDER_BY_COLUMNS_IN_SELECT: /* ODBC 2.0 */ - p = "Y"; - break; - - case SQL_OUTER_JOINS: /* ODBC 1.0 */ - p = "Y"; - break; - - case SQL_OWNER_TERM: /* ODBC 1.0 */ - p = ""; - break; - - case SQL_OWNER_USAGE: /* ODBC 2.0 */ - // OpenSearch does not support schemas. - // This will disable showing an empty schema box in Tableau. - len = 4; - value = 0; - break; - - case SQL_POS_OPERATIONS: /* ODBC 2.0 */ - len = 4; - value = (SQL_POS_POSITION | SQL_POS_REFRESH); - break; - - case SQL_POSITIONED_STATEMENTS: /* ODBC 2.0 */ - len = 4; - value = 0; - break; - - case SQL_PROCEDURE_TERM: /* ODBC 1.0 */ - p = "procedure"; - break; - - case SQL_PROCEDURES: /* ODBC 1.0 */ - p = "Y"; - break; - - case SQL_QUALIFIER_LOCATION: /* ODBC 2.0 */ - len = 2; - value = 0; - break; - - case SQL_QUALIFIER_NAME_SEPARATOR: /* ODBC 1.0 */ - p = ""; - break; - - case SQL_QUALIFIER_TERM: /* ODBC 1.0 */ - p = ""; - break; - - case SQL_QUALIFIER_USAGE: /* ODBC 2.0 */ - len = 4; - value = 0; - break; - - case SQL_QUOTED_IDENTIFIER_CASE: /* ODBC 2.0 */ - /* are "quoted" identifiers case-sensitive? YES! */ - len = 2; - value = SQL_IC_SENSITIVE; - break; - - case SQL_ROW_UPDATES: /* ODBC 1.0 */ - - /* - * Driver doesn't support keyset-driven or mixed cursors, so - * not much point in saying row updates are supported - */ - p = "N"; - break; - - case SQL_SCROLL_CONCURRENCY: /* ODBC 1.0 */ - len = 4; - value = SQL_SCCO_READ_ONLY; - break; - - case SQL_SCROLL_OPTIONS: /* ODBC 1.0 */ - len = 4; - value = SQL_SO_FORWARD_ONLY | SQL_SO_STATIC; - break; - - case SQL_SEARCH_PATTERN_ESCAPE: /* ODBC 1.0 */ - p = ""; - break; - - case SQL_SERVER_NAME: /* ODBC 1.0 */ - p = CC_get_server(conn); - break; - - case SQL_SPECIAL_CHARACTERS: /* ODBC 2.0 */ - p = "_"; - break; - - case SQL_STATIC_SENSITIVITY: /* ODBC 2.0 */ - len = 4; - value = 0; - break; - - case SQL_STRING_FUNCTIONS: /* ODBC 1.0 */ - len = 4; - value = SQL_FN_STR_ASCII | SQL_FN_STR_LENGTH | SQL_FN_STR_LTRIM - | SQL_FN_STR_REPLACE | SQL_FN_STR_RTRIM - | SQL_FN_STR_SUBSTRING; - break; - - case SQL_SUBQUERIES: /* ODBC 2.0 */ - len = 4; - value = (SQL_SQ_QUANTIFIED | SQL_SQ_IN | SQL_SQ_EXISTS - | SQL_SQ_COMPARISON); - break; - - case SQL_SYSTEM_FUNCTIONS: /* ODBC 1.0 */ - len = 4; - value = SQL_FN_SYS_IFNULL; - break; - - case SQL_TABLE_TERM: /* ODBC 1.0 */ - p = "table"; - break; - - case SQL_TIMEDATE_ADD_INTERVALS: /* ODBC 2.0 */ - len = 4; - value = 0; - break; - - case SQL_TIMEDATE_DIFF_INTERVALS: /* ODBC 2.0 */ - len = 4; - value = 0; - break; - - case SQL_TIMEDATE_FUNCTIONS: /* ODBC 1.0 */ - len = 4; - value = SQL_FN_TD_CURDATE | SQL_FN_TD_DAYOFMONTH | SQL_FN_TD_MONTH - | SQL_FN_TD_MONTHNAME | SQL_FN_TD_NOW | SQL_FN_TD_YEAR; - break; - - case SQL_TXN_CAPABLE: /* ODBC 1.0 */ - /* - * OpenSearch does not support transactions. - */ - len = 2; - value = SQL_TC_NONE; - break; - - case SQL_TXN_ISOLATION_OPTION: /* ODBC 1.0 */ - len = 4; - value = SQL_TXN_READ_UNCOMMITTED | SQL_TXN_READ_COMMITTED - | SQL_TXN_REPEATABLE_READ | SQL_TXN_SERIALIZABLE; - break; - - case SQL_UNION: /* ODBC 2.0 */ - len = 4; - value = (SQL_U_UNION | SQL_U_UNION_ALL); - break; - - case SQL_USER_NAME: /* ODBC 1.0 */ - p = CC_get_username(conn); - break; - - /* Keys for ODBC 3.0 */ - case SQL_DYNAMIC_CURSOR_ATTRIBUTES1: - len = 4; - value = 0; - break; - case SQL_DYNAMIC_CURSOR_ATTRIBUTES2: - len = 4; - value = 0; - break; - case SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1: - len = 4; - value = SQL_CA1_NEXT; /* others aren't allowed in ODBC spec */ - break; - case SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2: - len = 4; - value = SQL_CA2_READ_ONLY_CONCURRENCY | SQL_CA2_CRC_EXACT; - break; - case SQL_KEYSET_CURSOR_ATTRIBUTES1: - len = 4; - value = 0; - break; - case SQL_KEYSET_CURSOR_ATTRIBUTES2: - len = 4; - value = 0; - break; - - case SQL_STATIC_CURSOR_ATTRIBUTES1: - len = 4; - value = SQL_CA1_NEXT | SQL_CA1_ABSOLUTE | SQL_CA1_RELATIVE - | SQL_CA1_BOOKMARK | SQL_CA1_LOCK_NO_CHANGE - | SQL_CA1_POS_POSITION | SQL_CA1_POS_REFRESH; - break; - case SQL_STATIC_CURSOR_ATTRIBUTES2: - len = 4; - value = SQL_CA2_READ_ONLY_CONCURRENCY | SQL_CA2_CRC_EXACT; - break; - - case SQL_ODBC_INTERFACE_CONFORMANCE: - len = 4; - value = SQL_OIC_CORE; - break; - case SQL_ACTIVE_ENVIRONMENTS: - len = 2; - value = 0; - break; - case SQL_AGGREGATE_FUNCTIONS: - len = 4; - value = SQL_AF_ALL; - break; - case SQL_ALTER_DOMAIN: - len = 4; - value = 0; - break; - case SQL_ASYNC_MODE: - len = 4; - value = SQL_AM_NONE; - break; - case SQL_BATCH_ROW_COUNT: - len = 4; - value = SQL_BRC_EXPLICIT; - break; - case SQL_BATCH_SUPPORT: - len = 4; - value = SQL_BS_SELECT_EXPLICIT | SQL_BS_ROW_COUNT_EXPLICIT; - break; - case SQL_CATALOG_NAME: - p = "N"; - break; - case SQL_COLLATION_SEQ: - p = ""; - break; - case SQL_CREATE_ASSERTION: - len = 4; - value = 0; - break; - case SQL_CREATE_CHARACTER_SET: - len = 4; - value = 0; - break; - case SQL_CREATE_COLLATION: - len = 4; - value = 0; - break; - case SQL_CREATE_DOMAIN: - len = 4; - value = 0; - break; - case SQL_CREATE_SCHEMA: - len = 4; - value = SQL_CS_CREATE_SCHEMA | SQL_CS_AUTHORIZATION; - break; - case SQL_CREATE_TABLE: - len = 4; - value = SQL_CT_CREATE_TABLE | SQL_CT_COLUMN_CONSTRAINT - | SQL_CT_COLUMN_DEFAULT | SQL_CT_GLOBAL_TEMPORARY - | SQL_CT_TABLE_CONSTRAINT - | SQL_CT_CONSTRAINT_NAME_DEFINITION - | SQL_CT_CONSTRAINT_INITIALLY_DEFERRED - | SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE - | SQL_CT_CONSTRAINT_DEFERRABLE; - break; - case SQL_CREATE_TRANSLATION: - len = 4; - value = 0; - break; - case SQL_CREATE_VIEW: - len = 4; - value = SQL_CV_CREATE_VIEW; - break; - case SQL_DDL_INDEX: - len = 4; - value = SQL_DI_CREATE_INDEX | SQL_DI_DROP_INDEX; - break; - case SQL_DESCRIBE_PARAMETER: - p = "N"; - break; - case SQL_DROP_ASSERTION: - len = 4; - value = 0; - break; - case SQL_DROP_CHARACTER_SET: - len = 4; - value = 0; - break; - case SQL_DROP_COLLATION: - len = 4; - value = 0; - break; - case SQL_DROP_DOMAIN: - len = 4; - value = 0; - break; - case SQL_DROP_SCHEMA: - len = 4; - value = SQL_DS_DROP_SCHEMA | SQL_DS_RESTRICT | SQL_DS_CASCADE; - break; - case SQL_DROP_TABLE: - len = 4; - value = SQL_DT_DROP_TABLE; - value |= (SQL_DT_RESTRICT | SQL_DT_CASCADE); - break; - case SQL_DROP_TRANSLATION: - len = 4; - value = 0; - break; - case SQL_DROP_VIEW: - len = 4; - value = SQL_DV_DROP_VIEW; - value |= (SQL_DV_RESTRICT | SQL_DV_CASCADE); - break; - case SQL_INDEX_KEYWORDS: - len = 4; - value = SQL_IK_NONE; - break; - case SQL_INFO_SCHEMA_VIEWS: - len = 4; - value = 0; - break; - case SQL_INSERT_STATEMENT: - len = 4; - value = SQL_IS_INSERT_LITERALS | SQL_IS_INSERT_SEARCHED - | SQL_IS_SELECT_INTO; - break; - case SQL_MAX_IDENTIFIER_LEN: - len = 2; - value = CC_get_max_idlen(conn); - if (0 == value) - value = NAMEDATALEN_V73 - 1; - break; - case SQL_MAX_ROW_SIZE_INCLUDES_LONG: - p = "Y"; - break; - case SQL_PARAM_ARRAY_ROW_COUNTS: - len = 4; - value = SQL_PARC_BATCH; - break; - case SQL_PARAM_ARRAY_SELECTS: - len = 4; - value = SQL_PAS_BATCH; - break; - case SQL_SQL_CONFORMANCE: - // SQL plugin currently does not support this level, - // but Tableau requires at least Entry level reported for retrieving - // row data - len = 4; - value = SQL_SC_SQL92_ENTRY; - break; - case SQL_SQL92_DATETIME_FUNCTIONS: - len = 4; - value = 0; - break; - case SQL_SQL92_FOREIGN_KEY_DELETE_RULE: - len = 4; - value = SQL_SFKD_CASCADE | SQL_SFKD_NO_ACTION | SQL_SFKD_SET_DEFAULT - | SQL_SFKD_SET_NULL; - break; - case SQL_SQL92_FOREIGN_KEY_UPDATE_RULE: - len = 4; - value = SQL_SFKU_CASCADE | SQL_SFKU_NO_ACTION | SQL_SFKU_SET_DEFAULT - | SQL_SFKU_SET_NULL; - break; - case SQL_SQL92_GRANT: - len = 4; - value = SQL_SG_DELETE_TABLE | SQL_SG_INSERT_TABLE - | SQL_SG_REFERENCES_TABLE | SQL_SG_SELECT_TABLE - | SQL_SG_UPDATE_TABLE; - break; - case SQL_SQL92_NUMERIC_VALUE_FUNCTIONS: - len = 4; - value = 0; - break; - case SQL_SQL92_PREDICATES: - len = 4; - value = SQL_SP_BETWEEN | SQL_SP_COMPARISON | SQL_SP_IN - | SQL_SP_ISNULL | SQL_SP_LIKE; - break; - case SQL_SQL92_RELATIONAL_JOIN_OPERATORS: - len = 4; - value = SQL_SRJO_CROSS_JOIN | SQL_SRJO_INNER_JOIN - | SQL_SRJO_LEFT_OUTER_JOIN | SQL_SRJO_RIGHT_OUTER_JOIN; - break; - case SQL_SQL92_REVOKE: - len = 4; - value = SQL_SR_DELETE_TABLE | SQL_SR_INSERT_TABLE - | SQL_SR_REFERENCES_TABLE | SQL_SR_SELECT_TABLE - | SQL_SR_UPDATE_TABLE; - break; - case SQL_SQL92_ROW_VALUE_CONSTRUCTOR: - len = 4; - value = SQL_SRVC_VALUE_EXPRESSION | SQL_SRVC_NULL; - break; - case SQL_SQL92_STRING_FUNCTIONS: - len = 4; - value = SQL_SSF_LOWER | SQL_SSF_UPPER; - break; - case SQL_SQL92_VALUE_EXPRESSIONS: - len = 4; - value = SQL_SVE_CASE | SQL_SVE_CAST; - break; -#ifdef SQL_DTC_TRANSACTION_COST - case SQL_DTC_TRANSACTION_COST: -#else - case 1750: -#endif - len = 4; - break; - case SQL_DATETIME_LITERALS: - case SQL_DRIVER_HDESC: - case SQL_MAX_ASYNC_CONCURRENT_STATEMENTS: - case SQL_STANDARD_CLI_CONFORMANCE: - case SQL_CONVERT_INTERVAL_DAY_TIME: - len = 4; - value = 0; - break; - case SQL_DM_VER: - case SQL_XOPEN_CLI_YEAR: - len = 0; - value = 0; - break; - - default: - /* unrecognized key */ - CC_set_error(conn, CONN_NOT_IMPLEMENTED_ERROR, - "Unrecognized key passed to OPENSEARCHAPI_GetInfo.", NULL); - goto cleanup; - } - - ret = SQL_SUCCESS; - - MYLOG(OPENSEARCH_DEBUG, "p='%s', len=" FORMAT_ULEN ", value=" FORMAT_ULEN ", cbMax=%d\n", - p ? p : "", len, value, cbInfoValueMax); - - /* - * NOTE, that if rgbInfoValue is NULL, then no warnings or errors - * should result and just pcbInfoValue is returned, which indicates - * what length would be required if a real buffer had been passed in. - */ - if (p) { - /* char/binary data */ - len = strlen(p); - - if (rgbInfoValue) { -#ifdef UNICODE_SUPPORT - if (CC_is_in_unicode_driver(conn)) { - len = utf8_to_ucs2(p, len, (SQLWCHAR *)rgbInfoValue, - cbInfoValueMax / WCLEN); - len *= WCLEN; - } else -#endif /* UNICODE_SUPPORT */ - strncpy_null((char *)rgbInfoValue, p, (size_t)cbInfoValueMax); - - if (len >= (SQLULEN)cbInfoValueMax) { - ret = SQL_SUCCESS_WITH_INFO; - CC_set_error(conn, CONN_TRUNCATED, - "The buffer was too small for the InfoValue.", - func); - } - } -#ifdef UNICODE_SUPPORT - else if (CC_is_in_unicode_driver(conn)) - len *= WCLEN; -#endif /* UNICODE_SUPPORT */ - } else { - /* numeric data */ - if (rgbInfoValue) { - if (len == sizeof(SQLSMALLINT)) - *((SQLUSMALLINT *)rgbInfoValue) = (SQLUSMALLINT)value; - else if (len == sizeof(SQLINTEGER)) - *((SQLUINTEGER *)rgbInfoValue) = (SQLUINTEGER)value; - } - } - - if (pcbInfoValue) - *pcbInfoValue = (SQLSMALLINT)len; -cleanup: - - return ret; -} - -/* - * macros for opensearchtype_xxxx() calls which have OPENSEARCH_ATP_UNSET parameters - */ -#define OPENSEARCHTYPE_COLUMN_SIZE(conn, openSearchType) \ - opensearchtype_attr_column_size(conn, openSearchType, OPENSEARCH_ATP_UNSET, \ - OPENSEARCH_ADT_UNSET, OPENSEARCH_UNKNOWNS_UNSET) -#define OPENSEARCHTYPE_TO_CONCISE_TYPE(conn, openSearchType) \ - opensearchtype_attr_to_concise_type(conn, openSearchType, OPENSEARCH_ATP_UNSET, \ - OPENSEARCH_ADT_UNSET, \ - OPENSEARCH_UNKNOWNS_UNSET) -#define OPENSEARCHTYPE_TO_SQLDESCTYPE(conn, openSearchType) \ - opensearchtype_attr_to_sqldesctype(conn, openSearchType, OPENSEARCH_ATP_UNSET, \ - OPENSEARCH_ADT_UNSET, \ - OPENSEARCH_UNKNOWNS_UNSET) -#define OPENSEARCHTYPE_BUFFER_LENGTH(conn, openSearchType) \ - opensearchtype_attr_buffer_length(conn, openSearchType, OPENSEARCH_ATP_UNSET, \ - OPENSEARCH_ADT_UNSET, OPENSEARCH_UNKNOWNS_UNSET) -#define OPENSEARCHTYPE_DECIMAL_DIGITS(conn, openSearchType) \ - opensearchtype_attr_decimal_digits(conn, openSearchType, OPENSEARCH_ATP_UNSET, \ - OPENSEARCH_ADT_UNSET, \ - OPENSEARCH_UNKNOWNS_UNSET) -#define OPENSEARCHTYPE_TRANSFER_OCTET_LENGTH(conn, openSearchType) \ - opensearchtype_attr_transfer_octet_length(conn, openSearchType, OPENSEARCH_ATP_UNSET, \ - OPENSEARCH_UNKNOWNS_UNSET) -#define OPENSEARCHTYPE_TO_NAME(conn, openSearchType, auto_increment) \ - opensearchtype_attr_to_name(conn, openSearchType, OPENSEARCH_ATP_UNSET, auto_increment) - -RETCODE SQL_API OPENSEARCHAPI_GetFunctions(HDBC hdbc, SQLUSMALLINT fFunction, - SQLUSMALLINT *pfExists) { - UNUSED(hdbc); - MYLOG(OPENSEARCH_TRACE, "entering...%u\n", fFunction); - - if (fFunction == SQL_API_ALL_FUNCTIONS) { - memset(pfExists, 0, sizeof(pfExists[0]) * 100); - - /* ODBC core functions */ - pfExists[SQL_API_SQLALLOCCONNECT] = TRUE; - pfExists[SQL_API_SQLALLOCENV] = TRUE; - pfExists[SQL_API_SQLALLOCSTMT] = TRUE; - pfExists[SQL_API_SQLBINDCOL] = TRUE; - pfExists[SQL_API_SQLCANCEL] = TRUE; - pfExists[SQL_API_SQLCOLATTRIBUTES] = TRUE; - pfExists[SQL_API_SQLCONNECT] = TRUE; - pfExists[SQL_API_SQLDESCRIBECOL] = TRUE; /* partial */ - pfExists[SQL_API_SQLDISCONNECT] = TRUE; - pfExists[SQL_API_SQLERROR] = TRUE; - pfExists[SQL_API_SQLEXECDIRECT] = TRUE; - pfExists[SQL_API_SQLEXECUTE] = TRUE; - pfExists[SQL_API_SQLFETCH] = TRUE; - pfExists[SQL_API_SQLFREECONNECT] = TRUE; - pfExists[SQL_API_SQLFREEENV] = TRUE; - pfExists[SQL_API_SQLFREESTMT] = TRUE; - pfExists[SQL_API_SQLGETCURSORNAME] = TRUE; - pfExists[SQL_API_SQLNUMRESULTCOLS] = TRUE; - pfExists[SQL_API_SQLPREPARE] = TRUE; /* complete? */ - pfExists[SQL_API_SQLROWCOUNT] = TRUE; - pfExists[SQL_API_SQLSETCURSORNAME] = TRUE; - pfExists[SQL_API_SQLSETPARAM] = FALSE; /* odbc 1.0 */ - pfExists[SQL_API_SQLTRANSACT] = TRUE; - - /* ODBC level 1 functions */ - pfExists[SQL_API_SQLBINDPARAMETER] = TRUE; - pfExists[SQL_API_SQLCOLUMNS] = TRUE; - pfExists[SQL_API_SQLDRIVERCONNECT] = TRUE; - pfExists[SQL_API_SQLGETCONNECTOPTION] = TRUE; /* partial */ - pfExists[SQL_API_SQLGETDATA] = TRUE; - pfExists[SQL_API_SQLGETFUNCTIONS] = TRUE; - pfExists[SQL_API_SQLGETINFO] = TRUE; - pfExists[SQL_API_SQLGETSTMTOPTION] = TRUE; /* partial */ - pfExists[SQL_API_SQLGETTYPEINFO] = TRUE; - pfExists[SQL_API_SQLPARAMDATA] = TRUE; - pfExists[SQL_API_SQLPUTDATA] = TRUE; - pfExists[SQL_API_SQLSETCONNECTOPTION] = TRUE; /* partial */ - pfExists[SQL_API_SQLSETSTMTOPTION] = TRUE; - pfExists[SQL_API_SQLSPECIALCOLUMNS] = TRUE; - pfExists[SQL_API_SQLSTATISTICS] = TRUE; - pfExists[SQL_API_SQLTABLES] = TRUE; - - /* ODBC level 2 functions */ - pfExists[SQL_API_SQLBROWSECONNECT] = FALSE; - pfExists[SQL_API_SQLCOLUMNPRIVILEGES] = FALSE; - pfExists[SQL_API_SQLDATASOURCES] = FALSE; /* only implemented by - * DM */ - if (SUPPORT_DESCRIBE_PARAM(ci)) - pfExists[SQL_API_SQLDESCRIBEPARAM] = TRUE; - else - pfExists[SQL_API_SQLDESCRIBEPARAM] = FALSE; /* not properly - * implemented */ - pfExists[SQL_API_SQLDRIVERS] = FALSE; /* only implemented by - * DM */ - pfExists[SQL_API_SQLEXTENDEDFETCH] = TRUE; - pfExists[SQL_API_SQLFOREIGNKEYS] = TRUE; - pfExists[SQL_API_SQLMORERESULTS] = TRUE; - pfExists[SQL_API_SQLNATIVESQL] = TRUE; - pfExists[SQL_API_SQLNUMPARAMS] = TRUE; - pfExists[SQL_API_SQLPARAMOPTIONS] = TRUE; - pfExists[SQL_API_SQLPRIMARYKEYS] = TRUE; - pfExists[SQL_API_SQLPROCEDURECOLUMNS] = TRUE; - pfExists[SQL_API_SQLPROCEDURES] = TRUE; - pfExists[SQL_API_SQLSETPOS] = TRUE; - pfExists[SQL_API_SQLSETSCROLLOPTIONS] = TRUE; /* odbc 1.0 */ - pfExists[SQL_API_SQLTABLEPRIVILEGES] = TRUE; - pfExists[SQL_API_SQLBULKOPERATIONS] = FALSE; - } else { - switch (fFunction) { - case SQL_API_SQLBINDCOL: - *pfExists = TRUE; - break; - case SQL_API_SQLCANCEL: - *pfExists = TRUE; - break; - case SQL_API_SQLCOLATTRIBUTE: - *pfExists = TRUE; - break; - case SQL_API_SQLCONNECT: - *pfExists = TRUE; - break; - case SQL_API_SQLDESCRIBECOL: - *pfExists = TRUE; - break; /* partial */ - case SQL_API_SQLDISCONNECT: - *pfExists = TRUE; - break; - case SQL_API_SQLEXECDIRECT: - *pfExists = TRUE; - break; - case SQL_API_SQLEXECUTE: - *pfExists = TRUE; - break; - case SQL_API_SQLFETCH: - *pfExists = TRUE; - break; - case SQL_API_SQLFREESTMT: - *pfExists = TRUE; - break; - case SQL_API_SQLGETCURSORNAME: - *pfExists = TRUE; - break; - case SQL_API_SQLNUMRESULTCOLS: - *pfExists = TRUE; - break; - case SQL_API_SQLPREPARE: - *pfExists = TRUE; - break; - case SQL_API_SQLROWCOUNT: - *pfExists = TRUE; - break; - case SQL_API_SQLSETCURSORNAME: - *pfExists = TRUE; - break; - - /* ODBC level 1 functions */ - case SQL_API_SQLBINDPARAMETER: - *pfExists = TRUE; - break; - case SQL_API_SQLCOLUMNS: - *pfExists = TRUE; - break; - case SQL_API_SQLDRIVERCONNECT: - *pfExists = TRUE; - break; - case SQL_API_SQLGETDATA: - *pfExists = TRUE; - break; - case SQL_API_SQLGETFUNCTIONS: - *pfExists = TRUE; - break; - case SQL_API_SQLGETINFO: - *pfExists = TRUE; - break; - case SQL_API_SQLGETTYPEINFO: - *pfExists = TRUE; - break; - case SQL_API_SQLPARAMDATA: - *pfExists = TRUE; - break; - case SQL_API_SQLPUTDATA: - *pfExists = TRUE; - break; - case SQL_API_SQLSPECIALCOLUMNS: - *pfExists = TRUE; - break; - case SQL_API_SQLSTATISTICS: - *pfExists = TRUE; - break; - case SQL_API_SQLTABLES: - *pfExists = TRUE; - break; - - /* ODBC level 2 functions */ - case SQL_API_SQLBROWSECONNECT: - *pfExists = FALSE; - break; - case SQL_API_SQLCOLUMNPRIVILEGES: - *pfExists = FALSE; - break; - case SQL_API_SQLDATASOURCES: - *pfExists = FALSE; - break; /* only implemented by DM */ - case SQL_API_SQLDESCRIBEPARAM: - if (SUPPORT_DESCRIBE_PARAM(ci)) - *pfExists = TRUE; - else - *pfExists = FALSE; - break; /* not properly implemented */ - case SQL_API_SQLDRIVERS: - *pfExists = FALSE; - break; /* only implemented by DM */ - case SQL_API_SQLEXTENDEDFETCH: - *pfExists = TRUE; - break; - case SQL_API_SQLFOREIGNKEYS: - *pfExists = TRUE; - break; - case SQL_API_SQLMORERESULTS: - *pfExists = TRUE; - break; - case SQL_API_SQLNATIVESQL: - *pfExists = TRUE; - break; - case SQL_API_SQLNUMPARAMS: - *pfExists = TRUE; - break; - case SQL_API_SQLPRIMARYKEYS: - *pfExists = TRUE; - break; - case SQL_API_SQLPROCEDURECOLUMNS: - *pfExists = TRUE; - break; - case SQL_API_SQLPROCEDURES: - *pfExists = TRUE; - break; - case SQL_API_SQLSETPOS: - *pfExists = TRUE; - break; - case SQL_API_SQLTABLEPRIVILEGES: - *pfExists = TRUE; - break; - case SQL_API_SQLBULKOPERATIONS: /* 24 */ - case SQL_API_SQLALLOCHANDLE: /* 1001 */ - case SQL_API_SQLBINDPARAM: /* 1002 */ - case SQL_API_SQLCLOSECURSOR: /* 1003 */ - case SQL_API_SQLENDTRAN: /* 1005 */ - case SQL_API_SQLFETCHSCROLL: /* 1021 */ - case SQL_API_SQLFREEHANDLE: /* 1006 */ - case SQL_API_SQLGETCONNECTATTR: /* 1007 */ - case SQL_API_SQLGETDESCFIELD: /* 1008 */ - case SQL_API_SQLGETDIAGFIELD: /* 1010 */ - case SQL_API_SQLGETDIAGREC: /* 1011 */ - case SQL_API_SQLGETENVATTR: /* 1012 */ - case SQL_API_SQLGETSTMTATTR: /* 1014 */ - case SQL_API_SQLSETCONNECTATTR: /* 1016 */ - case SQL_API_SQLSETDESCFIELD: /* 1017 */ - case SQL_API_SQLSETENVATTR: /* 1019 */ - case SQL_API_SQLSETSTMTATTR: /* 1020 */ - *pfExists = TRUE; - break; - case SQL_API_SQLGETDESCREC: /* 1009 */ - case SQL_API_SQLSETDESCREC: /* 1018 */ - case SQL_API_SQLCOPYDESC: /* 1004 */ - *pfExists = FALSE; - break; - default: - *pfExists = FALSE; - break; - } - } - return SQL_SUCCESS; -} - -char *identifierEscape(const SQLCHAR *src, SQLLEN srclen, - const ConnectionClass *conn, char *buf, size_t bufsize, - BOOL double_quote) { - int i; - size_t outlen; - UCHAR tchar; - char *dest = NULL, escape_ch = CC_get_escape(conn); - encoded_str encstr; - - if (!src || srclen == SQL_NULL_DATA) - return dest; - else if (srclen == SQL_NTS) - srclen = (SQLLEN)strlen((char *)src); - if (srclen <= 0) - return dest; - MYLOG(OPENSEARCH_TRACE, "entering in=%s(" FORMAT_LEN ")\n", src, srclen); - if (NULL != buf && bufsize > 0) - dest = buf; - else { - bufsize = 2 * srclen + 1; - dest = malloc(bufsize); - } - if (!dest) - return NULL; - encoded_str_constr(&encstr, conn->ccsc, (char *)src); - outlen = 0; - if (double_quote) - dest[outlen++] = IDENTIFIER_QUOTE; - for (i = 0, tchar = (UCHAR)encoded_nextchar(&encstr); - i < srclen && outlen < bufsize - 1; - i++, tchar = (UCHAR)encoded_nextchar(&encstr)) { - if (MBCS_NON_ASCII(encstr)) { - dest[outlen++] = tchar; - continue; - } - if (LITERAL_QUOTE == tchar || escape_ch == tchar) - dest[outlen++] = tchar; - else if (double_quote && IDENTIFIER_QUOTE == tchar) - dest[outlen++] = tchar; - dest[outlen++] = tchar; - } - if (double_quote) - dest[outlen++] = IDENTIFIER_QUOTE; - dest[outlen] = '\0'; - MYLOG(OPENSEARCH_TRACE, "leaving output=%s(%d)\n", dest, (int)outlen); - return dest; -} - -#define CSTR_SYS_TABLE "SYSTEM TABLE" -#define CSTR_TABLE "TABLE" -#define CSTR_VIEW "VIEW" -#define CSTR_FOREIGN_TABLE "FOREIGN TABLE" -#define CSTR_MATVIEW "MATVIEW" - -#define IS_VALID_NAME(str) ((str) && (str)[0]) -#define TABLE_IN_RELKIND "('r', 'v', 'm', 'f', 'p')" - -/* - * macros for opensearchtype_attr_xxxx() calls which have - * OPENSEARCH_ADT_UNSET or OPENSEARCH_UNKNOWNS_UNSET parameters - */ -#define OPENSEARCHTYPE_ATTR_COLUMN_SIZE(conn, openSearchType, atttypmod) \ - opensearchtype_attr_column_size(conn, openSearchType, atttypmod, OPENSEARCH_ADT_UNSET, \ - OPENSEARCH_UNKNOWNS_UNSET) -#define OPENSEARCHTYPE_ATTR_TO_CONCISE_TYPE(conn, openSearchType, atttypmod) \ - opensearchtype_attr_to_concise_type(conn, openSearchType, atttypmod, OPENSEARCH_ADT_UNSET, \ - OPENSEARCH_UNKNOWNS_UNSET) -#define OPENSEARCHTYPE_ATTR_TO_SQLDESCTYPE(conn, openSearchType, atttypmod) \ - opensearchtype_attr_to_sqldesctype(conn, openSearchType, atttypmod, OPENSEARCH_ADT_UNSET, \ - OPENSEARCH_UNKNOWNS_UNSET) -#define OPENSEARCHTYPE_ATTR_DISPLAY_SIZE(conn, openSearchType, atttypmod) \ - opensearchtype_attr_display_size(conn, openSearchType, atttypmod, OPENSEARCH_ADT_UNSET, \ - OPENSEARCH_UNKNOWNS_UNSET) -#define OPENSEARCHTYPE_ATTR_BUFFER_LENGTH(conn, openSearchType, atttypmod) \ - opensearchtype_attr_buffer_length(conn, openSearchType, atttypmod, OPENSEARCH_ADT_UNSET, \ - OPENSEARCH_UNKNOWNS_UNSET) -#define OPENSEARCHTYPE_ATTR_DECIMAL_DIGITS(conn, openSearchType, atttypmod) \ - opensearchtype_attr_decimal_digits(conn, openSearchType, atttypmod, OPENSEARCH_ADT_UNSET, \ - OPENSEARCH_UNKNOWNS_UNSET) -#define OPENSEARCHTYPE_ATTR_TRANSFER_OCTET_LENGTH(conn, openSearchType, atttypmod) \ - opensearchtype_attr_transfer_octet_length(conn, openSearchType, atttypmod, \ - OPENSEARCH_UNKNOWNS_UNSET) - -RETCODE SQL_API OPENSEARCHAPI_SpecialColumns( - HSTMT hstmt, SQLUSMALLINT fColType, const SQLCHAR *szTableQualifier, - SQLSMALLINT cbTableQualifier, const SQLCHAR *szTableOwner, /* OA E*/ - SQLSMALLINT cbTableOwner, const SQLCHAR *szTableName, /* OA(R) E*/ - SQLSMALLINT cbTableName, SQLUSMALLINT fScope, SQLUSMALLINT fNullable) { - UNUSED(fColType, szTableQualifier, cbTableQualifier, szTableOwner, - cbTableOwner, szTableName, cbTableName, fScope, fNullable); - CSTR func = "OPENSEARCHAPI_SpecialColumns"; - - // Initialize Statement - StatementClass *stmt = (StatementClass *)hstmt; - RETCODE result; - if (result = SC_initialize_and_recycle(stmt), SQL_SUCCESS != result) - return result; - - // Initialize QResultClass - QResultClass *res = QR_Constructor(); - if (!res) { - SC_set_error( - stmt, STMT_NO_MEMORY_ERROR, - "Couldn't allocate memory for OPENSEARCHAPI_SpecialColumns result.", func); - return SQL_ERROR; - } - - // Link QResultClass to statement and connection - QR_set_conn(res, SC_get_conn(stmt)); - SC_set_Result(stmt, res); - - // Set number of fields and declare as catalog result - extend_column_bindings(SC_get_ARDF(stmt), NUM_OF_SPECOLS_FIELDS); - stmt->catalog_result = TRUE; - - // Setup fields - QR_set_num_fields(res, NUM_OF_SPECOLS_FIELDS); - QR_set_field_info_v(res, SPECOLS_SCOPE, "SCOPE", OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, SPECOLS_COLUMN_NAME, "COLUMN_NAME", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, SPECOLS_DATA_TYPE, "DATA_TYPE", - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, SPECOLS_TYPE_NAME, "TYPE_NAME", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, SPECOLS_COLUMN_SIZE, "COLUMN_SIZE", - OPENSEARCH_TYPE_INT4, - 4); - QR_set_field_info_v(res, SPECOLS_BUFFER_LENGTH, "BUFFER_LENGTH", - OPENSEARCH_TYPE_INT4, 4); - QR_set_field_info_v(res, SPECOLS_DECIMAL_DIGITS, "DECIMAL_DIGITS", - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, SPECOLS_PSEUDO_COLUMN, "PSEUDO_COLUMN", - OPENSEARCH_TYPE_INT2, 2); - - // Set result to okay and adjust fields if keys exist - QR_set_rstatus(res, PORES_FIELDS_OK); - res->num_fields = CI_get_num_fields(QR_get_fields(res)); - if (QR_haskeyset(res)) - res->num_fields -= res->num_key_fields; - - // Finalize data - stmt->status = STMT_FINISHED; - stmt->currTuple = -1; - SC_set_rowset_start(stmt, -1, FALSE); - SC_set_current_col(stmt, -1); - - return SQL_SUCCESS; -} - -#define INDOPTION_DESC 0x0001 /* values are in reverse order */ -RETCODE SQL_API OPENSEARCHAPI_Statistics( - HSTMT hstmt, const SQLCHAR *szTableQualifier, /* OA X*/ - SQLSMALLINT cbTableQualifier, const SQLCHAR *szTableOwner, /* OA E*/ - SQLSMALLINT cbTableOwner, const SQLCHAR *szTableName, /* OA(R) E*/ - SQLSMALLINT cbTableName, SQLUSMALLINT fUnique, SQLUSMALLINT fAccuracy) { - UNUSED(szTableQualifier, cbTableQualifier, szTableOwner, cbTableOwner, - szTableName, cbTableName, fUnique, fAccuracy); - CSTR func = "OPENSEARCHAPI_Statistics"; - - // Initialize Statement - StatementClass *stmt = (StatementClass *)hstmt; - RETCODE result; - if (result = SC_initialize_and_recycle(stmt), SQL_SUCCESS != result) - return result; - - // Initialize QResultClass - QResultClass *res = QR_Constructor(); - if (!res) { - SC_set_error(stmt, STMT_NO_MEMORY_ERROR, - "Couldn't allocate memory for OPENSEARCHAPI_Statistics result.", - func); - return SQL_ERROR; - } - - // Link QResultClass to statement and connection - QR_set_conn(res, SC_get_conn(stmt)); - SC_set_Result(stmt, res); - - // Set number of fields and declare as catalog result - extend_column_bindings(SC_get_ARDF(stmt), NUM_OF_STATS_FIELDS); - stmt->catalog_result = TRUE; - - // Setup fields - QR_set_num_fields(res, NUM_OF_STATS_FIELDS); - QR_set_field_info_v(res, STATS_CATALOG_NAME, "TABLE_QUALIFIER", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, STATS_SCHEMA_NAME, "TABLE_OWNER", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, STATS_TABLE_NAME, "TABLE_NAME", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, STATS_NON_UNIQUE, "NON_UNIQUE", - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, STATS_INDEX_QUALIFIER, "INDEX_QUALIFIER", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, STATS_INDEX_NAME, "INDEX_NAME", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, STATS_TYPE, "TYPE", OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, STATS_SEQ_IN_INDEX, "SEQ_IN_INDEX", - OPENSEARCH_TYPE_INT2, - 2); - QR_set_field_info_v(res, STATS_COLUMN_NAME, "COLUMN_NAME", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, STATS_COLLATION, "COLLATION", OPENSEARCH_TYPE_CHAR, 1); - QR_set_field_info_v(res, STATS_CARDINALITY, "CARDINALITY", - OPENSEARCH_TYPE_INT4, 4); - QR_set_field_info_v(res, STATS_PAGES, "PAGES", OPENSEARCH_TYPE_INT4, 4); - QR_set_field_info_v(res, STATS_FILTER_CONDITION, "FILTER_CONDITION", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - - // Set result to okay and adjust fields if keys exist - QR_set_rstatus(res, PORES_FIELDS_OK); - res->num_fields = CI_get_num_fields(QR_get_fields(res)); - if (QR_haskeyset(res)) - res->num_fields -= res->num_key_fields; - - // Finalize data - stmt->status = STMT_FINISHED; - stmt->currTuple = -1; - SC_set_rowset_start(stmt, -1, FALSE); - SC_set_current_col(stmt, -1); - - return SQL_SUCCESS; -} - -RETCODE SQL_API OPENSEARCHAPI_ColumnPrivileges( - HSTMT hstmt, const SQLCHAR *szTableQualifier, /* OA X*/ - SQLSMALLINT cbTableQualifier, const SQLCHAR *szTableOwner, /* OA E*/ - SQLSMALLINT cbTableOwner, const SQLCHAR *szTableName, /* OA(R) E*/ - SQLSMALLINT cbTableName, const SQLCHAR *szColumnName, /* PV E*/ - SQLSMALLINT cbColumnName, UWORD flag) { - UNUSED(szTableQualifier, cbTableQualifier, szTableOwner, cbTableOwner, - szTableName, cbTableName, szColumnName, cbColumnName, flag); - CSTR func = "OPENSEARCHAPI_ColumnPrivileges"; - - // Initialize Statement - StatementClass *stmt = (StatementClass *)hstmt; - RETCODE result; - if (result = SC_initialize_and_recycle(stmt), SQL_SUCCESS != result) - return result; - - // Initialize QResultClass - QResultClass *res = QR_Constructor(); - if (!res) { - SC_set_error( - stmt, STMT_NO_MEMORY_ERROR, - "Couldn't allocate memory for OPENSEARCHAPI_ColumnPrivileges result.", - func); - return SQL_ERROR; - } - - // Link QResultClass to statement and connection - QR_set_conn(res, SC_get_conn(stmt)); - SC_set_Result(stmt, res); - - // Set number of fields and declare as catalog result - extend_column_bindings(SC_get_ARDF(stmt), NUM_OF_COLPRIV_FIELDS); - stmt->catalog_result = TRUE; - - // Setup fields - QR_set_num_fields(res, NUM_OF_COLPRIV_FIELDS); - QR_set_field_info_v(res, COLPRIV_TABLE_CAT, "TABLE_CAT", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, COLPRIV_TABLE_SCHEM, "TABLE_SCHEM", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, COLPRIV_TABLE_NAME, "TABLE_NAME", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, COLPRIV_COLUMN_NAME, "COLUMN_NAME", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, COLPRIV_GRANTOR, "GRANTOR", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, COLPRIV_GRANTEE, "GRANTEE", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, COLPRIV_PRIVILEGE, "PRIVILEGE", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, COLPRIV_IS_GRANTABLE, "IS_GRANTABLE", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - - // Set result to okay and adjust fields if keys exist - QR_set_rstatus(res, PORES_FIELDS_OK); - res->num_fields = CI_get_num_fields(QR_get_fields(res)); - if (QR_haskeyset(res)) - res->num_fields -= res->num_key_fields; - - // Finalize data - stmt->status = STMT_FINISHED; - stmt->currTuple = -1; - SC_set_rowset_start(stmt, -1, FALSE); - SC_set_current_col(stmt, -1); - - return SQL_SUCCESS; -} - -/* - * SQLPrimaryKeys() - * - * Retrieve the primary key columns for the specified table. - */ -RETCODE SQL_API OPENSEARCHAPI_PrimaryKeys(HSTMT hstmt, - const SQLCHAR *szTableQualifier, /* OA X*/ - SQLSMALLINT cbTableQualifier, - const SQLCHAR *szTableOwner, /* OA E*/ - SQLSMALLINT cbTableOwner, - const SQLCHAR *szTableName, /* OA(R) E*/ - SQLSMALLINT cbTableName, OID reloid) { - UNUSED(szTableQualifier, cbTableQualifier, szTableOwner, cbTableOwner, - szTableName, cbTableName, reloid); - CSTR func = "OPENSEARCHAPI_PrimaryKeys"; - - // Initialize Statement - StatementClass *stmt = (StatementClass *)hstmt; - RETCODE ret = SC_initialize_and_recycle(stmt); - if (ret != SQL_SUCCESS) - return ret; - - // Initialize QResultClass - QResultClass *res = QR_Constructor(); - if (res == NULL) { - SC_set_error(stmt, STMT_NO_MEMORY_ERROR, - "Couldn't allocate memory for OPENSEARCHAPI_PrimaryKeys result.", - func); - return SQL_ERROR; - } - - // Link QResultClass to statement and cnnection - QR_set_conn(res, SC_get_conn(stmt)); - SC_set_Result(stmt, res); - - // Set number of fields and declare as catalog result - extend_column_bindings(SC_get_ARDF(stmt), NUM_OF_PKS_FIELDS); - stmt->catalog_result = TRUE; - - // Setup fields - QR_set_num_fields(res, NUM_OF_PKS_FIELDS); - QR_set_field_info_v(res, PKS_TABLE_CAT, "TABLE_QUALIFIER", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, PKS_TABLE_SCHEM, "TABLE_OWNER", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, PKS_TABLE_NAME, "TABLE_NAME", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, PKS_COLUMN_NAME, "COLUMN_NAME", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, PKS_KEY_SQ, "KEY_SEQ", OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, PKS_PK_NAME, "PK_NAME", OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - - // Set result to okay and adjust fields if keys exist - QR_set_rstatus(res, PORES_FIELDS_OK); - res->num_fields = CI_get_num_fields(QR_get_fields(res)); - if (QR_haskeyset(res)) - res->num_fields -= res->num_key_fields; - - // Finalize data - stmt->currTuple = -1; - stmt->status = STMT_FINISHED; - SC_set_rowset_start(stmt, -1, FALSE); - SC_set_current_col(stmt, -1); - - return ret; -} - -RETCODE SQL_API OPENSEARCHAPI_ForeignKeys( - HSTMT hstmt, const SQLCHAR *szPkTableQualifier, /* OA X*/ - SQLSMALLINT cbPkTableQualifier, const SQLCHAR *szPkTableOwner, /* OA E*/ - SQLSMALLINT cbPkTableOwner, const SQLCHAR *szPkTableName, /* OA(R) E*/ - SQLSMALLINT cbPkTableName, const SQLCHAR *szFkTableQualifier, /* OA X*/ - SQLSMALLINT cbFkTableQualifier, const SQLCHAR *szFkTableOwner, /* OA E*/ - SQLSMALLINT cbFkTableOwner, const SQLCHAR *szFkTableName, /* OA(R) E*/ - SQLSMALLINT cbFkTableName) { - UNUSED(szPkTableQualifier, cbPkTableQualifier, szPkTableOwner, - cbPkTableOwner, szPkTableName, cbPkTableName, szFkTableQualifier, - cbFkTableQualifier, szFkTableOwner, cbFkTableOwner, szFkTableName, - cbFkTableName); - CSTR func = "OPENSEARCHAPI_ForeignKeys"; - - // Initialize Statement - StatementClass *stmt = (StatementClass *)hstmt; - RETCODE result; - if (result = SC_initialize_and_recycle(stmt), SQL_SUCCESS != result) - return result; - - // Initialize QResultClass - QResultClass *res = QR_Constructor(); - if (!res) { - SC_set_error(stmt, STMT_NO_MEMORY_ERROR, - "Couldn't allocate memory for OPENSEARCHAPI_ForeignKeys result.", - func); - return SQL_ERROR; - } - - // Link QResultClass to statement and connection - QR_set_conn(res, SC_get_conn(stmt)); - SC_set_Result(stmt, res); - - // Set number of fields and declare as catalog result - extend_column_bindings(SC_get_ARDF(stmt), NUM_OF_FKS_FIELDS); - stmt->catalog_result = TRUE; - - // Setup fields - QR_set_num_fields(res, NUM_OF_FKS_FIELDS); - QR_set_field_info_v(res, FKS_PKTABLE_CAT, "PKTABLE_QUALIFIER", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, FKS_PKTABLE_SCHEM, "PKTABLE_OWNER", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, FKS_PKTABLE_NAME, "PKTABLE_NAME", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, FKS_PKCOLUMN_NAME, "PKCOLUMN_NAME", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, FKS_FKTABLE_CAT, "FKTABLE_QUALIFIER", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, FKS_FKTABLE_SCHEM, "FKTABLE_OWNER", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, FKS_FKTABLE_NAME, "FKTABLE_NAME", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, FKS_FKCOLUMN_NAME, "FKCOLUMN_NAME", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, FKS_KEY_SEQ, "KEY_SEQ", OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, FKS_UPDATE_RULE, "UPDATE_RULE", - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, FKS_DELETE_RULE, "DELETE_RULE", - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, FKS_FK_NAME, "FK_NAME", OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, FKS_PK_NAME, "PK_NAME", OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, FKS_DEFERRABILITY, "DEFERRABILITY", - OPENSEARCH_TYPE_INT2, - 2); - QR_set_field_info_v(res, FKS_TRIGGER_NAME, "TRIGGER_NAME", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - - // Set result to okay and adjust fields if keys exist - QR_set_rstatus(res, PORES_FIELDS_OK); - res->num_fields = CI_get_num_fields(QR_get_fields(res)); - if (QR_haskeyset(res)) - res->num_fields -= res->num_key_fields; - - // Finalize data - stmt->status = STMT_FINISHED; - stmt->currTuple = -1; - SC_set_rowset_start(stmt, -1, FALSE); - SC_set_current_col(stmt, -1); - - return SQL_SUCCESS; -} - -#define PRORET_COUNT -#define DISPLAY_ARGNAME - -RETCODE SQL_API OPENSEARCHAPI_ProcedureColumns( - HSTMT hstmt, const SQLCHAR *szProcQualifier, /* OA X*/ - SQLSMALLINT cbProcQualifier, const SQLCHAR *szProcOwner, /* PV E*/ - SQLSMALLINT cbProcOwner, const SQLCHAR *szProcName, /* PV E*/ - SQLSMALLINT cbProcName, const SQLCHAR *szColumnName, /* PV X*/ - SQLSMALLINT cbColumnName, UWORD flag) { - UNUSED(szProcQualifier, cbProcQualifier, szProcOwner, cbProcOwner, - szProcName, cbProcName, szColumnName, cbColumnName, flag); - CSTR func = "OPENSEARCHAPI_ProcedureColumns"; - - // Initialize Statement - StatementClass *stmt = (StatementClass *)hstmt; - RETCODE ret = SC_initialize_and_recycle(stmt); - if (ret != SQL_SUCCESS) - return ret; - - // Initialize QResultClass - QResultClass *res = QR_Constructor(); - if (res == NULL) { - SC_set_error( - stmt, STMT_NO_MEMORY_ERROR, - "Couldn't allocate memory for OPENSEARCHAPI_ProcedureColumns result.", - func); - return SQL_ERROR; - } - - // Link QResultClass to statement and cnnection - QR_set_conn(res, SC_get_conn(stmt)); - SC_set_Result(stmt, res); - - // Set number of fields and declare as catalog result - extend_column_bindings(SC_get_ARDF(stmt), NUM_OF_PROCOLS_FIELDS); - stmt->catalog_result = TRUE; - - // Setup fields - QR_set_num_fields(res, NUM_OF_PROCOLS_FIELDS); - QR_set_field_info_v(res, PROCOLS_PROCEDURE_CAT, "PROCEDURE_CAT", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, PROCOLS_PROCEDURE_SCHEM, "PROCEDUR_SCHEM", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, PROCOLS_PROCEDURE_NAME, "PROCEDURE_NAME", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, PROCOLS_COLUMN_NAME, "COLUMN_NAME", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, PROCOLS_COLUMN_TYPE, "COLUMN_TYPE", - OPENSEARCH_TYPE_INT2, - 2); - QR_set_field_info_v(res, PROCOLS_DATA_TYPE, "DATA_TYPE", - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, PROCOLS_TYPE_NAME, "TYPE_NAME", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, PROCOLS_COLUMN_SIZE, "COLUMN_SIZE", - OPENSEARCH_TYPE_INT4, - 4); - QR_set_field_info_v(res, PROCOLS_BUFFER_LENGTH, "BUFFER_LENGTH", - OPENSEARCH_TYPE_INT4, 4); - QR_set_field_info_v(res, PROCOLS_DECIMAL_DIGITS, "DECIMAL_DIGITS", - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, PROCOLS_NUM_PREC_RADIX, "NUM_PREC_RADIX", - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, PROCOLS_NULLABLE, "NULLABLE", OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, PROCOLS_REMARKS, "REMARKS", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, PROCOLS_COLUMN_DEF, "COLUMN_DEF", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, PROCOLS_SQL_DATA_TYPE, "SQL_DATA_TYPE", - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, PROCOLS_SQL_DATETIME_SUB, "SQL_DATETIME_SUB", - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, PROCOLS_CHAR_OCTET_LENGTH, "CHAR_OCTET_LENGTH", - OPENSEARCH_TYPE_INT4, 4); - QR_set_field_info_v(res, PROCOLS_ORDINAL_POSITION, "ORDINAL_POSITION", - OPENSEARCH_TYPE_INT4, 4); - QR_set_field_info_v(res, PROCOLS_IS_NULLABLE, "IS_NULLABLE", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - - // Set result to okay and adjust fields if keys exist - QR_set_rstatus(res, PORES_FIELDS_OK); - res->num_fields = CI_get_num_fields(QR_get_fields(res)); - if (QR_haskeyset(res)) - res->num_fields -= res->num_key_fields; - - // Finalize data - stmt->currTuple = -1; - stmt->status = STMT_FINISHED; - SC_set_rowset_start(stmt, -1, FALSE); - SC_set_current_col(stmt, -1); - - return ret; -} - -RETCODE SQL_API OPENSEARCHAPI_Procedures(HSTMT hstmt, - const SQLCHAR *szProcQualifier, /* OA X*/ - SQLSMALLINT cbProcQualifier, - const SQLCHAR *szProcOwner, /* PV E*/ - SQLSMALLINT cbProcOwner, - const SQLCHAR *szProcName, /* PV E*/ - SQLSMALLINT cbProcName, UWORD flag) { - UNUSED(szProcQualifier, cbProcQualifier, szProcOwner, cbProcOwner, - szProcName, cbProcName, flag); - CSTR func = "OPENSEARCHAPI_Procedures"; - - // Initialize Statement - StatementClass *stmt = (StatementClass *)hstmt; - RETCODE ret = SC_initialize_and_recycle(stmt); - if (ret != SQL_SUCCESS) - return ret; - - // Initialize QResultClass - QResultClass *res = QR_Constructor(); - if (res == NULL) { - SC_set_error(stmt, STMT_NO_MEMORY_ERROR, - "Couldn't allocate memory for OPENSEARCHAPI_Procedures result.", - func); - return SQL_ERROR; - } - - // Link QResultClass to statement and cnnection - QR_set_conn(res, SC_get_conn(stmt)); - SC_set_Result(stmt, res); - - // Set number of fields and declare as catalog result - extend_column_bindings(SC_get_ARDF(stmt), NUM_OF_PRO_FIELDS); - stmt->catalog_result = TRUE; - - // Setup fields - QR_set_num_fields(res, NUM_OF_PRO_FIELDS); - QR_set_field_info_v(res, PRO_PROCEDURE_CAT, "PRO_PROCEDURE_CAT", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, PRO_PROCEDURE_SCHEM, "PRO_PROCEDURE_SCHEM", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, PRO_PROCEDURE_NAME, "PRO_PROCEDURE_NAME", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, PRO_NUM_INPUT_PARAMS, "PRO_NUM_INPUT_PARAMS", - OPENSEARCH_TYPE_INT4, 4); - QR_set_field_info_v(res, PRO_NUM_OUTPUT_PARAMS, "PRO_NUM_OUTPUT_PARAMS", - OPENSEARCH_TYPE_INT4, 4); - QR_set_field_info_v(res, PRO_RESULT_SETS, "PRO_RESULT_SETS", - OPENSEARCH_TYPE_INT4, - 4); - QR_set_field_info_v(res, PRO_REMARKS, "PRO_REMARKS", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, PRO_PROCEDURE_TYPE, "PRO_PROCEDURE_TYPE", - OPENSEARCH_TYPE_INT2, 2); - - // Set result to okay and adjust fields if keys exist - QR_set_rstatus(res, PORES_FIELDS_OK); - res->num_fields = CI_get_num_fields(QR_get_fields(res)); - if (QR_haskeyset(res)) - res->num_fields -= res->num_key_fields; - - // Finalize data - stmt->currTuple = -1; - stmt->status = STMT_FINISHED; - SC_set_rowset_start(stmt, -1, FALSE); - SC_set_current_col(stmt, -1); - - return ret; -} - -#define ACLMAX 8 -#define ALL_PRIVILIGES "arwdRxt" - -RETCODE SQL_API OPENSEARCHAPI_TablePrivileges(HSTMT hstmt, - const SQLCHAR *szTableQualifier, /* OA X*/ - SQLSMALLINT cbTableQualifier, - const SQLCHAR *szTableOwner, /* PV E*/ - SQLSMALLINT cbTableOwner, - const SQLCHAR *szTableName, /* PV E*/ - SQLSMALLINT cbTableName, UWORD flag) { - UNUSED(szTableQualifier, cbTableQualifier, szTableOwner, cbTableOwner, - szTableName, cbTableName, flag); - CSTR func = "OPENSEARCHAPI_TablePrivileges"; - - // Initialize Statement - StatementClass *stmt = (StatementClass *)hstmt; - RETCODE result; - if (result = SC_initialize_and_recycle(stmt), SQL_SUCCESS != result) - return result; - - // Initialize QResultClass - QResultClass *res = QR_Constructor(); - if (!res) { - SC_set_error(stmt, STMT_NO_MEMORY_ERROR, - "Couldn't allocate memory for OPENSEARCHAPI_Statistics result.", - func); - return SQL_ERROR; - } - - // Link QResultClass to statement and connection - QR_set_conn(res, SC_get_conn(stmt)); - SC_set_Result(stmt, res); - - // Set number of fields and declare as catalog result - extend_column_bindings(SC_get_ARDF(stmt), NUM_OF_TABPRIV_FIELDS); - stmt->catalog_result = TRUE; - - // Setup fields - QR_set_num_fields(res, NUM_OF_TABPRIV_FIELDS); - QR_set_field_info_v(res, TABPRIV_TABLE_CAT, "TABLE_CAT", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, TABPRIV_TABLE_SCHEM, "TABLE_SCHEM", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, TABPRIV_TABLE_NAME, "TABLE_NAME", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, TABPRIV_GRANTOR, "GRANTOR", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, TABPRIV_GRANTEE, "GRANTEE", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, TABPRIV_PRIVILEGE, "PRIVILEGE", - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, TABPRIV_IS_GRANTABLE, "IS_GRANTABLE", - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - - // Set result to okay and adjust fields if keys exist - QR_set_rstatus(res, PORES_FIELDS_OK); - res->num_fields = CI_get_num_fields(QR_get_fields(res)); - if (QR_haskeyset(res)) - res->num_fields -= res->num_key_fields; - - // Finalize data - stmt->status = STMT_FINISHED; - stmt->currTuple = -1; - SC_set_rowset_start(stmt, -1, FALSE); - SC_set_current_col(stmt, -1); - - return SQL_SUCCESS; -} diff --git a/sql-odbc/src/sqlodbc/loadlib.c b/sql-odbc/src/sqlodbc/loadlib.c deleted file mode 100644 index 78015e63fa..0000000000 --- a/sql-odbc/src/sqlodbc/loadlib.c +++ /dev/null @@ -1,258 +0,0 @@ -#include -#include -#include -#ifndef WIN32 -#include -#endif /* WIN32 */ - -#include "opensearch_enlist.h" -#include "loadlib.h" -#include "misc.h" - -#ifdef WIN32 -#ifdef _MSC_VER -#pragma comment(lib, "Delayimp") -#ifdef _HANDLE_ENLIST_IN_DTC_ -#ifdef UNICODE_SUPPORT -#pragma comment(lib, "opensearch_enlist") -#else -#pragma comment(lib, "opensearch_enlista") -#endif /* UNICODE_SUPPORT */ -#endif /* _HANDLE_ENLIST_IN_DTC_ */ -// The followings works under VC++6.0 but doesn't work under VC++7.0. -// Please add the equivalent linker options using command line etc. -#if (_MSC_VER == 1200) && defined(DYNAMIC_LOAD) // VC6.0 -#ifdef UNICODE_SUPPORT -#pragma comment(linker, "/Delayload:opensearch_enlist.dll") -#else -#pragma comment(linker, "/Delayload:opensearch_enlista.dll") -#endif /* UNICODE_SUPPORT */ -#pragma comment(linker, "/Delay:UNLOAD") -#endif /* _MSC_VER */ -#endif /* _MSC_VER */ - -#if defined(DYNAMIC_LOAD) -#define WIN_DYN_LOAD -#ifdef UNICODE_SUPPORT -CSTR opensearch_enlist = "opensearch_enlist"; -CSTR opensearch_enlistdll = "opensearch_enlist.dll"; -CSTR elasticodbc = "sqlodbc35w"; -CSTR elasticodbcdll = "sqlodbc35w.dll"; -#else -CSTR opensearch_enlist = "opensearch_enlista"; -CSTR opensearch_enlistdll = "opensearch_enlista.dll"; -CSTR elasticodbc = "sqlodbc30a"; -CSTR elasticodbcdll = "sqlodbc30a.dll"; -#endif /* UNICODE_SUPPORT */ -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -#define _MSC_DELAY_LOAD_IMPORT -#endif /* MSC_VER */ -#endif /* DYNAMIC_LOAD */ -#endif /* WIN32 */ - -#if defined(_MSC_DELAY_LOAD_IMPORT) -/* - * Error hook function for delay load import. - * Try to load a DLL based on elasticodbc path. - */ -#if (_MSC_VER >= 1900) /* vc14 or later */ -#define TRY_DLI_HOOK __try { -#define RELEASE_NOTIFY_HOOK -#elif (_MSC_VER < 1300) /* vc6 */ -extern PfnDliHook __pfnDliFailureHook; -extern PfnDliHook __pfnDliNotifyHook; -#define TRY_DLI_HOOK \ - __try { \ - __pfnDliFailureHook = DliErrorHook; \ - __pfnDliNotifyHook = DliErrorHook; -#define RELEASE_NOTIFY_HOOK __pfnDliNotifyHook = NULL; -#else /* vc7 ~ 12 */ -extern PfnDliHook __pfnDliFailureHook2; -extern PfnDliHook __pfnDliNotifyHook2; -#define TRY_DLI_HOOK \ - __try { \ - __pfnDliFailureHook2 = DliErrorHook; \ - __pfnDliNotifyHook2 = DliErrorHook; -#define RELEASE_NOTIFY_HOOK __pfnDliNotifyHook2 = NULL; -#endif /* _MSC_VER */ -#else -#define TRY_DLI_HOOK __try { -#define RELEASE_NOTIFY_HOOK -#endif /* _MSC_DELAY_LOAD_IMPORT */ - -#if defined(_MSC_DELAY_LOAD_IMPORT) -static BOOL loaded_opensearch_enlist = FALSE; -static HMODULE enlist_module = NULL; -static BOOL loaded_elasticodbc = FALSE; -/* - * Load a DLL based on elasticodbc path. - */ -HMODULE MODULE_load_from_elasticodbc_path(const char *module_name) { - extern HINSTANCE s_hModule; - HMODULE hmodule = NULL; - char szFileName[MAX_PATH]; - - if (GetModuleFileName(s_hModule, szFileName, sizeof(szFileName)) > 0) { - char drive[_MAX_DRIVE], dir[_MAX_DIR], sysdir[MAX_PATH]; - - _splitpath(szFileName, drive, dir, NULL, NULL); - GetSystemDirectory(sysdir, MAX_PATH); - SPRINTF_FIXED(szFileName, "%s%s%s.dll", drive, dir, module_name); - if (_strnicmp(szFileName, sysdir, strlen(sysdir)) != 0) { - hmodule = - LoadLibraryEx(szFileName, NULL, LOAD_WITH_ALTERED_SEARCH_PATH); - MYLOG(OPENSEARCH_DEBUG, "elasticodbc path based %s loaded module=%p\n", - module_name, hmodule); - } - } - return hmodule; -} - -static FARPROC WINAPI DliErrorHook(unsigned dliNotify, PDelayLoadInfo pdli) { - HMODULE hmodule = NULL; - const char *call_module = NULL; - - MYLOG(OPENSEARCH_DEBUG, "Dli%sHook %s Notify=%d\n", - (dliFailLoadLib == dliNotify || dliFailGetProc == dliNotify) - ? "Error" - : "Notify", - NULL != pdli->szDll ? pdli->szDll : pdli->dlp.szProcName, dliNotify); - switch (dliNotify) { - case dliNotePreLoadLibrary: - case dliFailLoadLib: - RELEASE_NOTIFY_HOOK - if (_strnicmp(pdli->szDll, elasticodbc, strlen(elasticodbc)) == 0) - call_module = elasticodbc; - if (call_module) { - if (hmodule = MODULE_load_from_elasticodbc_path(call_module), - NULL == hmodule) - hmodule = LoadLibrary(call_module); - if (NULL != hmodule) { - if (opensearch_enlist == call_module) - loaded_opensearch_enlist = TRUE; - else if (elasticodbc == call_module) - loaded_elasticodbc = TRUE; - } - } - break; - } - return (FARPROC)hmodule; -} - -void AlreadyLoadedOpenSearchodbc(void) { - loaded_elasticodbc = TRUE; -} - -/* - * unload delay loaded libraries. - */ - -typedef BOOL(WINAPI *UnloadFunc)(LPCSTR); -void CleanupDelayLoadedDLLs(void) { - BOOL success; -#if (_MSC_VER < 1300) /* VC6 DELAYLOAD IMPORT */ - UnloadFunc func = __FUnloadDelayLoadedDLL; -#else - UnloadFunc func = __FUnloadDelayLoadedDLL2; -#endif - /* The dll names are case sensitive for the unload helper */ - if (loaded_opensearch_enlist) { - if (enlist_module != NULL) { - MYLOG(OPENSEARCH_DEBUG, "Freeing Library %s\n", opensearch_enlistdll); - FreeLibrary(enlist_module); - } - MYLOG(OPENSEARCH_DEBUG, "%s unloading\n", opensearch_enlistdll); - success = (*func)(opensearch_enlistdll); - MYLOG(OPENSEARCH_DEBUG, "%s unloaded success=%d\n", opensearch_enlistdll, success); - loaded_opensearch_enlist = FALSE; - } - if (loaded_elasticodbc) { - MYLOG(OPENSEARCH_DEBUG, "%s unloading\n", elasticodbcdll); - success = (*func)(elasticodbcdll); - MYLOG(OPENSEARCH_DEBUG, "%s unloaded success=%d\n", elasticodbcdll, success); - loaded_elasticodbc = FALSE; - } - return; -} -#else -void CleanupDelayLoadedDLLs(void) { - return; -} -#endif /* _MSC_DELAY_LOAD_IMPORT */ - -#ifdef _HANDLE_ENLIST_IN_DTC_ -RETCODE CALL_EnlistInDtc(ConnectionClass *conn, void *pTra, int method) { - RETCODE ret; - BOOL loaded = TRUE; - -#if defined(_MSC_DELAY_LOAD_IMPORT) - if (!loaded_opensearch_enlist) { - TRY_DLI_HOOK - ret = EnlistInDtc(conn, pTra, method); - } - __except ((GetExceptionCode() & 0xffff) == ERROR_MOD_NOT_FOUND - ? EXCEPTION_EXECUTE_HANDLER - : EXCEPTION_CONTINUE_SEARCH) { - if (enlist_module = MODULE_load_from_elasticodbc_path(opensearch_enlist), - NULL == enlist_module) - loaded = FALSE; - else - ret = EnlistInDtc(conn, pTra, method); - } - if (loaded) - loaded_opensearch_enlist = TRUE; - RELEASE_NOTIFY_HOOK -} -else ret = EnlistInDtc(conn, pTra, method); -#else - ret = EnlistInDtc(conn, pTra, method); - loaded_opensearch_enlist = TRUE; -#endif /* _MSC_DELAY_LOAD_IMPORT */ -return ret; -} -RETCODE CALL_DtcOnDisconnect(ConnectionClass *conn) { - if (loaded_opensearch_enlist) - return DtcOnDisconnect(conn); - return FALSE; -} -RETCODE CALL_IsolateDtcConn(ConnectionClass *conn, BOOL continueConnection) { - if (loaded_opensearch_enlist) - return IsolateDtcConn(conn, continueConnection); - return FALSE; -} - -void *CALL_GetTransactionObject(HRESULT *hres) { - void *ret = NULL; - BOOL loaded = TRUE; - -#if defined(_MSC_DELAY_LOAD_IMPORT) - if (!loaded_opensearch_enlist) { - TRY_DLI_HOOK - ret = GetTransactionObject(hres); - } - __except ((GetExceptionCode() & 0xffff) == ERROR_MOD_NOT_FOUND - ? EXCEPTION_EXECUTE_HANDLER - : EXCEPTION_CONTINUE_SEARCH) { - if (enlist_module = MODULE_load_from_elasticodbc_path(opensearch_enlist), - NULL == enlist_module) - loaded = FALSE; - else - ret = GetTransactionObject(hres); - } - if (loaded) - loaded_opensearch_enlist = TRUE; - RELEASE_NOTIFY_HOOK -} -else ret = GetTransactionObject(hres); -#else - ret = GetTransactionObject(hres); - loaded_opensearch_enlist = TRUE; -#endif /* _MSC_DELAY_LOAD_IMPORT */ -return ret; -} -void CALL_ReleaseTransactionObject(void *pObj) { - if (loaded_opensearch_enlist) - ReleaseTransactionObject(pObj); - return; -} -#endif /* _HANDLE_ENLIST_IN_DTC_ */ diff --git a/sql-odbc/src/sqlodbc/loadlib.h b/sql-odbc/src/sqlodbc/loadlib.h deleted file mode 100644 index 16a6c03937..0000000000 --- a/sql-odbc/src/sqlodbc/loadlib.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef __LOADLIB_H__ -#define __LOADLIB_H__ - -#include "opensearch_odbc.h" -#ifdef HAVE_LIBLTDL -#include -#else -#ifdef HAVE_DLFCN_H -#include -#endif /* HAVE_DLFCN_H */ -#endif /* HAVE_LIBLTDL */ - -#include -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef _HANDLE_ENLIST_IN_DTC_ -RETCODE CALL_EnlistInDtc(ConnectionClass *conn, void *pTra, int method); -RETCODE CALL_DtcOnDisconnect(ConnectionClass *); -RETCODE CALL_IsolateDtcConn(ConnectionClass *, BOOL); -void *CALL_GetTransactionObject(HRESULT *); -void CALL_ReleaseTransactionObject(void *); -#endif /* _HANDLE_ENLIST_IN_DTC_ */ -/* void UnloadDelayLoadedDLLs(BOOL); */ -void CleanupDelayLoadedDLLs(void); -#ifdef WIN32 -HMODULE MODULE_load_from_elasticodbc_path(const char *module_name); -void AlreadyLoadedOpenSearchodbc(void); -#endif /* WIN32 */ - -#ifdef __cplusplus -} -#endif -#endif /* __LOADLIB_H__ */ diff --git a/sql-odbc/src/sqlodbc/misc.c b/sql-odbc/src/sqlodbc/misc.c deleted file mode 100644 index 867c7744fe..0000000000 --- a/sql-odbc/src/sqlodbc/misc.c +++ /dev/null @@ -1,201 +0,0 @@ -// clang-format off -#include "opensearch_odbc.h" -#include "misc.h" - -#include -#include -#include -#include -#include -// clang-format on - -#ifndef WIN32 -#include -#include -#include -#else -#include /* Byron: is this where Windows keeps def. - * of getpid ? */ -#endif - -/* - * returns STRCPY_FAIL, STRCPY_TRUNCATED, or #bytes copied - * (not including null term) - */ -ssize_t my_strcpy(char *dst, ssize_t dst_len, const char *src, - ssize_t src_len) { - if (dst_len <= 0) - return STRCPY_FAIL; - - if (src_len == SQL_NULL_DATA) { - dst[0] = '\0'; - return STRCPY_NULL; - } else if (src_len == SQL_NTS) - src_len = strlen(src); - - if (src_len <= 0) - return STRCPY_FAIL; - else { - if (src_len < dst_len) { - memcpy(dst, src, src_len); - dst[src_len] = '\0'; - } else { - memcpy(dst, src, dst_len - 1); - dst[dst_len - 1] = '\0'; /* truncated */ - return STRCPY_TRUNCATED; - } - } - - return strlen(dst); -} - -/* - * strncpy copies up to len characters, and doesn't terminate - * the destination string if src has len characters or more. - * instead, I want it to copy up to len-1 characters and always - * terminate the destination string. - */ -size_t strncpy_null(char *dst, const char *src, ssize_t len) { - int i; - - if (NULL != dst && len > 0) { - for (i = 0; src[i] && i < len - 1; i++) - dst[i] = src[i]; - - dst[i] = '\0'; - } else - return 0; - if (src[i]) - return strlen(src); - return i; -} - -/*------ - * Create a null terminated string (handling the SQL_NTS thing): - * 1. If buf is supplied, place the string in there - * (assumes enough space) and return buf. - * 2. If buf is not supplied, malloc space and return this string - *------ - */ -char *make_string(const SQLCHAR *s, SQLINTEGER len, char *buf, size_t bufsize) { - size_t length; - char *str; - - if (!s || SQL_NULL_DATA == len) - return NULL; - if (len >= 0) - length = len; - else if (SQL_NTS == len) - length = strlen((char *)s); - else { - MYLOG(OPENSEARCH_DEBUG, "invalid length=" FORMAT_INTEGER "\n", len); - return NULL; - } - if (buf) { - strncpy_null(buf, (char *)s, bufsize > length ? length + 1 : bufsize); - return buf; - } - - MYLOG(OPENSEARCH_DEBUG, "malloc size=" FORMAT_SIZE_T "\n", length); - str = malloc(length + 1); - MYLOG(OPENSEARCH_DEBUG, "str=%p\n", str); - if (!str) - return NULL; - - strncpy_null(str, (char *)s, length + 1); - return str; -} - -/* - * snprintfcat is a extension to snprintf - * It add format to buf at given pos - */ -#ifdef POSIX_SNPRINTF_REQUIRED -static posix_vsnprintf(char *str, size_t size, const char *format, va_list ap); -#define vsnprintf posix_vsnprintf -#endif /* POSIX_SNPRINTF_REQUIRED */ - -int snprintfcat(char *buf, size_t size, const char *format, ...) { - int len; - size_t pos = strlen(buf); - va_list arglist; - - va_start(arglist, format); - len = vsnprintf(buf + pos, size - pos, format, arglist); - va_end(arglist); - return len + (int)pos; -} - -/* - * Windows doesn't have snprintf(). It has _snprintf() which is similar, - * but it behaves differently wrt. truncation. This is a compatibility - * function that uses _snprintf() to provide POSIX snprintf() behavior. - * - * Our strategy, if the output doesn't fit, is to create a temporary buffer - * and call _snprintf() on that. If it still doesn't fit, enlarge the buffer - * and repeat. - */ -#ifdef POSIX_SNPRINTF_REQUIRED -static int posix_vsnprintf(char *str, size_t size, const char *format, - va_list ap) { - int len; - char *tmp; - size_t newsize; - - len = _vsnprintf(str, size, format, ap); - if (len < 0) { - if (size == 0) - newsize = 100; - else - newsize = size; - do { - newsize *= 2; - tmp = malloc(newsize); - if (!tmp) - return -1; - len = _vsnprintf(tmp, newsize, format, ap); - if (len >= 0) - memcpy(str, tmp, size); - free(tmp); - } while (len < 0); - } - if (len >= size && size > 0) { - /* Ensure the buffer is NULL-terminated */ - str[size - 1] = '\0'; - } - return len; -} - -int posix_snprintf(char *buf, size_t size, const char *format, ...) { - int len; - va_list arglist; - - va_start(arglist, format); - len = posix_vsnprintf(buf, size, format, arglist); - va_end(arglist); - return len; -} -#endif /* POSIX_SNPRINTF_REQUIRED */ - -#ifndef HAVE_STRLCAT -size_t strlcat(char *dst, const char *src, size_t size) { - size_t ttllen; - char *pd = dst; - const char *ps = src; - - for (ttllen = 0; ttllen < size; ttllen++, pd++) { - if (0 == *pd) - break; - } - if (ttllen >= size - 1) - return ttllen + strlen(src); - for (; ttllen < size - 1; ttllen++, pd++, ps++) { - if (0 == (*pd = *ps)) - return ttllen; - } - *pd = 0; - for (; *ps; ttllen++, ps++) - ; - return ttllen; -} -#endif /* HAVE_STRLCAT */ diff --git a/sql-odbc/src/sqlodbc/misc.h b/sql-odbc/src/sqlodbc/misc.h deleted file mode 100644 index f589cbcb98..0000000000 --- a/sql-odbc/src/sqlodbc/misc.h +++ /dev/null @@ -1,93 +0,0 @@ -#ifndef __MISC_H__ -#define __MISC_H__ - -#include -#ifndef WIN32 -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -size_t strncpy_null(char *dst, const char *src, ssize_t len); -#ifndef HAVE_STRLCAT -size_t strlcat(char *, const char *, size_t); -#endif /* HAVE_STRLCAT */ -int snprintfcat(char *buf, size_t size, const char *format, ...) - __attribute__((format(OPENSEARCH_PRINTF_ATTRIBUTE, 3, 4))); - -char *make_string(const SQLCHAR *s, SQLINTEGER len, char *buf, size_t bufsize); -/* #define GET_SCHEMA_NAME(nspname) (stricmp(nspname, "public") ? nspname : - * "") */ - -#define GET_SCHEMA_NAME(nspname) (nspname) - -/* defines for return value of my_strcpy */ -#define STRCPY_SUCCESS 1 -#define STRCPY_FAIL 0 -#define STRCPY_TRUNCATED (-1) -#define STRCPY_NULL (-2) - -ssize_t my_strcpy(char *dst, ssize_t dst_len, const char *src, ssize_t src_len); - -/* - * Macros to safely strcpy, strcat or sprintf to fixed arrays. - * - */ - -/* - * With GCC, the macro CHECK_NOT_CHAR_P() causes a compilation error - * when the target is pointer not a fixed array. - */ -#if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 406 -#define FUNCTION_BEGIN_MACRO ({ -#define FUNCTION_END_MACRO \ - ; \ - }) -#define CHECK_NOT_CHAR_P(t) \ - _Pragma("GCC diagnostic push") \ - _Pragma("GCC diagnostic ignored \"-Wunused-variable\"") if (0) { \ - typeof(t) dummy_for_check = {}; \ - } \ - _Pragma("GCC diagnostic pop") -#else -#define FUNCTION_BEGIN_MACRO -#define FUNCTION_END_MACRO -#define CHECK_NOT_CHAR_P(t) -#endif - -/* macro to safely strcpy() to fixed arrays. */ -#define STRCPY_FIXED(to, from) \ - FUNCTION_BEGIN_MACRO \ - CHECK_NOT_CHAR_P(to) \ - strncpy_null((to), (from), sizeof(to)) FUNCTION_END_MACRO - -/* macro to safely strcat() to fixed arrays. */ -#define STRCAT_FIXED(to, from) \ - FUNCTION_BEGIN_MACRO \ - CHECK_NOT_CHAR_P(to) \ - strlcat((to), (from), sizeof(to)) FUNCTION_END_MACRO - -/* macro to safely sprintf() to fixed arrays. */ -#define SPRINTF_FIXED(to, ...) \ - FUNCTION_BEGIN_MACRO \ - CHECK_NOT_CHAR_P(to) \ - snprintf((to), sizeof(to), __VA_ARGS__) FUNCTION_END_MACRO - -/* macro to safely sprintf() & cat to fixed arrays. */ -#define SPRINTFCAT_FIXED(to, ...) \ - FUNCTION_BEGIN_MACRO \ - CHECK_NOT_CHAR_P(to) \ - snprintfcat((to), sizeof(to), __VA_ARGS__) FUNCTION_END_MACRO - -#define ITOA_FIXED(to, from) \ - FUNCTION_BEGIN_MACRO \ - CHECK_NOT_CHAR_P(to) \ - snprintf((to), sizeof(to), "%d", from) FUNCTION_END_MACRO - -#ifdef __cplusplus -} -#endif - -#endif /* __MISC_H__ */ diff --git a/sql-odbc/src/sqlodbc/multibyte.c b/sql-odbc/src/sqlodbc/multibyte.c deleted file mode 100644 index 4c5fb0d465..0000000000 --- a/sql-odbc/src/sqlodbc/multibyte.c +++ /dev/null @@ -1,357 +0,0 @@ -#include "multibyte.h" - -#include -#include -#include -#include - -#include "misc.h" -#include "opensearch_apifunc.h" -#include "opensearch_connection.h" -#ifndef WIN32 -#include -#endif -#ifndef TRUE -#define TRUE 1 -#endif - -typedef struct OPENSEARCH_CS { - char *name; - int code; -} OPENSEARCH_CS; - -static OPENSEARCH_CS CS_Table[] = { - {"SQL_ASCII", SQL_ASCII}, - {"EUC_JP", EUC_JP}, - {"EUC_CN", EUC_CN}, - {"EUC_KR", EUC_KR}, - {"EUC_TW", EUC_TW}, - {"JOHAB", JOHAB}, /* since 7.3 */ - {"UTF8", UTF8}, /* since 7.2 */ - {"MULE_INTERNAL", MULE_INTERNAL}, - {"LATIN1", LATIN1}, - {"LATIN2", LATIN2}, - {"LATIN3", LATIN3}, - {"LATIN4", LATIN4}, - {"LATIN5", LATIN5}, - {"LATIN6", LATIN6}, - {"LATIN7", LATIN7}, - {"LATIN8", LATIN8}, - {"LATIN9", LATIN9}, - {"LATIN10", LATIN10}, - {"WIN1256", WIN1256}, /* Arabic since 7.3 */ - {"WIN1258", WIN1258}, /* Vietnamese since 8.1 */ - {"WIN866", WIN866}, /* since 8.1 */ - {"WIN874", WIN874}, /* Thai since 7.3 */ - {"KOI8", KOI8R}, - {"WIN1251", WIN1251}, /* Cyrillic */ - {"WIN1252", WIN1252}, /* Western Europe since 8.1 */ - {"ISO_8859_5", ISO_8859_5}, - {"ISO_8859_6", ISO_8859_6}, - {"ISO_8859_7", ISO_8859_7}, - {"ISO_8859_8", ISO_8859_8}, - {"WIN1250", WIN1250}, /* Central Europe */ - {"WIN1253", WIN1253}, /* Greek since 8.2 */ - {"WIN1254", WIN1254}, /* Turkish since 8.2 */ - {"WIN1255", WIN1255}, /* Hebrew since 8.2 */ - {"WIN1257", WIN1257}, /* Baltic(North Europe) since 8.2 */ - - {"EUC_JIS_2004", - EUC_JIS_2004}, /* EUC for SHIFT-JIS-2004 Japanese, since 8.3 */ - {"SJIS", SJIS}, - {"BIG5", BIG5}, - {"GBK", GBK}, /* since 7.3 */ - {"UHC", UHC}, /* since 7.3 */ - {"GB18030", GB18030}, /* since 7.3 */ - {"SHIFT_JIS_2004", SHIFT_JIS_2004}, /* SHIFT-JIS-2004 Japanese, standard JIS - X 0213, since 8.3 */ - {"OTHER", OTHER}}; - -static OPENSEARCH_CS CS_Alias[] = {{"UNICODE", UTF8}, {"TCVN", WIN1258}, - {"ALT", WIN866}, {"WIN", WIN1251}, - {"KOI8R", KOI8R}, {"OTHER", OTHER}}; - -int opensearch_CS_code(const char *characterset_string) { - int i, c = -1; - - for (i = 0; CS_Table[i].code != OTHER; i++) { - if (0 == stricmp(characterset_string, CS_Table[i].name)) { - c = CS_Table[i].code; - break; - } - } - if (c < 0) { - for (i = 0; CS_Alias[i].code != OTHER; i++) { - if (0 == stricmp(characterset_string, CS_Alias[i].name)) { - c = CS_Alias[i].code; - break; - } - } - } - if (c < 0) - c = OTHER; - return (c); -} - -int opensearch_mb_maxlen(int characterset_code) { - switch (characterset_code) { - case UTF8: - return 4; - case EUC_TW: - return 4; - case EUC_JIS_2004: - case EUC_JP: - case GB18030: - return 3; - case SHIFT_JIS_2004: - case SJIS: - case BIG5: - case GBK: - case UHC: - case EUC_CN: - case EUC_KR: - case JOHAB: - return 2; - default: - return 1; - } -} - -static int opensearch_CS_stat(int stat, unsigned int character, int characterset_code) { - if (character == 0) - stat = 0; - switch (characterset_code) { - case UTF8: { - if (stat < 2 && character >= 0x80) { - if (character >= 0xfc) - stat = 6; - else if (character >= 0xf8) - stat = 5; - else if (character >= 0xf0) - stat = 4; - else if (character >= 0xe0) - stat = 3; - else if (character >= 0xc0) - stat = 2; - } else if (stat >= 2 && character > 0x7f) - stat--; - else - stat = 0; - } break; - /* SHIFT_JIS_2004 Support. */ - case SHIFT_JIS_2004: { - if (stat < 2 && character >= 0x81 && character <= 0x9f) - stat = 2; - else if (stat < 2 && character >= 0xe0 && character <= 0xef) - stat = 2; - else if (stat < 2 && character >= 0xf0 && character <= 0xfc) - stat = 2; - else if (stat == 2) - stat = 1; - else - stat = 0; - } break; - /* Shift-JIS Support. */ - case SJIS: { - if (stat < 2 && character > 0x80 - && !(character > 0x9f && character < 0xe0)) - stat = 2; - else if (stat == 2) - stat = 1; - else - stat = 0; - } break; - /* Chinese Big5 Support. */ - case BIG5: { - if (stat < 2 && character > 0xA0) - stat = 2; - else if (stat == 2) - stat = 1; - else - stat = 0; - } break; - /* Chinese GBK Support. */ - case GBK: { - if (stat < 2 && character > 0x7F) - stat = 2; - else if (stat == 2) - stat = 1; - else - stat = 0; - } break; - - /* Korian UHC Support. */ - case UHC: { - if (stat < 2 && character > 0x7F) - stat = 2; - else if (stat == 2) - stat = 1; - else - stat = 0; - } break; - - case EUC_JIS_2004: - /* 0x8f is JIS X 0212 + JIS X 0213(2) 3 byte */ - /* 0x8e is JIS X 0201 2 byte */ - /* 0xa0-0xff is JIS X 0213(1) 2 byte */ - case EUC_JP: - /* 0x8f is JIS X 0212 3 byte */ - /* 0x8e is JIS X 0201 2 byte */ - /* 0xa0-0xff is JIS X 0208 2 byte */ - { - if (stat < 3 && character == 0x8f) /* JIS X 0212 */ - stat = 3; - else if (stat != 2 - && (character == 0x8e - || character > 0xa0)) /* Half Katakana HighByte & - Kanji HighByte */ - stat = 2; - else if (stat == 2) - stat = 1; - else - stat = 0; - } - break; - - /* EUC_CN, EUC_KR, JOHAB Support */ - case EUC_CN: - case EUC_KR: - case JOHAB: { - if (stat < 2 && character > 0xa0) - stat = 2; - else if (stat == 2) - stat = 1; - else - stat = 0; - } break; - case EUC_TW: { - if (stat < 4 && character == 0x8e) - stat = 4; - else if (stat == 4 && character > 0xa0) - stat = 3; - else if ((stat == 3 || stat < 2) && character > 0xa0) - stat = 2; - else if (stat == 2) - stat = 1; - else - stat = 0; - } break; - /*Chinese GB18030 support.Added by Bill Huang - * */ - case GB18030: { - if (stat < 2 && character > 0x80) - stat = 2; - else if (stat == 2) { - if (character >= 0x30 && character <= 0x39) - stat = 3; - else - stat = 1; - } else if (stat == 3) { - if (character >= 0x30 && character <= 0x39) - stat = 1; - else - stat = 3; - } else - stat = 0; - } break; - default: { - stat = 0; - } break; - } - return stat; -} - -/* - * This function is used to know the encoding corresponding to - * the current locale. - */ -const char *derive_locale_encoding(const char *dbencoding) { - UNUSED(dbencoding); - const char *wenc = NULL; -#ifdef WIN32 - int acp; -#endif /* WIN32 */ - - if (wenc = getenv("ESCLIENTENCODING"), - NULL != wenc) /* environmnt variable */ - return wenc; -#ifdef WIN32 - acp = GetACP(); - if (acp >= 1251 && acp <= 1258) { - if (stricmp(dbencoding, "SQL_ASCII") == 0) - return wenc; - } - switch (acp) { - case 932: - wenc = "SJIS"; - break; - case 936: - wenc = "GBK"; - break; - case 949: - wenc = "UHC"; - break; - case 950: - wenc = "BIG5"; - break; - case 1250: - wenc = "WIN1250"; - break; - case 1251: - wenc = "WIN1251"; - break; - case 1256: - wenc = "WIN1256"; - break; - case 1252: - if (strnicmp(dbencoding, "LATIN", 5) == 0) - break; - wenc = "WIN1252"; - break; - case 1258: - wenc = "WIN1258"; - break; - case 1253: - wenc = "WIN1253"; - break; - case 1254: - wenc = "WIN1254"; - break; - case 1255: - wenc = "WIN1255"; - break; - case 1257: - wenc = "WIN1257"; - break; - } -#else - // TODO #34 - Investigate locale handling on Mac -#endif /* WIN32 */ - return wenc; -} - -void encoded_str_constr(encoded_str *encstr, int ccsc, const char *str) { - encstr->ccsc = ccsc; - encstr->encstr = (const UCHAR *)str; - encstr->pos = -1; - encstr->ccst = 0; -} -int encoded_nextchar(encoded_str *encstr) { - int chr; - - if (encstr->pos >= 0 && !encstr->encstr[encstr->pos]) - return 0; - chr = encstr->encstr[++encstr->pos]; - encstr->ccst = - opensearch_CS_stat(encstr->ccst, (unsigned int)chr, encstr->ccsc); - return chr; -} - -int encoded_byte_check(encoded_str *encstr, size_t abspos) { - int chr; - - chr = encstr->encstr[encstr->pos = abspos]; - encstr->ccst = - opensearch_CS_stat(encstr->ccst, (unsigned int)chr, encstr->ccsc); - return chr; -} diff --git a/sql-odbc/src/sqlodbc/multibyte.h b/sql-odbc/src/sqlodbc/multibyte.h deleted file mode 100644 index 26bfb6f061..0000000000 --- a/sql-odbc/src/sqlodbc/multibyte.h +++ /dev/null @@ -1,124 +0,0 @@ -#ifndef __MULTIBUYTE_H__ -#define __MULTIBUYTE_H__ - -/* - * - * Multibyte library header - * - */ -#include "opensearch_odbc.h" -#include "qresult.h" - -/* Elastic client encoding */ -enum { - SQL_ASCII = 0 /* SQL/ASCII */ - , - EUC_JP /* EUC for Japanese */ - , - EUC_CN /* EUC for Chinese */ - , - EUC_KR /* EUC for Korean */ - , - EUC_TW /* EUC for Taiwan */ - , - JOHAB, - UTF8 /* Unicode UTF-8 */ - , - MULE_INTERNAL /* Mule internal code */ - , - LATIN1 /* ISO-8859 Latin 1 */ - , - LATIN2 /* ISO-8859 Latin 2 */ - , - LATIN3 /* ISO-8859 Latin 3 */ - , - LATIN4 /* ISO-8859 Latin 4 */ - , - LATIN5 /* ISO-8859 Latin 5 */ - , - LATIN6 /* ISO-8859 Latin 6 */ - , - LATIN7 /* ISO-8859 Latin 7 */ - , - LATIN8 /* ISO-8859 Latin 8 */ - , - LATIN9 /* ISO-8859 Latin 9 */ - , - LATIN10 /* ISO-8859 Latin 10 */ - , - WIN1256 /* Arabic Windows */ - , - WIN1258 /* Vietnamese Windows */ - , - WIN866 /* Alternativny Variant (MS-DOS CP866) */ - , - WIN874 /* Thai Windows */ - , - KOI8R /* KOI8-R/U */ - , - WIN1251 /* Cyrillic Windows */ - , - WIN1252 /* Western Europe Windows */ - , - ISO_8859_5 /* ISO-8859-5 */ - , - ISO_8859_6 /* ISO-8859-6 */ - , - ISO_8859_7 /* ISO-8859-7 */ - , - ISO_8859_8 /* ISO-8859-8 */ - , - WIN1250 /* Central Europe Windows */ - , - WIN1253 /* Greek Windows */ - , - WIN1254 /* Turkish Windows */ - , - WIN1255 /* Hebrew Windows */ - , - WIN1257 /* Baltic(North Europe) Windows */ - , - EUC_JIS_2004 /* EUC for SHIFT-JIS-2004 Japanese */ - , - SJIS /* Shift JIS */ - , - BIG5 /* Big5 */ - , - GBK /* GBK */ - , - UHC /* UHC */ - , - GB18030 /* GB18030 */ - , - SHIFT_JIS_2004 /* SHIFT-JIS-2004 Japanese, JIS X 0213 */ - , - OTHER = -1 -}; - -/* Old Type Compatible */ -typedef struct { - int ccsc; - const UCHAR *encstr; - ssize_t pos; - int ccst; -} encoded_str; - -#ifdef __cplusplus -extern "C" { -#endif -int opensearch_CS_code(const char *stat_string); -int encoded_nextchar(encoded_str *encstr); -int encoded_byte_check(encoded_str *encstr, size_t abspos); -const char *derive_locale_encoding(const char *dbencoding); -int opensearch_mb_maxlen(int characterset_code); -#ifdef __cplusplus -} -#endif -#define ENCODE_STATUS(enc) ((enc).ccst) -#define ENCODE_PTR(enc) ((enc).encstr + (enc).pos) -#define MBCS_NON_ASCII(enc) (0 != (enc).ccst || (enc).encstr[(enc).pos] >= 0x80) - -void encoded_str_constr(encoded_str *encstr, int ccsc, const char *str); -#define make_encoded_str(encstr, conn, str) \ - encoded_str_constr(encstr, conn->ccsc, str) -#endif /* __MULTIBUYTE_H__ */ diff --git a/sql-odbc/src/sqlodbc/mylog.c b/sql-odbc/src/sqlodbc/mylog.c deleted file mode 100644 index 2933a1cab0..0000000000 --- a/sql-odbc/src/sqlodbc/mylog.c +++ /dev/null @@ -1,527 +0,0 @@ -#define _MYLOG_FUNCS_IMPLEMENT_ -#include -#include -#include -#include -#include -#include - -#include "dlg_specific.h" -#include "opensearch_odbc.h" -#include "misc.h" -#include "opensearch_helper.h" - -#ifndef WIN32 -#include -#include -#include -#include -#define GENERAL_ERRNO (errno) -#define GENERAL_ERRNO_SET(e) (errno = e) -#else -#define GENERAL_ERRNO (GetLastError()) -#define GENERAL_ERRNO_SET(e) SetLastError(e) -#include /* Byron: is this where Windows keeps def. - * of getpid ? */ -#endif - -#ifdef WIN32 -#define DIRSEPARATOR "\\" -#define OPENSEARCH_BINARY O_BINARY -#define OPENSEARCH_BINARY_R "rb" -#define OPENSEARCH_BINARY_W "wb" -#define OPENSEARCH_BINARY_A "ab" -#else -#define DIRSEPARATOR "/" -#define OPENSEARCH_BINARY 0 -#define OPENSEARCH_BINARY_R "r" -#define OPENSEARCH_BINARY_W "w" -#define OPENSEARCH_BINARY_A "a" -#endif /* WIN32 */ - -static char *logdir = NULL; - -void generate_filename(const char *dirname, const char *prefix, char *filename, - size_t filenamelen) { - const char *exename = GetExeProgramName(); -#ifdef WIN32 - int pid; - - pid = _getpid(); -#else - pid_t pid; - struct passwd *ptr; - - ptr = getpwuid(getuid()); - pid = getpid(); -#endif - if (dirname == 0 || filename == 0) - return; - - snprintf(filename, filenamelen, "%s%s", dirname, DIRSEPARATOR); - if (prefix != 0) - strlcat(filename, prefix, filenamelen); - if (exename[0]) - snprintfcat(filename, filenamelen, "%s_", exename); -#ifndef WIN32 - if (ptr) - strlcat(filename, ptr->pw_name, filenamelen); -#endif - snprintfcat(filename, filenamelen, "%u%s", pid, ".log"); - return; -} - -static void generate_homefile(const char *prefix, char *filename, - size_t filenamelen) { - char dir[PATH_MAX]; -#ifdef WIN32 - const char *ptr; - - dir[0] = '\0'; - if (ptr = getenv("HOMEDRIVE"), NULL != ptr) - strlcat(dir, ptr, filenamelen); - if (ptr = getenv("HOMEPATH"), NULL != ptr) - strlcat(dir, ptr, filenamelen); -#else - STRCPY_FIXED(dir, "~"); -#endif /* WIN32 */ - generate_filename(dir, prefix, filename, filenamelen); - - return; -} - -#ifdef WIN32 -static char exename[_MAX_FNAME]; -#elif defined MAXNAMELEN -static char exename[MAXNAMELEN]; -#else -static char exename[256]; -#endif - -const char *GetExeProgramName() { - static int init = 1; - - if (init) { - UCHAR *p; -#ifdef WIN32 - char pathname[_MAX_PATH]; - - if (GetModuleFileName(NULL, pathname, sizeof(pathname)) > 0) - _splitpath(pathname, NULL, NULL, exename, NULL); -#else - CSTR flist[] = {"/proc/self/exe", "/proc/curproc/file", - "/proc/curproc/exe"}; - unsigned long i; - char path_name[256]; - - for (i = 0; i < sizeof(flist) / sizeof(flist[0]); i++) { - if (readlink(flist[i], path_name, sizeof(path_name)) > 0) { - /* fprintf(stderr, "i=%d pathname=%s\n", i, path_name); */ - STRCPY_FIXED(exename, po_basename(path_name)); - break; - } - } -#endif /* WIN32 */ - for (p = (UCHAR *)exename; '\0' != *p; p++) { - if (isalnum(*p)) - continue; - switch (*p) { - case '_': - case '-': - continue; - } - *p = '\0'; /* avoid multi bytes for safety */ - break; - } - init = 0; - } - return exename; -} - -static void *qlog_cs, *mylog_cs; - -static int mylog_on = OPENSEARCH_WARNING, qlog_on = OPENSEARCH_WARNING; - -#define INIT_QLOG_CS XPlatformInitializeCriticalSection(&qlog_cs) -#define ENTER_QLOG_CS XPlatformEnterCriticalSection(qlog_cs) -#define LEAVE_QLOG_CS XPlatformLeaveCriticalSection(qlog_cs) -#define DELETE_QLOG_CS XPlatformDeleteCriticalSection(&qlog_cs) -#define INIT_MYLOG_CS XPlatformInitializeCriticalSection(&mylog_cs) -#define ENTER_MYLOG_CS XPlatformEnterCriticalSection(mylog_cs) -#define LEAVE_MYLOG_CS XPlatformLeaveCriticalSection(mylog_cs) -#define DELETE_MYLOG_CS XPlatformDeleteCriticalSection(&mylog_cs) - -#define MYLOGFILE "mylog_" -#ifndef WIN32 -#define MYLOGDIR "/tmp" -#else -#define MYLOGDIR "c:" -#endif /* WIN32 */ - -#define QLOGFILE "elasticodbc_" -#ifndef WIN32 -#define QLOGDIR "/tmp" -#else -#define QLOGDIR "c:" -#endif /* WIN32 */ - -int get_mylog(void) { - return mylog_on; -} -int get_qlog(void) { - return qlog_on; -} - -const char *po_basename(const char *path) { - char *p; - - if (p = strrchr(path, DIRSEPARATOR[0]), NULL != p) - return p + 1; - return path; -} - -void logs_on_off(int cnopen, int mylog_onoff, int qlog_onoff) { - static int mylog_on_count = 0, mylog_off_count = 0, qlog_on_count = 0, - qlog_off_count = 0; - - ENTER_MYLOG_CS; - if (mylog_onoff) - mylog_on_count += cnopen; - else - mylog_off_count += cnopen; - if (mylog_on_count > 0) { - if (mylog_onoff > mylog_on) - mylog_on = mylog_onoff; - else if (mylog_on < 1) - mylog_on = 1; - } else if (mylog_off_count > 0) - mylog_on = 0; - else if (getGlobalDebug() > 0) - mylog_on = getGlobalDebug(); - LEAVE_MYLOG_CS; - - ENTER_QLOG_CS; - if (qlog_onoff) - qlog_on_count += cnopen; - else - qlog_off_count += cnopen; - if (qlog_on_count > 0) { - if (qlog_onoff > qlog_on) - qlog_on = qlog_onoff; - else if (qlog_on < 1) - qlog_on = 1; - } else if (qlog_off_count > 0) - qlog_on = 0; - else if (getGlobalCommlog() > 0) - qlog_on = getGlobalCommlog(); - LEAVE_QLOG_CS; - MYLOG(OPENSEARCH_DEBUG, "mylog_on=%d qlog_on=%d\n", mylog_on, qlog_on); -} - -#ifdef WIN32 -#define LOGGING_PROCESS_TIME -#include -#endif /* WIN32 */ -#ifdef LOGGING_PROCESS_TIME -#include -static DWORD start_time = 0; -#endif /* LOGGING_PROCESS_TIME */ -static FILE *MLOGFP = NULL; - -static void MLOG_open() { - char filebuf[80], errbuf[160]; - BOOL open_error = FALSE; - - // TODO (#585): Add option to log to stderr stream - // MLOGFP = stderr; - if (MLOGFP) - return; - - generate_filename(logdir ? logdir : MYLOGDIR, MYLOGFILE, filebuf, - sizeof(filebuf)); - MLOGFP = fopen(filebuf, OPENSEARCH_BINARY_A); - if (!MLOGFP) { - int lasterror = GENERAL_ERRNO; - - open_error = TRUE; - SPRINTF_FIXED(errbuf, "%s open error %d\n", filebuf, lasterror); - generate_homefile(MYLOGFILE, filebuf, sizeof(filebuf)); - MLOGFP = fopen(filebuf, OPENSEARCH_BINARY_A); - } - if (MLOGFP) { - if (open_error) - fputs(errbuf, MLOGFP); - } -} - -static int mylog_misc(unsigned int option, const char *fmt, va_list args) { - // va_list args; - int gerrno; - BOOL log_threadid = option; - - gerrno = GENERAL_ERRNO; - ENTER_MYLOG_CS; -#ifdef LOGGING_PROCESS_TIME - if (!start_time) - start_time = timeGetTime(); -#endif /* LOGGING_PROCESS_TIME */ - // va_start(args, fmt); - - if (!MLOGFP) { - MLOG_open(); - if (!MLOGFP) - mylog_on = 0; - } - - if (MLOGFP) { - if (log_threadid) { -#ifdef WIN_MULTITHREAD_SUPPORT -#ifdef LOGGING_PROCESS_TIME - DWORD proc_time = timeGetTime() - start_time; - fprintf(MLOGFP, "[%u-%d.%03d]", GetCurrentThreadId(), - proc_time / 1000, proc_time % 1000); -#else - fprintf(MLOGFP, "[%u]", GetCurrentThreadId()); -#endif /* LOGGING_PROCESS_TIME */ -#endif /* WIN_MULTITHREAD_SUPPORT */ -#if defined(POSIX_MULTITHREAD_SUPPORT) - fprintf(MLOGFP, "[%lx]", (unsigned long int)pthread_self()); -#endif /* POSIX_MULTITHREAD_SUPPORT */ - } - vfprintf(MLOGFP, fmt, args); - fflush(MLOGFP); - } - - // va_end(args); - LEAVE_MYLOG_CS; - GENERAL_ERRNO_SET(gerrno); - - return 1; -} - -DLL_DECLARE int mylog(const char *fmt, ...) { - int ret = 0; - unsigned int option = 1; - va_list args; - - if (!mylog_on) - return ret; - - va_start(args, fmt); - ret = mylog_misc(option, fmt, args); - va_end(args); - return ret; -} - -DLL_DECLARE int myprintf(const char *fmt, ...) { - int ret = 0; - va_list args; - - va_start(args, fmt); - ret = mylog_misc(0, fmt, args); - va_end(args); - return ret; -} - -static void mylog_initialize(void) { - INIT_MYLOG_CS; -} -static void mylog_finalize(void) { - mylog_on = 0; - if (MLOGFP) { - fclose(MLOGFP); - MLOGFP = NULL; - } - DELETE_MYLOG_CS; -} - -static FILE *QLOGFP = NULL; - -static int qlog_misc(unsigned int option, const char *fmt, va_list args) { - char filebuf[80]; - int gerrno; - - if (!qlog_on) - return 0; - - gerrno = GENERAL_ERRNO; - ENTER_QLOG_CS; -#ifdef LOGGING_PROCESS_TIME - if (!start_time) - start_time = timeGetTime(); -#endif /* LOGGING_PROCESS_TIME */ - - if (!QLOGFP) { - generate_filename(logdir ? logdir : QLOGDIR, QLOGFILE, filebuf, - sizeof(filebuf)); - QLOGFP = fopen(filebuf, OPENSEARCH_BINARY_A); - if (!QLOGFP) { - generate_homefile(QLOGFILE, filebuf, sizeof(filebuf)); - QLOGFP = fopen(filebuf, OPENSEARCH_BINARY_A); - } - if (!QLOGFP) - qlog_on = 0; - } - - if (QLOGFP) { - if (option) { -#ifdef LOGGING_PROCESS_TIME - DWORD proc_time = timeGetTime() - start_time; - fprintf(QLOGFP, "[%d.%03d]", proc_time / 1000, proc_time % 1000); -#endif /* LOGGING_PROCESS_TIME */ - } - vfprintf(QLOGFP, fmt, args); - fflush(QLOGFP); - } - - LEAVE_QLOG_CS; - GENERAL_ERRNO_SET(gerrno); - - return 1; -} -int qlog(const char *fmt, ...) { - int ret = 0; - unsigned int option = 1; - va_list args; - - if (!qlog_on) - return ret; - - va_start(args, fmt); - ret = qlog_misc(option, fmt, args); - va_end(args); - return ret; -} -int qprintf(char *fmt, ...) { - int ret = 0; - va_list args; - - va_start(args, fmt); - ret = qlog_misc(0, fmt, args); - va_end(args); - return ret; -} - -static void qlog_initialize(void) { - INIT_QLOG_CS; -} -static void qlog_finalize(void) { - qlog_on = 0; - if (QLOGFP) { - fclose(QLOGFP); - QLOGFP = NULL; - } - DELETE_QLOG_CS; -} - -static int globalDebug = -1; -int getGlobalDebug() { - char temp[16]; - - if (globalDebug >= 0) - return globalDebug; - /* Debug is stored in the driver section */ - SQLGetPrivateProfileString(DBMS_NAME, INI_LOG_LEVEL, "", temp, sizeof(temp), - ODBCINST_INI); - if (temp[0]) - globalDebug = atoi(temp); - else - globalDebug = DEFAULT_LOGLEVEL; - - return globalDebug; -} - -int setGlobalDebug(int val) { - return (globalDebug = val); -} - -static int globalCommlog = -1; -int getGlobalCommlog() { - char temp[16]; - - if (globalCommlog >= 0) - return globalCommlog; - /* Commlog is stored in the driver section */ - SQLGetPrivateProfileString(DBMS_NAME, INI_LOG_LEVEL, "", temp, sizeof(temp), - ODBCINST_INI); - if (temp[0]) - globalCommlog = atoi(temp); - else - globalCommlog = DEFAULT_LOGLEVEL; - - return globalCommlog; -} - -int setGlobalCommlog(int val) { - return (globalCommlog = val); -} - -int writeGlobalLogs() { - char temp[10]; - - ITOA_FIXED(temp, globalDebug); - SQLWritePrivateProfileString(DBMS_NAME, INI_LOG_LEVEL, temp, ODBCINST_INI); - ITOA_FIXED(temp, globalCommlog); - SQLWritePrivateProfileString(DBMS_NAME, INI_LOG_LEVEL, temp, ODBCINST_INI); - return 0; -} - -void logInstallerError(int ret, const char *dir) { - DWORD err = (DWORD)ret; - char msg[SQL_MAX_MESSAGE_LENGTH] = ""; - msg[0] = '\0'; - ret = SQLInstallerError(1, &err, msg, sizeof(msg), NULL); - if (msg[0] != '\0') - MYLOG(OPENSEARCH_DEBUG, "Dir= %s ErrorMsg = %s\n", dir, msg); -} - -int getLogDir(char *dir, int dirmax) { - int ret = SQLGetPrivateProfileString(DBMS_NAME, INI_LOG_OUTPUT, "", - dir, dirmax, ODBCINST_INI); - if (!ret) - logInstallerError(ret, dir); - return ret; -} - -int setLogDir(const char *dir) { - int ret = SQLWritePrivateProfileString(DBMS_NAME, INI_LOG_OUTPUT, dir, - ODBCINST_INI); - if (!ret) - logInstallerError(ret, dir); - return ret; -} - -/* - * This function starts a logging out of connections according the ODBCINST.INI - * portion of the DBMS_NAME registry. - */ -static void start_logging() { - /* - * GlobalDebug or GlobalCommlog means whether take mylog or commlog - * out of the connection time or not but doesn't mean the default of - * ci->drivers.debug(commlog). - */ - logs_on_off(0, 0, 0); - mylog("\t%s:Global.debug&commlog=%d&%d\n", __FUNCTION__, getGlobalDebug(), - getGlobalCommlog()); -} - -void InitializeLogging(void) { - char dir[PATH_MAX]; - getLogDir(dir, sizeof(dir)); - if (dir[0]) - logdir = strdup(dir); - mylog_initialize(); - qlog_initialize(); - start_logging(); - MYLOG(OPENSEARCH_DEBUG, "Log Output Dir: %s\n", logdir); -} - -void FinalizeLogging(void) { - mylog_finalize(); - qlog_finalize(); - if (logdir) { - free(logdir); - logdir = NULL; - } -} diff --git a/sql-odbc/src/sqlodbc/mylog.h b/sql-odbc/src/sqlodbc/mylog.h deleted file mode 100644 index c7ee6710c7..0000000000 --- a/sql-odbc/src/sqlodbc/mylog.h +++ /dev/null @@ -1,142 +0,0 @@ -#ifndef __MYLOG_H__ -#define __MYLOG_H__ - -#undef DLL_DECLARE -#ifdef WIN32 -#ifdef _MYLOG_FUNCS_IMPLEMENT_ -#define DLL_DECLARE _declspec(dllexport) -#else -#ifdef _MYLOG_FUNCS_IMPORT_ -#define DLL_DECLARE _declspec(dllimport) -#else -#define DLL_DECLARE -#endif /* _MYLOG_FUNCS_IMPORT_ */ -#endif /* _MYLOG_FUNCS_IMPLEMENT_ */ -#else -#define DLL_DECLARE -#endif /* WIN32 */ - -#include -#ifndef WIN32 -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef __GNUC__ -#define __attribute__(x) -#endif - -DLL_DECLARE int mylog(const char *fmt, ...) - __attribute__((format(OPENSEARCH_PRINTF_ATTRIBUTE, 1, 2))); -DLL_DECLARE int myprintf(const char *fmt, ...) - __attribute__((format(OPENSEARCH_PRINTF_ATTRIBUTE, 1, 2))); - -extern int qlog(const char *fmt, ...) - __attribute__((format(OPENSEARCH_PRINTF_ATTRIBUTE, 1, 2))); -extern int qprintf(char *fmt, ...) - __attribute__((format(OPENSEARCH_PRINTF_ATTRIBUTE, 1, 2))); - -const char *po_basename(const char *path); - -#define PREPEND_FMT "%10.10s[%s]%d: " -#define PREPEND_ITEMS , po_basename(__FILE__), __FUNCTION__, __LINE__ -#define QLOG_MARK "[QLOG]" - -#if defined(__GNUC__) && !defined(__APPLE__) -#define MYLOG(level, fmt, ...) \ - (level < get_mylog() ? mylog(PREPEND_FMT fmt PREPEND_ITEMS, ##__VA_ARGS__) \ - : 0) -#define MYPRINTF(level, fmt, ...) \ - (level < get_mylog() ? myprintf((fmt), ##__VA_ARGS__) : 0) -#define QLOG(level, fmt, ...) \ - ((level < get_qlog() ? qlog((fmt), ##__VA_ARGS__) : 0), \ - MYLOG(level, QLOG_MARK fmt, ##__VA_ARGS__)) -#define QPRINTF(level, fmt, ...) \ - ((level < get_qlog() ? qprintf((fmt), ##__VA_ARGS__) : 0), \ - MYPRINTF(level, (fmt), ##__VA_ARGS__)) -#elif defined WIN32 /* && _MSC_VER > 1800 */ -#define MYLOG(level, fmt, ...) \ - ((int)level <= get_mylog() \ - ? mylog(PREPEND_FMT fmt PREPEND_ITEMS, __VA_ARGS__) \ - : (printf || printf((fmt), __VA_ARGS__))) -#define MYPRINTF(level, fmt, ...) \ - ((int)level <= get_mylog() ? myprintf(fmt, __VA_ARGS__) \ - : (printf || printf((fmt), __VA_ARGS__))) -#define QLOG(level, fmt, ...) \ - (((int)level <= get_qlog() ? qlog((fmt), __VA_ARGS__) \ - : (printf || printf(fmt, __VA_ARGS__))), \ - MYLOG(level, QLOG_MARK fmt, __VA_ARGS__)) -#define QPRINTF(level, fmt, ...) \ - (((int)level <= get_qlog() ? qprintf(fmt, __VA_ARGS__) \ - : (printf || printf((fmt), __VA_ARGS__))), \ - MYPRINTF(level, (fmt), __VA_ARGS__)) -#else -#define MYLOG(level, ...) \ - do { \ - _Pragma("clang diagnostic push"); \ - _Pragma("clang diagnostic ignored \"-Wformat-pedantic\""); \ - (level < get_mylog() \ - ? (mylog(PREPEND_FMT PREPEND_ITEMS), myprintf(__VA_ARGS__)) \ - : 0); \ - _Pragma("clang diagnostic pop"); \ - } while (0) -#define MYPRINTF(level, ...) \ - do { \ - _Pragma("clang diagnostic push"); \ - _Pragma("clang diagnostic ignored \"-Wformat-pedantic\""); \ - (level < get_mylog() ? myprintf(__VA_ARGS__) : 0); \ - _Pragma("clang diagnostic pop"); \ - } while (0) -#define QLOG(level, ...) \ - do { \ - _Pragma("clang diagnostic push"); \ - _Pragma("clang diagnostic ignored \"-Wformat-pedantic\""); \ - (level < get_qlog() ? qlog(__VA_ARGS__) : 0); \ - MYLOG(level, QLOG_MARK); \ - MYPRINTF(level, __VA_ARGS__); \ - _Pragma("clang diagnostic pop"); \ - } while (0) -#define QPRINTF(level, ...) \ - do { \ - _Pragma("clang diagnostic push"); \ - _Pragma("clang diagnostic ignored \"-Wformat-pedantic\""); \ - (level < get_qlog() ? qprintf(__VA_ARGS__) : 0); \ - MYPRINTF(level, __VA_ARGS__); \ - _Pragma("clang diagnostic pop"); \ - } while (0) -#endif /* __GNUC__ */ - -enum OpenSearchLogLevel { - // Prefixing with OPENSEARCH_ because C does not support namespaces and we may get a - // collision, given how common these names are - OPENSEARCH_OFF, - OPENSEARCH_FATAL, - OPENSEARCH_ERROR, - OPENSEARCH_WARNING, - OPENSEARCH_INFO, - OPENSEARCH_DEBUG, - OPENSEARCH_TRACE, - OPENSEARCH_ALL -}; - -int get_qlog(void); -int get_mylog(void); - -int getGlobalDebug(); -int setGlobalDebug(int val); -int getGlobalCommlog(); -int setGlobalCommlog(int val); -int writeGlobalLogs(); -int getLogDir(char *dir, int dirmax); -int setLogDir(const char *dir); - -void InitializeLogging(void); -void FinalizeLogging(void); - -#ifdef __cplusplus -} -#endif -#endif /* __MYLOG_H__ */ diff --git a/sql-odbc/src/sqlodbc/odbcapi.c b/sql-odbc/src/sqlodbc/odbcapi.c deleted file mode 100644 index 58cd9dff5d..0000000000 --- a/sql-odbc/src/sqlodbc/odbcapi.c +++ /dev/null @@ -1,1383 +0,0 @@ -#include -#include - -#include "environ.h" -#include "opensearch_odbc.h" -#include "loadlib.h" -#include "misc.h" -#include "opensearch_apifunc.h" -#include "opensearch_connection.h" -#include "opensearch_driver_connect.h" -#include "opensearch_info.h" -#include "opensearch_statement.h" -#include "qresult.h" -#include "statement.h" - -BOOL SC_connection_lost_check(StatementClass *stmt, const char *funcname) { - ConnectionClass *conn = SC_get_conn(stmt); - char message[64]; - - if (NULL != conn->opensearchconn) - return FALSE; - SC_clear_error(stmt); - SPRINTF_FIXED(message, "%s unable due to the connection lost", funcname); - SC_set_error(stmt, STMT_COMMUNICATION_ERROR, message, funcname); - return TRUE; -} - -RETCODE SQL_API SQLBindCol(HSTMT StatementHandle, SQLUSMALLINT ColumnNumber, - SQLSMALLINT TargetType, PTR TargetValue, - SQLLEN BufferLength, SQLLEN *StrLen_or_Ind) { - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - ret = OPENSEARCHAPI_BindCol(StatementHandle, ColumnNumber, TargetType, TargetValue, - BufferLength, StrLen_or_Ind); - LEAVE_STMT_CS(stmt); - return ret; -} - -RETCODE SQL_API SQLCancel(HSTMT StatementHandle) { - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (!StatementHandle) - return SQL_INVALID_HANDLE; - if (SC_connection_lost_check((StatementClass *)StatementHandle, - __FUNCTION__)) - return SQL_ERROR; - return OPENSEARCHAPI_Cancel(StatementHandle); -} - -static BOOL theResultIsEmpty(const StatementClass *stmt) { - QResultClass *res = SC_get_Result(stmt); - if (NULL == res) - return FALSE; - return (0 == QR_get_num_total_tuples(res)); -} - -#ifndef UNICODE_SUPPORTXX -RETCODE SQL_API SQLColumns(HSTMT StatementHandle, SQLCHAR *CatalogName, - SQLSMALLINT NameLength1, SQLCHAR *SchemaName, - SQLSMALLINT NameLength2, SQLCHAR *TableName, - SQLSMALLINT NameLength3, SQLCHAR *ColumnName, - SQLSMALLINT NameLength4) { - CSTR func = "SQLColumns"; - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - SQLCHAR *ctName = CatalogName, *scName = SchemaName, *tbName = TableName, - *clName = ColumnName; - UWORD flag = PODBC_SEARCH_PUBLIC_SCHEMA; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (stmt->options.metadata_id) - flag |= PODBC_NOT_SEARCH_PATTERN; - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_Columns(StatementHandle, ctName, NameLength1, scName, - NameLength2, tbName, NameLength3, clName, - NameLength4, flag, 0, 0); - if (SQL_SUCCESS == ret && theResultIsEmpty(stmt)) { - BOOL ifallupper = TRUE, reexec = FALSE; - SQLCHAR *newCt = NULL, *newSc = NULL, *newTb = NULL, *newCl = NULL; - ConnectionClass *conn = SC_get_conn(stmt); - - if (newCt = make_lstring_ifneeded(conn, CatalogName, NameLength1, - ifallupper), - NULL != newCt) { - ctName = newCt; - reexec = TRUE; - } - if (newSc = make_lstring_ifneeded(conn, SchemaName, NameLength2, - ifallupper), - NULL != newSc) { - scName = newSc; - reexec = TRUE; - } - if (newTb = - make_lstring_ifneeded(conn, TableName, NameLength3, ifallupper), - NULL != newTb) { - tbName = newTb; - reexec = TRUE; - } - if (newCl = make_lstring_ifneeded(conn, ColumnName, NameLength4, - ifallupper), - NULL != newCl) { - clName = newCl; - reexec = TRUE; - } - if (reexec) { - ret = OPENSEARCHAPI_Columns(StatementHandle, ctName, NameLength1, scName, - NameLength2, tbName, NameLength3, clName, - NameLength4, flag, 0, 0); - if (newCt) - free(newCt); - if (newSc) - free(newSc); - if (newTb) - free(newTb); - if (newCl) - free(newCl); - } - } - LEAVE_STMT_CS(stmt); - return ret; -} - -RETCODE SQL_API SQLConnect(HDBC ConnectionHandle, SQLCHAR *ServerName, - SQLSMALLINT NameLength1, SQLCHAR *UserName, - SQLSMALLINT NameLength2, SQLCHAR *Authentication, - SQLSMALLINT NameLength3) { - RETCODE ret; - ConnectionClass *conn = (ConnectionClass *)ConnectionHandle; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ENTER_CONN_CS(conn); - CC_clear_error(conn); - ret = OPENSEARCHAPI_Connect(ConnectionHandle, ServerName, NameLength1, UserName, - NameLength2, Authentication, NameLength3); - LEAVE_CONN_CS(conn); - return ret; -} - -RETCODE SQL_API SQLDriverConnect(HDBC hdbc, HWND hwnd, SQLCHAR *szConnStrIn, - SQLSMALLINT cbConnStrIn, SQLCHAR *szConnStrOut, - SQLSMALLINT cbConnStrOutMax, - SQLSMALLINT *pcbConnStrOut, - SQLUSMALLINT fDriverCompletion) { - RETCODE ret; - ConnectionClass *conn = (ConnectionClass *)hdbc; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ENTER_CONN_CS(conn); - CC_clear_error(conn); - ret = - OPENSEARCHAPI_DriverConnect(hdbc, hwnd, szConnStrIn, cbConnStrIn, szConnStrOut, - cbConnStrOutMax, pcbConnStrOut, fDriverCompletion); - LEAVE_CONN_CS(conn); - return ret; -} -RETCODE SQL_API SQLBrowseConnect(HDBC hdbc, SQLCHAR *szConnStrIn, - SQLSMALLINT cbConnStrIn, SQLCHAR *szConnStrOut, - SQLSMALLINT cbConnStrOutMax, - SQLSMALLINT *pcbConnStrOut) { - RETCODE ret; - ConnectionClass *conn = (ConnectionClass *)hdbc; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ENTER_CONN_CS(conn); - CC_clear_error(conn); - ret = OPENSEARCHAPI_BrowseConnect(hdbc, szConnStrIn, cbConnStrIn, szConnStrOut, - cbConnStrOutMax, pcbConnStrOut); - LEAVE_CONN_CS(conn); - return ret; -} - -RETCODE SQL_API SQLDataSources(HENV EnvironmentHandle, SQLUSMALLINT Direction, - SQLCHAR *ServerName, SQLSMALLINT BufferLength1, - SQLSMALLINT *NameLength1, SQLCHAR *Description, - SQLSMALLINT BufferLength2, - SQLSMALLINT *NameLength2) { - UNUSED(EnvironmentHandle, Direction, ServerName, BufferLength1, NameLength1, - Description, BufferLength2, NameLength2); - MYLOG(OPENSEARCH_TRACE, "entering\n"); - return SQL_ERROR; -} - -RETCODE SQL_API SQLDescribeCol(HSTMT StatementHandle, SQLUSMALLINT ColumnNumber, - SQLCHAR *ColumnName, SQLSMALLINT BufferLength, - SQLSMALLINT *NameLength, SQLSMALLINT *DataType, - SQLULEN *ColumnSize, SQLSMALLINT *DecimalDigits, - SQLSMALLINT *Nullable) { - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - ret = OPENSEARCHAPI_DescribeCol(StatementHandle, ColumnNumber, ColumnName, - BufferLength, NameLength, DataType, ColumnSize, - DecimalDigits, Nullable); - LEAVE_STMT_CS(stmt); - return ret; -} -#endif /* UNICODE_SUPPORTXX */ - -RETCODE SQL_API SQLDisconnect(HDBC ConnectionHandle) { - RETCODE ret; - ConnectionClass *conn = (ConnectionClass *)ConnectionHandle; - - MYLOG(OPENSEARCH_TRACE, "entering for %p\n", ConnectionHandle); -#ifdef _HANDLE_ENLIST_IN_DTC_ - if (CC_is_in_global_trans(conn)) - CALL_DtcOnDisconnect(conn); -#endif /* _HANDLE_ENLIST_IN_DTC_ */ - ENTER_CONN_CS(conn); - CC_clear_error(conn); - ret = OPENSEARCHAPI_Disconnect(ConnectionHandle); - LEAVE_CONN_CS(conn); - return ret; -} - -#ifndef UNICODE_SUPPORTXX -RETCODE SQL_API SQLExecDirect(HSTMT StatementHandle, SQLCHAR *StatementText, - SQLINTEGER TextLength) { - if (StatementHandle == NULL) - return SQL_ERROR; - StatementClass *stmt = (StatementClass *)StatementHandle; - - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - // Enter critical - ENTER_STMT_CS(stmt); - - // Clear error and rollback - SC_clear_error(stmt); - - // Execute statement if statement is ready - RETCODE ret = SQL_ERROR; - if (!SC_opencheck(stmt, "SQLExecDirect")) - ret = OPENSEARCHAPI_ExecDirect(StatementHandle, StatementText, TextLength, 1); - - // Exit critical - LEAVE_STMT_CS(stmt); - - return ret; -} -#endif /* UNICODE_SUPPORTXX */ - -RETCODE SQL_API SQLExecute(HSTMT StatementHandle) { - if (StatementHandle == NULL) - return SQL_ERROR; - - StatementClass *stmt = (StatementClass *)StatementHandle; - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - // Enter critical - ENTER_STMT_CS(stmt); - - // Clear error and rollback - SC_clear_error(stmt); - RETCODE ret = SQL_ERROR; - if (!SC_opencheck(stmt, "SQLExecute")) - ret = OPENSEARCHAPI_Execute(StatementHandle); - - // Exit critical - LEAVE_STMT_CS(stmt); - return ret; -} - -RETCODE SQL_API SQLFetch(HSTMT StatementHandle) { - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - IRDFields *irdopts = SC_get_IRDF(stmt); - ARDFields *ardopts = SC_get_ARDF(stmt); - SQLUSMALLINT *rowStatusArray = irdopts->rowStatusArray; - SQLULEN *pcRow = irdopts->rowsFetched; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - ret = OPENSEARCHAPI_ExtendedFetch(StatementHandle, SQL_FETCH_NEXT, 0, pcRow, - rowStatusArray, 0, ardopts->size_of_rowset); - stmt->transition_status = STMT_TRANSITION_FETCH_SCROLL; - - LEAVE_STMT_CS(stmt); - return ret; -} - -RETCODE SQL_API SQLFreeStmt(HSTMT StatementHandle, SQLUSMALLINT Option) { - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - ConnectionClass *conn = NULL; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - - if (stmt) { - if (Option == SQL_DROP) { - conn = stmt->hdbc; - if (conn) - ENTER_CONN_CS(conn); - } else - ENTER_STMT_CS(stmt); - } - - ret = OPENSEARCHAPI_FreeStmt(StatementHandle, Option); - - if (stmt) { - if (Option == SQL_DROP) { - if (conn) - LEAVE_CONN_CS(conn); - } else - LEAVE_STMT_CS(stmt); - } - - return ret; -} - -#ifndef UNICODE_SUPPORTXX -RETCODE SQL_API SQLGetCursorName(HSTMT StatementHandle, SQLCHAR *CursorName, - SQLSMALLINT BufferLength, - SQLSMALLINT *NameLength) { - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - ret = OPENSEARCHAPI_GetCursorName(StatementHandle, CursorName, BufferLength, - NameLength); - LEAVE_STMT_CS(stmt); - return ret; -} -#endif /* UNICODE_SUPPORTXX */ - -RETCODE SQL_API SQLGetData(HSTMT StatementHandle, SQLUSMALLINT ColumnNumber, - SQLSMALLINT TargetType, PTR TargetValue, - SQLLEN BufferLength, SQLLEN *StrLen_or_Ind) { - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - ret = OPENSEARCHAPI_GetData(StatementHandle, ColumnNumber, TargetType, TargetValue, - BufferLength, StrLen_or_Ind); - LEAVE_STMT_CS(stmt); - return ret; -} - -RETCODE SQL_API SQLGetFunctions(HDBC ConnectionHandle, SQLUSMALLINT FunctionId, - SQLUSMALLINT *Supported) { - RETCODE ret; - ConnectionClass *conn = (ConnectionClass *)ConnectionHandle; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ENTER_CONN_CS(conn); - CC_clear_error(conn); - if (FunctionId == SQL_API_ODBC3_ALL_FUNCTIONS) - ret = OPENSEARCHAPI_GetFunctions30(ConnectionHandle, FunctionId, Supported); - else - ret = OPENSEARCHAPI_GetFunctions(ConnectionHandle, FunctionId, Supported); - - LEAVE_CONN_CS(conn); - return ret; -} - -#ifndef UNICODE_SUPPORTXX -RETCODE SQL_API SQLGetInfo(HDBC ConnectionHandle, SQLUSMALLINT InfoType, - PTR InfoValue, SQLSMALLINT BufferLength, - SQLSMALLINT *StringLength) { - RETCODE ret; - ConnectionClass *conn = (ConnectionClass *)ConnectionHandle; - - ENTER_CONN_CS(conn); - CC_clear_error(conn); - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if ((ret = OPENSEARCHAPI_GetInfo(ConnectionHandle, InfoType, InfoValue, - BufferLength, StringLength)) - == SQL_ERROR) - CC_log_error("SQLGetInfo(30)", "", conn); - LEAVE_CONN_CS(conn); - return ret; -} - -RETCODE SQL_API SQLGetTypeInfo(HSTMT StatementHandle, SQLSMALLINT DataType) { - CSTR func = "SQLGetTypeInfo"; - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check((StatementClass *)StatementHandle, - __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_GetTypeInfo(StatementHandle, DataType); - LEAVE_STMT_CS(stmt); - return ret; -} -#endif /* UNICODE_SUPPORTXX */ - -RETCODE SQL_API SQLNumResultCols(HSTMT StatementHandle, - SQLSMALLINT *ColumnCount) { - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - ret = OPENSEARCHAPI_NumResultCols(StatementHandle, ColumnCount); - LEAVE_STMT_CS(stmt); - return ret; -} - -RETCODE SQL_API SQLParamData(HSTMT StatementHandle, PTR *Value) { - UNUSED(Value); - StatementClass *stmt = (StatementClass *)StatementHandle; - if (stmt == NULL) - return SQL_ERROR; - SC_clear_error(stmt); - SC_set_error(stmt, STMT_NOT_IMPLEMENTED_ERROR, - "OpenSearch does not support parameters.", "SQLParamData"); - return SQL_ERROR; -} - -#ifndef UNICODE_SUPPORTXX -RETCODE SQL_API SQLPrepare(HSTMT StatementHandle, SQLCHAR *StatementText, - SQLINTEGER TextLength) { - if (StatementHandle == NULL) - return SQL_ERROR; - - CSTR func = "SQLPrepare"; - StatementClass *stmt = (StatementClass *)StatementHandle; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - // Enter critical - ENTER_STMT_CS(stmt); - - // Clear error and rollback - SC_clear_error(stmt); - - // Prepare statement if statement is ready - RETCODE ret = SQL_ERROR; - if (!SC_opencheck(stmt, func)) - ret = OPENSEARCHAPI_Prepare(StatementHandle, StatementText, TextLength); - - // Exit critical - LEAVE_STMT_CS(stmt); - return ret; -} -#endif /* UNICODE_SUPPORTXX */ - -RETCODE SQL_API SQLPutData(HSTMT StatementHandle, PTR Data, - SQLLEN StrLen_or_Ind) { - UNUSED(Data, StrLen_or_Ind); - StatementClass *stmt = (StatementClass *)StatementHandle; - if (stmt == NULL) - return SQL_ERROR; - SC_clear_error(stmt); - SC_set_error(stmt, STMT_NOT_IMPLEMENTED_ERROR, - "OpenSearch does not support parameters.", "SQLPutData"); - return SQL_ERROR; -} - -RETCODE SQL_API SQLRowCount(HSTMT StatementHandle, SQLLEN *RowCount) { - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - ret = OPENSEARCHAPI_RowCount(StatementHandle, RowCount); - LEAVE_STMT_CS(stmt); - return ret; -} - -#ifndef UNICODE_SUPPORTXX -RETCODE SQL_API SQLSetCursorName(HSTMT StatementHandle, SQLCHAR *CursorName, - SQLSMALLINT NameLength) { - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - ret = OPENSEARCHAPI_SetCursorName(StatementHandle, CursorName, NameLength); - LEAVE_STMT_CS(stmt); - return ret; -} -#endif /* UNICODE_SUPPORTXX */ - -RETCODE SQL_API SQLSetParam(HSTMT StatementHandle, SQLUSMALLINT ParameterNumber, - SQLSMALLINT ValueType, SQLSMALLINT ParameterType, - SQLULEN LengthPrecision, SQLSMALLINT ParameterScale, - PTR ParameterValue, SQLLEN *StrLen_or_Ind) { - UNUSED(ParameterNumber, ValueType, ParameterType, LengthPrecision, - ParameterScale, ParameterValue, StrLen_or_Ind); - StatementClass *stmt = (StatementClass *)StatementHandle; - if (stmt == NULL) - return SQL_ERROR; - SC_clear_error(stmt); - SC_set_error(stmt, STMT_NOT_IMPLEMENTED_ERROR, - "OpenSearch does not support parameters.", "SQLSetParam"); - return SQL_ERROR; -} - -#ifndef UNICODE_SUPPORTXX -RETCODE SQL_API SQLSpecialColumns(HSTMT StatementHandle, - SQLUSMALLINT IdentifierType, - SQLCHAR *CatalogName, SQLSMALLINT NameLength1, - SQLCHAR *SchemaName, SQLSMALLINT NameLength2, - SQLCHAR *TableName, SQLSMALLINT NameLength3, - SQLUSMALLINT Scope, SQLUSMALLINT Nullable) { - CSTR func = "SQLSpecialColumns"; - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - SQLCHAR *ctName = CatalogName, *scName = SchemaName, *tbName = TableName; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_SpecialColumns(StatementHandle, IdentifierType, ctName, - NameLength1, scName, NameLength2, tbName, - NameLength3, Scope, Nullable); - if (SQL_SUCCESS == ret && theResultIsEmpty(stmt)) { - BOOL ifallupper = TRUE, reexec = FALSE; - SQLCHAR *newCt = NULL, *newSc = NULL, *newTb = NULL; - ConnectionClass *conn = SC_get_conn(stmt); - - if (newCt = make_lstring_ifneeded(conn, CatalogName, NameLength1, - ifallupper), - NULL != newCt) { - ctName = newCt; - reexec = TRUE; - } - if (newSc = make_lstring_ifneeded(conn, SchemaName, NameLength2, - ifallupper), - NULL != newSc) { - scName = newSc; - reexec = TRUE; - } - if (newTb = - make_lstring_ifneeded(conn, TableName, NameLength3, ifallupper), - NULL != newTb) { - tbName = newTb; - reexec = TRUE; - } - if (reexec) { - ret = OPENSEARCHAPI_SpecialColumns(StatementHandle, IdentifierType, ctName, - NameLength1, scName, NameLength2, tbName, - NameLength3, Scope, Nullable); - if (newCt) - free(newCt); - if (newSc) - free(newSc); - if (newTb) - free(newTb); - } - } - LEAVE_STMT_CS(stmt); - return ret; -} - -RETCODE SQL_API SQLStatistics(HSTMT StatementHandle, SQLCHAR *CatalogName, - SQLSMALLINT NameLength1, SQLCHAR *SchemaName, - SQLSMALLINT NameLength2, SQLCHAR *TableName, - SQLSMALLINT NameLength3, SQLUSMALLINT Unique, - SQLUSMALLINT Reserved) { - CSTR func = "SQLStatistics"; - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - SQLCHAR *ctName = CatalogName, *scName = SchemaName, *tbName = TableName; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_Statistics(StatementHandle, ctName, NameLength1, scName, - NameLength2, tbName, NameLength3, Unique, - Reserved); - if (SQL_SUCCESS == ret && theResultIsEmpty(stmt)) { - BOOL ifallupper = TRUE, reexec = FALSE; - SQLCHAR *newCt = NULL, *newSc = NULL, *newTb = NULL; - ConnectionClass *conn = SC_get_conn(stmt); - - if (newCt = make_lstring_ifneeded(conn, CatalogName, NameLength1, - ifallupper), - NULL != newCt) { - ctName = newCt; - reexec = TRUE; - } - if (newSc = make_lstring_ifneeded(conn, SchemaName, NameLength2, - ifallupper), - NULL != newSc) { - scName = newSc; - reexec = TRUE; - } - if (newTb = - make_lstring_ifneeded(conn, TableName, NameLength3, ifallupper), - NULL != newTb) { - tbName = newTb; - reexec = TRUE; - } - if (reexec) { - ret = OPENSEARCHAPI_Statistics(StatementHandle, ctName, NameLength1, scName, - NameLength2, tbName, NameLength3, Unique, - Reserved); - if (newCt) - free(newCt); - if (newSc) - free(newSc); - if (newTb) - free(newTb); - } - } - LEAVE_STMT_CS(stmt); - return ret; -} - -RETCODE SQL_API SQLTables(HSTMT StatementHandle, SQLCHAR *CatalogName, - SQLSMALLINT NameLength1, SQLCHAR *SchemaName, - SQLSMALLINT NameLength2, SQLCHAR *TableName, - SQLSMALLINT NameLength3, SQLCHAR *TableType, - SQLSMALLINT NameLength4) { - CSTR func = "SQLTables"; - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - SQLCHAR *ctName = CatalogName, *scName = SchemaName, *tbName = TableName; - UWORD flag = 0; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (stmt->options.metadata_id) - flag |= PODBC_NOT_SEARCH_PATTERN; - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_Tables(StatementHandle, ctName, NameLength1, scName, - NameLength2, tbName, NameLength3, TableType, - NameLength4, flag); - if (SQL_SUCCESS == ret && theResultIsEmpty(stmt)) { - BOOL ifallupper = TRUE, reexec = FALSE; - SQLCHAR *newCt = NULL, *newSc = NULL, *newTb = NULL; - ConnectionClass *conn = SC_get_conn(stmt); - - if (newCt = make_lstring_ifneeded(conn, CatalogName, NameLength1, - ifallupper), - NULL != newCt) { - ctName = newCt; - reexec = TRUE; - } - if (newSc = make_lstring_ifneeded(conn, SchemaName, NameLength2, - ifallupper), - NULL != newSc) { - scName = newSc; - reexec = TRUE; - } - if (newTb = - make_lstring_ifneeded(conn, TableName, NameLength3, ifallupper), - NULL != newTb) { - tbName = newTb; - reexec = TRUE; - } - if (reexec) { - ret = OPENSEARCHAPI_Tables(StatementHandle, ctName, NameLength1, scName, - NameLength2, tbName, NameLength3, TableType, - NameLength4, flag); - if (newCt) - free(newCt); - if (newSc) - free(newSc); - if (newTb) - free(newTb); - } - } - LEAVE_STMT_CS(stmt); - return ret; -} - -RETCODE SQL_API SQLColumnPrivileges( - HSTMT hstmt, SQLCHAR *szCatalogName, SQLSMALLINT cbCatalogName, - SQLCHAR *szSchemaName, SQLSMALLINT cbSchemaName, SQLCHAR *szTableName, - SQLSMALLINT cbTableName, SQLCHAR *szColumnName, SQLSMALLINT cbColumnName) { - CSTR func = "SQLColumnPrivileges"; - RETCODE ret; - StatementClass *stmt = (StatementClass *)hstmt; - SQLCHAR *ctName = szCatalogName, *scName = szSchemaName, - *tbName = szTableName, *clName = szColumnName; - UWORD flag = 0; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (stmt->options.metadata_id) - flag |= PODBC_NOT_SEARCH_PATTERN; - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_ColumnPrivileges(hstmt, ctName, cbCatalogName, scName, - cbSchemaName, tbName, cbTableName, clName, - cbColumnName, flag); - if (SQL_SUCCESS == ret && theResultIsEmpty(stmt)) { - BOOL ifallupper = TRUE, reexec = FALSE; - SQLCHAR *newCt = NULL, *newSc = NULL, *newTb = NULL, *newCl = NULL; - ConnectionClass *conn = SC_get_conn(stmt); - - if (newCt = make_lstring_ifneeded(conn, szCatalogName, cbCatalogName, - ifallupper), - NULL != newCt) { - ctName = newCt; - reexec = TRUE; - } - if (newSc = make_lstring_ifneeded(conn, szSchemaName, cbSchemaName, - ifallupper), - NULL != newSc) { - scName = newSc; - reexec = TRUE; - } - if (newTb = make_lstring_ifneeded(conn, szTableName, cbTableName, - ifallupper), - NULL != newTb) { - tbName = newTb; - reexec = TRUE; - } - if (newCl = make_lstring_ifneeded(conn, szColumnName, cbColumnName, - ifallupper), - NULL != newCl) { - clName = newCl; - reexec = TRUE; - } - if (reexec) { - ret = OPENSEARCHAPI_ColumnPrivileges(hstmt, ctName, cbCatalogName, scName, - cbSchemaName, tbName, cbTableName, - clName, cbColumnName, flag); - if (newCt) - free(newCt); - if (newSc) - free(newSc); - if (newTb) - free(newTb); - if (newCl) - free(newCl); - } - } - LEAVE_STMT_CS(stmt); - return ret; -} -#endif /* UNICODE_SUPPORTXX */ - -RETCODE SQL_API SQLDescribeParam(HSTMT hstmt, SQLUSMALLINT ipar, - SQLSMALLINT *pfSqlType, SQLULEN *pcbParamDef, - SQLSMALLINT *pibScale, - SQLSMALLINT *pfNullable) { - UNUSED(ipar, pfSqlType, pcbParamDef, pibScale, pfNullable); - StatementClass *stmt = (StatementClass *)hstmt; - SC_clear_error(stmt); - - // COLNUM_ERROR translates to 'invalid descriptor index' - SC_set_error(stmt, STMT_COLNUM_ERROR, - "OpenSearch does not support parameters.", "SQLNumParams"); - return SQL_ERROR; -} - -RETCODE SQL_API SQLExtendedFetch(HSTMT hstmt, SQLUSMALLINT fFetchType, - SQLLEN irow, -#if defined(WITH_UNIXODBC) && (SIZEOF_LONG_INT != 8) - SQLROWSETSIZE *pcrow, -#else - SQLULEN *pcrow, -#endif /* WITH_UNIXODBC */ - SQLUSMALLINT *rgfRowStatus) { - RETCODE ret; - StatementClass *stmt = (StatementClass *)hstmt; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); -#ifdef WITH_UNIXODBC - { - SQLULEN retrieved; - - ret = OPENSEARCHAPI_ExtendedFetch(hstmt, fFetchType, irow, &retrieved, - rgfRowStatus, 0, - SC_get_ARDF(stmt)->size_of_rowset_odbc2); - if (pcrow) - *pcrow = retrieved; - } -#else - ret = OPENSEARCHAPI_ExtendedFetch(hstmt, fFetchType, irow, pcrow, rgfRowStatus, 0, - SC_get_ARDF(stmt)->size_of_rowset_odbc2); -#endif /* WITH_UNIXODBC */ - stmt->transition_status = STMT_TRANSITION_EXTENDED_FETCH; - LEAVE_STMT_CS(stmt); - return ret; -} - -#ifndef UNICODE_SUPPORTXX -RETCODE SQL_API SQLForeignKeys( - HSTMT hstmt, SQLCHAR *szPkCatalogName, SQLSMALLINT cbPkCatalogName, - SQLCHAR *szPkSchemaName, SQLSMALLINT cbPkSchemaName, SQLCHAR *szPkTableName, - SQLSMALLINT cbPkTableName, SQLCHAR *szFkCatalogName, - SQLSMALLINT cbFkCatalogName, SQLCHAR *szFkSchemaName, - SQLSMALLINT cbFkSchemaName, SQLCHAR *szFkTableName, - SQLSMALLINT cbFkTableName) { - CSTR func = "SQLForeignKeys"; - RETCODE ret; - StatementClass *stmt = (StatementClass *)hstmt; - SQLCHAR *pkctName = szPkCatalogName, *pkscName = szPkSchemaName, - *pktbName = szPkTableName, *fkctName = szFkCatalogName, - *fkscName = szFkSchemaName, *fktbName = szFkTableName; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_ForeignKeys(hstmt, pkctName, cbPkCatalogName, pkscName, - cbPkSchemaName, pktbName, cbPkTableName, - fkctName, cbFkCatalogName, fkscName, - cbFkSchemaName, fktbName, cbFkTableName); - if (SQL_SUCCESS == ret && theResultIsEmpty(stmt)) { - BOOL ifallupper = TRUE, reexec = FALSE; - SQLCHAR *newPkct = NULL, *newPksc = NULL, *newPktb = NULL, - *newFkct = NULL, *newFksc = NULL, *newFktb = NULL; - ConnectionClass *conn = SC_get_conn(stmt); - - if (newPkct = make_lstring_ifneeded(conn, szPkCatalogName, - cbPkCatalogName, ifallupper), - NULL != newPkct) { - pkctName = newPkct; - reexec = TRUE; - } - if (newPksc = make_lstring_ifneeded(conn, szPkSchemaName, - cbPkSchemaName, ifallupper), - NULL != newPksc) { - pkscName = newPksc; - reexec = TRUE; - } - if (newPktb = make_lstring_ifneeded(conn, szPkTableName, cbPkTableName, - ifallupper), - NULL != newPktb) { - pktbName = newPktb; - reexec = TRUE; - } - if (newFkct = make_lstring_ifneeded(conn, szFkCatalogName, - cbFkCatalogName, ifallupper), - NULL != newFkct) { - fkctName = newFkct; - reexec = TRUE; - } - if (newFksc = make_lstring_ifneeded(conn, szFkSchemaName, - cbFkSchemaName, ifallupper), - NULL != newFksc) { - fkscName = newFksc; - reexec = TRUE; - } - if (newFktb = make_lstring_ifneeded(conn, szFkTableName, cbFkTableName, - ifallupper), - NULL != newFktb) { - fktbName = newFktb; - reexec = TRUE; - } - if (reexec) { - ret = OPENSEARCHAPI_ForeignKeys(hstmt, pkctName, cbPkCatalogName, pkscName, - cbPkSchemaName, pktbName, cbPkTableName, - fkctName, cbFkCatalogName, fkscName, - cbFkSchemaName, fktbName, cbFkTableName); - if (newPkct) - free(newPkct); - if (newPksc) - free(newPksc); - if (newPktb) - free(newPktb); - if (newFkct) - free(newFkct); - if (newFksc) - free(newFksc); - if (newFktb) - free(newFktb); - } - } - LEAVE_STMT_CS(stmt); - return ret; -} -#endif /* UNICODE_SUPPORTXX */ - -RETCODE SQL_API SQLMoreResults(HSTMT hstmt) { - RETCODE ret; - StatementClass *stmt = (StatementClass *)hstmt; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - ret = OPENSEARCHAPI_MoreResults(hstmt); - LEAVE_STMT_CS(stmt); - return ret; -} - -#ifndef UNICODE_SUPPORTXX -RETCODE SQL_API SQLNativeSql(HDBC hdbc, SQLCHAR *szSqlStrIn, - SQLINTEGER cbSqlStrIn, SQLCHAR *szSqlStr, - SQLINTEGER cbSqlStrMax, SQLINTEGER *pcbSqlStr) { - RETCODE ret; - ConnectionClass *conn = (ConnectionClass *)hdbc; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ENTER_CONN_CS(conn); - CC_clear_error(conn); - ret = OPENSEARCHAPI_NativeSql(hdbc, szSqlStrIn, cbSqlStrIn, szSqlStr, cbSqlStrMax, - pcbSqlStr); - LEAVE_CONN_CS(conn); - return ret; -} -#endif /* UNICODE_SUPPORTXX */ - -RETCODE SQL_API SQLNumParams(HSTMT hstmt, SQLSMALLINT *pcpar) { - if (pcpar != NULL) - *pcpar = 0; - - StatementClass *stmt = (StatementClass *)hstmt; - if (stmt == NULL) - return SQL_ERROR; - SC_clear_error(stmt); - SC_set_error(stmt, STMT_NOT_IMPLEMENTED_ERROR, - "OpenSearch does not support parameters.", "SQLNumParams"); - return SQL_SUCCESS_WITH_INFO; -} - -#ifndef UNICODE_SUPPORTXX -RETCODE SQL_API SQLPrimaryKeys(HSTMT hstmt, SQLCHAR *szCatalogName, - SQLSMALLINT cbCatalogName, SQLCHAR *szSchemaName, - SQLSMALLINT cbSchemaName, SQLCHAR *szTableName, - SQLSMALLINT cbTableName) { - CSTR func = "SQLPrimaryKeys"; - RETCODE ret; - StatementClass *stmt = (StatementClass *)hstmt; - SQLCHAR *ctName = szCatalogName, *scName = szSchemaName, - *tbName = szTableName; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_PrimaryKeys(hstmt, ctName, cbCatalogName, scName, - cbSchemaName, tbName, cbTableName, 0); - if (SQL_SUCCESS == ret && theResultIsEmpty(stmt)) { - BOOL ifallupper = TRUE, reexec = FALSE; - SQLCHAR *newCt = NULL, *newSc = NULL, *newTb = NULL; - ConnectionClass *conn = SC_get_conn(stmt); - - if (newCt = make_lstring_ifneeded(conn, szCatalogName, cbCatalogName, - ifallupper), - NULL != newCt) { - ctName = newCt; - reexec = TRUE; - } - if (newSc = make_lstring_ifneeded(conn, szSchemaName, cbSchemaName, - ifallupper), - NULL != newSc) { - scName = newSc; - reexec = TRUE; - } - if (newTb = make_lstring_ifneeded(conn, szTableName, cbTableName, - ifallupper), - NULL != newTb) { - tbName = newTb; - reexec = TRUE; - } - if (reexec) { - ret = OPENSEARCHAPI_PrimaryKeys(hstmt, ctName, cbCatalogName, scName, - cbSchemaName, tbName, cbTableName, 0); - if (newCt) - free(newCt); - if (newSc) - free(newSc); - if (newTb) - free(newTb); - } - } - LEAVE_STMT_CS(stmt); - return ret; -} - -RETCODE SQL_API SQLProcedureColumns( - HSTMT hstmt, SQLCHAR *szCatalogName, SQLSMALLINT cbCatalogName, - SQLCHAR *szSchemaName, SQLSMALLINT cbSchemaName, SQLCHAR *szProcName, - SQLSMALLINT cbProcName, SQLCHAR *szColumnName, SQLSMALLINT cbColumnName) { - CSTR func = "SQLProcedureColumns"; - RETCODE ret; - StatementClass *stmt = (StatementClass *)hstmt; - SQLCHAR *ctName = szCatalogName, *scName = szSchemaName, - *prName = szProcName, *clName = szColumnName; - UWORD flag = 0; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (stmt->options.metadata_id) - flag |= PODBC_NOT_SEARCH_PATTERN; - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_ProcedureColumns(hstmt, ctName, cbCatalogName, scName, - cbSchemaName, prName, cbProcName, clName, - cbColumnName, flag); - if (SQL_SUCCESS == ret && theResultIsEmpty(stmt)) { - BOOL ifallupper = TRUE, reexec = FALSE; - SQLCHAR *newCt = NULL, *newSc = NULL, *newPr = NULL, *newCl = NULL; - ConnectionClass *conn = SC_get_conn(stmt); - - if (newCt = make_lstring_ifneeded(conn, szCatalogName, cbCatalogName, - ifallupper), - NULL != newCt) { - ctName = newCt; - reexec = TRUE; - } - if (newSc = make_lstring_ifneeded(conn, szSchemaName, cbSchemaName, - ifallupper), - NULL != newSc) { - scName = newSc; - reexec = TRUE; - } - if (newPr = - make_lstring_ifneeded(conn, szProcName, cbProcName, ifallupper), - NULL != newPr) { - prName = newPr; - reexec = TRUE; - } - if (newCl = make_lstring_ifneeded(conn, szColumnName, cbColumnName, - ifallupper), - NULL != newCl) { - clName = newCl; - reexec = TRUE; - } - if (reexec) { - ret = OPENSEARCHAPI_ProcedureColumns(hstmt, ctName, cbCatalogName, scName, - cbSchemaName, prName, cbProcName, - clName, cbColumnName, flag); - if (newCt) - free(newCt); - if (newSc) - free(newSc); - if (newPr) - free(newPr); - if (newCl) - free(newCl); - } - } - LEAVE_STMT_CS(stmt); - return ret; -} - -RETCODE SQL_API SQLProcedures(HSTMT hstmt, SQLCHAR *szCatalogName, - SQLSMALLINT cbCatalogName, SQLCHAR *szSchemaName, - SQLSMALLINT cbSchemaName, SQLCHAR *szProcName, - SQLSMALLINT cbProcName) { - CSTR func = "SQLProcedures"; - RETCODE ret; - StatementClass *stmt = (StatementClass *)hstmt; - SQLCHAR *ctName = szCatalogName, *scName = szSchemaName, - *prName = szProcName; - UWORD flag = 0; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (stmt->options.metadata_id) - flag |= PODBC_NOT_SEARCH_PATTERN; - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_Procedures(hstmt, ctName, cbCatalogName, scName, - cbSchemaName, prName, cbProcName, flag); - if (SQL_SUCCESS == ret && theResultIsEmpty(stmt)) { - BOOL ifallupper = TRUE, reexec = FALSE; - SQLCHAR *newCt = NULL, *newSc = NULL, *newPr = NULL; - ConnectionClass *conn = SC_get_conn(stmt); - - if (newCt = make_lstring_ifneeded(conn, szCatalogName, cbCatalogName, - ifallupper), - NULL != newCt) { - ctName = newCt; - reexec = TRUE; - } - if (newSc = make_lstring_ifneeded(conn, szSchemaName, cbSchemaName, - ifallupper), - NULL != newSc) { - scName = newSc; - reexec = TRUE; - } - if (newPr = - make_lstring_ifneeded(conn, szProcName, cbProcName, ifallupper), - NULL != newPr) { - prName = newPr; - reexec = TRUE; - } - if (reexec) { - ret = OPENSEARCHAPI_Procedures(hstmt, ctName, cbCatalogName, scName, - cbSchemaName, prName, cbProcName, flag); - if (newCt) - free(newCt); - if (newSc) - free(newSc); - if (newPr) - free(newPr); - } - } - LEAVE_STMT_CS(stmt); - return ret; -} -#endif /* UNICODE_SUPPORTXX */ - -RETCODE SQL_API SQLSetPos(HSTMT hstmt, SQLSETPOSIROW irow, SQLUSMALLINT fOption, - SQLUSMALLINT fLock) { - UNUSED(irow, fOption, fLock); - StatementClass *stmt = (StatementClass *)hstmt; - if (stmt == NULL) - return SQL_ERROR; - SC_clear_error(stmt); - SC_set_error(stmt, STMT_NOT_IMPLEMENTED_ERROR, - "SQLSetPos is not supported.", "SQLSetPos"); - return SQL_ERROR; -} - -#ifndef UNICODE_SUPPORTXX -RETCODE SQL_API SQLTablePrivileges(HSTMT hstmt, SQLCHAR *szCatalogName, - SQLSMALLINT cbCatalogName, - SQLCHAR *szSchemaName, - SQLSMALLINT cbSchemaName, - SQLCHAR *szTableName, - SQLSMALLINT cbTableName) { - CSTR func = "SQLTablePrivileges"; - RETCODE ret; - StatementClass *stmt = (StatementClass *)hstmt; - SQLCHAR *ctName = szCatalogName, *scName = szSchemaName, - *tbName = szTableName; - UWORD flag = 0; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (stmt->options.metadata_id) - flag |= PODBC_NOT_SEARCH_PATTERN; - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_TablePrivileges(hstmt, ctName, cbCatalogName, scName, - cbSchemaName, tbName, cbTableName, flag); - if (SQL_SUCCESS == ret && theResultIsEmpty(stmt)) { - BOOL ifallupper = TRUE, reexec = FALSE; - SQLCHAR *newCt = NULL, *newSc = NULL, *newTb = NULL; - ConnectionClass *conn = SC_get_conn(stmt); - - if (newCt = make_lstring_ifneeded(conn, szCatalogName, cbCatalogName, - ifallupper), - NULL != newCt) { - ctName = newCt; - reexec = TRUE; - } - if (newSc = make_lstring_ifneeded(conn, szSchemaName, cbSchemaName, - ifallupper), - NULL != newSc) { - scName = newSc; - reexec = TRUE; - } - if (newTb = make_lstring_ifneeded(conn, szTableName, cbTableName, - ifallupper), - NULL != newTb) { - tbName = newTb; - reexec = TRUE; - } - if (reexec) { - ret = OPENSEARCHAPI_TablePrivileges(hstmt, ctName, cbCatalogName, scName, - cbSchemaName, tbName, cbTableName, 0); - if (newCt) - free(newCt); - if (newSc) - free(newSc); - if (newTb) - free(newTb); - } - } - LEAVE_STMT_CS(stmt); - return ret; -} -#endif /* UNICODE_SUPPORTXX */ - -RETCODE SQL_API SQLBindParameter(HSTMT hstmt, SQLUSMALLINT ipar, - SQLSMALLINT fParamType, SQLSMALLINT fCType, - SQLSMALLINT fSqlType, SQLULEN cbColDef, - SQLSMALLINT ibScale, PTR rgbValue, - SQLLEN cbValueMax, SQLLEN *pcbValue) { - UNUSED(ipar, fParamType, fCType, fSqlType, cbColDef, ibScale, rgbValue, - cbValueMax, pcbValue); - StatementClass *stmt = (StatementClass *)hstmt; - if (stmt == NULL) - return SQL_ERROR; - SC_clear_error(stmt); - SC_set_error(stmt, STMT_NOT_IMPLEMENTED_ERROR, - "OpenSearch does not support parameters.", - "SQLBindParameter"); - return SQL_ERROR; -} - -/* ODBC 2.x-specific functions */ -// TODO (#590): Add implementations for remaining ODBC 2.x function - -RETCODE SQL_API SQLAllocStmt(SQLHDBC InputHandle, SQLHSTMT *OutputHandle) { - RETCODE ret; - ConnectionClass *conn; - MYLOG(OPENSEARCH_TRACE, "entering\n"); - - conn = (ConnectionClass *)InputHandle; - ENTER_CONN_CS(conn); - ret = OPENSEARCHAPI_AllocStmt( - InputHandle, OutputHandle, - PODBC_EXTERNAL_STATEMENT | PODBC_INHERIT_CONNECT_OPTIONS); - if (*OutputHandle) - ((StatementClass *)(*OutputHandle))->external = 1; - LEAVE_CONN_CS(conn); - - return ret; -} - -#ifndef UNICODE_SUPPORTXX -RETCODE SQL_API SQLGetConnectOption(HDBC ConnectionHandle, SQLUSMALLINT Option, - PTR Value) { - RETCODE ret; - - MYLOG(OPENSEARCH_TRACE, "entering " FORMAT_UINTEGER "\n", Option); - ENTER_CONN_CS((ConnectionClass *)ConnectionHandle); - CC_clear_error((ConnectionClass *)ConnectionHandle); - ret = OPENSEARCHAPI_GetConnectOption(ConnectionHandle, Option, Value, NULL, 0); - LEAVE_CONN_CS((ConnectionClass *)ConnectionHandle); - return ret; -} - -/* SQLSetConnectOption -> SQLSetConnectAttr */ -RETCODE SQL_API SQLSetConnectOption(HDBC ConnectionHandle, SQLUSMALLINT Option, - SQLULEN Value) { - RETCODE ret; - ConnectionClass *conn = (ConnectionClass *)ConnectionHandle; - - MYLOG(OPENSEARCH_TRACE, "entering " FORMAT_INTEGER "\n", Option); - ENTER_CONN_CS(conn); - CC_clear_error(conn); - ret = OPENSEARCHAPI_SetConnectOption(ConnectionHandle, Option, Value); - LEAVE_CONN_CS(conn); - return ret; -} - -/* SQLColAttributes -> SQLColAttribute */ -SQLRETURN SQL_API SQLColAttributes(SQLHSTMT StatementHandle, - SQLUSMALLINT ColumnNumber, - SQLUSMALLINT FieldIdentifier, - SQLPOINTER CharacterAttribute, - SQLSMALLINT BufferLength, - SQLSMALLINT *StringLength, -#if defined(_WIN64) || defined(_WIN32) || defined(SQLCOLATTRIBUTE_SQLLEN) - SQLLEN *NumericAttribute -#else - SQLPOINTER NumericAttribute -#endif -) { - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - ret = OPENSEARCHAPI_ColAttributes(StatementHandle, ColumnNumber, FieldIdentifier, - CharacterAttribute, BufferLength, StringLength, - NumericAttribute); - LEAVE_STMT_CS(stmt); - return ret; -} - -/* SQLError -> SQLDiagRec */ -RETCODE SQL_API SQLError(SQLHENV EnvironmentHandle, SQLHDBC ConnectionHandle, - SQLHSTMT StatementHandle, SQLCHAR *Sqlstate, - SQLINTEGER *NativeError, SQLCHAR *MessageText, - SQLSMALLINT BufferLength, SQLSMALLINT *TextLength) { - RETCODE ret; - SQLSMALLINT RecNumber = 1; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - - if (StatementHandle) { - ret = - OPENSEARCHAPI_StmtError(StatementHandle, RecNumber, Sqlstate, NativeError, - MessageText, BufferLength, TextLength, 0); - } else if (ConnectionHandle) { - ret = OPENSEARCHAPI_ConnectError(ConnectionHandle, RecNumber, Sqlstate, - NativeError, MessageText, BufferLength, - TextLength, 0); - } else if (EnvironmentHandle) { - ret = OPENSEARCHAPI_EnvError(EnvironmentHandle, RecNumber, Sqlstate, NativeError, - MessageText, BufferLength, TextLength, 0); - } else { - ret = SQL_ERROR; - } - - MYLOG(OPENSEARCH_TRACE, "leaving %d\n", ret); - return ret; -} -#endif /* UNICODE_SUPPORTXX */ diff --git a/sql-odbc/src/sqlodbc/odbcapi30.c b/sql-odbc/src/sqlodbc/odbcapi30.c deleted file mode 100644 index 83b249015d..0000000000 --- a/sql-odbc/src/sqlodbc/odbcapi30.c +++ /dev/null @@ -1,589 +0,0 @@ -#include -#include - -#include "environ.h" -#include "opensearch_odbc.h" -#include "misc.h" -#include "opensearch_apifunc.h" -#include "opensearch_connection.h" -#include "statement.h" - -/* SQLAllocConnect/SQLAllocEnv/SQLAllocStmt -> SQLAllocHandle */ -RETCODE SQL_API SQLAllocHandle(SQLSMALLINT HandleType, SQLHANDLE InputHandle, - SQLHANDLE *OutputHandle) { - RETCODE ret; - ConnectionClass *conn; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - switch (HandleType) { - case SQL_HANDLE_ENV: - ret = OPENSEARCHAPI_AllocEnv(OutputHandle); - break; - case SQL_HANDLE_DBC: - ENTER_ENV_CS((EnvironmentClass *)InputHandle); - ret = OPENSEARCHAPI_AllocConnect(InputHandle, OutputHandle); - LEAVE_ENV_CS((EnvironmentClass *)InputHandle); - break; - case SQL_HANDLE_STMT: - conn = (ConnectionClass *)InputHandle; - ENTER_CONN_CS(conn); - ret = OPENSEARCHAPI_AllocStmt( - InputHandle, OutputHandle, - PODBC_EXTERNAL_STATEMENT | PODBC_INHERIT_CONNECT_OPTIONS); - if (*OutputHandle) - ((StatementClass *)(*OutputHandle))->external = 1; - LEAVE_CONN_CS(conn); - break; - case SQL_HANDLE_DESC: - conn = (ConnectionClass *)InputHandle; - ENTER_CONN_CS(conn); - ret = OPENSEARCHAPI_AllocDesc(InputHandle, OutputHandle); - LEAVE_CONN_CS(conn); - MYLOG(OPENSEARCH_DEBUG, "OutputHandle=%p\n", *OutputHandle); - break; - default: - ret = SQL_ERROR; - break; - } - return ret; -} - -/* SQLBindParameter/SQLSetParam -> SQLBindParam */ -RETCODE SQL_API SQLBindParam(HSTMT StatementHandle, - SQLUSMALLINT ParameterNumber, - SQLSMALLINT ValueType, SQLSMALLINT ParameterType, - SQLULEN LengthPrecision, - SQLSMALLINT ParameterScale, PTR ParameterValue, - SQLLEN *StrLen_or_Ind) { - UNUSED(ParameterNumber, ValueType, ParameterType, LengthPrecision, - ParameterScale, ParameterValue, StrLen_or_Ind); - StatementClass *stmt = (StatementClass *)StatementHandle; - if (stmt == NULL) - return SQL_ERROR; - SC_clear_error(stmt); - SC_set_error(stmt, STMT_NOT_IMPLEMENTED_ERROR, - "OpenSearch does not support parameters.", "SQLBindParam"); - return SQL_ERROR; -} - -/* New function */ -RETCODE SQL_API SQLCloseCursor(HSTMT StatementHandle) { - StatementClass *stmt = (StatementClass *)StatementHandle; - if(stmt == NULL) - return SQL_ERROR; - - RETCODE ret; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - ret = OPENSEARCHAPI_FreeStmt(StatementHandle, SQL_CLOSE); - LEAVE_STMT_CS(stmt); - return ret; -} - -#ifndef UNICODE_SUPPORTXX -/* SQLColAttributes -> SQLColAttribute */ -SQLRETURN SQL_API SQLColAttribute(SQLHSTMT StatementHandle, - SQLUSMALLINT ColumnNumber, - SQLUSMALLINT FieldIdentifier, - SQLPOINTER CharacterAttribute, - SQLSMALLINT BufferLength, - SQLSMALLINT *StringLength, -#if defined(_WIN64) || defined(SQLCOLATTRIBUTE_SQLLEN) - SQLLEN *NumericAttribute -#else - SQLPOINTER NumericAttribute -#endif -) { - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - ret = OPENSEARCHAPI_ColAttributes(StatementHandle, ColumnNumber, FieldIdentifier, - CharacterAttribute, BufferLength, StringLength, - NumericAttribute); - LEAVE_STMT_CS(stmt); - return ret; -} -#endif /* UNICODE_SUPPORTXX */ - -/* new function */ -RETCODE SQL_API SQLCopyDesc(SQLHDESC SourceDescHandle, - SQLHDESC TargetDescHandle) { - RETCODE ret; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ret = OPENSEARCHAPI_CopyDesc(SourceDescHandle, TargetDescHandle); - return ret; -} - -/* SQLTransact -> SQLEndTran */ -RETCODE SQL_API SQLEndTran(SQLSMALLINT HandleType, SQLHANDLE Handle, - SQLSMALLINT CompletionType) { - UNUSED(CompletionType); - if (HandleType == SQL_HANDLE_STMT) { - StatementClass *stmt = (StatementClass *)Handle; - if (stmt == NULL) - return SQL_ERROR; - SC_clear_error(stmt); - SC_set_error(stmt, STMT_NOT_IMPLEMENTED_ERROR, - "Transactions are not supported.", "SQLEndTran"); - } else if (HandleType == SQL_HANDLE_DBC) { - ConnectionClass *conn = (ConnectionClass *)Handle; - if (conn == NULL) - return SQL_ERROR; - CC_clear_error(conn); - CC_set_error(conn, CONN_NOT_IMPLEMENTED_ERROR, - "Transactions are not supported.", "SQLEndTran"); - } - return SQL_ERROR; -} - -/* SQLExtendedFetch -> SQLFetchScroll */ -RETCODE SQL_API SQLFetchScroll(HSTMT StatementHandle, - SQLSMALLINT FetchOrientation, - SQLLEN FetchOffset) { - CSTR func = "SQLFetchScroll"; - StatementClass *stmt = (StatementClass *)StatementHandle; - RETCODE ret = SQL_SUCCESS; - IRDFields *irdopts = SC_get_IRDF(stmt); - SQLUSMALLINT *rowStatusArray = irdopts->rowStatusArray; - SQLULEN *pcRow = irdopts->rowsFetched; - SQLLEN bkmarkoff = 0; - - MYLOG(OPENSEARCH_TRACE, "entering %d," FORMAT_LEN "\n", FetchOrientation, - FetchOffset); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (FetchOrientation == SQL_FETCH_BOOKMARK) { - if (stmt->options.bookmark_ptr) { - bkmarkoff = FetchOffset; - FetchOffset = *((Int4 *)stmt->options.bookmark_ptr); - MYLOG(OPENSEARCH_DEBUG, - "bookmark=" FORMAT_LEN " FetchOffset = " FORMAT_LEN "\n", - FetchOffset, bkmarkoff); - } else { - SC_set_error(stmt, STMT_SEQUENCE_ERROR, - "Bookmark isn't specifed yet", func); - ret = SQL_ERROR; - } - } - if (SQL_SUCCESS == ret) { - ARDFields *opts = SC_get_ARDF(stmt); - - ret = OPENSEARCHAPI_ExtendedFetch(StatementHandle, FetchOrientation, - FetchOffset, pcRow, rowStatusArray, bkmarkoff, - opts->size_of_rowset); - stmt->transition_status = STMT_TRANSITION_FETCH_SCROLL; - } - LEAVE_STMT_CS(stmt); - if (ret != SQL_SUCCESS) - MYLOG(OPENSEARCH_TRACE, "leaving return = %d\n", ret); - return ret; -} - -/* SQLFree(Connect/Env/Stmt) -> SQLFreeHandle */ -RETCODE SQL_API SQLFreeHandle(SQLSMALLINT HandleType, SQLHANDLE Handle) { - RETCODE ret; - StatementClass *stmt; - ConnectionClass *conn = NULL; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - - switch (HandleType) { - case SQL_HANDLE_ENV: - ret = OPENSEARCHAPI_FreeEnv(Handle); - break; - case SQL_HANDLE_DBC: - ret = OPENSEARCHAPI_FreeConnect(Handle); - break; - case SQL_HANDLE_STMT: - stmt = (StatementClass *)Handle; - - if (stmt) { - conn = stmt->hdbc; - if (conn) - ENTER_CONN_CS(conn); - } - - ret = OPENSEARCHAPI_FreeStmt(Handle, SQL_DROP); - - if (conn) - LEAVE_CONN_CS(conn); - - break; - case SQL_HANDLE_DESC: - ret = OPENSEARCHAPI_FreeDesc(Handle); - break; - default: - ret = SQL_ERROR; - break; - } - return ret; -} - -#ifndef UNICODE_SUPPORTXX -/* new function */ -RETCODE SQL_API SQLGetDescField(SQLHDESC DescriptorHandle, - SQLSMALLINT RecNumber, - SQLSMALLINT FieldIdentifier, PTR Value, - SQLINTEGER BufferLength, - SQLINTEGER *StringLength) { - RETCODE ret; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ret = OPENSEARCHAPI_GetDescField(DescriptorHandle, RecNumber, FieldIdentifier, - Value, BufferLength, StringLength); - return ret; -} - -/* new function */ -RETCODE SQL_API SQLGetDescRec(SQLHDESC DescriptorHandle, SQLSMALLINT RecNumber, - SQLCHAR *Name, SQLSMALLINT BufferLength, - SQLSMALLINT *StringLength, SQLSMALLINT *Type, - SQLSMALLINT *SubType, SQLLEN *Length, - SQLSMALLINT *Precision, SQLSMALLINT *Scale, - SQLSMALLINT *Nullable) { - UNUSED(DescriptorHandle, RecNumber, Name, BufferLength, StringLength, Type, - SubType, Length, Precision, Scale, Nullable); - MYLOG(OPENSEARCH_TRACE, "entering\n"); - MYLOG(OPENSEARCH_DEBUG, "Error not implemented\n"); - return SQL_ERROR; -} - -/* new function */ -RETCODE SQL_API SQLGetDiagField(SQLSMALLINT HandleType, SQLHANDLE Handle, - SQLSMALLINT RecNumber, - SQLSMALLINT DiagIdentifier, PTR DiagInfo, - SQLSMALLINT BufferLength, - SQLSMALLINT *StringLength) { - RETCODE ret; - - MYLOG(OPENSEARCH_TRACE, "entering Handle=(%u,%p) Rec=%d Id=%d info=(%p,%d)\n", - HandleType, Handle, RecNumber, DiagIdentifier, DiagInfo, - BufferLength); - ret = OPENSEARCHAPI_GetDiagField(HandleType, Handle, RecNumber, DiagIdentifier, - DiagInfo, BufferLength, StringLength); - return ret; -} - -/* SQLError -> SQLDiagRec */ -RETCODE SQL_API SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle, - SQLSMALLINT RecNumber, SQLCHAR *Sqlstate, - SQLINTEGER *NativeError, SQLCHAR *MessageText, - SQLSMALLINT BufferLength, - SQLSMALLINT *TextLength) { - RETCODE ret; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ret = OPENSEARCHAPI_GetDiagRec(HandleType, Handle, RecNumber, Sqlstate, NativeError, - MessageText, BufferLength, TextLength); - return ret; -} -#endif /* UNICODE_SUPPORTXX */ - -/* new function */ -RETCODE SQL_API SQLGetEnvAttr(HENV EnvironmentHandle, SQLINTEGER Attribute, - PTR Value, SQLINTEGER BufferLength, - SQLINTEGER *StringLength) { - UNUSED(BufferLength, StringLength); - RETCODE ret; - EnvironmentClass *env = (EnvironmentClass *)EnvironmentHandle; - - MYLOG(OPENSEARCH_TRACE, "entering " FORMAT_INTEGER "\n", Attribute); - ENTER_ENV_CS(env); - ret = SQL_SUCCESS; - switch (Attribute) { - case SQL_ATTR_CONNECTION_POOLING: - *((unsigned int *)Value) = - EN_is_pooling(env) ? SQL_CP_ONE_PER_DRIVER : SQL_CP_OFF; - break; - case SQL_ATTR_CP_MATCH: - *((unsigned int *)Value) = SQL_CP_RELAXED_MATCH; - break; - case SQL_ATTR_ODBC_VERSION: - *((unsigned int *)Value) = - EN_is_odbc2(env) ? SQL_OV_ODBC2 : SQL_OV_ODBC3; - break; - case SQL_ATTR_OUTPUT_NTS: - *((unsigned int *)Value) = SQL_TRUE; - break; - default: - env->errornumber = CONN_INVALID_ARGUMENT_NO; - ret = SQL_ERROR; - } - LEAVE_ENV_CS(env); - return ret; -} - -#ifndef UNICODE_SUPPORTXX -/* SQLGetConnectOption -> SQLGetconnectAttr */ -RETCODE SQL_API SQLGetConnectAttr(HDBC ConnectionHandle, SQLINTEGER Attribute, - PTR Value, SQLINTEGER BufferLength, - SQLINTEGER *StringLength) { - RETCODE ret; - - MYLOG(OPENSEARCH_TRACE, "entering " FORMAT_UINTEGER "\n", Attribute); - ENTER_CONN_CS((ConnectionClass *)ConnectionHandle); - CC_clear_error((ConnectionClass *)ConnectionHandle); - ret = OPENSEARCHAPI_GetConnectAttr(ConnectionHandle, Attribute, Value, BufferLength, - StringLength); - LEAVE_CONN_CS((ConnectionClass *)ConnectionHandle); - return ret; -} - -/* SQLGetStmtOption -> SQLGetStmtAttr */ -RETCODE SQL_API SQLGetStmtAttr(HSTMT StatementHandle, SQLINTEGER Attribute, - PTR Value, SQLINTEGER BufferLength, - SQLINTEGER *StringLength) { - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - - MYLOG(OPENSEARCH_TRACE, "entering Handle=%p " FORMAT_INTEGER "\n", StatementHandle, - Attribute); - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - ret = OPENSEARCHAPI_GetStmtAttr(StatementHandle, Attribute, Value, BufferLength, - StringLength); - LEAVE_STMT_CS(stmt); - return ret; -} - -/* SQLSetConnectOption -> SQLSetConnectAttr */ -RETCODE SQL_API SQLSetConnectAttr(HDBC ConnectionHandle, SQLINTEGER Attribute, - PTR Value, SQLINTEGER StringLength) { - RETCODE ret; - ConnectionClass *conn = (ConnectionClass *)ConnectionHandle; - - MYLOG(OPENSEARCH_TRACE, "entering " FORMAT_INTEGER "\n", Attribute); - ENTER_CONN_CS(conn); - CC_clear_error(conn); - ret = - OPENSEARCHAPI_SetConnectAttr(ConnectionHandle, Attribute, Value, StringLength); - LEAVE_CONN_CS(conn); - return ret; -} - -/* new function */ -RETCODE SQL_API SQLSetDescField(SQLHDESC DescriptorHandle, - SQLSMALLINT RecNumber, - SQLSMALLINT FieldIdentifier, PTR Value, - SQLINTEGER BufferLength) { - RETCODE ret; - - MYLOG(OPENSEARCH_TRACE, "entering h=%p rec=%d field=%d val=%p\n", DescriptorHandle, - RecNumber, FieldIdentifier, Value); - ret = OPENSEARCHAPI_SetDescField(DescriptorHandle, RecNumber, FieldIdentifier, - Value, BufferLength); - return ret; -} - -/* new fucntion */ -RETCODE SQL_API SQLSetDescRec(SQLHDESC DescriptorHandle, SQLSMALLINT RecNumber, - SQLSMALLINT Type, SQLSMALLINT SubType, - SQLLEN Length, SQLSMALLINT Precision, - SQLSMALLINT Scale, PTR Data, SQLLEN *StringLength, - SQLLEN *Indicator) { - UNUSED(DescriptorHandle, RecNumber, Type, SubType, Length, Precision, Scale, - Data, StringLength, Indicator); - MYLOG(OPENSEARCH_TRACE, "entering\n"); - MYLOG(OPENSEARCH_DEBUG, "Error not implemented\n"); - return SQL_ERROR; -} -#endif /* UNICODE_SUPPORTXX */ - -/* new function */ -RETCODE SQL_API SQLSetEnvAttr(HENV EnvironmentHandle, SQLINTEGER Attribute, - PTR Value, SQLINTEGER StringLength) { - UNUSED(StringLength); - RETCODE ret; - EnvironmentClass *env = (EnvironmentClass *)EnvironmentHandle; - - MYLOG(OPENSEARCH_TRACE, "entering att=" FORMAT_INTEGER "," FORMAT_ULEN "\n", - Attribute, (SQLULEN)Value); - ENTER_ENV_CS(env); - switch (Attribute) { - case SQL_ATTR_CONNECTION_POOLING: - switch ((ULONG_PTR)Value) { - case SQL_CP_OFF: - EN_unset_pooling(env); - ret = SQL_SUCCESS; - break; - case SQL_CP_ONE_PER_DRIVER: - EN_set_pooling(env); - ret = SQL_SUCCESS; - break; - default: - ret = SQL_SUCCESS_WITH_INFO; - } - break; - case SQL_ATTR_CP_MATCH: - /* *((unsigned int *) Value) = SQL_CP_RELAXED_MATCH; */ - ret = SQL_SUCCESS; - break; - case SQL_ATTR_ODBC_VERSION: - if (SQL_OV_ODBC2 == CAST_UPTR(SQLUINTEGER, Value)) - EN_set_odbc2(env); - else - EN_set_odbc3(env); - ret = SQL_SUCCESS; - break; - case SQL_ATTR_OUTPUT_NTS: - if (SQL_TRUE == CAST_UPTR(SQLUINTEGER, Value)) - ret = SQL_SUCCESS; - else - ret = SQL_SUCCESS_WITH_INFO; - break; - default: - env->errornumber = CONN_INVALID_ARGUMENT_NO; - ret = SQL_ERROR; - } - if (SQL_SUCCESS_WITH_INFO == ret) { - env->errornumber = CONN_OPTION_VALUE_CHANGED; - env->errormsg = "SetEnv changed to "; - } - LEAVE_ENV_CS(env); - return ret; -} - -#ifndef UNICODE_SUPPORTXX -/* SQLSet(Param/Scroll/Stmt)Option -> SQLSetStmtAttr */ -RETCODE SQL_API SQLSetStmtAttr(HSTMT StatementHandle, SQLINTEGER Attribute, - PTR Value, SQLINTEGER StringLength) { - StatementClass *stmt = (StatementClass *)StatementHandle; - RETCODE ret; - - MYLOG(OPENSEARCH_TRACE, "entering Handle=%p " FORMAT_INTEGER "," FORMAT_ULEN "\n", - StatementHandle, Attribute, (SQLULEN)Value); - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - ret = OPENSEARCHAPI_SetStmtAttr(StatementHandle, Attribute, Value, StringLength); - LEAVE_STMT_CS(stmt); - return ret; -} -#endif /* UNICODE_SUPPORTXX */ - -#define SQL_FUNC_ESET(pfExists, uwAPI) \ - (*(((UWORD *)(pfExists)) + ((uwAPI) >> 4)) |= (1 << ((uwAPI)&0x000F))) -RETCODE SQL_API OPENSEARCHAPI_GetFunctions30(HDBC hdbc, SQLUSMALLINT fFunction, - SQLUSMALLINT FAR *pfExists) { - ConnectionClass *conn = (ConnectionClass *)hdbc; - CC_clear_error(conn); - if (fFunction != SQL_API_ODBC3_ALL_FUNCTIONS) - return SQL_ERROR; - memset(pfExists, 0, sizeof(UWORD) * SQL_API_ODBC3_ALL_FUNCTIONS_SIZE); - - /* SQL_FUNC_ESET(pfExists, SQL_API_SQLALLOCCONNECT); 1 deprecated */ - /* SQL_FUNC_ESET(pfExists, SQL_API_SQLALLOCENV); 2 deprecated */ - /* SQL_FUNC_ESET(pfExists, SQL_API_SQLALLOCSTMT); 3 deprecated */ - - /* - * for (i = SQL_API_SQLBINDCOL; i <= 23; i++) SQL_FUNC_ESET(pfExists, - * i); - */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLBINDCOL); /* 4 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLCANCEL); /* 5 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLCOLATTRIBUTE); /* 6 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLCONNECT); /* 7 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLDESCRIBECOL); /* 8 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLDISCONNECT); /* 9 */ - /* SQL_FUNC_ESET(pfExists, SQL_API_SQLERROR); 10 deprecated */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLEXECDIRECT); /* 11 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLEXECUTE); /* 12 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLFETCH); /* 13 */ - /* SQL_FUNC_ESET(pfExists, SQL_API_SQLFREECONNECT); 14 deprecated */ - /* SQL_FUNC_ESET(pfExists, SQL_API_SQLFREEENV); 15 deprecated */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLFREESTMT); /* 16 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLGETCURSORNAME); /* 17 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLNUMRESULTCOLS); /* 18 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLPREPARE); /* 19 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLROWCOUNT); /* 20 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLSETCURSORNAME); /* 21 */ - /* SQL_FUNC_ESET(pfExists, SQL_API_SQLSETPARAM); 22 deprecated */ - /* SQL_FUNC_ESET(pfExists, SQL_API_SQLTRANSACT); 23 deprecated */ - - /* - * for (i = 40; i < SQL_API_SQLEXTENDEDFETCH; i++) - * SQL_FUNC_ESET(pfExists, i); - */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLCOLUMNS); /* 40 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLDRIVERCONNECT); /* 41 */ - /* SQL_FUNC_ESET(pfExists, SQL_API_SQLGETCONNECTOPTION); 42 deprecated */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLGETDATA); /* 43 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLGETFUNCTIONS); /* 44 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLGETINFO); /* 45 */ - /* SQL_FUNC_ESET(pfExists, SQL_API_SQLGETSTMTOPTION); 46 deprecated */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLGETTYPEINFO); /* 47 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLPARAMDATA); /* 48 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLPUTDATA); /* 49 */ - - /* SQL_FUNC_ESET(pfExists, SQL_API_SQLSETCONNECTIONOPTION); 50 deprecated */ - /* SQL_FUNC_ESET(pfExists, SQL_API_SQLSETSTMTOPTION); 51 deprecated */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLSPECIALCOLUMNS); /* 52 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLSTATISTICS); /* 53 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLTABLES); /* 54 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLDATASOURCES); /* 57 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLDESCRIBEPARAM); /* 58 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLEXTENDEDFETCH); /* 59 deprecated ? */ - - /* - * for (++i; i < SQL_API_SQLBINDPARAMETER; i++) - * SQL_FUNC_ESET(pfExists, i); - */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLFOREIGNKEYS); /* 60 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLMORERESULTS); /* 61 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLNATIVESQL); /* 62 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLNUMPARAMS); /* 63 */ - /* SQL_FUNC_ESET(pfExists, SQL_API_SQLPARAMOPTIONS); 64 deprecated */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLPRIMARYKEYS); /* 65 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLPROCEDURECOLUMNS); /* 66 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLPROCEDURES); /* 67 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLSETPOS); /* 68 */ - /* SQL_FUNC_ESET(pfExists, SQL_API_SQLSETSCROLLOPTIONS); 69 deprecated */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLTABLEPRIVILEGES); /* 70 */ - /* SQL_FUNC_ESET(pfExists, SQL_API_SQLDRIVERS); */ /* 71 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLBINDPARAMETER); /* 72 */ - - SQL_FUNC_ESET(pfExists, SQL_API_SQLALLOCHANDLE); /* 1001 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLBINDPARAM); /* 1002 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLCLOSECURSOR); /* 1003 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLCOPYDESC); /* 1004 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLENDTRAN); /* 1005 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLFREEHANDLE); /* 1006 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLGETCONNECTATTR); /* 1007 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLGETDESCFIELD); /* 1008 */ - SQL_FUNC_ESET(pfExists, - SQL_API_SQLGETDIAGFIELD); /* 1010 minimal implementation */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLGETDIAGREC); /* 1011 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLGETENVATTR); /* 1012 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLGETSTMTATTR); /* 1014 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLSETCONNECTATTR); /* 1016 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLSETDESCFIELD); /* 1017 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLSETENVATTR); /* 1019 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLSETSTMTATTR); /* 1020 */ - SQL_FUNC_ESET(pfExists, SQL_API_SQLFETCHSCROLL); /* 1021 */ - return SQL_SUCCESS; -} - -RETCODE SQL_API SQLBulkOperations(HSTMT hstmt, SQLSMALLINT operation) { - UNUSED(operation); - StatementClass *stmt = (StatementClass *)hstmt; - if (stmt == NULL) - return SQL_ERROR; - SC_clear_error(stmt); - SC_set_error(stmt, STMT_NOT_IMPLEMENTED_ERROR, - "Bulk operations are not supported.", "SQLBulkOperations"); - return SQL_ERROR; -} diff --git a/sql-odbc/src/sqlodbc/odbcapi30w.c b/sql-odbc/src/sqlodbc/odbcapi30w.c deleted file mode 100644 index dd8cf0d3a0..0000000000 --- a/sql-odbc/src/sqlodbc/odbcapi30w.c +++ /dev/null @@ -1,387 +0,0 @@ -#include -#include - -#include "opensearch_odbc.h" -#include "misc.h" -#include "opensearch_apifunc.h" -#include "opensearch_connection.h" -#include "statement.h" -#include "unicode_support.h" - -RETCODE SQL_API SQLGetStmtAttrW(SQLHSTMT hstmt, SQLINTEGER fAttribute, - PTR rgbValue, SQLINTEGER cbValueMax, - SQLINTEGER *pcbValue) { - UNUSED(hstmt, fAttribute, rgbValue, cbValueMax, pcbValue); - RETCODE ret; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ENTER_STMT_CS((StatementClass *)hstmt); - SC_clear_error((StatementClass *)hstmt); - ret = OPENSEARCHAPI_GetStmtAttr(hstmt, fAttribute, rgbValue, cbValueMax, pcbValue); - LEAVE_STMT_CS((StatementClass *)hstmt); - return ret; -} - -RETCODE SQL_API SQLSetStmtAttrW(SQLHSTMT hstmt, SQLINTEGER fAttribute, - PTR rgbValue, SQLINTEGER cbValueMax) { - RETCODE ret; - StatementClass *stmt = (StatementClass *)hstmt; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - ret = OPENSEARCHAPI_SetStmtAttr(hstmt, fAttribute, rgbValue, cbValueMax); - LEAVE_STMT_CS(stmt); - return ret; -} - -RETCODE SQL_API SQLGetConnectAttrW(HDBC hdbc, SQLINTEGER fAttribute, - PTR rgbValue, SQLINTEGER cbValueMax, - SQLINTEGER *pcbValue) { - RETCODE ret; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ENTER_CONN_CS((ConnectionClass *)hdbc); - CC_clear_error((ConnectionClass *)hdbc); - ret = - OPENSEARCHAPI_GetConnectAttr(hdbc, fAttribute, rgbValue, cbValueMax, pcbValue); - LEAVE_CONN_CS((ConnectionClass *)hdbc); - return ret; -} - -RETCODE SQL_API SQLSetConnectAttrW(HDBC hdbc, SQLINTEGER fAttribute, - PTR rgbValue, SQLINTEGER cbValue) { - RETCODE ret; - ConnectionClass *conn = (ConnectionClass *)hdbc; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ENTER_CONN_CS(conn); - CC_clear_error(conn); - CC_set_in_unicode_driver(conn); - ret = OPENSEARCHAPI_SetConnectAttr(hdbc, fAttribute, rgbValue, cbValue); - LEAVE_CONN_CS(conn); - return ret; -} - -/* new function */ -RETCODE SQL_API SQLSetDescFieldW(SQLHDESC DescriptorHandle, - SQLSMALLINT RecNumber, - SQLSMALLINT FieldIdentifier, PTR Value, - SQLINTEGER BufferLength) { - RETCODE ret; - SQLLEN vallen; - char *uval = NULL; - BOOL val_alloced = FALSE; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (BufferLength > 0 || SQL_NTS == BufferLength) { - switch (FieldIdentifier) { - case SQL_DESC_BASE_COLUMN_NAME: - case SQL_DESC_BASE_TABLE_NAME: - case SQL_DESC_CATALOG_NAME: - case SQL_DESC_LABEL: - case SQL_DESC_LITERAL_PREFIX: - case SQL_DESC_LITERAL_SUFFIX: - case SQL_DESC_LOCAL_TYPE_NAME: - case SQL_DESC_NAME: - case SQL_DESC_SCHEMA_NAME: - case SQL_DESC_TABLE_NAME: - case SQL_DESC_TYPE_NAME: - uval = ucs2_to_utf8( - Value, - BufferLength > 0 ? BufferLength / WCLEN : BufferLength, - &vallen, FALSE); - val_alloced = TRUE; - break; - default: - vallen = BufferLength; - uval = Value; - break; - } - } else { - vallen = BufferLength; - uval = Value; - } - ret = OPENSEARCHAPI_SetDescField(DescriptorHandle, RecNumber, FieldIdentifier, uval, - (SQLINTEGER)vallen); - if (val_alloced) - free(uval); - return ret; -} - -RETCODE SQL_API SQLGetDescFieldW(SQLHDESC hdesc, SQLSMALLINT iRecord, - SQLSMALLINT iField, PTR rgbValue, - SQLINTEGER cbValueMax, SQLINTEGER *pcbValue) { - RETCODE ret; - SQLINTEGER blen = 0, bMax, *pcbV; - char *rgbV = NULL, *rgbVt; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - switch (iField) { - case SQL_DESC_BASE_COLUMN_NAME: - case SQL_DESC_BASE_TABLE_NAME: - case SQL_DESC_CATALOG_NAME: - case SQL_DESC_LABEL: - case SQL_DESC_LITERAL_PREFIX: - case SQL_DESC_LITERAL_SUFFIX: - case SQL_DESC_LOCAL_TYPE_NAME: - case SQL_DESC_NAME: - case SQL_DESC_SCHEMA_NAME: - case SQL_DESC_TABLE_NAME: - case SQL_DESC_TYPE_NAME: - bMax = cbValueMax * 3 / WCLEN; - rgbV = malloc(bMax + 1); - pcbV = &blen; - for (rgbVt = rgbV;; bMax = blen + 1, rgbVt = realloc(rgbV, bMax)) { - if (!rgbVt) { - ret = SQL_ERROR; - break; - } - rgbV = rgbVt; - ret = OPENSEARCHAPI_GetDescField(hdesc, iRecord, iField, rgbV, bMax, - pcbV); - if (SQL_SUCCESS_WITH_INFO != ret || blen < bMax) - break; - } - if (SQL_SUCCEEDED(ret)) { - blen = (SQLINTEGER)utf8_to_ucs2( - rgbV, blen, (SQLWCHAR *)rgbValue, cbValueMax / WCLEN); - if (SQL_SUCCESS == ret - && blen * WCLEN >= (unsigned long)cbValueMax) { - ret = SQL_SUCCESS_WITH_INFO; - DC_set_error(hdesc, STMT_TRUNCATED, - "The buffer was too small for the rgbDesc."); - } - if (pcbValue) - *pcbValue = blen * WCLEN; - } - if (rgbV) - free(rgbV); - break; - default: - rgbV = rgbValue; - bMax = cbValueMax; - pcbV = pcbValue; - ret = OPENSEARCHAPI_GetDescField(hdesc, iRecord, iField, rgbV, bMax, pcbV); - break; - } - - return ret; -} - -RETCODE SQL_API SQLGetDiagRecW(SQLSMALLINT fHandleType, SQLHANDLE handle, - SQLSMALLINT iRecord, SQLWCHAR *szSqlState, - SQLINTEGER *pfNativeError, SQLWCHAR *szErrorMsg, - SQLSMALLINT cbErrorMsgMax, - SQLSMALLINT *pcbErrorMsg) { - RETCODE ret; - SQLSMALLINT buflen, tlen; - char qstr_ansi[8], *mtxt = NULL; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - buflen = 0; - if (szErrorMsg && cbErrorMsgMax > 0) { - buflen = cbErrorMsgMax; - mtxt = malloc(buflen); - } - ret = OPENSEARCHAPI_GetDiagRec(fHandleType, handle, iRecord, (SQLCHAR *)qstr_ansi, - pfNativeError, (SQLCHAR *)mtxt, buflen, &tlen); - if (SQL_SUCCEEDED(ret)) { - if (szSqlState) - utf8_to_ucs2(qstr_ansi, -1, szSqlState, 6); - if (mtxt && tlen <= cbErrorMsgMax) { - SQLULEN ulen = utf8_to_ucs2_lf(mtxt, tlen, FALSE, szErrorMsg, - cbErrorMsgMax, TRUE); - if (ulen == (SQLULEN)-1) - tlen = (SQLSMALLINT)locale_to_sqlwchar( - (SQLWCHAR *)szErrorMsg, mtxt, cbErrorMsgMax, FALSE); - else - tlen = (SQLSMALLINT)ulen; - if (tlen >= cbErrorMsgMax) - ret = SQL_SUCCESS_WITH_INFO; - else if (tlen < 0) { - char errc[32]; - - SPRINTF_FIXED(errc, "Error: SqlState=%s", qstr_ansi); - tlen = (SQLSMALLINT)utf8_to_ucs2(errc, -1, szErrorMsg, - cbErrorMsgMax); - } - } - if (pcbErrorMsg) - *pcbErrorMsg = tlen; - } - if (mtxt) - free(mtxt); - return ret; -} - -SQLRETURN SQL_API SQLColAttributeW(SQLHSTMT hstmt, SQLUSMALLINT iCol, - SQLUSMALLINT iField, SQLPOINTER pCharAttr, - SQLSMALLINT cbCharAttrMax, - SQLSMALLINT *pcbCharAttr, -#if defined(_WIN64) || defined(SQLCOLATTRIBUTE_SQLLEN) - SQLLEN *pNumAttr -#else - SQLPOINTER pNumAttr -#endif -) { - CSTR func = "SQLColAttributeW"; - RETCODE ret; - StatementClass *stmt = (StatementClass *)hstmt; - SQLSMALLINT *rgbL, blen = 0, bMax; - char *rgbD = NULL, *rgbDt; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - switch (iField) { - case SQL_DESC_BASE_COLUMN_NAME: - case SQL_DESC_BASE_TABLE_NAME: - case SQL_DESC_CATALOG_NAME: - case SQL_DESC_LABEL: - case SQL_DESC_LITERAL_PREFIX: - case SQL_DESC_LITERAL_SUFFIX: - case SQL_DESC_LOCAL_TYPE_NAME: - case SQL_DESC_NAME: - case SQL_DESC_SCHEMA_NAME: - case SQL_DESC_TABLE_NAME: - case SQL_DESC_TYPE_NAME: - case SQL_COLUMN_NAME: - bMax = cbCharAttrMax * 3 / WCLEN; - rgbD = malloc(bMax); - rgbL = &blen; - for (rgbDt = rgbD;; bMax = blen + 1, rgbDt = realloc(rgbD, bMax)) { - if (!rgbDt) { - ret = SQL_ERROR; - break; - } - rgbD = rgbDt; - ret = OPENSEARCHAPI_ColAttributes(hstmt, iCol, iField, rgbD, bMax, rgbL, - pNumAttr); - if (SQL_SUCCESS_WITH_INFO != ret || blen < bMax) - break; - } - if (SQL_SUCCEEDED(ret)) { - blen = (SQLSMALLINT)utf8_to_ucs2( - rgbD, blen, (SQLWCHAR *)pCharAttr, cbCharAttrMax / WCLEN); - if (SQL_SUCCESS == ret - && blen * WCLEN >= (unsigned long)cbCharAttrMax) { - ret = SQL_SUCCESS_WITH_INFO; - SC_set_error(stmt, STMT_TRUNCATED, - "The buffer was too small for the pCharAttr.", - func); - } - if (pcbCharAttr) - *pcbCharAttr = blen * WCLEN; - } - if (rgbD) - free(rgbD); - break; - default: - rgbD = pCharAttr; - bMax = cbCharAttrMax; - rgbL = pcbCharAttr; - ret = OPENSEARCHAPI_ColAttributes(hstmt, iCol, iField, rgbD, bMax, rgbL, - pNumAttr); - break; - } - LEAVE_STMT_CS(stmt); - - return ret; -} - -RETCODE SQL_API SQLGetDiagFieldW(SQLSMALLINT fHandleType, SQLHANDLE handle, - SQLSMALLINT iRecord, SQLSMALLINT fDiagField, - SQLPOINTER rgbDiagInfo, - SQLSMALLINT cbDiagInfoMax, - SQLSMALLINT *pcbDiagInfo) { - RETCODE ret; - SQLSMALLINT *rgbL, blen = 0, bMax; - char *rgbD = NULL, *rgbDt; - - MYLOG(OPENSEARCH_TRACE, "entering Handle=(%u,%p) Rec=%d Id=%d info=(%p,%d)\n", fHandleType, - handle, iRecord, fDiagField, rgbDiagInfo, cbDiagInfoMax); - switch (fDiagField) { - case SQL_DIAG_DYNAMIC_FUNCTION: - case SQL_DIAG_CLASS_ORIGIN: - case SQL_DIAG_CONNECTION_NAME: - case SQL_DIAG_MESSAGE_TEXT: - case SQL_DIAG_SERVER_NAME: - case SQL_DIAG_SQLSTATE: - case SQL_DIAG_SUBCLASS_ORIGIN: - bMax = cbDiagInfoMax * 3 / WCLEN + 1; - if (rgbD = malloc(bMax), !rgbD) - return SQL_ERROR; - rgbL = &blen; - for (rgbDt = rgbD;; bMax = blen + 1, rgbDt = realloc(rgbD, bMax)) { - if (!rgbDt) { - free(rgbD); - return SQL_ERROR; - } - rgbD = rgbDt; - ret = OPENSEARCHAPI_GetDiagField(fHandleType, handle, iRecord, - fDiagField, rgbD, bMax, rgbL); - if (SQL_SUCCESS_WITH_INFO != ret || blen < bMax) - break; - } - if (SQL_SUCCEEDED(ret)) { - SQLULEN ulen = (SQLSMALLINT)utf8_to_ucs2_lf( - rgbD, blen, FALSE, (SQLWCHAR *)rgbDiagInfo, - cbDiagInfoMax / WCLEN, TRUE); - if (ulen == (SQLULEN)-1) - blen = (SQLSMALLINT)locale_to_sqlwchar( - (SQLWCHAR *)rgbDiagInfo, rgbD, cbDiagInfoMax / WCLEN, - FALSE); - else - blen = (SQLSMALLINT)ulen; - if (SQL_SUCCESS == ret - && blen * WCLEN >= (unsigned long)cbDiagInfoMax) - ret = SQL_SUCCESS_WITH_INFO; - if (pcbDiagInfo) { - *pcbDiagInfo = blen * WCLEN; - } - } - if (rgbD) - free(rgbD); - break; - default: - rgbD = rgbDiagInfo; - bMax = cbDiagInfoMax; - rgbL = pcbDiagInfo; - ret = OPENSEARCHAPI_GetDiagField(fHandleType, handle, iRecord, fDiagField, - rgbD, bMax, rgbL); - break; - } - - return ret; -} - -/* new function */ -RETCODE SQL_API SQLGetDescRecW(SQLHDESC DescriptorHandle, SQLSMALLINT RecNumber, - SQLWCHAR *Name, SQLSMALLINT BufferLength, - SQLSMALLINT *StringLength, SQLSMALLINT *Type, - SQLSMALLINT *SubType, SQLLEN *Length, - SQLSMALLINT *Precision, SQLSMALLINT *Scale, - SQLSMALLINT *Nullable) { - UNUSED(DescriptorHandle, RecNumber, Name, BufferLength, StringLength, Type, - SubType, Length, Precision, Scale, Nullable); - MYLOG(OPENSEARCH_TRACE, "entering\n"); - MYLOG(OPENSEARCH_DEBUG, "Error not implemented\n"); - return SQL_ERROR; -} - -/* new fucntion */ -RETCODE SQL_API SQLSetDescRecW(SQLHDESC DescriptorHandle, SQLSMALLINT RecNumber, - SQLSMALLINT Type, SQLSMALLINT SubType, - SQLLEN Length, SQLSMALLINT Precision, - SQLSMALLINT Scale, PTR Data, - SQLLEN *StringLength, SQLLEN *Indicator) { - UNUSED(DescriptorHandle, RecNumber, Type, SubType, Length, Precision, Scale, - Data, StringLength, Indicator); - MYLOG(OPENSEARCH_TRACE, "entering\n"); - MYLOG(OPENSEARCH_DEBUG, "Error not implemented\n"); - return SQL_ERROR; -} diff --git a/sql-odbc/src/sqlodbc/odbcapiw.c b/sql-odbc/src/sqlodbc/odbcapiw.c deleted file mode 100644 index 7577e0577c..0000000000 --- a/sql-odbc/src/sqlodbc/odbcapiw.c +++ /dev/null @@ -1,1031 +0,0 @@ -#include -#include - -#include "opensearch_odbc.h" -#include "opensearch_apifunc.h" -#include "opensearch_connection.h" -#include "opensearch_driver_connect.h" -#include "opensearch_info.h" -#include "statement.h" -#include "unicode_support.h" - -RETCODE SQL_API SQLColumnsW(HSTMT StatementHandle, SQLWCHAR *CatalogName, - SQLSMALLINT NameLength1, SQLWCHAR *SchemaName, - SQLSMALLINT NameLength2, SQLWCHAR *TableName, - SQLSMALLINT NameLength3, SQLWCHAR *ColumnName, - SQLSMALLINT NameLength4) { - CSTR func = "SQLColumnsW"; - RETCODE ret; - char *ctName, *scName, *tbName, *clName; - SQLLEN nmlen1, nmlen2, nmlen3, nmlen4; - StatementClass *stmt = (StatementClass *)StatementHandle; - BOOL lower_id; - UWORD flag = PODBC_SEARCH_PUBLIC_SCHEMA; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - lower_id = DEFAULT_LOWERCASEIDENTIFIER; - ctName = ucs2_to_utf8(CatalogName, NameLength1, &nmlen1, lower_id); - scName = ucs2_to_utf8(SchemaName, NameLength2, &nmlen2, lower_id); - tbName = ucs2_to_utf8(TableName, NameLength3, &nmlen3, lower_id); - clName = ucs2_to_utf8(ColumnName, NameLength4, &nmlen4, lower_id); - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (stmt->options.metadata_id) - flag |= PODBC_NOT_SEARCH_PATTERN; - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_Columns(StatementHandle, (SQLCHAR *)ctName, - (SQLSMALLINT)nmlen1, (SQLCHAR *)scName, - (SQLSMALLINT)nmlen2, (SQLCHAR *)tbName, - (SQLSMALLINT)nmlen3, (SQLCHAR *)clName, - (SQLSMALLINT)nmlen4, flag, 0, 0); - LEAVE_STMT_CS(stmt); - if (ctName) - free(ctName); - if (scName) - free(scName); - if (tbName) - free(tbName); - if (clName) - free(clName); - return ret; -} - -RETCODE SQL_API SQLConnectW(HDBC ConnectionHandle, SQLWCHAR *ServerName, - SQLSMALLINT NameLength1, SQLWCHAR *UserName, - SQLSMALLINT NameLength2, SQLWCHAR *Authentication, - SQLSMALLINT NameLength3) { - char *svName, *usName, *auth; - SQLLEN nmlen1, nmlen2, nmlen3; - RETCODE ret; - ConnectionClass *conn = (ConnectionClass *)ConnectionHandle; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ENTER_CONN_CS(conn); - CC_clear_error(conn); - CC_set_in_unicode_driver(conn); - svName = ucs2_to_utf8(ServerName, NameLength1, &nmlen1, FALSE); - usName = ucs2_to_utf8(UserName, NameLength2, &nmlen2, FALSE); - auth = ucs2_to_utf8(Authentication, NameLength3, &nmlen3, FALSE); - ret = - OPENSEARCHAPI_Connect(ConnectionHandle, (SQLCHAR *)svName, (SQLSMALLINT)nmlen1, - (SQLCHAR *)usName, (SQLSMALLINT)nmlen2, (SQLCHAR *)auth, - (SQLSMALLINT)nmlen3); - LEAVE_CONN_CS(conn); - if (svName) - free(svName); - if (usName) - free(usName); - if (auth) - free(auth); - return ret; -} - -RETCODE SQL_API SQLDriverConnectW(HDBC hdbc, HWND hwnd, SQLWCHAR *szConnStrIn, - SQLSMALLINT cbConnStrIn, - SQLWCHAR *szConnStrOut, - SQLSMALLINT cbConnStrOutMax, - SQLSMALLINT *pcbConnStrOut, - SQLUSMALLINT fDriverCompletion) { - CSTR func = "SQLDriverConnectW"; - char *szIn, *szOut = NULL; - SQLSMALLINT maxlen, obuflen = 0; - SQLLEN inlen; - SQLSMALLINT olen, *pCSO; - RETCODE ret; - ConnectionClass *conn = (ConnectionClass *)hdbc; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ENTER_CONN_CS(conn); - CC_clear_error(conn); - CC_set_in_unicode_driver(conn); - szIn = ucs2_to_utf8(szConnStrIn, cbConnStrIn, &inlen, FALSE); - maxlen = cbConnStrOutMax; - pCSO = NULL; - olen = 0; - if (maxlen > 0) { - obuflen = maxlen + 1; - szOut = malloc(obuflen); - if (!szOut) { - CC_set_error(conn, CONN_NO_MEMORY_ERROR, - "Could not allocate memory for output buffer", func); - ret = SQL_ERROR; - goto cleanup; - } - pCSO = &olen; - } else if (pcbConnStrOut) - pCSO = &olen; - ret = - OPENSEARCHAPI_DriverConnect(hdbc, hwnd, (SQLCHAR *)szIn, (SQLSMALLINT)inlen, - (SQLCHAR *)szOut, maxlen, pCSO, fDriverCompletion); - if (ret != SQL_ERROR && NULL != pCSO) { - SQLLEN outlen = olen; - - if (olen < obuflen) - outlen = utf8_to_ucs2(szOut, olen, szConnStrOut, cbConnStrOutMax); - else - utf8_to_ucs2(szOut, maxlen, szConnStrOut, cbConnStrOutMax); - if (outlen >= cbConnStrOutMax && NULL != szConnStrOut - && NULL != pcbConnStrOut) { - MYLOG(OPENSEARCH_ALL, "cbConnstrOutMax=%d pcb=%p\n", cbConnStrOutMax, - pcbConnStrOut); - if (SQL_SUCCESS == ret) { - CC_set_error(conn, CONN_TRUNCATED, - "the ConnStrOut is too small", func); - ret = SQL_SUCCESS_WITH_INFO; - } - } - if (pcbConnStrOut) - *pcbConnStrOut = (SQLSMALLINT)outlen; - } -cleanup: - LEAVE_CONN_CS(conn); - if (szOut) - free(szOut); - if (szIn) - free(szIn); - return ret; -} -RETCODE SQL_API SQLBrowseConnectW(HDBC hdbc, SQLWCHAR *szConnStrIn, - SQLSMALLINT cbConnStrIn, - SQLWCHAR *szConnStrOut, - SQLSMALLINT cbConnStrOutMax, - SQLSMALLINT *pcbConnStrOut) { - CSTR func = "SQLBrowseConnectW"; - char *szIn, *szOut; - SQLLEN inlen; - SQLUSMALLINT obuflen; - SQLSMALLINT olen = 0; - RETCODE ret; - ConnectionClass *conn = (ConnectionClass *)hdbc; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ENTER_CONN_CS(conn); - CC_clear_error(conn); - CC_set_in_unicode_driver(conn); - szIn = ucs2_to_utf8(szConnStrIn, cbConnStrIn, &inlen, FALSE); - obuflen = cbConnStrOutMax + 1; - szOut = malloc(obuflen); - if (szOut) - ret = OPENSEARCHAPI_BrowseConnect(hdbc, (SQLCHAR *)szIn, (SQLSMALLINT)inlen, - (SQLCHAR *)szOut, cbConnStrOutMax, &olen); - else { - CC_set_error(conn, CONN_NO_MEMORY_ERROR, - "Could not allocate memory for output buffer", func); - ret = SQL_ERROR; - } - LEAVE_CONN_CS(conn); - if (ret != SQL_ERROR) { - SQLLEN outlen = - utf8_to_ucs2(szOut, olen, szConnStrOut, cbConnStrOutMax); - if (pcbConnStrOut) - *pcbConnStrOut = (SQLSMALLINT)outlen; - } - free(szOut); - if (szIn) - free(szIn); - return ret; -} - -RETCODE SQL_API SQLDataSourcesW(HENV EnvironmentHandle, SQLUSMALLINT Direction, - SQLWCHAR *ServerName, SQLSMALLINT BufferLength1, - SQLSMALLINT *NameLength1, SQLWCHAR *Description, - SQLSMALLINT BufferLength2, - SQLSMALLINT *NameLength2) { - UNUSED(EnvironmentHandle, Direction, ServerName, BufferLength1, NameLength1, - Description, BufferLength2, NameLength2); - MYLOG(OPENSEARCH_TRACE, "entering\n"); - return SQL_ERROR; -} - -RETCODE SQL_API SQLDescribeColW(HSTMT StatementHandle, - SQLUSMALLINT ColumnNumber, SQLWCHAR *ColumnName, - SQLSMALLINT BufferLength, - SQLSMALLINT *NameLength, SQLSMALLINT *DataType, - SQLULEN *ColumnSize, SQLSMALLINT *DecimalDigits, - SQLSMALLINT *Nullable) { - CSTR func = "SQLDescribeColW"; - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - SQLSMALLINT buflen, nmlen = 0; - char *clName = NULL, *clNamet = NULL; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - buflen = 0; - if (BufferLength > 0) - buflen = BufferLength * 3; - else if (NameLength) - buflen = 32; - if (buflen > 0) - clNamet = malloc(buflen); - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - for (;; buflen = nmlen + 1, clNamet = realloc(clName, buflen)) { - if (!clNamet) { - SC_set_error(stmt, STMT_NO_MEMORY_ERROR, - "Could not allocate memory for column name", func); - ret = SQL_ERROR; - break; - } - clName = clNamet; - ret = OPENSEARCHAPI_DescribeCol(StatementHandle, ColumnNumber, - (SQLCHAR *)clName, buflen, &nmlen, DataType, - ColumnSize, DecimalDigits, Nullable); - if (SQL_SUCCESS_WITH_INFO != ret || nmlen < buflen) - break; - } - if (SQL_SUCCEEDED(ret)) { - SQLLEN nmcount = nmlen; - - if (nmlen < buflen) - nmcount = utf8_to_ucs2(clName, nmlen, ColumnName, BufferLength); - if (SQL_SUCCESS == ret && BufferLength > 0 && nmcount > BufferLength) { - ret = SQL_SUCCESS_WITH_INFO; - SC_set_error(stmt, STMT_TRUNCATED, "Column name too large", func); - } - if (NameLength) - *NameLength = (SQLSMALLINT)nmcount; - } - LEAVE_STMT_CS(stmt); - if (clName) - free(clName); - return ret; -} - -RETCODE SQL_API SQLExecDirectW(HSTMT StatementHandle, SQLWCHAR *StatementText, - SQLINTEGER TextLength) { - if (StatementHandle == NULL) - return SQL_ERROR; - - StatementClass *stmt = (StatementClass *)StatementHandle; - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - // Get query string - SQLLEN slen = 0; - char *stxt = ucs2_to_utf8(StatementText, TextLength, &slen, FALSE); - - // Enter critical - ENTER_STMT_CS(stmt); - - // Clear error and rollback - SC_clear_error(stmt); - - // Execute statement if statement is ready - RETCODE ret = SQL_ERROR; - if (!SC_opencheck(stmt, "SQLExecDirectW")) - ret = OPENSEARCHAPI_ExecDirect(StatementHandle, (const SQLCHAR *)stxt, - (SQLINTEGER)slen, 1); - - // Exit critical - LEAVE_STMT_CS(stmt); - - if (stxt) - free(stxt); - return ret; -} - -RETCODE SQL_API SQLGetCursorNameW(HSTMT StatementHandle, SQLWCHAR *CursorName, - SQLSMALLINT BufferLength, - SQLSMALLINT *NameLength) { - CSTR func = "SQLGetCursorNameW"; - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - char *crName = NULL, *crNamet; - SQLSMALLINT clen = 0, buflen; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (BufferLength > 0) - buflen = BufferLength * 3; - else - buflen = 32; - crNamet = malloc(buflen); - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - for (;; buflen = clen + 1, crNamet = realloc(crName, buflen)) { - if (!crNamet) { - SC_set_error(stmt, STMT_NO_MEMORY_ERROR, - "Could not allocate memory for cursor name", func); - ret = SQL_ERROR; - break; - } - crName = crNamet; - ret = OPENSEARCHAPI_GetCursorName(StatementHandle, (SQLCHAR *)crName, buflen, - &clen); - if (SQL_SUCCESS_WITH_INFO != ret || clen < buflen) - break; - } - if (SQL_SUCCEEDED(ret)) { - SQLLEN nmcount = clen; - - if (clen < buflen) - nmcount = utf8_to_ucs2(crName, clen, CursorName, BufferLength); - if (SQL_SUCCESS == ret && nmcount > BufferLength) { - ret = SQL_SUCCESS_WITH_INFO; - SC_set_error(stmt, STMT_TRUNCATED, "Cursor name too large", func); - } - if (NameLength) - *NameLength = (SQLSMALLINT)nmcount; - } - LEAVE_STMT_CS(stmt); - free(crName); - return ret; -} - -RETCODE SQL_API SQLGetInfoW(HDBC ConnectionHandle, SQLUSMALLINT InfoType, - PTR InfoValue, SQLSMALLINT BufferLength, - SQLSMALLINT *StringLength) { - ConnectionClass *conn = (ConnectionClass *)ConnectionHandle; - RETCODE ret; - - ENTER_CONN_CS(conn); - CC_set_in_unicode_driver(conn); - CC_clear_error(conn); - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if ((ret = OPENSEARCHAPI_GetInfo(ConnectionHandle, InfoType, InfoValue, - BufferLength, StringLength)) - == SQL_ERROR) - CC_log_error("SQLGetInfoW", "", conn); - LEAVE_CONN_CS(conn); - return ret; -} - -RETCODE SQL_API SQLPrepareW(HSTMT StatementHandle, SQLWCHAR *StatementText, - SQLINTEGER TextLength) { - if (StatementHandle == NULL) - return SQL_ERROR; - - CSTR func = "SQLPrepareW"; - StatementClass *stmt = (StatementClass *)StatementHandle; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - SQLLEN slen; - char *stxt = ucs2_to_utf8(StatementText, TextLength, &slen, FALSE); - - // Enter critical - ENTER_STMT_CS(stmt); - - // Clear error and rollback - SC_clear_error(stmt); - - // Prepare statement if statement is ready - RETCODE ret = SQL_ERROR; - if (!SC_opencheck(stmt, func)) - ret = OPENSEARCHAPI_Prepare(StatementHandle, (const SQLCHAR *)stxt, - (SQLINTEGER)slen); - - // Exit critical - LEAVE_STMT_CS(stmt); - - // Release memory - if (stxt) - free(stxt); - return ret; -} - -RETCODE SQL_API SQLSetCursorNameW(HSTMT StatementHandle, SQLWCHAR *CursorName, - SQLSMALLINT NameLength) { - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - char *crName; - SQLLEN nlen; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - crName = ucs2_to_utf8(CursorName, NameLength, &nlen, FALSE); - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - ret = OPENSEARCHAPI_SetCursorName(StatementHandle, (SQLCHAR *)crName, - (SQLSMALLINT)nlen); - LEAVE_STMT_CS(stmt); - if (crName) - free(crName); - return ret; -} - -RETCODE SQL_API SQLSpecialColumnsW( - HSTMT StatementHandle, SQLUSMALLINT IdentifierType, SQLWCHAR *CatalogName, - SQLSMALLINT NameLength1, SQLWCHAR *SchemaName, SQLSMALLINT NameLength2, - SQLWCHAR *TableName, SQLSMALLINT NameLength3, SQLUSMALLINT Scope, - SQLUSMALLINT Nullable) { - CSTR func = "SQLSpecialColumnsW"; - RETCODE ret; - char *ctName, *scName, *tbName; - SQLLEN nmlen1, nmlen2, nmlen3; - StatementClass *stmt = (StatementClass *)StatementHandle; - BOOL lower_id; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - lower_id = DEFAULT_LOWERCASEIDENTIFIER; - ctName = ucs2_to_utf8(CatalogName, NameLength1, &nmlen1, lower_id); - scName = ucs2_to_utf8(SchemaName, NameLength2, &nmlen2, lower_id); - tbName = ucs2_to_utf8(TableName, NameLength3, &nmlen3, lower_id); - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_SpecialColumns( - StatementHandle, IdentifierType, (SQLCHAR *)ctName, - (SQLSMALLINT)nmlen1, (SQLCHAR *)scName, (SQLSMALLINT)nmlen2, - (SQLCHAR *)tbName, (SQLSMALLINT)nmlen3, Scope, Nullable); - LEAVE_STMT_CS(stmt); - if (ctName) - free(ctName); - if (scName) - free(scName); - if (tbName) - free(tbName); - return ret; -} - -RETCODE SQL_API SQLStatisticsW(HSTMT StatementHandle, SQLWCHAR *CatalogName, - SQLSMALLINT NameLength1, SQLWCHAR *SchemaName, - SQLSMALLINT NameLength2, SQLWCHAR *TableName, - SQLSMALLINT NameLength3, SQLUSMALLINT Unique, - SQLUSMALLINT Reserved) { - CSTR func = "SQLStatisticsW"; - RETCODE ret; - char *ctName, *scName, *tbName; - SQLLEN nmlen1, nmlen2, nmlen3; - StatementClass *stmt = (StatementClass *)StatementHandle; - BOOL lower_id; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - lower_id = DEFAULT_LOWERCASEIDENTIFIER; - ctName = ucs2_to_utf8(CatalogName, NameLength1, &nmlen1, lower_id); - scName = ucs2_to_utf8(SchemaName, NameLength2, &nmlen2, lower_id); - tbName = ucs2_to_utf8(TableName, NameLength3, &nmlen3, lower_id); - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_Statistics(StatementHandle, (SQLCHAR *)ctName, - (SQLSMALLINT)nmlen1, (SQLCHAR *)scName, - (SQLSMALLINT)nmlen2, (SQLCHAR *)tbName, - (SQLSMALLINT)nmlen3, Unique, Reserved); - LEAVE_STMT_CS(stmt); - if (ctName) - free(ctName); - if (scName) - free(scName); - if (tbName) - free(tbName); - return ret; -} - -RETCODE SQL_API SQLTablesW(HSTMT StatementHandle, SQLWCHAR *CatalogName, - SQLSMALLINT NameLength1, SQLWCHAR *SchemaName, - SQLSMALLINT NameLength2, SQLWCHAR *TableName, - SQLSMALLINT NameLength3, SQLWCHAR *TableType, - SQLSMALLINT NameLength4) { - CSTR func = "SQLTablesW"; - RETCODE ret; - char *ctName, *scName, *tbName, *tbType; - SQLLEN nmlen1, nmlen2, nmlen3, nmlen4; - StatementClass *stmt = (StatementClass *)StatementHandle; - BOOL lower_id; - UWORD flag = 0; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - lower_id = DEFAULT_LOWERCASEIDENTIFIER; - ctName = ucs2_to_utf8(CatalogName, NameLength1, &nmlen1, lower_id); - scName = ucs2_to_utf8(SchemaName, NameLength2, &nmlen2, lower_id); - tbName = ucs2_to_utf8(TableName, NameLength3, &nmlen3, lower_id); - tbType = ucs2_to_utf8(TableType, NameLength4, &nmlen4, FALSE); - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (stmt->options.metadata_id) - flag |= PODBC_NOT_SEARCH_PATTERN; - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_Tables( - StatementHandle, (SQLCHAR *)ctName, (SQLSMALLINT)nmlen1, - (SQLCHAR *)scName, (SQLSMALLINT)nmlen2, (SQLCHAR *)tbName, - (SQLSMALLINT)nmlen3, (SQLCHAR *)tbType, (SQLSMALLINT)nmlen4, flag); - LEAVE_STMT_CS(stmt); - if (ctName) - free(ctName); - if (scName) - free(scName); - if (tbName) - free(tbName); - if (tbType) - free(tbType); - return ret; -} - -RETCODE SQL_API SQLColumnPrivilegesW( - HSTMT hstmt, SQLWCHAR *szCatalogName, SQLSMALLINT cbCatalogName, - SQLWCHAR *szSchemaName, SQLSMALLINT cbSchemaName, SQLWCHAR *szTableName, - SQLSMALLINT cbTableName, SQLWCHAR *szColumnName, SQLSMALLINT cbColumnName) { - CSTR func = "SQLColumnPrivilegesW"; - RETCODE ret; - char *ctName, *scName, *tbName, *clName; - SQLLEN nmlen1, nmlen2, nmlen3, nmlen4; - StatementClass *stmt = (StatementClass *)hstmt; - BOOL lower_id; - UWORD flag = 0; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - lower_id = DEFAULT_LOWERCASEIDENTIFIER; - ctName = ucs2_to_utf8(szCatalogName, cbCatalogName, &nmlen1, lower_id); - scName = ucs2_to_utf8(szSchemaName, cbSchemaName, &nmlen2, lower_id); - tbName = ucs2_to_utf8(szTableName, cbTableName, &nmlen3, lower_id); - clName = ucs2_to_utf8(szColumnName, cbColumnName, &nmlen4, lower_id); - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (stmt->options.metadata_id) - flag |= PODBC_NOT_SEARCH_PATTERN; - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_ColumnPrivileges( - hstmt, (SQLCHAR *)ctName, (SQLSMALLINT)nmlen1, (SQLCHAR *)scName, - (SQLSMALLINT)nmlen2, (SQLCHAR *)tbName, (SQLSMALLINT)nmlen3, - (SQLCHAR *)clName, (SQLSMALLINT)nmlen4, flag); - LEAVE_STMT_CS(stmt); - if (ctName) - free(ctName); - if (scName) - free(scName); - if (tbName) - free(tbName); - if (clName) - free(clName); - return ret; -} - -RETCODE SQL_API SQLForeignKeysW( - HSTMT hstmt, SQLWCHAR *szPkCatalogName, SQLSMALLINT cbPkCatalogName, - SQLWCHAR *szPkSchemaName, SQLSMALLINT cbPkSchemaName, - SQLWCHAR *szPkTableName, SQLSMALLINT cbPkTableName, - SQLWCHAR *szFkCatalogName, SQLSMALLINT cbFkCatalogName, - SQLWCHAR *szFkSchemaName, SQLSMALLINT cbFkSchemaName, - SQLWCHAR *szFkTableName, SQLSMALLINT cbFkTableName) { - CSTR func = "SQLForeignKeysW"; - RETCODE ret; - char *ctName, *scName, *tbName, *fkctName, *fkscName, *fktbName; - SQLLEN nmlen1, nmlen2, nmlen3, nmlen4, nmlen5, nmlen6; - StatementClass *stmt = (StatementClass *)hstmt; - BOOL lower_id; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - lower_id = DEFAULT_LOWERCASEIDENTIFIER; - ctName = ucs2_to_utf8(szPkCatalogName, cbPkCatalogName, &nmlen1, lower_id); - scName = ucs2_to_utf8(szPkSchemaName, cbPkSchemaName, &nmlen2, lower_id); - tbName = ucs2_to_utf8(szPkTableName, cbPkTableName, &nmlen3, lower_id); - fkctName = - ucs2_to_utf8(szFkCatalogName, cbFkCatalogName, &nmlen4, lower_id); - fkscName = ucs2_to_utf8(szFkSchemaName, cbFkSchemaName, &nmlen5, lower_id); - fktbName = ucs2_to_utf8(szFkTableName, cbFkTableName, &nmlen6, lower_id); - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_ForeignKeys( - hstmt, (SQLCHAR *)ctName, (SQLSMALLINT)nmlen1, (SQLCHAR *)scName, - (SQLSMALLINT)nmlen2, (SQLCHAR *)tbName, (SQLSMALLINT)nmlen3, - (SQLCHAR *)fkctName, (SQLSMALLINT)nmlen4, (SQLCHAR *)fkscName, - (SQLSMALLINT)nmlen5, (SQLCHAR *)fktbName, (SQLSMALLINT)nmlen6); - LEAVE_STMT_CS(stmt); - if (ctName) - free(ctName); - if (scName) - free(scName); - if (tbName) - free(tbName); - if (fkctName) - free(fkctName); - if (fkscName) - free(fkscName); - if (fktbName) - free(fktbName); - return ret; -} - -RETCODE SQL_API SQLNativeSqlW(HDBC hdbc, SQLWCHAR *szSqlStrIn, - SQLINTEGER cbSqlStrIn, SQLWCHAR *szSqlStr, - SQLINTEGER cbSqlStrMax, SQLINTEGER *pcbSqlStr) { - CSTR func = "SQLNativeSqlW"; - RETCODE ret; - char *szIn, *szOut = NULL, *szOutt = NULL; - SQLLEN slen; - SQLINTEGER buflen, olen = 0; - ConnectionClass *conn = (ConnectionClass *)hdbc; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - ENTER_CONN_CS(conn); - CC_clear_error(conn); - CC_set_in_unicode_driver(conn); - szIn = ucs2_to_utf8(szSqlStrIn, cbSqlStrIn, &slen, FALSE); - buflen = 3 * cbSqlStrMax; - if (buflen > 0) - szOutt = malloc(buflen); - for (;; buflen = olen + 1, szOutt = realloc(szOut, buflen)) { - if (!szOutt) { - CC_set_error(conn, CONN_NO_MEMORY_ERROR, - "Could not allocate memory for output buffer", func); - ret = SQL_ERROR; - break; - } - szOut = szOutt; - ret = OPENSEARCHAPI_NativeSql(hdbc, (SQLCHAR *)szIn, (SQLINTEGER)slen, - (SQLCHAR *)szOut, buflen, &olen); - if (SQL_SUCCESS_WITH_INFO != ret || olen < buflen) - break; - } - if (szIn) - free(szIn); - if (SQL_SUCCEEDED(ret)) { - SQLLEN szcount = olen; - - if (olen < buflen) - szcount = utf8_to_ucs2(szOut, olen, szSqlStr, cbSqlStrMax); - if (SQL_SUCCESS == ret && szcount > cbSqlStrMax) { - ret = SQL_SUCCESS_WITH_INFO; - CC_set_error(conn, CONN_TRUNCATED, "Sql string too large", func); - } - if (pcbSqlStr) - *pcbSqlStr = (SQLINTEGER)szcount; - } - LEAVE_CONN_CS(conn); - free(szOut); - return ret; -} - -RETCODE SQL_API SQLPrimaryKeysW(HSTMT hstmt, SQLWCHAR *szCatalogName, - SQLSMALLINT cbCatalogName, - SQLWCHAR *szSchemaName, - SQLSMALLINT cbSchemaName, SQLWCHAR *szTableName, - SQLSMALLINT cbTableName) { - CSTR func = "SQLPrimaryKeysW"; - RETCODE ret; - char *ctName, *scName, *tbName; - SQLLEN nmlen1, nmlen2, nmlen3; - StatementClass *stmt = (StatementClass *)hstmt; - BOOL lower_id; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - lower_id = DEFAULT_LOWERCASEIDENTIFIER; - ctName = ucs2_to_utf8(szCatalogName, cbCatalogName, &nmlen1, lower_id); - scName = ucs2_to_utf8(szSchemaName, cbSchemaName, &nmlen2, lower_id); - tbName = ucs2_to_utf8(szTableName, cbTableName, &nmlen3, lower_id); - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_PrimaryKeys(hstmt, (SQLCHAR *)ctName, (SQLSMALLINT)nmlen1, - (SQLCHAR *)scName, (SQLSMALLINT)nmlen2, - (SQLCHAR *)tbName, (SQLSMALLINT)nmlen3, 0); - LEAVE_STMT_CS(stmt); - if (ctName) - free(ctName); - if (scName) - free(scName); - if (tbName) - free(tbName); - return ret; -} - -RETCODE SQL_API SQLProcedureColumnsW( - HSTMT hstmt, SQLWCHAR *szCatalogName, SQLSMALLINT cbCatalogName, - SQLWCHAR *szSchemaName, SQLSMALLINT cbSchemaName, SQLWCHAR *szProcName, - SQLSMALLINT cbProcName, SQLWCHAR *szColumnName, SQLSMALLINT cbColumnName) { - CSTR func = "SQLProcedureColumnsW"; - RETCODE ret; - char *ctName, *scName, *prName, *clName; - SQLLEN nmlen1, nmlen2, nmlen3, nmlen4; - StatementClass *stmt = (StatementClass *)hstmt; - BOOL lower_id; - UWORD flag = 0; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - lower_id = DEFAULT_LOWERCASEIDENTIFIER; - ctName = ucs2_to_utf8(szCatalogName, cbCatalogName, &nmlen1, lower_id); - scName = ucs2_to_utf8(szSchemaName, cbSchemaName, &nmlen2, lower_id); - prName = ucs2_to_utf8(szProcName, cbProcName, &nmlen3, lower_id); - clName = ucs2_to_utf8(szColumnName, cbColumnName, &nmlen4, lower_id); - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (stmt->options.metadata_id) - flag |= PODBC_NOT_SEARCH_PATTERN; - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_ProcedureColumns( - hstmt, (SQLCHAR *)ctName, (SQLSMALLINT)nmlen1, (SQLCHAR *)scName, - (SQLSMALLINT)nmlen2, (SQLCHAR *)prName, (SQLSMALLINT)nmlen3, - (SQLCHAR *)clName, (SQLSMALLINT)nmlen4, flag); - LEAVE_STMT_CS(stmt); - if (ctName) - free(ctName); - if (scName) - free(scName); - if (prName) - free(prName); - if (clName) - free(clName); - return ret; -} - -RETCODE SQL_API SQLProceduresW(HSTMT hstmt, SQLWCHAR *szCatalogName, - SQLSMALLINT cbCatalogName, - SQLWCHAR *szSchemaName, SQLSMALLINT cbSchemaName, - SQLWCHAR *szProcName, SQLSMALLINT cbProcName) { - CSTR func = "SQLProceduresW"; - RETCODE ret; - char *ctName, *scName, *prName; - SQLLEN nmlen1, nmlen2, nmlen3; - StatementClass *stmt = (StatementClass *)hstmt; - BOOL lower_id; - UWORD flag = 0; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - lower_id = DEFAULT_LOWERCASEIDENTIFIER; - ctName = ucs2_to_utf8(szCatalogName, cbCatalogName, &nmlen1, lower_id); - scName = ucs2_to_utf8(szSchemaName, cbSchemaName, &nmlen2, lower_id); - prName = ucs2_to_utf8(szProcName, cbProcName, &nmlen3, lower_id); - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (stmt->options.metadata_id) - flag |= PODBC_NOT_SEARCH_PATTERN; - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_Procedures(hstmt, (SQLCHAR *)ctName, (SQLSMALLINT)nmlen1, - (SQLCHAR *)scName, (SQLSMALLINT)nmlen2, - (SQLCHAR *)prName, (SQLSMALLINT)nmlen3, flag); - LEAVE_STMT_CS(stmt); - if (ctName) - free(ctName); - if (scName) - free(scName); - if (prName) - free(prName); - return ret; -} - -RETCODE SQL_API SQLTablePrivilegesW(HSTMT hstmt, SQLWCHAR *szCatalogName, - SQLSMALLINT cbCatalogName, - SQLWCHAR *szSchemaName, - SQLSMALLINT cbSchemaName, - SQLWCHAR *szTableName, - SQLSMALLINT cbTableName) { - CSTR func = "SQLTablePrivilegesW"; - RETCODE ret; - char *ctName, *scName, *tbName; - SQLLEN nmlen1, nmlen2, nmlen3; - StatementClass *stmt = (StatementClass *)hstmt; - BOOL lower_id; - UWORD flag = 0; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - lower_id = DEFAULT_LOWERCASEIDENTIFIER; - ctName = ucs2_to_utf8(szCatalogName, cbCatalogName, &nmlen1, lower_id); - scName = ucs2_to_utf8(szSchemaName, cbSchemaName, &nmlen2, lower_id); - tbName = ucs2_to_utf8(szTableName, cbTableName, &nmlen3, lower_id); - ENTER_STMT_CS((StatementClass *)hstmt); - SC_clear_error(stmt); - if (stmt->options.metadata_id) - flag |= PODBC_NOT_SEARCH_PATTERN; - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_TablePrivileges( - hstmt, (SQLCHAR *)ctName, (SQLSMALLINT)nmlen1, (SQLCHAR *)scName, - (SQLSMALLINT)nmlen2, (SQLCHAR *)tbName, (SQLSMALLINT)nmlen3, flag); - LEAVE_STMT_CS((StatementClass *)hstmt); - if (ctName) - free(ctName); - if (scName) - free(scName); - if (tbName) - free(tbName); - return ret; -} - -RETCODE SQL_API SQLGetTypeInfoW(SQLHSTMT StatementHandle, - SQLSMALLINT DataType) { - CSTR func = "SQLGetTypeInfoW"; - RETCODE ret; - StatementClass *stmt = (StatementClass *)StatementHandle; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - if (SC_opencheck(stmt, func)) - ret = SQL_ERROR; - else - ret = OPENSEARCHAPI_GetTypeInfo(StatementHandle, DataType); - LEAVE_STMT_CS(stmt); - return ret; -} - -/* ODBC 2.x-specific functions */ -// TODO (#590): Add implementations for remaining ODBC 2.x function - -SQLRETURN SQL_API SQLColAttributesW(SQLHSTMT hstmt, SQLUSMALLINT iCol, - SQLUSMALLINT iField, SQLPOINTER pCharAttr, - SQLSMALLINT cbCharAttrMax, - SQLSMALLINT *pcbCharAttr, -#if defined(_WIN64) || defined(_WIN32) || defined(SQLCOLATTRIBUTE_SQLLEN) - SQLLEN *pNumAttr -#else - SQLPOINTER pNumAttr -#endif -) { - CSTR func = "SQLColAttributeW"; - RETCODE ret; - StatementClass *stmt = (StatementClass *)hstmt; - SQLSMALLINT *rgbL, blen = 0, bMax; - char *rgbD = NULL, *rgbDt; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (SC_connection_lost_check(stmt, __FUNCTION__)) - return SQL_ERROR; - - ENTER_STMT_CS(stmt); - SC_clear_error(stmt); - switch (iField) { - case SQL_DESC_BASE_COLUMN_NAME: - case SQL_DESC_BASE_TABLE_NAME: - case SQL_DESC_CATALOG_NAME: - case SQL_DESC_LABEL: - case SQL_DESC_LITERAL_PREFIX: - case SQL_DESC_LITERAL_SUFFIX: - case SQL_DESC_LOCAL_TYPE_NAME: - case SQL_DESC_NAME: - case SQL_DESC_SCHEMA_NAME: - case SQL_DESC_TABLE_NAME: - case SQL_DESC_TYPE_NAME: - case SQL_COLUMN_NAME: - bMax = cbCharAttrMax * 3 / WCLEN; - rgbD = malloc(bMax); - rgbL = &blen; - for (rgbDt = rgbD;; bMax = blen + 1, rgbDt = realloc(rgbD, bMax)) { - if (!rgbDt) { - ret = SQL_ERROR; - break; - } - rgbD = rgbDt; - ret = OPENSEARCHAPI_ColAttributes(hstmt, iCol, iField, rgbD, bMax, rgbL, - pNumAttr); - if (SQL_SUCCESS_WITH_INFO != ret || blen < bMax) - break; - } - if (SQL_SUCCEEDED(ret)) { - blen = (SQLSMALLINT)utf8_to_ucs2( - rgbD, blen, (SQLWCHAR *)pCharAttr, cbCharAttrMax / WCLEN); - if (SQL_SUCCESS == ret - && blen * WCLEN >= (unsigned long)cbCharAttrMax) { - ret = SQL_SUCCESS_WITH_INFO; - SC_set_error(stmt, STMT_TRUNCATED, - "The buffer was too small for the pCharAttr.", - func); - } - if (pcbCharAttr) - *pcbCharAttr = blen * WCLEN; - } - if (rgbD) - free(rgbD); - break; - default: - rgbD = pCharAttr; - bMax = cbCharAttrMax; - rgbL = pcbCharAttr; - ret = OPENSEARCHAPI_ColAttributes(hstmt, iCol, iField, rgbD, bMax, rgbL, - pNumAttr); - break; - } - LEAVE_STMT_CS(stmt); - - return ret; -} - -RETCODE SQL_API SQLGetConnectOptionW(HDBC ConnectionHandle, SQLUSMALLINT Option, - PTR Value) { - ConnectionClass *conn = (ConnectionClass *)ConnectionHandle; - RETCODE ret; - - ENTER_CONN_CS(conn); - CC_clear_error(conn); - MYLOG(OPENSEARCH_TRACE, "entering " FORMAT_UINTEGER "\n", Option); - ret = OPENSEARCHAPI_GetConnectOption(ConnectionHandle, Option, Value, NULL, 0); - LEAVE_CONN_CS(conn); - return ret; -} - -RETCODE SQL_API SQLSetConnectOptionW(HDBC ConnectionHandle, SQLUSMALLINT Option, - SQLULEN Value) { - ConnectionClass *conn = (ConnectionClass *)ConnectionHandle; - RETCODE ret; - - MYLOG(OPENSEARCH_TRACE, "entering " FORMAT_INTEGER "\n", Option); - ENTER_CONN_CS(conn); - CC_clear_error(conn); - ret = OPENSEARCHAPI_SetConnectOption(ConnectionHandle, Option, Value); - LEAVE_CONN_CS(conn); - return ret; -} - -RETCODE SQL_API SQLErrorW(SQLHENV EnvironmentHandle, SQLHDBC ConnectionHandle, - SQLHSTMT StatementHandle, SQLWCHAR *Sqlstate, - SQLINTEGER *NativeError, SQLWCHAR *MessageText, - SQLSMALLINT BufferLength, SQLSMALLINT *TextLength) { - RETCODE ret; - SQLSMALLINT buflen; - SQLSMALLINT tlen = 0; - SQLSMALLINT RecNumber = 1; - char qstr_ansi[8], *mtxt = NULL; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - buflen = 0; - if (MessageText && BufferLength > 0) { - buflen = BufferLength; - mtxt = malloc(buflen); - } - - if (StatementHandle) { - ret = OPENSEARCHAPI_StmtError(StatementHandle, RecNumber, (SQLCHAR *)qstr_ansi, - NativeError, (SQLCHAR *)mtxt, buflen, &tlen, 0); - } else if (ConnectionHandle) { - ret = OPENSEARCHAPI_ConnectError(ConnectionHandle, RecNumber, - (SQLCHAR *)qstr_ansi, NativeError, - (SQLCHAR *)mtxt, buflen, &tlen, 0); - } else if (EnvironmentHandle) { - ret = OPENSEARCHAPI_EnvError(EnvironmentHandle, RecNumber, (SQLCHAR *)qstr_ansi, - NativeError, (SQLCHAR *)mtxt, buflen, &tlen, 0); - } else { - ret = SQL_ERROR; - } - - if (SQL_SUCCEEDED(ret)) { - if (Sqlstate) - utf8_to_ucs2(qstr_ansi, -1, Sqlstate, 6); - if (mtxt && tlen <= BufferLength) { - // TODO (#612): Verify wide character conversion - SQLULEN ulen = utf8_to_ucs2_lf(mtxt, tlen, FALSE, MessageText, - BufferLength, TRUE); - if (ulen == (SQLULEN)-1) - tlen = (SQLSMALLINT)locale_to_sqlwchar( - (SQLWCHAR *)MessageText, mtxt, BufferLength, FALSE); - else - tlen = (SQLSMALLINT)ulen; - if (tlen >= BufferLength) - ret = SQL_SUCCESS_WITH_INFO; - else if (tlen < 0) { - char errc[32]; - - SPRINTF_FIXED(errc, "Error: SqlState=%s", qstr_ansi); - tlen = (SQLSMALLINT)utf8_to_ucs2(errc, -1, MessageText, - BufferLength); - } - } - if (TextLength) - *TextLength = tlen; - } - if (mtxt) - free(mtxt); - return ret; -} diff --git a/sql-odbc/src/sqlodbc/opensearch_api30.c b/sql-odbc/src/sqlodbc/opensearch_api30.c deleted file mode 100644 index 25baeb7915..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_api30.c +++ /dev/null @@ -1,1842 +0,0 @@ -#include -#include - -#include "descriptor.h" -#include "dlg_specific.h" -#include "environ.h" -#include "opensearch_odbc.h" -#include "loadlib.h" -#include "misc.h" -#include "opensearch_apifunc.h" -#include "opensearch_connection.h" -#include "qresult.h" -#include "statement.h" - -/* SQLError -> SQLDiagRec */ -RETCODE SQL_API OPENSEARCHAPI_GetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle, - SQLSMALLINT RecNumber, SQLCHAR *Sqlstate, - SQLINTEGER *NativeError, SQLCHAR *MessageText, - SQLSMALLINT BufferLength, - SQLSMALLINT *TextLength) { - RETCODE ret; - - MYLOG(OPENSEARCH_TRACE, "entering type=%d rec=%d\n", HandleType, RecNumber); - switch (HandleType) { - case SQL_HANDLE_ENV: - ret = OPENSEARCHAPI_EnvError(Handle, RecNumber, Sqlstate, NativeError, - MessageText, BufferLength, TextLength, 0); - break; - case SQL_HANDLE_DBC: - ret = OPENSEARCHAPI_ConnectError(Handle, RecNumber, Sqlstate, NativeError, - MessageText, BufferLength, TextLength, 0); - break; - case SQL_HANDLE_STMT: - ret = OPENSEARCHAPI_StmtError(Handle, RecNumber, Sqlstate, NativeError, - MessageText, BufferLength, TextLength, 0); - break; - case SQL_HANDLE_DESC: - ret = OPENSEARCHAPI_DescError(Handle, RecNumber, Sqlstate, NativeError, - MessageText, BufferLength, TextLength, 0); - break; - default: - ret = SQL_ERROR; - } - MYLOG(OPENSEARCH_TRACE, "leaving %d\n", ret); - return ret; -} - -/* - * Minimal implementation. - * - */ -RETCODE SQL_API OPENSEARCHAPI_GetDiagField(SQLSMALLINT HandleType, SQLHANDLE Handle, - SQLSMALLINT RecNumber, - SQLSMALLINT DiagIdentifier, PTR DiagInfoPtr, - SQLSMALLINT BufferLength, - SQLSMALLINT *StringLengthPtr) { - RETCODE ret = SQL_ERROR, rtn; - ConnectionClass *conn; - StatementClass *stmt; - SQLLEN rc; - SQLSMALLINT pcbErrm; - ssize_t rtnlen = -1; - int rtnctype = SQL_C_CHAR; - - MYLOG(OPENSEARCH_TRACE, "entering rec=%d\n", RecNumber); - switch (HandleType) { - case SQL_HANDLE_ENV: - switch (DiagIdentifier) { - case SQL_DIAG_CLASS_ORIGIN: - case SQL_DIAG_SUBCLASS_ORIGIN: - case SQL_DIAG_CONNECTION_NAME: - case SQL_DIAG_SERVER_NAME: - rtnlen = 0; - if (DiagInfoPtr && BufferLength > rtnlen) { - ret = SQL_SUCCESS; - *((char *)DiagInfoPtr) = '\0'; - } else - ret = SQL_SUCCESS_WITH_INFO; - break; - case SQL_DIAG_MESSAGE_TEXT: - ret = OPENSEARCHAPI_EnvError(Handle, RecNumber, NULL, NULL, - DiagInfoPtr, BufferLength, - StringLengthPtr, 0); - break; - case SQL_DIAG_NATIVE: - rtnctype = SQL_C_LONG; - ret = OPENSEARCHAPI_EnvError(Handle, RecNumber, NULL, - (SQLINTEGER *)DiagInfoPtr, NULL, 0, - NULL, 0); - break; - case SQL_DIAG_NUMBER: - rtnctype = SQL_C_LONG; - ret = OPENSEARCHAPI_EnvError(Handle, RecNumber, NULL, NULL, NULL, 0, - NULL, 0); - if (SQL_SUCCEEDED(ret)) { - *((SQLINTEGER *)DiagInfoPtr) = 1; - } - break; - case SQL_DIAG_SQLSTATE: - rtnlen = 5; - ret = OPENSEARCHAPI_EnvError(Handle, RecNumber, DiagInfoPtr, NULL, - NULL, 0, NULL, 0); - if (SQL_SUCCESS_WITH_INFO == ret) - ret = SQL_SUCCESS; - break; - case SQL_DIAG_RETURNCODE: /* driver manager returns */ - break; - case SQL_DIAG_CURSOR_ROW_COUNT: - case SQL_DIAG_ROW_COUNT: - case SQL_DIAG_DYNAMIC_FUNCTION: - case SQL_DIAG_DYNAMIC_FUNCTION_CODE: - /* options for statement type only */ - break; - } - break; - case SQL_HANDLE_DBC: - conn = (ConnectionClass *)Handle; - switch (DiagIdentifier) { - case SQL_DIAG_CLASS_ORIGIN: - case SQL_DIAG_SUBCLASS_ORIGIN: - case SQL_DIAG_CONNECTION_NAME: - rtnlen = 0; - if (DiagInfoPtr && BufferLength > rtnlen) { - ret = SQL_SUCCESS; - *((char *)DiagInfoPtr) = '\0'; - } else - ret = SQL_SUCCESS_WITH_INFO; - break; - case SQL_DIAG_SERVER_NAME: - rtnlen = strlen(CC_get_DSN(conn)); - if (DiagInfoPtr) { - strncpy_null(DiagInfoPtr, CC_get_DSN(conn), - BufferLength); - ret = (BufferLength > rtnlen ? SQL_SUCCESS - : SQL_SUCCESS_WITH_INFO); - } else - ret = SQL_SUCCESS_WITH_INFO; - break; - case SQL_DIAG_MESSAGE_TEXT: - ret = OPENSEARCHAPI_ConnectError(Handle, RecNumber, NULL, NULL, - DiagInfoPtr, BufferLength, - StringLengthPtr, 0); - break; - case SQL_DIAG_NATIVE: - rtnctype = SQL_C_LONG; - ret = OPENSEARCHAPI_ConnectError(Handle, RecNumber, NULL, - (SQLINTEGER *)DiagInfoPtr, NULL, 0, - NULL, 0); - break; - case SQL_DIAG_NUMBER: - rtnctype = SQL_C_LONG; - ret = OPENSEARCHAPI_ConnectError(Handle, RecNumber, NULL, NULL, - NULL, 0, NULL, 0); - if (SQL_SUCCEEDED(ret)) { - *((SQLINTEGER *)DiagInfoPtr) = 1; - } - break; - case SQL_DIAG_SQLSTATE: - rtnlen = 5; - ret = OPENSEARCHAPI_ConnectError(Handle, RecNumber, DiagInfoPtr, - NULL, NULL, 0, NULL, 0); - if (SQL_SUCCESS_WITH_INFO == ret) - ret = SQL_SUCCESS; - break; - case SQL_DIAG_RETURNCODE: /* driver manager returns */ - break; - case SQL_DIAG_CURSOR_ROW_COUNT: - case SQL_DIAG_ROW_COUNT: - case SQL_DIAG_DYNAMIC_FUNCTION: - case SQL_DIAG_DYNAMIC_FUNCTION_CODE: - /* options for statement type only */ - break; - } - break; - case SQL_HANDLE_STMT: - conn = (ConnectionClass *)SC_get_conn(((StatementClass *)Handle)); - switch (DiagIdentifier) { - case SQL_DIAG_CLASS_ORIGIN: - case SQL_DIAG_SUBCLASS_ORIGIN: - case SQL_DIAG_CONNECTION_NAME: - rtnlen = 0; - if (DiagInfoPtr && BufferLength > rtnlen) { - ret = SQL_SUCCESS; - *((char *)DiagInfoPtr) = '\0'; - } else - ret = SQL_SUCCESS_WITH_INFO; - break; - case SQL_DIAG_SERVER_NAME: - rtnlen = strlen(CC_get_DSN(conn)); - if (DiagInfoPtr) { - strncpy_null(DiagInfoPtr, CC_get_DSN(conn), - BufferLength); - ret = (BufferLength > rtnlen ? SQL_SUCCESS - : SQL_SUCCESS_WITH_INFO); - } else - ret = SQL_SUCCESS_WITH_INFO; - break; - case SQL_DIAG_MESSAGE_TEXT: - ret = OPENSEARCHAPI_StmtError(Handle, RecNumber, NULL, NULL, - DiagInfoPtr, BufferLength, - StringLengthPtr, 0); - break; - case SQL_DIAG_NATIVE: - rtnctype = SQL_C_LONG; - ret = OPENSEARCHAPI_StmtError(Handle, RecNumber, NULL, - (SQLINTEGER *)DiagInfoPtr, NULL, 0, - NULL, 0); - break; - case SQL_DIAG_NUMBER: - rtnctype = SQL_C_LONG; - *((SQLINTEGER *)DiagInfoPtr) = 0; - ret = SQL_NO_DATA_FOUND; - stmt = (StatementClass *)Handle; - rtn = OPENSEARCHAPI_StmtError(Handle, -1, NULL, NULL, NULL, 0, - &pcbErrm, 0); - switch (rtn) { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - ret = SQL_SUCCESS; - if (pcbErrm > 0 && stmt->opensearch_error) - - *((SQLINTEGER *)DiagInfoPtr) = - (pcbErrm - 1) / stmt->opensearch_error->recsize + 1; - break; - default: - break; - } - break; - case SQL_DIAG_SQLSTATE: - rtnlen = 5; - ret = OPENSEARCHAPI_StmtError(Handle, RecNumber, DiagInfoPtr, NULL, - NULL, 0, NULL, 0); - if (SQL_SUCCESS_WITH_INFO == ret) - ret = SQL_SUCCESS; - break; - case SQL_DIAG_CURSOR_ROW_COUNT: - rtnctype = SQL_C_LONG; - stmt = (StatementClass *)Handle; - rc = -1; - if (stmt->status == STMT_FINISHED) { - QResultClass *res = SC_get_Curres(stmt); - - /*if (!res) - return SQL_ERROR;*/ - if (stmt->proc_return > 0) - rc = 0; - else if (res && QR_NumResultCols(res) > 0 - && !SC_is_fetchcursor(stmt)) - rc = QR_get_num_total_tuples(res) - res->dl_count; - } - *((SQLLEN *)DiagInfoPtr) = rc; - MYLOG(OPENSEARCH_ALL, "rc=" FORMAT_LEN "\n", rc); - ret = SQL_SUCCESS; - break; - case SQL_DIAG_ROW_COUNT: - rtnctype = SQL_C_LONG; - stmt = (StatementClass *)Handle; - *((SQLLEN *)DiagInfoPtr) = stmt->diag_row_count; - ret = SQL_SUCCESS; - break; - case SQL_DIAG_ROW_NUMBER: - rtnctype = SQL_C_LONG; - *((SQLLEN *)DiagInfoPtr) = SQL_ROW_NUMBER_UNKNOWN; - ret = SQL_SUCCESS; - break; - case SQL_DIAG_COLUMN_NUMBER: - rtnctype = SQL_C_LONG; - *((SQLINTEGER *)DiagInfoPtr) = SQL_COLUMN_NUMBER_UNKNOWN; - ret = SQL_SUCCESS; - break; - case SQL_DIAG_RETURNCODE: /* driver manager returns */ - break; - } - break; - case SQL_HANDLE_DESC: - conn = DC_get_conn(((DescriptorClass *)Handle)); - switch (DiagIdentifier) { - case SQL_DIAG_CLASS_ORIGIN: - case SQL_DIAG_SUBCLASS_ORIGIN: - case SQL_DIAG_CONNECTION_NAME: - rtnlen = 0; - if (DiagInfoPtr && BufferLength > rtnlen) { - ret = SQL_SUCCESS; - *((char *)DiagInfoPtr) = '\0'; - } else - ret = SQL_SUCCESS_WITH_INFO; - break; - case SQL_DIAG_SERVER_NAME: - rtnlen = strlen(CC_get_DSN(conn)); - if (DiagInfoPtr) { - strncpy_null(DiagInfoPtr, CC_get_DSN(conn), - BufferLength); - ret = (BufferLength > rtnlen ? SQL_SUCCESS - : SQL_SUCCESS_WITH_INFO); - } else - ret = SQL_SUCCESS_WITH_INFO; - break; - case SQL_DIAG_MESSAGE_TEXT: - case SQL_DIAG_NATIVE: - case SQL_DIAG_NUMBER: - break; - case SQL_DIAG_SQLSTATE: - rtnlen = 5; - ret = OPENSEARCHAPI_DescError(Handle, RecNumber, DiagInfoPtr, NULL, - NULL, 0, NULL, 0); - if (SQL_SUCCESS_WITH_INFO == ret) - ret = SQL_SUCCESS; - break; - case SQL_DIAG_RETURNCODE: /* driver manager returns */ - break; - case SQL_DIAG_CURSOR_ROW_COUNT: - case SQL_DIAG_ROW_COUNT: - case SQL_DIAG_DYNAMIC_FUNCTION: - case SQL_DIAG_DYNAMIC_FUNCTION_CODE: - rtnctype = SQL_C_LONG; - /* options for statement type only */ - break; - } - break; - default: - ret = SQL_ERROR; - } - if (SQL_C_LONG == rtnctype) { - if (SQL_SUCCESS_WITH_INFO == ret) - ret = SQL_SUCCESS; - if (StringLengthPtr) - *StringLengthPtr = sizeof(SQLINTEGER); - } else if (rtnlen >= 0) { - if (rtnlen >= BufferLength) { - if (SQL_SUCCESS == ret) - ret = SQL_SUCCESS_WITH_INFO; - if (BufferLength > 0) - ((char *)DiagInfoPtr)[BufferLength - 1] = '\0'; - } - if (StringLengthPtr) - *StringLengthPtr = (SQLSMALLINT)rtnlen; - } - MYLOG(OPENSEARCH_TRACE, "leaving %d\n", ret); - return ret; -} - -/* SQLGetConnectOption -> SQLGetconnectAttr */ -RETCODE SQL_API OPENSEARCHAPI_GetConnectAttr(HDBC ConnectionHandle, - SQLINTEGER Attribute, PTR Value, - SQLINTEGER BufferLength, - SQLINTEGER *StringLength) { - ConnectionClass *conn = (ConnectionClass *)ConnectionHandle; - RETCODE ret = SQL_SUCCESS; - SQLINTEGER len = 4; - - MYLOG(OPENSEARCH_TRACE, "entering " FORMAT_INTEGER "\n", Attribute); - switch (Attribute) { - case SQL_ATTR_ASYNC_ENABLE: - *((SQLINTEGER *)Value) = SQL_ASYNC_ENABLE_OFF; - break; - case SQL_ATTR_AUTO_IPD: - *((SQLINTEGER *)Value) = SQL_FALSE; - break; - case SQL_ATTR_CONNECTION_DEAD: - *((SQLUINTEGER *)Value) = CC_not_connected(conn); - break; - case SQL_ATTR_CONNECTION_TIMEOUT: - *((SQLUINTEGER *)Value) = 0; - break; - case SQL_ATTR_METADATA_ID: - *((SQLUINTEGER *)Value) = conn->stmtOptions.metadata_id; - break; - case SQL_ATTR_ESOPT_DEBUG: - *((SQLINTEGER *)Value) = conn->connInfo.drivers.loglevel; - break; - case SQL_ATTR_ESOPT_COMMLOG: - *((SQLINTEGER *)Value) = conn->connInfo.drivers.loglevel; - break; - default: - ret = OPENSEARCHAPI_GetConnectOption(ConnectionHandle, (UWORD)Attribute, - Value, &len, BufferLength); - } - if (StringLength) - *StringLength = len; - return ret; -} - -static SQLHDESC descHandleFromStatementHandle(HSTMT StatementHandle, - SQLINTEGER descType) { - StatementClass *stmt = (StatementClass *)StatementHandle; - - switch (descType) { - case SQL_ATTR_APP_ROW_DESC: /* 10010 */ - return (HSTMT)stmt->ard; - case SQL_ATTR_APP_PARAM_DESC: /* 10011 */ - return (HSTMT)stmt->apd; - case SQL_ATTR_IMP_ROW_DESC: /* 10012 */ - return (HSTMT)stmt->ird; - case SQL_ATTR_IMP_PARAM_DESC: /* 10013 */ - return (HSTMT)stmt->ipd; - } - return (HSTMT)0; -} - -static void column_bindings_set(ARDFields *opts, SQLSMALLINT cols, - BOOL maxset) { - int i; - - if (cols == opts->allocated) - return; - if (cols > opts->allocated) { - extend_column_bindings(opts, cols); - return; - } - if (maxset) - return; - - for (i = opts->allocated; i > cols; i--) - reset_a_column_binding(opts, i); - opts->allocated = cols; - if (0 == cols) { - free(opts->bindings); - opts->bindings = NULL; - } -} - -static RETCODE SQL_API ARDSetField(DescriptorClass *desc, SQLSMALLINT RecNumber, - SQLSMALLINT FieldIdentifier, PTR Value, - SQLINTEGER BufferLength) { - UNUSED(BufferLength); - RETCODE ret = SQL_SUCCESS; - ARDFields *opts = &(desc->ardf); - SQLSMALLINT row_idx; - BOOL unbind = TRUE; - - switch (FieldIdentifier) { - case SQL_DESC_ARRAY_SIZE: - opts->size_of_rowset = CAST_UPTR(SQLULEN, Value); - return ret; - case SQL_DESC_ARRAY_STATUS_PTR: - opts->row_operation_ptr = Value; - return ret; - case SQL_DESC_BIND_OFFSET_PTR: - opts->row_offset_ptr = Value; - return ret; - case SQL_DESC_BIND_TYPE: - opts->bind_size = CAST_UPTR(SQLUINTEGER, Value); - return ret; - case SQL_DESC_COUNT: - column_bindings_set(opts, CAST_PTR(SQLSMALLINT, Value), FALSE); - return ret; - - case SQL_DESC_TYPE: - case SQL_DESC_DATETIME_INTERVAL_CODE: - case SQL_DESC_CONCISE_TYPE: - column_bindings_set(opts, RecNumber, TRUE); - break; - } - if (RecNumber < 0 || RecNumber > opts->allocated) { - DC_set_error(desc, DESC_INVALID_COLUMN_NUMBER_ERROR, - "invalid column number"); - return SQL_ERROR; - } - if (0 == RecNumber) /* bookmark column */ - { - BindInfoClass *bookmark = ARD_AllocBookmark(opts); - - switch (FieldIdentifier) { - case SQL_DESC_DATA_PTR: - bookmark->buffer = Value; - break; - case SQL_DESC_INDICATOR_PTR: - bookmark->indicator = Value; - break; - case SQL_DESC_OCTET_LENGTH_PTR: - bookmark->used = Value; - break; - default: - DC_set_error(desc, DESC_INVALID_COLUMN_NUMBER_ERROR, - "invalid column number"); - ret = SQL_ERROR; - } - return ret; - } - row_idx = RecNumber - 1; - switch (FieldIdentifier) { - case SQL_DESC_TYPE: - opts->bindings[row_idx].returntype = CAST_PTR(SQLSMALLINT, Value); - break; - case SQL_DESC_DATETIME_INTERVAL_CODE: - switch (opts->bindings[row_idx].returntype) { - case SQL_DATETIME: - case SQL_C_TYPE_DATE: - case SQL_C_TYPE_TIME: - case SQL_C_TYPE_TIMESTAMP: - switch ((LONG_PTR)Value) { - case SQL_CODE_DATE: - opts->bindings[row_idx].returntype = - SQL_C_TYPE_DATE; - break; - case SQL_CODE_TIME: - opts->bindings[row_idx].returntype = - SQL_C_TYPE_TIME; - break; - case SQL_CODE_TIMESTAMP: - opts->bindings[row_idx].returntype = - SQL_C_TYPE_TIMESTAMP; - break; - } - break; - } - break; - case SQL_DESC_CONCISE_TYPE: - opts->bindings[row_idx].returntype = CAST_PTR(SQLSMALLINT, Value); - break; - case SQL_DESC_DATA_PTR: - unbind = FALSE; - opts->bindings[row_idx].buffer = Value; - break; - case SQL_DESC_INDICATOR_PTR: - unbind = FALSE; - opts->bindings[row_idx].indicator = Value; - break; - case SQL_DESC_OCTET_LENGTH_PTR: - unbind = FALSE; - opts->bindings[row_idx].used = Value; - break; - case SQL_DESC_OCTET_LENGTH: - opts->bindings[row_idx].buflen = CAST_PTR(SQLLEN, Value); - break; - case SQL_DESC_PRECISION: - opts->bindings[row_idx].precision = CAST_PTR(SQLSMALLINT, Value); - break; - case SQL_DESC_SCALE: - opts->bindings[row_idx].scale = CAST_PTR(SQLSMALLINT, Value); - break; - case SQL_DESC_ALLOC_TYPE: /* read-only */ - case SQL_DESC_DATETIME_INTERVAL_PRECISION: - case SQL_DESC_LENGTH: - case SQL_DESC_NUM_PREC_RADIX: - default: - ret = SQL_ERROR; - DC_set_error(desc, DESC_INVALID_DESCRIPTOR_IDENTIFIER, - "invalid descriptor identifier"); - } - if (unbind) - opts->bindings[row_idx].buffer = NULL; - return ret; -} - -static void parameter_bindings_set(APDFields *opts, SQLSMALLINT params, - BOOL maxset) { - int i; - - if (params == opts->allocated) - return; - if (params > opts->allocated) { - extend_parameter_bindings(opts, params); - return; - } - if (maxset) - return; - - for (i = opts->allocated; i > params; i--) - reset_a_parameter_binding(opts, i); - opts->allocated = params; - if (0 == params) { - free(opts->parameters); - opts->parameters = NULL; - } -} - -static void parameter_ibindings_set(IPDFields *opts, SQLSMALLINT params, - BOOL maxset) { - int i; - - if (params == opts->allocated) - return; - if (params > opts->allocated) { - extend_iparameter_bindings(opts, params); - return; - } - if (maxset) - return; - - for (i = opts->allocated; i > params; i--) - reset_a_iparameter_binding(opts, i); - opts->allocated = params; - if (0 == params) { - free(opts->parameters); - opts->parameters = NULL; - } -} - -static RETCODE SQL_API APDSetField(DescriptorClass *desc, SQLSMALLINT RecNumber, - SQLSMALLINT FieldIdentifier, PTR Value, - SQLINTEGER BufferLength) { - UNUSED(BufferLength); - RETCODE ret = SQL_SUCCESS; - APDFields *opts = &(desc->apdf); - SQLSMALLINT para_idx; - BOOL unbind = TRUE; - - switch (FieldIdentifier) { - case SQL_DESC_ARRAY_SIZE: - opts->paramset_size = CAST_UPTR(SQLUINTEGER, Value); - return ret; - case SQL_DESC_ARRAY_STATUS_PTR: - opts->param_operation_ptr = Value; - return ret; - case SQL_DESC_BIND_OFFSET_PTR: - opts->param_offset_ptr = Value; - return ret; - case SQL_DESC_BIND_TYPE: - opts->param_bind_type = CAST_UPTR(SQLUINTEGER, Value); - return ret; - case SQL_DESC_COUNT: - parameter_bindings_set(opts, CAST_PTR(SQLSMALLINT, Value), FALSE); - return ret; - - case SQL_DESC_TYPE: - case SQL_DESC_DATETIME_INTERVAL_CODE: - case SQL_DESC_CONCISE_TYPE: - parameter_bindings_set(opts, RecNumber, TRUE); - break; - } - if (RecNumber <= 0) { - MYLOG(OPENSEARCH_ALL, "RecN=%d allocated=%d\n", RecNumber, opts->allocated); - DC_set_error(desc, DESC_BAD_PARAMETER_NUMBER_ERROR, - "bad parameter number"); - return SQL_ERROR; - } - if (RecNumber > opts->allocated) { - MYLOG(OPENSEARCH_ALL, "RecN=%d allocated=%d\n", RecNumber, opts->allocated); - parameter_bindings_set(opts, RecNumber, TRUE); - /* DC_set_error(desc, DESC_BAD_PARAMETER_NUMBER_ERROR, - "bad parameter number"); - return SQL_ERROR;*/ - } - para_idx = RecNumber - 1; - switch (FieldIdentifier) { - case SQL_DESC_TYPE: - opts->parameters[para_idx].CType = CAST_PTR(SQLSMALLINT, Value); - break; - case SQL_DESC_DATETIME_INTERVAL_CODE: - switch (opts->parameters[para_idx].CType) { - case SQL_DATETIME: - case SQL_C_TYPE_DATE: - case SQL_C_TYPE_TIME: - case SQL_C_TYPE_TIMESTAMP: - switch ((LONG_PTR)Value) { - case SQL_CODE_DATE: - opts->parameters[para_idx].CType = SQL_C_TYPE_DATE; - break; - case SQL_CODE_TIME: - opts->parameters[para_idx].CType = SQL_C_TYPE_TIME; - break; - case SQL_CODE_TIMESTAMP: - opts->parameters[para_idx].CType = - SQL_C_TYPE_TIMESTAMP; - break; - } - break; - } - break; - case SQL_DESC_CONCISE_TYPE: - opts->parameters[para_idx].CType = CAST_PTR(SQLSMALLINT, Value); - break; - case SQL_DESC_DATA_PTR: - unbind = FALSE; - opts->parameters[para_idx].buffer = Value; - break; - case SQL_DESC_INDICATOR_PTR: - unbind = FALSE; - opts->parameters[para_idx].indicator = Value; - break; - case SQL_DESC_OCTET_LENGTH: - opts->parameters[para_idx].buflen = CAST_PTR(Int4, Value); - break; - case SQL_DESC_OCTET_LENGTH_PTR: - unbind = FALSE; - opts->parameters[para_idx].used = Value; - break; - case SQL_DESC_PRECISION: - opts->parameters[para_idx].precision = CAST_PTR(SQLSMALLINT, Value); - break; - case SQL_DESC_SCALE: - opts->parameters[para_idx].scale = CAST_PTR(SQLSMALLINT, Value); - break; - case SQL_DESC_ALLOC_TYPE: /* read-only */ - case SQL_DESC_DATETIME_INTERVAL_PRECISION: - case SQL_DESC_LENGTH: - case SQL_DESC_NUM_PREC_RADIX: - default: - ret = SQL_ERROR; - DC_set_error(desc, DESC_INVALID_DESCRIPTOR_IDENTIFIER, - "invaid descriptor identifier"); - } - if (unbind) - opts->parameters[para_idx].buffer = NULL; - - return ret; -} - -static RETCODE SQL_API IRDSetField(DescriptorClass *desc, SQLSMALLINT RecNumber, - SQLSMALLINT FieldIdentifier, PTR Value, - SQLINTEGER BufferLength) { - UNUSED(BufferLength, RecNumber); - RETCODE ret = SQL_SUCCESS; - IRDFields *opts = &(desc->irdf); - - switch (FieldIdentifier) { - case SQL_DESC_ARRAY_STATUS_PTR: - opts->rowStatusArray = (SQLUSMALLINT *)Value; - break; - case SQL_DESC_ROWS_PROCESSED_PTR: - opts->rowsFetched = (SQLULEN *)Value; - break; - case SQL_DESC_ALLOC_TYPE: /* read-only */ - case SQL_DESC_COUNT: /* read-only */ - case SQL_DESC_AUTO_UNIQUE_VALUE: /* read-only */ - case SQL_DESC_BASE_COLUMN_NAME: /* read-only */ - case SQL_DESC_BASE_TABLE_NAME: /* read-only */ - case SQL_DESC_CASE_SENSITIVE: /* read-only */ - case SQL_DESC_CATALOG_NAME: /* read-only */ - case SQL_DESC_CONCISE_TYPE: /* read-only */ - case SQL_DESC_DATETIME_INTERVAL_CODE: /* read-only */ - case SQL_DESC_DATETIME_INTERVAL_PRECISION: /* read-only */ - case SQL_DESC_DISPLAY_SIZE: /* read-only */ - case SQL_DESC_FIXED_PREC_SCALE: /* read-only */ - case SQL_DESC_LABEL: /* read-only */ - case SQL_DESC_LENGTH: /* read-only */ - case SQL_DESC_LITERAL_PREFIX: /* read-only */ - case SQL_DESC_LITERAL_SUFFIX: /* read-only */ - case SQL_DESC_LOCAL_TYPE_NAME: /* read-only */ - case SQL_DESC_NAME: /* read-only */ - case SQL_DESC_NULLABLE: /* read-only */ - case SQL_DESC_NUM_PREC_RADIX: /* read-only */ - case SQL_DESC_OCTET_LENGTH: /* read-only */ - case SQL_DESC_PRECISION: /* read-only */ - case SQL_DESC_ROWVER: /* read-only */ - case SQL_DESC_SCALE: /* read-only */ - case SQL_DESC_SCHEMA_NAME: /* read-only */ - case SQL_DESC_SEARCHABLE: /* read-only */ - case SQL_DESC_TABLE_NAME: /* read-only */ - case SQL_DESC_TYPE: /* read-only */ - case SQL_DESC_TYPE_NAME: /* read-only */ - case SQL_DESC_UNNAMED: /* read-only */ - case SQL_DESC_UNSIGNED: /* read-only */ - case SQL_DESC_UPDATABLE: /* read-only */ - default: - ret = SQL_ERROR; - DC_set_error(desc, DESC_INVALID_DESCRIPTOR_IDENTIFIER, - "invalid descriptor identifier"); - } - return ret; -} - -static RETCODE SQL_API IPDSetField(DescriptorClass *desc, SQLSMALLINT RecNumber, - SQLSMALLINT FieldIdentifier, PTR Value, - SQLINTEGER BufferLength) { - UNUSED(BufferLength); - RETCODE ret = SQL_SUCCESS; - IPDFields *ipdopts = &(desc->ipdf); - SQLSMALLINT para_idx; - - switch (FieldIdentifier) { - case SQL_DESC_ARRAY_STATUS_PTR: - ipdopts->param_status_ptr = (SQLUSMALLINT *)Value; - return ret; - case SQL_DESC_ROWS_PROCESSED_PTR: - ipdopts->param_processed_ptr = (SQLULEN *)Value; - return ret; - case SQL_DESC_COUNT: - parameter_ibindings_set(ipdopts, CAST_PTR(SQLSMALLINT, Value), - FALSE); - return ret; - case SQL_DESC_UNNAMED: /* only SQL_UNNAMED is allowed */ - if (SQL_UNNAMED != CAST_PTR(SQLSMALLINT, Value)) { - ret = SQL_ERROR; - DC_set_error(desc, DESC_INVALID_DESCRIPTOR_IDENTIFIER, - "invalid descriptor identifier"); - return ret; - } - case SQL_DESC_NAME: - case SQL_DESC_TYPE: - case SQL_DESC_DATETIME_INTERVAL_CODE: - case SQL_DESC_CONCISE_TYPE: - parameter_ibindings_set(ipdopts, RecNumber, TRUE); - break; - } - if (RecNumber <= 0 || RecNumber > ipdopts->allocated) { - MYLOG(OPENSEARCH_ALL, "RecN=%d allocated=%d\n", RecNumber, ipdopts->allocated); - DC_set_error(desc, DESC_BAD_PARAMETER_NUMBER_ERROR, - "bad parameter number"); - return SQL_ERROR; - } - para_idx = RecNumber - 1; - switch (FieldIdentifier) { - case SQL_DESC_TYPE: - if (ipdopts->parameters[para_idx].SQLType - != CAST_PTR(SQLSMALLINT, Value)) { - reset_a_iparameter_binding(ipdopts, RecNumber); - ipdopts->parameters[para_idx].SQLType = - CAST_PTR(SQLSMALLINT, Value); - } - break; - case SQL_DESC_DATETIME_INTERVAL_CODE: - switch (ipdopts->parameters[para_idx].SQLType) { - case SQL_DATETIME: - case SQL_TYPE_DATE: - case SQL_TYPE_TIME: - case SQL_TYPE_TIMESTAMP: - switch ((LONG_PTR)Value) { - case SQL_CODE_DATE: - ipdopts->parameters[para_idx].SQLType = - SQL_TYPE_DATE; - break; - case SQL_CODE_TIME: - ipdopts->parameters[para_idx].SQLType = - SQL_TYPE_TIME; - break; - case SQL_CODE_TIMESTAMP: - ipdopts->parameters[para_idx].SQLType = - SQL_TYPE_TIMESTAMP; - break; - } - break; - } - break; - case SQL_DESC_CONCISE_TYPE: - ipdopts->parameters[para_idx].SQLType = - CAST_PTR(SQLSMALLINT, Value); - break; - case SQL_DESC_NAME: - if (Value) - STR_TO_NAME(ipdopts->parameters[para_idx].paramName, Value); - else - NULL_THE_NAME(ipdopts->parameters[para_idx].paramName); - break; - case SQL_DESC_PARAMETER_TYPE: - ipdopts->parameters[para_idx].paramType = - CAST_PTR(SQLSMALLINT, Value); - break; - case SQL_DESC_SCALE: - ipdopts->parameters[para_idx].decimal_digits = - CAST_PTR(SQLSMALLINT, Value); - break; - case SQL_DESC_UNNAMED: /* only SQL_UNNAMED is allowed */ - if (SQL_UNNAMED != CAST_PTR(SQLSMALLINT, Value)) { - ret = SQL_ERROR; - DC_set_error(desc, DESC_INVALID_DESCRIPTOR_IDENTIFIER, - "invalid descriptor identifier"); - } else - NULL_THE_NAME(ipdopts->parameters[para_idx].paramName); - break; - case SQL_DESC_ALLOC_TYPE: /* read-only */ - case SQL_DESC_CASE_SENSITIVE: /* read-only */ - case SQL_DESC_DATETIME_INTERVAL_PRECISION: - case SQL_DESC_FIXED_PREC_SCALE: /* read-only */ - case SQL_DESC_LENGTH: - case SQL_DESC_LOCAL_TYPE_NAME: /* read-only */ - case SQL_DESC_NULLABLE: /* read-only */ - case SQL_DESC_NUM_PREC_RADIX: - case SQL_DESC_OCTET_LENGTH: - case SQL_DESC_PRECISION: - case SQL_DESC_ROWVER: /* read-only */ - case SQL_DESC_TYPE_NAME: /* read-only */ - case SQL_DESC_UNSIGNED: /* read-only */ - default: - ret = SQL_ERROR; - DC_set_error(desc, DESC_INVALID_DESCRIPTOR_IDENTIFIER, - "invalid descriptor identifier"); - } - return ret; -} - -static RETCODE SQL_API ARDGetField(DescriptorClass *desc, SQLSMALLINT RecNumber, - SQLSMALLINT FieldIdentifier, PTR Value, - SQLINTEGER BufferLength, - SQLINTEGER *StringLength) { - UNUSED(BufferLength); - RETCODE ret = SQL_SUCCESS; - SQLLEN ival = 0; - SQLINTEGER len, rettype = 0; - PTR ptr = NULL; - const ARDFields *opts = &(desc->ardf); - SQLSMALLINT row_idx; - - len = sizeof(SQLINTEGER); - if (0 == RecNumber) /* bookmark */ - { - BindInfoClass *bookmark = opts->bookmark; - switch (FieldIdentifier) { - case SQL_DESC_DATA_PTR: - rettype = SQL_IS_POINTER; - ptr = bookmark ? bookmark->buffer : NULL; - break; - case SQL_DESC_INDICATOR_PTR: - rettype = SQL_IS_POINTER; - ptr = bookmark ? bookmark->indicator : NULL; - break; - case SQL_DESC_OCTET_LENGTH_PTR: - rettype = SQL_IS_POINTER; - ptr = bookmark ? bookmark->used : NULL; - break; - } - if (ptr) { - *((void **)Value) = ptr; - if (StringLength) - *StringLength = len; - return ret; - } - } - switch (FieldIdentifier) { - case SQL_DESC_ARRAY_SIZE: - case SQL_DESC_ARRAY_STATUS_PTR: - case SQL_DESC_BIND_OFFSET_PTR: - case SQL_DESC_BIND_TYPE: - case SQL_DESC_COUNT: - break; - default: - if (RecNumber <= 0 || RecNumber > opts->allocated) { - DC_set_error(desc, DESC_INVALID_COLUMN_NUMBER_ERROR, - "invalid column number"); - return SQL_ERROR; - } - } - row_idx = RecNumber - 1; - switch (FieldIdentifier) { - case SQL_DESC_ARRAY_SIZE: - ival = opts->size_of_rowset; - break; - case SQL_DESC_ARRAY_STATUS_PTR: - rettype = SQL_IS_POINTER; - ptr = opts->row_operation_ptr; - break; - case SQL_DESC_BIND_OFFSET_PTR: - rettype = SQL_IS_POINTER; - ptr = opts->row_offset_ptr; - break; - case SQL_DESC_BIND_TYPE: - ival = opts->bind_size; - break; - case SQL_DESC_TYPE: - rettype = SQL_IS_SMALLINT; - switch (opts->bindings[row_idx].returntype) { - case SQL_C_TYPE_DATE: - case SQL_C_TYPE_TIME: - case SQL_C_TYPE_TIMESTAMP: - ival = SQL_DATETIME; - break; - default: - ival = opts->bindings[row_idx].returntype; - } - break; - case SQL_DESC_DATETIME_INTERVAL_CODE: - rettype = SQL_IS_SMALLINT; - switch (opts->bindings[row_idx].returntype) { - case SQL_C_TYPE_DATE: - ival = SQL_CODE_DATE; - break; - case SQL_C_TYPE_TIME: - ival = SQL_CODE_TIME; - break; - case SQL_C_TYPE_TIMESTAMP: - ival = SQL_CODE_TIMESTAMP; - break; - default: - ival = 0; - break; - } - break; - case SQL_DESC_CONCISE_TYPE: - rettype = SQL_IS_SMALLINT; - ival = opts->bindings[row_idx].returntype; - break; - case SQL_DESC_DATA_PTR: - rettype = SQL_IS_POINTER; - ptr = opts->bindings[row_idx].buffer; - break; - case SQL_DESC_INDICATOR_PTR: - rettype = SQL_IS_POINTER; - ptr = opts->bindings[row_idx].indicator; - break; - case SQL_DESC_OCTET_LENGTH_PTR: - rettype = SQL_IS_POINTER; - ptr = opts->bindings[row_idx].used; - break; - case SQL_DESC_COUNT: - rettype = SQL_IS_SMALLINT; - ival = opts->allocated; - break; - case SQL_DESC_OCTET_LENGTH: - ival = opts->bindings[row_idx].buflen; - break; - case SQL_DESC_ALLOC_TYPE: /* read-only */ - rettype = SQL_IS_SMALLINT; - if (DC_get_embedded(desc)) - ival = SQL_DESC_ALLOC_AUTO; - else - ival = SQL_DESC_ALLOC_USER; - break; - case SQL_DESC_PRECISION: - rettype = SQL_IS_SMALLINT; - ival = opts->bindings[row_idx].precision; - break; - case SQL_DESC_SCALE: - rettype = SQL_IS_SMALLINT; - ival = opts->bindings[row_idx].scale; - break; - case SQL_DESC_NUM_PREC_RADIX: - ival = 10; - break; - case SQL_DESC_DATETIME_INTERVAL_PRECISION: - case SQL_DESC_LENGTH: - default: - ret = SQL_ERROR; - DC_set_error(desc, DESC_INVALID_DESCRIPTOR_IDENTIFIER, - "invalid descriptor identifier"); - } - switch (rettype) { - case 0: - case SQL_IS_INTEGER: - len = sizeof(SQLINTEGER); - *((SQLINTEGER *)Value) = (SQLINTEGER)ival; - break; - case SQL_IS_SMALLINT: - len = sizeof(SQLSMALLINT); - *((SQLSMALLINT *)Value) = (SQLSMALLINT)ival; - break; - case SQL_IS_POINTER: - len = sizeof(SQLPOINTER); - *((void **)Value) = ptr; - break; - } - - if (StringLength) - *StringLength = len; - return ret; -} - -static RETCODE SQL_API APDGetField(DescriptorClass *desc, SQLSMALLINT RecNumber, - SQLSMALLINT FieldIdentifier, PTR Value, - SQLINTEGER BufferLength, - SQLINTEGER *StringLength) { - UNUSED(BufferLength); - RETCODE ret = SQL_SUCCESS; - SQLLEN ival = 0; - SQLINTEGER len, rettype = 0; - PTR ptr = NULL; - const APDFields *opts = (const APDFields *)&(desc->apdf); - SQLSMALLINT para_idx; - - len = sizeof(SQLINTEGER); - switch (FieldIdentifier) { - case SQL_DESC_ARRAY_SIZE: - case SQL_DESC_ARRAY_STATUS_PTR: - case SQL_DESC_BIND_OFFSET_PTR: - case SQL_DESC_BIND_TYPE: - case SQL_DESC_COUNT: - break; - default: - if (RecNumber <= 0 || RecNumber > opts->allocated) { - MYLOG(OPENSEARCH_ALL, "RecN=%d allocated=%d\n", RecNumber, - opts->allocated); - DC_set_error(desc, DESC_BAD_PARAMETER_NUMBER_ERROR, - "bad parameter number"); - return SQL_ERROR; - } - } - para_idx = RecNumber - 1; - switch (FieldIdentifier) { - case SQL_DESC_ARRAY_SIZE: - rettype = SQL_IS_LEN; - ival = opts->paramset_size; - break; - case SQL_DESC_ARRAY_STATUS_PTR: - rettype = SQL_IS_POINTER; - ptr = opts->param_operation_ptr; - break; - case SQL_DESC_BIND_OFFSET_PTR: - rettype = SQL_IS_POINTER; - ptr = opts->param_offset_ptr; - break; - case SQL_DESC_BIND_TYPE: - ival = opts->param_bind_type; - break; - - case SQL_DESC_TYPE: - rettype = SQL_IS_SMALLINT; - switch (opts->parameters[para_idx].CType) { - case SQL_C_TYPE_DATE: - case SQL_C_TYPE_TIME: - case SQL_C_TYPE_TIMESTAMP: - ival = SQL_DATETIME; - break; - default: - ival = opts->parameters[para_idx].CType; - } - break; - case SQL_DESC_DATETIME_INTERVAL_CODE: - rettype = SQL_IS_SMALLINT; - switch (opts->parameters[para_idx].CType) { - case SQL_C_TYPE_DATE: - ival = SQL_CODE_DATE; - break; - case SQL_C_TYPE_TIME: - ival = SQL_CODE_TIME; - break; - case SQL_C_TYPE_TIMESTAMP: - ival = SQL_CODE_TIMESTAMP; - break; - default: - ival = 0; - break; - } - break; - case SQL_DESC_CONCISE_TYPE: - rettype = SQL_IS_SMALLINT; - ival = opts->parameters[para_idx].CType; - break; - case SQL_DESC_DATA_PTR: - rettype = SQL_IS_POINTER; - ptr = opts->parameters[para_idx].buffer; - break; - case SQL_DESC_INDICATOR_PTR: - rettype = SQL_IS_POINTER; - ptr = opts->parameters[para_idx].indicator; - break; - case SQL_DESC_OCTET_LENGTH: - ival = opts->parameters[para_idx].buflen; - break; - case SQL_DESC_OCTET_LENGTH_PTR: - rettype = SQL_IS_POINTER; - ptr = opts->parameters[para_idx].used; - break; - case SQL_DESC_COUNT: - rettype = SQL_IS_SMALLINT; - ival = opts->allocated; - break; - case SQL_DESC_ALLOC_TYPE: /* read-only */ - rettype = SQL_IS_SMALLINT; - if (DC_get_embedded(desc)) - ival = SQL_DESC_ALLOC_AUTO; - else - ival = SQL_DESC_ALLOC_USER; - break; - case SQL_DESC_NUM_PREC_RADIX: - ival = 10; - break; - case SQL_DESC_PRECISION: - rettype = SQL_IS_SMALLINT; - ival = opts->parameters[para_idx].precision; - break; - case SQL_DESC_SCALE: - rettype = SQL_IS_SMALLINT; - ival = opts->parameters[para_idx].scale; - break; - case SQL_DESC_DATETIME_INTERVAL_PRECISION: - case SQL_DESC_LENGTH: - default: - ret = SQL_ERROR; - DC_set_error(desc, DESC_INVALID_DESCRIPTOR_IDENTIFIER, - "invalid descriptor identifer"); - } - switch (rettype) { - case SQL_IS_LEN: - len = sizeof(SQLLEN); - *((SQLLEN *)Value) = ival; - break; - case 0: - case SQL_IS_INTEGER: - len = sizeof(SQLINTEGER); - *((SQLINTEGER *)Value) = (SQLINTEGER)ival; - break; - case SQL_IS_SMALLINT: - len = sizeof(SQLSMALLINT); - *((SQLSMALLINT *)Value) = (SQLSMALLINT)ival; - break; - case SQL_IS_POINTER: - len = sizeof(SQLPOINTER); - *((void **)Value) = ptr; - break; - } - - if (StringLength) - *StringLength = len; - return ret; -} - -static RETCODE SQL_API IRDGetField(DescriptorClass *desc, SQLSMALLINT RecNumber, - SQLSMALLINT FieldIdentifier, PTR Value, - SQLINTEGER BufferLength, - SQLINTEGER *StringLength) { - RETCODE ret = SQL_SUCCESS; - SQLLEN ival = 0; - SQLINTEGER len = 0, rettype = 0; - PTR ptr = NULL; - BOOL bCallColAtt = FALSE; - const IRDFields *opts = &(desc->irdf); - - switch (FieldIdentifier) { - case SQL_DESC_ROWVER: /* read-only */ - // Database is read-only, and does not support transactions - rettype = SQL_IS_SMALLINT; - ival = SQL_FALSE; - break; - case SQL_DESC_ARRAY_STATUS_PTR: - rettype = SQL_IS_POINTER; - ptr = opts->rowStatusArray; - break; - case SQL_DESC_ROWS_PROCESSED_PTR: - rettype = SQL_IS_POINTER; - ptr = opts->rowsFetched; - break; - case SQL_DESC_ALLOC_TYPE: /* read-only */ - rettype = SQL_IS_SMALLINT; - ival = SQL_DESC_ALLOC_AUTO; - break; - case SQL_DESC_AUTO_UNIQUE_VALUE: /* read-only */ - case SQL_DESC_CASE_SENSITIVE: /* read-only */ - case SQL_DESC_DATETIME_INTERVAL_PRECISION: /* read-only */ - case SQL_DESC_NUM_PREC_RADIX: /* read-only */ - rettype = SQL_IS_INTEGER; - bCallColAtt = TRUE; - break; - case SQL_DESC_DISPLAY_SIZE: /* read-only */ - case SQL_DESC_LENGTH: /* read-only */ - case SQL_DESC_OCTET_LENGTH: /* read-only */ - rettype = SQL_IS_LEN; - bCallColAtt = TRUE; - break; - case SQL_DESC_NULLABLE: /* read-only */ - case SQL_DESC_FIXED_PREC_SCALE: /* read-only */ - case SQL_DESC_DATETIME_INTERVAL_CODE: /* read-only */ - case SQL_DESC_CONCISE_TYPE: /* read-only */ - case SQL_DESC_COUNT: /* read-only */ - case SQL_DESC_PRECISION: /* read-only */ - case SQL_DESC_SCALE: /* read-only */ - case SQL_DESC_SEARCHABLE: /* read-only */ - case SQL_DESC_TYPE: /* read-only */ - case SQL_DESC_UNNAMED: /* read-only */ - case SQL_DESC_UNSIGNED: /* read-only */ - case SQL_DESC_UPDATABLE: /* read-only */ - rettype = SQL_IS_SMALLINT; - bCallColAtt = TRUE; - break; - case SQL_DESC_BASE_COLUMN_NAME: /* read-only */ - case SQL_DESC_BASE_TABLE_NAME: /* read-only */ - case SQL_DESC_CATALOG_NAME: /* read-only */ - case SQL_DESC_LABEL: /* read-only */ - case SQL_DESC_LITERAL_PREFIX: /* read-only */ - case SQL_DESC_LITERAL_SUFFIX: /* read-only */ - case SQL_DESC_LOCAL_TYPE_NAME: /* read-only */ - case SQL_DESC_NAME: /* read-only */ - case SQL_DESC_SCHEMA_NAME: /* read-only */ - case SQL_DESC_TABLE_NAME: /* read-only */ - case SQL_DESC_TYPE_NAME: /* read-only */ - rettype = SQL_NTS; - bCallColAtt = TRUE; - break; - default: - ret = SQL_ERROR; - DC_set_error(desc, DESC_INVALID_DESCRIPTOR_IDENTIFIER, - "invalid descriptor identifier"); - } - if (bCallColAtt) { - SQLSMALLINT pcbL; - StatementClass *stmt; - - stmt = opts->stmt; - ret = OPENSEARCHAPI_ColAttributes(stmt, RecNumber, FieldIdentifier, Value, - (SQLSMALLINT)BufferLength, &pcbL, &ival); - len = pcbL; - } - switch (rettype) { - case 0: - case SQL_IS_INTEGER: - len = sizeof(SQLINTEGER); - *((SQLINTEGER *)Value) = (SQLINTEGER)ival; - break; - case SQL_IS_UINTEGER: - len = sizeof(SQLUINTEGER); - *((SQLUINTEGER *)Value) = (SQLUINTEGER)ival; - break; - case SQL_IS_SMALLINT: - len = sizeof(SQLSMALLINT); - *((SQLSMALLINT *)Value) = (SQLSMALLINT)ival; - break; - case SQL_IS_POINTER: - len = sizeof(SQLPOINTER); - *((void **)Value) = ptr; - break; - case SQL_NTS: - break; - } - - if (StringLength) - *StringLength = len; - return ret; -} - -static RETCODE SQL_API IPDGetField(DescriptorClass *desc, SQLSMALLINT RecNumber, - SQLSMALLINT FieldIdentifier, PTR Value, - SQLINTEGER BufferLength, - SQLINTEGER *StringLength) { - UNUSED(BufferLength); - RETCODE ret = SQL_SUCCESS; - SQLINTEGER ival = 0, len = 0, rettype = 0; - PTR ptr = NULL; - const IPDFields *ipdopts = (const IPDFields *)&(desc->ipdf); - SQLSMALLINT para_idx; - - switch (FieldIdentifier) { - case SQL_DESC_ARRAY_STATUS_PTR: - case SQL_DESC_ROWS_PROCESSED_PTR: - case SQL_DESC_COUNT: - break; - default: - if (RecNumber <= 0 || RecNumber > ipdopts->allocated) { - MYLOG(OPENSEARCH_ALL, "RecN=%d allocated=%d\n", RecNumber, - ipdopts->allocated); - DC_set_error(desc, DESC_BAD_PARAMETER_NUMBER_ERROR, - "bad parameter number"); - return SQL_ERROR; - } - } - para_idx = RecNumber - 1; - switch (FieldIdentifier) { - case SQL_DESC_ARRAY_STATUS_PTR: - rettype = SQL_IS_POINTER; - ptr = ipdopts->param_status_ptr; - break; - case SQL_DESC_ROWS_PROCESSED_PTR: - rettype = SQL_IS_POINTER; - ptr = ipdopts->param_processed_ptr; - break; - case SQL_DESC_UNNAMED: - rettype = SQL_IS_SMALLINT; - ival = NAME_IS_NULL(ipdopts->parameters[para_idx].paramName) - ? SQL_UNNAMED - : SQL_NAMED; - break; - case SQL_DESC_TYPE: - rettype = SQL_IS_SMALLINT; - switch (ipdopts->parameters[para_idx].SQLType) { - case SQL_TYPE_DATE: - case SQL_TYPE_TIME: - case SQL_TYPE_TIMESTAMP: - ival = SQL_DATETIME; - break; - default: - ival = ipdopts->parameters[para_idx].SQLType; - } - break; - case SQL_DESC_DATETIME_INTERVAL_CODE: - rettype = SQL_IS_SMALLINT; - switch (ipdopts->parameters[para_idx].SQLType) { - case SQL_TYPE_DATE: - ival = SQL_CODE_DATE; - break; - case SQL_TYPE_TIME: - ival = SQL_CODE_TIME; - break; - case SQL_TYPE_TIMESTAMP: - ival = SQL_CODE_TIMESTAMP; - break; - default: - ival = 0; - } - break; - case SQL_DESC_CONCISE_TYPE: - rettype = SQL_IS_SMALLINT; - ival = ipdopts->parameters[para_idx].SQLType; - break; - case SQL_DESC_COUNT: - rettype = SQL_IS_SMALLINT; - ival = ipdopts->allocated; - break; - case SQL_DESC_PARAMETER_TYPE: - rettype = SQL_IS_SMALLINT; - ival = ipdopts->parameters[para_idx].paramType; - break; - case SQL_DESC_PRECISION: - rettype = SQL_IS_SMALLINT; - switch (ipdopts->parameters[para_idx].SQLType) { - case SQL_TYPE_DATE: - case SQL_TYPE_TIME: - case SQL_TYPE_TIMESTAMP: - case SQL_DATETIME: - ival = ipdopts->parameters[para_idx].decimal_digits; - break; - } - break; - case SQL_DESC_SCALE: - rettype = SQL_IS_SMALLINT; - switch (ipdopts->parameters[para_idx].SQLType) { - case SQL_NUMERIC: - ival = ipdopts->parameters[para_idx].decimal_digits; - break; - } - break; - case SQL_DESC_ALLOC_TYPE: /* read-only */ - rettype = SQL_IS_SMALLINT; - ival = SQL_DESC_ALLOC_AUTO; - break; - case SQL_DESC_CASE_SENSITIVE: /* read-only */ - case SQL_DESC_DATETIME_INTERVAL_PRECISION: - case SQL_DESC_FIXED_PREC_SCALE: /* read-only */ - case SQL_DESC_LENGTH: - case SQL_DESC_LOCAL_TYPE_NAME: /* read-only */ - case SQL_DESC_NAME: - case SQL_DESC_NULLABLE: /* read-only */ - case SQL_DESC_NUM_PREC_RADIX: - case SQL_DESC_OCTET_LENGTH: - case SQL_DESC_ROWVER: /* read-only */ - case SQL_DESC_TYPE_NAME: /* read-only */ - case SQL_DESC_UNSIGNED: /* read-only */ - default: - ret = SQL_ERROR; - DC_set_error(desc, DESC_INVALID_DESCRIPTOR_IDENTIFIER, - "invalid descriptor identifier"); - } - switch (rettype) { - case 0: - case SQL_IS_INTEGER: - len = sizeof(SQLINTEGER); - *((SQLINTEGER *)Value) = ival; - break; - case SQL_IS_SMALLINT: - len = sizeof(SQLSMALLINT); - *((SQLSMALLINT *)Value) = (SQLSMALLINT)ival; - break; - case SQL_IS_POINTER: - len = sizeof(SQLPOINTER); - *((void **)Value) = ptr; - break; - } - - if (StringLength) - *StringLength = len; - return ret; -} - -/* SQLGetStmtOption -> SQLGetStmtAttr */ -RETCODE SQL_API OPENSEARCHAPI_GetStmtAttr(HSTMT StatementHandle, SQLINTEGER Attribute, - PTR Value, SQLINTEGER BufferLength, - SQLINTEGER *StringLength) { - CSTR func = "OPENSEARCHAPI_GetStmtAttr"; - StatementClass *stmt = (StatementClass *)StatementHandle; - RETCODE ret = SQL_SUCCESS; - SQLINTEGER len = 0; - - MYLOG(OPENSEARCH_TRACE, "entering Handle=%p " FORMAT_INTEGER "\n", StatementHandle, - Attribute); - switch (Attribute) { - case SQL_ATTR_FETCH_BOOKMARK_PTR: /* 16 */ - *((void **)Value) = stmt->options.bookmark_ptr; - len = sizeof(SQLPOINTER); - break; - case SQL_ATTR_PARAM_BIND_OFFSET_PTR: /* 17 */ - *((SQLULEN **)Value) = SC_get_APDF(stmt)->param_offset_ptr; - len = sizeof(SQLPOINTER); - break; - case SQL_ATTR_PARAM_BIND_TYPE: /* 18 */ - *((SQLUINTEGER *)Value) = SC_get_APDF(stmt)->param_bind_type; - len = sizeof(SQLUINTEGER); - break; - case SQL_ATTR_PARAM_OPERATION_PTR: /* 19 */ - *((SQLUSMALLINT **)Value) = SC_get_APDF(stmt)->param_operation_ptr; - len = sizeof(SQLPOINTER); - break; - case SQL_ATTR_PARAM_STATUS_PTR: /* 20 */ - *((SQLUSMALLINT **)Value) = SC_get_IPDF(stmt)->param_status_ptr; - len = sizeof(SQLPOINTER); - break; - case SQL_ATTR_PARAMS_PROCESSED_PTR: /* 21 */ - *((SQLULEN **)Value) = SC_get_IPDF(stmt)->param_processed_ptr; - len = sizeof(SQLPOINTER); - break; - case SQL_ATTR_PARAMSET_SIZE: /* 22 */ - *((SQLULEN *)Value) = SC_get_APDF(stmt)->paramset_size; - len = sizeof(SQLUINTEGER); - break; - case SQL_ATTR_ROW_BIND_OFFSET_PTR: /* 23 */ - *((SQLULEN **)Value) = SC_get_ARDF(stmt)->row_offset_ptr; - len = 4; - break; - case SQL_ATTR_ROW_OPERATION_PTR: /* 24 */ - *((SQLUSMALLINT **)Value) = SC_get_ARDF(stmt)->row_operation_ptr; - len = 4; - break; - case SQL_ATTR_ROW_STATUS_PTR: /* 25 */ - *((SQLUSMALLINT **)Value) = SC_get_IRDF(stmt)->rowStatusArray; - len = 4; - break; - case SQL_ATTR_ROWS_FETCHED_PTR: /* 26 */ - *((SQLULEN **)Value) = SC_get_IRDF(stmt)->rowsFetched; - len = 4; - break; - case SQL_ATTR_ROW_ARRAY_SIZE: /* 27 */ - *((SQLULEN *)Value) = SC_get_ARDF(stmt)->size_of_rowset; - len = 4; - break; - case SQL_ATTR_APP_ROW_DESC: /* 10010 */ - case SQL_ATTR_APP_PARAM_DESC: /* 10011 */ - case SQL_ATTR_IMP_ROW_DESC: /* 10012 */ - case SQL_ATTR_IMP_PARAM_DESC: /* 10013 */ - len = 4; - *((HSTMT *)Value) = - descHandleFromStatementHandle(StatementHandle, Attribute); - break; - - case SQL_ATTR_CURSOR_SCROLLABLE: /* -1 */ - len = 4; - if (SQL_CURSOR_FORWARD_ONLY == stmt->options.cursor_type) - *((SQLUINTEGER *)Value) = SQL_NONSCROLLABLE; - else - *((SQLUINTEGER *)Value) = SQL_SCROLLABLE; - break; - case SQL_ATTR_CURSOR_SENSITIVITY: /* -2 */ - len = 4; - if (SQL_CONCUR_READ_ONLY == stmt->options.scroll_concurrency) - *((SQLUINTEGER *)Value) = SQL_INSENSITIVE; - else - *((SQLUINTEGER *)Value) = SQL_UNSPECIFIED; - break; - case SQL_ATTR_METADATA_ID: /* 10014 */ - *((SQLUINTEGER *)Value) = stmt->options.metadata_id; - break; - case SQL_ATTR_ENABLE_AUTO_IPD: /* 15 */ - *((SQLUINTEGER *)Value) = SQL_FALSE; - break; - case SQL_ATTR_AUTO_IPD: /* 10001 */ - /* case SQL_ATTR_ROW_BIND_TYPE: ** == SQL_BIND_TYPE(ODBC2.0) */ - SC_set_error(stmt, DESC_INVALID_OPTION_IDENTIFIER, - "Unsupported statement option (Get)", func); - return SQL_ERROR; - default: - ret = OPENSEARCHAPI_GetStmtOption(StatementHandle, (SQLSMALLINT)Attribute, - Value, &len, BufferLength); - } - if (ret == SQL_SUCCESS && StringLength) - *StringLength = len; - return ret; -} - -/* SQLSetConnectOption -> SQLSetConnectAttr */ -RETCODE SQL_API OPENSEARCHAPI_SetConnectAttr(HDBC ConnectionHandle, - SQLINTEGER Attribute, PTR Value, - SQLINTEGER StringLength) { - UNUSED(StringLength); - CSTR func = "OPENSEARCHAPI_SetConnectAttr"; - ConnectionClass *conn = (ConnectionClass *)ConnectionHandle; - RETCODE ret = SQL_SUCCESS; - BOOL unsupported = FALSE; - int newValue; - - MYLOG(OPENSEARCH_TRACE, "entering for %p: " FORMAT_INTEGER " %p\n", - ConnectionHandle, Attribute, Value); - switch (Attribute) { - case SQL_ATTR_METADATA_ID: - conn->stmtOptions.metadata_id = CAST_UPTR(SQLUINTEGER, Value); - break; - case SQL_ATTR_ANSI_APP: - if (SQL_AA_FALSE != CAST_PTR(SQLINTEGER, Value)) { - MYLOG(OPENSEARCH_DEBUG, "the application is ansi\n"); - if (CC_is_in_unicode_driver(conn)) /* the driver is unicode */ - CC_set_in_ansi_app(conn); /* but the app is ansi */ - } else { - MYLOG(OPENSEARCH_DEBUG, "the application is unicode\n"); - } - /*return SQL_ERROR;*/ - return SQL_SUCCESS; - case SQL_ATTR_ENLIST_IN_DTC: - unsupported = TRUE; - break; - case SQL_ATTR_AUTO_IPD: - if (SQL_FALSE != Value) - unsupported = TRUE; - break; - case SQL_ATTR_ASYNC_ENABLE: - case SQL_ATTR_CONNECTION_DEAD: - case SQL_ATTR_CONNECTION_TIMEOUT: - unsupported = TRUE; - break; - case SQL_ATTR_ESOPT_DEBUG: - newValue = CAST_UPTR(SQLCHAR, Value); - if (newValue > 0) { - logs_on_off(-1, conn->connInfo.drivers.loglevel, 0); - conn->connInfo.drivers.loglevel = (char)newValue; - logs_on_off(1, conn->connInfo.drivers.loglevel, 0); - MYLOG(OPENSEARCH_DEBUG, "debug => %d\n", - conn->connInfo.drivers.loglevel); - } else if (newValue == 0 && conn->connInfo.drivers.loglevel > 0) { - MYLOG(OPENSEARCH_DEBUG, "debug => %d\n", newValue); - logs_on_off(-1, conn->connInfo.drivers.loglevel, 0); - conn->connInfo.drivers.loglevel = (char)newValue; - logs_on_off(1, 0, 0); - } - break; - case SQL_ATTR_ESOPT_COMMLOG: - newValue = CAST_UPTR(SQLCHAR, Value); - if (newValue > 0) { - logs_on_off(-1, 0, conn->connInfo.drivers.loglevel); - conn->connInfo.drivers.loglevel = (char)newValue; - logs_on_off(1, 0, conn->connInfo.drivers.loglevel); - MYLOG(OPENSEARCH_DEBUG, "commlog => %d\n", - conn->connInfo.drivers.loglevel); - } else if (newValue == 0 && conn->connInfo.drivers.loglevel > 0) { - MYLOG(OPENSEARCH_DEBUG, "commlog => %d\n", newValue); - logs_on_off(-1, 0, conn->connInfo.drivers.loglevel); - conn->connInfo.drivers.loglevel = (char)newValue; - logs_on_off(1, 0, 0); - } - break; - default: - if (Attribute < 65536) - ret = OPENSEARCHAPI_SetConnectOption( - ConnectionHandle, (SQLUSMALLINT)Attribute, (SQLLEN)Value); - else - unsupported = TRUE; - } - if (unsupported) { - char msg[64]; - SPRINTF_FIXED( - msg, "Couldn't set unsupported connect attribute " FORMAT_INTEGER, - Attribute); - CC_set_error(conn, CONN_OPTION_NOT_FOR_THE_DRIVER, msg, func); - return SQL_ERROR; - } - return ret; -} - -/* new function */ -RETCODE SQL_API OPENSEARCHAPI_GetDescField(SQLHDESC DescriptorHandle, - SQLSMALLINT RecNumber, - SQLSMALLINT FieldIdentifier, PTR Value, - SQLINTEGER BufferLength, - SQLINTEGER *StringLength) { - CSTR func = "OPENSEARCHAPI_GetDescField"; - RETCODE ret = SQL_SUCCESS; - DescriptorClass *desc = (DescriptorClass *)DescriptorHandle; - - MYLOG(OPENSEARCH_TRACE, - "entering h=%p rec=" FORMAT_SMALLI " field=" FORMAT_SMALLI - " blen=" FORMAT_INTEGER "\n", - DescriptorHandle, RecNumber, FieldIdentifier, BufferLength); - switch (DC_get_desc_type(desc)) { - case SQL_ATTR_APP_ROW_DESC: - ret = ARDGetField(desc, RecNumber, FieldIdentifier, Value, - BufferLength, StringLength); - break; - case SQL_ATTR_APP_PARAM_DESC: - ret = APDGetField(desc, RecNumber, FieldIdentifier, Value, - BufferLength, StringLength); - break; - case SQL_ATTR_IMP_ROW_DESC: - ret = IRDGetField(desc, RecNumber, FieldIdentifier, Value, - BufferLength, StringLength); - break; - case SQL_ATTR_IMP_PARAM_DESC: - ret = IPDGetField(desc, RecNumber, FieldIdentifier, Value, - BufferLength, StringLength); - break; - default: - ret = SQL_ERROR; - DC_set_error(desc, DESC_INTERNAL_ERROR, "Error not implemented"); - } - if (ret == SQL_ERROR) { - if (!DC_get_errormsg(desc)) { - switch (DC_get_errornumber(desc)) { - case DESC_INVALID_DESCRIPTOR_IDENTIFIER: - DC_set_errormsg( - desc, - "can't SQLGetDescField for this descriptor identifier"); - break; - case DESC_INVALID_COLUMN_NUMBER_ERROR: - DC_set_errormsg( - desc, "can't SQLGetDescField for this column number"); - break; - case DESC_BAD_PARAMETER_NUMBER_ERROR: - DC_set_errormsg( - desc, - "can't SQLGetDescField for this parameter number"); - break; - } - } - DC_log_error(func, "", desc); - } - return ret; -} - -/* new function */ -RETCODE SQL_API OPENSEARCHAPI_SetDescField(SQLHDESC DescriptorHandle, - SQLSMALLINT RecNumber, - SQLSMALLINT FieldIdentifier, PTR Value, - SQLINTEGER BufferLength) { - CSTR func = "OPENSEARCHAPI_SetDescField"; - RETCODE ret = SQL_SUCCESS; - DescriptorClass *desc = (DescriptorClass *)DescriptorHandle; - - MYLOG(OPENSEARCH_TRACE, - "entering h=%p(%d) rec=" FORMAT_SMALLI " field=" FORMAT_SMALLI - " val=%p," FORMAT_INTEGER "\n", - DescriptorHandle, DC_get_desc_type(desc), RecNumber, FieldIdentifier, - Value, BufferLength); - switch (DC_get_desc_type(desc)) { - case SQL_ATTR_APP_ROW_DESC: - ret = ARDSetField(desc, RecNumber, FieldIdentifier, Value, - BufferLength); - break; - case SQL_ATTR_APP_PARAM_DESC: - ret = APDSetField(desc, RecNumber, FieldIdentifier, Value, - BufferLength); - break; - case SQL_ATTR_IMP_ROW_DESC: - ret = IRDSetField(desc, RecNumber, FieldIdentifier, Value, - BufferLength); - break; - case SQL_ATTR_IMP_PARAM_DESC: - ret = IPDSetField(desc, RecNumber, FieldIdentifier, Value, - BufferLength); - break; - default: - ret = SQL_ERROR; - DC_set_error(desc, DESC_INTERNAL_ERROR, "Error not implemented"); - } - if (ret == SQL_ERROR) { - if (!DC_get_errormsg(desc)) { - switch (DC_get_errornumber(desc)) { - case DESC_INVALID_DESCRIPTOR_IDENTIFIER: - DC_set_errormsg( - desc, - "can't SQLSetDescField for this descriptor identifier"); - break; - case DESC_INVALID_COLUMN_NUMBER_ERROR: - DC_set_errormsg( - desc, "can't SQLSetDescField for this column number"); - break; - case DESC_BAD_PARAMETER_NUMBER_ERROR: - DC_set_errormsg( - desc, - "can't SQLSetDescField for this parameter number"); - break; - break; - } - } - DC_log_error(func, "", desc); - } - return ret; -} - -/* SQLSet(Param/Scroll/Stmt)Option -> SQLSetStmtAttr */ -RETCODE SQL_API OPENSEARCHAPI_SetStmtAttr(HSTMT StatementHandle, SQLINTEGER Attribute, - PTR Value, SQLINTEGER StringLength) { - UNUSED(StringLength); - RETCODE ret = SQL_SUCCESS; - CSTR func = "OPENSEARCHAPI_SetStmtAttr"; - StatementClass *stmt = (StatementClass *)StatementHandle; - - MYLOG(OPENSEARCH_TRACE, - "entering Handle=%p " FORMAT_INTEGER "," FORMAT_ULEN "(%p)\n", - StatementHandle, Attribute, (SQLULEN)Value, Value); - switch (Attribute) { - case SQL_ATTR_ENABLE_AUTO_IPD: /* 15 */ - if (SQL_FALSE == Value) - break; - case SQL_ATTR_CURSOR_SCROLLABLE: /* -1 */ - case SQL_ATTR_CURSOR_SENSITIVITY: /* -2 */ - case SQL_ATTR_AUTO_IPD: /* 10001 */ - SC_set_error(stmt, DESC_OPTION_NOT_FOR_THE_DRIVER, - "Unsupported statement option (Set)", func); - return SQL_ERROR; - /* case SQL_ATTR_ROW_BIND_TYPE: ** == SQL_BIND_TYPE(ODBC2.0) */ - case SQL_ATTR_IMP_ROW_DESC: /* 10012 (read-only) */ - case SQL_ATTR_IMP_PARAM_DESC: /* 10013 (read-only) */ - - /* - * case SQL_ATTR_PREDICATE_PTR: case - * SQL_ATTR_PREDICATE_OCTET_LENGTH_PTR: - */ - SC_set_error(stmt, DESC_INVALID_OPTION_IDENTIFIER, - "Unsupported statement option (Set)", func); - return SQL_ERROR; - - case SQL_ATTR_METADATA_ID: /* 10014 */ - stmt->options.metadata_id = CAST_UPTR(SQLUINTEGER, Value); - break; - case SQL_ATTR_APP_ROW_DESC: /* 10010 */ - if (SQL_NULL_HDESC == Value) { - stmt->ard = &(stmt->ardi); - } else { - stmt->ard = (DescriptorClass *)Value; - MYLOG(OPENSEARCH_ALL, "set ard=%p\n", stmt->ard); - } - break; - case SQL_ATTR_APP_PARAM_DESC: /* 10011 */ - if (SQL_NULL_HDESC == Value) { - stmt->apd = &(stmt->apdi); - } else { - stmt->apd = (DescriptorClass *)Value; - } - break; - case SQL_ATTR_FETCH_BOOKMARK_PTR: /* 16 */ - stmt->options.bookmark_ptr = Value; - break; - case SQL_ATTR_PARAM_BIND_OFFSET_PTR: /* 17 */ - SC_get_APDF(stmt)->param_offset_ptr = (SQLULEN *)Value; - break; - case SQL_ATTR_PARAM_BIND_TYPE: /* 18 */ - SC_get_APDF(stmt)->param_bind_type = CAST_UPTR(SQLUINTEGER, Value); - break; - case SQL_ATTR_PARAM_OPERATION_PTR: /* 19 */ - SC_get_APDF(stmt)->param_operation_ptr = Value; - break; - case SQL_ATTR_PARAM_STATUS_PTR: /* 20 */ - SC_get_IPDF(stmt)->param_status_ptr = (SQLUSMALLINT *)Value; - break; - case SQL_ATTR_PARAMS_PROCESSED_PTR: /* 21 */ - SC_get_IPDF(stmt)->param_processed_ptr = (SQLULEN *)Value; - break; - case SQL_ATTR_PARAMSET_SIZE: /* 22 */ - SC_get_APDF(stmt)->paramset_size = CAST_UPTR(SQLULEN, Value); - break; - case SQL_ATTR_ROW_BIND_OFFSET_PTR: /* 23 */ - SC_get_ARDF(stmt)->row_offset_ptr = (SQLULEN *)Value; - break; - case SQL_ATTR_ROW_OPERATION_PTR: /* 24 */ - SC_get_ARDF(stmt)->row_operation_ptr = Value; - break; - case SQL_ATTR_ROW_STATUS_PTR: /* 25 */ - SC_get_IRDF(stmt)->rowStatusArray = (SQLUSMALLINT *)Value; - break; - case SQL_ATTR_ROWS_FETCHED_PTR: /* 26 */ - SC_get_IRDF(stmt)->rowsFetched = (SQLULEN *)Value; - break; - case SQL_ATTR_ROW_ARRAY_SIZE: /* 27 */ - SC_get_ARDF(stmt)->size_of_rowset = CAST_UPTR(SQLULEN, Value); - break; - default: - return OPENSEARCHAPI_SetStmtOption(StatementHandle, (SQLUSMALLINT)Attribute, - (SQLULEN)Value); - } - return ret; -} diff --git a/sql-odbc/src/sqlodbc/opensearch_apifunc.h b/sql-odbc/src/sqlodbc/opensearch_apifunc.h deleted file mode 100644 index 1901fe8cd0..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_apifunc.h +++ /dev/null @@ -1,228 +0,0 @@ -#ifndef _OPENSEARCH_API_FUNC_H__ -#define _OPENSEARCH_API_FUNC_H__ - -#include -#include - -#include "opensearch_odbc.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* Internal flags for catalog functions */ -#define PODBC_NOT_SEARCH_PATTERN 1L -#define PODBC_SEARCH_PUBLIC_SCHEMA (1L << 1) -#define PODBC_SEARCH_BY_IDS (1L << 2) -#define PODBC_SHOW_OID_COLUMN (1L << 3) -#define PODBC_ROW_VERSIONING (1L << 4) -/* Internal flags for OPENSEARCHAPI_AllocStmt functions */ -#define PODBC_EXTERNAL_STATEMENT 1L /* visible to the driver manager */ -#define PODBC_INHERIT_CONNECT_OPTIONS (1L << 1) -/* Internal flags for OPENSEARCHAPI_Exec... functions */ -/* Flags for the error handling */ -#define PODBC_ALLOW_PARTIAL_EXTRACT 1L -/* #define PODBC_ERROR_CLEAR (1L << 1) no longer used */ - -RETCODE SQL_API OPENSEARCHAPI_AllocConnect(HENV EnvironmentHandle, - HDBC *ConnectionHandle); -RETCODE SQL_API OPENSEARCHAPI_AllocEnv(HENV *EnvironmentHandle); -RETCODE SQL_API OPENSEARCHAPI_AllocStmt(HDBC ConnectionHandle, HSTMT *StatementHandle, - UDWORD flag); -RETCODE SQL_API OPENSEARCHAPI_BindCol(HSTMT StatementHandle, SQLUSMALLINT ColumnNumber, - SQLSMALLINT TargetType, PTR TargetValue, - SQLLEN BufferLength, SQLLEN *StrLen_or_Ind); -RETCODE SQL_API OPENSEARCHAPI_Connect(HDBC ConnectionHandle, const SQLCHAR *ServerName, - SQLSMALLINT NameLength1, const SQLCHAR *UserName, - SQLSMALLINT NameLength2, - const SQLCHAR *Authentication, - SQLSMALLINT NameLength3); -RETCODE SQL_API OPENSEARCHAPI_BrowseConnect(HDBC hdbc, const SQLCHAR *szConnStrIn, - SQLSMALLINT cbConnStrIn, - SQLCHAR *szConnStrOut, - SQLSMALLINT cbConnStrOutMax, - SQLSMALLINT *pcbConnStrOut); -RETCODE SQL_API OPENSEARCHAPI_DescribeCol( - HSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLCHAR *ColumnName, - SQLSMALLINT BufferLength, SQLSMALLINT *NameLength, SQLSMALLINT *DataType, - SQLULEN *ColumnSize, SQLSMALLINT *DecimalDigits, SQLSMALLINT *Nullable); -RETCODE SQL_API OPENSEARCHAPI_Disconnect(HDBC ConnectionHandle); -/* Helper functions for Error handling */ -RETCODE SQL_API OPENSEARCHAPI_EnvError(HENV EnvironmentHandle, SQLSMALLINT RecNumber, - SQLCHAR *Sqlstate, SQLINTEGER *NativeError, - SQLCHAR *MessageText, SQLSMALLINT BufferLength, - SQLSMALLINT *TextLength, UWORD flag); -RETCODE SQL_API OPENSEARCHAPI_ConnectError(HDBC ConnectionHandle, SQLSMALLINT RecNumber, - SQLCHAR *Sqlstate, SQLINTEGER *NativeError, - SQLCHAR *MessageText, - SQLSMALLINT BufferLength, - SQLSMALLINT *TextLength, UWORD flag); -RETCODE SQL_API OPENSEARCHAPI_StmtError(HSTMT StatementHandle, SQLSMALLINT RecNumber, - SQLCHAR *Sqlstate, SQLINTEGER *NativeError, - SQLCHAR *MessageText, SQLSMALLINT BufferLength, - SQLSMALLINT *TextLength, UWORD flag); -RETCODE SQL_API OPENSEARCHAPI_ExecDirect(HSTMT StatementHandle, - const SQLCHAR *StatementText, - SQLINTEGER TextLength, BOOL commit); -RETCODE SQL_API OPENSEARCHAPI_Execute(HSTMT StatementHandle); -RETCODE SQL_API OPENSEARCHAPI_Fetch(HSTMT StatementHandle); -RETCODE SQL_API OPENSEARCHAPI_FreeConnect(HDBC ConnectionHandle); -RETCODE SQL_API OPENSEARCHAPI_FreeEnv(HENV EnvironmentHandle); -RETCODE SQL_API OPENSEARCHAPI_FreeStmt(HSTMT StatementHandle, SQLUSMALLINT Option); -RETCODE SQL_API OPENSEARCHAPI_GetConnectOption(HDBC ConnectionHandle, - SQLUSMALLINT Option, PTR Value, - SQLINTEGER *StringLength, - SQLINTEGER BufferLength); -RETCODE SQL_API OPENSEARCHAPI_GetCursorName(HSTMT StatementHandle, SQLCHAR *CursorName, - SQLSMALLINT BufferLength, - SQLSMALLINT *NameLength); -RETCODE SQL_API OPENSEARCHAPI_GetData(HSTMT StatementHandle, SQLUSMALLINT ColumnNumber, - SQLSMALLINT TargetType, PTR TargetValue, - SQLLEN BufferLength, SQLLEN *StrLen_or_Ind); -RETCODE SQL_API OPENSEARCHAPI_GetFunctions(HDBC ConnectionHandle, - SQLUSMALLINT FunctionId, - SQLUSMALLINT *Supported); -RETCODE SQL_API OPENSEARCHAPI_GetFunctions30(HDBC ConnectionHandle, - SQLUSMALLINT FunctionId, - SQLUSMALLINT *Supported); -RETCODE SQL_API OPENSEARCHAPI_GetInfo(HDBC ConnectionHandle, SQLUSMALLINT InfoType, - PTR InfoValue, SQLSMALLINT BufferLength, - SQLSMALLINT *StringLength); -RETCODE SQL_API OPENSEARCHAPI_GetStmtOption(HSTMT StatementHandle, SQLUSMALLINT Option, - PTR Value, SQLINTEGER *StringLength, - SQLINTEGER BufferLength); -RETCODE SQL_API OPENSEARCHAPI_NumResultCols(HSTMT StatementHandle, - SQLSMALLINT *ColumnCount); -RETCODE SQL_API OPENSEARCHAPI_RowCount(HSTMT StatementHandle, SQLLEN *RowCount); -RETCODE SQL_API OPENSEARCHAPI_SetConnectOption(HDBC ConnectionHandle, - SQLUSMALLINT Option, SQLULEN Value); -RETCODE SQL_API OPENSEARCHAPI_SetCursorName(HSTMT StatementHandle, - const SQLCHAR *CursorName, - SQLSMALLINT NameLength); -RETCODE SQL_API OPENSEARCHAPI_SetStmtOption(HSTMT StatementHandle, SQLUSMALLINT Option, - SQLULEN Value); -RETCODE SQL_API -OPENSEARCHAPI_SpecialColumns(HSTMT StatementHandle, SQLUSMALLINT IdentifierType, - const SQLCHAR *CatalogName, SQLSMALLINT NameLength1, - const SQLCHAR *SchemaName, SQLSMALLINT NameLength2, - const SQLCHAR *TableName, SQLSMALLINT NameLength3, - SQLUSMALLINT Scope, SQLUSMALLINT Nullable); -RETCODE SQL_API OPENSEARCHAPI_Statistics( - HSTMT StatementHandle, const SQLCHAR *CatalogName, SQLSMALLINT NameLength1, - const SQLCHAR *SchemaName, SQLSMALLINT NameLength2, - const SQLCHAR *TableName, SQLSMALLINT NameLength3, SQLUSMALLINT Unique, - SQLUSMALLINT Reserved); -RETCODE SQL_API OPENSEARCHAPI_ColAttributes(HSTMT hstmt, SQLUSMALLINT icol, - SQLUSMALLINT fDescType, PTR rgbDesc, - SQLSMALLINT cbDescMax, SQLSMALLINT *pcbDesc, - SQLLEN *pfDesc); -RETCODE SQL_API OPENSEARCHAPI_Prepare(HSTMT hstmt, const SQLCHAR *szSqlStr, - SQLINTEGER cbSqlStr); -RETCODE SQL_API OPENSEARCHAPI_ColumnPrivileges( - HSTMT hstmt, const SQLCHAR *szCatalogName, SQLSMALLINT cbCatalogName, - const SQLCHAR *szSchemaName, SQLSMALLINT cbSchemaName, - const SQLCHAR *szTableName, SQLSMALLINT cbTableName, - const SQLCHAR *szColumnName, SQLSMALLINT cbColumnName, UWORD flag); -RETCODE SQL_API OPENSEARCHAPI_ExtendedFetch(HSTMT hstmt, SQLUSMALLINT fFetchType, - SQLLEN irow, SQLULEN *pcrow, - SQLUSMALLINT *rgfRowStatus, - SQLLEN FetchOffset, SQLLEN rowsetSize); -RETCODE SQL_API OPENSEARCHAPI_ForeignKeys( - HSTMT hstmt, const SQLCHAR *szPkCatalogName, SQLSMALLINT cbPkCatalogName, - const SQLCHAR *szPkSchemaName, SQLSMALLINT cbPkSchemaName, - const SQLCHAR *szPkTableName, SQLSMALLINT cbPkTableName, - const SQLCHAR *szFkCatalogName, SQLSMALLINT cbFkCatalogName, - const SQLCHAR *szFkSchemaName, SQLSMALLINT cbFkSchemaName, - const SQLCHAR *szFkTableName, SQLSMALLINT cbFkTableName); -RETCODE SQL_API OPENSEARCHAPI_MoreResults(HSTMT hstmt); -RETCODE SQL_API OPENSEARCHAPI_NativeSql(HDBC hdbc, const SQLCHAR *szSqlStrIn, - SQLINTEGER cbSqlStrIn, SQLCHAR *szSqlStr, - SQLINTEGER cbSqlStrMax, SQLINTEGER *pcbSqlStr); -RETCODE SQL_API OPENSEARCHAPI_NumParams(HSTMT hstmt, SQLSMALLINT *pcpar); -RETCODE SQL_API OPENSEARCHAPI_PrimaryKeys(HSTMT hstmt, const SQLCHAR *szCatalogName, - SQLSMALLINT cbCatalogName, - const SQLCHAR *szSchemaName, - SQLSMALLINT cbSchemaName, - const SQLCHAR *szTableName, - SQLSMALLINT cbTableName, OID reloid); -RETCODE SQL_API OPENSEARCHAPI_ProcedureColumns( - HSTMT hstmt, const SQLCHAR *szCatalogName, SQLSMALLINT cbCatalogName, - const SQLCHAR *szSchemaName, SQLSMALLINT cbSchemaName, - const SQLCHAR *szProcName, SQLSMALLINT cbProcName, - const SQLCHAR *szColumnName, SQLSMALLINT cbColumnName, UWORD flag); -RETCODE SQL_API OPENSEARCHAPI_Procedures(HSTMT hstmt, const SQLCHAR *szCatalogName, - SQLSMALLINT cbCatalogName, - const SQLCHAR *szSchemaName, - SQLSMALLINT cbSchemaName, - const SQLCHAR *szProcName, - SQLSMALLINT cbProcName, UWORD flag); -RETCODE SQL_API OPENSEARCHAPI_TablePrivileges(HSTMT hstmt, const SQLCHAR *szCatalogName, - SQLSMALLINT cbCatalogName, - const SQLCHAR *szSchemaName, - SQLSMALLINT cbSchemaName, - const SQLCHAR *szTableName, - SQLSMALLINT cbTableName, UWORD flag); -RETCODE SQL_API OPENSEARCHAPI_GetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle, - SQLSMALLINT RecNumber, SQLCHAR *Sqlstate, - SQLINTEGER *NativeError, SQLCHAR *MessageText, - SQLSMALLINT BufferLength, - SQLSMALLINT *TextLength); -RETCODE SQL_API OPENSEARCHAPI_GetDiagField(SQLSMALLINT HandleType, SQLHANDLE Handle, - SQLSMALLINT RecNumber, - SQLSMALLINT DiagIdentifier, PTR DiagInfoPtr, - SQLSMALLINT BufferLength, - SQLSMALLINT *StringLengthPtr); -RETCODE SQL_API OPENSEARCHAPI_GetConnectAttr(HDBC ConnectionHandle, - SQLINTEGER Attribute, PTR Value, - SQLINTEGER BufferLength, - SQLINTEGER *StringLength); -RETCODE SQL_API OPENSEARCHAPI_GetStmtAttr(HSTMT StatementHandle, SQLINTEGER Attribute, - PTR Value, SQLINTEGER BufferLength, - SQLINTEGER *StringLength); - -/* Driver-specific connection attributes, for SQLSet/GetConnectAttr() */ -enum { - SQL_ATTR_ESOPT_DEBUG = 65536, - SQL_ATTR_ESOPT_COMMLOG = 65537, - SQL_ATTR_ESOPT_PARSE = 65538, - SQL_ATTR_ESOPT_USE_DECLAREFETCH = 65539, - SQL_ATTR_ESOPT_SERVER_SIDE_PREPARE = 65540, - SQL_ATTR_ESOPT_FETCH = 65541, - SQL_ATTR_ESOPT_UNKNOWNSIZES = 65542, - SQL_ATTR_ESOPT_TEXTASLONGVARCHAR = 65543, - SQL_ATTR_ESOPT_UNKNOWNSASLONGVARCHAR = 65544, - SQL_ATTR_ESOPT_BOOLSASCHAR = 65545, - SQL_ATTR_ESOPT_MAXVARCHARSIZE = 65546, - SQL_ATTR_ESOPT_MAXLONGVARCHARSIZE = 65547, - SQL_ATTR_ESOPT_WCSDEBUG = 65548, - SQL_ATTR_ESOPT_MSJET = 65549 -}; -RETCODE SQL_API OPENSEARCHAPI_SetConnectAttr(HDBC ConnectionHandle, - SQLINTEGER Attribute, PTR Value, - SQLINTEGER StringLength); -RETCODE SQL_API OPENSEARCHAPI_SetStmtAttr(HSTMT StatementHandle, SQLINTEGER Attribute, - PTR Value, SQLINTEGER StringLength); -RETCODE SQL_API OPENSEARCHAPI_AllocDesc(HDBC ConnectionHandle, - SQLHDESC *DescriptorHandle); -RETCODE SQL_API OPENSEARCHAPI_FreeDesc(SQLHDESC DescriptorHandle); -RETCODE SQL_API OPENSEARCHAPI_CopyDesc(SQLHDESC SourceDescHandle, - SQLHDESC TargetDescHandle); -RETCODE SQL_API OPENSEARCHAPI_SetDescField(SQLHDESC DescriptorHandle, - SQLSMALLINT RecNumber, - SQLSMALLINT FieldIdentifier, PTR Value, - SQLINTEGER BufferLength); -RETCODE SQL_API OPENSEARCHAPI_GetDescField(SQLHDESC DescriptorHandle, - SQLSMALLINT RecNumber, - SQLSMALLINT FieldIdentifier, PTR Value, - SQLINTEGER BufferLength, - SQLINTEGER *StringLength); -RETCODE SQL_API OPENSEARCHAPI_DescError(SQLHDESC DescriptorHandle, - SQLSMALLINT RecNumber, SQLCHAR *Sqlstate, - SQLINTEGER *NativeError, SQLCHAR *MessageText, - SQLSMALLINT BufferLength, - SQLSMALLINT *TextLength, UWORD flag); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ -#endif /* define_OPENSEARCH_API_FUNC_H__ */ diff --git a/sql-odbc/src/sqlodbc/opensearch_communication.cpp b/sql-odbc/src/sqlodbc/opensearch_communication.cpp deleted file mode 100644 index dab46cb1fa..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_communication.cpp +++ /dev/null @@ -1,1039 +0,0 @@ -#include "opensearch_communication.h" - -// sqlodbc needs to be included before mylog, otherwise mylog will generate -// compiler warnings -// clang-format off -#include "opensearch_odbc.h" -#include "mylog.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -// clang-format on - -#define SQL_ENDPOINT_ERROR_STR "Error" - -static const std::string ctype = "application/json"; -static const std::string ALLOCATION_TAG = "AWS_SIGV4_AUTH"; -static const std::string SERVICE_NAME = "es"; -static const std::string ESODBC_PROFILE_NAME = "opensearchodbc"; -static const std::string ERROR_MSG_PREFIX = - "[OpenSearch][SQL ODBC Driver][SQL Plugin] "; -static const std::string JSON_SCHEMA = - "{" // This was generated from the example OpenSearch data - "\"type\": \"object\"," - "\"properties\": {" - "\"schema\": {" - "\"type\": \"array\"," - "\"items\": [{" - "\"type\": \"object\"," - "\"properties\": {" - "\"name\": { \"type\": \"string\" }," - "\"type\": { \"type\": \"string\" }" - "}," - "\"required\": [ \"name\", \"type\" ]" - "}]" - "}," - "\"cursor\": { \"type\": \"string\" }," - "\"total\": { \"type\": \"integer\" }," - "\"datarows\": {" - "\"type\": \"array\"," - "\"items\": {}" - "}," - "\"size\": { \"type\": \"integer\" }," - "\"status\": { \"type\": \"integer\" }" - "}," - "\"required\": [\"schema\", \"total\", \"datarows\", \"size\", \"status\"]" - "}"; -static const std::string CURSOR_JSON_SCHEMA = - "{" // This was generated from the example OpenSearch data - "\"type\": \"object\"," - "\"properties\": {" - "\"cursor\": { \"type\": \"string\" }," - "\"datarows\": {" - "\"type\": \"array\"," - "\"items\": {}" - "}," - "\"status\": { \"type\": \"integer\" }" - "}," - "\"required\": [\"datarows\"]" - "}"; -static const std::string ERROR_RESPONSE_SCHEMA = R"EOF( -{ - "type": "object", - "properties": { - "error": { - "type": "object", - "properties": { - "reason": { "type": "string" }, - "details": { "type": "string" }, - "type": { "type": "string" } - }, - "required": [ - "reason", - "details", - "type" - ] - }, - "status": { - "type": "integer" - } - }, - "required": [ - "error", - "status" - ] -} -)EOF"; - -namespace { - /** - * A helper class to initialize/shutdown AWS API once per DLL load/unload. - */ - class AwsSdkHelper { - public: - AwsSdkHelper() : - m_reference_count(0) { - } - - AwsSdkHelper& operator++() { - if (1 == ++m_reference_count) { - std::scoped_lock lock(m_mutex); - Aws::InitAPI(m_sdk_options); - } - return *this; - } - - AwsSdkHelper& operator--() { - if (0 == --m_reference_count) { - std::scoped_lock lock(m_mutex); - Aws::ShutdownAPI(m_sdk_options); - } - return *this; - } - - Aws::SDKOptions m_sdk_options; - std::atomic m_reference_count; - std::mutex m_mutex; - }; - - AwsSdkHelper AWS_SDK_HELPER; -} - -void OpenSearchCommunication::AwsHttpResponseToString( - std::shared_ptr< Aws::Http::HttpResponse > response, std::string& output) { - // This function has some unconventional stream operations because we need - // performance over readability here. Equivalent code done in conventional - // ways (using stringstream operators) takes ~30x longer than this code - // below and bottlenecks our query performance - - // Get streambuffer from response and set position to start - std::streambuf* stream_buffer = response->GetResponseBody().rdbuf(); - stream_buffer->pubseekpos(0); - - // Get size of streambuffer and reserver that much space in the output - size_t avail = static_cast< size_t >(stream_buffer->in_avail()); - std::vector< char > buf(avail, '\0'); - output.clear(); - output.reserve(avail); - - // Directly copy memory from buffer into our string buffer - stream_buffer->sgetn(buf.data(), avail); - output.assign(buf.data(), avail); -} - -void OpenSearchCommunication::PrepareCursorResult(OpenSearchResult& opensearch_result) { - // Prepare document and validate result - try { - LogMsg(OPENSEARCH_DEBUG, "Parsing result JSON with cursor."); - opensearch_result.opensearch_result_doc.parse( - opensearch_result.result_json, - CURSOR_JSON_SCHEMA); - } catch (const rabbit::parse_error& e) { - // The exception rabbit gives is quite useless - providing the json - // will aid debugging for users - std::string str = "Exception obtained '" + std::string(e.what()) - + "' when parsing json string '" - + opensearch_result.result_json + "'."; - throw std::runtime_error(str.c_str()); - } -} - -std::shared_ptr< ErrorDetails > OpenSearchCommunication::ParseErrorResponse( - OpenSearchResult& opensearch_result) { - // Prepare document and validate schema - try { - LogMsg(OPENSEARCH_DEBUG, "Parsing error response (with schema validation)"); - opensearch_result.opensearch_result_doc.parse( - opensearch_result.result_json, - ERROR_RESPONSE_SCHEMA); - - auto error_details = std::make_shared< ErrorDetails >(); - error_details->reason = - opensearch_result.opensearch_result_doc["error"]["reason"].as_string(); - error_details->details = - opensearch_result.opensearch_result_doc["error"]["details"].as_string(); - error_details->source_type = - opensearch_result.opensearch_result_doc["error"]["type"].as_string(); - return error_details; - } catch (const rabbit::parse_error& e) { - // The exception rabbit gives is quite useless - providing the json - // will aid debugging for users - std::string str = "Exception obtained '" + std::string(e.what()) - + "' when parsing json string '" - + opensearch_result.result_json + "'."; - throw std::runtime_error(str.c_str()); - } -} - -void OpenSearchCommunication::SetErrorDetails(std::string reason, std::string message, - ConnErrorType error_type) { - // Prepare document and validate schema - auto error_details = std::make_shared< ErrorDetails >(); - error_details->reason = reason; - error_details->details = message; - error_details->source_type = "Dummy type"; - error_details->type = error_type; - m_error_details = error_details; -} - -void OpenSearchCommunication::SetErrorDetails(ErrorDetails details) { - // Prepare document and validate schema - auto error_details = std::make_shared< ErrorDetails >(details); - m_error_details = error_details; -} - -void OpenSearchCommunication::GetJsonSchema(OpenSearchResult& opensearch_result) { - // Prepare document and validate schema - try { - LogMsg(OPENSEARCH_DEBUG, "Parsing result JSON with schema."); - opensearch_result.opensearch_result_doc.parse( - opensearch_result.result_json, JSON_SCHEMA); - } catch (const rabbit::parse_error& e) { - // The exception rabbit gives is quite useless - providing the json - // will aid debugging for users - std::string str = "Exception obtained '" + std::string(e.what()) - + "' when parsing json string '" - + opensearch_result.result_json + "'."; - throw std::runtime_error(str.c_str()); - } -} - -OpenSearchCommunication::OpenSearchCommunication() -#ifdef __APPLE__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wreorder" -#endif // __APPLE__ - : m_status(ConnStatusType::CONNECTION_BAD), - m_error_type(ConnErrorType::CONN_ERROR_SUCCESS), - m_valid_connection_options(false), - m_is_retrieving(false), - m_error_message(""), - m_result_queue(2), - m_client_encoding(m_supported_client_encodings[0]), - m_error_message_to_user("") -#ifdef __APPLE__ -#pragma clang diagnostic pop -#endif // __APPLE__ -{ - ++AWS_SDK_HELPER; -} - -OpenSearchCommunication::~OpenSearchCommunication() { - // Release the HTTP client instance to free its resources before releasing AWS SDK. - // Changing order of these actions would cause crash on disconnect. - m_http_client.reset(); - --AWS_SDK_HELPER; -} - -std::string OpenSearchCommunication::GetErrorMessage() { - // TODO #35 - Check if they expect NULL or "" when there is no error. - if (m_error_details) { - m_error_details->details = std::regex_replace( - m_error_details->details, std::regex("\\n"), "\\\\n"); - return ERROR_MSG_PREFIX + m_error_details->reason + ": " - + m_error_details->details; - } else { - return ERROR_MSG_PREFIX - + "No error details available; check the driver logs."; - } -} - -ConnErrorType OpenSearchCommunication::GetErrorType() { - return m_error_type; -} - -bool OpenSearchCommunication::ConnectionOptions(runtime_options& rt_opts, - bool use_defaults, int expand_dbname, - unsigned int option_count) { - (void)(expand_dbname); - (void)(option_count); - (void)(use_defaults); - m_rt_opts = rt_opts; - return CheckConnectionOptions(); -} - -bool OpenSearchCommunication::ConnectionOptions2() { - return true; -} - -bool OpenSearchCommunication::ConnectDBStart() { - LogMsg(OPENSEARCH_ALL, "Starting DB connection."); - m_status = ConnStatusType::CONNECTION_BAD; - if (!m_valid_connection_options) { - // TODO: get error message from CheckConnectionOptions - m_error_message = - "Invalid connection options, unable to connect to DB."; - SetErrorDetails("Invalid connection options", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - DropDBConnection(); - return false; - } - - m_status = ConnStatusType::CONNECTION_NEEDED; - if (!EstablishConnection()) { - m_error_message = m_error_message_to_user.empty() - ? "Failed to establish connection to DB." - : m_error_message_to_user; - SetErrorDetails("Connection error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - DropDBConnection(); - return false; - } - - LogMsg(OPENSEARCH_DEBUG, "Connection established."); - m_status = ConnStatusType::CONNECTION_OK; - return true; -} - -ConnStatusType OpenSearchCommunication::GetConnectionStatus() { - return m_status; -} - -void OpenSearchCommunication::DropDBConnection() { - LogMsg(OPENSEARCH_ALL, "Dropping DB connection."); - if (m_http_client) { - m_http_client.reset(); - } - - m_status = ConnStatusType::CONNECTION_BAD; - StopResultRetrieval(); -} - -bool OpenSearchCommunication::CheckConnectionOptions() { - LogMsg(OPENSEARCH_ALL, "Verifying connection options."); - m_error_message = ""; - if (m_rt_opts.auth.auth_type != AUTHTYPE_NONE - && m_rt_opts.auth.auth_type != AUTHTYPE_IAM) { - if (m_rt_opts.auth.auth_type == AUTHTYPE_BASIC) { - if (m_rt_opts.auth.username.empty() - || m_rt_opts.auth.password.empty()) { - m_error_message = AUTHTYPE_BASIC - " authentication requires a username and password."; - SetErrorDetails("Auth error", m_error_message, - ConnErrorType::CONN_ERROR_INVALID_AUTH); - } - } else { - m_error_message = "Unknown authentication type: '" - + m_rt_opts.auth.auth_type + "'"; - SetErrorDetails("Auth error", m_error_message, - ConnErrorType::CONN_ERROR_INVALID_AUTH); - } - } else if (m_rt_opts.conn.server == "") { - m_error_message = "Host connection option was not specified."; - SetErrorDetails("Connection error", m_error_message, - ConnErrorType::CONN_ERROR_UNABLE_TO_ESTABLISH); - } - - if (m_error_message != "") { - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - m_valid_connection_options = false; - return false; - } else { - LogMsg(OPENSEARCH_DEBUG, "Required connection option are valid."); - m_valid_connection_options = true; - } - return m_valid_connection_options; -} - -void OpenSearchCommunication::InitializeConnection() { - Aws::Client::ClientConfiguration config; - config.scheme = (m_rt_opts.crypt.use_ssl ? Aws::Http::Scheme::HTTPS - : Aws::Http::Scheme::HTTP); - config.verifySSL = m_rt_opts.crypt.verify_server; - long response_timeout = - static_cast< long >(DEFAULT_RESPONSE_TIMEOUT) * 1000L; - try { - response_timeout = - std::stol(m_rt_opts.conn.timeout, nullptr, 10) * 1000L; - } catch (...) { - } - config.connectTimeoutMs = response_timeout; - config.httpRequestTimeoutMs = response_timeout; - config.requestTimeoutMs = response_timeout; - m_http_client = Aws::Http::CreateHttpClient(config); -} - -std::shared_ptr< Aws::Http::HttpResponse > -OpenSearchCommunication::IssueRequest( - const std::string& endpoint, const Aws::Http::HttpMethod request_type, - const std::string& content_type, const std::string& query, - const std::string& fetch_size, const std::string& cursor) { - // Generate http request - std::shared_ptr< Aws::Http::HttpRequest > request = - Aws::Http::CreateHttpRequest( - Aws::String( - m_rt_opts.conn.server - + (m_rt_opts.conn.port.empty() ? "" : ":" + m_rt_opts.conn.port) - + endpoint), - request_type, - Aws::Utils::Stream::DefaultResponseStreamFactoryMethod); - - // Set header type - if (!content_type.empty()) - request->SetHeaderValue(Aws::Http::CONTENT_TYPE_HEADER, Aws::String(ctype.c_str(), ctype.size())); - - // Set body - if (!query.empty() || !cursor.empty()) { - rabbit::object body; - if (!query.empty()) { - body["query"] = query; - if (!fetch_size.empty() && fetch_size != "-1") - body["fetch_size"] = fetch_size; - } else if (!cursor.empty()) { - body["cursor"] = cursor; - } - std::shared_ptr< Aws::StringStream > aws_ss = - Aws::MakeShared< Aws::StringStream >("RabbitStream"); - *aws_ss << std::string(body.str()); - request->AddContentBody(aws_ss); - request->SetContentLength(Aws::Utils::StringUtils::to_string(body.str().size())); - } - - // Handle authentication - if (m_rt_opts.auth.auth_type == AUTHTYPE_BASIC) { - std::string userpw_str = - m_rt_opts.auth.username + ":" + m_rt_opts.auth.password; - Aws::Utils::Array< unsigned char > userpw_arr( - reinterpret_cast< const unsigned char* >(userpw_str.c_str()), - userpw_str.length()); - Aws::String hashed_userpw = - Aws::Utils::HashingUtils::Base64Encode(userpw_arr); - request->SetAuthorization("Basic " + hashed_userpw); - } else if (m_rt_opts.auth.auth_type == AUTHTYPE_IAM) { - std::shared_ptr< Aws::Auth::ProfileConfigFileAWSCredentialsProvider > - credential_provider = Aws::MakeShared< - Aws::Auth::ProfileConfigFileAWSCredentialsProvider >( - ALLOCATION_TAG.c_str(), ESODBC_PROFILE_NAME.c_str()); - Aws::Client::AWSAuthV4Signer signer(credential_provider, - SERVICE_NAME.c_str(), - m_rt_opts.auth.region.c_str()); - signer.SignRequest(*request); - } - - // Issue request and return response - return m_http_client->MakeRequest(request); -} - -bool OpenSearchCommunication::IsSQLPluginEnabled(std::shared_ptr< ErrorDetails > error_details) { - std::string error_type = error_details->source_type; - if (error_type =="SQLFeatureDisabledException") { - return false; - } - return true; -} - -/** - * @brief Queries server to determine SQL plugin availability. - * - * @return true : Successfully queried server for SQL plugin - * @return false : Failed to query server, no plugin available, exception was caught - */ -bool OpenSearchCommunication::CheckSQLPluginAvailability() { - LogMsg(OPENSEARCH_ALL, "Checking for SQL plugin status."); - std::string test_query = "SHOW TABLES LIKE %"; - try { - std::shared_ptr< Aws::Http::HttpResponse > response = - IssueRequest(sql_endpoint, - Aws::Http::HttpMethod::HTTP_POST, ctype, test_query); - if (response == nullptr) { - m_error_message = - "Failed to receive response." - "Received NULL response."; - SetErrorDetails("Execution error", m_error_message, - ConnErrorType::CONN_ERROR_QUERY_SYNTAX); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - return false; - } - - AwsHttpResponseToString(response, m_response_str); - if (response->GetResponseCode() == Aws::Http::HttpResponseCode::OK) { - return true; - } - else { - std::unique_ptr< OpenSearchResult > result = - std::make_unique< OpenSearchResult >(); - AwsHttpResponseToString(response, result->result_json); - std::shared_ptr< ErrorDetails > error_details = - ParseErrorResponse(*result); - - if(!IsSQLPluginEnabled(error_details)) { - m_error_message_to_user = - "SQL plugin is disabled, please enable the plugin " - "to use this driver."; - m_error_message += - "The SQL plugin is disabled. The SQL plugin must be " - "enabled in order to use this driver. Response body: '" - + m_response_str + "'"; - SetErrorDetails("Connection error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - } - - if (response->HasClientError()) { - m_error_message += " Client error: '" - + response->GetClientErrorMessage() + "'."; - SetErrorDetails("HTTP client error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - } - - if (!m_response_str.empty()) { - m_error_message += " Response error: '" + m_response_str + "'."; - SetErrorDetails("Connection error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - } - } - } catch (...) { - m_error_message_to_user = - "SQL plugin is not available at url: " + - (m_rt_opts.conn.server + (m_rt_opts.conn.port.empty() ? - "" : ":" + m_rt_opts.conn.port)) + - ", please install the SQL plugin to use this driver."; - m_error_message += - "Unexpected exception thrown from the server, " - "the SQL plugin is not installed or in unhealthy status."; - SetErrorDetails("Server error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - } - return false; -} - -bool OpenSearchCommunication::EstablishConnection() { - // Generate HttpClient Connection class if it does not exist - LogMsg(OPENSEARCH_ALL, "Attempting to establish DB connection."); - if (!m_http_client) { - InitializeConnection(); - } - - // check if the endpoint is initialized - if (sql_endpoint.empty()) { - SetSqlEndpoint(); - } - - // Check whether SQL plugin has been installed and enabled in the - // OpenSearch server since the SQL plugin is a prerequisite to - // use this driver. - if((sql_endpoint != SQL_ENDPOINT_ERROR_STR) && CheckSQLPluginAvailability()) { - return true; - } - - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - return false; -} - -std::vector< std::string > OpenSearchCommunication::GetColumnsWithSelectQuery( - const std::string table_name) { - std::vector< std::string > list_of_column; - if (table_name.empty()) { - m_error_type = ConnErrorType::CONN_ERROR_INVALID_NULL_PTR; - m_error_message = "Query is NULL"; - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - return list_of_column; - } - - // Prepare query - std::string query = "SELECT * FROM " + table_name + " LIMIT 0"; - std::string msg = "Attempting to execute a query \"" + query + "\""; - LogMsg(OPENSEARCH_DEBUG, msg.c_str()); - - // Issue request - std::shared_ptr< Aws::Http::HttpResponse > response = - IssueRequest(sql_endpoint, Aws::Http::HttpMethod::HTTP_POST, - ctype, query); - - // Validate response - if (response == nullptr) { - m_error_message = - "Failed to receive response from query. " - "Received NULL response."; - SetErrorDetails("HTTP client error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - return list_of_column; - } - - // Convert body from Aws IOStream to string - std::unique_ptr< OpenSearchResult > result = std::make_unique< OpenSearchResult >(); - AwsHttpResponseToString(response, result->result_json); - - // If response was not valid, set error - if (response->GetResponseCode() != Aws::Http::HttpResponseCode::OK) { - m_error_type = ConnErrorType::CONN_ERROR_QUERY_SYNTAX; - m_error_message = - "Http response code was not OK. Code received: " - + std::to_string(static_cast< long >(response->GetResponseCode())) - + "."; - if (response->HasClientError()) - m_error_message += - " Client error: '" + response->GetClientErrorMessage() + "'."; - if (!result->result_json.empty()) { - m_error_message += - " Response error: '" + result->result_json + "'."; - } - SetErrorDetails("Connection error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - return list_of_column; - } - - GetJsonSchema(*result); - - rabbit::array schema_array = result->opensearch_result_doc["schema"]; - for (rabbit::array::iterator it = schema_array.begin(); - it != schema_array.end(); ++it) { - std::string column_name = it->at("name").as_string(); - list_of_column.push_back(column_name); - } - - return list_of_column; -} - -int OpenSearchCommunication::ExecDirect(const char* query, const char* fetch_size_) { - m_error_details.reset(); - if (!query) { - m_error_message = "Query is NULL"; - SetErrorDetails("Execution error", m_error_message, - ConnErrorType::CONN_ERROR_INVALID_NULL_PTR); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - return -1; - } else if (!m_http_client) { - m_error_message = "Unable to connect. Please try connecting again."; - SetErrorDetails("Execution error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - return -1; - } - - // Prepare statement - std::string statement(query); - std::string fetch_size(fetch_size_); - std::string msg = "Attempting to execute a query \"" + statement + "\""; - LogMsg(OPENSEARCH_DEBUG, msg.c_str()); - - // Issue request - std::shared_ptr< Aws::Http::HttpResponse > response = - IssueRequest(sql_endpoint, Aws::Http::HttpMethod::HTTP_POST, - ctype, statement, fetch_size); - - // Validate response - if (response == nullptr) { - m_error_message = - "Failed to receive response from query. " - "Received NULL response."; - SetErrorDetails("Execution error", m_error_message, - ConnErrorType::CONN_ERROR_QUERY_SYNTAX); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - return -1; - } - - // Convert body from Aws IOStream to string - std::unique_ptr< OpenSearchResult > result = std::make_unique< OpenSearchResult >(); - AwsHttpResponseToString(response, result->result_json); - - // If response was not valid, set error - if (response->GetResponseCode() != Aws::Http::HttpResponseCode::OK) { - m_error_type = ConnErrorType::CONN_ERROR_QUERY_SYNTAX; - m_error_message = - "Http response code was not OK. Code received: " - + std::to_string(static_cast< long >(response->GetResponseCode())) - + "."; - if (response->HasClientError()) - m_error_message += - " Client error: '" + response->GetClientErrorMessage() + "'."; - if (!result->result_json.empty()) { - m_error_details = ParseErrorResponse(*result.get()); - m_error_message += - " Response error: '" + result->result_json + "'."; - } - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - return -1; - } - - // Add to result queue and return - try { - ConstructOpenSearchResult(*result); - } catch (std::runtime_error& e) { - m_error_message = - "Received runtime exception: " + std::string(e.what()); - if (!result->result_json.empty()) { - m_error_message += " Result body: " + result->result_json; - } - SetErrorDetails("Execution error", m_error_message, - ConnErrorType::CONN_ERROR_QUERY_SYNTAX); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - return -1; - } - - const std::string cursor = result->cursor; - while (!m_result_queue.push(QUEUE_TIMEOUT, result.get())) { - if (ConnStatusType::CONNECTION_OK == m_status) { - return -1; - } - } - - result.release(); - - if (!cursor.empty()) { - // If the response has a cursor, this thread will retrieve more result - // pages asynchronously. - std::thread([&, cursor]() { SendCursorQueries(cursor); }).detach(); - } - - return 0; -} - -void OpenSearchCommunication::SendCursorQueries(std::string cursor) { - if (cursor.empty()) { - return; - } - m_is_retrieving = true; - - try { - while (!cursor.empty() && m_is_retrieving) { - std::shared_ptr< Aws::Http::HttpResponse > response = IssueRequest( - sql_endpoint, Aws::Http::HttpMethod::HTTP_POST, - ctype, "", "", cursor); - if (response == nullptr) { - m_error_message = - "Failed to receive response from cursor. " - "Received NULL response."; - SetErrorDetails("Cursor error", m_error_message, - ConnErrorType::CONN_ERROR_QUERY_SYNTAX); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - return; - } - - std::unique_ptr< OpenSearchResult > result = std::make_unique< OpenSearchResult >(); - AwsHttpResponseToString(response, result->result_json); - PrepareCursorResult(*result); - - if (result->opensearch_result_doc.has("cursor")) { - cursor = result->opensearch_result_doc["cursor"].as_string(); - result->cursor = result->opensearch_result_doc["cursor"].as_string(); - } else { - SendCloseCursorRequest(cursor); - cursor.clear(); - } - - while (m_is_retrieving - && !m_result_queue.push(QUEUE_TIMEOUT, result.get())) { - } - - // Don't release when attempting to push to the queue as it may take - // multiple tries. - result.release(); - } - } catch (std::runtime_error& e) { - m_error_message = - "Received runtime exception: " + std::string(e.what()); - SetErrorDetails("Cursor error", m_error_message, - ConnErrorType::CONN_ERROR_QUERY_SYNTAX); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - } - - if (!m_is_retrieving) { - m_result_queue.clear(); - } else { - m_is_retrieving = false; - } -} - -void OpenSearchCommunication::SendCloseCursorRequest(const std::string& cursor) { - std::shared_ptr< Aws::Http::HttpResponse > response = - IssueRequest(sql_endpoint + "/close", - Aws::Http::HttpMethod::HTTP_POST, ctype, "", "", cursor); - if (response == nullptr) { - m_error_message = - "Failed to receive response from cursor close request. " - "Received NULL response."; - SetErrorDetails("Cursor error", m_error_message, - ConnErrorType::CONN_ERROR_QUERY_SYNTAX); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - } -} - -void OpenSearchCommunication::StopResultRetrieval() { - m_is_retrieving = false; - m_result_queue.clear(); -} - -void OpenSearchCommunication::ConstructOpenSearchResult(OpenSearchResult& result) { - GetJsonSchema(result); - rabbit::array schema_array = result.opensearch_result_doc["schema"]; - for (rabbit::array::iterator it = schema_array.begin(); - it != schema_array.end(); ++it) { - std::string column_name = it->at("name").as_string(); - - ColumnInfo col_info; - col_info.field_name = column_name; - col_info.type_oid = KEYWORD_TYPE_OID; - col_info.type_size = KEYWORD_TYPE_SIZE; - col_info.display_size = KEYWORD_DISPLAY_SIZE; - col_info.length_of_str = KEYWORD_TYPE_SIZE; - col_info.relation_id = 0; - col_info.attribute_number = 0; - - result.column_info.push_back(col_info); - } - if (result.opensearch_result_doc.has("cursor")) { - result.cursor = result.opensearch_result_doc["cursor"].as_string(); - } - result.command_type = "SELECT"; - result.num_fields = (uint16_t)schema_array.size(); -} - -inline void OpenSearchCommunication::LogMsg(OpenSearchLogLevel level, const char* msg) { -#if WIN32 -#pragma warning(push) -#pragma warning(disable : 4551) -#endif // WIN32 - // cppcheck outputs an erroneous missing argument error which breaks build. - // Disable for this function call - MYLOG(level, "%s\n", msg); -#if WIN32 -#pragma warning(pop) -#endif // WIN32 -} - -OpenSearchResult* OpenSearchCommunication::PopResult() { - OpenSearchResult* result = NULL; - while (!m_result_queue.pop(QUEUE_TIMEOUT, result) && m_is_retrieving) { - } - - return result; -} - -// TODO #36 - Send query to database to get encoding -std::string OpenSearchCommunication::GetClientEncoding() { - return m_client_encoding; -} - -// TODO #36 - Send query to database to set encoding -bool OpenSearchCommunication::SetClientEncoding(std::string& encoding) { - if (std::find(m_supported_client_encodings.begin(), - m_supported_client_encodings.end(), encoding) - != m_supported_client_encodings.end()) { - m_client_encoding = encoding; - return true; - } - LogMsg(OPENSEARCH_ERROR, - std::string("Failed to find encoding " + encoding).c_str()); - return false; -} - -std::string OpenSearchCommunication::GetServerVersion() { - if (!m_http_client) { - InitializeConnection(); - } - - // Issue request - std::shared_ptr< Aws::Http::HttpResponse > response = - IssueRequest("", Aws::Http::HttpMethod::HTTP_GET, "", "", ""); - if (response == nullptr) { - m_error_message = - "Failed to receive response from server version query. " - "Received NULL response."; - SetErrorDetails("Connection error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - return ""; - } - - // Parse server version - if (response->GetResponseCode() == Aws::Http::HttpResponseCode::OK) { - try { - AwsHttpResponseToString(response, m_response_str); - rabbit::document doc; - doc.parse(m_response_str); - if (doc.has("version") && doc["version"].has("number")) { - return doc["version"]["number"].as_string(); - } - - } catch (const rabbit::type_mismatch& e) { - m_error_message = "Error parsing main endpoint response: " - + std::string(e.what()); - SetErrorDetails("Connection error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - } catch (const rabbit::parse_error& e) { - m_error_message = "Error parsing main endpoint response: " - + std::string(e.what()); - SetErrorDetails("Connection error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - } catch (const std::exception& e) { - m_error_message = "Error parsing main endpoint response: " - + std::string(e.what()); - SetErrorDetails("Connection error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - } catch (...) { - LogMsg(OPENSEARCH_ERROR, - "Unknown exception thrown when parsing main endpoint " - "response."); - } - } - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - return ""; -} - -/** - * @brief Queries supplied URL to validate Server Distribution. Maintains - * backwards compatibility with opendistro distribution. - * - * @return std::string : Server distribution name, returns "" on error - */ -std::string OpenSearchCommunication::GetServerDistribution() { - if (!m_http_client) { - InitializeConnection(); - } - - std::shared_ptr< Aws::Http::HttpResponse > response = - IssueRequest("", Aws::Http::HttpMethod::HTTP_GET, "", "", ""); - if (response == nullptr || response->GetResponseCode() == Aws::Http::HttpResponseCode::REQUEST_NOT_MADE) { - m_error_message = - "Failed to receive response from server version query. " - "Received no response from url: " - + (m_rt_opts.conn.server + (m_rt_opts.conn.port.empty() ? - "" : ":" + m_rt_opts.conn.port)); - SetErrorDetails("Connection error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - m_error_message_to_user = m_error_message; - return ""; - } - - // Parse server version distribution - if (response->GetResponseCode() == Aws::Http::HttpResponseCode::OK) { - try { - AwsHttpResponseToString(response, m_response_str); - rabbit::document doc; - doc.parse(m_response_str); - if (doc.has("version") && doc["version"].has("distribution")) { - return doc["version"]["distribution"].as_string(); - } - } catch (const rabbit::type_mismatch& e) { - m_error_message = "Error parsing main endpoint response: " - + std::string(e.what()); - SetErrorDetails("Connection error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - } catch (const rabbit::parse_error& e) { - m_error_message = "Error parsing main endpoint response: " - + std::string(e.what()); - SetErrorDetails("Connection error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - } catch (const std::exception& e) { - m_error_message = "Error parsing main endpoint response: " - + std::string(e.what()); - SetErrorDetails("Connection error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - } catch (...) { - LogMsg(OPENSEARCH_ERROR, - "Unknown exception thrown when parsing main endpoint " - "response."); - } - } - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - return ""; -} - -std::string OpenSearchCommunication::GetClusterName() { - if (!m_http_client) { - InitializeConnection(); - } - - // Issue request - std::shared_ptr< Aws::Http::HttpResponse > response = - IssueRequest("", Aws::Http::HttpMethod::HTTP_GET, "", "", ""); - if (response == nullptr) { - m_error_message = - "Failed to receive response from cluster name query. " - "Received NULL response."; - SetErrorDetails("Connection error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - return ""; - } - - // Parse cluster name - if (response->GetResponseCode() == Aws::Http::HttpResponseCode::OK) { - try { - AwsHttpResponseToString(response, m_response_str); - rabbit::document doc; - doc.parse(m_response_str); - if (doc.has("cluster_name")) { - return doc["cluster_name"].as_string(); - } - - } catch (const rabbit::type_mismatch& e) { - m_error_message = "Error parsing main endpoint response: " - + std::string(e.what()); - SetErrorDetails("Connection error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - } catch (const rabbit::parse_error& e) { - m_error_message = "Error parsing main endpoint response: " - + std::string(e.what()); - SetErrorDetails("Connection error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - } catch (const std::exception& e) { - m_error_message = "Error parsing main endpoint response: " - + std::string(e.what()); - SetErrorDetails("Connection error", m_error_message, - ConnErrorType::CONN_ERROR_COMM_LINK_FAILURE); - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - } catch (...) { - LogMsg(OPENSEARCH_ERROR, - "Unknown exception thrown when parsing main endpoint " - "response."); - } - } - LogMsg(OPENSEARCH_ERROR, m_error_message.c_str()); - return ""; -} - -/** - * @brief Sets URL endpoint for SQL plugin. On failure to - * determine appropriate endpoint, value is set to SQL_ENDPOINT_ERROR_STR - * - */ -void OpenSearchCommunication::SetSqlEndpoint() { - std::string distribution = GetServerDistribution(); - if (distribution.empty()) { - sql_endpoint = SQL_ENDPOINT_ERROR_STR; - } else if (distribution.compare("opensearch") == 0) { - sql_endpoint = "/_plugins/_sql"; - } else { - sql_endpoint = "/_opendistro/_sql"; - } -} diff --git a/sql-odbc/src/sqlodbc/opensearch_communication.h b/sql-odbc/src/sqlodbc/opensearch_communication.h deleted file mode 100644 index b37ccc3535..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_communication.h +++ /dev/null @@ -1,102 +0,0 @@ -#ifndef OPENSEARCH_COMMUNICATION -#define OPENSEARCH_COMMUNICATION - -// clang-format off -#include -#include -#include -#include -#include "opensearch_types.h" -#include "opensearch_result_queue.h" - -//Keep rabbit at top otherwise it gives build error because of some variable names like max, min -#ifdef __APPLE__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunused-parameter" -#endif // __APPLE__ -#include "rabbit.hpp" -#ifdef __APPLE__ -#pragma clang diagnostic pop -#endif // __APPLE__ -#include -#include -#include -#include -#include -#include -#include -#include -// clang-format on - -class OpenSearchCommunication { - public: - OpenSearchCommunication(); - ~OpenSearchCommunication(); - - // Create function for factory - std::string GetErrorMessage(); - ConnErrorType GetErrorType(); - bool ConnectionOptions(runtime_options& rt_opts, bool use_defaults, - int expand_dbname, unsigned int option_count); - bool ConnectionOptions2(); - bool ConnectDBStart(); - ConnStatusType GetConnectionStatus(); - void DropDBConnection(); - void LogMsg(OpenSearchLogLevel level, const char* msg); - int ExecDirect(const char* query, const char* fetch_size_); - void SendCursorQueries(std::string cursor); - OpenSearchResult* PopResult(); - std::string GetClientEncoding(); - bool SetClientEncoding(std::string& encoding); - static bool IsSQLPluginEnabled(std::shared_ptr< ErrorDetails > error_details); - bool CheckSQLPluginAvailability(); - std::string GetServerVersion(); - std::string GetServerDistribution(); - std::string GetClusterName(); - std::shared_ptr< Aws::Http::HttpResponse > IssueRequest( - const std::string& endpoint, const Aws::Http::HttpMethod request_type, - const std::string& content_type, const std::string& query, - const std::string& fetch_size = "", const std::string& cursor = ""); - void AwsHttpResponseToString( - std::shared_ptr< Aws::Http::HttpResponse > response, - std::string& output); - void SendCloseCursorRequest(const std::string& cursor); - void StopResultRetrieval(); - std::vector< std::string > GetColumnsWithSelectQuery( - const std::string table_name); - void SetSqlEndpoint(); - - // the endpoint is set according to distribution (ES/OpenSearch) - std::string sql_endpoint; - - private: - void InitializeConnection(); - bool CheckConnectionOptions(); - bool EstablishConnection(); - void ConstructOpenSearchResult(OpenSearchResult& result); - void GetJsonSchema(OpenSearchResult& opensearch_result); - void PrepareCursorResult(OpenSearchResult& opensearch_result); - std::shared_ptr< ErrorDetails > ParseErrorResponse( - OpenSearchResult& opensearch_result); - void SetErrorDetails(std::string reason, std::string message, - ConnErrorType error_type); - void SetErrorDetails(ErrorDetails details); - - // TODO #35 - Go through and add error messages on exit conditions - std::string m_error_message; - const std::vector< std::string > m_supported_client_encodings = {"UTF8"}; - - ConnStatusType m_status; - ConnErrorType m_error_type; - std::shared_ptr< ErrorDetails > m_error_details; - bool m_valid_connection_options; - bool m_is_retrieving; - OpenSearchResultQueue m_result_queue; - runtime_options m_rt_opts; - std::string m_client_encoding; - std::string m_response_str; - std::shared_ptr< Aws::Http::HttpClient > m_http_client; - std::string m_error_message_to_user; -}; - -#endif diff --git a/sql-odbc/src/sqlodbc/opensearch_connection.cpp b/sql-odbc/src/sqlodbc/opensearch_connection.cpp deleted file mode 100644 index de9bb5038a..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_connection.cpp +++ /dev/null @@ -1,223 +0,0 @@ -/* TryEnterCriticalSection needs the following #define */ -#ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x0400 -#endif /* _WIN32_WINNT */ - -#include "opensearch_connection.h" - -#include -#include -#include - -#include "misc.h" - -/* for htonl */ -#ifdef WIN32 -#include -#else -#include -#endif - -#include -#include -#include - -#include "dlg_specific.h" -#include "environ.h" -#include "loadlib.h" -#include "multibyte.h" -#include "opensearch_apifunc.h" -#include "opensearch_helper.h" -#include "qresult.h" -#include "statement.h" - -#define PROTOCOL3_OPTS_MAX 30 -#define ERROR_BUFF_SIZE 200 -#define OPTION_COUNT 4 -#if OPTION_COUNT > PROTOCOL3_OPTS_MAX -#error("Option count (OPTION_COUNT) is greater than max option count allow (PROTOCOL3_OPTS_MAX).") -#endif - -void CC_determine_locale_encoding(ConnectionClass *self); - -char CC_connect(ConnectionClass *self) { - if (self == NULL) - return 0; - - // Attempt to connect to OpenSearch - int conn_code = LIBOPENSEARCH_connect(self); - if (conn_code <= 0) - return static_cast< char >(conn_code); - - // Set encodings - CC_determine_locale_encoding(self); -#ifdef UNICODE_SUPPORT - if (CC_is_in_unicode_driver(self)) { - if (!SQL_SUCCEEDED(CC_send_client_encoding(self, "UTF8"))) { - return 0; - } - } else -#endif - { - if (!SQL_SUCCEEDED( - CC_send_client_encoding(self, self->locale_encoding))) { - return 0; - } - } - - // Set cursor parameters based on connection info - self->status = CONN_CONNECTED; - if ((CC_is_in_unicode_driver(self)) && (CC_is_in_ansi_app(self))) - self->unicode |= CONN_DISALLOW_WCHAR; - - // 1 is SQL_SUCCESS and 2 is SQL_SCCUESS_WITH_INFO - return 1; -} - -/** - * @brief Prepends the appropriate protocol to the user supplied server url - * when necessary. With no protocol speciefied, the use_ssl flag determines - * returned value. - * - * @param self : Supplied connection input data - * @return std::string : Valid server URL with prepended protocol - */ -std::string generateValidServerUrl(ConnectionClass *self) { - std::string valid_server_url = ""; - std::string_view server_url = self->connInfo.server; - std::string_view http_prefix = "http://"; - std::string_view https_prefix = "https://"; - if(server_url.empty()) { - return valid_server_url; - } - - bool http_prefix_prepended = (server_url.size() > http_prefix.size() && (server_url.substr(0, http_prefix.size()) == http_prefix)); - bool https_prefix_prepended = (server_url.size() > https_prefix.size() && (server_url.substr(0, https_prefix.size()) == https_prefix)); - if (!http_prefix_prepended && !https_prefix_prepended) { - valid_server_url = self->connInfo.use_ssl ? - std::string(https_prefix) + std::string(server_url) : - std::string(http_prefix) + std::string(server_url); - } else { - valid_server_url = server_url; - } - return valid_server_url; -} - -int LIBOPENSEARCH_connect(ConnectionClass *self) { - if (self == NULL) - return 0; - - // Setup options - runtime_options rt_opts; - - // Connection - rt_opts.conn.server.assign(generateValidServerUrl(self)); - if(rt_opts.conn.server.empty()) { - return 0; - } - rt_opts.conn.port.assign(self->connInfo.port); - rt_opts.conn.timeout.assign(self->connInfo.response_timeout); - - // Authentication - rt_opts.auth.auth_type.assign(self->connInfo.authtype); - rt_opts.auth.username.assign(self->connInfo.username); - rt_opts.auth.password.assign(SAFE_NAME(self->connInfo.password)); - rt_opts.auth.region.assign(self->connInfo.region); - - // Encryption - rt_opts.crypt.verify_server = (self->connInfo.verify_server == 1); - rt_opts.crypt.use_ssl = (self->connInfo.use_ssl == 1); - - void *opensearchconn = OpenSearchConnectDBParams(rt_opts, FALSE, OPTION_COUNT); - if (opensearchconn == NULL) { - std::string err = GetErrorMsg(opensearchconn); - CC_set_error(self, CONN_OPENDB_ERROR, - (err.empty()) ? "OpenSearchConnectDBParams error" : err.c_str(), - "LIBOPENSEARCH_connect"); - return 0; - } - - // Check connection status - if (OpenSearchStatus(opensearchconn) != CONNECTION_OK) { - std::string msg = GetErrorMsg(opensearchconn); - char error_message_out[ERROR_BUFF_SIZE] = ""; - if (!msg.empty()) - SPRINTF_FIXED(error_message_out, "Connection error: %s", - msg.c_str()); - else - STRCPY_FIXED(error_message_out, - "Connection error: No message available."); - CC_set_error(self, CONN_OPENDB_ERROR, error_message_out, - "LIBOPENSEARCH_connect"); - OpenSearchDisconnect(opensearchconn); - return 0; - } - - // Set server version - std::string server_version = GetServerVersion(opensearchconn); - STRCPY_FIXED(self->opensearch_version, server_version.c_str()); - - std::string cluster_name = GetClusterName(opensearchconn); - STRCPY_FIXED(self->cluster_name, cluster_name.c_str()); - - self->opensearchconn = (void *)opensearchconn; - return 1; -} - -// TODO #36 - When we fix encoding, we should look into returning a code here. -// This is called in connection.c and the return code isn't checked -void CC_set_locale_encoding(ConnectionClass *self, const char *encoding) { - if (self == NULL) - return; - - // Set encoding - char *prev_encoding = self->locale_encoding; - self->locale_encoding = (encoding == NULL) ? NULL : strdup(encoding); - if (prev_encoding) - free(prev_encoding); -} - -// TODO #36 - Add return code - see above function comment -void CC_determine_locale_encoding(ConnectionClass *self) { - // Don't update if it's already set - if ((self == NULL) || (self->locale_encoding != NULL)) - return; - - // Get current db encoding and derive the locale encoding - // TODO #34 - Investigate locale - CC_set_locale_encoding(self, "SQL_ASCII"); -} - -int CC_send_client_encoding(ConnectionClass *self, const char *encoding) { - if ((self == NULL) || (encoding == NULL)) - return SQL_ERROR; - - // Update client encoding - std::string des_db_encoding(encoding); - std::string cur_db_encoding = OpenSearchGetClientEncoding(self->opensearchconn); - if (des_db_encoding != cur_db_encoding) { - if (!OpenSearchSetClientEncoding(self->opensearchconn, des_db_encoding)) { - return SQL_ERROR; - } - } - - // Update connection class to reflect updated client encoding - char *prev_encoding = self->original_client_encoding; - self->original_client_encoding = strdup(des_db_encoding.c_str()); - self->ccsc = static_cast< short >(opensearch_CS_code(des_db_encoding.c_str())); - self->mb_maxbyte_per_char = static_cast< short >(opensearch_mb_maxlen(self->ccsc)); - if (prev_encoding != NULL) - free(prev_encoding); - - return SQL_SUCCESS; -} - -void CC_initialize_opensearch_version(ConnectionClass *self) { - STRCPY_FIXED(self->opensearch_version, "7.4"); - self->opensearch_version_major = 7; - self->opensearch_version_minor = 4; -} - -void LIBOPENSEARCH_disconnect(void *conn) { - OpenSearchDisconnect(conn); -} diff --git a/sql-odbc/src/sqlodbc/opensearch_connection.h b/sql-odbc/src/sqlodbc/opensearch_connection.h deleted file mode 100644 index bc4a699c97..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_connection.h +++ /dev/null @@ -1,456 +0,0 @@ -#ifndef __OPENSEARCHCONNECTION_H__ -#define __OPENSEARCHCONNECTION_H__ - -#include -#include -#include - -#include "descriptor.h" -#include "opensearch_helper.h" -#include "opensearch_odbc.h" -#include "opensearch_utility.h" - -#ifdef __cplusplus -extern "C" { -#endif -typedef enum { - CONN_NOT_CONNECTED, /* Connection has not been established */ - CONN_CONNECTED, /* Connection is up and has been established */ - CONN_DOWN, /* Connection is broken */ - CONN_EXECUTING /* the connection is currently executing a - * statement */ -} CONN_Status; - -/* These errors have general sql error state */ -#define CONNECTION_SERVER_NOT_REACHED 101 -#define CONNECTION_MSG_TOO_LONG 103 -#define CONNECTION_COULD_NOT_SEND 104 -#define CONNECTION_NO_SUCH_DATABASE 105 -#define CONNECTION_BACKEND_CRAZY 106 -#define CONNECTION_NO_RESPONSE 107 -#define CONNECTION_SERVER_REPORTED_SEVERITY_FATAL 108 -#define CONNECTION_COULD_NOT_RECEIVE 109 -#define CONNECTION_SERVER_REPORTED_SEVERITY_ERROR 110 -#define CONNECTION_NEED_PASSWORD 112 -#define CONNECTION_COMMUNICATION_ERROR 113 - -#define CONN_ERROR_IGNORED (-3) -#define CONN_TRUNCATED (-2) -#define CONN_OPTION_VALUE_CHANGED (-1) -/* These errors correspond to specific SQL states */ -#define CONN_INIREAD_ERROR 201 -#define CONN_OPENDB_ERROR 202 -#define CONN_STMT_ALLOC_ERROR 203 -#define CONN_IN_USE 204 -#define CONN_UNSUPPORTED_OPTION 205 -/* Used by SetConnectoption to indicate unsupported options */ -#define CONN_INVALID_ARGUMENT_NO 206 -/* SetConnectOption: corresponds to ODBC--"S1009" */ -#define CONN_TRANSACT_IN_PROGRES 207 -#define CONN_NO_MEMORY_ERROR 208 -#define CONN_NOT_IMPLEMENTED_ERROR 209 -#define CONN_INVALID_AUTHENTICATION 210 -#define CONN_AUTH_TYPE_UNSUPPORTED 211 -#define CONN_UNABLE_TO_LOAD_DLL 212 -#define CONN_ILLEGAL_TRANSACT_STATE 213 -#define CONN_VALUE_OUT_OF_RANGE 214 - -#define CONN_OPTION_NOT_FOR_THE_DRIVER 216 -#define CONN_EXEC_ERROR 217 - -/* Conn_status defines */ -#define CONN_IN_AUTOCOMMIT 1L -#define CONN_IN_TRANSACTION (1L << 1) -#define CONN_IN_MANUAL_TRANSACTION (1L << 2) -#define CONN_IN_ERROR_BEFORE_IDLE (1L << 3) - -/* not connected yet || already disconnected */ -#define CC_not_connected(x) \ - (!(x) || CONN_DOWN == (x)->status || CONN_NOT_CONNECTED == (x)->status) - -/* AutoCommit functions */ -#define CC_is_in_autocommit(x) (x->transact_status & CONN_IN_AUTOCOMMIT) -#define CC_does_autocommit(x) \ - (CONN_IN_AUTOCOMMIT \ - == ((x)->transact_status \ - & (CONN_IN_AUTOCOMMIT | CONN_IN_MANUAL_TRANSACTION))) -#define CC_loves_visible_trans(x) \ - ((0 == ((x)->transact_status & CONN_IN_AUTOCOMMIT)) \ - || (0 != ((x)->transact_status & CONN_IN_MANUAL_TRANSACTION))) - -/* Transaction in/not functions */ -#define CC_set_in_trans(x) (x->transact_status |= CONN_IN_TRANSACTION) -#define CC_set_no_trans(x) \ - (x->transact_status &= ~(CONN_IN_TRANSACTION | CONN_IN_ERROR_BEFORE_IDLE)) -#define CC_is_in_trans(x) (0 != (x->transact_status & CONN_IN_TRANSACTION)) - -/* Manual transaction in/not functions */ -#define CC_set_in_manual_trans(x) \ - (x->transact_status |= CONN_IN_MANUAL_TRANSACTION) -#define CC_set_no_manual_trans(x) \ - (x->transact_status &= ~CONN_IN_MANUAL_TRANSACTION) -#define CC_is_in_manual_trans(x) \ - (0 != (x->transact_status & CONN_IN_MANUAL_TRANSACTION)) - -/* Error waiting for ROLLBACK */ -#define CC_set_in_error_trans(x) \ - (x->transact_status |= CONN_IN_ERROR_BEFORE_IDLE) -#define CC_set_no_error_trans(x) \ - (x->transact_status &= ~CONN_IN_ERROR_BEFORE_IDLE) -#define CC_is_in_error_trans(x) (x->transact_status & CONN_IN_ERROR_BEFORE_IDLE) - -#define CC_get_errornumber(x) (x->__error_number) -#define CC_get_errormsg(x) (x->__error_message) -#define CC_set_errornumber(x, n) (x->__error_number = n) - -/* Unicode handling */ -#define CONN_UNICODE_DRIVER (1L) -#define CONN_ANSI_APP (1L << 1) -#define CONN_DISALLOW_WCHAR (1L << 2) -#define CC_set_in_unicode_driver(x) (x->unicode |= CONN_UNICODE_DRIVER) -#define CC_set_in_ansi_app(x) (x->unicode |= CONN_ANSI_APP) -#define CC_is_in_unicode_driver(x) (0 != (x->unicode & CONN_UNICODE_DRIVER)) -#define CC_is_in_ansi_app(x) (0 != (x->unicode & CONN_ANSI_APP)) -#define CC_is_in_global_trans(x) (NULL != (x)->asdum) -#define ALLOW_WCHAR(x) \ - (0 != (x->unicode & CONN_UNICODE_DRIVER) \ - && 0 == (x->unicode & CONN_DISALLOW_WCHAR)) - -#define CC_MALLOC_return_with_error(t, tp, s, x, m, ret) \ - do { \ - if (t = malloc(s), NULL == t) { \ - CC_set_error(x, CONN_NO_MEMORY_ERROR, m, ""); \ - return ret; \ - } \ - } while (0) -#define CC_REALLOC_return_with_error(t, tp, s, x, m, ret) \ - do { \ - tp *tmp; \ - if (tmp = (tp *)realloc(t, s), NULL == tmp) { \ - CC_set_error(x, CONN_NO_MEMORY_ERROR, m, ""); \ - return ret; \ - } \ - t = tmp; \ - } while (0) - -/* For Multi-thread */ -#define INIT_CONN_CS(x) XPlatformInitializeCriticalSection(&((x)->cs)) -#define INIT_CONNLOCK(x) XPlatformInitializeCriticalSection(&((x)->slock)) -#define ENTER_CONN_CS(x) XPlatformEnterCriticalSection(((x)->cs)) -#define CONNLOCK_ACQUIRE(x) XPlatformEnterCriticalSection(((x)->slock)) -#define LEAVE_CONN_CS(x) XPlatformLeaveCriticalSection(((x)->cs)) -#define CONNLOCK_RELEASE(x) XPlatformLeaveCriticalSection(((x)->slock)) -#define DELETE_CONN_CS(x) XPlatformDeleteCriticalSection(&((x)->cs)) -#define DELETE_CONNLOCK(x) XPlatformDeleteCriticalSection(&((x)->slock)) - -#define ENTER_INNER_CONN_CS(conn, entered) \ - do { \ - ENTER_CONN_CS(conn); \ - entered++; \ - } while (0) - -#define LEAVE_INNER_CONN_CS(entered, conn) \ - do { \ - if (entered > 0) { \ - LEAVE_CONN_CS(conn); \ - entered--; \ - } \ - } while (0) - -#define CLEANUP_FUNC_CONN_CS(entered, conn) \ - do { \ - while (entered > 0) { \ - LEAVE_CONN_CS(conn); \ - entered--; \ - } \ - } while (0) - -/* - * Macros to compare the server's version with a specified version - * 1st parameter: pointer to a ConnectionClass object - * 2nd parameter: major version number - * 3rd parameter: minor version number - */ -#define SERVER_VERSION_GT(conn, major, minor) \ - ((conn)->opensearch_version_major > major \ - || ((conn)->opensearch_version_major == major \ - && (conn)->opensearch_version_minor > minor)) -#define SERVER_VERSION_GE(conn, major, minor) \ - ((conn)->opensearch_version_major > major \ - || ((conn)->opensearch_version_major == major \ - && (conn)->opensearch_version_minor >= minor)) -#define SERVER_VERSION_EQ(conn, major, minor) \ - ((conn)->opensearch_version_major == major && (conn)->opensearch_version_minor == minor) -#define STRING_AFTER_DOT(string) (strchr(#string, '.') + 1) - -/* - * Simplified macros to compare the server's version with a - * specified version - * Note: Never pass a variable as the second parameter. - * It must be a decimal constant of the form %d.%d . - */ -#define OPENSEARCH_VERSION_GT(conn, ver) \ - (SERVER_VERSION_GT(conn, (int)ver, atoi(STRING_AFTER_DOT(ver)))) -#define OPENSEARCH_VERSION_GE(conn, ver) \ - (SERVER_VERSION_GE(conn, (int)ver, atoi(STRING_AFTER_DOT(ver)))) -#define OPENSEARCH_VERSION_EQ(conn, ver) \ - (SERVER_VERSION_EQ(conn, (int)ver, atoi(STRING_AFTER_DOT(ver)))) -#define OPENSEARCH_VERSION_LE(conn, ver) (!OPENSEARCH_VERSION_GT(conn, ver)) -#define OPENSEARCH_VERSION_LT(conn, ver) (!OPENSEARCH_VERSION_GE(conn, ver)) - -/* This is used to store cached table information in the connection */ -struct col_info { - Int2 refcnt; - QResultClass *result; - opensearchNAME schema_name; - opensearchNAME table_name; - OID table_oid; - int table_info; - time_t acc_time; -}; -enum { TBINFO_HASOIDS = 1L, TBINFO_HASSUBCLASS = (1L << 1) }; -#define free_col_info_contents(coli) \ - { \ - if (NULL != coli->result) \ - QR_Destructor(coli->result); \ - coli->result = NULL; \ - NULL_THE_NAME(coli->schema_name); \ - NULL_THE_NAME(coli->table_name); \ - coli->table_oid = 0; \ - coli->refcnt = 0; \ - coli->acc_time = 0; \ - } -#define col_info_initialize(coli) (memset(coli, 0, sizeof(COL_INFO))) - -/* Translation DLL entry points */ -#ifdef WIN32 -#define DLLHANDLE HINSTANCE -#else -#define WINAPI CALLBACK -#define DLLHANDLE void * -#define HINSTANCE void * -#endif - -typedef BOOL(WINAPI *DataSourceToDriverProc)(UDWORD, SWORD, PTR, SDWORD, PTR, - SDWORD, SDWORD *, UCHAR *, SWORD, - SWORD *); -typedef BOOL(WINAPI *DriverToDataSourceProc)(UDWORD, SWORD, PTR, SDWORD, PTR, - SDWORD, SDWORD *, UCHAR *, SWORD, - SWORD *); - -/******* The Connection handle ************/ -struct ConnectionClass_ { - HENV henv; /* environment this connection was - * created on */ - SQLUINTEGER login_timeout; - signed char autocommit_public; - StatementOptions stmtOptions; - ARDFields ardOptions; - APDFields apdOptions; - char *__error_message; - int __error_number; - char sqlstate[8]; - CONN_Status status; - ConnInfo connInfo; - StatementClass **stmts; - Int2 num_stmts; - Int2 ncursors; - void *opensearchconn; - Int4 lobj_type; - Int2 coli_allocated; - Int2 ntables; - COL_INFO **col_info; - long translation_option; - HINSTANCE translation_handle; - DataSourceToDriverProc DataSourceToDriver; - DriverToDataSourceProc DriverToDataSource; - char transact_status; /* Is a transaction is currently - * in progress */ - char cluster_name[MAX_INFO_STRING]; - char opensearch_version[MAX_INFO_STRING]; /* Version of OpenSearch driver - * we're connected to - - * DJP 25-1-2001 */ - Int2 opensearch_version_major; - Int2 opensearch_version_minor; - char ms_jet; - char unicode; - char result_uncommitted; - char lo_is_domain; - char current_schema_valid; /* is current_schema valid? TRUE when - * current_schema == NULL means it's - * really NULL, while FALSE means it's - * unknown */ - unsigned char on_commit_in_progress; - /* for per statement rollback */ - char internal_svp; /* is set? */ - char internal_op; /* operation being executed as to internal savepoint */ - unsigned char rbonerr; - unsigned char opt_in_progress; - unsigned char opt_previous; - - char *original_client_encoding; - char *locale_encoding; - char *server_encoding; - Int2 ccsc; - Int2 mb_maxbyte_per_char; - SQLUINTEGER isolation; /* isolation level initially unknown */ - SQLUINTEGER server_isolation; /* isolation at server initially unknown */ - char *current_schema; - StatementClass *unnamed_prepared_stmt; - Int2 max_identifier_length; - Int2 num_discardp; - char **discardp; - int num_descs; - SQLUINTEGER - default_isolation; /* server's default isolation initially unkown */ - DescriptorClass **descs; - opensearchNAME schemaIns; - opensearchNAME tableIns; - SQLULEN stmt_timeout_in_effect; - void *cs; - void *slock; -#ifdef _HANDLE_ENLIST_IN_DTC_ - UInt4 gTranInfo; - void *asdum; -#endif /* _HANDLE_ENLIST_IN_DTC_ */ -}; - -/* Accessor functions */ -#define CC_get_env(x) ((x)->henv) -#define CC_get_database(x) (x->connInfo.database) -#define CC_get_server(x) (x->connInfo.server) -#define CC_get_DSN(x) (x->connInfo.dsn) -#define CC_get_username(x) (x->connInfo.username) -#define CC_is_onlyread(x) (x->connInfo.onlyread[0] == '1') -#define CC_fake_mss(x) (/* 0 != (x)->ms_jet && */ 0 < (x)->connInfo.fake_mss) -#define CC_accessible_only(x) (0 < (x)->connInfo.accessible_only) -#define CC_default_is_c(x) \ - (CC_is_in_ansi_app(x) \ - || x->ms_jet /* not only */ || TRUE /* but for any other ? */) - -#ifdef _HANDLE_ENLIST_IN_DTC_ -enum { - DTC_IN_PROGRESS = 1L, - DTC_ENLISTED = (1L << 1), - DTC_REQUEST_EXECUTING = (1L << 2), - DTC_ISOLATED = (1L << 3), - DTC_PREPARE_REQUESTED = (1L << 4) -}; -#define CC_set_dtc_clear(x) ((x)->gTranInfo = 0) -#define CC_set_dtc_enlisted(x) \ - ((x)->gTranInfo |= (DTC_IN_PROGRESS | DTC_ENLISTED)) -#define CC_no_dtc_enlisted(x) ((x)->gTranInfo &= (~DTC_ENLISTED)) -#define CC_is_dtc_enlisted(x) (0 != ((x)->gTranInfo & DTC_ENLISTED)) -#define CC_set_dtc_executing(x) ((x)->gTranInfo |= DTC_REQUEST_EXECUTING) -#define CC_no_dtc_executing(x) ((x)->gTranInfo &= (~DTC_REQUEST_EXECUTING)) -#define CC_is_dtc_executing(x) (0 != ((x)->gTranInfo & DTC_REQUEST_EXECUTING)) -#define CC_set_dtc_prepareRequested(x) \ - ((x)->gTranInfo |= (DTC_PREPARE_REQUESTED)) -#define CC_no_dtc_prepareRequested(x) \ - ((x)->gTranInfo &= (~DTC_PREPARE_REQUESTED)) -#define CC_is_dtc_prepareRequested(x) \ - (0 != ((x)->gTranInfo & DTC_PREPARE_REQUESTED)) -#define CC_is_dtc_executing(x) (0 != ((x)->gTranInfo & DTC_REQUEST_EXECUTING)) -#define CC_set_dtc_isolated(x) ((x)->gTranInfo |= DTC_ISOLATED) -#define CC_is_idle_in_global_transaction(x) \ - (0 != ((x)->gTranInfo & DTC_PREPARE_REQUESTED) \ - || (x)->gTranInfo == DTC_IN_PROGRESS) -#endif /* _HANDLE_ENLIST_IN_DTC_ */ -/* statement callback */ -#define CC_start_stmt(a) ((a)->rbonerr = 0) -#define CC_start_tc_stmt(a) ((a)->rbonerr = (1L << 1)) -#define CC_is_tc_stmt(a) (((a)->rbonerr & (1L << 1)) != 0) -#define CC_start_rb_stmt(a) ((a)->rbonerr = (1L << 2)) -#define CC_is_rb_stmt(a) (((a)->rbonerr & (1L << 2)) != 0) -#define CC_set_accessed_db(a) ((a)->rbonerr |= (1L << 3)) -#define CC_accessed_db(a) (((a)->rbonerr & (1L << 3)) != 0) -#define CC_start_rbpoint(a) ((a)->rbonerr |= (1L << 4), (a)->internal_svp = 1) -#define CC_started_rbpoint(a) (((a)->rbonerr & (1L << 4)) != 0) - -/* prototypes */ -ConnectionClass *CC_Constructor(void); -char CC_Destructor(ConnectionClass *self); -RETCODE CC_cleanup(ConnectionClass *self, BOOL keepCommunication); -BOOL CC_set_autocommit(ConnectionClass *self, BOOL on); -char CC_add_statement(ConnectionClass *self, StatementClass *stmt); -char CC_remove_statement(ConnectionClass *self, StatementClass *stmt); -char CC_add_descriptor(ConnectionClass *self, DescriptorClass *desc); -void CC_set_error(ConnectionClass *self, int number, const char *message, - const char *func); -void CC_set_errormsg(ConnectionClass *self, const char *message); -int CC_get_error(ConnectionClass *self, int *number, char **message); -void CC_clear_error(ConnectionClass *self); -void CC_log_error(const char *func, const char *desc, - const ConnectionClass *self); - -int CC_get_max_idlen(ConnectionClass *self); -char CC_get_escape(const ConnectionClass *self); -char *identifierEscape(const SQLCHAR *src, SQLLEN srclen, - const ConnectionClass *conn, char *buf, size_t bufsize, - BOOL double_quote); -int findIdentifier(const UCHAR *str, int ccsc, const UCHAR **next_token); -int eatTableIdentifiers(const UCHAR *str, int ccsc, opensearchNAME *table, - opensearchNAME *schema); - -char CC_connect(ConnectionClass *self); -int LIBOPENSEARCH_connect(ConnectionClass *self); -void LIBOPENSEARCH_disconnect(void *conn); -int CC_send_client_encoding(ConnectionClass *self, const char *encoding); -void CC_set_locale_encoding(ConnectionClass *self, const char *encoding); -void CC_initialize_opensearch_version(ConnectionClass *self); - -const char *CurrCat(const ConnectionClass *self); -const char *CurrCatString(const ConnectionClass *self); -SQLUINTEGER CC_get_isolation(ConnectionClass *self); - -SQLCHAR *make_lstring_ifneeded(ConnectionClass *, const SQLCHAR *s, ssize_t len, - BOOL); - -#define TABLE_IS_VALID(tbname, tblen) \ - ((tbname) && (tblen > 0 || SQL_NTS == tblen)) - -/* CC_send_query options */ -enum { - IGNORE_ABORT_ON_CONN = 1L /* not set the error result even when */ - , - CREATE_KEYSET = (1L << 1) /* create keyset for updatable cursors */ - , - GO_INTO_TRANSACTION = (1L << 2) /* issue BEGIN in advance */ - , - ROLLBACK_ON_ERROR = (1L << 3) /* rollback the query when an error occurs */ - , - END_WITH_COMMIT = (1L << 4) /* the query ends with COMMIT command */ - , - READ_ONLY_QUERY = (1L << 5) /* the query is read-only */ -}; -/* CC_on_abort options */ -#define NO_TRANS 1L -#define CONN_DEAD (1L << 1) /* connection is no longer valid */ - -/* - * internal savepoint related - */ - -#define _RELEASE_INTERNAL_SAVEPOINT - -/* Internal rollback */ -enum { PER_STATEMENT_ROLLBACK = 1, PER_QUERY_ROLLBACK }; - -/* Commands generated */ -enum { INTERNAL_SAVEPOINT_OPERATION = 1, INTERNAL_ROLLBACK_OPERATION }; - -/* Operations in progress */ -enum { SAVEPOINT_IN_PROGRESS = 1, PREPEND_IN_PROGRESS }; -/* StatementSvp entry option */ -enum { SVPOPT_RDONLY = 1L, SVPOPT_REDUCE_ROUNDTRIP = (1L << 1) }; -#define INIT_SVPOPT (SVPOPT_RDONLY) -#define CC_svp_init(a) \ - ((a)->internal_svp = (a)->internal_op = 0, \ - (a)->opt_in_progress = (a)->opt_previous = INIT_SVPOPT) -#define CC_init_opt_in_progress(a) ((a)->opt_in_progress = INIT_SVPOPT) -#define CC_init_opt_previous(a) ((a)->opt_previous = INIT_SVPOPT) - -#ifdef __cplusplus -} -#endif -#endif /* __OPENSEARCHCONNECTION_H__ */ diff --git a/sql-odbc/src/sqlodbc/opensearch_driver_connect.cpp b/sql-odbc/src/sqlodbc/opensearch_driver_connect.cpp deleted file mode 100644 index 29e3f3c012..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_driver_connect.cpp +++ /dev/null @@ -1,246 +0,0 @@ -#include "opensearch_driver_connect.h" - -#include -#include - -#include "opensearch_odbc.h" -#include "misc.h" - -#ifndef WIN32 -#include -#include -#else -#include -#endif - -#include - -#ifdef WIN32 -#include - -#include "resource.h" -#endif -#include -#include - -#include "dlg_specific.h" -#include "drvconn.h" -#include "opensearch_apifunc.h" - -static RETCODE CheckDriverComplete(const SQLUSMALLINT driver_completion, - const HWND hwnd, ConnInfo *ci, - const int reqs) { - (void)(ci); - (void)(reqs); - if (hwnd == NULL) - return SQL_SUCCESS; - switch (driver_completion) { -#ifdef WIN32 - case SQL_DRIVER_COMPLETE_REQUIRED: - case SQL_DRIVER_COMPLETE: - if (!paramRequired(ci, reqs)) - break; - case SQL_DRIVER_PROMPT: { - const RETCODE dialog_result = dconn_DoDialog(hwnd, ci); - if (dialog_result != SQL_SUCCESS) - return dialog_result; - break; - } -#endif // WIN32 - default: - break; - } - return SQL_SUCCESS; -} - -static RETCODE GetRequirementsAndConnect(const SQLUSMALLINT driver_completion, - const HWND hwnd, ConnInfo *ci, - int &reqs, ConnectionClass *conn, - int &ret_val) { - const RETCODE res = CheckDriverComplete(driver_completion, hwnd, ci, reqs); - if (res != SQL_SUCCESS) - return res; - - // Password is not a required parameter unless authentication asks for it. - // Let the application ask over and over until a password is entered (the - // user can always hit Cancel to get out) - if (paramRequired(ci, reqs)) { - CC_set_error(conn, CONN_OPENDB_ERROR, "Please supply password", - "OPENSEARCHAPI_DriverConnect->GetRequirements"); - return SQL_ERROR; - } - ret_val = CC_connect(conn); - return SQL_SUCCESS; -} - -static RETCODE CreateOutputConnectionString(ssize_t &len, ConnectionClass *conn, - const ConnInfo *ci, - const SQLSMALLINT conn_str_out_len, - SQLCHAR *conn_str_out, - const int retval) { - // Create the output connection string - SQLSMALLINT len_str_out = conn_str_out_len; - if (conn->ms_jet && len_str_out > 255) - len_str_out = 255; - char conn_str[MAX_CONNECT_STRING]; - makeConnectString(conn_str, ci, len_str_out); - - // Set result and check connection string - RETCODE result = ((retval == 1) ? SQL_SUCCESS : SQL_SUCCESS_WITH_INFO); - len = strlen(conn_str); - if (conn_str_out) { - // Return the completed string to the caller. The correct method is to - // only construct the connect string if a dialog was put up, otherwise, - // it should just copy the connection input string to the output. - // However, it seems ok to just always construct an output string. - // There are possible bad side effects on working applications (Access) - // by implementing the correct behavior - strncpy((char *)conn_str_out, conn_str, conn_str_out_len); - if (len >= conn_str_out_len) { - for (int clen = conn_str_out_len - 1; - clen >= 0 && conn_str_out[clen] != ';'; clen--) - conn_str_out[clen] = '\0'; - result = SQL_SUCCESS_WITH_INFO; - CC_set_error(conn, CONN_TRUNCATED, - "Buffer is too small for output conn str.", - "CreateOutputConnectionString"); - } - } - return result; -} - -static std::string CheckRetVal(const int retval, const HWND hwnd, - const SQLUSMALLINT driver_completion, - const int reqs, const ConnInfo *ci) { - (void)(ci); - (void)(reqs); - (void)(hwnd); - if (retval > 0) - return ""; - // Error attempting to connect - else if (retval == 0) - return "Error from CC_Connect"; - // More info is required - else if (retval < 0) { - // Not allowed to prompt, but PW is required - Error - if (driver_completion == SQL_DRIVER_NOPROMPT) { - return "Need password but Driver_NoPrompt is set"; - } else { -#ifdef WIN32 - if (!(hwnd && paramRequired(ci, reqs))) - return "Unable to prompt for required parameter"; -#else - return "Driver prompt only supported on Windows"; -#endif - } - } - return ""; -} - -static SQLRETURN SetupConnString(const SQLCHAR *conn_str_in, - const SQLSMALLINT conn_str_in_len, - ConnInfo *ci, ConnectionClass *conn) { - CSTR func = "SetupConnString"; - - // make_string uses malloc, need to overwrite delete operator to use free - // for unique_ptr - struct free_delete { - void operator()(void *x) { - if (x != NULL) { - free(x); - x = NULL; - } - } - }; - - // Make connection string and get DSN - std::unique_ptr< char, free_delete > conn_str( - make_string(conn_str_in, conn_str_in_len, NULL, 0)); - - if (!dconn_get_DSN_or_Driver(conn_str.get(), ci)) { - CC_set_error(conn, CONN_OPENDB_ERROR, "Connection string parse error", - func); - return SQL_ERROR; - } - - //This will be used to restore the log output dir fetched from connection string - //Since getDSNinfo overrides all available connection attributes - std::string conn_string_log_dir(ci->drivers.output_dir); - - // If the ConnInfo in the hdbc is missing anything, this function will fill - // them in from the registry (assuming of course there is a DSN given -- if - // not, it does nothing!) - getDSNinfo(ci, NULL); - - // Parse the connect string and fill in conninfo - if (!dconn_get_connect_attributes(conn_str.get(), ci)) { - CC_set_error(conn, CONN_OPENDB_ERROR, "Connection string parse error", - func); - return SQL_ERROR; - } - logs_on_off(1, ci->drivers.loglevel, ci->drivers.loglevel); - - //Sets log output dir to path retrived from connection string - //If connection string doesn't have log path then takes value from DSN - //If connection string & DSN both doesn't include log path then takes default value - if (!conn_string_log_dir.empty()) { - setLogDir(conn_string_log_dir.c_str()); - conn_string_log_dir.clear(); - } else { - setLogDir(ci->drivers.output_dir); - } - InitializeLogging(); - return SQL_SUCCESS; -} - -RETCODE OPENSEARCHAPI_DriverConnect(HDBC hdbc, HWND hwnd, SQLCHAR *conn_str_in, - SQLSMALLINT conn_str_in_len, SQLCHAR *conn_str_out, - SQLSMALLINT conn_str_out_len, - SQLSMALLINT *pcb_conn_str_out, - SQLUSMALLINT driver_completion) { - CSTR func = "OPENSEARCHAPI_DriverConnect"; - ConnectionClass *conn = (ConnectionClass *)hdbc; - - if (!conn) { - CC_log_error(func, "ConnectionClass handle is NULL", NULL); - return SQL_INVALID_HANDLE; - } - ConnInfo *ci = &(conn->connInfo); - - // Setup connection string - { - const SQLRETURN return_code = - SetupConnString(conn_str_in, conn_str_in_len, ci, conn); - if (return_code != SQL_SUCCESS) - return return_code; - } - - // Initialize opensearch_version - CC_initialize_opensearch_version(conn); - - int reqs = 0; - int retval = 0; - do { - const SQLRETURN return_code = GetRequirementsAndConnect( - driver_completion, hwnd, ci, reqs, conn, retval); - if (return_code != SQL_SUCCESS) - return return_code; - - // Check for errors - const std::string error_msg = - CheckRetVal(retval, hwnd, driver_completion, reqs, ci); - - // If we have an error, log it and exit - if (error_msg != "") { - CC_log_error(func, error_msg.c_str(), conn); - return SQL_ERROR; - } - } while (retval <= 0); - - ssize_t len = 0; - const RETCODE result = CreateOutputConnectionString( - len, conn, ci, conn_str_out_len, conn_str_out, retval); - if (pcb_conn_str_out) - *pcb_conn_str_out = static_cast< SQLSMALLINT >(len); - return result; -} diff --git a/sql-odbc/src/sqlodbc/opensearch_driver_connect.h b/sql-odbc/src/sqlodbc/opensearch_driver_connect.h deleted file mode 100644 index f5683e057b..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_driver_connect.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef __OPENSEARCH_DRIVER_CONNECT_H__ -#define __OPENSEARCH_DRIVER_CONNECT_H__ -#include "opensearch_connection.h" - -// C Interface -#ifdef __cplusplus -extern "C" { -#endif -RETCODE OPENSEARCHAPI_DriverConnect(HDBC hdbc, HWND hwnd, SQLCHAR *conn_str_in, - SQLSMALLINT conn_str_in_len, SQLCHAR *conn_str_out, - SQLSMALLINT conn_str_out_len, - SQLSMALLINT *pcb_conn_str_out, - SQLUSMALLINT driver_completion); -#ifdef __cplusplus -} -#endif - -#endif /* __OPENSEARCH_DRIVER_CONNECT_H__ */ diff --git a/sql-odbc/src/sqlodbc/opensearch_helper.cpp b/sql-odbc/src/sqlodbc/opensearch_helper.cpp deleted file mode 100644 index 9b50aff6cc..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_helper.cpp +++ /dev/null @@ -1,217 +0,0 @@ -#include "opensearch_helper.h" - -#include -#include -#include - -#include "opensearch_communication.h" - -void* OpenSearchConnectDBParams(runtime_options& rt_opts, int expand_dbname, - unsigned int option_count) { - // Initialize Connection - OpenSearchCommunication* conn = static_cast< OpenSearchCommunication* >(InitializeOpenSearchConn()); - if (!conn) - return NULL; - - // Set user defined connection options - if (!conn->ConnectionOptions(rt_opts, true, expand_dbname, option_count)) - return conn; - - // Set user derived connection options - if (!conn->ConnectionOptions2()) - return conn; - - // Connect to DB - if (!conn->ConnectDBStart()) - return conn; - - // Technically this is always the result, so we could remove the above or - // make 1 large if statement, but I think this is more legible - return conn; -} - -ConnStatusType OpenSearchStatus(void* opensearch_conn) { - return opensearch_conn - ? static_cast< OpenSearchCommunication* >(opensearch_conn)->GetConnectionStatus() - : ConnStatusType::CONNECTION_BAD; -} - -std::string GetErrorMsg(void* opensearch_conn) { - return opensearch_conn - ? static_cast< OpenSearchCommunication* >(opensearch_conn)->GetErrorMessage() - : NULL; -} - -ConnErrorType GetErrorType(void* opensearch_conn) { - return opensearch_conn - ? static_cast< OpenSearchCommunication* >(opensearch_conn)->GetErrorType() - : ConnErrorType::CONN_ERROR_SUCCESS; -} - -std::string GetServerVersion(void* opensearch_conn) { - return opensearch_conn - ? static_cast< OpenSearchCommunication* >(opensearch_conn)->GetServerVersion() - : ""; -} - -std::string GetClusterName(void* opensearch_conn) { - return opensearch_conn - ? static_cast< OpenSearchCommunication* >(opensearch_conn)->GetClusterName() - : ""; -} - -void* InitializeOpenSearchConn() { - return new OpenSearchCommunication(); -} - -int OpenSearchExecDirect(void* opensearch_conn, const char* statement, const char* fetch_size) { - return (opensearch_conn && statement) - ? static_cast< OpenSearchCommunication* >(opensearch_conn)->ExecDirect( - statement, fetch_size) - : -1; -} - -void OpenSearchSendCursorQueries(void* opensearch_conn, const char* cursor) { - static_cast< OpenSearchCommunication* >(opensearch_conn)->SendCursorQueries(cursor); -} - -OpenSearchResult* OpenSearchGetResult(void* opensearch_conn) { - return opensearch_conn - ? static_cast< OpenSearchCommunication* >(opensearch_conn)->PopResult() - : NULL; -} - -std::string OpenSearchGetClientEncoding(void* opensearch_conn) { - return opensearch_conn - ? static_cast< OpenSearchCommunication* >(opensearch_conn)->GetClientEncoding() - : ""; -} - -bool OpenSearchSetClientEncoding(void* opensearch_conn, std::string& encoding) { - return opensearch_conn - ? static_cast< OpenSearchCommunication* >(opensearch_conn)->SetClientEncoding( - encoding) - : false; -} - -void OpenSearchDisconnect(void* opensearch_conn) { - delete static_cast< OpenSearchCommunication* >(opensearch_conn); -} - -void OpenSearchClearResult(OpenSearchResult* opensearch_result) { - delete opensearch_result; -} - -void OpenSearchStopRetrieval(void* opensearch_conn) { - static_cast< OpenSearchCommunication* >(opensearch_conn)->StopResultRetrieval(); -} - -std::vector< std::string > OpenSearchGetColumnsWithSelectQuery( - void* opensearch_conn, const std::string table_name) { - return static_cast< OpenSearchCommunication* >(opensearch_conn)->GetColumnsWithSelectQuery( - table_name); -} - -// This class provides a cross platform way of entering critical sections -class CriticalSectionHelper { - public: - // Don't need to initialize lock owner because default constructor sets it - // to thread id 0, which is invalid - CriticalSectionHelper() : m_lock_count(0) { - } - ~CriticalSectionHelper() { - } - - void EnterCritical() { - // Get current thread id, if it's the lock owner, increment lock count, - // otherwise lock and take ownership - std::thread::id current_thread = std::this_thread::get_id(); - if (m_lock_owner == current_thread) { - m_lock_count++; - } else { - m_lock.lock(); - m_lock_owner = current_thread; - m_lock_count = 1; - } - } - - void ExitCritical() { - // Get current thread id, if it's the owner, decerement and unlock if - // the lock count is 0. Otherwise, log critical warning because we - // should only allow the lock owner to unlock - std::thread::id current_thread = std::this_thread::get_id(); - if (m_lock_owner == current_thread) { - if (m_lock_count == 0) { -// This should never happen. Log critical warning -#ifdef WIN32 -#pragma warning(push) -#pragma warning(disable : 4551) // MYLOG complains 'function call missing - // argument list' on Windows, which is isn't -#endif - MYLOG(OPENSEARCH_ERROR, "%s\n", - "CRITICAL WARNING: ExitCritical section called when lock " - "count was already 0!"); -#ifdef WIN32 -#pragma warning(pop) -#endif - } else if (--m_lock_count == 0) { - // Reset lock owner to invalid thread id (0) - m_lock_owner = std::thread::id(); - m_lock.unlock(); - } - } else { -// This should never happen. Log critical warning -#ifdef WIN32 -#pragma warning(push) -#pragma warning(disable : 4551) // MYLOG complains 'function call missing - // argument list' on Windows, which is isn't -#endif - MYLOG(OPENSEARCH_ERROR, "%s\n", - "CRITICAL WARNING: ExitCritical section called by thread " - "that does not own the lock!"); -#ifdef WIN32 -#pragma warning(pop) -#endif - } - } - - private: - size_t m_lock_count; - std::atomic< std::thread::id > m_lock_owner; - std::mutex m_lock; -}; - -// Initialize pointer to point to our helper class -void XPlatformInitializeCriticalSection(void** critical_section_helper) { - if (critical_section_helper != NULL) { - try { - *critical_section_helper = new CriticalSectionHelper(); - } catch (...) { - *critical_section_helper = NULL; - } - } -} - -// Call enter critical section -void XPlatformEnterCriticalSection(void* critical_section_helper) { - if (critical_section_helper != NULL) { - static_cast< CriticalSectionHelper* >(critical_section_helper) - ->EnterCritical(); - } -} - -// Call exit critical section -void XPlatformLeaveCriticalSection(void* critical_section_helper) { - if (critical_section_helper != NULL) { - static_cast< CriticalSectionHelper* >(critical_section_helper) - ->ExitCritical(); - } -} - -// Delete our helper class -void XPlatformDeleteCriticalSection(void** critical_section_helper) { - if (critical_section_helper != NULL) { - delete static_cast< CriticalSectionHelper* >(*critical_section_helper); - *critical_section_helper = NULL; - } -} diff --git a/sql-odbc/src/sqlodbc/opensearch_helper.h b/sql-odbc/src/sqlodbc/opensearch_helper.h deleted file mode 100644 index 0433c0a7b8..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_helper.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef __OPENSEARCH_HELPER_H__ -#define __OPENSEARCH_HELPER_H__ - -#include "opensearch_types.h" - -#ifdef __cplusplus -// C++ interface -std::string OpenSearchGetClientEncoding(void* opensearch_conn); -bool OpenSearchSetClientEncoding(void* opensearch_conn, std::string& encoding); -OpenSearchResult* OpenSearchGetResult(void* opensearch_conn); -void OpenSearchClearResult(OpenSearchResult* opensearch_result); -void* OpenSearchConnectDBParams(runtime_options& rt_opts, int expand_dbname, - unsigned int option_count); -std::string GetServerVersion(void* opensearch_conn); -std::string GetClusterName(void* opensearch_conn); -std::string GetErrorMsg(void* opensearch_conn); -ConnErrorType GetErrorType(void* opensearch_conn); -std::vector< std::string > OpenSearchGetColumnsWithSelectQuery( - void* opensearch_conn, const std::string table_name); - -// C Interface -extern "C" { -#endif -void XPlatformInitializeCriticalSection(void** critical_section_helper); -void XPlatformEnterCriticalSection(void* critical_section_helper); -void XPlatformLeaveCriticalSection(void* critical_section_helper); -void XPlatformDeleteCriticalSection(void** critical_section_helper); -ConnStatusType OpenSearchStatus(void* opensearch_conn); -int OpenSearchExecDirect(void* opensearch_conn, const char* statement, const char* fetch_size); -void OpenSearchSendCursorQueries(void* opensearch_conn, const char* cursor); -void OpenSearchDisconnect(void* opensearch_conn); -void OpenSearchStopRetrieval(void* opensearch_conn); -#ifdef __cplusplus -} -#endif - -void* InitializeOpenSearchConn(); - -#endif // __OPENSEARCH_HELPER_H__ diff --git a/sql-odbc/src/sqlodbc/opensearch_info.cpp b/sql-odbc/src/sqlodbc/opensearch_info.cpp deleted file mode 100644 index ab3700eb1b..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_info.cpp +++ /dev/null @@ -1,1046 +0,0 @@ -#include "opensearch_info.h" - -#include -#include - -#include -#include -#include -#include -#include -#include - -// TODO #324 (SQL Plugin)- Update if OpenSearch extends support for multiple -// tables -#define DEFAULT_TYPE_STR \ - { 'k', 'e', 'y', 'w', 'o', 'r', 'd', '\0' } -#define DEFAULT_TYPE_INT (SQL_WVARCHAR) -#define EMPTY_VARCHAR \ - { '\0' } -#define OPENSEARCH_UNINITIALIZED (-2) -#define COLUMN_TEMPLATE_COUNT 18 -#define TABLE_TEMPLATE_COUNT 5 - -#define TABLE_CAT "TABLE_CAT" -#define TABLE_SCHEM "TABLE_SCHEM" -#define TABLE_NAME "TABLE_NAME" -#define COLUMN_NAME "COLUMN_NAME" -#define DATA_TYPE "DATA_TYPE" -#define TYPE_NAME "TYPE_NAME" -#define COLUMN_SIZE "COLUMN_SIZE" -#define BUFFER_LENGTH "BUFFER_LENGTH" -#define DECIMAL_DIGITS "DECIMAL_DIGITS" -#define NUM_PREC_RADIX "NUM_PREC_RADIX" -#define NULLABLE "NULLABLE" -#define REMARKS "REMARKS" -#define COLUMN_DEF "COLUMN_DEF" -#define SQL_DATA_TYPE "SQL_DATA_TYPE" -#define SQL_DATETIME_SUB "SQL_DATETIME_SUB" -#define CHAR_OCTET_LENGTH "CHAR_OCTET_LENGTH" -#define ORDINAL_POSITION "ORDINAL_POSITION" -#define IS_NULLABLE "IS_NULLABLE" -#define TABLE_QUALIFIER "TABLE_QUALIFIER" -#define TABLE_OWNER "TABLE_OWNER" -#define TABLE_TYPE "TABLE_TYPE" -#define PRECISION "PRECISION" -#define LITERAL_PREFIX "LITERAL_PREFIX" -#define LITERAL_SUFFIX "LITERAL_SUFFIX" -#define CREATE_PARAMS "CREATE_PARAMS" -#define CASE_SENSITIVE "CASE_SENSITIVE" -#define SEARCHABLE "SEARCHABLE" -#define UNSIGNED_ATTRIBUTE "UNSIGNED_ATTRIBUTE" -#define FIXED_PREC_SCALE "FIXED_PREC_SCALE" -#define AUTO_INCREMENT "AUTO_INCREMENT" -#define LOCAL_TYPE_NAME "LOCAL_TYPE_NAME" -#define MINIMUM_SCALE "MINIMUM_SCALE" -#define MAXIMUM_SCALE "MAXIMUM_SCALE" -#define INTERVAL_PRECISION "INTERVAL_PRECISION" - -const std::unordered_map< int, std::vector< int > > sql_opensearch_type_map = { - {SQL_BIT, {OPENSEARCH_TYPE_BOOL}}, - {SQL_TINYINT, {OPENSEARCH_TYPE_INT1}}, - {SQL_SMALLINT, {OPENSEARCH_TYPE_INT2}}, - {SQL_INTEGER, {OPENSEARCH_TYPE_INT4}}, - {SQL_BIGINT, {OPENSEARCH_TYPE_INT8}}, - {SQL_REAL, {OPENSEARCH_TYPE_HALF_FLOAT, OPENSEARCH_TYPE_FLOAT4}}, - {SQL_DOUBLE, {OPENSEARCH_TYPE_FLOAT8, OPENSEARCH_TYPE_SCALED_FLOAT}}, - {SQL_WVARCHAR, - {OPENSEARCH_TYPE_KEYWORD, OPENSEARCH_TYPE_TEXT, OPENSEARCH_TYPE_NESTED, - OPENSEARCH_TYPE_OBJECT}}, - {SQL_TYPE_TIMESTAMP, {OPENSEARCH_TYPE_DATETIME, OPENSEARCH_TYPE_TIMESTAMP}}}; - -const std::unordered_map< std::string, int > data_name_data_type_map = { - {OPENSEARCH_TYPE_NAME_BOOLEAN, SQL_BIT}, - {OPENSEARCH_TYPE_NAME_BYTE, SQL_TINYINT}, - {OPENSEARCH_TYPE_NAME_SHORT, SQL_SMALLINT}, - {OPENSEARCH_TYPE_NAME_INTEGER, SQL_INTEGER}, - {OPENSEARCH_TYPE_NAME_LONG, SQL_BIGINT}, - {OPENSEARCH_TYPE_NAME_HALF_FLOAT, SQL_REAL}, - {OPENSEARCH_TYPE_NAME_FLOAT, SQL_REAL}, - {OPENSEARCH_TYPE_NAME_DOUBLE, SQL_DOUBLE}, - {OPENSEARCH_TYPE_NAME_SCALED_FLOAT, SQL_DOUBLE}, - {OPENSEARCH_TYPE_NAME_KEYWORD, SQL_WVARCHAR}, - {OPENSEARCH_TYPE_NAME_TEXT, SQL_WVARCHAR}, - {OPENSEARCH_TYPE_NAME_DATE, SQL_TYPE_TIMESTAMP}, - {OPENSEARCH_TYPE_NAME_TIMESTAMP, SQL_TYPE_TIMESTAMP}, - {OPENSEARCH_TYPE_NAME_OBJECT, SQL_WVARCHAR}, - {OPENSEARCH_TYPE_NAME_NESTED, SQL_WVARCHAR}}; - -// Boilerplate code for easy column bind handling -class BindTemplate { - public: - BindTemplate(const bool can_be_null, const SQLUSMALLINT ordinal) - : m_len(OPENSEARCH_UNINITIALIZED), m_ordinal(ordinal) { - if (!can_be_null) - throw std::runtime_error( - "Do not use this constructor for values that can be NULL. A " - "constructor with " - "supplied default value must be used if value can be NULL."); - } - BindTemplate(const bool can_be_null, const SQLUSMALLINT ordinal, const Int2) - : m_len(OPENSEARCH_UNINITIALIZED), m_ordinal(ordinal) { - (void)(can_be_null); - } - BindTemplate(const bool can_be_null, const SQLUSMALLINT ordinal, const Int4) - : m_len(OPENSEARCH_UNINITIALIZED), m_ordinal(ordinal) { - (void)(can_be_null); - } - BindTemplate(const bool can_be_null, const SQLUSMALLINT ordinal, - const std::vector< SQLCHAR > &) - : m_len(OPENSEARCH_UNINITIALIZED), m_ordinal(ordinal) { - (void)(can_be_null); - } - virtual ~BindTemplate() { - } - - SQLPOINTER GetData() { - if (m_len == OPENSEARCH_UNINITIALIZED) - throw std::runtime_error( - "Length is uninitialized - Fetch must be executed before data " - "is retreived."); - return (m_len == SQL_NULL_DATA) ? NULL : GetDataForBind(); - } - - void BindColumn(StatementClass *stmt) { - RETCODE err = OPENSEARCHAPI_BindCol(stmt, m_ordinal, GetType(), - GetDataForBind(), GetSize(), &m_len); - if (!SQL_SUCCEEDED(err)) { - std::string error_msg = - "Failed to bind column with ordinal " - + std::to_string(m_ordinal) - + ". SQL Error code: " + std::to_string(err); - throw std::runtime_error(error_msg.c_str()); - } - } - void AssignData(TupleField *tuple) { - SQLPOINTER data = GetData(); - if ((data == NULL) || (m_len == SQL_NULL_DATA)) { - set_tuplefield_null(tuple); - return; - } - switch (GetType()) { - case SQL_C_LONG: - set_tuplefield_int4(tuple, *static_cast< Int4 * >(data)); - break; - case SQL_C_SHORT: - set_tuplefield_int2(tuple, *static_cast< Int2 * >(data)); - break; - case SQL_C_CHAR: - set_tuplefield_string(tuple, static_cast< const char * >(data)); - break; - default: - throw std::runtime_error( - std::string( - "Cannot convert unknown data type to tuplefield: " - + std::to_string(GetType())) - .c_str()); - } - } - BindTemplate(const BindTemplate &) = default; - BindTemplate &operator=(const BindTemplate &) = default; - virtual std::string AsString() = 0; - virtual void UpdateData(SQLPOINTER new_data, size_t size) = 0; - - private: - SQLLEN m_len; - SQLUSMALLINT m_ordinal; - - protected: - virtual SQLSMALLINT GetType() = 0; - virtual SQLLEN GetSize() = 0; - virtual SQLPOINTER GetDataForBind() = 0; -}; - -// 4 byte integer column -class BindTemplateInt4 : public BindTemplate { - public: - BindTemplateInt4(const bool nullable, const SQLUSMALLINT ordinal) - : BindTemplate(nullable, ordinal), m_data(0) { - } - BindTemplateInt4(const bool nullable, const SQLUSMALLINT ordinal, - const Int4 data) - : BindTemplate(nullable, ordinal, data), m_data(data) { - } - ~BindTemplateInt4() { - } - std::string AsString() { - return std::to_string(*static_cast< Int4 * >(GetData())); - } - void UpdateData(SQLPOINTER new_data, size_t size) { - (void)size; - m_data = *(Int4 *)new_data; - } - - private: - Int4 m_data; - - protected: - SQLPOINTER GetDataForBind() { - return &m_data; - } - SQLSMALLINT GetType() { - return SQL_C_LONG; - } - SQLLEN GetSize() { - return static_cast< SQLLEN >(sizeof(Int4)); - } -}; - -// 2 byte integer column -class BindTemplateInt2 : public BindTemplate { - public: - BindTemplateInt2(const bool nullable, const SQLUSMALLINT ordinal) - : BindTemplate(nullable, ordinal), m_data(0) { - } - BindTemplateInt2(const bool nullable, const SQLUSMALLINT ordinal, - const Int2 data) - : BindTemplate(nullable, ordinal, data), m_data(data) { - } - ~BindTemplateInt2() { - } - std::string AsString() { - return std::to_string(*static_cast< Int2 * >(GetData())); - } - void UpdateData(SQLPOINTER new_data, size_t size) { - (void)size; - m_data = *(Int2 *)new_data; - } - - private: - Int2 m_data; - - protected: - SQLPOINTER GetDataForBind() { - return &m_data; - } - SQLSMALLINT GetType() { - return SQL_C_SHORT; - } - SQLLEN GetSize() { - return static_cast< SQLLEN >(sizeof(Int2)); - } -}; - -// Varchar data -class BindTemplateSQLCHAR : public BindTemplate { - public: - BindTemplateSQLCHAR(const bool nullable, const SQLUSMALLINT ordinal) - : BindTemplate(nullable, ordinal), m_data(MAX_INFO_STRING, '\0') { - } - BindTemplateSQLCHAR(const bool nullable, const SQLUSMALLINT ordinal, - const std::vector< SQLCHAR > &data) - : BindTemplate(nullable, ordinal, data), m_data(MAX_INFO_STRING, '\0') { - if (data.size() >= m_data.size()) { - throw std::runtime_error( - "Default data size exceeds max info string size."); - } else { - m_data.insert(m_data.begin(), data.begin(), data.end()); - } - } - ~BindTemplateSQLCHAR() { - } - std::string AsString() { - char *bind_tbl_data_char = static_cast< char * >(GetData()); - return (bind_tbl_data_char == NULL) ? "" : bind_tbl_data_char; - } - void UpdateData(SQLPOINTER new_data, size_t size) { - m_data.clear(); - SQLCHAR *data = reinterpret_cast< SQLCHAR * >(new_data); - for (size_t i = 0; i < size; i++) { - m_data.push_back(*data++); - } - m_data.push_back(0); - } - - private: - std::vector< SQLCHAR > m_data; - - protected: - SQLPOINTER GetDataForBind() { - return m_data.data(); - } - SQLSMALLINT GetType() { - return SQL_C_CHAR; - } - SQLLEN GetSize() { - return static_cast< SQLLEN >(m_data.size()); - } -}; - -// Typedefs and macros to ease creation of BindTemplates -typedef std::unique_ptr< BindTemplate > bind_ptr; -typedef std::vector< bind_ptr > bind_vector; -#define _SQLCHAR_(...) \ - (std::make_unique< BindTemplateSQLCHAR >(BindTemplateSQLCHAR(__VA_ARGS__))) -#define _SQLINT2_(...) \ - (std::make_unique< BindTemplateInt2 >(BindTemplateInt2(__VA_ARGS__))) -#define _SQLINT4_(...) \ - (std::make_unique< BindTemplateInt4 >(BindTemplateInt4(__VA_ARGS__))) - -// Common function definitions -enum class TableResultSet { Catalog, Schema, TableTypes, TableLookUp, All }; -void ConvertToString(std::string &out, bool &valid, const SQLCHAR *sql_char, - const SQLSMALLINT sz); -QResultClass *SetupQResult(const bind_vector &cols, StatementClass *stmt, - StatementClass *col_stmt, const int col_cnt); -void CleanUp(StatementClass *stmt, StatementClass *sub_stmt, const RETCODE ret); -void ExecuteQuery(ConnectionClass *conn, HSTMT *stmt, const std::string &query); -void GetCatalogData(const std::string &query, StatementClass *stmt, - StatementClass *sub_stmt, const TableResultSet res_type, - std::string &table_type, - void (*populate_binds)(bind_vector &), - void (*setup_qres_info)(QResultClass *, EnvironmentClass *), - std::vector< std::string > *list_of_columns = NULL); - -// Common function declarations -void ConvertToString(std::string &out, bool &valid, const SQLCHAR *sql_char, - const SQLSMALLINT sz) { - valid = (sql_char != NULL); - if (!valid) { - out = "%"; - } else if (sz == SQL_NTS) { - out.assign(reinterpret_cast< const char * >(sql_char)); - } else if (sz <= 0) { - out = ""; - } else { - out.assign(reinterpret_cast< const char * >(sql_char), - static_cast< size_t >(sz)); - } -} - -QResultClass *SetupQResult(const bind_vector &cols, StatementClass *stmt, - StatementClass *col_stmt, const int col_cnt) { - (void)(cols); - (void)(col_stmt); - - // Initialize memory for data retreival - QResultClass *res = NULL; - if ((res = QR_Constructor()) == NULL) { - SC_set_error(stmt, STMT_NO_MEMORY_ERROR, - "Couldn't allocate memory for Tables or Columns result.", - "FetchResults"); - throw std::runtime_error( - "Couldn't allocate memory for Tables or Columns result."); - } - SC_set_Result(stmt, res); - - // The binding structure for a statement is not set up until a statement is - // actually executed, so we'll have to do this ourselves - extend_column_bindings(SC_get_ARDF(stmt), - static_cast< SQLSMALLINT >(col_cnt)); - QR_set_num_fields(res, col_cnt); - - return res; -} - -void CleanUp(StatementClass *stmt, StatementClass *sub_stmt, - const RETCODE ret = SQL_ERROR) { - stmt->status = STMT_FINISHED; - stmt->catalog_result = TRUE; - - if (!SQL_SUCCEEDED(ret) && 0 >= SC_get_errornumber(stmt)) - SC_error_copy(stmt, sub_stmt, TRUE); - - // set up the current tuple pointer for - stmt->currTuple = -1; - SC_set_rowset_start(stmt, -1, FALSE); - SC_set_current_col(stmt, -1); - - if (sub_stmt) - OPENSEARCHAPI_FreeStmt(sub_stmt, SQL_DROP); -} - -void ExecuteQuery(ConnectionClass *conn, HSTMT *stmt, - const std::string &query) { - // Prepare statement - if (!SQL_SUCCEEDED(OPENSEARCHAPI_AllocStmt(conn, stmt, 0))) { - throw std::runtime_error("Failed to allocate memory for statement."); - } - - // Execute query - if (!SQL_SUCCEEDED(OPENSEARCHAPI_ExecDirect( - *stmt, reinterpret_cast< const SQLCHAR * >(query.c_str()), SQL_NTS, - 1))) { - std::string error_msg = "Failed to execute query '" + query + "'."; - throw std::runtime_error(error_msg.c_str()); - } -} - -// Table specific function definitions -void split(const std::string &input, const std::string &delim, - std::vector< std::string > &output); -void GenerateTableQuery(std::string &tables_query, const UWORD flag, - const std::string &table_name_value, - const TableResultSet result_type, - const bool table_valid); -void AssignTableBindTemplates(bind_vector &tabs); -void SetupTableQResInfo(QResultClass *res, EnvironmentClass *env); -void SetTableTuples(QResultClass *res, const TableResultSet res_type, - const bind_vector &bind_tbl, std::string &table_type, - StatementClass *stmt, StatementClass *tbl_stmt, - std::vector< std::string > *list_of_columns = NULL); - -// Table specific function declarations -void split(const std::string &input, const std::string &delim, - std::vector< std::string > &output) { - size_t start = 0; - size_t end = input.find(delim); - while (end != std::string::npos) { - output.push_back(input.substr(start, end - start)); - start = end + delim.length(); - end = input.find(delim, start); - } - output.push_back(input.substr(start, end)); -} - -// TODO #324 (SQL Plugin)- Fix patterns and escape characters for this -void GenerateTableQuery(std::string &tables_query, const UWORD flag, - const std::string &table_name_value, - const TableResultSet result_type, - const bool table_valid) { - bool search_pattern = (~flag & PODBC_NOT_SEARCH_PATTERN); - tables_query = "SHOW TABLES LIKE "; - if (table_valid && (table_name_value != "") - && (result_type == TableResultSet::All)) - tables_query += - search_pattern ? table_name_value : "^" + table_name_value + "$"; - else - tables_query += "%"; -} - -// In case of unique_ptr's, using push_back (over emplace_back) is preferred in -// C++14 and higher -void AssignTableBindTemplates(bind_vector &tabs) { - tabs.reserve(TABLE_TEMPLATE_COUNT); - tabs.push_back(_SQLCHAR_(false, 1, EMPTY_VARCHAR)); // TABLE_CAT 1 - tabs.push_back(_SQLCHAR_(false, 2, EMPTY_VARCHAR)); // TABLE_SCHEM 2 - tabs.push_back(_SQLCHAR_(false, 3, EMPTY_VARCHAR)); // TABLE_NAME 3 - tabs.push_back(_SQLCHAR_(false, 4, EMPTY_VARCHAR)); // TABLE_TYPE 4 - tabs.push_back(_SQLCHAR_(true, 5)); // REMARKS 5 -} - -void SetupTableQResInfo(QResultClass *res, EnvironmentClass *env) { - if (EN_is_odbc3(env)) { - QR_set_field_info_v(res, TABLES_CATALOG_NAME, TABLE_CAT, - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, TABLES_SCHEMA_NAME, TABLE_SCHEM, - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - } else { - QR_set_field_info_v(res, TABLES_CATALOG_NAME, TABLE_QUALIFIER, - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, TABLES_SCHEMA_NAME, TABLE_OWNER, - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - } - QR_set_field_info_v(res, TABLES_TABLE_NAME, TABLE_NAME, - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, TABLES_TABLE_TYPE, TABLE_TYPE, - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, TABLES_REMARKS, REMARKS, OPENSEARCH_TYPE_VARCHAR, - INFO_VARCHAR_SIZE); -} - -void SetTableTuples(QResultClass *res, const TableResultSet res_type, - const bind_vector &bind_tbl, std::string &table_type, - StatementClass *stmt, StatementClass *tbl_stmt, - std::vector< std::string > *list_of_columns) { - auto CheckResult = [&](const auto &res) { - if (res != SQL_NO_DATA_FOUND) { - SC_full_error_copy(stmt, tbl_stmt, FALSE); - throw std::runtime_error( - std::string("Failed to fetch data after query. Error code :" - + std::to_string(res)) - .c_str()); - } - }; - auto AssignData = [&](auto *res, const auto &binds) { - TupleField *tuple = QR_AddNew(res); - // Since we do not support catalogs, we will return an empty string for - // catalog names. This is required for Excel for Mac, which uses this - // information for its Data Preview window. - std::string catalog(""); - bind_tbl[TABLES_CATALOG_NAME]->UpdateData((void *)catalog.c_str(), 0); - - // TODO #630 - Revisit logic of adding tuples for SQLTables & SQLColumns - for (size_t i = 0; i < binds.size(); i++) { - // Add tuples for SQLColumns - if (binds.size() > COLUMNS_SQL_DATA_TYPE) { - // Add data type for data loading issue in Power BI Desktop - auto data_type = data_name_data_type_map - .find(bind_tbl[COLUMNS_TYPE_NAME]->AsString())->second; - if (i == COLUMNS_DATA_TYPE) { - set_tuplefield_int2(&tuple[COLUMNS_DATA_TYPE], - static_cast< short >(data_type)); - } else if (i == COLUMNS_SQL_DATA_TYPE) { - set_tuplefield_int2(&tuple[COLUMNS_SQL_DATA_TYPE], - static_cast< short >(data_type)); - } else { - binds[i]->AssignData(&tuple[i]); - } - } - // Add tuples for SQLTables - else { - binds[i]->AssignData(&tuple[i]); - } - } - }; - - // General case - if (res_type == TableResultSet::All) { - RETCODE result = SQL_NO_DATA_FOUND; - int ordinal_position = 0; - while (SQL_SUCCEEDED(result = OPENSEARCHAPI_Fetch(tbl_stmt))) { - if (bind_tbl[TABLES_TABLE_TYPE]->AsString() == "BASE TABLE") { - std::string table("TABLE"); - bind_tbl[TABLES_TABLE_TYPE]->UpdateData((void *)table.c_str(), - table.length()); - } - if (list_of_columns != NULL && !list_of_columns->empty()) { - if (std::find(list_of_columns->begin(), list_of_columns->end(), - bind_tbl[COLUMNS_COLUMN_NAME]->AsString()) - != list_of_columns->end()) { - ordinal_position++; - bind_tbl[COLUMNS_ORDINAL_POSITION]->UpdateData( - &ordinal_position, 0); - AssignData(res, bind_tbl); - } - } else { - AssignData(res, bind_tbl); - } - } - CheckResult(result); - } else if (res_type == TableResultSet::TableLookUp) { - // Get accepted table types - std::vector< std::string > table_types; - table_type.erase( - std::remove(table_type.begin(), table_type.end(), '\''), - table_type.end()); - split(table_type, ",", table_types); - - // Loop through all data - RETCODE result = SQL_NO_DATA_FOUND; - while (SQL_SUCCEEDED(result = OPENSEARCHAPI_Fetch(tbl_stmt))) { - // Replace BASE TABLE with TABLE for Excel & Power BI SQLTables call - if (bind_tbl[TABLES_TABLE_TYPE]->AsString() == "BASE TABLE") { - std::string table("TABLE"); - bind_tbl[TABLES_TABLE_TYPE]->UpdateData((void *)table.c_str(), - table.length()); - } - if (std::find(table_types.begin(), table_types.end(), - bind_tbl[TABLES_TABLE_TYPE]->AsString()) - != table_types.end()) { - AssignData(res, bind_tbl); - } - } - - CheckResult(result); - - } - // Special cases - only need single grab for this one - else { - RETCODE result; - if (!SQL_SUCCEEDED(result = OPENSEARCHAPI_Fetch(tbl_stmt))) { - SC_full_error_copy(stmt, tbl_stmt, FALSE); - throw std::runtime_error( - std::string("Failed to fetch data after query. Error code :" - + std::to_string(result)) - .c_str()); - } - - // Get index of result type of interest - size_t idx = NUM_OF_TABLES_FIELDS; - switch (res_type) { - case TableResultSet::TableTypes: - idx = TABLES_TABLE_TYPE; - break; - default: - // This should not be possible, handle it anyway - throw std::runtime_error( - "Result type is not an expected type."); - } - - // Get new tuple and assign index of interest (NULL others) - // TODO #324 (SQL Plugin)- Should these be unique? - TupleField *tuple = QR_AddNew(res); - for (size_t i = 0; i < bind_tbl.size(); i++) { - if (i == idx) - bind_tbl[i]->AssignData(&tuple[i]); - else - set_tuplefield_string(&tuple[i], NULL_STRING); - } - } -} - -// Column specific function definitions -void SetupColumnQResInfo(QResultClass *res, EnvironmentClass *unused); -void GenerateColumnQuery(std::string &query, const std::string &table_name, - const std::string &column_name, const bool table_valid, - const bool column_valid, const UWORD flag); -void AssignColumnBindTemplates(bind_vector &cols); - -// Column Specific function declarations -void SetupColumnQResInfo(QResultClass *res, EnvironmentClass *unused) { - (void)(unused); - - QR_set_field_info_v(res, COLUMNS_CATALOG_NAME, TABLE_CAT, - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, COLUMNS_SCHEMA_NAME, TABLE_SCHEM, - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, COLUMNS_TABLE_NAME, TABLE_NAME, - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, COLUMNS_COLUMN_NAME, COLUMN_NAME, - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, COLUMNS_DATA_TYPE, DATA_TYPE, OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, COLUMNS_TYPE_NAME, TYPE_NAME, - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, COLUMNS_PRECISION, COLUMN_SIZE, - OPENSEARCH_TYPE_INT4, 4); - QR_set_field_info_v(res, COLUMNS_LENGTH, BUFFER_LENGTH, - OPENSEARCH_TYPE_INT4, 4); - QR_set_field_info_v(res, COLUMNS_SCALE, DECIMAL_DIGITS, - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, COLUMNS_RADIX, NUM_PREC_RADIX, - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, COLUMNS_NULLABLE, NULLABLE, OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, COLUMNS_REMARKS, REMARKS, OPENSEARCH_TYPE_VARCHAR, - INFO_VARCHAR_SIZE); - QR_set_field_info_v(res, COLUMNS_COLUMN_DEF, COLUMN_DEF, - OPENSEARCH_TYPE_VARCHAR, - INFO_VARCHAR_SIZE); - QR_set_field_info_v(res, COLUMNS_SQL_DATA_TYPE, SQL_DATA_TYPE, - OPENSEARCH_TYPE_INT2, - 2); - QR_set_field_info_v(res, COLUMNS_SQL_DATETIME_SUB, SQL_DATETIME_SUB, - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, COLUMNS_CHAR_OCTET_LENGTH, CHAR_OCTET_LENGTH, - OPENSEARCH_TYPE_INT4, 4); - QR_set_field_info_v(res, COLUMNS_ORDINAL_POSITION, ORDINAL_POSITION, - OPENSEARCH_TYPE_INT4, 4); - QR_set_field_info_v(res, COLUMNS_IS_NULLABLE, IS_NULLABLE, - OPENSEARCH_TYPE_VARCHAR, - INFO_VARCHAR_SIZE); -} - -// TODO #325 (SQL Plugin)- Fix patterns and escape characters for this -void GenerateColumnQuery(std::string &query, const std::string &table_name, - const std::string &column_name, const bool table_valid, - const bool column_valid, const UWORD flag) { - bool search_pattern = (~flag & PODBC_NOT_SEARCH_PATTERN); - query = "DESCRIBE TABLES LIKE "; - query += table_valid - ? (search_pattern ? table_name : "^" + table_name + "$") - : "%"; - if (column_valid) - query += " COLUMNS LIKE " + column_name; -} - -// In case of unique_ptr's, using push_back (over emplace_back) is preferred in -// C++14 and higher -void AssignColumnBindTemplates(bind_vector &cols) { - cols.reserve(COLUMN_TEMPLATE_COUNT); - cols.push_back(_SQLCHAR_(true, 1)); // TABLE_CAT 1 - cols.push_back(_SQLCHAR_(true, 2)); // TABLE_SCHEM 2 - cols.push_back(_SQLCHAR_(false, 3, EMPTY_VARCHAR)); // TABLE_NAME 3 - cols.push_back(_SQLCHAR_(false, 4, EMPTY_VARCHAR)); // COLUMN_NAME 4 - cols.push_back( - _SQLINT2_(false, 5, DEFAULT_TYPE_INT)); // DATA_TYPE 5 - cols.push_back( - _SQLCHAR_(false, 6, DEFAULT_TYPE_STR)); // TYPE_NAME 6 - cols.push_back(_SQLINT4_(true, 7)); // COLUMN_SIZE 7 - cols.push_back(_SQLINT4_(true, 8)); // BUFFER_LENGTH 8 - cols.push_back(_SQLINT2_(true, 9)); // DECIMAL_DIGITS 9 - cols.push_back(_SQLINT2_(true, 10)); // NUM_PREC_RADIX 10 - cols.push_back( - _SQLINT2_(false, 11, SQL_NULLABLE_UNKNOWN)); // NULLABLE 11 - cols.push_back(_SQLCHAR_(true, 12)); // REMARKS 12 - cols.push_back(_SQLCHAR_(true, 13)); // COLUMN_DEF 13 - cols.push_back( - _SQLINT2_(false, 14, DEFAULT_TYPE_INT)); // SQL_DATA_TYPE 14 - cols.push_back(_SQLINT2_(true, 15)); // SQL_DATETIME_SUB 15 - cols.push_back(_SQLINT4_(true, 16)); // CHAR_OCTET_LENGTH 16 - cols.push_back(_SQLINT4_(false, 17, -1)); // ORDINAL_POSITION 17 - cols.push_back(_SQLCHAR_(true, 18)); // IS_NULLABLE 18 -} - -void GetCatalogData(const std::string &query, StatementClass *stmt, - StatementClass *sub_stmt, const TableResultSet res_type, - std::string &table_type, - void (*populate_binds)(bind_vector &), - void (*setup_qres_info)(QResultClass *, EnvironmentClass *), - std::vector< std::string > *list_of_columns) { - // Execute query - ExecuteQuery(SC_get_conn(stmt), reinterpret_cast< HSTMT * >(&sub_stmt), - query); - - // Bind Columns - bind_vector binds; - (*populate_binds)(binds); - std::for_each(binds.begin(), binds.end(), - [&](const auto &b) { b->BindColumn(sub_stmt); }); - QResultClass *res = - SetupQResult(binds, stmt, sub_stmt, static_cast< int >(binds.size())); - - // Setup QResultClass - (*setup_qres_info)( - res, static_cast< EnvironmentClass * >(CC_get_env(SC_get_conn(stmt)))); - SetTableTuples(res, res_type, binds, table_type, stmt, sub_stmt, - list_of_columns); - CleanUp(stmt, sub_stmt, SQL_SUCCESS); -} - -RETCODE SQL_API -OPENSEARCHAPI_Tables(HSTMT hstmt, const SQLCHAR *catalog_name_sql, - const SQLSMALLINT catalog_name_sz, const SQLCHAR *schema_name_sql, - const SQLSMALLINT schema_name_sz, const SQLCHAR *table_name_sql, - const SQLSMALLINT table_name_sz, const SQLCHAR *table_type_sql, - const SQLSMALLINT table_type_sz, const UWORD flag) { - CSTR func = "OPENSEARCHAPI_Tables"; - StatementClass *stmt = (StatementClass *)hstmt; - StatementClass *tbl_stmt = NULL; - RETCODE result = SQL_ERROR; - if ((result = SC_initialize_and_recycle(stmt)) != SQL_SUCCESS) - return result; - - try { - // Convert const SQLCHAR*'s to c++ strings - std::string catalog_name, schema_name, table_name, table_type; - bool catalog_valid, schema_valid, table_valid, table_type_valid; - ConvertToString(catalog_name, catalog_valid, catalog_name_sql, - catalog_name_sz); - ConvertToString(schema_name, schema_valid, schema_name_sql, - schema_name_sz); - ConvertToString(table_name, table_valid, table_name_sql, table_name_sz); - ConvertToString(table_type, table_type_valid, table_type_sql, - table_type_sz); - - // Special semantics for the CatalogName, SchemaName, and TableType - // arguments - TableResultSet result_type = TableResultSet::All; - - if (catalog_name == SQL_ALL_CATALOGS) { - if (schema_valid && table_valid && (table_name == "") - && (schema_name == "")) { - std::string error_msg("Catalogs not supported."); - SC_set_error(stmt, STMT_NOT_IMPLEMENTED_ERROR, - error_msg.c_str(), func); - CleanUp(stmt, tbl_stmt); - return SQL_ERROR; - } - // result_type = TableResultSet::Catalog; - } - if (schema_name == SQL_ALL_SCHEMAS) { - if (catalog_valid && table_valid && (table_name == "") - && (catalog_name == "")) { - std::string error_msg("Schemas not supported."); - SC_set_error(stmt, STMT_NOT_IMPLEMENTED_ERROR, - error_msg.c_str(), func); - CleanUp(stmt, tbl_stmt); - return SQL_ERROR; - } - // result_type = TableResultSet::Schema; - } - if (table_type_valid && (table_type == SQL_ALL_TABLE_TYPES)) { - if (catalog_valid && table_valid && schema_valid - && (table_name == "") && (catalog_name == "") - && (schema_name == "")) - result_type = TableResultSet::TableTypes; - } - if (table_type_valid && (table_type != SQL_ALL_TABLE_TYPES)) { - result_type = TableResultSet::TableLookUp; - } - - // Create query to find out list - std::string query; - GenerateTableQuery(query, flag, table_name, result_type, table_valid); - - // TODO #324 (SQL Plugin)- evaluate catalog & schema support - GetCatalogData(query, stmt, tbl_stmt, result_type, table_type, - AssignTableBindTemplates, SetupTableQResInfo); - return SQL_SUCCESS; - } catch (std::bad_alloc &e) { - std::string error_msg = std::string("Bad allocation exception: '") - + e.what() + std::string("'."); - SC_set_error(stmt, STMT_NO_MEMORY_ERROR, error_msg.c_str(), func); - } catch (std::exception &e) { - std::string error_msg = - std::string("Generic exception: '") + e.what() + std::string("'."); - SC_set_error(stmt, STMT_INTERNAL_ERROR, error_msg.c_str(), func); - } catch (...) { - std::string error_msg = std::string("Unknown exception raised."); - SC_set_error(stmt, STMT_INTERNAL_ERROR, error_msg.c_str(), func); - } - CleanUp(stmt, tbl_stmt); - return SQL_ERROR; -} - -RETCODE SQL_API -OPENSEARCHAPI_Columns(HSTMT hstmt, const SQLCHAR *catalog_name_sql, - const SQLSMALLINT catalog_name_sz, const SQLCHAR *schema_name_sql, - const SQLSMALLINT schema_name_sz, const SQLCHAR *table_name_sql, - const SQLSMALLINT table_name_sz, const SQLCHAR *column_name_sql, - const SQLSMALLINT column_name_sz, const UWORD flag, - const OID reloid, const Int2 attnum) { - (void)(reloid); - (void)(attnum); - - CSTR func = "OPENSEARCHAPI_Columns"; - - // Declare outside of try so we can clean them up properly if an exception - // occurs - StatementClass *stmt = (StatementClass *)hstmt; - StatementClass *col_stmt = NULL; - RETCODE result = SQL_ERROR; - if ((result = SC_initialize_and_recycle(stmt)) != SQL_SUCCESS) - return result; - - try { - // Convert const SQLCHAR *'s to strings - std::string catalog_name, schema_name, table_name, column_name; - bool catalog_valid, schema_valid, table_valid, column_valid; - ConvertToString(catalog_name, catalog_valid, catalog_name_sql, - catalog_name_sz); - ConvertToString(schema_name, schema_valid, schema_name_sql, - schema_name_sz); - ConvertToString(table_name, table_valid, table_name_sql, table_name_sz); - ConvertToString(column_name, column_valid, column_name_sql, - column_name_sz); - - // Generate query - std::string query; - GenerateColumnQuery(query, table_name, column_name, table_valid, - column_valid, flag); - - // Get list of columns with SELECT * query since columns doesn't match - // with DESCRIBE & SELECT * query - std::vector< std::string > list_of_columns; - if (table_valid) { - ConnectionClass *conn = SC_get_conn(stmt); - list_of_columns = - OpenSearchGetColumnsWithSelectQuery(conn->opensearchconn, table_name); - } - - // TODO #324 (SQL Plugin)- evaluate catalog & schema support - - // Execute query - std::string table_type = ""; - GetCatalogData(query, stmt, col_stmt, TableResultSet::All, table_type, - AssignColumnBindTemplates, SetupColumnQResInfo, - &list_of_columns); - return SQL_SUCCESS; - } catch (std::bad_alloc &e) { - std::string error_msg = std::string("Bad allocation exception: '") - + e.what() + std::string("'."); - SC_set_error(stmt, STMT_NO_MEMORY_ERROR, error_msg.c_str(), func); - } catch (std::exception &e) { - std::string error_msg = - std::string("Generic exception: '") + e.what() + std::string("'."); - SC_set_error(stmt, STMT_INTERNAL_ERROR, error_msg.c_str(), func); - } catch (...) { - std::string error_msg("Unknown exception raised."); - SC_set_error(stmt, STMT_INTERNAL_ERROR, error_msg.c_str(), func); - } - CleanUp(stmt, col_stmt); - return SQL_ERROR; -} -void CleanUp_GetTypeInfo(StatementClass *stmt, const RETCODE ret = SQL_ERROR) { - stmt->status = STMT_FINISHED; - stmt->currTuple = -1; - if (SQL_SUCCEEDED(ret)) - SC_set_rowset_start(stmt, -1, FALSE); - else - SC_set_Result(stmt, NULL); - SC_set_current_col(stmt, -1); -} - -void SetupTypeQResInfo(QResultClass *res) { - QR_set_field_info_v(res, GETTYPE_TYPE_NAME, TYPE_NAME, - OPENSEARCH_TYPE_VARCHAR, - MAX_INFO_STRING); - QR_set_field_info_v(res, GETTYPE_DATA_TYPE, DATA_TYPE, OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, GETTYPE_COLUMN_SIZE, PRECISION, - OPENSEARCH_TYPE_INT4, 4); - QR_set_field_info_v(res, GETTYPE_LITERAL_PREFIX, LITERAL_PREFIX, - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, GETTYPE_LITERAL_SUFFIX, LITERAL_SUFFIX, - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, GETTYPE_CREATE_PARAMS, CREATE_PARAMS, - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, GETTYPE_NULLABLE, NULLABLE, OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, GETTYPE_CASE_SENSITIVE, CASE_SENSITIVE, - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, GETTYPE_SEARCHABLE, SEARCHABLE, - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, GETTYPE_UNSIGNED_ATTRIBUTE, UNSIGNED_ATTRIBUTE, - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, GETTYPE_FIXED_PREC_SCALE, FIXED_PREC_SCALE, - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, GETTYPE_AUTO_UNIQUE_VALUE, AUTO_INCREMENT, - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, GETTYPE_LOCAL_TYPE_NAME, LOCAL_TYPE_NAME, - OPENSEARCH_TYPE_VARCHAR, MAX_INFO_STRING); - QR_set_field_info_v(res, GETTYPE_MINIMUM_SCALE, MINIMUM_SCALE, - OPENSEARCH_TYPE_INT2, - 2); - QR_set_field_info_v(res, GETTYPE_MAXIMUM_SCALE, MAXIMUM_SCALE, - OPENSEARCH_TYPE_INT2, - 2); - QR_set_field_info_v(res, GETTYPE_SQL_DATA_TYPE, SQL_DATA_TYPE, - OPENSEARCH_TYPE_INT2, - 2); - QR_set_field_info_v(res, GETTYPE_SQL_DATETIME_SUB, SQL_DATETIME_SUB, - OPENSEARCH_TYPE_INT2, 2); - QR_set_field_info_v(res, GETTYPE_NUM_PREC_RADIX, NUM_PREC_RADIX, - OPENSEARCH_TYPE_INT4, 4); - QR_set_field_info_v(res, GETTYPE_INTERVAL_PRECISION, INTERVAL_PRECISION, - OPENSEARCH_TYPE_INT2, 2); -} - -RETCODE SetTypeResult(ConnectionClass *conn, StatementClass *stmt, - QResultClass *res, int esType, int sqlType) { - TupleField *tuple; - - if (tuple = QR_AddNew(res), NULL == tuple) { - SC_set_error(stmt, STMT_NO_MEMORY_ERROR, "Couldn't QR_AddNew.", - "SetTypeResult"); - CleanUp_GetTypeInfo(stmt, SQL_ERROR); - return SQL_ERROR; - } - - set_tuplefield_string(&tuple[GETTYPE_TYPE_NAME], - opensearchtype_attr_to_name(conn, esType, -1, FALSE)); - set_tuplefield_int2(&tuple[GETTYPE_NULLABLE], - opensearchtype_nullable(conn, esType)); - - set_tuplefield_int2(&tuple[GETTYPE_DATA_TYPE], - static_cast< short >(sqlType)); - set_tuplefield_int2(&tuple[GETTYPE_CASE_SENSITIVE], - opensearchtype_case_sensitive(conn, esType)); - set_tuplefield_int2(&tuple[GETTYPE_SEARCHABLE], - opensearchtype_searchable(conn, esType)); - set_tuplefield_int2(&tuple[GETTYPE_FIXED_PREC_SCALE], - opensearchtype_money(conn, esType)); - - // Localized data-source dependent data type name (always NULL) - set_tuplefield_null(&tuple[GETTYPE_LOCAL_TYPE_NAME]); - - // These values can be NULL - set_nullfield_int4( - &tuple[GETTYPE_COLUMN_SIZE], - opensearchtype_attr_column_size( - conn, esType, OPENSEARCH_ATP_UNSET, - OPENSEARCH_ADT_UNSET, OPENSEARCH_UNKNOWNS_UNSET)); - set_nullfield_string(&tuple[GETTYPE_LITERAL_PREFIX], - opensearchtype_literal_prefix(conn, esType)); - set_nullfield_string(&tuple[GETTYPE_LITERAL_SUFFIX], - opensearchtype_literal_suffix(conn, esType)); - set_nullfield_string(&tuple[GETTYPE_CREATE_PARAMS], - opensearchtype_create_params(conn, esType)); - set_nullfield_int2(&tuple[GETTYPE_UNSIGNED_ATTRIBUTE], - opensearchtype_unsigned(conn, esType)); - set_nullfield_int2(&tuple[GETTYPE_AUTO_UNIQUE_VALUE], - opensearchtype_auto_increment(conn, esType)); - set_nullfield_int2(&tuple[GETTYPE_MINIMUM_SCALE], - opensearchtype_min_decimal_digits(conn, esType)); - set_nullfield_int2(&tuple[GETTYPE_MAXIMUM_SCALE], - opensearchtype_max_decimal_digits(conn, esType)); - set_tuplefield_int2(&tuple[GETTYPE_SQL_DATA_TYPE], - static_cast< short >(sqlType)); - set_nullfield_int2(&tuple[GETTYPE_SQL_DATETIME_SUB], - opensearchtype_attr_to_datetime_sub( - conn, esType, OPENSEARCH_ATP_UNSET)); - set_nullfield_int4(&tuple[GETTYPE_NUM_PREC_RADIX], - opensearchtype_radix(conn, esType)); - set_nullfield_int4(&tuple[GETTYPE_INTERVAL_PRECISION], 0); - - return SQL_SUCCESS; -} - -RETCODE SQL_API OPENSEARCHAPI_GetTypeInfo(HSTMT hstmt, SQLSMALLINT fSqlType) { - CSTR func = "OPENSEARCHAPI_GetTypeInfo"; - StatementClass *stmt = (StatementClass *)hstmt; - ConnectionClass *conn; - conn = SC_get_conn(stmt); - QResultClass *res = NULL; - - int result_cols; - RETCODE result = SQL_ERROR; - - if (result = SC_initialize_and_recycle(stmt), SQL_SUCCESS != result) - return result; - - try { - if (res = QR_Constructor(), !res) { - SC_set_error(stmt, STMT_INTERNAL_ERROR, "Error creating result.", - func); - return SQL_ERROR; - } - SC_set_Result(stmt, res); - - result_cols = NUM_OF_GETTYPE_FIELDS; - extend_column_bindings(SC_get_ARDF(stmt), - static_cast< SQLSMALLINT >(result_cols)); - - stmt->catalog_result = TRUE; - QR_set_num_fields(res, result_cols); - SetupTypeQResInfo(res); - - if (fSqlType == SQL_ALL_TYPES) { - for (std::pair< int, std::vector< int > > sqlType : - sql_opensearch_type_map) { - for (auto const &openSearchType : sqlType.second) { - result = - SetTypeResult(conn, stmt, res, openSearchType, sqlType.first); - } - } - } else { - if (sql_opensearch_type_map.count(fSqlType) > 0) { - for (auto openSearchType : - sql_opensearch_type_map.at(fSqlType)) { - result = SetTypeResult(conn, stmt, res, openSearchType, fSqlType); - } - } - } - result = SQL_SUCCESS; - - } catch (std::bad_alloc &e) { - std::string error_msg = std::string("Bad allocation exception: '") - + e.what() + std::string("'."); - SC_set_error(stmt, STMT_NO_MEMORY_ERROR, error_msg.c_str(), func); - } catch (std::exception &e) { - std::string error_msg = - std::string("Generic exception: '") + e.what() + std::string("'."); - SC_set_error(stmt, STMT_INTERNAL_ERROR, error_msg.c_str(), func); - } catch (...) { - std::string error_msg("Unknown exception raised."); - SC_set_error(stmt, STMT_INTERNAL_ERROR, error_msg.c_str(), func); - } - - CleanUp_GetTypeInfo(stmt, result); - return result; -} diff --git a/sql-odbc/src/sqlodbc/opensearch_info.h b/sql-odbc/src/sqlodbc/opensearch_info.h deleted file mode 100644 index bbe1906518..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_info.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef __OPENSEARCH_INFO_H__ -#define __OPENSEARCH_INFO_H__ -#include "opensearch_helper.h" -#include "opensearch_odbc.h" -#include "unicode_support.h" - -#ifndef WIN32 -#include -#endif - -#include "bind.h" -#include "catfunc.h" -#include "dlg_specific.h" -#include "environ.h" -#include "misc.h" -#include "multibyte.h" -#include "opensearch_apifunc.h" -#include "opensearch_connection.h" -#include "opensearch_types.h" -#include "qresult.h" -#include "statement.h" -#include "tuple.h" - -// C Interface -#ifdef __cplusplus -extern "C" { -#endif -RETCODE SQL_API OPENSEARCHAPI_Tables(HSTMT hstmt, const SQLCHAR* catalog_name_sql, - const SQLSMALLINT catalog_name_sz, - const SQLCHAR* schema_name_sql, - const SQLSMALLINT schema_name_sz, - const SQLCHAR* table_name_sql, - const SQLSMALLINT table_name_sz, - const SQLCHAR* table_type_sql, - const SQLSMALLINT table_type_sz, const UWORD flag); -RETCODE SQL_API -OPENSEARCHAPI_Columns(HSTMT hstmt, const SQLCHAR* catalog_name_sql, - const SQLSMALLINT catalog_name_sz, const SQLCHAR* schema_name_sql, - const SQLSMALLINT schema_name_sz, const SQLCHAR* table_name_sql, - const SQLSMALLINT table_name_sz, const SQLCHAR* column_name_sql, - const SQLSMALLINT column_name_sz, const UWORD flag, - const OID reloid, const Int2 attnum); - -RETCODE SQL_API OPENSEARCHAPI_GetTypeInfo(HSTMT hstmt, SQLSMALLINT fSqlType); -#ifdef __cplusplus -} -#endif - -#endif /* __OPENSEARCH_INFO_H__ */ diff --git a/sql-odbc/src/sqlodbc/opensearch_odbc.c b/sql-odbc/src/sqlodbc/opensearch_odbc.c deleted file mode 100644 index ce753eb3d6..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_odbc.c +++ /dev/null @@ -1,159 +0,0 @@ -#ifdef WIN32 -#ifdef _DEBUG -#include -#endif /* _DEBUG */ -#endif /* WIN32 */ -#include - -#include "dlg_specific.h" -#include "environ.h" -#include "opensearch_odbc.h" -#include "misc.h" - -#ifdef WIN32 -#include "loadlib.h" -#else -#include -#endif - -void unused_vargs(int cnt, ...) { -#ifdef __APPLE__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunused-value" -#endif // __APPLE__ - (void)(cnt); -#ifdef __APPLE__ -#pragma clang diagnostic pop -#endif // __APPLE__ -} - -static int exeesm = 0; -BOOL isMsAccess(void) { - return 1 == exeesm; -} -BOOL isMsQuery(void) { - return 2 == exeesm; -} -BOOL isSqlServr(void) { - return 3 == exeesm; -} - -RETCODE SQL_API SQLDummyOrdinal(void); - -extern void *conns_cs, *common_cs; - -int initialize_global_cs(void) { - static int init = 1; - - if (!init) - return 0; - init = 0; -#ifdef WIN32 -#ifdef _DEBUG -#ifdef _MEMORY_DEBUG_ - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); -#endif /* _MEMORY_DEBUG_ */ -#endif /* _DEBUG */ -#endif /* WIN32 */ -#ifdef POSIX_THREADMUTEX_SUPPORT - getMutexAttr(); -#endif /* POSIX_THREADMUTEX_SUPPORT */ - InitializeLogging(); - INIT_CONNS_CS; - INIT_COMMON_CS; - - return 0; -} - -static void finalize_global_cs(void) { - DELETE_COMMON_CS; - DELETE_CONNS_CS; - FinalizeLogging(); -#ifdef _DEBUG -#ifdef _MEMORY_DEBUG_ - // _CrtDumpMemoryLeaks(); -#endif /* _MEMORY_DEBUG_ */ -#endif /* _DEBUG */ -} - -#ifdef WIN32 -HINSTANCE s_hModule; /* Saved module handle. */ -/* This is where the Driver Manager attaches to this Driver */ -BOOL WINAPI DllMain(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved) { - const char *exename = GetExeProgramName(); - - switch (ul_reason_for_call) { - case DLL_PROCESS_ATTACH: - s_hModule = hInst; /* Save for dialog boxes */ - - if (stricmp(exename, "msaccess") == 0) - exeesm = 1; - else if (strnicmp(exename, "msqry", 5) == 0) - exeesm = 2; - else if (strnicmp(exename, "sqlservr", 8) == 0) - exeesm = 3; - initialize_global_cs(); - MYLOG(OPENSEARCH_DEBUG, "exe name=%s\n", exename); - break; - - case DLL_THREAD_ATTACH: - break; - - case DLL_PROCESS_DETACH: - MYLOG(OPENSEARCH_DEBUG, "DETACHING %s\n", DRIVER_FILE_NAME); - CleanupDelayLoadedDLLs(); - /* my(q)log is unavailable from here */ - finalize_global_cs(); - return TRUE; - - case DLL_THREAD_DETACH: - break; - - default: - break; - } - - return TRUE; - - UNREFERENCED_PARAMETER(lpReserved); -} - -#else /* not WIN32 */ - -#if defined(__GNUC__) || defined(__SUNPRO_C) - -/* Shared library initializer and destructor, using gcc's attributes */ - -static void __attribute__((constructor)) elasticodbc_init(void) { - initialize_global_cs(); -} - -static void __attribute__((destructor)) elasticodbc_fini(void) { - finalize_global_cs(); -} - -#else /* not __GNUC__ */ - -/* Shared library initialization on non-gcc systems. */ -BOOL _init(void) { - initialize_global_cs(); - return TRUE; -} - -BOOL _fini(void) { - finalize_global_cs(); - return TRUE; -} -#endif /* not __GNUC__ */ -#endif /* not WIN32 */ - -/* - * This function is used to cause the Driver Manager to - * call functions by number rather than name, which is faster. - * The ordinal value of this function must be 199 to have the - * Driver Manager do this. Also, the ordinal values of the - * functions must match the value of fFunction in SQLGetFunctions() - */ -RETCODE SQL_API SQLDummyOrdinal(void) { - return SQL_SUCCESS; -} diff --git a/sql-odbc/src/sqlodbc/opensearch_odbc.h b/sql-odbc/src/sqlodbc/opensearch_odbc.h deleted file mode 100644 index 23ba2c3f68..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_odbc.h +++ /dev/null @@ -1,663 +0,0 @@ -#ifndef __OPENSEARCHODBC_H__ -#define __OPENSEARCHODBC_H__ -#include - -/* #define __MS_REPORTS_ANSI_CHAR__ */ -void unused_vargs(int cnt, ...); -#define UNUSED(...) unused_vargs(0, __VA_ARGS__) - -#ifdef WIN32 -#define WIN32_LEAN_AND_MEAN -#include -#elif __APPLE__ - -#elif __linux__ -#include "linux/kconfig.h" -#endif - -#include /* for FILE* pointers: see GLOBAL_VALUES */ - -#include "version.h" - -#ifdef WIN32 -#ifdef _DEBUG -#ifndef _MEMORY_DEBUG_ -#include -#if (_MSC_VER < 1400) /* in case of VC7 or under */ -#include -#endif /* _MSC_VER */ -#define _CRTDBG_MAP_ALLOC -#include -#endif /* _MEMORY_DEBUG_ */ -#else /* _DEBUG */ -#include -#endif /* _DEBUG */ -#else /* WIN32 */ -#include -#endif /* WIN32 */ - -#if defined(__GNUC__) || defined(__IBMC__) -#if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 404 -#define OPENSEARCH_PRINTF_ATTRIBUTE gnu_printf -#else -#define OPENSEARCH_PRINTF_ATTRIBUTE printf -#endif -#define opensearch_attribute_printf(f, a) \ - __attribute__((format(OPENSEARCH_PRINTF_ATTRIBUTE, f, a))) -#else -#define __attribute__(x) -#define opensearch_attribute_printf(f, a) -#endif /* __GNUC__ || __IBMC__ */ - -#ifdef _MEMORY_DEBUG_ -void *esdebug_alloc(size_t); -void *esdebug_calloc(size_t, size_t); -void *esdebug_realloc(void *, size_t); -char *esdebug_strdup(const char *); -void *esdebug_memcpy(void *, const void *, size_t); -void *esdebug_memset(void *, int c, size_t); -char *esdebug_strcpy(char *, const char *); -char *esdebug_strncpy(char *, const char *, size_t); -char *esdebug_strncpy_null(char *, const char *, size_t); -void esdebug_free(void *); -void debug_memory_check(void); - -#ifdef WIN32 -#undef strdup -#endif /* WIN32 */ -#define malloc esdebug_alloc -#define realloc esdebug_realloc -#define calloc esdebug_calloc -#define strdup esdebug_strdup -#define free esdebug_free -#define strcpy esdebug_strcpy -#define strncpy esdebug_strncpy -/* #define strncpy_null esdebug_strncpy_null */ -#define memcpy esdebug_memcpy -#define memset esdebug_memset -#endif /* _MEMORY_DEBUG_ */ - -#ifdef WIN32 -#pragma warning(push) -#pragma warning(disable : 4201) // nonstandard extension used: nameless - // struct/union warning -#include -#pragma warning(pop) -#endif /* WIN32 */ -/* Must come before sql.h */ -#define ODBCVER 0x0351 - -/* - * Default NAMEDATALEN value in the server. The server can be compiled with - * a different value, but this will do. - */ -#define NAMEDATALEN_V73 64 - -#ifndef NAMESTORAGELEN -#define NAMESTORAGELEN 64 -#endif /* NAMESTORAGELEN */ - -#if defined(WIN32) || defined(WITH_UNIXODBC) || defined(WITH_IODBC) -#ifdef WIN32 -#pragma warning(push) -#pragma warning(disable : 4201) // nonstandard extension used: nameless - // struct/union warning -#endif // WIN32 -#include -#include -#include -#if WIN32 -#pragma warning(pop) -#endif // WIN32 -#if defined(WIN32) && (_MSC_VER < 1300) /* in case of VC6 or under */ -#define SQLLEN SQLINTEGER -#define SQLULEN SQLUINTEGER -#define SQLSETPOSIROW SQLUSMALLINT -/* VC6 bypasses 64bit mode. */ -#define DWLP_USER DWL_USER -#define ULONG_PTR ULONG -#define LONG_PTR LONG -#define SetWindowLongPtr(hdlg, DWLP_USER, lParam) \ - SetWindowLong(hdlg, DWLP_USER, lParam) -#define GetWindowLongPtr(hdlg, DWLP_USER) GetWindowLong(hdlg, DWLP_USER); -#endif -#else -#include "iodbc.h" -#include "isql.h" -#include "isqlext.h" -#endif /* WIN32 */ - -#if defined(WIN32) -#include -#elif defined(WITH_UNIXODBC) -#include -#elif defined(WITH_IODBC) -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define Int4 int -#define UInt4 unsigned int -#define Int2 short -#define UInt2 unsigned short -typedef SQLBIGINT Int8; -typedef UInt4 OID; - -#ifndef SQL_TRUE -#define SQL_TRUE TRUE -#endif /* SQL_TRUE */ -#ifndef SQL_FALSE -#define SQL_FALSE FALSE -#endif /* SQL_FALSE */ - -#define FORMAT_SMALLI "%d" /* SQLSMALLINT */ -#define FORMAT_USMALLI "%u" /* SQLUSMALLINT */ -#ifdef WIN32 -#ifndef SSIZE_T_DEFINED -#define ssize_t SSIZE_T -#define SSIZE_T_DEFINED -#endif /* SSIZE_T */ -#define FORMAT_SIZE_T "%Iu" /* size_t */ -#define FORMAT_SSIZE_T "%Id" /* ssize_t */ -#define FORMAT_INTEGER "%ld" /* SQLINTEGER */ -#define FORMAT_UINTEGER "%lu" /* SQLUINTEGER */ -#define FORMATI64 "%I64d" /* SQLBIGINT */ -#define FORMATI64U "%I64u" /* SQLUBIGINT */ -#ifdef _WIN64 -#define FORMAT_LEN "%I64d" /* SQLLEN */ -#define FORMAT_ULEN "%I64u" /* SQLULEN */ -#define FORMAT_POSIROW "%I64u" -#else /* _WIN64 */ -#define FORMAT_LEN "%ld" /* SQLLEN */ -#define FORMAT_ULEN "%lu" /* SQLULEN */ -#define FORMAT_POSIROW "%hu" -#endif /* _WIN64 */ -#else /* WIN32 */ -#define FORMAT_SIZE_T "%zu" /* size_t */ -#define FORMAT_SSIZE_T "%zd" /* ssize_t */ -#ifndef HAVE_SSIZE_T -typedef long ssize_t; -#endif /* HAVE_SSIZE_T */ - -#ifndef SIZEOF_VOID_P -#ifdef __APPLE__ -#define SIZEOF_VOID_P 8 -#else -#error "SIZEOF_VOID_P must be defined" -#endif // __APPLE__ -#endif // SIZEOF_VOID_P - -#ifndef SIZEOF_LONG -#ifdef __APPLE__ -#define SIZEOF_LONG 8 -#else -#error "SIZEOF_LONG must be defined" -#endif // __APPLE__ -#endif // SIZEOF_LONG - -#if (SIZEOF_VOID_P == SIZEOF_LONG) /* ILP32 or LP64 */ -typedef long LONG_PTR; -typedef unsigned long ULONG_PTR; -#elif defined(HAVE_LONG_LONG) /* LLP64 */ -typedef long long LONG_PTR; -typedef unsigned long long ULONG_PTR; -#else /* SIZEOF_VOID_P */ -#error appropriate long pointer type not found -#endif /* SIZEOF_VOID_P */ -#if (SIZEOF_LONG == 8) /* LP64 */ -#define FORMAT_INTEGER "%d" /* SQLINTEGER */ -#define FORMAT_UINTEGER "%u" /* SQLUINTEGER */ -#define FORMATI64 "%ld" /* SQLBIGINT */ -#define FORMATI64U "%lu" /* SQLUBIGINT */ -#if defined(WITH_UNIXODBC) && defined(BUILD_LEGACY_64_BIT_MODE) -#define FORMAT_LEN "%d" /* SQLLEN */ -#define FORMAT_ULEN "%u" /* SQLULEN */ -#else /* WITH_UNIXODBC */ -#define FORMAT_LEN "%ld" /* SQLLEN */ -#define FORMAT_ULEN "%lu" /* SQLULEN */ -#endif /* WITH_UNIXODBC */ -#else /* SIZEOF_LONG */ -#define FORMAT_INTEGER "%ld" /* SQLINTEGER */ -#define FORMAT_UINTEGER "%lu" /* SQLUINTEGER */ -#if defined(HAVE_LONG_LONG) -#define FORMATI64 "%lld" /* SQLBIGINT */ -#define FORMATI64U "%llu" /* SQLUBIGINT */ -#if (SIZEOF_VOID_P == 8) /* LLP64 */ -#define FORMAT_LEN "%lld" /* SQLLEN */ -#define FORMAT_ULEN "%llu" /* SQLULEN */ -#else /* SIZEOF_VOID_P ILP32 */ -#define FORMAT_LEN "%ld" /* SQLLEN */ -#define FORMAT_ULEN "%lu" /* SQLULEN */ -#endif /* SIZEOF_VOID_P */ -#else /* HAVE_LONG_LONG */ -#define FORMAT_LEN "%ld" /* SQLLEN */ -#define FORMAT_ULEN "%lu" /* SQLULEN */ -#endif /* HAVE_LONG_LONG */ -#endif /* SIZEOF_LONG */ - -#if (SIZEOF_VOID_P == 8) && !defined(WITH_IODBC) -#define FORMAT_POSIROW FORMAT_ULEN -#else -#define FORMAT_POSIROW "%u" -#endif - -#endif /* WIN32 */ - -#define CAST_PTR(type, ptr) (type)((LONG_PTR)(ptr)) -#define CAST_UPTR(type, ptr) (type)((ULONG_PTR)(ptr)) -#ifndef SQL_IS_LEN -#define SQL_IS_LEN (-1000) -#endif /* SQL_IS_LEN */ -#ifdef HAVE_SIGNED_CHAR -typedef signed char po_ind_t; -#else -typedef char po_ind_t; -#endif /* HAVE_SIGNED_CHAR */ - -#ifndef WIN32 -#if !defined(WITH_UNIXODBC) && !defined(WITH_IODBC) -typedef float SFLOAT; -typedef double SDOUBLE; -#endif /* WITH_UNIXODBC */ - -#ifndef CALLBACK -#define CALLBACK -#endif /* CALLBACK */ -#endif /* WIN32 */ - -#ifndef WIN32 -#define stricmp strcasecmp -#define strnicmp strncasecmp -#ifndef TRUE -#define TRUE (BOOL)1 -#endif /* TRUE */ -#ifndef FALSE -#define FALSE (BOOL)0 -#endif /* FALSE */ -#else - -#if (_MSC_VER < 1900) /* vc12 or under */ -#define POSIX_SNPRINTF_REQUIRED -#define snprintf posix_snprintf -extern int posix_snprintf(char *buf, size_t size, const char *format, ...); -#endif /* _MSC_VER */ -#ifndef strdup -#define strdup _strdup -#endif /* strdup */ -#define strnicmp _strnicmp -#define stricmp _stricmp -#endif /* WIN32 */ - -#define IS_NOT_SPACE(c) ((c) && !isspace((UCHAR)c)) - -#ifndef SQL_ATTR_APP_ROW_DESC -#define SQL_ATTR_APP_ROW_DESC 10010 -#endif -#ifndef SQL_ATTR_APP_PARAM_DESC -#define SQL_ATTR_APP_PARAM_DESC 10011 -#endif -#ifndef SQL_ATTR_IMP_ROW_DESC -#define SQL_ATTR_IMP_ROW_DESC 10012 -#endif -#ifndef SQL_ATTR_IMP_PARAM_DESC -#define SQL_ATTR_IMP_PARAM_DESC 10013 -#endif - -/* Driver stuff */ - -#define DRIVERNAME "OpenSearch ODBC" - -#define DBMS_NAME_UNICODE "OpenSearch Unicode" -#define DBMS_NAME_ANSI "OpenSearch ANSI" - -#define DRIVER_ODBC_VER "03.51" - -#ifdef UNICODE_SUPPORT -#define WCLEN sizeof(SQLWCHAR) -SQLULEN ucs2strlen(const SQLWCHAR *); -#else -#undef SQL_WCHAR -#undef SQL_WVARCHAR -#undef SQL_WLONGVARCHAR -#undef SQL_C_WCHAR -#define SQL_WCHAR SQL_WCHAR_IS_INHIBITED -#define SQL_WVARCHAR SQL_WVARCHAR_IS_INHIBITED -#define SQL_WLONGVARCHAR SQL_WLONGVARCHAR_IS_INHIBITED -#define SQL_C_WCHAR SQL_C_WCHAR_IS_INHIBITED -#endif - -#ifndef DBMS_NAME -#ifdef _WIN64 -#ifdef UNICODE_SUPPORT -#define DBMS_NAME DBMS_NAME_UNICODE "(x64)" -#else -#define DBMS_NAME DBMS_NAME_ANSI "(x64)" -#endif /* UNICODE_SUPPORT */ -#else /* _WIN64 */ -#ifdef UNICODE_SUPPORT -#define DBMS_NAME DBMS_NAME_UNICODE -#else -#define DBMS_NAME DBMS_NAME_ANSI -#endif /* UNICODE_SUPPORT */ -#endif /* _WIN64 */ -#endif /* DBMS_NAME */ - -#ifndef DBMS_NAME -#define DBMS_NAME "OpenSearch Legacy" -#endif /* DBMS_NAME */ -#ifdef WIN32 -#ifdef UNICODE_SUPPORT -#define DRIVER_FILE_NAME "sqlodbc.dll" -#else -#define DRIVER_FILE_NAME "sqlodbc.dll" -#endif /* UNICODE_SUPPORT */ -#else -#ifdef UNICODE_SUPPORT -#define DRIVER_FILE_NAME "libsqlodbc.dylib" -#else -#define DRIVER_FILE_NAME "libsqlodbc.dylib" -#endif -#endif /* WIN32 */ -BOOL isMsAccess(void); -BOOL isMsQuery(void); -BOOL isSqlServr(void); - -/* ESCAPEs */ -#define ESCAPE_IN_LITERAL '\\' -#define BYTEA_ESCAPE_CHAR '\\' -#define SEARCH_PATTERN_ESCAPE '\\' -#define LITERAL_QUOTE '\'' -#define IDENTIFIER_QUOTE '\"' -#define ODBC_ESCAPE_START '{' -#define ODBC_ESCAPE_END '}' -#define DOLLAR_QUOTE '$' -#define LITERAL_EXT 'E' -#define OPENSEARCH_CARRIAGE_RETURN '\r' -#define OPENSEARCH_LINEFEED '\n' - -/* Limits */ -#define MAXESPATH 1024 - -/* see an easy way round this - DJP 24-1-2001 */ -#define MAX_CONNECT_STRING 4096 -#define FETCH_MAX \ - 100 /* default number of rows to cache \ \ - * for declare/fetch */ -#define TUPLE_MALLOC_INC 100 -#define MAX_CONNECTIONS \ - 128 /* conns per environment \ \ - * (arbitrary) */ - -#ifdef NAMEDATALEN -#define MAX_SCHEMA_LEN NAMEDATALEN -#define MAX_TABLE_LEN NAMEDATALEN -#define MAX_COLUMN_LEN NAMEDATALEN -#define NAME_FIELD_SIZE NAMEDATALEN /* size of name fields */ -#if (NAMEDATALEN > NAMESTORAGELEN) -#undef NAMESTORAGELEN -#define NAMESTORAGELEN NAMEDATALEN -#endif -#endif /* NAMEDATALEN */ -#define MAX_CURSOR_LEN 32 - -#define SCHEMA_NAME_STORAGE_LEN NAMESTORAGELEN -#define TABLE_NAME_STORAGE_LEN NAMESTORAGELEN -#define COLUMN_NAME_STORAGE_LEN NAMESTORAGELEN -#define INDEX_KEYS_STORAGE_COUNT 32 - -/* Registry length limits */ -#define LARGE_REGISTRY_LEN 4096 /* used for special cases */ -#define MEDIUM_REGISTRY_LEN \ - 256 /* normal size for \ \ - * user,database,etc. */ -#define SMALL_REGISTRY_LEN 10 /* for 1/0 settings */ - -/* These prefixes denote system tables */ -#define ELASTIC_SYS_PREFIX "es_" - -/* Info limits */ -#define MAX_INFO_STRING 128 - -/* POSIX defines a PATH_MAX.( wondows is _MAX_PATH ..) */ -#ifndef PATH_MAX -#ifdef _MAX_PATH -#define PATH_MAX _MAX_PATH -#else -#define PATH_MAX 1024 -#endif /* _MAX_PATH */ -#endif /* PATH_MAX */ - -typedef struct ConnectionClass_ ConnectionClass; -typedef struct StatementClass_ StatementClass; -typedef struct QResultClass_ QResultClass; -typedef struct BindInfoClass_ BindInfoClass; -typedef struct ParameterInfoClass_ ParameterInfoClass; -typedef struct ParameterImplClass_ ParameterImplClass; -typedef struct ColumnInfoClass_ ColumnInfoClass; -typedef struct EnvironmentClass_ EnvironmentClass; -typedef struct TupleField_ TupleField; -typedef struct KeySet_ KeySet; -typedef struct Rollback_ Rollback; -typedef struct ARDFields_ ARDFields; -typedef struct APDFields_ APDFields; -typedef struct IRDFields_ IRDFields; -typedef struct IPDFields_ IPDFields; - -typedef struct col_info COL_INFO; -typedef struct lo_arg LO_ARG; - -/* opensearchNAME type define */ -typedef struct { - char *name; -} opensearchNAME; -#define GET_NAME(the_name) ((the_name).name) -#define SAFE_NAME(the_name) ((the_name).name ? (the_name).name : NULL_STRING) -#define PRINT_NAME(the_name) ((the_name).name ? (the_name).name : PRINT_NULL) -#define NAME_IS_NULL(the_name) (NULL == (the_name).name) -#define NAME_IS_VALID(the_name) (NULL != (the_name).name) -#define INIT_NAME(the_name) ((the_name).name = NULL) -#define NULL_THE_NAME(the_name) \ - do { \ - if ((the_name).name) \ - free((the_name).name); \ - (the_name).name = NULL; \ - } while (0) -#define STR_TO_NAME(the_name, str) \ - do { \ - if ((the_name).name) \ - free((the_name).name); \ - (the_name).name = (str ? strdup((str)) : NULL); \ - } while (0) -#define STRX_TO_NAME(the_name, str) \ - do { \ - if ((the_name).name) \ - free((the_name).name); \ - (the_name).name = strdup((str)); \ - } while (0) -#define STRN_TO_NAME(the_name, str, n) \ - do { \ - if ((the_name).name) \ - free((the_name).name); \ - if (str) { \ - (the_name).name = malloc((n) + 1); \ - if ((the_name).name) { \ - memcpy((the_name).name, str, (n)); \ - (the_name).name[(n)] = '\0'; \ - } \ - } else \ - (the_name).name = NULL; \ - } while (0) -#define NAME_TO_NAME(to, from) \ - do { \ - if ((to).name) \ - free((to).name); \ - if ((from).name) \ - (to).name = strdup(from.name); \ - else \ - (to).name = NULL; \ - } while (0) -#define MOVE_NAME(to, from) \ - do { \ - if ((to).name) \ - free((to).name); \ - (to).name = (from).name; \ - (from).name = NULL; \ - } while (0) -#define SET_NAME_DIRECTLY(the_name, str) ((the_name).name = (str)) - -#define NAMECMP(name1, name2) (strcmp(SAFE_NAME(name1), SAFE_NAME(name2))) -#define NAMEICMP(name1, name2) (stricmp(SAFE_NAME(name1), SAFE_NAME(name2))) -/* opensearchNAME define end */ - -typedef struct GlobalValues_ { - opensearchNAME drivername; - char output_dir[LARGE_REGISTRY_LEN]; - int loglevel; -} GLOBAL_VALUES; - -void copy_globals(GLOBAL_VALUES *to, const GLOBAL_VALUES *from); -void init_globals(GLOBAL_VALUES *glbv); -void finalize_globals(GLOBAL_VALUES *glbv); - -typedef struct StatementOptions_ { - SQLLEN maxRows; - SQLLEN maxLength; - SQLLEN keyset_size; - SQLUINTEGER cursor_type; - SQLUINTEGER scroll_concurrency; - SQLUINTEGER retrieve_data; - SQLUINTEGER use_bookmarks; - void *bookmark_ptr; - SQLUINTEGER metadata_id; - SQLULEN stmt_timeout; -} StatementOptions; - -/* Used to pass extra query info to send_query */ -typedef struct QueryInfo_ { - SQLLEN row_size; - SQLLEN fetch_size; - QResultClass *result_in; - const char *cursor; -} QueryInfo; - -/* Used to save the error information */ -typedef struct { - UInt4 status; - Int2 errorsize; - Int2 recsize; - Int2 errorpos; - char sqlstate[6]; - SQLLEN diag_row_count; - char __error_message[40]; -} OpenSearch_ErrorInfo; -OpenSearch_ErrorInfo *ER_Constructor(SDWORD errornumber, const char *errormsg); -OpenSearch_ErrorInfo *ER_Dup(const OpenSearch_ErrorInfo *from); -void ER_Destructor(OpenSearch_ErrorInfo *); -RETCODE SQL_API ER_ReturnError(OpenSearch_ErrorInfo *, SQLSMALLINT, UCHAR *, - SQLINTEGER *, UCHAR *, SQLSMALLINT, - SQLSMALLINT *, UWORD); - -void logs_on_off(int cnopen, int, int); - -#define OPENSEARCH_TYPE_LO_UNDEFINED \ - (-999) /* hack until permanent \ \ - * type available */ -#define OPENSEARCH_TYPE_LO_NAME "lo" -#define CTID_ATTNUM (-1) /* the attnum of ctid */ -#define OID_ATTNUM (-2) /* the attnum of oid */ -#define XMIN_ATTNUM (-3) /* the attnum of xmin */ - -/* sizes */ -#define TEXT_FIELD_SIZE \ - 8190 /* size of default text fields \ \ - * (not including null term) */ -#define MAX_VARCHAR_SIZE \ - 512 /* default maximum size of \ \ - * varchar fields (not including null term) */ -#define INFO_VARCHAR_SIZE \ - 254 /* varchar field size \ \ - * used in info.c */ - -#define OPENSEARCH_NUMERIC_MAX_PRECISION 1000 -#define OPENSEARCH_NUMERIC_MAX_SCALE 1000 - -/* Sufficient digits to recover original float values */ -#define OPENSEARCH_REAL_DIGITS 9 -#define OPENSEARCH_DOUBLE_DIGITS 17 - -#define INFO_INQUIRY_LEN \ - 8192 /* this seems sufficiently big for \ \ - * queries used in info.c inoue \ \ - * 2001/05/17 */ -#define LENADDR_SHIFT(x, sft) ((x) ? (SQLLEN *)((char *)(x) + (sft)) : NULL) - -/* Structure to hold all the connection attributes for a specific - connection (used for both registry and file, DSN and DRIVER) -*/ -typedef struct { - // Connection - char dsn[MEDIUM_REGISTRY_LEN]; - char desc[MEDIUM_REGISTRY_LEN]; - char drivername[MEDIUM_REGISTRY_LEN]; - char server[MEDIUM_REGISTRY_LEN]; - char port[SMALL_REGISTRY_LEN]; - char response_timeout[SMALL_REGISTRY_LEN]; - char fetch_size[SMALL_REGISTRY_LEN]; - - // Authentication - char authtype[MEDIUM_REGISTRY_LEN]; - char username[MEDIUM_REGISTRY_LEN]; - opensearchNAME password; - char region[MEDIUM_REGISTRY_LEN]; - - // Encryption - char use_ssl; - char verify_server; - - GLOBAL_VALUES drivers; /* moved from driver's option */ -} ConnInfo; - -#define SUPPORT_DESCRIBE_PARAM(conninfo_) (1) - -int initialize_global_cs(void); -enum { /* CC_conninfo_init option */ - CLEANUP_FOR_REUSE = 1L /* reuse the info */ - , - INIT_GLOBALS = (1L << 1) /* init globals memebers */ -}; -void CC_conninfo_init(ConnInfo *conninfo, UInt4 option); -void CC_conninfo_release(ConnInfo *conninfo); -void CC_copy_conninfo(ConnInfo *ci, const ConnInfo *sci); -const char *GetExeProgramName(); - -/* Define a type for defining a constant string expression */ -#ifndef CSTR -#define CSTR static const char *const -#endif /* CSTR */ - -CSTR NULL_STRING = ""; -CSTR PRINT_NULL = "(null)"; -#define OID_NAME "oid" -#define XMIN_NAME "xmin" -#define TABLEOID_NAME "tableoid" - -enum { - DISALLOW_UPDATABLE_CURSORS = 0, /* No cursors are updatable */ - ALLOW_STATIC_CURSORS = 1L, /* Static cursors are updatable */ - ALLOW_KEYSET_DRIVEN_CURSORS = - (1L << 1), /* Keyset-driven cursors are updatable */ - ALLOW_DYNAMIC_CURSORS = (1L << 2), /* Dynamic cursors are updatable */ - ALLOW_BULK_OPERATIONS = (1L << 3), /* Bulk operations available */ - SENSE_SELF_OPERATIONS = (1L << 4), /* Sense self update/delete/add */ -}; - -#ifdef __cplusplus -} -#endif - -#include "mylog.h" - -#endif /* __OPENSEARCHODBC_H__ */ diff --git a/sql-odbc/src/sqlodbc/opensearch_odbc.rc b/sql-odbc/src/sqlodbc/opensearch_odbc.rc deleted file mode 100644 index 30cf00e849..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_odbc.rc +++ /dev/null @@ -1,257 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" -#include "version.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Japanese (Japan) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN) -LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT -#pragma code_page(932) - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "#include ""version.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // Japanese (Japan) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// English (United States) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -DLG_CONFIG DIALOGEX 65, 43, 275, 250 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "OpenSearch ODBC Driver DSN Setup" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - LTEXT "Data Source Name",IDC_DSNAMETEXT,23,7,77,12,NOT WS_GROUP - EDITTEXT IDC_DSNAME,108,6,120,12,ES_AUTOHSCROLL | WS_DISABLED - GROUPBOX "Connection Settings",IDC_CONN_SETTINGS,7,28,261,56 - LTEXT "Host",IDC_STATIC,20,46,20,8,NOT WS_GROUP - EDITTEXT IDC_SERVER,60,44,192,12,ES_AUTOHSCROLL - LTEXT "&Port",IDC_STATIC,20,66,19,8 - EDITTEXT IDC_PORT,60,64,192,13,ES_AUTOHSCROLL - GROUPBOX "Authentication Settings",IDC_AUTH_SETTINGS,7,93,260,92,BS_FLAT - LTEXT "Auth",IDC_AUTH_STATIC,21,110,19,8 - COMBOBOX IDC_AUTHTYPE,61,108,192,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP - LTEXT "User",IDC_USERNAME_STATIC,20,129,19,8 - EDITTEXT IDC_USER,61,127,191,12,ES_AUTOHSCROLL | WS_DISABLED - LTEXT "Password",IDC_PASSWORD_STATIC,20,149,41,12 - EDITTEXT IDC_PASSWORD,61,147,191,12,ES_PASSWORD | ES_AUTOHSCROLL | WS_DISABLED - LTEXT "Region",IDC_REGION_STATIC,20,170,28,8 - EDITTEXT IDC_REGION,61,168,191,12,ES_AUTOHSCROLL | WS_DISABLED - PUSHBUTTON "Advanced Options",ID_ADVANCED_OPTIONS,21,195,111,15,WS_GROUP - PUSHBUTTON "Logging Options",ID_LOG_OPTIONS,144,195,108,15,WS_GROUP - LTEXT "V.N.N.N",IDC_DRIVER_VERSION,10,228,108,8 - DEFPUSHBUTTON "OK",IDOK,119,224,44,15,WS_GROUP - DEFPUSHBUTTON "Test",IDOK2,167,224,44,15,WS_GROUP - PUSHBUTTON "Cancel",IDCANCEL,215,224,44,15 -END - -DLG_ADVANCED_OPTIONS DIALOGEX 0, 0, 157, 113 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Advanced Options" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - GROUPBOX "",IDC_STATIC,12,4,133,85 - CONTROL "SSL",IDC_USESSL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,12,10,11 - LTEXT "Enable SSL",IDC_SSL_STATIC,37,14,39,8 - CONTROL "Host Verification",IDC_HOST_VER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,32,10,9 - LTEXT "Hostname Verification",IDC_HOST_VER_STATIC,37,32,71,8 - LTEXT "Response Timeout (s)",IDC_CONNTIMEOUT_STATIC,19,51,70,8 - EDITTEXT IDC_CONNTIMEOUT,96,50,43,12,ES_AUTOHSCROLL - DEFPUSHBUTTON "OK",IDOK,49,94,44,14,WS_GROUP - PUSHBUTTON "Cancel",IDCANCEL,98,93,47,15 - LTEXT "Fetch Size",IDC_FETCH_SIZE_STATIC,19,71,35,8 - EDITTEXT IDC_FETCH_SIZE,96,70,43,12,ES_AUTOHSCROLL -END - -DLG_LOG_OPTIONS DIALOGEX 0, 0, 251, 79 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Logging Options" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - GROUPBOX "",IDC_STATIC,10,4,230,51 - LTEXT "Log Level",IDC_STATIC,22,15,31,8 - COMBOBOX IDC_LOG_LEVEL,71,13,149,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Log Path",IDC_STATIC,22,38,29,8 - EDITTEXT IDC_LOG_PATH,71,36,149,12,ES_AUTOHSCROLL - DEFPUSHBUTTON "OK",IDOK,144,60,44,14,WS_GROUP - PUSHBUTTON "Cancel",IDCANCEL,193,59,47,15 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - DLG_CONFIG, DIALOG - BEGIN - RIGHTMARGIN, 270 - TOPMARGIN, 1 - BOTTOMMARGIN, 200 - END - - DLG_ADVANCED_OPTIONS, DIALOG - BEGIN - LEFTMARGIN, 5 - RIGHTMARGIN, 152 - TOPMARGIN, 5 - BOTTOMMARGIN, 108 - END - - DLG_LOG_OPTIONS, DIALOG - BEGIN - LEFTMARGIN, 5 - RIGHTMARGIN, 246 - TOPMARGIN, 5 - BOTTOMMARGIN, 74 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION OPENSEARCH_DRVFILE_VERSION - PRODUCTVERSION OPENSEARCH_DRVFILE_VERSION - FILEFLAGSMASK 0x3L -#ifdef _DEBUG - FILEFLAGS 0x9L -#else - FILEFLAGS 0x8L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904e4" - BEGIN - VALUE "Comments", "OpenSearch ANSI ODBC driver" - VALUE "CompanyName", "Amazon" - VALUE "FileDescription", "OpenSearch ODBC Driver (English)" - VALUE "FileVersion", OPENSEARCH_ODBC_VERSION - VALUE "InternalName", "sqlodbc" - VALUE "LegalCopyright", "Copyright" - VALUE "LegalTrademarks", "ODBC(TM) is a trademark of Microsoft Corporation. Microsoft? is a registered trademark of Microsoft Corporation. Windows(TM) is a trademark of Microsoft Corporation." - VALUE "OriginalFilename", "sqlodbc.dll" - VALUE "ProductName", "OpenSearch" - VALUE "ProductVersion", OPENSEARCH_ODBC_VERSION - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 - END -END - - -///////////////////////////////////////////////////////////////////////////// -// -// AFX_DIALOG_LAYOUT -// - -DLG_CONFIG AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -DLG_ADVANCED_OPTIONS AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -DLG_LOG_OPTIONS AFX_DIALOG_LAYOUT -BEGIN - 0 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_AUTHTYPE_NONE "NONE" - IDS_AUTHTYPE_BASIC "BASIC" - IDS_AUTHTYPE_IAM "AWS_SIGV4" - IDS_LOGTYPE_OFF "LOG_OFF" - IDS_LOGTYPE_FATAL "LOG_FATAL" - IDS_LOGTYPE_ERROR "LOG_ERROR" - IDS_LOGTYPE_WARNING "LOG_WARNING" - IDS_LOGTYPE_INFO "LOG_INFO" - IDS_LOGTYPE_DEBUG "LOG_DEBUG" - IDS_LOGTYPE_TRACE "LOG_TRACE" - IDS_LOGTYPE_ALL "LOG_ALL" -END - -#endif // English (United States) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/sql-odbc/src/sqlodbc/opensearch_parse_result.cpp b/sql-odbc/src/sqlodbc/opensearch_parse_result.cpp deleted file mode 100644 index aa77d718b9..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_parse_result.cpp +++ /dev/null @@ -1,461 +0,0 @@ -#include "opensearch_parse_result.h" - -#include - -#include "opensearch_types.h" -#include "opensearch_helper.h" -#ifdef __APPLE__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunused-parameter" -#endif // __APPLE__ -#include "rabbit.hpp" -#ifdef __APPLE__ -#pragma clang diagnostic pop -#endif // __APPLE__ -#include "statement.h" - -typedef std::vector< std::pair< std::string, OID > > schema_type; -typedef rabbit::array json_arr; -typedef json_arr::iterator::result_type json_arr_it; - -bool _CC_from_OpenSearchResult(QResultClass *q_res, ConnectionClass *conn, - const char *cursor, - OpenSearchResult &opensearch_result); -bool _CC_Metadata_from_OpenSearchResult(QResultClass *q_res, ConnectionClass *conn, - const char *cursor, - OpenSearchResult &opensearch_result); -bool _CC_No_Metadata_from_OpenSearchResult(QResultClass *q_res, ConnectionClass *conn, - const char *cursor, - OpenSearchResult &opensearch_result); -void GetSchemaInfo(schema_type &schema, json_doc &opensearch_result_doc); -bool AssignColumnHeaders(const schema_type &doc_schema, QResultClass *q_res, - const OpenSearchResult &opensearch_result); -bool AssignTableData(json_doc &opensearch_result_doc, QResultClass *q_res, - size_t doc_schema_size, ColumnInfoClass &fields); -bool AssignRowData(const json_arr_it &row, size_t row_schema_size, - QResultClass *q_res, ColumnInfoClass &fields, - const size_t &row_size); -void UpdateResultFields(QResultClass *q_res, const ConnectionClass *conn, - const SQLULEN starting_cached_rows, const char *cursor, - std::string &command_type); -bool QR_prepare_for_tupledata(QResultClass *q_res); -void SetError(const char *err); -void ClearError(); - -// clang-format off -// Not all of these are being used at the moment, but these are the keywords in the json -static const std::string JSON_KW_SCHEMA = "schema"; -static const std::string JSON_KW_NAME = "name"; -static const std::string JSON_KW_TYPE = "type"; -static const std::string JSON_KW_TOTAL = "total"; -static const std::string JSON_KW_SIZE = "size"; -static const std::string JSON_KW_STATUS = "status"; -static const std::string JSON_KW_DATAROWS = "datarows"; -static const std::string JSON_KW_ERROR = "error"; -static const std::string JSON_KW_CURSOR = "cursor"; - -// clang-format on -const std::unordered_map< std::string, OID > type_to_oid_map = { - {OPENSEARCH_TYPE_NAME_BOOLEAN, OPENSEARCH_TYPE_BOOL}, - {OPENSEARCH_TYPE_NAME_BYTE, OPENSEARCH_TYPE_INT2}, - {OPENSEARCH_TYPE_NAME_SHORT, OPENSEARCH_TYPE_INT2}, - {OPENSEARCH_TYPE_NAME_INTEGER, OPENSEARCH_TYPE_INT4}, - {OPENSEARCH_TYPE_NAME_LONG, OPENSEARCH_TYPE_INT8}, - {OPENSEARCH_TYPE_NAME_HALF_FLOAT, OPENSEARCH_TYPE_FLOAT4}, - {OPENSEARCH_TYPE_NAME_FLOAT, OPENSEARCH_TYPE_FLOAT4}, - {OPENSEARCH_TYPE_NAME_DOUBLE, OPENSEARCH_TYPE_FLOAT8}, - {OPENSEARCH_TYPE_NAME_SCALED_FLOAT, OPENSEARCH_TYPE_FLOAT8}, - {OPENSEARCH_TYPE_NAME_KEYWORD, OPENSEARCH_TYPE_VARCHAR}, - {OPENSEARCH_TYPE_NAME_TEXT, OPENSEARCH_TYPE_VARCHAR}, - {OPENSEARCH_TYPE_NAME_DATE, OPENSEARCH_TYPE_TIMESTAMP}, - {OPENSEARCH_TYPE_NAME_OBJECT, OPENSEARCH_TYPE_VARCHAR}, - {OPENSEARCH_TYPE_NAME_VARCHAR, OPENSEARCH_TYPE_VARCHAR}, - {OPENSEARCH_TYPE_NAME_DATE, OPENSEARCH_TYPE_DATE}}; - -#define OPENSEARCH_VARCHAR_SIZE (-2) -const std::unordered_map< OID, int16_t > oid_to_size_map = { - {OPENSEARCH_TYPE_BOOL, (int16_t)1}, - {OPENSEARCH_TYPE_INT2, (int16_t)2}, - {OPENSEARCH_TYPE_INT4, (int16_t)4}, - {OPENSEARCH_TYPE_INT8, (int16_t)8}, - {OPENSEARCH_TYPE_FLOAT4, (int16_t)4}, - {OPENSEARCH_TYPE_FLOAT8, (int16_t)8}, - {OPENSEARCH_TYPE_VARCHAR, (int16_t)OPENSEARCH_VARCHAR_SIZE}, - {OPENSEARCH_TYPE_DATE, (int16_t)OPENSEARCH_VARCHAR_SIZE}, - {OPENSEARCH_TYPE_TIMESTAMP, (int16_t)1}}; - -// Using global variable here so that the error message can be propagated -// without going otu of scope -std::string error_msg; - -void SetError(const char *err) { - error_msg = err; -} -void ClearError() { - error_msg = ""; -} -std::string GetResultParserError() { - return error_msg; -} - -BOOL CC_from_OpenSearchResult(QResultClass *q_res, ConnectionClass *conn, - const char *cursor, - OpenSearchResult &opensearch_result) { - ClearError(); - return _CC_from_OpenSearchResult(q_res, conn, cursor, opensearch_result) ? TRUE : FALSE; -} - -BOOL CC_Metadata_from_OpenSearchResult(QResultClass *q_res, ConnectionClass *conn, - const char *cursor, - OpenSearchResult &opensearch_result) { - ClearError(); - return _CC_Metadata_from_OpenSearchResult(q_res, conn, cursor, - opensearch_result) ? TRUE : FALSE; -} - -BOOL CC_No_Metadata_from_OpenSearchResult(QResultClass *q_res, ConnectionClass *conn, - const char *cursor, - OpenSearchResult &opensearch_result) { - ClearError(); - return _CC_No_Metadata_from_OpenSearchResult(q_res, conn, cursor, - opensearch_result) - ? TRUE - : FALSE; -} - -BOOL CC_Append_Table_Data(json_doc &opensearch_result_doc, QResultClass *q_res, - size_t doc_schema_size, ColumnInfoClass &fields) { - ClearError(); - return AssignTableData(opensearch_result_doc, q_res, doc_schema_size, fields) - ? TRUE - : FALSE; -} - -bool _CC_No_Metadata_from_OpenSearchResult(QResultClass *q_res, ConnectionClass *conn, - const char *cursor, - OpenSearchResult &opensearch_result) { - // Note - NULL conn and/or cursor is valid - if (q_res == NULL) - return false; - - try { - schema_type doc_schema; - GetSchemaInfo(doc_schema, opensearch_result.opensearch_result_doc); - - SQLULEN starting_cached_rows = q_res->num_cached_rows; - - // Assign table data and column headers - if (!AssignTableData(opensearch_result.opensearch_result_doc, q_res, doc_schema.size(), - *(q_res->fields))) - return false; - - // Update fields of QResult to reflect data written - UpdateResultFields(q_res, conn, starting_cached_rows, cursor, - opensearch_result.command_type); - - // Return true (success) - return true; - } catch (const rabbit::type_mismatch &e) { - SetError(e.what()); - } catch (const rabbit::parse_error &e) { - SetError(e.what()); - } catch (const std::exception &e) { - SetError(e.what()); - } catch (...) { - SetError("Unknown exception thrown in _CC_No_Metadata_from_OpenSearchResult."); - } - - // Exception occurred, return false (error) - return false; -} - -bool _CC_Metadata_from_OpenSearchResult(QResultClass *q_res, ConnectionClass *conn, - const char *cursor, - OpenSearchResult &opensearch_result) { - // Note - NULL conn and/or cursor is valid - if (q_res == NULL) - return false; - - QR_set_conn(q_res, conn); - try { - schema_type doc_schema; - GetSchemaInfo(doc_schema, opensearch_result.opensearch_result_doc); - - // Assign table data and column headers - if (!AssignColumnHeaders(doc_schema, q_res, opensearch_result)) - return false; - - // Set command type and cursor name - QR_set_command(q_res, opensearch_result.command_type.c_str()); - QR_set_cursor(q_res, cursor); - if (cursor == NULL) - QR_set_reached_eof(q_res); - - // Return true (success) - return true; - } catch (const rabbit::type_mismatch &e) { - SetError(e.what()); - } catch (const rabbit::parse_error &e) { - SetError(e.what()); - } catch (const std::exception &e) { - SetError(e.what()); - } catch (...) { - SetError("Unknown exception thrown in _CC_Metadata_from_OpenSearchResult."); - } - - // Exception occurred, return false (error) - return false; -} - -bool _CC_from_OpenSearchResult(QResultClass *q_res, ConnectionClass *conn, - const char *cursor, - OpenSearchResult &opensearch_result) { - // Note - NULL conn and/or cursor is valid - if (q_res == NULL) - return false; - - QR_set_conn(q_res, conn); - try { - schema_type doc_schema; - GetSchemaInfo(doc_schema, opensearch_result.opensearch_result_doc); - SQLULEN starting_cached_rows = q_res->num_cached_rows; - - // Assign table data and column headers - if ((!AssignColumnHeaders(doc_schema, q_res, opensearch_result)) - || (!AssignTableData(opensearch_result.opensearch_result_doc, q_res, doc_schema.size(), - *(q_res->fields)))) - return false; - - // Update fields of QResult to reflect data written - UpdateResultFields(q_res, conn, starting_cached_rows, cursor, - opensearch_result.command_type); - - // Return true (success) - return true; - } catch (const rabbit::type_mismatch &e) { - SetError(e.what()); - } catch (const rabbit::parse_error &e) { - SetError(e.what()); - } catch (const std::exception &e) { - SetError(e.what()); - } catch (...) { - SetError("Unknown exception thrown in CC_from_OpenSearchResult."); - } - - // Exception occurred, return false (error) - return false; -} - -void GetSchemaInfo(schema_type &schema, json_doc &opensearch_result_doc) { - json_arr schema_arr = opensearch_result_doc[JSON_KW_SCHEMA]; - for (auto it : schema_arr) { - auto mapped_oid = type_to_oid_map.find(it[JSON_KW_TYPE].as_string()); - OID type_oid = (mapped_oid == type_to_oid_map.end()) - ? SQL_WVARCHAR - : mapped_oid->second; - schema.push_back( - std::make_pair(it[JSON_KW_NAME].as_string(), type_oid)); - } -} - -bool AssignColumnHeaders(const schema_type &doc_schema, QResultClass *q_res, - const OpenSearchResult &opensearch_result) { - // Verify server_info size matches the schema size - if (opensearch_result.column_info.size() != doc_schema.size()) - return false; - - // Allocte memory for column fields - QR_set_num_fields(q_res, (uint16_t)opensearch_result.column_info.size()); - if (QR_get_fields(q_res)->coli_array == NULL) - return false; - - // Assign column info - for (size_t i = 0; i < doc_schema.size(); i++) { - auto type_size_ptr = oid_to_size_map.find(doc_schema[i].second); - int16_t type_size = (type_size_ptr == oid_to_size_map.end()) - ? OPENSEARCH_ADT_UNSET - : type_size_ptr->second; - CI_set_field_info(QR_get_fields(q_res), (int)i, - doc_schema[i].first.c_str(), doc_schema[i].second, - type_size, - opensearch_result.column_info[i].length_of_str, - opensearch_result.column_info[i].relation_id, - opensearch_result.column_info[i].attribute_number); - QR_set_rstatus(q_res, PORES_FIELDS_OK); - } - q_res->num_fields = CI_get_num_fields(QR_get_fields(q_res)); - - return true; -} - -// Responsible for looping through rows, allocating tuples and passing rows for -// assignment -bool AssignTableData(json_doc &opensearch_result_doc, QResultClass *q_res, - size_t doc_schema_size, ColumnInfoClass &fields) { - // Assign row info - json_arr opensearch_result_data = opensearch_result_doc[JSON_KW_DATAROWS]; - if (opensearch_result_data.size() == 0) - return true; - - // Figure out number of columns are in a row and make schema is not bigger - // than it - size_t row_size = std::distance(opensearch_result_data.begin()->value_begin(), - opensearch_result_data.begin()->value_end()); - if (row_size < doc_schema_size) { - return false; - } - for (auto it : opensearch_result_data) { - // Setup memory to receive tuple - if (!QR_prepare_for_tupledata(q_res)) - return false; - - // Assign row data - if (!AssignRowData(it, doc_schema_size, q_res, fields, row_size)) - return false; - } - - return true; -} - -// Responsible for assigning row data to tuples -bool AssignRowData(const json_arr_it &row, size_t row_schema_size, - QResultClass *q_res, ColumnInfoClass &fields, - const size_t &row_size) { - TupleField *tuple = - q_res->backend_tuples + (q_res->num_cached_rows * row_size); - - // Setup keyset if present - KeySet *ks = NULL; - if (QR_haskeyset(q_res)) { - ks = q_res->keyset + q_res->num_cached_keys; - ks->status = 0; - } - - // Loop through and assign data - size_t i = 0; - for (auto row_column = row.value_begin(); i < row_schema_size; - ++row_column, ++i) { - if (row_column->is_null()) { - tuple[i].len = SQL_NULL_DATA; - tuple[i].value = NULL; - } else { - // Copy string over to tuple - const std::string data = row_column->str(); - tuple[i].len = static_cast< int >(data.length()); - QR_MALLOC_return_with_error( - tuple[i].value, char, data.length() + 1, q_res, - "Out of memory in allocating item buffer.", false); - strcpy((char *)tuple[i].value, data.c_str()); - - // If data length exceeds current display size, set display size - if (fields.coli_array[i].display_size < tuple[i].len) - fields.coli_array[i].display_size = tuple[i].len; - } - } - - // If there are more rows than schema suggests, we have Keyset data - if (row_size > row_schema_size) { - if (ks == NULL) { - QR_set_rstatus(q_res, PORES_INTERNAL_ERROR); - QR_set_message(q_res, - "Keyset was NULL, but Keyset data was expected."); - return false; - } - - auto row_column = row.value_begin() + row_schema_size; - if (sscanf(row_column->str().c_str(), "(%u,%hu)", &ks->blocknum, - &ks->offset) - != 2) { - QR_set_rstatus(q_res, PORES_INTERNAL_ERROR); - QR_set_message(q_res, "Failed to assign Keyset."); - return false; - } - row_column++; - ks->oid = std::stoul(row_column->str(), nullptr, 10); - } - - // Increment relevant data - q_res->cursTuple++; - if (q_res->num_fields > 0) - QR_inc_num_cache(q_res); - else if (QR_haskeyset(q_res)) - q_res->num_cached_keys++; - - if ((SQLULEN)q_res->cursTuple >= q_res->num_total_read) - q_res->num_total_read = q_res->cursTuple + 1; - return true; -} - -void UpdateResultFields(QResultClass *q_res, const ConnectionClass *conn, - const SQLULEN starting_cached_rows, const char *cursor, - std::string &command_type) { - // Adjust total read - if (!QR_once_reached_eof(q_res) - && q_res->cursTuple >= (Int4)q_res->num_total_read) - q_res->num_total_read = q_res->cursTuple + 1; - - // Adjust eof and tuple cursor - if (q_res->num_cached_rows - starting_cached_rows < q_res->cmd_fetch_size) { - QR_set_reached_eof(q_res); - if (q_res->cursTuple < (Int4)q_res->num_total_read) - q_res->cursTuple = q_res->num_total_read; - } - - // Handle NULL connection - if (conn != NULL) { - q_res->fetch_number = static_cast< SQLLEN >(0); - QR_set_rowstart_in_cache(q_res, 0); - q_res->key_base = 0; - } - - // Set command type and cursor name - QR_set_command(q_res, command_type.c_str()); - QR_set_cursor(q_res, cursor); - if (cursor == NULL) - QR_set_reached_eof(q_res); - - // Set flags, adjust pointers, and return true (success) - q_res->dataFilled = true; - q_res->tupleField = - q_res->backend_tuples + (q_res->fetch_number * q_res->num_fields); - QR_set_rstatus(q_res, PORES_TUPLES_OK); -} - -bool QR_prepare_for_tupledata(QResultClass *q_res) { - if (QR_get_cursor(q_res)) { - return true; - } - - // If total tuples > allocated tuples, need to reallocate - if (q_res->num_fields > 0 - && QR_get_num_total_tuples(q_res) >= q_res->count_backend_allocated) { - SQLLEN tuple_size = (q_res->count_backend_allocated < 1) - ? TUPLE_MALLOC_INC - : q_res->count_backend_allocated * 2; - - // Will return false if allocation fails - QR_REALLOC_return_with_error( - q_res->backend_tuples, TupleField, - tuple_size * q_res->num_fields * sizeof(TupleField), q_res, - "Out of memory while reading tuples.", false); - q_res->count_backend_allocated = tuple_size; - } - - // If total keyset > allocated keyset, need to reallocate - if (QR_haskeyset(q_res) - && q_res->num_cached_keys >= q_res->count_keyset_allocated) { - SQLLEN keyset_size = (q_res->count_keyset_allocated < 1) - ? TUPLE_MALLOC_INC - : q_res->count_keyset_allocated * 2; - - // Will return false if macro fails - QR_REALLOC_return_with_error( - q_res->keyset, KeySet, sizeof(KeySet) * keyset_size, q_res, - "Out of memory while allocating keyset", false); - memset(&q_res->keyset[q_res->count_keyset_allocated], 0, - (keyset_size - q_res->count_keyset_allocated) * sizeof(KeySet)); - q_res->count_keyset_allocated = keyset_size; - } - - return true; -} diff --git a/sql-odbc/src/sqlodbc/opensearch_parse_result.h b/sql-odbc/src/sqlodbc/opensearch_parse_result.h deleted file mode 100644 index b74f180901..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_parse_result.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef _OPENSEARCH_PARSE_RESULT_H_ -#define _OPENSEARCH_PARSE_RESULT_H_ -#include "qresult.h" - -#ifdef __cplusplus -std::string GetResultParserError(); -extern "C" { -#endif -#ifdef __cplusplus -} -#endif - -#ifdef __cplusplus -#include "opensearch_helper.h" -typedef rabbit::document json_doc; -// const char* is used instead of string for the cursor, because a NULL cursor -// is sometimes used Cannot pass q_res as reference because it breaks qresult.h -// macros that expect to use -> operator -BOOL CC_from_OpenSearchResult(QResultClass *q_res, ConnectionClass *conn, - const char *cursor, - OpenSearchResult &opensearch_result); -BOOL CC_Metadata_from_OpenSearchResult(QResultClass *q_res, ConnectionClass *conn, - const char *cursor, - OpenSearchResult &opensearch_result); -BOOL CC_No_Metadata_from_OpenSearchResult(QResultClass *q_res, ConnectionClass *conn, - const char *cursor, - OpenSearchResult &opensearch_result); -BOOL CC_Append_Table_Data(json_doc &opensearch_result_doc, QResultClass *q_res, - size_t doc_schema_size, ColumnInfoClass &fields); -#endif -#endif diff --git a/sql-odbc/src/sqlodbc/opensearch_result_queue.cpp b/sql-odbc/src/sqlodbc/opensearch_result_queue.cpp deleted file mode 100644 index dc6d3ddd7a..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_result_queue.cpp +++ /dev/null @@ -1,48 +0,0 @@ -#include "opensearch_result_queue.h" - -#include "opensearch_types.h" - -OpenSearchResultQueue::OpenSearchResultQueue(unsigned int capacity) - : m_push_semaphore(capacity, capacity), - m_pop_semaphore(0, capacity) { -} - -OpenSearchResultQueue::~OpenSearchResultQueue() { - while (!m_queue.empty()) { - delete m_queue.front(); - m_queue.pop(); - } -} - -void OpenSearchResultQueue::clear() { - std::scoped_lock lock(m_queue_mutex); - while (!m_queue.empty()) { - delete m_queue.front(); - m_queue.pop(); - m_push_semaphore.release(); - m_pop_semaphore.lock(); - } -} - -bool OpenSearchResultQueue::pop(unsigned int timeout_ms, OpenSearchResult*& result) { - if (m_pop_semaphore.try_lock_for(timeout_ms)) { - std::scoped_lock lock(m_queue_mutex); - result = m_queue.front(); - m_queue.pop(); - m_push_semaphore.release(); - return true; - } - - return false; -} - -bool OpenSearchResultQueue::push(unsigned int timeout_ms, OpenSearchResult* result) { - if (m_push_semaphore.try_lock_for(timeout_ms)) { - std::scoped_lock lock(m_queue_mutex); - m_queue.push(result); - m_pop_semaphore.release(); - return true; - } - - return false; -} diff --git a/sql-odbc/src/sqlodbc/opensearch_result_queue.h b/sql-odbc/src/sqlodbc/opensearch_result_queue.h deleted file mode 100644 index fef33da401..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_result_queue.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef OPENSEARCH_RESULT_QUEUE -#define OPENSEARCH_RESULT_QUEUE - -#include -#include - -#include "opensearch_semaphore.h" - -#define QUEUE_TIMEOUT 20 // milliseconds - -struct OpenSearchResult; - -class OpenSearchResultQueue { - public: - OpenSearchResultQueue(unsigned int capacity); - ~OpenSearchResultQueue(); - - void clear(); - bool pop(unsigned int timeout_ms, OpenSearchResult*& result); - bool push(unsigned int timeout_ms, OpenSearchResult* result); - - private: - std::queue< OpenSearchResult*> m_queue; - std::mutex m_queue_mutex; - opensearch_semaphore m_push_semaphore; - opensearch_semaphore m_pop_semaphore; -}; - -#endif diff --git a/sql-odbc/src/sqlodbc/opensearch_semaphore.cpp b/sql-odbc/src/sqlodbc/opensearch_semaphore.cpp deleted file mode 100644 index c35ac77461..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_semaphore.cpp +++ /dev/null @@ -1,89 +0,0 @@ -#include "opensearch_semaphore.h" - -#include - -#ifdef WIN32 -namespace { -HANDLE createSemaphore(unsigned int initial, unsigned int capacity) { - HANDLE semaphore = NULL; - std::string semName; - while (NULL == semaphore) { - semName = "es_sem_" + std::to_string(rand() * 1000); - semaphore = CreateSemaphore(NULL, initial, capacity, semName.c_str()); - } - - return semaphore; -} -} // namespace -#else -#include -#endif - -#ifdef __APPLE__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunused-parameter" -#endif // __APPLE__ -opensearch_semaphore::opensearch_semaphore(unsigned int initial, unsigned int capacity) -#ifdef __APPLE__ -#pragma clang diagnostic pop -#endif // __APPLE__ - : -#ifdef WIN32 - m_semaphore(createSemaphore(initial, capacity)) -#elif defined(__APPLE__) - m_semaphore(dispatch_semaphore_create(initial)) -#endif -{ -#if !defined(WIN32) && !defined(__APPLE__) - sem_init(&m_semaphore, 0, capacity); -#endif -} - -opensearch_semaphore::~opensearch_semaphore() { -#ifdef WIN32 - CloseHandle(m_semaphore); -#elif defined(__APPLE__) -#else - sem_destroy(&m_semaphore); -#endif -} - -void opensearch_semaphore::lock() { -#ifdef WIN32 - WaitForSingleObject(m_semaphore, INFINITE); -#elif defined(__APPLE__) - dispatch_semaphore_wait(m_semaphore, DISPATCH_TIME_FOREVER); -#else - sem_wait(&m_semaphore); -#endif -} - -void opensearch_semaphore::release() { -#ifdef WIN32 - ReleaseSemaphore(m_semaphore, 1, NULL); -#elif defined(__APPLE__) - dispatch_semaphore_signal(m_semaphore); -#else - sem_post(&m_semaphore); -#endif -} - -bool opensearch_semaphore::try_lock_for(unsigned int timeout_ms) { -#ifdef WIN32 - return WaitForSingleObject(m_semaphore, timeout_ms) == WAIT_OBJECT_0; -#elif defined(__APPLE__) - return 0 - == dispatch_semaphore_wait( - m_semaphore, dispatch_time(DISPATCH_TIME_NOW, - static_cast< int64_t >( - timeout_ms * NSEC_PER_MSEC))); -#else - struct timespec ts; - if (-1 == clock_gettime(CLOCK_REALTIME, &ts)) { - return false; - } - - ts.tv_nsec += timeout_ms * 1000000; - return 0 == sem_timedwait(&m_semaphore & ts); -#endif -} diff --git a/sql-odbc/src/sqlodbc/opensearch_semaphore.h b/sql-odbc/src/sqlodbc/opensearch_semaphore.h deleted file mode 100644 index a5ffdbfc0e..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_semaphore.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef OPENSEARCH_SEMAPHORE -#define OPENSEARCH_SEMAPHORE - -#ifdef WIN32 - #include -#elif defined(__APPLE__) - #include -#else - #include -#endif - -class opensearch_semaphore { - public: - opensearch_semaphore(unsigned int initial, unsigned int capacity); - ~opensearch_semaphore(); - - void lock(); - void release(); - bool try_lock_for(unsigned int timeout_ms); - - private: -#ifdef WIN32 - HANDLE m_semaphore; -#elif defined(__APPLE__) - dispatch_semaphore_t m_semaphore; -#else - sem_t m_semaphore; -#endif -}; - -#endif diff --git a/sql-odbc/src/sqlodbc/opensearch_statement.cpp b/sql-odbc/src/sqlodbc/opensearch_statement.cpp deleted file mode 100644 index 94a91d0f77..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_statement.cpp +++ /dev/null @@ -1,335 +0,0 @@ -#include "opensearch_statement.h" - -#include "environ.h" // Critical section for statment -#include "misc.h" -#include "opensearch_apifunc.h" -#include "opensearch_helper.h" -#include "statement.h" - -extern "C" void *common_cs; - -RETCODE ExecuteStatement(StatementClass *stmt, BOOL commit) { - CSTR func = "ExecuteStatement"; - int func_cs_count = 0; - ConnectionClass *conn = SC_get_conn(stmt); - CONN_Status oldstatus = conn->status; - - auto CleanUp = [&]() -> RETCODE { - SC_SetExecuting(stmt, FALSE); - CLEANUP_FUNC_CONN_CS(func_cs_count, conn); - if (conn->status != CONN_DOWN) - conn->status = oldstatus; - if (SC_get_errornumber(stmt) == STMT_OK) - return SQL_SUCCESS; - else if (SC_get_errornumber(stmt) < STMT_OK) - return SQL_SUCCESS_WITH_INFO; - else { - if (!SC_get_errormsg(stmt) || !SC_get_errormsg(stmt)[0]) { - if (STMT_NO_MEMORY_ERROR != SC_get_errornumber(stmt)) - SC_set_errormsg(stmt, "Error while executing the query"); - SC_log_error(func, NULL, stmt); - } - return SQL_ERROR; - } - }; - - ENTER_INNER_CONN_CS(conn, func_cs_count); - - if (conn->status == CONN_EXECUTING) { - SC_set_error(stmt, STMT_SEQUENCE_ERROR, "Connection is already in use.", - func); - return CleanUp(); - } - - if (!SC_SetExecuting(stmt, TRUE)) { - SC_set_error(stmt, STMT_OPERATION_CANCELLED, "Cancel Request Accepted", - func); - return CleanUp(); - } - - conn->status = CONN_EXECUTING; - - QResultClass *res = SendQueryGetResult(stmt, commit); - if (!res) { - std::string es_conn_err = GetErrorMsg(SC_get_conn(stmt)->opensearchconn); - ConnErrorType es_err_type = GetErrorType(SC_get_conn(stmt)->opensearchconn); - std::string es_parse_err = GetResultParserError(); - if (!es_conn_err.empty()) { - if (es_err_type == ConnErrorType::CONN_ERROR_QUERY_SYNTAX) { - SC_set_error(stmt, STMT_QUERY_SYNTAX_ERROR, es_conn_err.c_str(), - func); - } else { - SC_set_error(stmt, STMT_NO_RESPONSE, es_conn_err.c_str(), func); - } - } else if (!es_parse_err.empty()) { - SC_set_error(stmt, STMT_EXEC_ERROR, es_parse_err.c_str(), func); - } else if (SC_get_errornumber(stmt) <= 0) { - SC_set_error(stmt, STMT_NO_RESPONSE, - "Failed to retrieve error message from result. " - "Connection may be down.", - func); - } - return CleanUp(); - } - - if (CONN_DOWN != conn->status) - conn->status = oldstatus; - stmt->status = STMT_FINISHED; - LEAVE_INNER_CONN_CS(func_cs_count, conn); - - // Check the status of the result - if (SC_get_errornumber(stmt) < 0) { - if (QR_command_successful(res)) - SC_set_errornumber(stmt, STMT_OK); - else if (QR_command_nonfatal(res)) - SC_set_errornumber(stmt, STMT_INFO_ONLY); - else - SC_set_errorinfo(stmt, res, 0); - } - - // Set cursor before the first tuple in the list - stmt->currTuple = -1; - SC_set_current_col(stmt, static_cast< int >(stmt->currTuple)); - SC_set_rowset_start(stmt, stmt->currTuple, FALSE); - - // Only perform if query was not aborted - if (!QR_get_aborted(res)) { - // Check if result columns were obtained from query - for (QResultClass *tres = res; tres; tres = tres->next) { - Int2 numcols = QR_NumResultCols(tres); - if (numcols <= 0) - continue; - ARDFields *opts = SC_get_ARDF(stmt); - extend_column_bindings(opts, numcols); - if (opts->bindings) - break; - - // Failed to allocate - QR_Destructor(res); - SC_set_error(stmt, STMT_NO_MEMORY_ERROR, - "Could not get enough free memory to store " - "the binding information", - func); - return CleanUp(); - } - } - - QResultClass *last = SC_get_Result(stmt); - if (last) { - // Statement already contains a result - // Append to end if this hasn't happened - while (last->next != NULL) { - if (last == res) - break; - last = last->next; - } - if (last != res) - last->next = res; - } else { - // Statement does not contain a result - // Assign directly - SC_set_Result(stmt, res); - } - - // This will commit results for SQLExecDirect and will not commit - // results for SQLPrepare since only metadata is required for SQLPrepare - if (commit) { - GetNextResultSet(stmt); - } - - stmt->diag_row_count = res->recent_processed_row_count; - - return CleanUp(); -} - -SQLRETURN GetNextResultSet(StatementClass *stmt) { - ConnectionClass *conn = SC_get_conn(stmt); - QResultClass *q_res = SC_get_Result(stmt); - if ((q_res == NULL) && (conn == NULL)) { - return SQL_ERROR; - } - - SQLSMALLINT total_columns = -1; - if (!SQL_SUCCEEDED(SQLNumResultCols(stmt, &total_columns)) - || (total_columns == -1)) { - return SQL_ERROR; - } - - OpenSearchResult *es_res = OpenSearchGetResult(conn->opensearchconn); - if (es_res != NULL) { - // Save server cursor id to fetch more pages later - if (es_res->opensearch_result_doc.has("cursor")) { - QR_set_server_cursor_id( - q_res, es_res->opensearch_result_doc["cursor"].as_string().c_str()); - } else { - QR_set_server_cursor_id(q_res, NULL); - } - - // Responsible for looping through rows, allocating tuples and - // appending these rows in q_result - CC_Append_Table_Data(es_res->opensearch_result_doc, q_res, total_columns, - *(q_res->fields)); - } - - return SQL_SUCCESS; -} - -RETCODE RePrepareStatement(StatementClass *stmt) { - CSTR func = "RePrepareStatement"; - RETCODE result = SC_initialize_and_recycle(stmt); - if (result != SQL_SUCCESS) - return result; - if (!stmt->statement) { - SC_set_error(stmt, STMT_NO_MEMORY_ERROR, - "Expected statement to be allocated.", func); - return SQL_ERROR; - } - - // If an SQLPrepare was performed prior to this, but was left in the - // described state because an error prior to SQLExecute then set the - // statement to finished so it can be recycled. - if (stmt->status == STMT_DESCRIBED) - stmt->status = STMT_FINISHED; - - return SQL_SUCCESS; -} - -RETCODE PrepareStatement(StatementClass *stmt, const SQLCHAR *stmt_str, - SQLINTEGER stmt_sz) { - CSTR func = "PrepareStatement"; - RETCODE result = SC_initialize_and_recycle(stmt); - if (result != SQL_SUCCESS) - return result; - - stmt->statement = make_string(stmt_str, stmt_sz, NULL, 0); - if (!stmt->statement) { - SC_set_error(stmt, STMT_NO_MEMORY_ERROR, - "No memory available to store statement", func); - return SQL_ERROR; - } - - // If an SQLPrepare was performed prior to this, but was left in the - // described state because an error prior to SQLExecute then set the - // statement to finished so it can be recycled. - if (stmt->status == STMT_DESCRIBED) - stmt->status = STMT_FINISHED; - stmt->statement_type = (short)statement_type(stmt->statement); - - return SQL_SUCCESS; -} - -QResultClass *SendQueryGetResult(StatementClass *stmt, BOOL commit) { - if (stmt == NULL) - return NULL; - - // Allocate QResultClass - QResultClass *res = QR_Constructor(); - if (res == NULL) - return NULL; - - // Send command - ConnectionClass *conn = SC_get_conn(stmt); - if (OpenSearchExecDirect(conn->opensearchconn, stmt->statement, - conn->connInfo.fetch_size) - != 0) { - QR_Destructor(res); - return NULL; - } - res->rstatus = PORES_COMMAND_OK; - - // Get OpenSearchResult - OpenSearchResult *es_res = OpenSearchGetResult(conn->opensearchconn); - if (es_res == NULL) { - QR_Destructor(res); - return NULL; - } - - BOOL success = - commit - ? CC_from_OpenSearchResult(res, conn, res->cursor_name, *es_res) - : CC_Metadata_from_OpenSearchResult(res, conn, res->cursor_name, - *es_res); - - // Convert result to QResultClass - if (!success) { - QR_Destructor(res); - res = NULL; - } - - if (commit) { - // Deallocate OpenSearchResult - OpenSearchClearResult(es_res); - res->opensearch_result = NULL; - } else { - // Set OpenSearchResult into connection class so it can be used later - res->opensearch_result = es_res; - } - return res; -} - -RETCODE AssignResult(StatementClass *stmt) { - if (stmt == NULL) - return SQL_ERROR; - - QResultClass *res = SC_get_Result(stmt); - if (!res || !res->opensearch_result) { - return SQL_ERROR; - } - - // Commit result to QResultClass - OpenSearchResult *es_res = static_cast< OpenSearchResult * >(res->opensearch_result); - ConnectionClass *conn = SC_get_conn(stmt); - if (!CC_No_Metadata_from_OpenSearchResult(res, conn, res->cursor_name, - *es_res)) { - QR_Destructor(res); - return SQL_ERROR; - } - GetNextResultSet(stmt); - - // Deallocate and return result - OpenSearchClearResult(es_res); - res->opensearch_result = NULL; - return SQL_SUCCESS; -} - -void ClearOpenSearchResult(void *opensearch_result) { - if (opensearch_result != NULL) { - OpenSearchResult *es_res = static_cast< OpenSearchResult * >(opensearch_result); - OpenSearchClearResult(es_res); - } -} - -SQLRETURN OPENSEARCHAPI_Cancel(HSTMT hstmt) { - // Verify pointer validity and convert to StatementClass - if (hstmt == NULL) - return SQL_INVALID_HANDLE; - StatementClass *stmt = (StatementClass *)hstmt; - - // Get execution delegate (if applicable) and initialize return code - StatementClass *opensearchtmt = - (stmt->execute_delegate == NULL) ? stmt : stmt->execute_delegate; - SQLRETURN ret = SQL_SUCCESS; - - // Entry common critical section - ENTER_COMMON_CS; - - // Waiting for more data from SQLParamData/SQLPutData - cancel statement - if (opensearchtmt->data_at_exec >= 0) { - // Enter statement critical section - ENTER_STMT_CS(stmt); - - // Clear info and cancel need data - SC_clear_error(stmt); - opensearchtmt->data_at_exec = -1; - opensearchtmt->put_data = FALSE; - cancelNeedDataState(opensearchtmt); - - // Leave statement critical section - LEAVE_STMT_CS(stmt); - } - - // Leave common critical section - LEAVE_COMMON_CS; - - return ret; -} diff --git a/sql-odbc/src/sqlodbc/opensearch_statement.h b/sql-odbc/src/sqlodbc/opensearch_statement.h deleted file mode 100644 index 620e0802e1..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_statement.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef _OPENSEARCH_STATEMENT_H_ -#define _OPENSEARCH_STATEMENT_H_ - -#include "opensearch_parse_result.h" -#include "qresult.h" -#include "statement.h" - -#ifdef __cplusplus -extern "C" { -#endif -RETCODE RePrepareStatement(StatementClass *stmt); -RETCODE PrepareStatement(StatementClass* stmt, const SQLCHAR *stmt_str, SQLINTEGER stmt_sz); -RETCODE ExecuteStatement(StatementClass *stmt, BOOL commit); -QResultClass *SendQueryGetResult(StatementClass *stmt, BOOL commit); -RETCODE AssignResult(StatementClass *stmt); -SQLRETURN OPENSEARCHAPI_Cancel(HSTMT hstmt); -SQLRETURN GetNextResultSet(StatementClass *stmt); -void ClearOpenSearchResult(void *opensearch_result); -#ifdef __cplusplus -} -#endif - -#endif diff --git a/sql-odbc/src/sqlodbc/opensearch_types.c b/sql-odbc/src/sqlodbc/opensearch_types.c deleted file mode 100644 index 8f5107b715..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_types.c +++ /dev/null @@ -1,1515 +0,0 @@ -#include "opensearch_types.h" - -#include "dlg_specific.h" -#include "environ.h" -#include "opensearch_connection.h" -#include "qresult.h" -#include "statement.h" -#ifndef WIN32 -#include -#endif - -#define EXPERIMENTAL_CURRENTLY - -SQLSMALLINT ansi_to_wtype(const ConnectionClass *self, SQLSMALLINT ansitype) { -#ifndef UNICODE_SUPPORT - return ansitype; -#else - if (!ALLOW_WCHAR(self)) - return ansitype; - switch (ansitype) { - case SQL_CHAR: - return SQL_WCHAR; - case SQL_VARCHAR: - return SQL_WVARCHAR; - case SQL_LONGVARCHAR: - return SQL_WLONGVARCHAR; - } - return ansitype; -#endif /* UNICODE_SUPPORT */ -} - -/* These are NOW the SQL Types reported in SQLGetTypeInfo. */ -SQLSMALLINT sqlTypes[] = { - SQL_BIGINT, - /* SQL_BINARY, -- Commented out because VarBinary is more correct. */ - SQL_BIT, SQL_CHAR, SQL_TYPE_DATE, SQL_DATE, SQL_DECIMAL, SQL_DOUBLE, - SQL_FLOAT, SQL_INTEGER, SQL_LONGVARBINARY, SQL_LONGVARCHAR, SQL_NUMERIC, - SQL_REAL, SQL_SMALLINT, SQL_TYPE_TIME, SQL_TYPE_TIMESTAMP, SQL_TIME, - SQL_TIMESTAMP, SQL_TINYINT, SQL_VARBINARY, SQL_VARCHAR, -#ifdef UNICODE_SUPPORT - SQL_WCHAR, SQL_WVARCHAR, SQL_WLONGVARCHAR, -#endif /* UNICODE_SUPPORT */ - SQL_GUID, -/* AFAIK SQL_INTERVAL types cause troubles in some spplications */ -#ifdef ES_INTERVAL_AS_SQL_INTERVAL - SQL_INTERVAL_MONTH, SQL_INTERVAL_YEAR, SQL_INTERVAL_YEAR_TO_MONTH, - SQL_INTERVAL_DAY, SQL_INTERVAL_HOUR, SQL_INTERVAL_MINUTE, - SQL_INTERVAL_SECOND, SQL_INTERVAL_DAY_TO_HOUR, SQL_INTERVAL_DAY_TO_MINUTE, - SQL_INTERVAL_DAY_TO_SECOND, SQL_INTERVAL_HOUR_TO_MINUTE, - SQL_INTERVAL_HOUR_TO_SECOND, SQL_INTERVAL_MINUTE_TO_SECOND, -#endif /* ES_INTERVAL_AS_SQL_INTERVAL */ - 0}; - -#ifdef ODBCINT64 -#define ALLOWED_C_BIGINT SQL_C_SBIGINT -/* #define ALLOWED_C_BIGINT SQL_C_CHAR */ /* Delphi should be either ? */ -#else -#define ALLOWED_C_BIGINT SQL_C_CHAR -#endif - -OID opensearch_true_type(const ConnectionClass *conn, OID type, OID basetype) { - if (0 == basetype) - return type; - else if (0 == type) - return basetype; - else if (type == (OID)conn->lobj_type) - return type; - return basetype; -} - -#define MONTH_BIT (1 << 17) -#define YEAR_BIT (1 << 18) -#define DAY_BIT (1 << 19) -#define HOUR_BIT (1 << 26) -#define MINUTE_BIT (1 << 27) -#define SECOND_BIT (1 << 28) - -static Int4 getCharColumnSizeX(const ConnectionClass *conn, OID type, - int atttypmod, int adtsize_or_longestlen, - int handle_unknown_size_as) { - int p = -1, maxsize; - MYLOG(OPENSEARCH_TRACE, - "entering type=%d, atttypmod=%d, adtsize_or=%d, unknown = %d\n", type, - atttypmod, adtsize_or_longestlen, handle_unknown_size_as); - - maxsize = MAX_VARCHAR_SIZE; -#ifdef UNICODE_SUPPORT - if (CC_is_in_unicode_driver(conn) && isSqlServr() && maxsize > 4000) - maxsize = 4000; -#endif /* UNICODE_SUPPORT */ - - if (maxsize == TEXT_FIELD_SIZE + 1) /* magic length for testing */ - maxsize = 0; - - /* - * Static ColumnSize (i.e., the Maximum ColumnSize of the datatype) This - * has nothing to do with a result set. - */ - MYLOG(OPENSEARCH_DEBUG, "!!! atttypmod < 0 ?\n"); - if (atttypmod < 0 && adtsize_or_longestlen < 0) - return maxsize; - - MYLOG(OPENSEARCH_DEBUG, "!!! adtsize_or_logngest=%d\n", adtsize_or_longestlen); - p = adtsize_or_longestlen; /* longest */ - /* - * Catalog Result Sets -- use assigned column width (i.e., from - * set_tuplefield_string) - */ - MYLOG(OPENSEARCH_DEBUG, "!!! catalog_result=%d\n", handle_unknown_size_as); - if (UNKNOWNS_AS_LONGEST == handle_unknown_size_as) { - MYLOG(OPENSEARCH_DEBUG, "LONGEST: p = %d\n", p); - if (p > 0 && (atttypmod < 0 || atttypmod > p)) - return p; - } - if (TYPE_MAY_BE_ARRAY(type)) { - if (p > 0) - return p; - return maxsize; - } - - /* Size is unknown -- handle according to parameter */ - if (atttypmod > 0) /* maybe the length is known */ - { - return atttypmod; - } - - /* The type is really unknown */ - switch (handle_unknown_size_as) { - case UNKNOWNS_AS_DONTKNOW: - return -1; - case UNKNOWNS_AS_LONGEST: - case UNKNOWNS_AS_MAX: - break; - default: - return -1; - } - if (maxsize <= 0) - return maxsize; - switch (type) { - case OPENSEARCH_TYPE_BPCHAR: - case OPENSEARCH_TYPE_VARCHAR: - case OPENSEARCH_TYPE_TEXT: - return maxsize; - } - - if (p > maxsize) - maxsize = p; - return maxsize; -} - -/* - * Specify when handle_unknown_size_as parameter is unused - */ -#define UNUSED_HANDLE_UNKNOWN_SIZE_AS (-2) - -static SQLSMALLINT getNumericDecimalDigitsX(const ConnectionClass *conn, - OID type, int atttypmod, - int adtsize_or_longest, - int handle_unknown_size_as) { - UNUSED(conn, handle_unknown_size_as); - SQLSMALLINT default_decimal_digits = 6; - - MYLOG(OPENSEARCH_TRACE, "entering type=%d, atttypmod=%d\n", type, atttypmod); - - if (atttypmod < 0 && adtsize_or_longest < 0) - return default_decimal_digits; - - if (atttypmod > -1) - return (SQLSMALLINT)(atttypmod & 0xffff); - if (adtsize_or_longest <= 0) - return default_decimal_digits; - adtsize_or_longest >>= 16; /* extract the scale part */ - return (SQLSMALLINT)adtsize_or_longest; -} - -static Int4 /* OpenSearch restritiction */ -getNumericColumnSizeX(const ConnectionClass *conn, OID type, int atttypmod, - int adtsize_or_longest, int handle_unknown_size_as) { - UNUSED(conn); - Int4 default_column_size = 28; - MYLOG(OPENSEARCH_TRACE, "entering type=%d, typmod=%d\n", type, atttypmod); - - if (atttypmod > -1) - return (atttypmod >> 16) & 0xffff; - switch (handle_unknown_size_as) { - case UNKNOWNS_AS_DONTKNOW: - return SQL_NO_TOTAL; - } - if (adtsize_or_longest <= 0) - return default_column_size; - adtsize_or_longest %= (1 << 16); /* extract the precision part */ - switch (handle_unknown_size_as) { - case UNKNOWNS_AS_MAX: - return adtsize_or_longest > default_column_size - ? adtsize_or_longest - : default_column_size; - default: - if (adtsize_or_longest < 10) - adtsize_or_longest = 10; - } - return adtsize_or_longest; -} - -static SQLSMALLINT getTimestampDecimalDigitsX(const ConnectionClass *conn, - OID type, int atttypmod) { - UNUSED(conn); - MYLOG(OPENSEARCH_DEBUG, "type=%d, atttypmod=%d\n", type, atttypmod); - return (SQLSMALLINT)(atttypmod > -1 ? atttypmod : 6); -} - -#ifdef ES_INTERVAL_AS_SQL_INTERVAL -static SQLSMALLINT getIntervalDecimalDigits(OID type, int atttypmod) { - Int4 prec; - - MYLOG(OPENSEARCH_TRACE, "entering type=%d, atttypmod=%d\n", type, atttypmod); - - if ((atttypmod & SECOND_BIT) == 0) - return 0; - return (SQLSMALLINT)((prec = atttypmod & 0xffff) == 0xffff ? 6 : prec); -} -#endif // ES_INTERVAL_AS_SQL_INTERVAL - -SQLSMALLINT -opensearchtype_attr_to_concise_type(const ConnectionClass *conn, OID type, - int typmod, int adtsize_or_longestlen, - int handle_unknown_size_as) { - EnvironmentClass *env = (EnvironmentClass *)CC_get_env(conn); -#ifdef ES_INTERVAL_AS_SQL_INTERVAL - SQLSMALLINT sqltype; -#endif /* ES_INTERVAL_AS_SQL_INTERVAL */ - BOOL bLongVarchar, bFixed = FALSE; - - switch (type) { - case OPENSEARCH_TYPE_CHAR: - return ansi_to_wtype(conn, SQL_CHAR); - case OPENSEARCH_TYPE_NAME: - case OPENSEARCH_TYPE_REFCURSOR: - return ansi_to_wtype(conn, SQL_VARCHAR); - - case OPENSEARCH_TYPE_BPCHAR: - bFixed = TRUE; - case OPENSEARCH_TYPE_VARCHAR: - if (getCharColumnSizeX(conn, type, typmod, adtsize_or_longestlen, - handle_unknown_size_as) - > MAX_VARCHAR_SIZE) - bLongVarchar = TRUE; - else - bLongVarchar = FALSE; - return ansi_to_wtype(conn, bLongVarchar - ? SQL_LONGVARCHAR - : (bFixed ? SQL_CHAR : SQL_VARCHAR)); - case OPENSEARCH_TYPE_TEXT: - bLongVarchar = DEFAULT_TEXTASLONGVARCHAR; - if (bLongVarchar) { - int column_size = getCharColumnSizeX(conn, type, typmod, - adtsize_or_longestlen, - handle_unknown_size_as); - if (column_size > 0 && column_size <= MAX_VARCHAR_SIZE) - bLongVarchar = FALSE; - } - return ansi_to_wtype(conn, - bLongVarchar ? SQL_LONGVARCHAR : SQL_VARCHAR); - - case OPENSEARCH_TYPE_BYTEA: - return SQL_VARBINARY; - case OPENSEARCH_TYPE_LO_UNDEFINED: - return SQL_LONGVARBINARY; - - case OPENSEARCH_TYPE_INT2: - return SQL_SMALLINT; - - case OPENSEARCH_TYPE_OID: - case OPENSEARCH_TYPE_XID: - case OPENSEARCH_TYPE_INT4: - return SQL_INTEGER; - - /* Change this to SQL_BIGINT for ODBC v3 bjm 2001-01-23 */ - case OPENSEARCH_TYPE_INT8: - if (conn->ms_jet) - return SQL_NUMERIC; /* maybe a little better than SQL_VARCHAR */ - return SQL_BIGINT; - - case OPENSEARCH_TYPE_NUMERIC: - return SQL_NUMERIC; - - case OPENSEARCH_TYPE_FLOAT4: - return SQL_REAL; - case OPENSEARCH_TYPE_FLOAT8: - return SQL_FLOAT; - case OPENSEARCH_TYPE_DATE: - if (EN_is_odbc3(env)) - return SQL_TYPE_DATE; - return SQL_DATE; - case OPENSEARCH_TYPE_TIME: - if (EN_is_odbc3(env)) - return SQL_TYPE_TIME; - return SQL_TIME; - case OPENSEARCH_TYPE_ABSTIME: - case OPENSEARCH_TYPE_DATETIME: - case OPENSEARCH_TYPE_TIMESTAMP_NO_TMZONE: - case OPENSEARCH_TYPE_TIMESTAMP: - if (EN_is_odbc3(env)) - return SQL_TYPE_TIMESTAMP; - return SQL_TIMESTAMP; - case OPENSEARCH_TYPE_MONEY: - return SQL_FLOAT; - case OPENSEARCH_TYPE_BOOL: - return SQL_BIT; - case OPENSEARCH_TYPE_XML: - return ansi_to_wtype(conn, SQL_LONGVARCHAR); - case OPENSEARCH_TYPE_INET: - case OPENSEARCH_TYPE_CIDR: - case OPENSEARCH_TYPE_MACADDR: - return ansi_to_wtype(conn, SQL_VARCHAR); - case OPENSEARCH_TYPE_UUID: - return SQL_GUID; - - case OPENSEARCH_TYPE_INTERVAL: -#ifdef ES_INTERVAL_AS_SQL_INTERVAL - if (sqltype = get_interval_type(atttypmod, NULL), 0 != sqltype) - return sqltype; -#endif /* ES_INTERVAL_AS_SQL_INTERVAL */ - return ansi_to_wtype(conn, SQL_VARCHAR); - - default: - - /* - * first, check to see if 'type' is in list. If not, look up - * with query. Add oid, name to list. If it's already in - * list, just return. - */ - /* hack until permanent type is available */ - if (type == (OID)conn->lobj_type) - return SQL_LONGVARBINARY; - - bLongVarchar = DEFAULT_UNKNOWNSASLONGVARCHAR; - if (bLongVarchar) { - int column_size = getCharColumnSizeX(conn, type, typmod, - adtsize_or_longestlen, - handle_unknown_size_as); - if (column_size > 0 && column_size <= MAX_VARCHAR_SIZE) - bLongVarchar = FALSE; - } -#ifdef EXPERIMENTAL_CURRENTLY - return ansi_to_wtype(conn, - bLongVarchar ? SQL_LONGVARCHAR : SQL_VARCHAR); -#else - return bLongVarchar ? SQL_LONGVARCHAR : SQL_VARCHAR; -#endif /* EXPERIMENTAL_CURRENTLY */ - } -} - -SQLSMALLINT -opensearchtype_attr_to_sqldesctype(const ConnectionClass *conn, OID type, int typmod, - int adtsize_or_longestlen, - int handle_unknown_size_as) { - SQLSMALLINT rettype; - -#ifdef ES_INTERVAL_AS_SQL_INTERVAL - if (OPENSEARCH_TYPE_INTERVAL == type) - return SQL_INTERVAL; -#endif /* ES_INTERVAL_AS_SQL_INTERVAL */ - switch (rettype = opensearchtype_attr_to_concise_type( - conn, type, typmod, adtsize_or_longestlen, - handle_unknown_size_as)) { - case SQL_TYPE_DATE: - case SQL_TYPE_TIME: - case SQL_TYPE_TIMESTAMP: - return SQL_DATETIME; - } - return rettype; -} - -SQLSMALLINT -opensearchtype_attr_to_datetime_sub(const ConnectionClass *conn, OID type, - int typmod) { - UNUSED(conn, type, typmod); - return -1; -} - -SQLSMALLINT -opensearchtype_attr_to_ctype(const ConnectionClass *conn, OID type, int typmod) { - UNUSED(typmod); - EnvironmentClass *env = (EnvironmentClass *)CC_get_env(conn); -#ifdef ES_INTERVAL_AS_SQL_INTERVAL - SQLSMALLINT ctype; -#endif /* ES_INTERVAL_A_SQL_INTERVAL */ - - switch (type) { - case OPENSEARCH_TYPE_INT8: - if (!conn->ms_jet) - return ALLOWED_C_BIGINT; - return SQL_C_CHAR; - case OPENSEARCH_TYPE_NUMERIC: - return SQL_C_CHAR; - case OPENSEARCH_TYPE_INT2: - return SQL_C_SSHORT; - case OPENSEARCH_TYPE_OID: - case OPENSEARCH_TYPE_XID: - return SQL_C_ULONG; - case OPENSEARCH_TYPE_INT4: - return SQL_C_SLONG; - case OPENSEARCH_TYPE_FLOAT4: - return SQL_C_FLOAT; - case OPENSEARCH_TYPE_FLOAT8: - return SQL_C_DOUBLE; - case OPENSEARCH_TYPE_DATE: - if (EN_is_odbc3(env)) - return SQL_C_TYPE_DATE; - return SQL_C_DATE; - case OPENSEARCH_TYPE_TIME: - if (EN_is_odbc3(env)) - return SQL_C_TYPE_TIME; - return SQL_C_TIME; - case OPENSEARCH_TYPE_ABSTIME: - case OPENSEARCH_TYPE_DATETIME: - case OPENSEARCH_TYPE_TIMESTAMP_NO_TMZONE: - case OPENSEARCH_TYPE_TIMESTAMP: - if (EN_is_odbc3(env)) - return SQL_C_TYPE_TIMESTAMP; - return SQL_C_TIMESTAMP; - case OPENSEARCH_TYPE_MONEY: - return SQL_C_FLOAT; - case OPENSEARCH_TYPE_BOOL: - return SQL_C_BIT; - - case OPENSEARCH_TYPE_BYTEA: - return SQL_C_BINARY; - case OPENSEARCH_TYPE_LO_UNDEFINED: - return SQL_C_BINARY; - case OPENSEARCH_TYPE_BPCHAR: - case OPENSEARCH_TYPE_VARCHAR: - case OPENSEARCH_TYPE_TEXT: - return ansi_to_wtype(conn, SQL_C_CHAR); - case OPENSEARCH_TYPE_UUID: - if (!conn->ms_jet) - return SQL_C_GUID; - return ansi_to_wtype(conn, SQL_C_CHAR); - - case OPENSEARCH_TYPE_INTERVAL: -#ifdef ES_INTERVAL_AS_SQL_INTERVAL - if (ctype = get_interval_type(atttypmod, NULL), 0 != ctype) - return ctype; -#endif /* ES_INTERVAL_AS_SQL_INTERVAL */ - return ansi_to_wtype(conn, SQL_CHAR); - - default: - /* hack until permanent type is available */ - if (type == (OID)conn->lobj_type) - return SQL_C_BINARY; - - /* Experimental, Does this work ? */ -#ifdef EXPERIMENTAL_CURRENTLY - return ansi_to_wtype(conn, SQL_C_CHAR); -#else - return SQL_C_CHAR; -#endif /* EXPERIMENTAL_CURRENTLY */ - } -} - -const char *opensearchtype_attr_to_name(const ConnectionClass *conn, OID type, - int typmod, BOOL auto_increment) { - UNUSED(conn, typmod, conn, auto_increment); - switch (type) { - case OPENSEARCH_TYPE_BOOL: - return OPENSEARCH_TYPE_NAME_BOOLEAN; - case OPENSEARCH_TYPE_INT1: - return OPENSEARCH_TYPE_NAME_BYTE; - case OPENSEARCH_TYPE_INT2: - return OPENSEARCH_TYPE_NAME_SHORT; - case OPENSEARCH_TYPE_INT4: - return OPENSEARCH_TYPE_NAME_INTEGER; - case OPENSEARCH_TYPE_INT8: - return OPENSEARCH_TYPE_NAME_LONG; - case OPENSEARCH_TYPE_HALF_FLOAT: - return OPENSEARCH_TYPE_NAME_HALF_FLOAT; - case OPENSEARCH_TYPE_FLOAT4: - return OPENSEARCH_TYPE_NAME_FLOAT; - case OPENSEARCH_TYPE_FLOAT8: - return OPENSEARCH_TYPE_NAME_DOUBLE; - case OPENSEARCH_TYPE_SCALED_FLOAT: - return OPENSEARCH_TYPE_NAME_SCALED_FLOAT; - case OPENSEARCH_TYPE_KEYWORD: - return OPENSEARCH_TYPE_NAME_KEYWORD; - case OPENSEARCH_TYPE_TEXT: - return OPENSEARCH_TYPE_NAME_TEXT; - case OPENSEARCH_TYPE_NESTED: - return OPENSEARCH_TYPE_NAME_NESTED; - case OPENSEARCH_TYPE_DATETIME: - return OPENSEARCH_TYPE_NAME_DATE; - case OPENSEARCH_TYPE_TIMESTAMP: - return OPENSEARCH_TYPE_NAME_TIMESTAMP; - case OPENSEARCH_TYPE_OBJECT: - return OPENSEARCH_TYPE_NAME_OBJECT; - case OPENSEARCH_TYPE_VARCHAR: - return OPENSEARCH_TYPE_NAME_VARCHAR; - default: - return OPENSEARCH_TYPE_NAME_UNSUPPORTED; - } -} - -Int4 /* OpenSearch restriction */ -opensearchtype_attr_column_size(const ConnectionClass *conn, OID type, int atttypmod, - int adtsize_or_longest, int handle_unknown_size_as) { - UNUSED(handle_unknown_size_as, adtsize_or_longest, atttypmod, conn); - switch (type) { - case OPENSEARCH_TYPE_BOOL: - return 1; - case OPENSEARCH_TYPE_INT1: - return 3; - case OPENSEARCH_TYPE_INT2: - return 5; - case OPENSEARCH_TYPE_INT4: - return 10; - case OPENSEARCH_TYPE_INT8: - return 19; - case OPENSEARCH_TYPE_HALF_FLOAT: - return 7; - case OPENSEARCH_TYPE_FLOAT4: - return 7; - case OPENSEARCH_TYPE_FLOAT8: - return 15; - case OPENSEARCH_TYPE_SCALED_FLOAT: - return 15; - case OPENSEARCH_TYPE_KEYWORD: - return 256; - case OPENSEARCH_TYPE_TEXT: - return INT_MAX; - case OPENSEARCH_TYPE_NESTED: - return 0; - case OPENSEARCH_TYPE_DATETIME: - return 24; - case OPENSEARCH_TYPE_TIMESTAMP: - return 24; - case OPENSEARCH_TYPE_OBJECT: - return 0; - default: - return adtsize_or_longest; - } -} - -SQLSMALLINT -opensearchtype_attr_precision(const ConnectionClass *conn, OID type, int atttypmod, - int adtsize_or_longest, int handle_unknown_size_as) { - switch (type) { - case OPENSEARCH_TYPE_NUMERIC: - return (SQLSMALLINT)getNumericColumnSizeX(conn, type, atttypmod, - adtsize_or_longest, - handle_unknown_size_as); - case OPENSEARCH_TYPE_TIME: - case OPENSEARCH_TYPE_DATETIME: - case OPENSEARCH_TYPE_TIMESTAMP_NO_TMZONE: - return getTimestampDecimalDigitsX(conn, type, atttypmod); -#ifdef ES_INTERVAL_AS_SQL_INTERVAL - case OPENSEARCH_TYPE_INTERVAL: - return getIntervalDecimalDigits(type, atttypmod); -#endif /* ES_INTERVAL_AS_SQL_INTERVAL */ - } - return -1; -} - -Int4 opensearchtype_attr_display_size(const ConnectionClass *conn, OID type, - int atttypmod, int adtsize_or_longestlen, - int handle_unknown_size_as) { - int dsize; - - switch (type) { - case OPENSEARCH_TYPE_INT2: - return 6; - - case OPENSEARCH_TYPE_OID: - case OPENSEARCH_TYPE_XID: - return 10; - - case OPENSEARCH_TYPE_INT4: - return 11; - - case OPENSEARCH_TYPE_INT8: - return 20; /* signed: 19 digits + sign */ - - case OPENSEARCH_TYPE_NUMERIC: - dsize = getNumericColumnSizeX(conn, type, atttypmod, - adtsize_or_longestlen, - handle_unknown_size_as); - return dsize <= 0 ? dsize : dsize + 2; - - case OPENSEARCH_TYPE_MONEY: - return 15; /* ($9,999,999.99) */ - - case OPENSEARCH_TYPE_FLOAT4: /* a sign, OPENSEARCH_REAL_DIGITS digits, a decimal point, - the letter E, a sign, and 2 digits */ - return (1 + OPENSEARCH_REAL_DIGITS + 1 + 1 + 3); - - case OPENSEARCH_TYPE_FLOAT8: /* a sign, OPENSEARCH_DOUBLE_DIGITS digits, a decimal - point, the letter E, a sign, and 3 digits */ - return (1 + OPENSEARCH_DOUBLE_DIGITS + 1 + 1 + 1 + 3); - - case OPENSEARCH_TYPE_MACADDR: - return 17; - case OPENSEARCH_TYPE_INET: - case OPENSEARCH_TYPE_CIDR: - return sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:255.255.255.255/128"); - case OPENSEARCH_TYPE_UUID: - return 36; - case OPENSEARCH_TYPE_INTERVAL: - return 30; - - /* Character types use regular precision */ - default: - return opensearchtype_attr_column_size(conn, type, atttypmod, - adtsize_or_longestlen, - handle_unknown_size_as); - } -} - -Int4 opensearchtype_attr_buffer_length(const ConnectionClass *conn, OID type, - int atttypmod, int adtsize_or_longestlen, - int handle_unknown_size_as) { - int dsize; - - switch (type) { - case OPENSEARCH_TYPE_INT2: - return 2; /* sizeof(SQLSMALLINT) */ - - case OPENSEARCH_TYPE_OID: - case OPENSEARCH_TYPE_XID: - case OPENSEARCH_TYPE_INT4: - return 4; /* sizeof(SQLINTEGER) */ - - case OPENSEARCH_TYPE_INT8: - if (SQL_C_CHAR == opensearchtype_attr_to_ctype(conn, type, atttypmod)) - return 20; /* signed: 19 digits + sign */ - return 8; /* sizeof(SQLSBININT) */ - - case OPENSEARCH_TYPE_NUMERIC: - dsize = getNumericColumnSizeX(conn, type, atttypmod, - adtsize_or_longestlen, - handle_unknown_size_as); - return dsize <= 0 ? dsize : dsize + 2; - - case OPENSEARCH_TYPE_FLOAT4: - case OPENSEARCH_TYPE_MONEY: - return 4; /* sizeof(SQLREAL) */ - - case OPENSEARCH_TYPE_FLOAT8: - return 8; /* sizeof(SQLFLOAT) */ - - case OPENSEARCH_TYPE_DATE: - case OPENSEARCH_TYPE_TIME: - return 6; /* sizeof(DATE(TIME)_STRUCT) */ - - case OPENSEARCH_TYPE_ABSTIME: - case OPENSEARCH_TYPE_DATETIME: - case OPENSEARCH_TYPE_TIMESTAMP: - case OPENSEARCH_TYPE_TIMESTAMP_NO_TMZONE: - return 16; /* sizeof(TIMESTAMP_STRUCT) */ - - case OPENSEARCH_TYPE_MACADDR: - return 17; - case OPENSEARCH_TYPE_INET: - case OPENSEARCH_TYPE_CIDR: - return sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:255.255.255.255/128"); - case OPENSEARCH_TYPE_UUID: - return 16; /* sizeof(SQLGUID) */ - - /* Character types use the default precision */ - case OPENSEARCH_TYPE_VARCHAR: - case OPENSEARCH_TYPE_BPCHAR: { - int coef = 1; - Int4 prec = opensearchtype_attr_column_size(conn, type, atttypmod, - adtsize_or_longestlen, - handle_unknown_size_as), - maxvarc; - if (SQL_NO_TOTAL == prec) - return prec; -#ifdef UNICODE_SUPPORT - if (CC_is_in_unicode_driver(conn)) - return prec * WCLEN; -#endif /* UNICODE_SUPPORT */ - coef = conn->mb_maxbyte_per_char; - if (coef < 2) - /* CR -> CR/LF */ - coef = 2; - if (coef == 1) - return prec; - maxvarc = MAX_VARCHAR_SIZE; - if (prec <= maxvarc && prec * coef > maxvarc) - return maxvarc; - return coef * prec; - } -#ifdef ES_INTERVAL_AS_SQL_INTERVAL - case OPENSEARCH_TYPE_INTERVAL: - return sizeof(SQL_INTERVAL_STRUCT); -#endif /* ES_INTERVAL_AS_SQL_INTERVAL */ - - default: - return opensearchtype_attr_column_size(conn, type, atttypmod, - adtsize_or_longestlen, - handle_unknown_size_as); - } -} - -/* - */ -Int4 opensearchtype_attr_desclength(const ConnectionClass *conn, OID type, - int atttypmod, int adtsize_or_longestlen, - int handle_unknown_size_as) { - int dsize; - - switch (type) { - case OPENSEARCH_TYPE_INT2: - return 2; - - case OPENSEARCH_TYPE_OID: - case OPENSEARCH_TYPE_XID: - case OPENSEARCH_TYPE_INT4: - return 4; - - case OPENSEARCH_TYPE_INT8: - return 20; /* signed: 19 digits + sign */ - - case OPENSEARCH_TYPE_NUMERIC: - dsize = getNumericColumnSizeX(conn, type, atttypmod, - adtsize_or_longestlen, - handle_unknown_size_as); - return dsize <= 0 ? dsize : dsize + 2; - - case OPENSEARCH_TYPE_FLOAT4: - case OPENSEARCH_TYPE_MONEY: - return 4; - - case OPENSEARCH_TYPE_FLOAT8: - return 8; - - case OPENSEARCH_TYPE_DATE: - case OPENSEARCH_TYPE_TIME: - case OPENSEARCH_TYPE_ABSTIME: - case OPENSEARCH_TYPE_DATETIME: - case OPENSEARCH_TYPE_TIMESTAMP_NO_TMZONE: - case OPENSEARCH_TYPE_TIMESTAMP: - case OPENSEARCH_TYPE_VARCHAR: - case OPENSEARCH_TYPE_BPCHAR: - return opensearchtype_attr_column_size(conn, type, atttypmod, - adtsize_or_longestlen, - handle_unknown_size_as); - default: - return opensearchtype_attr_column_size(conn, type, atttypmod, - adtsize_or_longestlen, - handle_unknown_size_as); - } -} - -Int2 opensearchtype_attr_decimal_digits(const ConnectionClass *conn, OID type, - int atttypmod, int adtsize_or_longestlen, - int handle_unknown_size_as) { - switch (type) { - case OPENSEARCH_TYPE_INT2: - case OPENSEARCH_TYPE_OID: - case OPENSEARCH_TYPE_XID: - case OPENSEARCH_TYPE_INT4: - case OPENSEARCH_TYPE_INT8: - case OPENSEARCH_TYPE_FLOAT4: - case OPENSEARCH_TYPE_FLOAT8: - case OPENSEARCH_TYPE_MONEY: - case OPENSEARCH_TYPE_BOOL: - - /* - * Number of digits to the right of the decimal point in - * "yyyy-mm=dd hh:mm:ss[.f...]" - */ - case OPENSEARCH_TYPE_ABSTIME: - case OPENSEARCH_TYPE_TIMESTAMP: - return 0; - case OPENSEARCH_TYPE_TIME: - case OPENSEARCH_TYPE_DATETIME: - case OPENSEARCH_TYPE_TIMESTAMP_NO_TMZONE: - /* return 0; */ - return getTimestampDecimalDigitsX(conn, type, atttypmod); - - case OPENSEARCH_TYPE_NUMERIC: - return getNumericDecimalDigitsX(conn, type, atttypmod, - adtsize_or_longestlen, - handle_unknown_size_as); - -#ifdef ES_INTERVAL_AS_SQL_INTERVAL - case OPENSEARCH_TYPE_INTERVAL: - return getIntervalDecimalDigits(type, atttypmod); -#endif /* ES_INTERVAL_AS_SQL_INTERVAL */ - - default: - return -1; - } -} - -Int2 opensearchtype_attr_scale(const ConnectionClass *conn, OID type, int atttypmod, - int adtsize_or_longestlen, - int handle_unknown_size_as) { - switch (type) { - case OPENSEARCH_TYPE_NUMERIC: - return getNumericDecimalDigitsX(conn, type, atttypmod, - adtsize_or_longestlen, - handle_unknown_size_as); - } - return -1; -} - -Int4 opensearchtype_attr_transfer_octet_length(const ConnectionClass *conn, OID type, - int atttypmod, - int handle_unknown_size_as) { - int coef = 1; - Int4 maxvarc, column_size; - - switch (type) { - case OPENSEARCH_TYPE_VARCHAR: - case OPENSEARCH_TYPE_BPCHAR: - case OPENSEARCH_TYPE_TEXT: - case OPENSEARCH_TYPE_UNKNOWN: - column_size = opensearchtype_attr_column_size( - conn, type, atttypmod, OPENSEARCH_ADT_UNSET, - handle_unknown_size_as); - if (SQL_NO_TOTAL == column_size) - return column_size; -#ifdef UNICODE_SUPPORT - if (CC_is_in_unicode_driver(conn)) - return column_size * WCLEN; -#endif /* UNICODE_SUPPORT */ - coef = conn->mb_maxbyte_per_char; - if (coef < 2) - /* CR -> CR/LF */ - coef = 2; - if (coef == 1) - return column_size; - maxvarc = MAX_VARCHAR_SIZE; - if (column_size <= maxvarc && column_size * coef > maxvarc) - return maxvarc; - return coef * column_size; - case OPENSEARCH_TYPE_BYTEA: - return opensearchtype_attr_column_size(conn, type, atttypmod, - OPENSEARCH_ADT_UNSET, - handle_unknown_size_as); - default: - if (type == (OID)conn->lobj_type) - return opensearchtype_attr_column_size(conn, type, atttypmod, - OPENSEARCH_ADT_UNSET, - handle_unknown_size_as); - } - return -1; -} - -/* - * Casting parameters e.g. ?::timestamp is much more flexible - * than specifying parameter datatype oids determined by - * sqltype_to_bind_opensearchtype() via parse message. - */ -const char *sqltype_to_opensearchcast(const ConnectionClass *conn, - SQLSMALLINT fSqlType) { - const char *openSearchCast = NULL_STRING; - - switch (fSqlType) { - case SQL_BINARY: - case SQL_VARBINARY: - openSearchCast = "::bytea"; - break; - case SQL_TYPE_DATE: - case SQL_DATE: - openSearchCast = "::date"; - break; - case SQL_DECIMAL: - case SQL_NUMERIC: - openSearchCast = "::numeric"; - break; - case SQL_BIGINT: - openSearchCast = "::int8"; - break; - case SQL_INTEGER: - openSearchCast = "::int4"; - break; - case SQL_REAL: - openSearchCast = "::float4"; - break; - case SQL_SMALLINT: - case SQL_TINYINT: - openSearchCast = "::int2"; - break; - case SQL_TIME: - case SQL_TYPE_TIME: - openSearchCast = "::time"; - break; - case SQL_TIMESTAMP: - case SQL_TYPE_TIMESTAMP: - openSearchCast = "::timestamp"; - break; - case SQL_GUID: - if (OPENSEARCH_VERSION_GE(conn, 8.3)) - openSearchCast = "::uuid"; - break; - case SQL_INTERVAL_MONTH: - case SQL_INTERVAL_YEAR: - case SQL_INTERVAL_YEAR_TO_MONTH: - case SQL_INTERVAL_DAY: - case SQL_INTERVAL_HOUR: - case SQL_INTERVAL_MINUTE: - case SQL_INTERVAL_SECOND: - case SQL_INTERVAL_DAY_TO_HOUR: - case SQL_INTERVAL_DAY_TO_MINUTE: - case SQL_INTERVAL_DAY_TO_SECOND: - case SQL_INTERVAL_HOUR_TO_MINUTE: - case SQL_INTERVAL_HOUR_TO_SECOND: - case SQL_INTERVAL_MINUTE_TO_SECOND: - openSearchCast = "::interval"; - break; - } - - return openSearchCast; -} - -OID sqltype_to_opensearchtype(const ConnectionClass *conn, SQLSMALLINT fSqlType) { - OID openSearchType = 0; - switch (fSqlType) { - case SQL_BINARY: - openSearchType = OPENSEARCH_TYPE_BYTEA; - break; - - case SQL_CHAR: - openSearchType = OPENSEARCH_TYPE_BPCHAR; - break; - -#ifdef UNICODE_SUPPORT - case SQL_WCHAR: - openSearchType = OPENSEARCH_TYPE_BPCHAR; - break; -#endif /* UNICODE_SUPPORT */ - - case SQL_BIT: - openSearchType = OPENSEARCH_TYPE_BOOL; - break; - - case SQL_TYPE_DATE: - case SQL_DATE: - openSearchType = OPENSEARCH_TYPE_DATE; - break; - - case SQL_DOUBLE: - case SQL_FLOAT: - openSearchType = OPENSEARCH_TYPE_FLOAT8; - break; - - case SQL_DECIMAL: - case SQL_NUMERIC: - openSearchType = OPENSEARCH_TYPE_NUMERIC; - break; - - case SQL_BIGINT: - openSearchType = OPENSEARCH_TYPE_INT8; - break; - - case SQL_INTEGER: - openSearchType = OPENSEARCH_TYPE_INT4; - break; - - case SQL_LONGVARBINARY: - openSearchType = conn->lobj_type; - break; - - case SQL_LONGVARCHAR: - openSearchType = OPENSEARCH_TYPE_VARCHAR; - break; - -#ifdef UNICODE_SUPPORT - case SQL_WLONGVARCHAR: - openSearchType = OPENSEARCH_TYPE_VARCHAR; - break; -#endif /* UNICODE_SUPPORT */ - - case SQL_REAL: - openSearchType = OPENSEARCH_TYPE_FLOAT4; - break; - - case SQL_SMALLINT: - case SQL_TINYINT: - openSearchType = OPENSEARCH_TYPE_INT2; - break; - - case SQL_TIME: - case SQL_TYPE_TIME: - openSearchType = OPENSEARCH_TYPE_TIME; - break; - - case SQL_TIMESTAMP: - case SQL_TYPE_TIMESTAMP: - openSearchType = OPENSEARCH_TYPE_TIMESTAMP; - break; - - case SQL_VARBINARY: - openSearchType = OPENSEARCH_TYPE_BYTEA; - break; - - case SQL_VARCHAR: - openSearchType = OPENSEARCH_TYPE_VARCHAR; - break; - -#ifdef UNICODE_SUPPORT - case SQL_WVARCHAR: - openSearchType = OPENSEARCH_TYPE_VARCHAR; - break; -#endif /* UNICODE_SUPPORT */ - - case SQL_GUID: - if (OPENSEARCH_VERSION_GE(conn, 8.3)) - openSearchType = OPENSEARCH_TYPE_UUID; - break; - - case SQL_INTERVAL_MONTH: - case SQL_INTERVAL_YEAR: - case SQL_INTERVAL_YEAR_TO_MONTH: - case SQL_INTERVAL_DAY: - case SQL_INTERVAL_HOUR: - case SQL_INTERVAL_MINUTE: - case SQL_INTERVAL_SECOND: - case SQL_INTERVAL_DAY_TO_HOUR: - case SQL_INTERVAL_DAY_TO_MINUTE: - case SQL_INTERVAL_DAY_TO_SECOND: - case SQL_INTERVAL_HOUR_TO_MINUTE: - case SQL_INTERVAL_HOUR_TO_SECOND: - case SQL_INTERVAL_MINUTE_TO_SECOND: - openSearchType = OPENSEARCH_TYPE_INTERVAL; - break; - } - - return openSearchType; -} - -static int getAtttypmodEtc(const StatementClass *stmt, int col, - int *adtsize_or_longestlen) { - int atttypmod = -1; - - if (NULL != adtsize_or_longestlen) - *adtsize_or_longestlen = OPENSEARCH_ADT_UNSET; - if (col >= 0) { - const QResultClass *res; - - if (res = SC_get_Curres(stmt), NULL != res) { - atttypmod = QR_get_atttypmod(res, col); - if (NULL != adtsize_or_longestlen) { - if (stmt->catalog_result) - *adtsize_or_longestlen = QR_get_fieldsize(res, col); - else { - *adtsize_or_longestlen = QR_get_display_size(res, col); - if (OPENSEARCH_TYPE_NUMERIC == QR_get_field_type(res, col) - && atttypmod < 0 && *adtsize_or_longestlen > 0) { - SQLULEN i; - size_t sval, maxscale = 0; - const char *tval, *sptr; - - for (i = 0; i < res->num_cached_rows; i++) { - tval = QR_get_value_backend_text(res, i, col); - if (NULL != tval) { - sptr = strchr(tval, '.'); - if (NULL != sptr) { - sval = strlen(tval) - (sptr + 1 - tval); - if (sval > maxscale) - maxscale = sval; - } - } - } - *adtsize_or_longestlen += (int)(maxscale << 16); - } - } - } - } - } - return atttypmod; -} - -/* - * There are two ways of calling this function: - * - * 1. When going through the supported ES types (SQLGetTypeInfo) - * - * 2. When taking any type id (SQLColumns, SQLGetData) - * - * The first type will always work because all the types defined are returned - *here. The second type will return a default based on global parameter when it - *does not know. This allows for supporting types that are unknown. All - *other es routines in here return a suitable default. - */ -SQLSMALLINT -opensearchtype_to_concise_type(const StatementClass *stmt, OID type, int col, - int handle_unknown_size_as) { - int atttypmod, adtsize_or_longestlen; - - atttypmod = getAtttypmodEtc(stmt, col, &adtsize_or_longestlen); - return opensearchtype_attr_to_concise_type(SC_get_conn(stmt), type, - atttypmod, adtsize_or_longestlen, - handle_unknown_size_as); -} - -SQLSMALLINT -opensearchtype_to_sqldesctype(const StatementClass *stmt, OID type, int col, - int handle_unknown_size_as) { - int adtsize_or_longestlen; - int atttypmod = getAtttypmodEtc(stmt, col, &adtsize_or_longestlen); - - return opensearchtype_attr_to_sqldesctype(SC_get_conn(stmt), type, - atttypmod, adtsize_or_longestlen, - handle_unknown_size_as); -} - -const char *opensearchtype_to_name(const StatementClass *stmt, OID type, int col, - BOOL auto_increment) { - int atttypmod = getAtttypmodEtc(stmt, col, NULL); - - return opensearchtype_attr_to_name(SC_get_conn(stmt), type, atttypmod, - auto_increment); -} - -/* - * This corresponds to "precision" in ODBC 2.x. - * - * For OPENSEARCH_TYPE_VARCHAR, OPENSEARCH_TYPE_BPCHAR, OPENSEARCH_TYPE_NUMERIC, SQLColumns will - * override this length with the atttypmod length from es_attribute . - * - * If col >= 0, then will attempt to get the info from the result set. - * This is used for functions SQLDescribeCol and SQLColAttributes. - */ -Int4 /* OpenSearch restriction */ -opensearchtype_column_size(const StatementClass *stmt, OID type, int col, - int handle_unknown_size_as) { - int atttypmod, adtsize_or_longestlen; - - atttypmod = getAtttypmodEtc(stmt, col, &adtsize_or_longestlen); - return opensearchtype_attr_column_size( - SC_get_conn(stmt), type, atttypmod, adtsize_or_longestlen, - stmt->catalog_result ? UNKNOWNS_AS_LONGEST : handle_unknown_size_as); -} - -/* - * precision in ODBC 3.x. - */ -SQLSMALLINT -opensearchtype_precision(const StatementClass *stmt, OID type, int col, - int handle_unknown_size_as) { - int atttypmod, adtsize_or_longestlen; - - atttypmod = getAtttypmodEtc(stmt, col, &adtsize_or_longestlen); - return opensearchtype_attr_precision( - SC_get_conn(stmt), type, atttypmod, adtsize_or_longestlen, - stmt->catalog_result ? UNKNOWNS_AS_LONGEST : handle_unknown_size_as); -} - -Int4 opensearchtype_display_size(const StatementClass *stmt, OID type, int col, - int handle_unknown_size_as) { - int atttypmod, adtsize_or_longestlen; - - atttypmod = getAtttypmodEtc(stmt, col, &adtsize_or_longestlen); - return opensearchtype_attr_display_size( - SC_get_conn(stmt), type, atttypmod, adtsize_or_longestlen, - stmt->catalog_result ? UNKNOWNS_AS_LONGEST : handle_unknown_size_as); -} - -/* - * The length in bytes of data transferred on an SQLGetData, SQLFetch, - * or SQLFetchScroll operation if SQL_C_DEFAULT is specified. - */ -Int4 opensearchtype_buffer_length(const StatementClass *stmt, OID type, int col, - int handle_unknown_size_as) { - int atttypmod, adtsize_or_longestlen; - - atttypmod = getAtttypmodEtc(stmt, col, &adtsize_or_longestlen); - return opensearchtype_attr_buffer_length( - SC_get_conn(stmt), type, atttypmod, adtsize_or_longestlen, - stmt->catalog_result ? UNKNOWNS_AS_LONGEST : handle_unknown_size_as); -} - -/* - */ -Int4 opensearchtype_desclength(const StatementClass *stmt, OID type, int col, - int handle_unknown_size_as) { - int atttypmod, adtsize_or_longestlen; - - atttypmod = getAtttypmodEtc(stmt, col, &adtsize_or_longestlen); - return opensearchtype_attr_desclength( - SC_get_conn(stmt), type, atttypmod, adtsize_or_longestlen, - stmt->catalog_result ? UNKNOWNS_AS_LONGEST : handle_unknown_size_as); -} - -#ifdef NOT_USED -/* - * Transfer octet length. - */ -Int4 opensearchtype_transfer_octet_length(const StatementClass *stmt, OID type, - int column_size) { - ConnectionClass *conn = SC_get_conn(stmt); - - int coef = 1; - Int4 maxvarc; - switch (type) { - case OPENSEARCH_TYPE_VARCHAR: - case OPENSEARCH_TYPE_BPCHAR: - case OPENSEARCH_TYPE_TEXT: - if (SQL_NO_TOTAL == column_size) - return column_size; -#ifdef UNICODE_SUPPORT - if (CC_is_in_unicode_driver(conn)) - return column_size * WCLEN; -#endif /* UNICODE_SUPPORT */ - coef = conn->mb_maxbyte_per_char; - if (coef < 2 && (conn->connInfo).lf_conversion) - /* CR -> CR/LF */ - coef = 2; - if (coef == 1) - return column_size; - maxvarc = conn->connInfo.drivers.max_varchar_size; - if (column_size <= maxvarc && column_size * coef > maxvarc) - return maxvarc; - return coef * column_size; - case OPENSEARCH_TYPE_BYTEA: - return column_size; - default: - if (type == conn->lobj_type) - return column_size; - } - return -1; -} -#endif /* NOT_USED */ - -/* - * corrsponds to "min_scale" in ODBC 2.x. - */ -Int2 opensearchtype_min_decimal_digits(const ConnectionClass *conn, OID type) { - UNUSED(conn, type); - return -1; -} - -/* - * corrsponds to "max_scale" in ODBC 2.x. - */ -Int2 opensearchtype_max_decimal_digits(const ConnectionClass *conn, OID type) { - UNUSED(conn, type); - return -1; -} - -/* - * corrsponds to "scale" in ODBC 2.x. - */ -Int2 opensearchtype_decimal_digits(const StatementClass *stmt, OID type, int col) { - int atttypmod, adtsize_or_longestlen; - - atttypmod = getAtttypmodEtc(stmt, col, &adtsize_or_longestlen); - return opensearchtype_attr_decimal_digits(SC_get_conn(stmt), type, - atttypmod, adtsize_or_longestlen, - UNUSED_HANDLE_UNKNOWN_SIZE_AS); -} - -/* - * "scale" in ODBC 3.x. - */ -Int2 opensearchtype_scale(const StatementClass *stmt, OID type, int col) { - int atttypmod, adtsize_or_longestlen; - - atttypmod = getAtttypmodEtc(stmt, col, &adtsize_or_longestlen); - return opensearchtype_attr_scale(SC_get_conn(stmt), type, atttypmod, - adtsize_or_longestlen, - UNUSED_HANDLE_UNKNOWN_SIZE_AS); -} - -Int2 opensearchtype_radix(const ConnectionClass *conn, OID type) { - UNUSED(conn, type); - return 10; -} - -Int2 opensearchtype_nullable(const ConnectionClass *conn, OID type) { - UNUSED(conn, type); - return SQL_NULLABLE_UNKNOWN; /* everything should be nullable unknown */ -} - -Int2 opensearchtype_auto_increment(const ConnectionClass *conn, OID type) { - UNUSED(conn, type); - return SQL_FALSE; -} - -Int2 opensearchtype_case_sensitive(const ConnectionClass *conn, OID type) { - UNUSED(conn, type); - switch (type) { - case OPENSEARCH_TYPE_KEYWORD: - case OPENSEARCH_TYPE_TEXT: - return SQL_TRUE; - - default: - return SQL_FALSE; - } -} - -Int2 opensearchtype_money(const ConnectionClass *conn, OID type) { - UNUSED(conn, type); - return SQL_FALSE; -} - -Int2 opensearchtype_searchable(const ConnectionClass *conn, OID type) { - UNUSED(conn, type); - return SQL_SEARCHABLE; -} - -Int2 opensearchtype_unsigned(const ConnectionClass *conn, OID type) { - UNUSED(conn); - switch (type) { - case OPENSEARCH_TYPE_BOOL: - case OPENSEARCH_TYPE_KEYWORD: - case OPENSEARCH_TYPE_TEXT: - case OPENSEARCH_TYPE_NESTED: - case OPENSEARCH_TYPE_DATETIME: - case OPENSEARCH_TYPE_TIMESTAMP: - case OPENSEARCH_TYPE_OBJECT: - return SQL_TRUE; - - case OPENSEARCH_TYPE_INT1: - case OPENSEARCH_TYPE_INT2: - case OPENSEARCH_TYPE_INT4: - case OPENSEARCH_TYPE_INT8: - case OPENSEARCH_TYPE_HALF_FLOAT: - case OPENSEARCH_TYPE_FLOAT4: - case OPENSEARCH_TYPE_FLOAT8: - case OPENSEARCH_TYPE_SCALED_FLOAT: - return SQL_FALSE; - - default: - return -1; - } -} - -const char *opensearchtype_literal_prefix(const ConnectionClass *conn, OID type) { - UNUSED(conn); - switch (type) { - case OPENSEARCH_TYPE_KEYWORD: - case OPENSEARCH_TYPE_TEXT: - case OPENSEARCH_TYPE_NESTED: - case OPENSEARCH_TYPE_OBJECT: - return "\'"; - default: - return ""; - } -} - -const char *opensearchtype_literal_suffix(const ConnectionClass *conn, OID type) { - UNUSED(conn); - switch (type) { - case OPENSEARCH_TYPE_KEYWORD: - case OPENSEARCH_TYPE_TEXT: - case OPENSEARCH_TYPE_NESTED: - case OPENSEARCH_TYPE_OBJECT: - return "\'"; - default: - return ""; - } -} - -const char *opensearchtype_create_params(const ConnectionClass *conn, OID type) { - UNUSED(conn, type); - return NULL; -} - -SQLSMALLINT -sqltype_to_default_ctype(const ConnectionClass *conn, SQLSMALLINT sqltype) { - /* - * from the table on page 623 of ODBC 2.0 Programmer's Reference - * (Appendix D) - */ - switch (sqltype) { - case SQL_CHAR: - case SQL_VARCHAR: - case SQL_LONGVARCHAR: - case SQL_DECIMAL: - case SQL_NUMERIC: - return SQL_C_CHAR; - case SQL_BIGINT: - return ALLOWED_C_BIGINT; - -#ifdef UNICODE_SUPPORT - case SQL_WCHAR: - case SQL_WVARCHAR: - case SQL_WLONGVARCHAR: - return ansi_to_wtype(conn, SQL_C_CHAR); -#endif /* UNICODE_SUPPORT */ - - case SQL_BIT: - return SQL_C_BIT; - - case SQL_TINYINT: - return SQL_C_STINYINT; - - case SQL_SMALLINT: - return SQL_C_SSHORT; - - case SQL_INTEGER: - return SQL_C_SLONG; - - case SQL_REAL: - return SQL_C_FLOAT; - - case SQL_FLOAT: - case SQL_DOUBLE: - return SQL_C_DOUBLE; - - case SQL_BINARY: - case SQL_VARBINARY: - case SQL_LONGVARBINARY: - return SQL_C_BINARY; - - case SQL_DATE: - return SQL_C_DATE; - - case SQL_TIME: - return SQL_C_TIME; - - case SQL_TIMESTAMP: - return SQL_C_TIMESTAMP; - - case SQL_TYPE_DATE: - return SQL_C_TYPE_DATE; - - case SQL_TYPE_TIME: - return SQL_C_TYPE_TIME; - - case SQL_TYPE_TIMESTAMP: - return SQL_C_TYPE_TIMESTAMP; - - case SQL_GUID: - if (conn->ms_jet) - return SQL_C_CHAR; - else - return SQL_C_GUID; - - default: - /* should never happen */ - return SQL_C_CHAR; - } -} - -Int4 ctype_length(SQLSMALLINT ctype) { - switch (ctype) { - case SQL_C_SSHORT: - case SQL_C_SHORT: - return sizeof(SWORD); - - case SQL_C_USHORT: - return sizeof(UWORD); - - case SQL_C_SLONG: - case SQL_C_LONG: - return sizeof(SDWORD); - - case SQL_C_ULONG: - return sizeof(UDWORD); - - case SQL_C_FLOAT: - return sizeof(SFLOAT); - - case SQL_C_DOUBLE: - return sizeof(SDOUBLE); - - case SQL_C_BIT: - return sizeof(UCHAR); - - case SQL_C_STINYINT: - case SQL_C_TINYINT: - return sizeof(SCHAR); - - case SQL_C_UTINYINT: - return sizeof(UCHAR); - - case SQL_C_DATE: - case SQL_C_TYPE_DATE: - return sizeof(DATE_STRUCT); - - case SQL_C_TIME: - case SQL_C_TYPE_TIME: - return sizeof(TIME_STRUCT); - - case SQL_C_TIMESTAMP: - case SQL_C_TYPE_TIMESTAMP: - return sizeof(TIMESTAMP_STRUCT); - - case SQL_C_GUID: - return sizeof(SQLGUID); - case SQL_C_INTERVAL_YEAR: - case SQL_C_INTERVAL_MONTH: - case SQL_C_INTERVAL_YEAR_TO_MONTH: - case SQL_C_INTERVAL_DAY: - case SQL_C_INTERVAL_HOUR: - case SQL_C_INTERVAL_DAY_TO_HOUR: - case SQL_C_INTERVAL_MINUTE: - case SQL_C_INTERVAL_DAY_TO_MINUTE: - case SQL_C_INTERVAL_HOUR_TO_MINUTE: - case SQL_C_INTERVAL_SECOND: - case SQL_C_INTERVAL_DAY_TO_SECOND: - case SQL_C_INTERVAL_HOUR_TO_SECOND: - case SQL_C_INTERVAL_MINUTE_TO_SECOND: - return sizeof(SQL_INTERVAL_STRUCT); - case SQL_C_NUMERIC: - return sizeof(SQL_NUMERIC_STRUCT); - case SQL_C_SBIGINT: - case SQL_C_UBIGINT: - return sizeof(SQLBIGINT); - - case SQL_C_BINARY: - case SQL_C_CHAR: -#ifdef UNICODE_SUPPORT - case SQL_C_WCHAR: -#endif /* UNICODE_SUPPORT */ - return 0; - - default: /* should never happen */ - return 0; - } -} diff --git a/sql-odbc/src/sqlodbc/opensearch_types.h b/sql-odbc/src/sqlodbc/opensearch_types.h deleted file mode 100644 index 8c7dee2d74..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_types.h +++ /dev/null @@ -1,340 +0,0 @@ -#ifndef OPENSEARCH_TYPES -#define OPENSEARCH_TYPES - -#include "dlg_specific.h" -#include "opensearch_odbc.h" -#ifdef __cplusplus -extern "C" { -#endif - -/* the type numbers are defined by the OID's of the types' rows */ -/* in table opensearch_type */ - -#ifdef NOT_USED -#define ES_TYPE_LO ? ? ? ? /* waiting for permanent type */ -#endif - -#define OPENSEARCH_TYPE_NAME_BOOLEAN "boolean" -#define OPENSEARCH_TYPE_NAME_BYTE "byte" -#define OPENSEARCH_TYPE_NAME_SHORT "short" -#define OPENSEARCH_TYPE_NAME_INTEGER "integer" -#define OPENSEARCH_TYPE_NAME_LONG "long" -#define OPENSEARCH_TYPE_NAME_HALF_FLOAT "half_float" -#define OPENSEARCH_TYPE_NAME_FLOAT "float" -#define OPENSEARCH_TYPE_NAME_DOUBLE "double" -#define OPENSEARCH_TYPE_NAME_SCALED_FLOAT "scaled_float" -#define OPENSEARCH_TYPE_NAME_KEYWORD "keyword" -#define OPENSEARCH_TYPE_NAME_TEXT "text" -#define OPENSEARCH_TYPE_NAME_NESTED "nested" -#define OPENSEARCH_TYPE_NAME_DATE "date" -#define OPENSEARCH_TYPE_NAME_TIMESTAMP "timestamp" -#define OPENSEARCH_TYPE_NAME_OBJECT "object" -#define OPENSEARCH_TYPE_NAME_VARCHAR "varchar" -#define OPENSEARCH_TYPE_NAME_UNSUPPORTED "unsupported" - -#define MS_ACCESS_SERIAL "int identity" -#define OPENSEARCH_TYPE_BOOL 16 -#define OPENSEARCH_TYPE_BYTEA 17 -#define OPENSEARCH_TYPE_CHAR 18 -#define OPENSEARCH_TYPE_NAME 19 -#define OPENSEARCH_TYPE_INT8 20 -#define OPENSEARCH_TYPE_INT2 21 -#define OPENSEARCH_TYPE_INT2VECTOR 22 -#define OPENSEARCH_TYPE_INT4 23 -#define OPENSEARCH_TYPE_REGPROC 24 -#define OPENSEARCH_TYPE_TEXT 25 -#define OPENSEARCH_TYPE_OID 26 -#define OPENSEARCH_TYPE_TID 27 -#define OPENSEARCH_TYPE_XID 28 -#define OPENSEARCH_TYPE_CID 29 -#define OPENSEARCH_TYPE_OIDVECTOR 30 -#define OPENSEARCH_TYPE_INT1 31 -#define OPENSEARCH_TYPE_HALF_FLOAT 32 -#define OPENSEARCH_TYPE_SCALED_FLOAT 33 -#define OPENSEARCH_TYPE_KEYWORD 34 -#define OPENSEARCH_TYPE_NESTED 35 -#define OPENSEARCH_TYPE_OBJECT 36 -#define OPENSEARCH_TYPE_XML 142 -#define OPENSEARCH_TYPE_XMLARRAY 143 -#define OPENSEARCH_TYPE_CIDR 650 -#define OPENSEARCH_TYPE_FLOAT4 700 -#define OPENSEARCH_TYPE_FLOAT8 701 -#define OPENSEARCH_TYPE_ABSTIME 702 -#define OPENSEARCH_TYPE_UNKNOWN 705 -#define OPENSEARCH_TYPE_MONEY 790 -#define OPENSEARCH_TYPE_MACADDR 829 -#define OPENSEARCH_TYPE_INET 869 -#define OPENSEARCH_TYPE_TEXTARRAY 1009 -#define OPENSEARCH_TYPE_BPCHARARRAY 1014 -#define OPENSEARCH_TYPE_VARCHARARRAY 1015 -#define OPENSEARCH_TYPE_BPCHAR 1042 -#define OPENSEARCH_TYPE_VARCHAR 1043 -#define OPENSEARCH_TYPE_DATE 1082 -#define OPENSEARCH_TYPE_TIME 1083 -#define OPENSEARCH_TYPE_TIMESTAMP_NO_TMZONE 1114 /* since 7.2 */ -#define OPENSEARCH_TYPE_DATETIME 1184 /* timestamptz */ -#define OPENSEARCH_TYPE_INTERVAL 1186 -#define OPENSEARCH_TYPE_TIME_WITH_TMZONE 1266 /* since 7.1 */ -#define OPENSEARCH_TYPE_TIMESTAMP 1296 /* deprecated since 7.0 */ -#define OPENSEARCH_TYPE_BIT 1560 -#define OPENSEARCH_TYPE_NUMERIC 1700 -#define OPENSEARCH_TYPE_REFCURSOR 1790 -#define OPENSEARCH_TYPE_RECORD 2249 -#define OPENSEARCH_TYPE_ANY 2276 -#define OPENSEARCH_TYPE_VOID 2278 -#define OPENSEARCH_TYPE_UUID 2950 -#define INTERNAL_ASIS_TYPE (-9999) - -#define TYPE_MAY_BE_ARRAY(type) \ - ((type) == OPENSEARCH_TYPE_XMLARRAY || ((type) >= 1000 && (type) <= 1041)) -/* extern Int4 opensearch_types_defined[]; */ -extern SQLSMALLINT sqlTypes[]; - -/* Defines for opensearchtype_precision */ -#define OPENSEARCH_ATP_UNSET (-3) /* atttypmod */ -#define OPENSEARCH_ADT_UNSET (-3) /* adtsize_or_longestlen */ -#define OPENSEARCH_UNKNOWNS_UNSET 0 /* UNKNOWNS_AS_MAX */ -#define OPENSEARCH_WIDTH_OF_BOOLS_AS_CHAR 5 - -/* - * SQL_INTERVAL support is disabled because I found - * some applications which are unhappy with it. - * -#define OPENSEARCH_INTERVAL_AS_SQL_INTERVAL - */ - -OID opensearch_true_type(const ConnectionClass *, OID, OID); -OID sqltype_to_opensearchtype(const ConnectionClass *conn, SQLSMALLINT fSqlType); -const char *sqltype_to_opensearchcast(const ConnectionClass *conn, - SQLSMALLINT fSqlType); - -SQLSMALLINT opensearchtype_to_concise_type(const StatementClass *stmt, OID type, - int col, int handle_unknown_size_as); -SQLSMALLINT opensearchtype_to_sqldesctype(const StatementClass *stmt, OID type, int col, - int handle_unknown_size_as); -const char *opensearchtype_to_name(const StatementClass *stmt, OID type, int col, - BOOL auto_increment); - -SQLSMALLINT opensearchtype_attr_to_concise_type(const ConnectionClass *conn, OID type, - int typmod, int adtsize_or_longestlen, - int handle_unknown_size_as); -SQLSMALLINT opensearchtype_attr_to_sqldesctype(const ConnectionClass *conn, OID type, - int typmod, int adtsize_or_longestlen, - int handle_unknown_size_as); -SQLSMALLINT opensearchtype_attr_to_datetime_sub(const ConnectionClass *conn, OID type, - int typmod); -SQLSMALLINT opensearchtype_attr_to_ctype(const ConnectionClass *conn, OID type, - int typmod); -const char *opensearchtype_attr_to_name(const ConnectionClass *conn, OID type, - int typmod, BOOL auto_increment); -Int4 opensearchtype_attr_column_size(const ConnectionClass *conn, OID type, - int atttypmod, int adtsize_or_longest, - int handle_unknown_size_as); -Int4 opensearchtype_attr_buffer_length(const ConnectionClass *conn, OID type, - int atttypmod, int adtsize_or_longestlen, - int handle_unknown_size_as); -Int4 opensearchtype_attr_display_size(const ConnectionClass *conn, OID type, - int atttypmod, int adtsize_or_longestlen, - int handle_unknown_size_as); -Int2 opensearchtype_attr_decimal_digits(const ConnectionClass *conn, OID type, - int atttypmod, int adtsize_or_longestlen, - int handle_unknown_size_as); -Int4 opensearchtype_attr_transfer_octet_length(const ConnectionClass *conn, OID type, - int atttypmod, - int handle_unknown_size_as); -SQLSMALLINT opensearchtype_attr_precision(const ConnectionClass *conn, OID type, - int atttypmod, int adtsize_or_longest, - int handle_unknown_size_as); -Int4 opensearchtype_attr_desclength(const ConnectionClass *conn, OID type, - int atttypmod, int adtsize_or_longestlen, - int handle_unknown_size_as); -Int2 opensearchtype_attr_scale(const ConnectionClass *conn, OID type, int atttypmod, - int adtsize_or_longestlen, int handle_unknown_size_as); - -/* These functions can use static numbers or result sets(col parameter) */ -Int4 opensearchtype_column_size( - const StatementClass *stmt, OID type, int col, - int handle_unknown_size_as); /* corresponds to "precision" in ODBC 2.x */ -SQLSMALLINT opensearchtype_precision( - const StatementClass *stmt, OID type, int col, - int handle_unknown_size_as); /* "precsion in ODBC 3.x */ -/* the following size/length are of Int4 due to ES restriction */ -Int4 opensearchtype_display_size(const StatementClass *stmt, OID type, int col, - int handle_unknown_size_as); -Int4 opensearchtype_buffer_length(const StatementClass *stmt, OID type, int col, - int handle_unknown_size_as); -Int4 opensearchtype_desclength(const StatementClass *stmt, OID type, int col, - int handle_unknown_size_as); -// Int4 opensearchtype_transfer_octet_length(const ConnectionClass *conn, OID type, -// int column_size); - -SQLSMALLINT opensearchtype_decimal_digits( - const StatementClass *stmt, OID type, - int col); /* corresponds to "scale" in ODBC 2.x */ -SQLSMALLINT opensearchtype_min_decimal_digits( - const ConnectionClass *conn, - OID type); /* corresponds to "min_scale" in ODBC 2.x */ -SQLSMALLINT opensearchtype_max_decimal_digits( - const ConnectionClass *conn, - OID type); /* corresponds to "max_scale" in ODBC 2.x */ -SQLSMALLINT opensearchtype_scale(const StatementClass *stmt, OID type, - int col); /* ODBC 3.x " */ -Int2 opensearchtype_radix(const ConnectionClass *conn, OID type); -Int2 opensearchtype_nullable(const ConnectionClass *conn, OID type); -Int2 opensearchtype_auto_increment(const ConnectionClass *conn, OID type); -Int2 opensearchtype_case_sensitive(const ConnectionClass *conn, OID type); -Int2 opensearchtype_money(const ConnectionClass *conn, OID type); -Int2 opensearchtype_searchable(const ConnectionClass *conn, OID type); -Int2 opensearchtype_unsigned(const ConnectionClass *conn, OID type); -const char *opensearchtype_literal_prefix(const ConnectionClass *conn, OID type); -const char *opensearchtype_literal_suffix(const ConnectionClass *conn, OID type); -const char *opensearchtype_create_params(const ConnectionClass *conn, OID type); - -SQLSMALLINT sqltype_to_default_ctype(const ConnectionClass *stmt, - SQLSMALLINT sqltype); -Int4 ctype_length(SQLSMALLINT ctype); - -SQLSMALLINT ansi_to_wtype(const ConnectionClass *self, SQLSMALLINT ansitype); - -#ifdef __cplusplus -} -#endif - -typedef enum { - CONNECTION_OK, - CONNECTION_BAD, - /* Non-blocking mode only below here */ - - /* - * The existence of these should never be relied upon - they should only - * be used for user feedback or similar purposes. - */ - CONNECTION_STARTED, /* Waiting for connection to be made. */ - CONNECTION_MADE, /* Connection OK; waiting to send. */ - CONNECTION_AWAITING_RESPONSE, /* Waiting for a response from the postmaster. - */ - CONNECTION_AUTH_OK, /* Received authentication; waiting for backend startup. - */ - CONNECTION_SETENV, /* Negotiating environment. */ - CONNECTION_SSL_STARTUP, /* Negotiating SSL. */ - CONNECTION_NEEDED, /* Internal state: connect() needed */ - CONNECTION_CHECK_WRITABLE, /* Check if we could make a writable connection. - */ - CONNECTION_CONSUME, /* Wait for any pending message and consume them. */ - CONNECTION_GSS_STARTUP /* Negotiating GSSAPI. */ -} ConnStatusType; - -typedef enum { - CONN_ERROR_SUCCESS, // 0 - CONN_ERROR_QUERY_SYNTAX, // 42000 - CONN_ERROR_COMM_LINK_FAILURE, // 08S01 - CONN_ERROR_INVALID_NULL_PTR, // HY009 - CONN_ERROR_INVALID_AUTH, // 28000 - CONN_ERROR_UNABLE_TO_ESTABLISH // 08001 -} ConnErrorType; - -// Only expose this to C++ code, this will be passed through the C interface as -// a void* -#ifdef __cplusplus -#include - -#ifdef __APPLE__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunused-parameter" -#endif // __APPLE__ -#include "rabbit.hpp" -#ifdef __APPLE__ -#pragma clang diagnostic pop -#endif // __APPLE__ - -#include -#include - -typedef struct authentication_options { - std::string auth_type; - std::string username; - std::string password; - std::string region; -} authentication_options; - -typedef struct encryption_options { - bool use_ssl; - bool verify_server; - std::string certificate_type; - std::string certificate; - std::string key; - std::string key_pw; -} encryption_options; - -typedef struct connection_options { - std::string server; - std::string port; - std::string timeout; - std::string fetch_size; -} connection_options; - -typedef struct runtime_options { - connection_options conn; - authentication_options auth; - encryption_options crypt; -} runtime_options; - -typedef struct ErrorDetails { - std::string reason; - std::string details; - std::string source_type; - ConnErrorType type; - ErrorDetails() { - reason = ""; - details = ""; - source_type = ""; - type = ConnErrorType::CONN_ERROR_SUCCESS; - } -} ErrorDetails; - -#define INVALID_OID 0 -#define KEYWORD_TYPE_OID 1043 -#define KEYWORD_TYPE_SIZE 255 -#define KEYWORD_DISPLAY_SIZE 255 -#define KEYWORD_LENGTH_OF_STR 255 - -// Copied from ColumnInfoClass's 'srvr_info' struct. Comments are the relevant -// name in 'srvr_info' -typedef struct ColumnInfo { - std::string field_name; // name - uint32_t type_oid; // adtid - int16_t type_size; // adtsize - int32_t display_size; // longest row - int32_t length_of_str; // the length of bpchar/varchar - uint32_t relation_id; // relid - int16_t attribute_number; // attid - ColumnInfo() { - field_name = ""; - type_oid = INVALID_OID; - type_size = 0; // ? - display_size = 0; // ? - length_of_str = 0; // ? - relation_id = INVALID_OID; - attribute_number = INVALID_OID; - } -} ColumnInfo; - -typedef struct OpenSearchResult { - uint32_t ref_count; // reference count. A ColumnInfo can be shared by - // several qresults. - uint16_t num_fields; - std::vector< ColumnInfo > column_info; - std::string cursor; - std::string result_json; - std::string command_type; // SELECT / FETCH / etc - rabbit::document opensearch_result_doc; - OpenSearchResult() { - ref_count = 0; - num_fields = 0; - result_json = ""; - command_type = ""; - } -} OpenSearchResult; - -#endif -#endif diff --git a/sql-odbc/src/sqlodbc/opensearch_utility.cpp b/sql-odbc/src/sqlodbc/opensearch_utility.cpp deleted file mode 100644 index faac8f389e..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_utility.cpp +++ /dev/null @@ -1,110 +0,0 @@ -#include "opensearch_utility.h" - -#include -#include -#include -#include -#include -#include - -#include - -// Used in the event that we run out of memory. This way we have a way of -// settings the buffer to point at an empty char array (because the buffer -// itself isn't const, we can't set this to const without having to later cast -// it away) -static char oom_buffer[1] = ""; -static char *oom_buffer_ptr = oom_buffer; - -static void MarkOpenSearchExpBufferBroken(OpenSearchExpBuffer str) { - if (str->data != oom_buffer) - free(str->data); - str->data = oom_buffer_ptr; - str->len = 0; - str->maxlen = 0; -} - -static bool EnlargeOpenSearchExpBuffer(OpenSearchExpBuffer str, size_t needed) { - if (OpenSearchExpBufferBroken(str)) - return 0; - - if (needed >= ((size_t)INT_MAX - str->len)) { - MarkOpenSearchExpBufferBroken(str); - return false; - } - - needed += str->len + 1; - if (needed <= str->maxlen) - return true; - - size_t newlen = (str->maxlen > 0) ? (2 * str->maxlen) : 64; - while (needed > newlen) - newlen = 2 * newlen; - - if (newlen > (size_t)INT_MAX) - newlen = (size_t)INT_MAX; - - char *newdata = (char *)realloc(str->data, newlen); - if (newdata != NULL) { - str->data = newdata; - str->maxlen = newlen; - return true; - } - - MarkOpenSearchExpBufferBroken(str); - return false; -} - -static bool AppendOpenSearchExpBufferVA(OpenSearchExpBuffer str, const char *fmt, - va_list args) { - size_t needed = 32; - if (str->maxlen > (str->len + 16)) { - size_t avail = str->maxlen - str->len; - - int nprinted = vsnprintf(str->data + str->len, avail, fmt, args); - if ((nprinted < 0) || (nprinted > (INT_MAX - 1))) { - MarkOpenSearchExpBufferBroken(str); - return true; - } else if ((size_t)nprinted < avail) { - str->len += nprinted; - return true; - } - needed = nprinted + 1; - } - return !EnlargeOpenSearchExpBuffer(str, needed); -} - -void InitOpenSearchExpBuffer(OpenSearchExpBuffer str) { - str->data = (char *)malloc(INITIAL_EXPBUFFER_SIZE); - if (str->data == NULL) { - str->data = oom_buffer_ptr; - str->maxlen = 0; - } else { - str->maxlen = INITIAL_EXPBUFFER_SIZE; - str->data[0] = '\0'; - } - str->len = 0; -} - -void AppendOpenSearchExpBuffer(OpenSearchExpBuffer str, const char *fmt, ...) { - if (OpenSearchExpBufferBroken(str)) - return; - - va_list args; - bool done = false; - int save_errno = errno; - do { - errno = save_errno; - va_start(args, fmt); - done = AppendOpenSearchExpBufferVA(str, fmt, args); - va_end(args); - } while (!done); -} - -void TermOpenSearchExpBuffer(OpenSearchExpBuffer str) { - if (str->data != oom_buffer) - free(str->data); - str->data = oom_buffer_ptr; - str->maxlen = 0; - str->len = 0; -} diff --git a/sql-odbc/src/sqlodbc/opensearch_utility.h b/sql-odbc/src/sqlodbc/opensearch_utility.h deleted file mode 100644 index bd5d3463c6..0000000000 --- a/sql-odbc/src/sqlodbc/opensearch_utility.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef OPENSEARCH_UTILITY_H -#define OPENSEARCH_UTILITY_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct OpenSearchExpBufferData { - char *data; - size_t len; - size_t maxlen; -} OpenSearchExpBufferData; - -typedef OpenSearchExpBufferData *OpenSearchExpBuffer; - -#define OpenSearchExpBufferBroken(str) ((str) == NULL || (str)->maxlen == 0) -#define OpenSearchExpBufferDataBroken(buf) ((buf).maxlen == 0) -#define INITIAL_EXPBUFFER_SIZE 256 - -void InitOpenSearchExpBuffer(OpenSearchExpBuffer str); -void AppendOpenSearchExpBuffer(OpenSearchExpBuffer str, const char *fmt, ...); -void TermOpenSearchExpBuffer(OpenSearchExpBuffer str); - -#ifdef __cplusplus -} -#endif - -#endif /* OPENSEARCH_UTILITY_H */ diff --git a/sql-odbc/src/sqlodbc/options.c b/sql-odbc/src/sqlodbc/options.c deleted file mode 100644 index fd100c0ea7..0000000000 --- a/sql-odbc/src/sqlodbc/options.c +++ /dev/null @@ -1,705 +0,0 @@ -#include - -#include "environ.h" -#include "opensearch_odbc.h" -#include "misc.h" -#include "opensearch_apifunc.h" -#include "opensearch_connection.h" -#include "qresult.h" -#include "statement.h" -#include "unicode_support.h" - -static RETCODE set_statement_option(ConnectionClass *conn, StatementClass *stmt, - SQLUSMALLINT fOption, SQLULEN vParam) { - CSTR func = "set_statement_option"; - char changed = FALSE; - SQLULEN setval; - - switch (fOption) { - case SQL_ASYNC_ENABLE: /* ignored */ - break; - - case SQL_BIND_TYPE: - /* now support multi-column and multi-row binding */ - if (conn) - conn->ardOptions.bind_size = (SQLUINTEGER)vParam; - if (stmt) - SC_get_ARDF(stmt)->bind_size = (SQLUINTEGER)vParam; - break; - - case SQL_CONCURRENCY: - /* - * positioned update isn't supported so cursor concurrency is - * read-only - */ - MYLOG(OPENSEARCH_DEBUG, "SQL_CONCURRENCY = " FORMAT_LEN " ", vParam); - setval = SQL_CONCUR_READ_ONLY; - if (conn) - conn->stmtOptions.scroll_concurrency = (SQLUINTEGER)setval; - else if (stmt) { - if (SC_get_Result(stmt)) { - SC_set_error( - stmt, STMT_INVALID_CURSOR_STATE_ERROR, - "The attr can't be changed because the cursor is open.", - func); - return SQL_ERROR; - } - stmt->options.scroll_concurrency = - stmt->options_orig.scroll_concurrency = (SQLUINTEGER)setval; - } - if (setval != vParam) - changed = TRUE; - MYPRINTF(0, "-> " FORMAT_LEN "\n", setval); - break; - - case SQL_CURSOR_TYPE: - /* - * if declare/fetch, then type can only be forward. otherwise, - * it can only be forward or static. - */ - MYLOG(OPENSEARCH_DEBUG, "SQL_CURSOR_TYPE = " FORMAT_LEN " ", vParam); - setval = SQL_CURSOR_FORWARD_ONLY; - if (SQL_CURSOR_STATIC == vParam) - setval = vParam; - else if (SQL_CURSOR_KEYSET_DRIVEN == vParam) { - setval = SQL_CURSOR_STATIC; /* at least scrollable */ - } else if (SQL_CURSOR_DYNAMIC == vParam) { - setval = SQL_CURSOR_STATIC; /* at least scrollable */ - } - if (conn) - conn->stmtOptions.cursor_type = (SQLUINTEGER)setval; - else if (stmt) { - if (SC_get_Result(stmt)) { - SC_set_error( - stmt, STMT_INVALID_CURSOR_STATE_ERROR, - "The attr can't be changed because the cursor is open.", - func); - return SQL_ERROR; - } - stmt->options_orig.cursor_type = stmt->options.cursor_type = - (SQLUINTEGER)setval; - } - if (setval != vParam) - changed = TRUE; - MYPRINTF(0, "-> " FORMAT_LEN "\n", setval); - break; - - case SQL_KEYSET_SIZE: /* ignored, but saved and returned */ - MYLOG(OPENSEARCH_DEBUG, "SQL_KEYSET_SIZE, vParam = " FORMAT_LEN "\n", - vParam); - - if (conn) - conn->stmtOptions.keyset_size = vParam; - if (stmt) { - stmt->options_orig.keyset_size = vParam; - if (!SC_get_Result(stmt)) - stmt->options.keyset_size = vParam; - if (stmt->options.keyset_size != (SQLLEN)vParam) - changed = TRUE; - } - - break; - - case SQL_MAX_LENGTH: /* ignored, but saved */ - MYLOG(OPENSEARCH_DEBUG, "SQL_MAX_LENGTH, vParam = " FORMAT_LEN "\n", - vParam); - if (conn) - conn->stmtOptions.maxLength = vParam; - if (stmt) { - stmt->options_orig.maxLength = vParam; - if (!SC_get_Result(stmt)) - stmt->options.maxLength = vParam; - if (stmt->options.maxLength != (SQLLEN)vParam) - changed = TRUE; - } - break; - - case SQL_MAX_ROWS: /* ignored, but saved */ - MYLOG(OPENSEARCH_DEBUG, "SQL_MAX_ROWS, vParam = " FORMAT_LEN "\n", vParam); - if (conn) - conn->stmtOptions.maxRows = vParam; - if (stmt) { - stmt->options_orig.maxRows = vParam; - if (!SC_get_Result(stmt)) - stmt->options.maxRows = vParam; - if (stmt->options.maxRows != (SQLLEN)vParam) - changed = TRUE; - } - break; - - case SQL_NOSCAN: /* ignored */ - MYLOG(OPENSEARCH_DEBUG, "SQL_NOSCAN, vParam = " FORMAT_LEN "\n", vParam); - break; - - case SQL_QUERY_TIMEOUT: /* ignored */ - MYLOG(OPENSEARCH_DEBUG, "SQL_QUERY_TIMEOUT, vParam = " FORMAT_LEN "\n", - vParam); - if (conn) - conn->stmtOptions.stmt_timeout = (SQLULEN)vParam; - if (stmt) - stmt->options.stmt_timeout = (SQLULEN)vParam; - break; - - case SQL_RETRIEVE_DATA: - MYLOG(OPENSEARCH_DEBUG, "SQL_RETRIEVE_DATA, vParam = " FORMAT_LEN "\n", - vParam); - if (conn) - conn->stmtOptions.retrieve_data = (SQLUINTEGER)vParam; - if (stmt) - stmt->options.retrieve_data = (SQLUINTEGER)vParam; - break; - - case SQL_ROWSET_SIZE: - MYLOG(OPENSEARCH_DEBUG, "SQL_ROWSET_SIZE, vParam = " FORMAT_LEN "\n", - vParam); - - if (vParam < 1) { - vParam = 1; - changed = TRUE; - } - - if (conn) - conn->ardOptions.size_of_rowset_odbc2 = vParam; - if (stmt) - SC_get_ARDF(stmt)->size_of_rowset_odbc2 = vParam; - break; - - case SQL_SIMULATE_CURSOR: /* NOT SUPPORTED */ - if (stmt) { - SC_set_error(stmt, STMT_NOT_IMPLEMENTED_ERROR, - "Simulated positioned update/delete not " - "supported. Use the cursor library.", - func); - } - if (conn) { - CC_set_error(conn, CONN_NOT_IMPLEMENTED_ERROR, - "Simulated positioned update/delete not " - "supported. Use the cursor library.", - func); - } - return SQL_ERROR; - - case SQL_USE_BOOKMARKS: - if (stmt) { - MYLOG( - OPENSEARCH_DEBUG, "USE_BOOKMARKS %s\n", - (vParam == SQL_UB_OFF) - ? "off" - : ((vParam == SQL_UB_VARIABLE) ? "variable" : "fixed")); - setval = vParam; - stmt->options.use_bookmarks = (SQLUINTEGER)setval; - } - if (conn) - conn->stmtOptions.use_bookmarks = (SQLUINTEGER)vParam; - break; - - case 1204: /* SQL_COPT_SS_PRESERVE_CURSORS ? */ - if (stmt) { - SC_set_error(stmt, STMT_OPTION_NOT_FOR_THE_DRIVER, - "The option may be for MS SQL Server(Set)", func); - } else if (conn) { - CC_set_error(conn, CONN_OPTION_NOT_FOR_THE_DRIVER, - "The option may be for MS SQL Server(Set)", func); - } - return SQL_ERROR; - case 1227: /* SQL_SOPT_SS_HIDDEN_COLUMNS ? */ - case 1228: /* SQL_SOPT_SS_NOBROWSETABLE ? */ - if (stmt) { -#ifndef NOT_USED - if (0 != vParam) - changed = TRUE; - break; -#else - SC_set_error(stmt, STMT_OPTION_NOT_FOR_THE_DRIVER, - "The option may be for MS SQL Server(Set)", func); -#endif /* NOT_USED */ - } else if (conn) { - CC_set_error(conn, CONN_OPTION_NOT_FOR_THE_DRIVER, - "The option may be for MS SQL Server(Set)", func); - } - return SQL_ERROR; - default: { - char option[64]; - - if (stmt) { - SC_set_error(stmt, STMT_NOT_IMPLEMENTED_ERROR, - "Unknown statement option (Set)", func); - SPRINTF_FIXED(option, "fOption=%d, vParam=" FORMAT_ULEN, - fOption, vParam); - SC_log_error(func, option, stmt); - } - if (conn) { - CC_set_error(conn, CONN_NOT_IMPLEMENTED_ERROR, - "Unknown statement option (Set)", func); - SPRINTF_FIXED(option, "fOption=%d, vParam=" FORMAT_ULEN, - fOption, vParam); - CC_log_error(func, option, conn); - } - - return SQL_ERROR; - } - } - - if (changed) { - if (stmt) { - SC_set_error(stmt, STMT_OPTION_VALUE_CHANGED, - "Requested value changed.", func); - } - if (conn) { - CC_set_error(conn, CONN_OPTION_VALUE_CHANGED, - "Requested value changed.", func); - } - return SQL_SUCCESS_WITH_INFO; - } else - return SQL_SUCCESS; -} - -/* Implements only SQL_AUTOCOMMIT */ -RETCODE SQL_API OPENSEARCHAPI_SetConnectOption(HDBC hdbc, SQLUSMALLINT fOption, - SQLULEN vParam) { - CSTR func = "OPENSEARCHAPI_SetConnectOption"; - ConnectionClass *conn = (ConnectionClass *)hdbc; - char changed = FALSE; - RETCODE retval; - BOOL autocomm_on; - - MYLOG(OPENSEARCH_TRACE, "entering fOption = %d vParam = " FORMAT_LEN "\n", fOption, - vParam); - if (!conn) { - CC_log_error(func, "", NULL); - return SQL_INVALID_HANDLE; - } - - switch (fOption) { - /* - * Statement Options (apply to all stmts on the connection and - * become defaults for new stmts) - */ - case SQL_ASYNC_ENABLE: - case SQL_BIND_TYPE: - case SQL_CONCURRENCY: - case SQL_CURSOR_TYPE: - case SQL_KEYSET_SIZE: - case SQL_MAX_LENGTH: - case SQL_MAX_ROWS: - case SQL_NOSCAN: - case SQL_QUERY_TIMEOUT: - case SQL_RETRIEVE_DATA: - case SQL_ROWSET_SIZE: - case SQL_SIMULATE_CURSOR: - case SQL_USE_BOOKMARKS: - /* - * Become the default for all future statements on this - * connection - */ - retval = set_statement_option(conn, NULL, fOption, vParam); - - if (retval == SQL_SUCCESS_WITH_INFO) - changed = TRUE; - else if (retval == SQL_ERROR) - return SQL_ERROR; - - break; - - /* - * Connection Options - */ - - case SQL_ACCESS_MODE: /* ignored */ - break; - - case SQL_AUTOCOMMIT: - switch (vParam) { - case SQL_AUTOCOMMIT_ON: - autocomm_on = TRUE; - break; - default: - CC_set_error(conn, CONN_INVALID_ARGUMENT_NO, - "Illegal parameter value for SQL_AUTOCOMMIT. " - "Turning SQL_AUTOCOMMIT off requires " - "transactions, which are not supported.", - func); - return SQL_ERROR; - } - if (autocomm_on && SQL_AUTOCOMMIT_OFF != conn->autocommit_public) - break; - else if (!autocomm_on - && SQL_AUTOCOMMIT_OFF == conn->autocommit_public) - break; - conn->autocommit_public = - (autocomm_on ? SQL_AUTOCOMMIT_ON : SQL_AUTOCOMMIT_OFF); - MYLOG(OPENSEARCH_DEBUG, - "AUTOCOMMIT: transact_status=%d, vparam=" FORMAT_LEN "\n", - conn->transact_status, vParam); - - CC_set_autocommit(conn, autocomm_on); - break; - - case SQL_CURRENT_QUALIFIER: /* ignored */ - break; - - case SQL_LOGIN_TIMEOUT: - conn->login_timeout = (SQLUINTEGER)vParam; - break; - - case SQL_PACKET_SIZE: /* ignored */ - break; - - case SQL_QUIET_MODE: /* ignored */ - break; - - case SQL_TXN_ISOLATION: - if (conn->isolation == vParam) - break; - /* - * If the connection is not established, just record the setting to - * reflect it upon connection. - */ - if (CC_not_connected(conn)) { - conn->isolation = (UInt4)vParam; - break; - } - - conn->isolation = (UInt4)vParam; - break; - - /* These options should be handled by driver manager */ - case SQL_ODBC_CURSORS: - case SQL_OPT_TRACE: - case SQL_OPT_TRACEFILE: - case SQL_TRANSLATE_DLL: - case SQL_TRANSLATE_OPTION: - CC_log_error( - func, - "This connect option (Set) is only used by the Driver Manager", - conn); - break; - - default: { - char option[64]; - - CC_set_error(conn, CONN_UNSUPPORTED_OPTION, - "Unknown connect option (Set)", func); - SPRINTF_FIXED(option, "fOption=%d, vParam=" FORMAT_LEN, fOption, - vParam); -#ifdef WIN32 - if (fOption == 30002 && vParam) { - int cmp; -#ifdef UNICODE_SUPPORT - if (CC_is_in_unicode_driver(conn)) { - char *asPara = - ucs2_to_utf8((SQLWCHAR *)vParam, SQL_NTS, NULL, FALSE); - cmp = strcmp(asPara, "Microsoft Jet"); - free(asPara); - } else -#endif /* UNICODE_SUPPORT */ - cmp = strncmp((char *)vParam, "Microsoft Jet", 13); - if (0 == cmp) { - MYLOG(OPENSEARCH_DEBUG, "Microsoft Jet !!!!\n"); - CC_set_errornumber(conn, 0); - conn->ms_jet = 1; - return SQL_SUCCESS; - } - } -#endif /* WIN32 */ - CC_log_error(func, option, conn); - return SQL_ERROR; - } - } - - if (changed) { - CC_set_error(conn, CONN_OPTION_VALUE_CHANGED, - "Requested value changed.", func); - return SQL_SUCCESS_WITH_INFO; - } else - return SQL_SUCCESS; -} - -/* This function just can tell you whether you are in Autcommit mode or not */ -RETCODE SQL_API OPENSEARCHAPI_GetConnectOption(HDBC hdbc, SQLUSMALLINT fOption, - PTR pvParam, SQLINTEGER *StringLength, - SQLINTEGER BufferLength) { - CSTR func = "OPENSEARCHAPI_GetConnectOption"; - ConnectionClass *conn = (ConnectionClass *)hdbc; - const char *p = NULL; - SQLLEN len = sizeof(SQLINTEGER); - SQLRETURN result = SQL_SUCCESS; - - MYLOG(OPENSEARCH_TRACE, "entering...\n"); - - if (!conn) { - CC_log_error(func, "", NULL); - return SQL_INVALID_HANDLE; - } - - switch (fOption) { - case SQL_ACCESS_MODE: /* NOT SUPPORTED */ - *((SQLUINTEGER *)pvParam) = SQL_MODE_READ_WRITE; - break; - - case SQL_AUTOCOMMIT: - *((SQLUINTEGER *)pvParam) = conn->autocommit_public; - break; - - case SQL_CURRENT_QUALIFIER: /* don't use qualifiers */ - len = 0; - p = CurrCatString(conn); - break; - - case SQL_LOGIN_TIMEOUT: - *((SQLUINTEGER *)pvParam) = conn->login_timeout; - break; - - case SQL_PACKET_SIZE: /* NOT SUPPORTED */ - *((SQLUINTEGER *)pvParam) = 4096; - break; - - case SQL_QUERY_TIMEOUT: - *((SQLULEN *)pvParam) = conn->stmtOptions.stmt_timeout; - break; - - case SQL_QUIET_MODE: /* NOT SUPPORTED */ - *((SQLULEN *)pvParam) = 0; - break; - - case SQL_TXN_ISOLATION: - if (conn->isolation == 0) { - if (CC_not_connected(conn)) - return SQL_NO_DATA; - conn->isolation = CC_get_isolation(conn); - } - *((SQLUINTEGER *)pvParam) = conn->isolation; - break; - -#ifdef SQL_ATTR_CONNECTION_DEAD - case SQL_ATTR_CONNECTION_DEAD: -#else - case 1209: -#endif /* SQL_ATTR_CONNECTION_DEAD */ - MYLOG(OPENSEARCH_DEBUG, "CONNECTION_DEAD status=%d", conn->status); - *((SQLUINTEGER *)pvParam) = CC_not_connected(conn); - MYPRINTF(0, " val=" FORMAT_UINTEGER "\n", - *((SQLUINTEGER *)pvParam)); - break; - - case SQL_ATTR_ANSI_APP: - *((SQLUINTEGER *)pvParam) = CC_is_in_ansi_app(conn); - MYLOG(OPENSEARCH_DEBUG, "ANSI_APP val=" FORMAT_UINTEGER "\n", - *((SQLUINTEGER *)pvParam)); - break; - - /* These options should be handled by driver manager */ - case SQL_ODBC_CURSORS: - case SQL_OPT_TRACE: - case SQL_OPT_TRACEFILE: - case SQL_TRANSLATE_DLL: - case SQL_TRANSLATE_OPTION: - CC_log_error( - func, - "This connect option (Get) is only used by the Driver Manager", - conn); - break; - - default: { - char option[64]; - - CC_set_error(conn, CONN_UNSUPPORTED_OPTION, - "Unknown connect option (Get)", func); - SPRINTF_FIXED(option, "fOption=%d", fOption); - CC_log_error(func, option, conn); - return SQL_ERROR; - break; - } - } - - if (NULL != p && 0 == len) { - /* char/binary data */ - len = strlen(p); - - if (pvParam) { -#ifdef UNICODE_SUPPORT - if (CC_is_in_unicode_driver(conn)) { - len = utf8_to_ucs2(p, len, (SQLWCHAR *)pvParam, - BufferLength / WCLEN); - len *= WCLEN; - } else -#endif /* UNICODE_SUPPORT */ - strncpy_null((char *)pvParam, p, (size_t)BufferLength); - - if (len >= BufferLength) { - result = SQL_SUCCESS_WITH_INFO; - CC_set_error(conn, CONN_TRUNCATED, - "The buffer was too small for the pvParam.", func); - } - } - } - if (StringLength) - *StringLength = (SQLINTEGER)len; - return result; -} - -RETCODE SQL_API OPENSEARCHAPI_SetStmtOption(HSTMT hstmt, SQLUSMALLINT fOption, - SQLULEN vParam) { - CSTR func = "OPENSEARCHAPI_SetStmtOption"; - StatementClass *stmt = (StatementClass *)hstmt; - RETCODE retval; - - MYLOG(OPENSEARCH_DEBUG, " entering...\n"); - - /* - * Though we could fake Access out by just returning SQL_SUCCESS all - * the time, but it tries to set a huge value for SQL_MAX_LENGTH and - * expects the driver to reduce it to the real value. - */ - if (!stmt) { - SC_log_error(func, "", NULL); - return SQL_INVALID_HANDLE; - } - - retval = set_statement_option(NULL, stmt, fOption, vParam); - return retval; -} - -RETCODE SQL_API OPENSEARCHAPI_GetStmtOption(HSTMT hstmt, SQLUSMALLINT fOption, - PTR pvParam, SQLINTEGER *StringLength, - SQLINTEGER BufferLength) { - UNUSED(BufferLength); - CSTR func = "OPENSEARCHAPI_GetStmtOption"; - StatementClass *stmt = (StatementClass *)hstmt; - QResultClass *res; - SQLLEN ridx; - SQLINTEGER len = sizeof(SQLINTEGER); - Int4 bookmark; - - MYLOG(OPENSEARCH_TRACE, "entering...\n"); - - /* - * thought we could fake Access out by just returning SQL_SUCCESS all - * the time, but it tries to set a huge value for SQL_MAX_LENGTH and - * expects the driver to reduce it to the real value - */ - if (!stmt) { - SC_log_error(func, "", NULL); - return SQL_INVALID_HANDLE; - } - - switch (fOption) { - case SQL_GET_BOOKMARK: - case SQL_ROW_NUMBER: - - res = SC_get_Curres(stmt); - if (!res) { - SC_set_error(stmt, STMT_INVALID_CURSOR_STATE_ERROR, - "The cursor has no result.", func); - return SQL_ERROR; - } - - ridx = GIdx2CacheIdx(stmt->currTuple, stmt, res); - if (!SC_is_fetchcursor(stmt)) { - /* make sure we're positioned on a valid row */ - if ((ridx < 0) - || (((SQLULEN)ridx) >= QR_get_num_cached_tuples(res))) { - SC_set_error(stmt, STMT_INVALID_CURSOR_STATE_ERROR, - "Not positioned on a valid row.", func); - return SQL_ERROR; - } - } else { - if (stmt->currTuple < 0 || !res->tupleField) { - SC_set_error(stmt, STMT_INVALID_CURSOR_STATE_ERROR, - "Not positioned on a valid row.", func); - return SQL_ERROR; - } - } - - if (fOption == SQL_GET_BOOKMARK - && stmt->options.use_bookmarks == SQL_UB_OFF) { - SC_set_error( - stmt, STMT_OPERATION_INVALID, - "Operation invalid because use bookmarks not enabled.", - func); - return SQL_ERROR; - } - - bookmark = (int)SC_make_int4_bookmark(stmt->currTuple); - memcpy(pvParam, &bookmark, sizeof(UInt4)); - - break; - - case SQL_ASYNC_ENABLE: /* NOT SUPPORTED */ - *((SQLINTEGER *)pvParam) = SQL_ASYNC_ENABLE_OFF; - break; - - case SQL_BIND_TYPE: - *((SQLINTEGER *)pvParam) = SC_get_ARDF(stmt)->bind_size; - break; - - case SQL_CONCURRENCY: /* NOT REALLY SUPPORTED */ - MYLOG(OPENSEARCH_DEBUG, "SQL_CONCURRENCY " FORMAT_INTEGER "\n", - stmt->options.scroll_concurrency); - *((SQLINTEGER *)pvParam) = stmt->options.scroll_concurrency; - break; - - case SQL_CURSOR_TYPE: /* PARTIAL SUPPORT */ - MYLOG(OPENSEARCH_DEBUG, "SQL_CURSOR_TYPE " FORMAT_INTEGER "\n", - stmt->options.cursor_type); - *((SQLINTEGER *)pvParam) = stmt->options.cursor_type; - break; - - case SQL_KEYSET_SIZE: /* NOT SUPPORTED, but saved */ - MYLOG(OPENSEARCH_DEBUG, "SQL_KEYSET_SIZE\n"); - *((SQLLEN *)pvParam) = stmt->options.keyset_size; - break; - - case SQL_MAX_LENGTH: /* NOT SUPPORTED, but saved */ - *((SQLLEN *)pvParam) = stmt->options.maxLength; - break; - - case SQL_MAX_ROWS: /* NOT SUPPORTED, but saved */ - *((SQLLEN *)pvParam) = stmt->options.maxRows; - MYLOG(OPENSEARCH_DEBUG, "MAX_ROWS, returning " FORMAT_LEN "\n", - stmt->options.maxRows); - break; - - case SQL_NOSCAN: /* NOT SUPPORTED */ - *((SQLINTEGER *)pvParam) = SQL_NOSCAN_ON; - break; - - case SQL_QUERY_TIMEOUT: /* NOT SUPPORTED */ - *((SQLULEN *)pvParam) = stmt->options.stmt_timeout; - break; - - case SQL_RETRIEVE_DATA: - *((SQLINTEGER *)pvParam) = stmt->options.retrieve_data; - break; - - case SQL_ROWSET_SIZE: - *((SQLLEN *)pvParam) = SC_get_ARDF(stmt)->size_of_rowset_odbc2; - break; - - case SQL_SIMULATE_CURSOR: /* NOT SUPPORTED */ - *((SQLINTEGER *)pvParam) = SQL_SC_NON_UNIQUE; - break; - - case SQL_USE_BOOKMARKS: - *((SQLINTEGER *)pvParam) = stmt->options.use_bookmarks; - break; - case 1227: /* SQL_SOPT_SS_HIDDEN_COLUMNS ? */ - case 1228: /* SQL_SOPT_SS_NOBROWSETABLE ? */ - *((SQLINTEGER *)pvParam) = 0; - break; - - default: { - char option[64]; - - SC_set_error(stmt, STMT_NOT_IMPLEMENTED_ERROR, - "Unknown statement option (Get)", func); - SPRINTF_FIXED(option, "fOption=%d", fOption); - SC_log_error(func, option, stmt); - return SQL_ERROR; - } - } - if (StringLength) - *StringLength = len; - - return SQL_SUCCESS; -} diff --git a/sql-odbc/src/sqlodbc/parse.c b/sql-odbc/src/sqlodbc/parse.c deleted file mode 100644 index 670a61a6cd..0000000000 --- a/sql-odbc/src/sqlodbc/parse.c +++ /dev/null @@ -1,66 +0,0 @@ -#include -#include -#include - -#include "catfunc.h" -#include "opensearch_odbc.h" -#include "opensearch_types.h" -#include "misc.h" -#include "multibyte.h" -#include "opensearch_apifunc.h" -#include "opensearch_connection.h" -#include "opensearch_info.h" -#include "qresult.h" -#include "statement.h" - -Int4 FI_precision(const FIELD_INFO *fi) { - OID ftype; - - if (!fi) - return -1; - ftype = FI_type(fi); - switch (ftype) { - case OPENSEARCH_TYPE_NUMERIC: - return fi->column_size; - case OPENSEARCH_TYPE_DATETIME: - case OPENSEARCH_TYPE_TIMESTAMP_NO_TMZONE: - return fi->decimal_digits; - } - return 0; -} - -static void setNumFields(IRDFields *irdflds, size_t numFields) { - FIELD_INFO **fi = irdflds->fi; - size_t nfields = irdflds->nfields; - - if (numFields < nfields) { - int i; - - for (i = (int)numFields; i < (int)nfields; i++) { - if (fi[i]) - fi[i]->flag = 0; - } - } - irdflds->nfields = (UInt4)numFields; -} - -void SC_initialize_cols_info(StatementClass *stmt, BOOL DCdestroy, - BOOL parseReset) { - IRDFields *irdflds = SC_get_IRDF(stmt); - - /* Free the parsed table information */ - if (stmt->ti) { - TI_Destructor(stmt->ti, stmt->ntab); - free(stmt->ti); - stmt->ti = NULL; - } - stmt->ntab = 0; - if (DCdestroy) /* Free the parsed field information */ - DC_Destructor((DescriptorClass *)SC_get_IRD(stmt)); - else - setNumFields(irdflds, 0); - if (parseReset) { - stmt->parse_status = STMT_PARSE_NONE; - SC_reset_updatable(stmt); - } -} diff --git a/sql-odbc/src/sqlodbc/qresult.c b/sql-odbc/src/sqlodbc/qresult.c deleted file mode 100644 index 27c299098a..0000000000 --- a/sql-odbc/src/sqlodbc/qresult.c +++ /dev/null @@ -1,469 +0,0 @@ -#include "qresult.h" - -#include -#include -#include - -#include "misc.h" -#include "opensearch_statement.h" -#include "statement.h" - -/* - * Used for building a Manual Result only - * All info functions call this function to create the manual result set. - */ -void QR_set_num_fields(QResultClass *self, int new_num_fields) { - if (!self) - return; - MYLOG(OPENSEARCH_TRACE, "entering\n"); - - CI_set_num_fields(QR_get_fields(self), (SQLSMALLINT)new_num_fields); - - MYLOG(OPENSEARCH_TRACE, "leaving\n"); -} - -void QR_set_position(QResultClass *self, SQLLEN pos) { - self->tupleField = - self->backend_tuples - + ((QR_get_rowstart_in_cache(self) + pos) * self->num_fields); -} - -void QR_set_reqsize(QResultClass *self, Int4 reqsize) { - self->rowset_size_include_ommitted = reqsize; -} - -void QR_set_cursor(QResultClass *self, const char *name) { - ConnectionClass *conn = QR_get_conn(self); - - if (self->cursor_name) { - if (name && 0 == strcmp(name, self->cursor_name)) - return; - free(self->cursor_name); - if (conn) { - CONNLOCK_ACQUIRE(conn); - conn->ncursors--; - CONNLOCK_RELEASE(conn); - } - self->cursTuple = -1; - QR_set_no_cursor(self); - } else if (NULL == name) - return; - if (name) { - self->cursor_name = strdup(name); - if (conn) { - CONNLOCK_ACQUIRE(conn); - conn->ncursors++; - CONNLOCK_RELEASE(conn); - } - } else { - QResultClass *res; - - self->cursor_name = NULL; - for (res = self->next; NULL != res; res = res->next) { - if (NULL != res->cursor_name) - free(res->cursor_name); - res->cursor_name = NULL; - } - } -} - -void QR_set_rowstart_in_cache(QResultClass *self, SQLLEN start) { - if (QR_synchronize_keys(self)) - self->key_base = start; - self->base = start; -} - -void QR_inc_rowstart_in_cache(QResultClass *self, SQLLEN base_inc) { - if (!QR_has_valid_base(self)) - MYLOG(OPENSEARCH_DEBUG, " called while the cache is not ready\n"); - self->base += base_inc; - if (QR_synchronize_keys(self)) - self->key_base = self->base; -} - -void QR_set_fields(QResultClass *self, ColumnInfoClass *fields) { - ColumnInfoClass *curfields = QR_get_fields(self); - - if (curfields == fields) - return; - - /* - * Unlink the old columninfo from this result set, freeing it if this - * was the last reference. - */ - if (NULL != curfields) { - if (curfields->refcount > 1) - curfields->refcount--; - else - CI_Destructor(curfields); - } - self->fields = fields; - if (NULL != fields) - fields->refcount++; -} - -/* - * CLASS QResult - */ -QResultClass *QR_Constructor(void) { - QResultClass *rv; - - MYLOG(OPENSEARCH_TRACE, "entering\n"); - rv = (QResultClass *)malloc(sizeof(QResultClass)); - - if (rv != NULL) { - ColumnInfoClass *fields; - - rv->rstatus = PORES_EMPTY_QUERY; - rv->pstatus = 0; - - /* construct the column info */ - rv->fields = NULL; - if (fields = CI_Constructor(), NULL == fields) { - free(rv); - return NULL; - } - QR_set_fields(rv, fields); - rv->backend_tuples = NULL; - rv->sqlstate[0] = '\0'; - rv->message = NULL; - rv->messageref = NULL; - rv->command = NULL; - rv->notice = NULL; - rv->conn = NULL; - rv->next = NULL; - rv->count_backend_allocated = 0; - rv->count_keyset_allocated = 0; - rv->num_total_read = 0; - rv->num_cached_rows = 0; - rv->num_cached_keys = 0; - rv->fetch_number = 0; - rv->flags = - 0; /* must be cleared before calling QR_set_rowstart_in_cache() */ - QR_set_rowstart_in_cache(rv, -1); - rv->key_base = -1; - rv->recent_processed_row_count = -1; - rv->cursTuple = -1; - rv->move_offset = 0; - rv->num_fields = 0; - rv->num_key_fields = OPENSEARCH_NUM_NORMAL_KEYS; /* CTID + OID */ - rv->tupleField = NULL; - rv->cursor_name = NULL; - rv->aborted = FALSE; - - rv->cache_size = 0; - rv->cmd_fetch_size = 0; - rv->rowset_size_include_ommitted = 1; - rv->move_direction = 0; - rv->keyset = NULL; - rv->reload_count = 0; - rv->rb_alloc = 0; - rv->rb_count = 0; - rv->dataFilled = FALSE; - rv->rollback = NULL; - rv->ad_alloc = 0; - rv->ad_count = 0; - rv->added_keyset = NULL; - rv->added_tuples = NULL; - rv->up_alloc = 0; - rv->up_count = 0; - rv->updated = NULL; - rv->updated_keyset = NULL; - rv->updated_tuples = NULL; - rv->dl_alloc = 0; - rv->dl_count = 0; - rv->deleted = NULL; - rv->deleted_keyset = NULL; - rv->opensearch_result = NULL; - rv->server_cursor_id = NULL; - } - - MYLOG(OPENSEARCH_TRACE, "leaving\n"); - return rv; -} - -void QR_close_result(QResultClass *self, BOOL destroy) { - UNUSED(self); - QResultClass *next; - BOOL top = TRUE; - - if (!self) - return; - MYLOG(OPENSEARCH_TRACE, "entering\n"); - - while (self) { - QR_free_memory(self); /* safe to call anyway */ - - /* - * Should have been freed in the close() but just in case... - * QR_set_cursor clears the cursor name of all the chained results too, - * so we only need to do this for the first result in the chain. - */ - if (top) - QR_set_cursor(self, NULL); - - /* Free up column info */ - if (destroy) - QR_set_fields(self, NULL); - - /* Free command info (this is from strdup()) */ - if (self->command) { - free(self->command); - self->command = NULL; - } - - /* Free message info (this is from strdup()) */ - if (self->message) { - free(self->message); - self->message = NULL; - } - - /* Free notice info (this is from strdup()) */ - if (self->notice) { - free(self->notice); - self->notice = NULL; - } - - /* Free server_cursor_id (this is from strdup()) */ - if (self->server_cursor_id) { - free(self->server_cursor_id); - self->server_cursor_id = NULL; - } - - /* Destruct the result object in the chain */ - next = self->next; - self->next = NULL; - if (destroy) - free(self); - - /* Repeat for the next result in the chain */ - self = next; - destroy = TRUE; /* always destroy chained results */ - top = FALSE; - } - - MYLOG(OPENSEARCH_TRACE, "leaving\n"); -} - -void QR_reset_for_re_execute(QResultClass *self) { - MYLOG(OPENSEARCH_TRACE, "entering for %p\n", self); - if (!self) - return; - QR_close_result(self, FALSE); - /* reset flags etc */ - self->flags = 0; - QR_set_rowstart_in_cache(self, -1); - self->recent_processed_row_count = -1; - /* clear error info etc */ - self->rstatus = PORES_EMPTY_QUERY; - self->aborted = FALSE; - self->sqlstate[0] = '\0'; - self->messageref = NULL; - - MYLOG(OPENSEARCH_TRACE, "leaving\n"); -} - -void QR_Destructor(QResultClass *self) { - MYLOG(OPENSEARCH_TRACE, "entering\n"); - if (!self) - return; - QR_close_result(self, TRUE); - - MYLOG(OPENSEARCH_TRACE, "leaving\n"); -} - -void QR_set_command(QResultClass *self, const char *msg) { - if (self->command) - free(self->command); - - self->command = msg ? strdup(msg) : NULL; -} - -void QR_set_message(QResultClass *self, const char *msg) { - if (self->message) - free(self->message); - self->messageref = NULL; - - self->message = msg ? strdup(msg) : NULL; -} - -void QR_set_server_cursor_id(QResultClass *self, const char *server_cursor_id) { - if (self->server_cursor_id) { - free(self->server_cursor_id); - } - - self->server_cursor_id = server_cursor_id ? strdup(server_cursor_id) : NULL; -} - -void QR_add_message(QResultClass *self, const char *msg) { - char *message = self->message; - size_t alsize, pos, addlen; - - if (!msg || !msg[0]) - return; - addlen = strlen(msg); - if (message) { - pos = strlen(message) + 1; - alsize = pos + addlen + 1; - } else { - pos = 0; - alsize = addlen + 1; - } - char *message_tmp = realloc(message, alsize); - if (message_tmp) { - message = message_tmp; - if (pos > 0) - message[pos - 1] = ';'; - strncpy_null(message + pos, msg, addlen + 1); - self->message = message; - } -} - -void QR_set_notice(QResultClass *self, const char *msg) { - if (self->notice) - free(self->notice); - - self->notice = msg ? strdup(msg) : NULL; -} - -void QR_add_notice(QResultClass *self, const char *msg) { - char *message = self->notice; - size_t alsize, pos, addlen; - - if (!msg || !msg[0]) - return; - addlen = strlen(msg); - if (message) { - pos = strlen(message) + 1; - alsize = pos + addlen + 1; - } else { - pos = 0; - alsize = addlen + 1; - } - char *message_tmp = realloc(message, alsize); - if (message_tmp) { - message = message_tmp; - if (pos > 0) - message[pos - 1] = ';'; - strncpy_null(message + pos, msg, addlen + 1); - self->notice = message; - } -} - -TupleField *QR_AddNew(QResultClass *self) { - size_t alloc; - UInt4 num_fields; - - if (!self) - return NULL; - MYLOG(OPENSEARCH_ALL, FORMAT_ULEN "th row(%d fields) alloc=" FORMAT_LEN "\n", - self->num_cached_rows, QR_NumResultCols(self), - self->count_backend_allocated); - if (num_fields = QR_NumResultCols(self), !num_fields) - return NULL; - if (self->num_fields <= 0) { - self->num_fields = (unsigned short)num_fields; - QR_set_reached_eof(self); - } - alloc = self->count_backend_allocated; - if (!self->backend_tuples) { - self->num_cached_rows = 0; - alloc = TUPLE_MALLOC_INC; - QR_MALLOC_return_with_error(self->backend_tuples, TupleField, - alloc * sizeof(TupleField) * num_fields, - self, "Out of memory in QR_AddNew.", NULL); - } else if (self->num_cached_rows >= self->count_backend_allocated) { - alloc = self->count_backend_allocated * 2; - QR_REALLOC_return_with_error(self->backend_tuples, TupleField, - alloc * sizeof(TupleField) * num_fields, - self, "Out of memory in QR_AddNew.", NULL); - } - self->count_backend_allocated = alloc; - - if (self->backend_tuples) { - memset(self->backend_tuples + num_fields * self->num_cached_rows, 0, - num_fields * sizeof(TupleField)); - self->num_cached_rows++; - self->ad_count++; - } - return self->backend_tuples + num_fields * (self->num_cached_rows - 1); -} - -void QR_free_memory(QResultClass *self) { - SQLLEN num_backend_rows = self->num_cached_rows; - int num_fields = self->num_fields; - - MYLOG(OPENSEARCH_TRACE, "entering fcount=" FORMAT_LEN "\n", num_backend_rows); - - if (self->backend_tuples) { - ClearCachedRows(self->backend_tuples, num_fields, num_backend_rows); - free(self->backend_tuples); - self->count_backend_allocated = 0; - self->backend_tuples = NULL; - self->dataFilled = FALSE; - self->tupleField = NULL; - } - if (self->keyset) { - free(self->keyset); - self->keyset = NULL; - self->count_keyset_allocated = 0; - self->reload_count = 0; - } - if (self->rollback) { - free(self->rollback); - self->rb_alloc = 0; - self->rb_count = 0; - self->rollback = NULL; - } - if (self->deleted) { - free(self->deleted); - self->deleted = NULL; - } - if (self->deleted_keyset) { - free(self->deleted_keyset); - self->deleted_keyset = NULL; - } - self->dl_alloc = 0; - self->dl_count = 0; - /* clear added info */ - if (self->added_keyset) { - free(self->added_keyset); - self->added_keyset = NULL; - } - if (self->added_tuples) { - ClearCachedRows(self->added_tuples, num_fields, self->ad_count); - free(self->added_tuples); - self->added_tuples = NULL; - } - self->ad_alloc = 0; - self->ad_count = 0; - /* clear updated info */ - if (self->updated) { - free(self->updated); - self->updated = NULL; - } - if (self->updated_keyset) { - free(self->updated_keyset); - self->updated_keyset = NULL; - } - if (self->updated_tuples) { - ClearCachedRows(self->updated_tuples, num_fields, self->up_count); - free(self->updated_tuples); - self->updated_tuples = NULL; - } - if (self->opensearch_result) { - ClearOpenSearchResult(self->opensearch_result); - self->opensearch_result = NULL; - } - - self->up_alloc = 0; - self->up_count = 0; - - self->num_total_read = 0; - self->num_cached_rows = 0; - self->num_cached_keys = 0; - self->cursTuple = -1; - self->pstatus = 0; - - MYLOG(OPENSEARCH_TRACE, "leaving\n"); -} diff --git a/sql-odbc/src/sqlodbc/qresult.h b/sql-odbc/src/sqlodbc/qresult.h deleted file mode 100644 index 4e44c24638..0000000000 --- a/sql-odbc/src/sqlodbc/qresult.h +++ /dev/null @@ -1,292 +0,0 @@ -#ifndef __QRESULT_H__ -#define __QRESULT_H__ - -#include "columninfo.h" -#include "opensearch_connection.h" -#include "opensearch_odbc.h" -#include "tuple.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum QueryResultCode_ { - PORES_EMPTY_QUERY = 0, - PORES_COMMAND_OK, /* a query command that doesn't return - * anything was executed properly by the backend */ - PORES_TUPLES_OK, /* a query command that returns tuples - * was executed properly by the backend, OpenSearchResult - * contains the resulttuples */ - PORES_COPY_OUT, - PORES_COPY_IN, - PORES_BAD_RESPONSE, /* an unexpected response was recv'd from - * the backend */ - PORES_NONFATAL_ERROR, - PORES_FATAL_ERROR, - PORES_NO_MEMORY_ERROR, - PORES_FIELDS_OK = 100, /* field information from a query was - * successful */ - /* PORES_END_TUPLES, */ - PORES_INTERNAL_ERROR -} QueryResultCode; - -enum { - FQR_REACHED_EOF = (1L << 1) /* reached eof */ - , - FQR_HAS_VALID_BASE = (1L << 2), - FQR_NEEDS_SURVIVAL_CHECK = (1L << 3) /* check if the cursor is open */ -}; - -struct QResultClass_ { - ColumnInfoClass *fields; /* the Column information */ - ConnectionClass *conn; /* the connection this result is using - * (backend) */ - QResultClass *next; /* the following result class */ - - /* Stuff for declare/fetch tuples */ - SQLULEN num_total_read; /* the highest absolute position ever read in + 1 */ - SQLULEN count_backend_allocated; /* m(re)alloced count */ - SQLULEN num_cached_rows; /* count of tuples kept in backend_tuples member */ - SQLLEN fetch_number; /* 0-based index to the tuple to read next */ - SQLLEN cursTuple; /* absolute current position in the servr's cursor used to - retrieve tuples from the DB */ - SQLULEN move_offset; - SQLLEN base; /* relative position of rowset start in the current data - cache(backend_tuples) */ - - UInt2 num_fields; /* number of fields in the result */ - UInt2 num_key_fields; /* number of key fields in the result */ - UInt4 rowset_size_include_ommitted; /* ES restriction */ - SQLLEN recent_processed_row_count; - SQLULEN cache_size; - SQLULEN cmd_fetch_size; - - QueryResultCode rstatus; /* result status */ - - char sqlstate[8]; - char *message; - const char *messageref; - char *cursor_name; /* The name of the cursor for select statements */ - char *command; - char *notice; - - TupleField *backend_tuples; /* data from the backend (the tuple cache) */ - TupleField *tupleField; /* current backend tuple being retrieved */ - - char pstatus; /* processing status */ - char aborted; /* was aborted ? */ - char flags; /* this result contains keyset etc ? */ - po_ind_t move_direction; /* must move before fetching this - result set */ - SQLULEN count_keyset_allocated; /* m(re)alloced count */ - SQLULEN num_cached_keys; /* count of keys kept in backend_keys member */ - KeySet *keyset; - SQLLEN key_base; /* relative position of rowset start in the current keyset - cache */ - UInt2 reload_count; - UInt2 rb_alloc; /* count of allocated rollback info */ - UInt2 rb_count; /* count of rollback info */ - char dataFilled; /* Cache is filled with data ? */ - Rollback *rollback; - UInt4 ad_alloc; /* count of allocated added info */ - UInt4 ad_count; /* count of newly added rows */ - KeySet *added_keyset; /* added keyset info */ - TupleField *added_tuples; /* added data by myself */ - UInt2 dl_alloc; /* count of allocated deleted info */ - UInt2 dl_count; /* count of deleted info */ - SQLLEN *deleted; /* deleted index info */ - KeySet *deleted_keyset; /* deleted keyset info */ - UInt2 up_alloc; /* count of allocated updated info */ - UInt2 up_count; /* count of updated info */ - SQLLEN *updated; /* updated index info */ - KeySet *updated_keyset; /* uddated keyset info */ - TupleField *updated_tuples; /* uddated data by myself */ - void *opensearch_result; - char *server_cursor_id; -}; - -enum { - FQR_HASKEYSET = 1L, - FQR_WITHHOLD = (1L << 1), - FQR_HOLDPERMANENT = (1L << 2) /* the cursor is alive across transactions */ - , - FQR_SYNCHRONIZEKEYS = - (1L - << 3) /* synchronize the keyset range with that of cthe tuples cache */ -}; - -#define QR_haskeyset(self) (0 != (self->flags & FQR_HASKEYSET)) -#define QR_is_withhold(self) (0 != (self->flags & FQR_WITHHOLD)) -#define QR_is_permanent(self) (0 != (self->flags & FQR_HOLDPERMANENT)) -#define QR_synchronize_keys(self) (0 != (self->flags & FQR_SYNCHRONIZEKEYS)) -#define QR_get_fields(self) (self->fields) - -/* These functions are for retrieving data from the qresult */ -#define QR_get_value_backend(self, fieldno) (self->tupleField[fieldno].value) -#define QR_get_value_backend_row(self, tupleno, fieldno) \ - ((self->backend_tuples + (tupleno * self->num_fields))[fieldno].value) -#define QR_get_value_backend_text(self, tupleno, fieldno) \ - QR_get_value_backend_row(self, tupleno, fieldno) -#define QR_get_value_backend_int(self, tupleno, fieldno, isNull) \ - atoi(QR_get_value_backend_row(self, tupleno, fieldno)) - -/* These functions are used by both manual and backend results */ -#define QR_NumResultCols(self) (CI_get_num_fields(self->fields)) -#define QR_NumPublicResultCols(self) \ - (QR_haskeyset(self) \ - ? (CI_get_num_fields(self->fields) - self->num_key_fields) \ - : CI_get_num_fields(self->fields)) -#define QR_get_fieldname(self, fieldno_) \ - (CI_get_fieldname(self->fields, fieldno_)) -#define QR_get_fieldsize(self, fieldno_) \ - (CI_get_fieldsize(self->fields, fieldno_)) -#define QR_get_display_size(self, fieldno_) \ - (CI_get_display_size(self->fields, fieldno_)) -#define QR_get_atttypmod(self, fieldno_) \ - (CI_get_atttypmod(self->fields, fieldno_)) -#define QR_get_field_type(self, fieldno_) (CI_get_oid(self->fields, fieldno_)) -#define QR_get_relid(self, fieldno_) (CI_get_relid(self->fields, fieldno_)) -#define QR_get_attid(self, fieldno_) (CI_get_attid(self->fields, fieldno_)) - -/* These functions are used only for manual result sets */ -#define QR_get_num_total_tuples(self) \ - (QR_once_reached_eof(self) ? (self->num_total_read + self->ad_count) \ - : self->num_total_read) -#define QR_get_num_total_read(self) (self->num_total_read) -#define QR_get_num_cached_tuples(self) (self->num_cached_rows) -#define QR_set_field_info(self, field_num, name, adtid, adtsize, relid, attid) \ - (CI_set_field_info(self->fields, field_num, name, adtid, adtsize, -1, \ - relid, attid)) -#define QR_set_field_info_v(self, field_num, name, adtid, adtsize) \ - (CI_set_field_info(self->fields, field_num, name, adtid, adtsize, -1, 0, 0)) - -/* status macros */ -#define QR_command_successful(self) \ - (self \ - && !(self->rstatus == PORES_BAD_RESPONSE \ - || self->rstatus == PORES_NONFATAL_ERROR \ - || self->rstatus == PORES_FATAL_ERROR \ - || self->rstatus == PORES_NO_MEMORY_ERROR)) -#define QR_command_maybe_successful(self) \ - (self \ - && !(self->rstatus == PORES_BAD_RESPONSE \ - || self->rstatus == PORES_FATAL_ERROR \ - || self->rstatus == PORES_NO_MEMORY_ERROR)) -#define QR_command_nonfatal(self) (self->rstatus == PORES_NONFATAL_ERROR) -#define QR_set_conn(self, conn_) (self->conn = conn_) -#define QR_set_rstatus(self, condition) (self->rstatus = condition) -#define QR_set_sqlstatus(self, status) strcpy(self->sqlstatus, status) -#define QR_set_messageref(self, m) ((self)->messageref = m) -#define QR_set_aborted(self, aborted_) (self->aborted = aborted_) -#define QR_set_haskeyset(self) (self->flags |= FQR_HASKEYSET) -#define QR_set_synchronize_keys(self) (self->flags |= FQR_SYNCHRONIZEKEYS) -#define QR_set_no_cursor(self) \ - ((self)->flags &= ~(FQR_WITHHOLD | FQR_HOLDPERMANENT), \ - (self)->pstatus &= ~FQR_NEEDS_SURVIVAL_CHECK) -#define QR_set_withhold(self) (self->flags |= FQR_WITHHOLD) -#define QR_set_permanent(self) (self->flags |= FQR_HOLDPERMANENT) -#define QR_set_reached_eof(self) (self->pstatus |= FQR_REACHED_EOF) -#define QR_set_has_valid_base(self) (self->pstatus |= FQR_HAS_VALID_BASE) -#define QR_set_no_valid_base(self) (self->pstatus &= ~FQR_HAS_VALID_BASE) -#define QR_set_survival_check(self) (self->pstatus |= FQR_NEEDS_SURVIVAL_CHECK) -#define QR_set_no_survival_check(self) \ - (self->pstatus &= ~FQR_NEEDS_SURVIVAL_CHECK) -#define QR_inc_num_cache(self) \ - do { \ - self->num_cached_rows++; \ - if (QR_haskeyset(self)) \ - self->num_cached_keys++; \ - } while (0) -#define QR_set_next_in_cache(self, number) \ - do { \ - MYLOG(OPENSEARCH_ALL, "set the number to " FORMAT_LEN " to read next\n", \ - number); \ - self->fetch_number = number; \ - } while (0) -#define QR_inc_next_in_cache(self) \ - do { \ - MYLOG(OPENSEARCH_ALL, "increased the number " FORMAT_LEN, self->fetch_number); \ - self->fetch_number++; \ - MYLOG(OPENSEARCH_ALL, "to " FORMAT_LEN " to next read\n", self->fetch_number); \ - } while (0) - -#define QR_get_message(self) \ - ((self)->message ? (self)->message : (self)->messageref) -#define QR_get_command(self) (self->command) -#define QR_get_notice(self) (self->notice) -#define QR_get_rstatus(self) (self->rstatus) -#define QR_get_aborted(self) (self->aborted) -#define QR_get_conn(self) (self->conn) -#define QR_get_cursor(self) (self->cursor_name) -#define QR_get_rowstart_in_cache(self) (self->base) -#define QR_once_reached_eof(self) ((self->pstatus & FQR_REACHED_EOF) != 0) -#define QR_has_valid_base(self) (0 != (self->pstatus & FQR_HAS_VALID_BASE)) -#define QR_needs_survival_check(self) \ - (0 != (self->pstatus & FQR_NEEDS_SURVIVAL_CHECK)) - -#define QR_aborted(self) (!self || self->aborted) -#define QR_get_reqsize(self) (self->rowset_size_include_ommitted) - -#define QR_stop_movement(self) (self->move_direction = 0) -#define QR_is_moving(self) (0 != self->move_direction) -#define QR_is_not_moving(self) (0 == self->move_direction) -#define QR_set_move_forward(self) (self->move_direction = 1) -#define QR_is_moving_forward(self) (1 == self->move_direction) -#define QR_set_move_backward(self) (self->move_direction = -1) -#define QR_is_moving_backward(self) (-1 == self->move_direction) -#define QR_set_move_from_the_last(self) (self->move_direction = 2) -#define QR_is_moving_from_the_last(self) (2 == self->move_direction) -#define QR_is_moving_not_backward(self) (0 < self->move_direction) - -/* Core Functions */ -QResultClass *QR_Constructor(void); -void QR_Destructor(QResultClass *self); -TupleField *QR_AddNew(QResultClass *self); -void QR_close_result(QResultClass *self, BOOL destroy); -void QR_reset_for_re_execute(QResultClass *self); -void QR_free_memory(QResultClass *self); -void QR_set_command(QResultClass *self, const char *msg); -void QR_set_message(QResultClass *self, const char *msg); -void QR_add_message(QResultClass *self, const char *msg); -void QR_set_notice(QResultClass *self, const char *msg); -void QR_add_notice(QResultClass *self, const char *msg); - -void QR_set_num_fields(QResultClass *self, - int new_num_fields); /* catalog functions' result only */ -void QR_set_fields(QResultClass *self, ColumnInfoClass *); - -void QR_set_rowstart_in_cache(QResultClass *, SQLLEN); -void QR_inc_rowstart_in_cache(QResultClass *self, SQLLEN base_inc); -void QR_set_reqsize(QResultClass *self, Int4 reqsize); -void QR_set_position(QResultClass *self, SQLLEN pos); -void QR_set_cursor(QResultClass *self, const char *name); -SQLLEN getNthValid(const QResultClass *self, SQLLEN sta, UWORD orientation, - SQLULEN nth, SQLLEN *nearest); -void QR_set_server_cursor_id(QResultClass *self, const char *server_cursor_id); -#define QR_MALLOC_return_with_error(t, tp, s, a, m, r) \ - do { \ - if (t = (tp *)malloc(s), NULL == t) { \ - QR_set_rstatus(a, PORES_NO_MEMORY_ERROR); \ - qlog("QR_MALLOC_error\n"); \ - QR_free_memory(a); \ - QR_set_messageref(a, m); \ - return r; \ - } \ - } while (0) -#define QR_REALLOC_return_with_error(t, tp, s, a, m, r) \ - do { \ - tp *tmp; \ - if (tmp = (tp *)realloc(t, s), NULL == tmp) { \ - QR_set_rstatus(a, PORES_NO_MEMORY_ERROR); \ - qlog("QR_REALLOC_error\n"); \ - QR_free_memory(a); \ - QR_set_messageref(a, m); \ - return r; \ - } \ - t = tmp; \ - } while (0) - -#ifdef __cplusplus -} -#endif -#endif /* __QRESULT_H__ */ diff --git a/sql-odbc/src/sqlodbc/resource.h b/sql-odbc/src/sqlodbc/resource.h deleted file mode 100644 index ff5fc59c8d..0000000000 --- a/sql-odbc/src/sqlodbc/resource.h +++ /dev/null @@ -1,67 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by opensearch_odbc.rc -// -#define IDS_BADDSN 1 -#define IDS_MSGTITLE 2 -#define IDOK2 3 -#define IDC_TEST 4 -#define IDC_PASSWORD_STATIC 4 -#define IDC_SSL_STATIC 4 -#define IDC_HOST_VER_STATIC 5 -#define IDC_DSNAME 400 -#define IDC_DSNAMETEXT 401 -#define IDC_DESC 404 -#define IDC_FETCH_SIZE_STATIC 404 -#define IDC_SERVER 407 -#define IDC_NOTICE_USER 414 -#define IDS_AUTHTYPE_NONE 417 -#define IDS_AUTHTYPE_BASIC 418 -#define IDS_AUTHTYPE_IAM 419 -#define IDS_LOGTYPE_OFF 420 -#define IDS_LOGTYPE_FATAL 421 -#define IDS_LOGTYPE_ERROR 422 -#define IDS_LOGTYPE_WARNING 423 -#define IDS_LOGTYPE_INFO 424 -#define IDS_LOGTYPE_DEBUG 425 -#define IDS_LOGTYPE_TRACE 426 -#define IDS_LOGTYPE_ALL 427 -#define DLG_CONFIG 1001 -#define IDC_PORT 1002 -#define IDC_USER 1006 -#define IDC_PASSWORD 1009 -#define IDC_MANAGEDSN 1077 -#define IDC_EDIT1 1112 -#define IDC_CONNTIMEOUT_STATIC 1112 -#define IDC_CHECK1 1113 -#define IDC_CHECK2 1114 -#define IDC_USESSL 1114 -#define IDC_COMBO1 1115 -#define IDC_AUTHTYPE 1115 -#define IDC_HOST_VER 1115 -#define IDC_USERNAME_STATIC 1116 -#define IDC_REGION 1121 -#define IDC_REGION_STATIC 1122 -#define IDC_AUTH_STATIC 1123 -#define ID_ADVANCED_OPTIONS 1124 -#define ID_LOG_OPTIONS 1125 -#define IDC_DRIVER_VERSION 1126 -#define IDC_AUTH_SETTINGS 1127 -#define IDC_CONN_SETTINGS 1128 -#define DLG_ADVANCED_OPTIONS 1129 -#define IDC_CONNTIMEOUT 1130 -#define DLG_LOG_OPTIONS 1131 -#define IDC_FETCH_SIZE 1131 -#define IDC_LOG_LEVEL 1132 -#define IDC_LOG_PATH 1133 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 113 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1135 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/sql-odbc/src/sqlodbc/results.c b/sql-odbc/src/sqlodbc/results.c deleted file mode 100644 index 18f1cd1a72..0000000000 --- a/sql-odbc/src/sqlodbc/results.c +++ /dev/null @@ -1,1651 +0,0 @@ -#include -#include -#include - -#include "bind.h" -#include "convert.h" -#include "dlg_specific.h" -#include "environ.h" -#include "opensearch_odbc.h" -#include "opensearch_types.h" -#include "misc.h" -#include "opensearch_apifunc.h" -#include "opensearch_connection.h" -#include "opensearch_statement.h" -#include "qresult.h" -#include "statement.h" - -/* Helper macro */ -#define getEffectiveOid(conn, fi) \ - opensearch_true_type((conn), (fi)->columntype, FI_type(fi)) -#define NULL_IF_NULL(a) ((a) ? ((const char *)(a)) : "(null)") - -RETCODE SQL_API OPENSEARCHAPI_RowCount(HSTMT hstmt, SQLLEN *pcrow) { - CSTR func = "OPENSEARCHAPI_RowCount"; - StatementClass *stmt = (StatementClass *)hstmt; - QResultClass *res; - - MYLOG(OPENSEARCH_TRACE, "entering...\n"); - if (!stmt) { - SC_log_error(func, NULL_STRING, NULL); - return SQL_INVALID_HANDLE; - } - - res = SC_get_Curres(stmt); - if (res) { - if (stmt->status != STMT_FINISHED) { - SC_set_error( - stmt, STMT_SEQUENCE_ERROR, - "Can't get row count while statement is still executing.", - func); - return SQL_ERROR; - } - } - - // Row count is not supported by this driver, so we will always report -1, - // as defined by the ODBC API for SQLRowCount. - *pcrow = -1; - - return SQL_SUCCESS; -} - -/* - * This returns the number of columns associated with the database - * attached to "hstmt". - */ -RETCODE SQL_API OPENSEARCHAPI_NumResultCols(HSTMT hstmt, SQLSMALLINT *pccol) { - CSTR func = "OPENSEARCHAPI_NumResultCols"; - StatementClass *stmt = (StatementClass *)hstmt; - QResultClass *result; - RETCODE ret = SQL_SUCCESS; - - MYLOG(OPENSEARCH_TRACE, "entering...\n"); - if (!stmt) { - SC_log_error(func, NULL_STRING, NULL); - return SQL_INVALID_HANDLE; - } - - SC_clear_error(stmt); -#ifdef __APPLE__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wkeyword-macro" -#endif // __APPLE__ -#define return DONT_CALL_RETURN_FROM_HERE ? ? ? -#ifdef __APPLE__ -#pragma clang diagnostic pop -#endif // __APPLE__ - if (stmt->proc_return > 0) { - *pccol = 0; - goto cleanup; - } - - result = SC_get_Curres(stmt); - *pccol = QR_NumPublicResultCols(result); - -cleanup: -#undef return - return ret; -} - -#define USE_FI(fi, unknown) (fi && UNKNOWNS_AS_LONGEST != unknown) - -/* - * Return information about the database column the user wants - * information about. - */ -RETCODE SQL_API OPENSEARCHAPI_DescribeCol(HSTMT hstmt, SQLUSMALLINT icol, - SQLCHAR *szColName, SQLSMALLINT cbColNameMax, - SQLSMALLINT *pcbColName, - SQLSMALLINT *pfSqlType, SQLULEN *pcbColDef, - SQLSMALLINT *pibScale, - SQLSMALLINT *pfNullable) { - CSTR func = "OPENSEARCHAPI_DescribeCol"; - - /* gets all the information about a specific column */ - StatementClass *stmt = (StatementClass *)hstmt; - ConnectionClass *conn; - IRDFields *irdflds; - QResultClass *res = NULL; - char *col_name = NULL; - OID fieldtype = 0; - SQLLEN column_size = 0; - int unknown_sizes; - SQLINTEGER decimal_digits = 0; - FIELD_INFO *fi; - char buf[255]; - int len = 0; - RETCODE result = SQL_SUCCESS; - - MYLOG(OPENSEARCH_TRACE, "entering.%d..\n", icol); - - if (!stmt) { - SC_log_error(func, NULL_STRING, NULL); - return SQL_INVALID_HANDLE; - } - - conn = SC_get_conn(stmt); - unknown_sizes = DEFAULT_UNKNOWNSIZES; - - SC_clear_error(stmt); - -#ifdef __APPLE__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wkeyword-macro" -#endif // __APPLE__ -#define return DONT_CALL_RETURN_FROM_HERE ? ? ? -#ifdef __APPLE__ -#pragma clang diagnostic pop -#endif // __APPLE__ - irdflds = SC_get_IRDF(stmt); - if (0 == icol) /* bookmark column */ - { - SQLSMALLINT fType = stmt->options.use_bookmarks == SQL_UB_VARIABLE - ? SQL_BINARY - : SQL_INTEGER; - - MYLOG(OPENSEARCH_ALL, "answering bookmark info\n"); - if (szColName && cbColNameMax > 0) - *szColName = '\0'; - if (pcbColName) - *pcbColName = 0; - if (pfSqlType) - *pfSqlType = fType; - if (pcbColDef) - *pcbColDef = 10; - if (pibScale) - *pibScale = 0; - if (pfNullable) - *pfNullable = SQL_NO_NULLS; - result = SQL_SUCCESS; - goto cleanup; - } - - /* - * Dont check for bookmark column. This is the responsibility of the - * driver manager. - */ - - icol--; /* use zero based column numbers */ - - fi = NULL; - if (icol < irdflds->nfields && irdflds->fi) - fi = irdflds->fi[icol]; - - if (!FI_is_applicable(fi)) { - fi = NULL; - - res = SC_get_Curres(stmt); - if (icol >= QR_NumPublicResultCols(res)) { - SC_set_error(stmt, STMT_INVALID_COLUMN_NUMBER_ERROR, - "Invalid column number in DescribeCol.", func); - SPRINTF_FIXED(buf, "Col#=%d, #Cols=%d,%d keys=%d", icol, - QR_NumResultCols(res), QR_NumPublicResultCols(res), - res->num_key_fields); - SC_log_error(func, buf, stmt); - result = SQL_ERROR; - goto cleanup; - } - if (icol < irdflds->nfields && irdflds->fi) - fi = irdflds->fi[icol]; - } - res = SC_get_Curres(stmt); -#ifdef SUPPRESS_LONGEST_ON_CURSORS - if (UNKNOWNS_AS_LONGEST == unknown_sizes) { - if (QR_once_reached_eof(res)) - unknown_sizes = UNKNOWNS_AS_LONGEST; - else - unknown_sizes = UNKNOWNS_AS_MAX; - } -#endif /* SUPPRESS_LONGEST_ON_CURSORS */ - /* handle constants */ - if (res && -2 == QR_get_fieldsize(res, icol)) - unknown_sizes = UNKNOWNS_AS_LONGEST; - - if (FI_is_applicable(fi)) { - fieldtype = getEffectiveOid(conn, fi); - if (NAME_IS_VALID(fi->column_alias)) - col_name = GET_NAME(fi->column_alias); - else - col_name = GET_NAME(fi->column_name); - if (USE_FI(fi, unknown_sizes)) { - column_size = fi->column_size; - decimal_digits = fi->decimal_digits; - } else { - column_size = opensearchtype_column_size(stmt, fieldtype, icol, - unknown_sizes); - decimal_digits = - opensearchtype_decimal_digits(stmt, fieldtype, icol); - } - - MYLOG(OPENSEARCH_DEBUG, - "PARSE: fieldtype=%u, col_name='%s', column_size=" FORMAT_LEN - "\n", - fieldtype, NULL_IF_NULL(col_name), column_size); - } else { - col_name = QR_get_fieldname(res, icol); - fieldtype = QR_get_field_type(res, icol); - - column_size = - opensearchtype_column_size(stmt, fieldtype, icol, unknown_sizes); - decimal_digits = opensearchtype_decimal_digits(stmt, fieldtype, icol); - } - - MYLOG(OPENSEARCH_DEBUG, "col %d fieldname = '%s'\n", icol, NULL_IF_NULL(col_name)); - MYLOG(OPENSEARCH_DEBUG, "col %d fieldtype = %d\n", icol, fieldtype); - MYLOG(OPENSEARCH_DEBUG, "col %d column_size = " FORMAT_LEN "\n", icol, column_size); - - result = SQL_SUCCESS; - - /* - * COLUMN NAME - */ - len = col_name ? (int)strlen(col_name) : 0; - - if (pcbColName) - *pcbColName = (SQLSMALLINT)len; - - if (szColName && cbColNameMax > 0) { - if (NULL != col_name) - strncpy_null((char *)szColName, col_name, cbColNameMax); - else - szColName[0] = '\0'; - - if (len >= cbColNameMax) { - result = SQL_SUCCESS_WITH_INFO; - SC_set_error(stmt, STMT_TRUNCATED, - "The buffer was too small for the colName.", func); - } - } - - /* - * CONCISE(SQL) TYPE - */ - if (pfSqlType) { - *pfSqlType = opensearchtype_to_concise_type(stmt, fieldtype, icol, - unknown_sizes); - - MYLOG(OPENSEARCH_DEBUG, "col %d *pfSqlType = %d\n", icol, *pfSqlType); - } - - /* - * COLUMN SIZE(PRECISION in 2.x) - */ - if (pcbColDef) { - if (column_size < 0) - column_size = 0; /* "I dont know" */ - - *pcbColDef = column_size; - - MYLOG(OPENSEARCH_DEBUG, "Col: col %d *pcbColDef = " FORMAT_ULEN "\n", icol, - *pcbColDef); - } - - /* - * DECIMAL DIGITS(SCALE in 2.x) - */ - if (pibScale) { - if (decimal_digits < 0) - decimal_digits = 0; - - *pibScale = (SQLSMALLINT)decimal_digits; - MYLOG(OPENSEARCH_DEBUG, "col %d *pibScale = %d\n", icol, *pibScale); - } - - /* - * NULLABILITY - */ - if (pfNullable) { - if (SC_has_outer_join(stmt)) - *pfNullable = TRUE; - else - *pfNullable = fi ? fi->nullable : opensearchtype_nullable(conn, fieldtype); - - MYLOG(OPENSEARCH_DEBUG, "col %d *pfNullable = %d\n", icol, *pfNullable); - } - -cleanup: -#undef return - return result; -} - -/* Returns result column descriptor information for a result set. */ -RETCODE SQL_API OPENSEARCHAPI_ColAttributes(HSTMT hstmt, SQLUSMALLINT icol, - SQLUSMALLINT fDescType, PTR rgbDesc, - SQLSMALLINT cbDescMax, SQLSMALLINT *pcbDesc, - SQLLEN *pfDesc) { - CSTR func = "OPENSEARCHAPI_ColAttributes"; - StatementClass *stmt = (StatementClass *)hstmt; - IRDFields *irdflds; - OID field_type = 0; - Int2 col_idx; - ConnectionClass *conn; - int column_size, unknown_sizes; - int cols = 0; - RETCODE result; - const char *p = NULL; - SQLLEN value = 0; - const FIELD_INFO *fi = NULL; - const TABLE_INFO *ti = NULL; - QResultClass *res; - BOOL stmt_updatable; - - MYLOG(OPENSEARCH_TRACE, "entering..col=%d %d len=%d.\n", icol, fDescType, - cbDescMax); - - if (!stmt) { - SC_log_error(func, NULL_STRING, NULL); - return SQL_INVALID_HANDLE; - } - stmt_updatable = SC_is_updatable(stmt) - /* The following doesn't seem appropriate for client side cursors - && stmt->options.scroll_concurrency != SQL_CONCUR_READ_ONLY - */ - ; - - if (pcbDesc) - *pcbDesc = 0; - irdflds = SC_get_IRDF(stmt); - conn = SC_get_conn(stmt); - - /* - * Dont check for bookmark column. This is the responsibility of the - * driver manager. For certain types of arguments, the column number - * is ignored anyway, so it may be 0. - */ - - res = SC_get_Curres(stmt); - if (0 == icol && SQL_DESC_COUNT != fDescType) /* bookmark column */ - { - MYLOG(OPENSEARCH_ALL, "answering bookmark info\n"); - switch (fDescType) { - case SQL_DESC_OCTET_LENGTH: - if (pfDesc) - *pfDesc = 4; - break; - case SQL_DESC_TYPE: - if (pfDesc) - *pfDesc = stmt->options.use_bookmarks == SQL_UB_VARIABLE - ? SQL_BINARY - : SQL_INTEGER; - break; - } - return SQL_SUCCESS; - } - - col_idx = icol - 1; - - unknown_sizes = DEFAULT_UNKNOWNSIZES; - - /* not appropriate for SQLColAttributes() */ - if (stmt->catalog_result) - unknown_sizes = UNKNOWNS_AS_LONGEST; - else if (unknown_sizes == UNKNOWNS_AS_DONTKNOW) - unknown_sizes = UNKNOWNS_AS_MAX; - - if (!stmt->catalog_result && SC_is_parse_forced(stmt) - && SC_can_parse_statement(stmt)) { - cols = irdflds->nfields; - - /* - * Column Count is a special case. The Column number is ignored - * in this case. - */ - if (fDescType == SQL_DESC_COUNT) { - if (pfDesc) - *pfDesc = cols; - - return SQL_SUCCESS; - } - - if (SC_parsed_status(stmt) != STMT_PARSE_FATAL && irdflds->fi) { - if (col_idx >= cols) { - SC_set_error(stmt, STMT_INVALID_COLUMN_NUMBER_ERROR, - "Invalid column number in ColAttributes.", func); - return SQL_ERROR; - } - } - } - - if ((unsigned int)col_idx < irdflds->nfields && irdflds->fi) - fi = irdflds->fi[col_idx]; - if (FI_is_applicable(fi)) - field_type = getEffectiveOid(conn, fi); - else { - fi = NULL; - switch (fDescType) { - case SQL_COLUMN_OWNER_NAME: - case SQL_COLUMN_TABLE_NAME: - case SQL_COLUMN_TYPE: - case SQL_COLUMN_TYPE_NAME: - case SQL_COLUMN_AUTO_INCREMENT: - case SQL_DESC_NULLABLE: - case SQL_DESC_BASE_TABLE_NAME: - case SQL_DESC_BASE_COLUMN_NAME: - case SQL_COLUMN_UPDATABLE: - case 1212: /* SQL_CA_SS_COLUMN_KEY ? */ - break; - } - - res = SC_get_Curres(stmt); - cols = QR_NumPublicResultCols(res); - - /* - * Column Count is a special case. The Column number is ignored - * in this case. - */ - if (fDescType == SQL_DESC_COUNT) { - if (pfDesc) - *pfDesc = cols; - - return SQL_SUCCESS; - } - - if (col_idx >= cols) { - SC_set_error(stmt, STMT_INVALID_COLUMN_NUMBER_ERROR, - "Invalid column number in ColAttributes.", func); - return SQL_ERROR; - } - - field_type = QR_get_field_type(res, col_idx); - if ((unsigned int)col_idx < irdflds->nfields && irdflds->fi) - fi = irdflds->fi[col_idx]; - } - if (FI_is_applicable(fi)) { - ti = fi->ti; - field_type = getEffectiveOid(conn, fi); - } - - MYLOG(OPENSEARCH_DEBUG, "col %d field_type=%d fi,ti=%p,%p\n", col_idx, field_type, - fi, ti); - -#ifdef SUPPRESS_LONGEST_ON_CURSORS - if (UNKNOWNS_AS_LONGEST == unknown_sizes) { - if (QR_once_reached_eof(res)) - unknown_sizes = UNKNOWNS_AS_LONGEST; - else - unknown_sizes = UNKNOWNS_AS_MAX; - } -#endif /* SUPPRESS_LONGEST_ON_CURSORS */ - /* handle constants */ - if (res && -2 == QR_get_fieldsize(res, col_idx)) - unknown_sizes = UNKNOWNS_AS_LONGEST; - - column_size = - (USE_FI(fi, unknown_sizes) && fi->column_size > 0) - ? fi->column_size - : opensearchtype_column_size(stmt, field_type, col_idx, - unknown_sizes); - switch (fDescType) { - case SQL_COLUMN_AUTO_INCREMENT: /* == SQL_DESC_AUTO_UNIQUE_VALUE */ - if (fi && fi->auto_increment) - value = TRUE; - else - value = opensearchtype_auto_increment(conn, field_type); - if (value == -1) /* non-numeric becomes FALSE (ODBC Doc) */ - value = FALSE; - MYLOG(OPENSEARCH_DEBUG, "AUTO_INCREMENT=" FORMAT_LEN "\n", value); - - break; - - case SQL_COLUMN_CASE_SENSITIVE: /* == SQL_DESC_CASE_SENSITIVE */ - value = opensearchtype_case_sensitive(conn, field_type); - break; - - /* - * This special case is handled above. - * - * case SQL_COLUMN_COUNT: - */ - case SQL_COLUMN_DISPLAY_SIZE: /* == SQL_DESC_DISPLAY_SIZE */ - value = (USE_FI(fi, unknown_sizes) && 0 != fi->display_size) - ? fi->display_size - : opensearchtype_display_size(stmt, field_type, col_idx, - unknown_sizes); - - MYLOG(OPENSEARCH_DEBUG, "col %d, display_size= " FORMAT_LEN "\n", col_idx, - value); - - break; - - case SQL_COLUMN_LABEL: /* == SQL_DESC_LABEL */ - if (fi && (NAME_IS_VALID(fi->column_alias))) { - p = GET_NAME(fi->column_alias); - - MYLOG(OPENSEARCH_DEBUG, "COLUMN_LABEL = '%s'\n", p); - break; - } - /* otherwise same as column name -- FALL THROUGH!!! */ - - case SQL_DESC_NAME: - MYLOG(OPENSEARCH_ALL, "fi=%p (alias, name)=", fi); - if (fi) - MYPRINTF(OPENSEARCH_DEBUG, "(%s,%s)\n", PRINT_NAME(fi->column_alias), - PRINT_NAME(fi->column_name)); - else - MYPRINTF(OPENSEARCH_DEBUG, "NULL\n"); - p = fi ? (NAME_IS_NULL(fi->column_alias) - ? SAFE_NAME(fi->column_name) - : GET_NAME(fi->column_alias)) - : QR_get_fieldname(res, col_idx); - - MYLOG(OPENSEARCH_DEBUG, "COLUMN_NAME = '%s'\n", p); - break; - - case SQL_COLUMN_LENGTH: - value = (USE_FI(fi, unknown_sizes) && fi->length > 0) - ? fi->length - : opensearchtype_buffer_length(stmt, field_type, - col_idx, unknown_sizes); - if (0 > value) - /* if (-1 == value) I'm not sure which is right */ - value = 0; - - MYLOG(OPENSEARCH_DEBUG, "col %d, column_length = " FORMAT_LEN "\n", col_idx, - value); - break; - - case SQL_COLUMN_MONEY: /* == SQL_DESC_FIXED_PREC_SCALE */ - value = opensearchtype_money(conn, field_type); - MYLOG(OPENSEARCH_ALL, "COLUMN_MONEY=" FORMAT_LEN "\n", value); - break; - - case SQL_DESC_NULLABLE: - if (SC_has_outer_join(stmt)) - value = TRUE; - else - value = fi ? fi->nullable : opensearchtype_nullable(conn, field_type); - MYLOG(OPENSEARCH_ALL, "COLUMN_NULLABLE=" FORMAT_LEN "\n", value); - break; - - case SQL_COLUMN_OWNER_NAME: /* == SQL_DESC_SCHEMA_NAME */ - p = ti ? SAFE_NAME(ti->schema_name) : NULL_STRING; - MYLOG(OPENSEARCH_DEBUG, "SCHEMA_NAME = '%s'\n", p); - break; - - case SQL_COLUMN_PRECISION: /* in 2.x */ - value = column_size; - if (value < 0) - value = 0; - - MYLOG(OPENSEARCH_DEBUG, "col %d, column_size = " FORMAT_LEN "\n", col_idx, - value); - break; - - case SQL_COLUMN_QUALIFIER_NAME: /* == SQL_DESC_CATALOG_NAME */ - p = ti ? CurrCatString(conn) - : NULL_STRING; /* empty string means *not supported* */ - break; - - case SQL_COLUMN_SCALE: /* in 2.x */ - value = opensearchtype_decimal_digits(stmt, field_type, col_idx); - MYLOG(OPENSEARCH_ALL, "COLUMN_SCALE=" FORMAT_LEN "\n", value); - if (value < 0) - value = 0; - break; - - case SQL_COLUMN_SEARCHABLE: /* == SQL_DESC_SEARCHABLE */ - value = opensearchtype_searchable(conn, field_type); - break; - - case SQL_COLUMN_TABLE_NAME: /* == SQL_DESC_TABLE_NAME */ - p = ti ? SAFE_NAME(ti->table_name) : NULL_STRING; - - MYLOG(OPENSEARCH_DEBUG, "TABLE_NAME = '%s'\n", p); - break; - - case SQL_COLUMN_TYPE: /* == SQL_DESC_CONCISE_TYPE */ - value = opensearchtype_to_concise_type(stmt, field_type, col_idx, - unknown_sizes); - MYLOG(OPENSEARCH_DEBUG, "COLUMN_TYPE=" FORMAT_LEN "\n", value); - break; - - case SQL_COLUMN_TYPE_NAME: /* == SQL_DESC_TYPE_NAME */ - p = opensearchtype_to_name(stmt, field_type, col_idx, - fi && fi->auto_increment); - break; - - case SQL_COLUMN_UNSIGNED: /* == SQL_DESC_UNSINGED */ - value = opensearchtype_unsigned(conn, field_type); - if (value == -1) /* non-numeric becomes TRUE (ODBC Doc) */ - value = SQL_TRUE; - - break; - - case SQL_COLUMN_UPDATABLE: /* == SQL_DESC_UPDATABLE */ - - /* - * Neither Access or Borland care about this. - * - * if (field_type == OPENSEARCH_TYPE_OID) pfDesc = SQL_ATTR_READONLY; - * else - */ - if (!stmt_updatable) - value = SQL_ATTR_READONLY; - else - value = - fi ? (fi->updatable ? SQL_ATTR_WRITE : SQL_ATTR_READONLY) - : (QR_get_attid(res, col_idx) > 0 ? SQL_ATTR_WRITE - : SQL_ATTR_READONLY); - if (SQL_ATTR_READONLY != value) { - const char *name = fi ? SAFE_NAME(fi->column_name) - : QR_get_fieldname(res, col_idx); - if (stricmp(name, OID_NAME) == 0 || stricmp(name, "ctid") == 0 - || stricmp(name, XMIN_NAME) == 0) - value = SQL_ATTR_READONLY; - else if (conn->ms_jet && fi && fi->auto_increment) - value = SQL_ATTR_READONLY; - } - - MYLOG(OPENSEARCH_DEBUG, "%s: UPDATEABLE = " FORMAT_LEN "\n", func, value); - break; - case SQL_DESC_BASE_COLUMN_NAME: - - p = fi ? SAFE_NAME(fi->column_name) - : QR_get_fieldname(res, col_idx); - - MYLOG(OPENSEARCH_DEBUG, "BASE_COLUMN_NAME = '%s'\n", p); - break; - case SQL_DESC_BASE_TABLE_NAME: /* the same as TABLE_NAME ok ? */ - p = ti ? SAFE_NAME(ti->table_name) : NULL_STRING; - - MYLOG(OPENSEARCH_DEBUG, "BASE_TABLE_NAME = '%s'\n", p); - break; - case SQL_DESC_LENGTH: /* different from SQL_COLUMN_LENGTH */ - value = (fi && column_size > 0) - ? column_size - : opensearchtype_desclength(stmt, field_type, col_idx, - unknown_sizes); - if (-1 == value) - value = 0; - - MYLOG(OPENSEARCH_DEBUG, "col %d, desc_length = " FORMAT_LEN "\n", col_idx, - value); - break; - case SQL_DESC_OCTET_LENGTH: - value = (USE_FI(fi, unknown_sizes) && fi->length > 0) - ? fi->length - : opensearchtype_attr_transfer_octet_length( - conn, field_type, column_size, unknown_sizes); - if (-1 == value) - value = 0; - MYLOG(OPENSEARCH_DEBUG, "col %d, octet_length = " FORMAT_LEN "\n", col_idx, - value); - break; - case SQL_DESC_PRECISION: /* different from SQL_COLUMN_PRECISION */ - if (value = FI_precision(fi), value <= 0) - value = opensearchtype_precision(stmt, field_type, col_idx, - unknown_sizes); - if (value < 0) - value = 0; - - MYLOG(OPENSEARCH_DEBUG, "col %d, desc_precision = " FORMAT_LEN "\n", - col_idx, value); - break; - case SQL_DESC_SCALE: /* different from SQL_COLUMN_SCALE */ - value = opensearchtype_scale(stmt, field_type, col_idx); - if (value < 0) - value = 0; - break; - case SQL_DESC_LOCAL_TYPE_NAME: - p = opensearchtype_to_name(stmt, field_type, col_idx, - fi && fi->auto_increment); - break; - case SQL_DESC_TYPE: - value = opensearchtype_to_sqldesctype(stmt, field_type, col_idx, - unknown_sizes); - break; - case SQL_DESC_NUM_PREC_RADIX: - value = opensearchtype_radix(conn, field_type); - break; - case SQL_DESC_LITERAL_PREFIX: - p = opensearchtype_literal_prefix(conn, field_type); - break; - case SQL_DESC_LITERAL_SUFFIX: - p = opensearchtype_literal_suffix(conn, field_type); - break; - case SQL_DESC_UNNAMED: - value = (fi && NAME_IS_NULL(fi->column_name) - && NAME_IS_NULL(fi->column_alias)) - ? SQL_UNNAMED - : SQL_NAMED; - break; - case 1211: /* SQL_CA_SS_COLUMN_HIDDEN ? */ - value = 0; - break; - case 1212: /* SQL_CA_SS_COLUMN_KEY ? */ - SC_set_error(stmt, STMT_OPTION_NOT_FOR_THE_DRIVER, - "this request may be for MS SQL Server", func); - return SQL_ERROR; - default: - SC_set_error(stmt, STMT_INVALID_OPTION_IDENTIFIER, - "ColAttribute for this type not implemented yet", - func); - return SQL_ERROR; - } - - result = SQL_SUCCESS; - - if (p) { /* char/binary data */ - size_t len = strlen(p); - - if (rgbDesc) { - strncpy_null((char *)rgbDesc, p, (size_t)cbDescMax); - - if (len >= (size_t)cbDescMax) { - result = SQL_SUCCESS_WITH_INFO; - SC_set_error(stmt, STMT_TRUNCATED, - "The buffer was too small for the rgbDesc.", func); - } - } - - if (pcbDesc) - *pcbDesc = (SQLSMALLINT)len; - } else { - /* numeric data */ - if (pfDesc) - *pfDesc = value; - } - - return result; -} - -/* Returns result data for a single column in the current row. */ -RETCODE SQL_API OPENSEARCHAPI_GetData(HSTMT hstmt, SQLUSMALLINT icol, - SQLSMALLINT fCType, PTR rgbValue, - SQLLEN cbValueMax, SQLLEN *pcbValue) { - CSTR func = "OPENSEARCHAPI_GetData"; - QResultClass *res; - StatementClass *stmt = (StatementClass *)hstmt; - UInt2 num_cols; - SQLLEN num_rows; - OID field_type; - int atttypmod; - void *value = NULL; - RETCODE result = SQL_SUCCESS; - char get_bookmark = FALSE; - SQLSMALLINT target_type; - int precision = -1; -#ifdef WITH_UNIXODBC - SQLCHAR dum_rgb[2] = "\0\0"; -#endif /* WITH_UNIXODBC */ - - MYLOG(OPENSEARCH_TRACE, "entering stmt=%p icol=%d\n", stmt, icol); - - if (!stmt) { - SC_log_error(func, NULL_STRING, NULL); - return SQL_INVALID_HANDLE; - } - res = SC_get_Curres(stmt); - - if (STMT_EXECUTING == stmt->status) { - SC_set_error(stmt, STMT_SEQUENCE_ERROR, - "Can't get data while statement is still executing.", - func); - return SQL_ERROR; - } - - if (stmt->status != STMT_FINISHED) { - SC_set_error(stmt, STMT_STATUS_ERROR, - "GetData can only be called after the successful " - "execution on a SQL statement", - func); - return SQL_ERROR; - } - -#ifdef WITH_UNIXODBC - if (NULL == rgbValue) /* unixODBC allows rgbValue is NULL? */ - { - cbValueMax = 0; - rgbValue = dum_rgb; /* to avoid a crash */ - } -#endif /* WITH_UNIXODBC */ - if (SQL_ARD_TYPE == fCType) { - ARDFields *opts; - BindInfoClass *binfo = NULL; - - opts = SC_get_ARDF(stmt); - if (0 == icol) - binfo = opts->bookmark; - else if (icol <= opts->allocated && opts->bindings) - binfo = &opts->bindings[icol - 1]; - if (binfo) { - target_type = binfo->returntype; - MYLOG(OPENSEARCH_DEBUG, "SQL_ARD_TYPE=%d\n", target_type); - precision = binfo->precision; - } else { - SC_set_error(stmt, STMT_STATUS_ERROR, - "GetData can't determine the type via ARD", func); - return SQL_ERROR; - } - } else - target_type = fCType; - if (icol == 0) { - if (stmt->options.use_bookmarks == SQL_UB_OFF) { - SC_set_error( - stmt, STMT_COLNUM_ERROR, - "Attempt to retrieve bookmark with bookmark usage disabled", - func); - return SQL_ERROR; - } - - /* Make sure it is the bookmark data type */ - switch (target_type) { - case SQL_C_BOOKMARK: - case SQL_C_VARBOOKMARK: - break; - default: - MYLOG( - OPENSEARCH_ALL, - "GetData Column 0 is type %d not of type SQL_C_BOOKMARK\n", - target_type); - SC_set_error(stmt, STMT_PROGRAM_TYPE_OUT_OF_RANGE, - "Column 0 is not of type SQL_C_BOOKMARK", func); - return SQL_ERROR; - } - - get_bookmark = TRUE; - } else { - /* use zero-based column numbers */ - icol--; - - /* make sure the column number is valid */ - num_cols = QR_NumPublicResultCols(res); - if (icol >= num_cols) { - SC_set_error(stmt, STMT_INVALID_COLUMN_NUMBER_ERROR, - "Invalid column number.", func); - return SQL_ERROR; - } - } - -#ifdef __APPLE__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wkeyword-macro" -#endif // __APPLE__ -#define return DONT_CALL_RETURN_FROM_HERE ? ? ? -#ifdef __APPLE__ -#pragma clang diagnostic pop -#endif // __APPLE__ - if (!SC_is_fetchcursor(stmt)) { - /* make sure we're positioned on a valid row */ - num_rows = QR_get_num_total_tuples(res); - if ((stmt->currTuple < 0) || (stmt->currTuple >= num_rows)) { - SC_set_error(stmt, STMT_INVALID_CURSOR_STATE_ERROR, - "Not positioned on a valid row for GetData.", func); - result = SQL_ERROR; - goto cleanup; - } - MYLOG(OPENSEARCH_DEBUG, " num_rows = " FORMAT_LEN "\n", num_rows); - - if (!get_bookmark) { - SQLLEN curt = GIdx2CacheIdx(stmt->currTuple, stmt, res); - value = QR_get_value_backend_row(res, curt, icol); - MYLOG(OPENSEARCH_DEBUG, - "currT=" FORMAT_LEN " base=" FORMAT_LEN " rowset=" FORMAT_LEN - "\n", - stmt->currTuple, QR_get_rowstart_in_cache(res), - SC_get_rowset_start(stmt)); - MYLOG(OPENSEARCH_DEBUG, " value = '%s'\n", NULL_IF_NULL(value)); - } - } else { - /* it's a SOCKET result (backend data) */ - if (stmt->currTuple == -1 || !res || !res->tupleField) { - SC_set_error(stmt, STMT_INVALID_CURSOR_STATE_ERROR, - "Not positioned on a valid row for GetData.", func); - result = SQL_ERROR; - goto cleanup; - } - - if (!get_bookmark) { - /** value = QR_get_value_backend(res, icol); maybe thiw doesn't work - */ - SQLLEN curt = GIdx2CacheIdx(stmt->currTuple, stmt, res); - value = QR_get_value_backend_row(res, curt, icol); - } - MYLOG(OPENSEARCH_DEBUG, " socket: value = '%s'\n", NULL_IF_NULL(value)); - } - - if (get_bookmark) { - BOOL contents_get = FALSE; - - if (rgbValue) { - if (SQL_C_BOOKMARK == target_type - || (SQLLEN)sizeof(UInt4) <= cbValueMax) { - Int4 bookmark = (int)SC_make_int4_bookmark(stmt->currTuple); - contents_get = TRUE; - memcpy(rgbValue, &bookmark, sizeof(bookmark)); - } - } - if (pcbValue) - *pcbValue = sizeof(Int4); - - if (contents_get) - result = SQL_SUCCESS; - else { - SC_set_error(stmt, STMT_TRUNCATED, - "The buffer was too small for the GetData.", func); - result = SQL_SUCCESS_WITH_INFO; - } - goto cleanup; - } - - field_type = QR_get_field_type(res, icol); - atttypmod = QR_get_atttypmod(res, icol); - - MYLOG(OPENSEARCH_DEBUG, - "**** icol = %d, target_type = %d, field_type = %d, value = '%s'\n", - icol, target_type, field_type, NULL_IF_NULL(value)); - - SC_set_current_col(stmt, icol); - - result = (RETCODE)copy_and_convert_field(stmt, field_type, atttypmod, value, - target_type, precision, rgbValue, - cbValueMax, pcbValue, pcbValue); - - switch (result) { - case COPY_OK: - result = SQL_SUCCESS; - break; - - case COPY_UNSUPPORTED_TYPE: - SC_set_error(stmt, STMT_RESTRICTED_DATA_TYPE_ERROR, - "Received an unsupported type from OpenSearch.", - func); - result = SQL_ERROR; - break; - - case COPY_UNSUPPORTED_CONVERSION: - SC_set_error(stmt, STMT_RESTRICTED_DATA_TYPE_ERROR, - "Couldn't handle the necessary data type conversion.", - func); - result = SQL_ERROR; - break; - - case COPY_RESULT_TRUNCATED: - SC_set_error(stmt, STMT_TRUNCATED, - "The buffer was too small for the GetData.", func); - result = SQL_SUCCESS_WITH_INFO; - break; - - case COPY_INVALID_STRING_CONVERSION: /* invalid string */ - SC_set_error(stmt, STMT_STRING_CONVERSION_ERROR, - "invalid string conversion occured.", func); - result = SQL_ERROR; - break; - - case COPY_GENERAL_ERROR: /* error msg already filled in */ - result = SQL_ERROR; - break; - - case COPY_NO_DATA_FOUND: - /* SC_log_error(func, "no data found", stmt); */ - result = SQL_NO_DATA_FOUND; - break; - - default: - SC_set_error( - stmt, STMT_INTERNAL_ERROR, - "Unrecognized return value from copy_and_convert_field.", func); - result = SQL_ERROR; - break; - } - -cleanup: -#undef return - MYLOG(OPENSEARCH_TRACE, "leaving %d\n", result); - return result; -} - -/* - * Returns data for bound columns in the current row ("hstmt->iCursor"), - * advances the cursor. - */ -RETCODE SQL_API OPENSEARCHAPI_Fetch(HSTMT hstmt) { - CSTR func = "OPENSEARCHAPI_Fetch"; - StatementClass *stmt = (StatementClass *)hstmt; - ARDFields *opts; - QResultClass *res; - BindInfoClass *bookmark; - RETCODE retval = SQL_SUCCESS; - - MYLOG(OPENSEARCH_TRACE, "entering stmt = %p, stmt->result= %p\n", stmt, - stmt ? SC_get_Curres(stmt) : NULL); - - if (!stmt) { - SC_log_error(func, NULL_STRING, NULL); - return SQL_INVALID_HANDLE; - } - - SC_clear_error(stmt); - - if (!(res = SC_get_Curres(stmt), res)) { - SC_set_error(stmt, STMT_INVALID_CURSOR_STATE_ERROR, - "Null statement result in OPENSEARCHAPI_Fetch.", func); - return SQL_ERROR; - } - - /* Not allowed to bind a bookmark column when using SQLFetch. */ - opts = SC_get_ARDF(stmt); - if ((bookmark = opts->bookmark, bookmark) && bookmark->buffer) { - SC_set_error( - stmt, STMT_COLNUM_ERROR, - "Not allowed to bind a bookmark column when using OPENSEARCHAPI_Fetch", - func); - return SQL_ERROR; - } - - if (stmt->status == STMT_EXECUTING) { - SC_set_error(stmt, STMT_SEQUENCE_ERROR, - "Can't fetch while statement is still executing.", func); - return SQL_ERROR; - } - - if (stmt->status != STMT_FINISHED) { - SC_set_error(stmt, STMT_SEQUENCE_ERROR, - "Fetch can only be called after the successful execution " - "on a SQL statement", - func); - return SQL_ERROR; - } - - if (opts->bindings == NULL) { - if (!SC_may_fetch_rows(stmt)) - return SQL_NO_DATA_FOUND; - /* just to avoid a crash if the user insists on calling this */ - /* function even if SQL_ExecDirect has reported an Error */ - SC_set_error(stmt, STMT_INVALID_CURSOR_STATE_ERROR, - "Bindings were not allocated properly.", func); - return SQL_ERROR; - } - -#ifdef __APPLE__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wkeyword-macro" -#endif // __APPLE__ -#define return DONT_CALL_RETURN_FROM_HERE ? ? ? -#ifdef __APPLE__ -#pragma clang diagnostic pop -#endif // __APPLE__ - if (stmt->rowset_start < 0) - SC_set_rowset_start(stmt, 0, TRUE); - QR_set_reqsize(res, 1); - /* QR_inc_rowstart_in_cache(res, stmt->last_fetch_count_include_ommitted); - */ - SC_inc_rowset_start(stmt, stmt->last_fetch_count_include_ommitted); - - retval = SC_fetch(stmt); -#undef return - return retval; -} - -SQLLEN -getNthValid(const QResultClass *res, SQLLEN sta, UWORD orientation, SQLULEN nth, - SQLLEN *nearest) { - SQLLEN i, num_tuples = QR_get_num_total_tuples(res), nearp; - SQLULEN count; - KeySet *keyset; - - if (!QR_once_reached_eof(res)) - num_tuples = INT_MAX; - /* Note that the parameter nth is 1-based */ - MYLOG(OPENSEARCH_DEBUG, - "get " FORMAT_ULEN "th Valid data from " FORMAT_LEN " to %s [dlt=%d]", - nth, sta, orientation == SQL_FETCH_PRIOR ? "backward" : "forward", - res->dl_count); - if (0 == res->dl_count) { - MYPRINTF(OPENSEARCH_DEBUG, "\n"); - if (SQL_FETCH_PRIOR == orientation) { - if (sta + 1 >= (SQLLEN)nth) { - *nearest = sta + 1 - nth; - return nth; - } - *nearest = -1; - return -(SQLLEN)(sta + 1); - } else { - nearp = sta - 1 + nth; - if (nearp < num_tuples) { - *nearest = nearp; - return nth; - } - *nearest = num_tuples; - return -(SQLLEN)(num_tuples - sta); - } - } - count = 0; - if (QR_get_cursor(res)) { - SQLLEN *deleted = res->deleted; - SQLLEN delsta; - - if (SQL_FETCH_PRIOR == orientation) { - *nearest = sta + 1 - nth; - delsta = (-1); - MYPRINTF(OPENSEARCH_DEBUG, "deleted "); - for (i = res->dl_count - 1; i >= 0 && *nearest <= deleted[i]; i--) { - MYPRINTF(OPENSEARCH_DEBUG, "[" FORMAT_LEN "]=" FORMAT_LEN " ", i, - deleted[i]); - if (sta >= deleted[i]) { - (*nearest)--; - if (i > delsta) - delsta = i; - } - } - MYPRINTF(OPENSEARCH_DEBUG, "nearest=" FORMAT_LEN "\n", *nearest); - if (*nearest < 0) { - *nearest = -1; - count = sta - delsta; - } else - return nth; - } else { - MYPRINTF(OPENSEARCH_DEBUG, "\n"); - *nearest = sta - 1 + nth; - delsta = res->dl_count; - if (!QR_once_reached_eof(res)) - num_tuples = INT_MAX; - for (i = 0; i < res->dl_count && *nearest >= deleted[i]; i++) { - if (sta <= deleted[i]) { - (*nearest)++; - if (i < delsta) - delsta = i; - } - } - if (*nearest >= num_tuples) { - *nearest = num_tuples; - count = *nearest - sta + delsta - res->dl_count; - } else - return nth; - } - } else if (SQL_FETCH_PRIOR == orientation) { - for (i = sta, keyset = res->keyset + sta; i >= 0; i--, keyset--) { - if (0 - == (keyset->status - & (CURS_SELF_DELETING | CURS_SELF_DELETED - | CURS_OTHER_DELETED))) { - *nearest = i; - MYPRINTF(OPENSEARCH_DEBUG, " nearest=" FORMAT_LEN "\n", *nearest); - if (++count == nth) - return count; - } - } - *nearest = -1; - } else { - for (i = sta, keyset = res->keyset + sta; i < num_tuples; - i++, keyset++) { - if (0 - == (keyset->status - & (CURS_SELF_DELETING | CURS_SELF_DELETED - | CURS_OTHER_DELETED))) { - *nearest = i; - MYPRINTF(OPENSEARCH_DEBUG, " nearest=" FORMAT_LEN "\n", *nearest); - if (++count == nth) - return count; - } - } - *nearest = num_tuples; - } - MYPRINTF(OPENSEARCH_DEBUG, " nearest not found\n"); - return -(SQLLEN)count; -} - -/* - * return NO_DATA_FOUND macros - * save_rowset_start or num_tuples must be defined - */ -#define EXTFETCH_RETURN_BOF(stmt, res) \ - { \ - MYLOG(OPENSEARCH_ALL, "RETURN_BOF\n"); \ - SC_set_rowset_start(stmt, -1, TRUE); \ - stmt->currTuple = -1; \ - /* move_cursor_position_if_needed(stmt, res); */ \ - return SQL_NO_DATA_FOUND; \ - } -#define EXTFETCH_RETURN_EOF(stmt, res) \ - { \ - MYLOG(OPENSEARCH_ALL, "RETURN_EOF\n"); \ - SC_set_rowset_start(stmt, num_tuples, TRUE); \ - stmt->currTuple = -1; \ - /* move_cursor_position_if_needed(stmt, res); */ \ - return SQL_NO_DATA_FOUND; \ - } - -/* This fetchs a block of data (rowset). */ -RETCODE SQL_API OPENSEARCHAPI_ExtendedFetch(HSTMT hstmt, SQLUSMALLINT fFetchType, - SQLLEN irow, SQLULEN *pcrow, - SQLUSMALLINT *rgfRowStatus, - SQLLEN bookmark_offset, SQLLEN rowsetSize) { - UNUSED(bookmark_offset, irow); - CSTR func = "OPENSEARCHAPI_ExtendedFetch"; - StatementClass *stmt = (StatementClass *)hstmt; - ARDFields *opts; - QResultClass *res; - BindInfoClass *bookmark; - SQLLEN num_tuples, i, fc_io; - SQLLEN save_rowset_size, progress_size; - SQLLEN rowset_start, rowset_end = (-1); - RETCODE result = SQL_SUCCESS; - char truncated, error, should_set_rowset_start = FALSE; - SQLLEN currp; - UWORD pstatus; - BOOL currp_is_valid, reached_eof, useCursor; - SQLLEN reqsize = rowsetSize; - - MYLOG(OPENSEARCH_TRACE, "entering stmt=%p rowsetSize=" FORMAT_LEN "\n", stmt, - rowsetSize); - - if (!stmt) { - SC_log_error(func, NULL_STRING, NULL); - return SQL_INVALID_HANDLE; - } - - /* if (SC_is_fetchcursor(stmt) && !stmt->manual_result) */ - if ((SQL_CURSOR_FORWARD_ONLY != stmt->options.cursor_type) - || (fFetchType != SQL_FETCH_NEXT)) { - SC_set_error(stmt, STMT_FETCH_OUT_OF_RANGE, - "Only SQL_CURSOR_FORWARD_ONLY with SQL_FETCH_NEXT " - "cursor's are supported.", - func); - return SQL_ERROR; - } - - SC_clear_error(stmt); - - if (!(res = SC_get_Curres(stmt), res)) { - SC_set_error(stmt, STMT_INVALID_CURSOR_STATE_ERROR, - "Null statement result in OPENSEARCHAPI_ExtendedFetch.", func); - return SQL_ERROR; - } - - opts = SC_get_ARDF(stmt); - /* - * If a bookmark column is bound but bookmark usage is off, then error. - */ - if ((bookmark = opts->bookmark, bookmark) && bookmark->buffer - && stmt->options.use_bookmarks == SQL_UB_OFF) { - SC_set_error( - stmt, STMT_COLNUM_ERROR, - "Attempt to retrieve bookmark with bookmark usage disabled", func); - return SQL_ERROR; - } - - if (stmt->status == STMT_EXECUTING) { - SC_set_error(stmt, STMT_SEQUENCE_ERROR, - "Can't fetch while statement is still executing.", func); - return SQL_ERROR; - } - - if (stmt->status != STMT_FINISHED) { - SC_set_error(stmt, STMT_STATUS_ERROR, - "ExtendedFetch can only be called after the successful " - "execution on a SQL statement", - func); - return SQL_ERROR; - } - - if (opts->bindings == NULL) { - if (!SC_may_fetch_rows(stmt)) - return SQL_NO_DATA_FOUND; - /* just to avoid a crash if the user insists on calling this */ - /* function even if SQL_ExecDirect has reported an Error */ - SC_set_error(stmt, STMT_INVALID_CURSOR_STATE_ERROR, - "Bindings were not allocated properly.", func); - return SQL_ERROR; - } - - /* Initialize to no rows fetched */ - if (rgfRowStatus) - for (i = 0; i < rowsetSize; i++) - *(rgfRowStatus + i) = SQL_ROW_NOROW; - - if (pcrow) - *pcrow = 0; - - useCursor = (SC_is_fetchcursor(stmt) && NULL != QR_get_cursor(res)); - num_tuples = QR_get_num_total_tuples(res); - reached_eof = QR_once_reached_eof(res) && QR_get_cursor(res); - if (useCursor && !reached_eof) - num_tuples = INT_MAX; - - MYLOG(OPENSEARCH_ALL, "num_tuples=" FORMAT_LEN "\n", num_tuples); - /* Save and discard the saved rowset size */ - save_rowset_size = stmt->save_rowset_size; - stmt->save_rowset_size = -1; - rowset_start = SC_get_rowset_start(stmt); - - QR_stop_movement(res); - res->move_offset = 0; - switch (fFetchType) { - case SQL_FETCH_NEXT: - progress_size = - (save_rowset_size > 0 ? save_rowset_size : rowsetSize); - if (rowset_start < 0) - SC_set_rowset_start(stmt, 0, TRUE); - else if (res->keyset) { - if (stmt->last_fetch_count <= progress_size) { - SC_inc_rowset_start( - stmt, stmt->last_fetch_count_include_ommitted); - progress_size -= stmt->last_fetch_count; - } - if (progress_size > 0) { - if (getNthValid(res, SC_get_rowset_start(stmt), - SQL_FETCH_NEXT, progress_size + 1, - &rowset_start) - <= 0) { - EXTFETCH_RETURN_EOF(stmt, res) - } else - should_set_rowset_start = TRUE; - } - } else - SC_inc_rowset_start(stmt, progress_size); - MYLOG(OPENSEARCH_DEBUG, - "SQL_FETCH_NEXT: num_tuples=" FORMAT_LEN - ", currtuple=" FORMAT_LEN ", rowst=" FORMAT_LEN "\n", - num_tuples, stmt->currTuple, rowset_start); - break; - default: - SC_set_error(stmt, STMT_FETCH_OUT_OF_RANGE, - "Unsupported OPENSEARCHAPI_ExtendedFetch Direction", func); - return SQL_ERROR; - } - - /* - * CHECK FOR PROPER CURSOR STATE - */ - - /* - * Handle Declare Fetch style specially because the end is not really - * the end... - */ - if (!should_set_rowset_start) - rowset_start = SC_get_rowset_start(stmt); - - // Get more results when cursor reaches end - { - ConnectionClass *conn = SC_get_conn(stmt); - if (conn != NULL) { - const SQLLEN end_rowset_size = rowset_start + rowsetSize; - while ((end_rowset_size >= num_tuples) - && (NULL != res->server_cursor_id)) { - GetNextResultSet(stmt); - num_tuples = QR_get_num_total_tuples(res); - } - } - } - - if (useCursor) { - if (reached_eof && rowset_start >= num_tuples) { - EXTFETCH_RETURN_EOF(stmt, res) - } - } else { - /* If *new* rowset is after the result_set, return no data found */ - if (rowset_start >= num_tuples) { - EXTFETCH_RETURN_EOF(stmt, res) - } - } - /* If *new* rowset is prior to result_set, return no data found */ - if (rowset_start < 0) { - if (rowset_start + rowsetSize <= 0) { - EXTFETCH_RETURN_BOF(stmt, res) - } else { /* overlap with beginning of result set, - * so get first rowset */ - SC_set_rowset_start(stmt, 0, TRUE); - } - should_set_rowset_start = FALSE; - } - -#ifdef __APPLE__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wkeyword-macro" -#endif // __APPLE__ -#define return DONT_CALL_RETURN_FROM_HERE ? ? ? -#ifdef __APPLE__ -#pragma clang diagnostic pop -#endif // __APPLE__ - /* set the rowset_start if needed */ - if (should_set_rowset_start) - SC_set_rowset_start(stmt, rowset_start, TRUE); - if (rowset_end < 0 && QR_haskeyset(res)) { - getNthValid(res, rowset_start, SQL_FETCH_NEXT, rowsetSize, &rowset_end); - reqsize = rowset_end - rowset_start + 1; - } - QR_set_reqsize(res, (Int4)reqsize); - /* currTuple is always 1 row prior to the rowset start */ - stmt->currTuple = RowIdx2GIdx(-1, stmt); - QR_set_rowstart_in_cache(res, SC_get_rowset_start(stmt)); - - /* Physical Row advancement occurs for each row fetched below */ - - MYLOG(OPENSEARCH_DEBUG, "new currTuple = " FORMAT_LEN "\n", stmt->currTuple); - - truncated = error = FALSE; - - currp = -1; - stmt->bind_row = 0; /* set the binding location */ - result = SC_fetch(stmt); - if (SQL_ERROR == result) - goto cleanup; - if (SQL_NO_DATA_FOUND != result && res->keyset) { - currp = GIdx2KResIdx(SC_get_rowset_start(stmt), stmt, res); - MYLOG(OPENSEARCH_ALL, "currp=" FORMAT_LEN "\n", currp); - if (currp < 0) { - result = SQL_ERROR; - MYLOG(OPENSEARCH_DEBUG, - "rowset_start=" FORMAT_LEN " but currp=" FORMAT_LEN "\n", - SC_get_rowset_start(stmt), currp); - SC_set_error(stmt, STMT_INTERNAL_ERROR, - "rowset_start not in the keyset", func); - goto cleanup; - } - } - for (i = 0, fc_io = 0; SQL_NO_DATA_FOUND != result && SQL_ERROR != result; - currp++) { - fc_io++; - currp_is_valid = FALSE; - if (res->keyset) { - if ((SQLULEN)currp < res->num_cached_keys) { - currp_is_valid = TRUE; - res->keyset[currp].status &= - ~CURS_IN_ROWSET; /* Off the flag first */ - } else { - MYLOG(OPENSEARCH_DEBUG, "Umm current row is out of keyset\n"); - break; - } - } - MYLOG(OPENSEARCH_ALL, "ExtFetch result=%d\n", result); - if (currp_is_valid && SQL_SUCCESS_WITH_INFO == result - && 0 == stmt->last_fetch_count) { - MYLOG(OPENSEARCH_ALL, "just skipping deleted row " FORMAT_LEN "\n", currp); - if (rowsetSize - i + fc_io > reqsize) - QR_set_reqsize(res, (Int4)(rowsetSize - i + fc_io)); - result = SC_fetch(stmt); - if (SQL_ERROR == result) - break; - continue; - } - - /* Determine Function status */ - if (result == SQL_SUCCESS_WITH_INFO) - truncated = TRUE; - else if (result == SQL_ERROR) - error = TRUE; - - /* Determine Row Status */ - if (rgfRowStatus) { - if (result == SQL_ERROR) - *(rgfRowStatus + i) = SQL_ROW_ERROR; - else if (currp_is_valid) { - pstatus = (res->keyset[currp].status & KEYSET_INFO_PUBLIC); - if (pstatus != 0 && pstatus != SQL_ROW_ADDED) { - rgfRowStatus[i] = pstatus; - } else - rgfRowStatus[i] = SQL_ROW_SUCCESS; - /* refresh the status */ - /* if (SQL_ROW_DELETED != pstatus) */ - res->keyset[currp].status &= (~KEYSET_INFO_PUBLIC); - } else - *(rgfRowStatus + i) = SQL_ROW_SUCCESS; - } - if (SQL_ERROR != result && currp_is_valid) - res->keyset[currp].status |= - CURS_IN_ROWSET; /* This is the unique place where the - CURS_IN_ROWSET bit is turned on */ - i++; - if (i >= rowsetSize) - break; - stmt->bind_row = (SQLSETPOSIROW)i; /* set the binding location */ - result = SC_fetch(stmt); - } - if (SQL_ERROR == result) - goto cleanup; - - /* Save the fetch count for SQLSetPos */ - stmt->last_fetch_count = i; - stmt->save_rowset_size = rowsetSize; - /* - currp = KResIdx2GIdx(currp, stmt, res); - stmt->last_fetch_count_include_ommitted = GIdx2RowIdx(currp, stmt); - */ - stmt->last_fetch_count_include_ommitted = fc_io; - - /* Reset next binding row */ - stmt->bind_row = 0; - - /* Move the cursor position to the first row in the result set. */ - stmt->currTuple = RowIdx2GIdx(0, stmt); - - /* For declare/fetch, need to reset cursor to beginning of rowset */ - if (useCursor) - QR_set_position(res, 0); - - /* Set the number of rows retrieved */ - if (pcrow) - *pcrow = i; - MYLOG(OPENSEARCH_ALL, "pcrow=" FORMAT_LEN "\n", i); - - if (i == 0) - /* Only DeclareFetch should wind up here */ - result = SQL_NO_DATA_FOUND; - else if (error) - result = SQL_ERROR; - else if (truncated) - result = SQL_SUCCESS_WITH_INFO; - else if (SC_get_errornumber(stmt) == STMT_POS_BEFORE_RECORDSET) - result = SQL_SUCCESS_WITH_INFO; - else - result = SQL_SUCCESS; - -cleanup: -#undef return - return result; -} - -/* - * This determines whether there are more results sets available for - * the "hstmt". - */ -/* CC: return SQL_NO_DATA_FOUND since we do not support multiple result sets */ -RETCODE SQL_API OPENSEARCHAPI_MoreResults(HSTMT hstmt) { - StatementClass *stmt = (StatementClass *)hstmt; - QResultClass *res; - RETCODE ret = SQL_SUCCESS; - - MYLOG(OPENSEARCH_TRACE, "entering...\n"); - res = SC_get_Curres(stmt); - if (res) { - res = res->next; - SC_set_Curres(stmt, res); - } - if (res) { - SQLSMALLINT num_p; - - if (stmt->multi_statement < 0) - OPENSEARCHAPI_NumParams(stmt, &num_p); - if (stmt->multi_statement > 0) { - const char *cmdstr; - - SC_initialize_cols_info(stmt, FALSE, TRUE); - stmt->statement_type = STMT_TYPE_UNKNOWN; - if (cmdstr = QR_get_command(res), NULL != cmdstr) - stmt->statement_type = (short)statement_type(cmdstr); - stmt->join_info = 0; - SC_clear_parse_method(stmt); - } - stmt->diag_row_count = res->recent_processed_row_count; - SC_set_rowset_start(stmt, -1, FALSE); - stmt->currTuple = -1; - } else { - OPENSEARCHAPI_FreeStmt(hstmt, SQL_CLOSE); - ret = SQL_NO_DATA_FOUND; - } - MYLOG(OPENSEARCH_DEBUG, "leaving %d\n", ret); - return ret; -} - -SQLLEN ClearCachedRows(TupleField *tuple, int num_fields, SQLLEN num_rows) { - SQLLEN i; - - for (i = 0; i < num_fields * num_rows; i++, tuple++) { - if (tuple->value) { - MYLOG(OPENSEARCH_ALL, - "freeing tuple[" FORMAT_LEN "][" FORMAT_LEN "].value=%p\n", - i / num_fields, i % num_fields, tuple->value); - free(tuple->value); - tuple->value = NULL; - } - tuple->len = -1; - } - return i; -} - -/* Set the cursor name on a statement handle */ -RETCODE SQL_API OPENSEARCHAPI_SetCursorName(HSTMT hstmt, const SQLCHAR *szCursor, - SQLSMALLINT cbCursor) { - CSTR func = "OPENSEARCHAPI_SetCursorName"; - StatementClass *stmt = (StatementClass *)hstmt; - - MYLOG(OPENSEARCH_TRACE, "entering hstmt=%p, szCursor=%p, cbCursorMax=%d\n", hstmt, - szCursor, cbCursor); - - if (!stmt) { - SC_log_error(func, NULL_STRING, NULL); - return SQL_INVALID_HANDLE; - } - - SET_NAME_DIRECTLY(stmt->cursor_name, - make_string(szCursor, cbCursor, NULL, 0)); - return SQL_SUCCESS; -} - -/* Return the cursor name for a statement handle */ -RETCODE SQL_API OPENSEARCHAPI_GetCursorName(HSTMT hstmt, SQLCHAR *szCursor, - SQLSMALLINT cbCursorMax, - SQLSMALLINT *pcbCursor) { - CSTR func = "OPENSEARCHAPI_GetCursorName"; - StatementClass *stmt = (StatementClass *)hstmt; - size_t len = 0; - RETCODE result; - - MYLOG(OPENSEARCH_DEBUG, - "entering hstmt=%p, szCursor=%p, cbCursorMax=%d, pcbCursor=%p\n", - hstmt, szCursor, cbCursorMax, pcbCursor); - - if (!stmt) { - SC_log_error(func, NULL_STRING, NULL); - return SQL_INVALID_HANDLE; - } - result = SQL_SUCCESS; - len = strlen(SC_cursor_name(stmt)); - - if (szCursor) { - strncpy_null((char *)szCursor, SC_cursor_name(stmt), cbCursorMax); - - if (len >= (size_t)cbCursorMax) { - result = SQL_SUCCESS_WITH_INFO; - SC_set_error(stmt, STMT_TRUNCATED, - "The buffer was too small for the GetCursorName.", - func); - } - } - - if (pcbCursor) - *pcbCursor = (SQLSMALLINT)len; - - return result; -} diff --git a/sql-odbc/src/sqlodbc/setup.c b/sql-odbc/src/sqlodbc/setup.c deleted file mode 100644 index 89cc0dc957..0000000000 --- a/sql-odbc/src/sqlodbc/setup.c +++ /dev/null @@ -1,698 +0,0 @@ -#ifdef WIN32 -#include "opensearch_enlist.h" -#include "opensearch_odbc.h" -#include "loadlib.h" -#include "misc.h" // strncpy_null - -//#include "environ.h" -#ifdef WIN32 -#include -#endif -#include -#include - -#include "dlg_specific.h" -#include "opensearch_apifunc.h" -#include "resource.h" -#include "win_setup.h" - -#define INTFUNC __stdcall - -extern HINSTANCE s_hModule; /* Saved module handle. */ - -/* Constants */ -#define MIN(x, y) ((x) < (y) ? (x) : (y)) - -#define MAXKEYLEN (32 + 1) /* Max keyword length */ -#define MAXDESC (255 + 1) /* Max description length */ -#define MAXDSNAME (32 + 1) /* Max data source name length */ - -static void ParseAttributes(LPCSTR lpszAttributes, LPSETUPDLG lpsetupdlg); -static BOOL SetDSNAttributes(HWND hwndParent, LPSETUPDLG lpsetupdlg, - DWORD *errcode); -static BOOL SetDriverAttributes(LPCSTR lpszDriver, DWORD *pErrorCode, - LPSTR pErrorMessage, WORD cbMessage); -static void CenterDialog(HWND hdlg); - -/*-------- - * ConfigDSN - * - * Description: ODBC Setup entry point - * This entry point is called by the ODBC Installer - * (see file header for more details) - * Input : hwnd ----------- Parent window handle - * fRequest ------- Request type (i.e., add, config, or remove) - * lpszDriver ----- Driver name - * lpszAttributes - data source attribute string - * Output : TRUE success, FALSE otherwise - *-------- - */ -BOOL CALLBACK ConfigDSN(HWND hwnd, WORD fRequest, LPCSTR lpszDriver, - LPCSTR lpszAttributes) { - BOOL fSuccess; /* Success/fail flag */ - GLOBALHANDLE hglbAttr; - LPSETUPDLG lpsetupdlg; - - /* Allocate attribute array */ - hglbAttr = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, sizeof(SETUPDLG)); - if (!hglbAttr) - return FALSE; - lpsetupdlg = (LPSETUPDLG)GlobalLock(hglbAttr); - - /* First of all, parse attribute string only for DSN entry */ - CC_conninfo_init(&(lpsetupdlg->ci), INIT_GLOBALS); - if (lpszAttributes) - ParseAttributes(lpszAttributes, lpsetupdlg); - - /* Save original data source name */ - if (lpsetupdlg->ci.dsn[0]) - STRCPY_FIXED(lpsetupdlg->szDSN, lpsetupdlg->ci.dsn); - else - lpsetupdlg->szDSN[0] = '\0'; - - /* Remove data source */ - if (ODBC_REMOVE_DSN == fRequest) { - /* Fail if no data source name was supplied */ - if (!lpsetupdlg->ci.dsn[0]) - fSuccess = FALSE; - - /* Otherwise remove data source from ODBC.INI */ - else - fSuccess = SQLRemoveDSNFromIni(lpsetupdlg->ci.dsn); - } - /* Add or Configure data source */ - else { - /* Save passed variables for global access (e.g., dialog access) */ - lpsetupdlg->hwndParent = hwnd; - lpsetupdlg->lpszDrvr = lpszDriver; - lpsetupdlg->fNewDSN = (ODBC_ADD_DSN == fRequest); - lpsetupdlg->fDefault = !lstrcmpi(lpsetupdlg->ci.dsn, INI_DSN); - - /* Cleanup conninfo and restore data source name */ - CC_conninfo_init(&(lpsetupdlg->ci), CLEANUP_FOR_REUSE | INIT_GLOBALS); - STRCPY_FIXED(lpsetupdlg->ci.dsn, lpsetupdlg->szDSN); - /* Get common attributes of Data Source */ - getDSNinfo(&(lpsetupdlg->ci), lpsetupdlg->lpszDrvr); - /* - * Parse attribute string again - * - * NOTE: Values supplied in the attribute string will always - * override settings in ODBC.INI - */ - if (lpszAttributes) - ParseAttributes(lpszAttributes, lpsetupdlg); - - /* - * Display the appropriate dialog (if parent window handle - * supplied) - */ - if (hwnd) { - /* Display dialog(s) */ - fSuccess = - (IDOK - == DialogBoxParam(s_hModule, MAKEINTRESOURCE(DLG_CONFIG), hwnd, - ConfigDlgProc, (LPARAM)lpsetupdlg)); - } else if (lpsetupdlg->ci.dsn[0]) { - MYLOG(OPENSEARCH_DEBUG, "SetDSNAttributes\n"); - fSuccess = SetDSNAttributes(hwnd, lpsetupdlg, NULL); - } else - fSuccess = FALSE; - } - - CC_conninfo_release(&(lpsetupdlg->ci)); - GlobalUnlock(hglbAttr); - GlobalFree(hglbAttr); - - return fSuccess; -} - -/*-------- - * ConfigDriver - * - * Description: ODBC Setup entry point - * This entry point is called by the ODBC Installer - * (see file header for more details) - * Arguments : hwnd ----------- Parent window handle - * fRequest ------- Request type (i.e., add, config, or remove) - * lpszDriver ----- Driver name - * lpszArgs ------- A null-terminated string containing - arguments for a driver specific fRequest - * lpszMsg -------- A null-terimated string containing - an output message from the driver setup - * cnMsgMax ------- Length of lpszMSg - * pcbMsgOut ------ Total number of bytes available to - return in lpszMsg - * Returns : TRUE success, FALSE otherwise - *-------- - */ -BOOL CALLBACK ConfigDriver(HWND hwnd, WORD fRequest, LPCSTR lpszDriver, - LPCSTR lpszArgs, LPSTR lpszMsg, WORD cbMsgMax, - WORD *pcbMsgOut) { - UNUSED(lpszArgs, hwnd); - DWORD errorCode = 0; - BOOL fSuccess = TRUE; /* Success/fail flag */ - - if (cbMsgMax > 0 && NULL != lpszMsg) - *lpszMsg = '\0'; - if (NULL != pcbMsgOut) - *pcbMsgOut = 0; - - /* Add the driver */ - switch (fRequest) { - case ODBC_INSTALL_DRIVER: - fSuccess = - SetDriverAttributes(lpszDriver, &errorCode, lpszMsg, cbMsgMax); - if (cbMsgMax > 0 && NULL != lpszMsg) - *pcbMsgOut = (WORD)strlen(lpszMsg); - break; - case ODBC_REMOVE_DRIVER: - break; - default: - errorCode = ODBC_ERROR_INVALID_REQUEST_TYPE; - fSuccess = FALSE; - } - - if (!fSuccess) - SQLPostInstallerError(errorCode, lpszMsg); - return fSuccess; -} - -/*------- - * CenterDialog - * - * Description: Center the dialog over the frame window - * Input : hdlg -- Dialog window handle - * Output : None - *------- - */ -static void CenterDialog(HWND hdlg) { - HWND hwndFrame; - RECT rcDlg, rcScr, rcFrame; - int cx, cy; - - hwndFrame = GetParent(hdlg); - - GetWindowRect(hdlg, &rcDlg); - cx = rcDlg.right - rcDlg.left; - cy = rcDlg.bottom - rcDlg.top; - - GetClientRect(hwndFrame, &rcFrame); - ClientToScreen(hwndFrame, (LPPOINT)(&rcFrame.left)); - ClientToScreen(hwndFrame, (LPPOINT)(&rcFrame.right)); - rcDlg.top = rcFrame.top + (((rcFrame.bottom - rcFrame.top) - cy) >> 1); - rcDlg.left = rcFrame.left + (((rcFrame.right - rcFrame.left) - cx) >> 1); - rcDlg.bottom = rcDlg.top + cy; - rcDlg.right = rcDlg.left + cx; - - GetWindowRect(GetDesktopWindow(), &rcScr); - if (rcDlg.bottom > rcScr.bottom) { - rcDlg.bottom = rcScr.bottom; - rcDlg.top = rcDlg.bottom - cy; - } - if (rcDlg.right > rcScr.right) { - rcDlg.right = rcScr.right; - rcDlg.left = rcDlg.right - cx; - } - - if (rcDlg.left < 0) - rcDlg.left = 0; - if (rcDlg.top < 0) - rcDlg.top = 0; - - MoveWindow(hdlg, rcDlg.left, rcDlg.top, cx, cy, TRUE); - return; -} - -/*------- - * ConfigDlgProc - * Description: Manage add data source name dialog - * Input : hdlg --- Dialog window handle - * wMsg --- Message - * wParam - Message parameter - * lParam - Message parameter - * Output : TRUE if message processed, FALSE otherwise - *------- - */ -INT_PTR CALLBACK ConfigDlgProc(HWND hdlg, UINT wMsg, WPARAM wParam, - LPARAM lParam) { - LPSETUPDLG lpsetupdlg; - ConnInfo *ci; - DWORD cmd; - - switch (wMsg) { - /* Initialize the dialog */ - case WM_INITDIALOG: - lpsetupdlg = (LPSETUPDLG)lParam; - ci = &lpsetupdlg->ci; - - SetWindowLongPtr(hdlg, DWLP_USER, lParam); - CenterDialog(hdlg); /* Center dialog */ - - /* Initialize dialog fields */ - SetDlgStuff(hdlg, ci); - - /* Save drivername */ - if (!(lpsetupdlg->ci.drivername[0])) - STRCPY_FIXED(lpsetupdlg->ci.drivername, lpsetupdlg->lpszDrvr); - - if (lpsetupdlg->fNewDSN || !ci->dsn[0]) - EnableWindow(GetDlgItem(hdlg, IDC_DSNAME), TRUE); - if (lpsetupdlg->fDefault) { - EnableWindow(GetDlgItem(hdlg, IDC_DSNAME), FALSE); - } else - SendDlgItemMessage(hdlg, IDC_DSNAME, EM_LIMITTEXT, - (WPARAM)(MAXDSNAME - 1), 0L); - - SendDlgItemMessage(hdlg, IDC_DESC, EM_LIMITTEXT, - (WPARAM)(MAXDESC - 1), 0L); - - if (!stricmp(ci->authtype, AUTHTYPE_IAM)) { - SendDlgItemMessage(hdlg, IDC_AUTHTYPE, CB_SETCURSEL, 0, - (WPARAM)0); - } else if (!stricmp(ci->authtype, AUTHTYPE_BASIC)) { - SendDlgItemMessage(hdlg, IDC_AUTHTYPE, CB_SETCURSEL, 1, - (WPARAM)0); - } else { // AUTHTYPE_NONE - SendDlgItemMessage(hdlg, IDC_AUTHTYPE, CB_SETCURSEL, 2, - (WPARAM)0); - } - - return TRUE; /* Focus was not set */ - - /* Process buttons */ - case WM_COMMAND: - lpsetupdlg = (LPSETUPDLG)GetWindowLongPtr(hdlg, DWLP_USER); - switch (cmd = GET_WM_COMMAND_ID(wParam, lParam)) { - /* - * Ensure the OK button is enabled only when a data - * source name - */ - /* is entered */ - case IDC_DSNAME: - if (GET_WM_COMMAND_CMD(wParam, lParam) == EN_CHANGE) { - char szItem[MAXDSNAME]; /* Edit control text */ - - /* Enable/disable the OK button */ - EnableWindow(GetDlgItem(hdlg, IDOK), - GetDlgItemText(hdlg, IDC_DSNAME, szItem, - sizeof(szItem))); - return TRUE; - } - break; - - /* Accept results */ - case IDOK: - /* Retrieve dialog values */ - if (!lpsetupdlg->fDefault) - GetDlgItemText(hdlg, IDC_DSNAME, lpsetupdlg->ci.dsn, - sizeof(lpsetupdlg->ci.dsn)); - - /* Get Dialog Values */ - GetDlgStuff(hdlg, &lpsetupdlg->ci); - /* Update ODBC.INI */ - SetDSNAttributes(hdlg, lpsetupdlg, NULL); - - case IDCANCEL: - EndDialog(hdlg, wParam); - return TRUE; - - case IDOK2: // <== TEST butter - { - /* Get Dialog Values */ - GetDlgStuff(hdlg, &lpsetupdlg->ci); - test_connection(lpsetupdlg->hwndParent, &lpsetupdlg->ci, - FALSE); - return TRUE; - break; - } - case ID_ADVANCED_OPTIONS: { - GetDlgStuff(hdlg, &lpsetupdlg->ci); - if (DialogBoxParam( - s_hModule, MAKEINTRESOURCE(DLG_ADVANCED_OPTIONS), - hdlg, advancedOptionsProc, (LPARAM)&lpsetupdlg->ci) > 0) - EndDialog(hdlg, 0); - break; - } - case ID_LOG_OPTIONS: { - if (DialogBoxParam( - s_hModule, MAKEINTRESOURCE(DLG_LOG_OPTIONS), hdlg, - logOptionsProc, (LPARAM)&lpsetupdlg->ci) > 0) - EndDialog(hdlg, 0); - break; - } - case IDC_AUTHTYPE: { - SetAuthenticationVisibility(hdlg, GetCurrentAuthMode(hdlg)); - } - } - break; - case WM_CTLCOLORSTATIC: - if (lParam == (LPARAM)GetDlgItem(hdlg, IDC_NOTICE_USER)) { - HBRUSH hBrush = (HBRUSH)GetStockObject(LTGRAY_BRUSH); - SetTextColor((HDC)wParam, RGB(255, 0, 0)); - return (LRESULT)hBrush; - } - break; - } - - /* Message not processed */ - return FALSE; -} - -#ifdef USE_PROC_ADDRESS -#define SQLALLOCHANDLEFUNC sqlallochandle -#define SQLSETENVATTRFUNC sqlsetenvattr -#define SQLDISCONNECTFUNC sqldisconnect -#define SQLFREEHANDLEFUNC sqlfreehandle -#ifdef UNICODE_SUPPORT -#define SQLGETDIAGRECFUNC sqlgetdiagrecw -#define SQLDRIVERCONNECTFUNC sqldriverconnectw -#define SQLSETCONNECTATTRFUNC sqlsetconnectattrw -#else -#define SQLGETDIAGRECFUNC sqlgetdiagrec -#define SQLDRIVERCONNECTFUNC sqldriverconnect -#define SQLSETCONNECTATTRFUNC sqlsetconnectAttr -#endif /* UNICODE_SUPPORT */ -#else -#define SQLALLOCHANDLEFUNC SQLAllocHandle -#define SQLSETENVATTRFUNC SQLSetEnvAttr -#define SQLDISCONNECTFUNC SQLDisconnect -#define SQLFREEHANDLEFUNC SQLFreeHandle -#ifdef UNICODE_SUPPORT -#define SQLGETDIAGRECFUNC SQLGetDiagRecW -#define SQLDRIVERCONNECTFUNC SQLDriverConnectW -#define SQLSETCONNECTATTRFUNC SQLSetConnectAttrW -#else -#define SQLGETDIAGRECFUNC SQLGetDiagRec -#define SQLDRIVERCONNECTFUNC SQLDriverConnect -#define SQLSETCONNECTATTRFUNC SQLSetConnectAttr -#endif /* UNICODE_SUPPORT */ -#endif /* USE_PROC_ADDRESS */ - -#define MAX_CONNECT_STRING_LEN 2048 -#ifdef UNICODE_SUPPORT -#define MESSAGEBOXFUNC MessageBoxW -#define _T(str) L##str -#define SNTPRINTF _snwprintf -#else -#define MESSAGEBOXFUNC MessageBoxA -#define _T(str) str -#define SNTPRINTF snprintf -#endif /* UNICODE_SUPPORT */ - -void test_connection(HANDLE hwnd, ConnInfo *ci, BOOL withDTC) { - SQLINTEGER errnum; - char out_conn[MAX_CONNECT_STRING_LEN]; - SQLRETURN ret; - SQLHENV env = SQL_NULL_HANDLE; - SQLHDBC conn = SQL_NULL_HANDLE; - SQLSMALLINT str_len; - char dsn_1st; - BOOL connected = FALSE; -#ifdef UNICODE_SUPPORT - SQLWCHAR wout_conn[MAX_CONNECT_STRING_LEN]; - SQLWCHAR szMsg[SQL_MAX_MESSAGE_LENGTH]; - const SQLWCHAR *ermsg = NULL; - SQLWCHAR *conn_str; -#else - SQLCHAR szMsg[SQL_MAX_MESSAGE_LENGTH]; - const SQLCHAR *ermsg = NULL; - SQLCHAR *conn_str; -#endif /* UNICODE_SUPPORT */ - - dsn_1st = ci->dsn[0]; - ci->dsn[0] = '\0'; - makeConnectString(out_conn, ci, sizeof(out_conn)); -#ifdef UNICODE_SUPPORT - MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, out_conn, -1, wout_conn, - sizeof(wout_conn) / sizeof(wout_conn[0])); - conn_str = wout_conn; -#else - conn_str = out_conn; -#endif /* UNICODE_SUPPORT */ - ci->dsn[0] = dsn_1st; - if (!SQL_SUCCEEDED( - ret = SQLALLOCHANDLEFUNC(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env))) { - ermsg = _T("SQLAllocHandle for env error"); - goto cleanup; - } - if (!SQL_SUCCEEDED(ret = SQLSETENVATTRFUNC(env, SQL_ATTR_ODBC_VERSION, - (SQLPOINTER)SQL_OV_ODBC3, 0))) { - SNTPRINTF(szMsg, _countof(szMsg), _T("SQLAllocHandle for env error=%d"), - ret); - goto cleanup; - } - if (!SQL_SUCCEEDED(ret = SQLALLOCHANDLEFUNC(SQL_HANDLE_DBC, env, &conn))) { - SQLGETDIAGRECFUNC(SQL_HANDLE_ENV, env, 1, NULL, &errnum, szMsg, - _countof(szMsg), &str_len); - ermsg = szMsg; - goto cleanup; - } - if (!SQL_SUCCEEDED(ret = SQLDRIVERCONNECTFUNC(conn, hwnd, conn_str, SQL_NTS, - NULL, MAX_CONNECT_STRING_LEN, - &str_len, - SQL_DRIVER_NOPROMPT))) { - SQLGETDIAGRECFUNC(SQL_HANDLE_DBC, conn, 1, NULL, &errnum, szMsg, - _countof(szMsg), &str_len); - ermsg = szMsg; - goto cleanup; - } - connected = TRUE; - ermsg = _T("Connection successful"); - - if (withDTC) { -#ifdef _HANDLE_ENLIST_IN_DTC_ - HRESULT res; - void *pObj = NULL; - - pObj = CALL_GetTransactionObject(&res); - if (NULL != pObj) { - SQLRETURN ret = SQLSETCONNECTATTRFUNC(conn, SQL_ATTR_ENLIST_IN_DTC, - (SQLPOINTER)pObj, 0); - if (SQL_SUCCEEDED(ret)) { - SQLSETCONNECTATTRFUNC(conn, SQL_ATTR_ENLIST_IN_DTC, - SQL_DTC_DONE, 0); - SNTPRINTF(szMsg, _countof(szMsg), - _T("%s\nenlistment was successful\n"), ermsg); - ermsg = szMsg; - } else { - int strl; - - SNTPRINTF(szMsg, _countof(szMsg), _T("%s\nMSDTC error:"), - ermsg); - for (strl = 0; strl < SQL_MAX_MESSAGE_LENGTH; strl++) { - if (!szMsg[strl]) - break; - } - SQLGETDIAGRECFUNC( - SQL_HANDLE_DBC, conn, 1, NULL, &errnum, szMsg + strl, - (SQLSMALLINT)(_countof(szMsg) - strl), &str_len); - ermsg = szMsg; - } - CALL_ReleaseTransactionObject(pObj); - } else if (FAILED(res)) { - SNTPRINTF(szMsg, _countof(szMsg), - _T("%s\nDistibuted Transaction enlistment error %x"), - ermsg, res); - ermsg = szMsg; - } -#else /* _HANDLE_ENLIST_IN_DTC_ */ - SNTPRINTF(szMsg, _countof(szMsg), - _T("%s\nDistibuted Transaction enlistment not supported by ") - _T("this driver"), - ermsg); - ermsg = szMsg; -#endif - } - -cleanup: - if (NULL != ermsg && NULL != hwnd) { - MESSAGEBOXFUNC(hwnd, ermsg, _T("Connection Test"), - MB_ICONEXCLAMATION | MB_OK); - } - -#undef _T - - if (NULL != conn) { - if (connected) - SQLDISCONNECTFUNC(conn); - SQLFREEHANDLEFUNC(SQL_HANDLE_DBC, conn); - } - if (env) - SQLFREEHANDLEFUNC(SQL_HANDLE_ENV, env); - - return; -} - -/*------- - * ParseAttributes - * - * Description: Parse attribute string moving values into the aAttr array - * Input : lpszAttributes - Pointer to attribute string - * Output : None (global aAttr normally updated) - *------- - */ -static void ParseAttributes(LPCSTR lpszAttributes, LPSETUPDLG lpsetupdlg) { - LPCSTR lpsz; - LPCSTR lpszStart; - char aszKey[MAXKEYLEN]; - size_t cbKey; - char value[MAXESPATH]; - - for (lpsz = lpszAttributes; *lpsz; lpsz++) { - /* - * Extract key name (e.g., DSN), it must be terminated by an - * equals - */ - lpszStart = lpsz; - for (;; lpsz++) { - if (!*lpsz) - return; /* No key was found */ - else if (*lpsz == '=') - break; /* Valid key found */ - } - /* Determine the key's index in the key table (-1 if not found) */ - cbKey = lpsz - lpszStart; - if (cbKey < sizeof(aszKey)) { - memcpy(aszKey, lpszStart, cbKey); - aszKey[cbKey] = '\0'; - } - - /* Locate end of key value */ - lpszStart = ++lpsz; - for (; *lpsz; lpsz++) - ; - - /* lpsetupdlg->aAttr[iElement].fSupplied = TRUE; */ - memcpy(value, lpszStart, MIN(lpsz - lpszStart + 1, MAXESPATH)); - - MYLOG(OPENSEARCH_DEBUG, "aszKey='%s', value='%s'\n", aszKey, value); - - /* Copy the appropriate value to the conninfo */ - copyConnAttributes(&lpsetupdlg->ci, aszKey, value); - } - return; -} - -/*-------- - * SetDSNAttributes - * - * Description: Write data source attributes to ODBC.INI - * Input : hwnd - Parent window handle (plus globals) - * Output : TRUE if successful, FALSE otherwise - *-------- - */ -static BOOL SetDSNAttributes(HWND hwndParent, LPSETUPDLG lpsetupdlg, - DWORD *errcode) { - LPCSTR lpszDSN; /* Pointer to data source name */ - - lpszDSN = lpsetupdlg->ci.dsn; - - if (errcode) - *errcode = 0; - /* Validate arguments */ - if (lpsetupdlg->fNewDSN && !*lpsetupdlg->ci.dsn) - return FALSE; - - /* Write the data source name */ - if (!SQLWriteDSNToIni(lpszDSN, lpsetupdlg->lpszDrvr)) { - RETCODE ret = SQL_ERROR; - DWORD err = (DWORD)SQL_ERROR; - char szMsg[SQL_MAX_MESSAGE_LENGTH]; - - ret = SQLInstallerError(1, &err, szMsg, sizeof(szMsg), NULL); - if (hwndParent) { - char szBuf[MAXESPATH]; - - if (SQL_SUCCESS != ret) { - LoadString(s_hModule, IDS_BADDSN, szBuf, sizeof(szBuf)); - SPRINTF_FIXED(szMsg, szBuf, lpszDSN); - } - LoadString(s_hModule, IDS_MSGTITLE, szBuf, sizeof(szBuf)); - MessageBox(hwndParent, szMsg, szBuf, MB_ICONEXCLAMATION | MB_OK); - } - if (errcode) - *errcode = err; - return FALSE; - } - - /* Update ODBC.INI */ - write_Ci_Drivers(ODBC_INI, lpsetupdlg->ci.dsn, &(lpsetupdlg->ci.drivers)); - writeDSNinfo(&lpsetupdlg->ci); - - /* If the data source name has changed, remove the old name */ - if (lstrcmpi(lpsetupdlg->szDSN, lpsetupdlg->ci.dsn)) - SQLRemoveDSNFromIni(lpsetupdlg->szDSN); - return TRUE; -} - -/*-------- - * SetDriverAttributes - * - * Description: Write driver information attributes to ODBCINST.INI - * Input : lpszDriver - The driver name - * Output : TRUE if successful, FALSE otherwise - *-------- - */ -static BOOL SetDriverAttributes(LPCSTR lpszDriver, DWORD *pErrorCode, - LPSTR message, WORD cbMessage) { - BOOL ret = FALSE; - char ver_string[8]; - - /* Validate arguments */ - if (!lpszDriver || !lpszDriver[0]) { - if (pErrorCode) - *pErrorCode = ODBC_ERROR_INVALID_NAME; - strncpy_null(message, "Driver name not specified", cbMessage); - return FALSE; - } - - if (!SQLWritePrivateProfileString(lpszDriver, "APILevel", "1", - ODBCINST_INI)) - goto cleanup; - if (!SQLWritePrivateProfileString(lpszDriver, "ConnectFunctions", "YYN", - ODBCINST_INI)) - goto cleanup; - SPRINTF_FIXED(ver_string, "%02x.%02x", ODBCVER / 256, ODBCVER % 256); - if (!SQLWritePrivateProfileString(lpszDriver, "DriverODBCVer", ver_string, - ODBCINST_INI)) - goto cleanup; - if (!SQLWritePrivateProfileString(lpszDriver, "FileUsage", "0", - ODBCINST_INI)) - goto cleanup; - if (!SQLWritePrivateProfileString(lpszDriver, "SQLLevel", "1", - ODBCINST_INI)) - goto cleanup; - - ret = TRUE; -cleanup: - if (!ret) { - if (pErrorCode) - *pErrorCode = ODBC_ERROR_REQUEST_FAILED; - strncpy_null(message, "Failed to WritePrivateProfileString", cbMessage); - } - return ret; -} - -BOOL INTFUNC ChangeDriverName(HWND hwndParent, LPSETUPDLG lpsetupdlg, - LPCSTR driver_name) { - DWORD err = 0; - ConnInfo *ci = &lpsetupdlg->ci; - - if (!ci->dsn[0]) { - err = IDS_BADDSN; - } else if (!driver_name || strnicmp(driver_name, "opensearch", 10)) { - err = IDS_BADDSN; - } else { - LPCSTR lpszDrvr = lpsetupdlg->lpszDrvr; - - lpsetupdlg->lpszDrvr = driver_name; - if (!SetDSNAttributes(hwndParent, lpsetupdlg, &err)) { - if (!err) - err = IDS_BADDSN; - lpsetupdlg->lpszDrvr = lpszDrvr; - } - } - return (err == 0); -} - -#endif /* WIN32 */ diff --git a/sql-odbc/src/sqlodbc/statement.c b/sql-odbc/src/sqlodbc/statement.c deleted file mode 100644 index ea4ece9d98..0000000000 --- a/sql-odbc/src/sqlodbc/statement.c +++ /dev/null @@ -1,1465 +0,0 @@ -// clang-format off -#include "statement.h" -#include "misc.h" // strncpy_null - -#include "bind.h" -#include "opensearch_connection.h" -#include "multibyte.h" -#include "qresult.h" -#include "convert.h" -#include "environ.h" -#include "loadlib.h" - -#include -#include -#include - -#include "opensearch_apifunc.h" -#include "opensearch_helper.h" -#include "opensearch_statement.h" -// clang-format on - -/* Map sql commands to statement types */ -static const struct { - int type; - char *s; -} Statement_Type[] = - - {{STMT_TYPE_SELECT, "SELECT"}, - {STMT_TYPE_INSERT, "INSERT"}, - {STMT_TYPE_UPDATE, "UPDATE"}, - {STMT_TYPE_DELETE, "DELETE"}, - {STMT_TYPE_PROCCALL, "{"}, - {STMT_TYPE_SET, "SET"}, - {STMT_TYPE_RESET, "RESET"}, - {STMT_TYPE_CREATE, "CREATE"}, - {STMT_TYPE_DECLARE, "DECLARE"}, - {STMT_TYPE_FETCH, "FETCH"}, - {STMT_TYPE_MOVE, "MOVE"}, - {STMT_TYPE_CLOSE, "CLOSE"}, - {STMT_TYPE_PREPARE, "PREPARE"}, - {STMT_TYPE_EXECUTE, "EXECUTE"}, - {STMT_TYPE_DEALLOCATE, "DEALLOCATE"}, - {STMT_TYPE_DROP, "DROP"}, - {STMT_TYPE_START, "BEGIN"}, - {STMT_TYPE_START, "START"}, - {STMT_TYPE_TRANSACTION, "SAVEPOINT"}, - {STMT_TYPE_TRANSACTION, "RELEASE"}, - {STMT_TYPE_TRANSACTION, "COMMIT"}, - {STMT_TYPE_TRANSACTION, "END"}, - {STMT_TYPE_TRANSACTION, "ROLLBACK"}, - {STMT_TYPE_TRANSACTION, "ABORT"}, - {STMT_TYPE_LOCK, "LOCK"}, - {STMT_TYPE_ALTER, "ALTER"}, - {STMT_TYPE_GRANT, "GRANT"}, - {STMT_TYPE_REVOKE, "REVOKE"}, - {STMT_TYPE_COPY, "COPY"}, - {STMT_TYPE_ANALYZE, "ANALYZE"}, - {STMT_TYPE_NOTIFY, "NOTIFY"}, - {STMT_TYPE_EXPLAIN, "EXPLAIN"} - - /* - * Special-commands that cannot be run in a transaction block. This isn't - * as granular as it could be. VACUUM can never be run in a transaction - * block, but some variants of REINDEX and CLUSTER can be. CHECKPOINT - * doesn't throw an error if you do, but it cannot be rolled back so - * there's no point in beginning a new transaction for it. - */ - , - {STMT_TYPE_SPECIAL, "VACUUM"}, - {STMT_TYPE_SPECIAL, "REINDEX"}, - {STMT_TYPE_SPECIAL, "CLUSTER"}, - {STMT_TYPE_SPECIAL, "CHECKPOINT"} - - , - {STMT_TYPE_WITH, "WITH"}, - {0, NULL}}; - -static void SC_set_error_if_not_set(StatementClass *self, int errornumber, - const char *errmsg, const char *func); - -RETCODE SQL_API OPENSEARCHAPI_AllocStmt(HDBC hdbc, HSTMT *phstmt, UDWORD flag) { - CSTR func = "OPENSEARCHAPI_AllocStmt"; - ConnectionClass *conn = (ConnectionClass *)hdbc; - StatementClass *stmt; - ARDFields *ardopts; - - MYLOG(OPENSEARCH_TRACE, "entering...\n"); - - if (!conn) { - CC_log_error(func, "", NULL); - return SQL_INVALID_HANDLE; - } - - stmt = SC_Constructor(conn); - - MYLOG(OPENSEARCH_DEBUG, "**** : hdbc = %p, stmt = %p\n", hdbc, stmt); - - if (!stmt) { - CC_set_error(conn, CONN_STMT_ALLOC_ERROR, - "No more memory to allocate a further SQL-statement", - func); - *phstmt = SQL_NULL_HSTMT; - return SQL_ERROR; - } - - if (!CC_add_statement(conn, stmt)) { - CC_set_error(conn, CONN_STMT_ALLOC_ERROR, - "Maximum number of statements exceeded.", func); - SC_Destructor(stmt); - *phstmt = SQL_NULL_HSTMT; - return SQL_ERROR; - } - - *phstmt = (HSTMT)stmt; - - stmt->iflag = flag; - /* Copy default statement options based from Connection options */ - if (0 != (PODBC_INHERIT_CONNECT_OPTIONS & flag)) { - stmt->options = stmt->options_orig = conn->stmtOptions; - stmt->ardi.ardf = conn->ardOptions; - } else { - InitializeStatementOptions(&stmt->options_orig); - stmt->options = stmt->options_orig; - InitializeARDFields(&stmt->ardi.ardf); - } - ardopts = SC_get_ARDF(stmt); - ARD_AllocBookmark(ardopts); - - /* Save the handle for later */ - stmt->phstmt = phstmt; - - return SQL_SUCCESS; -} - -RETCODE SQL_API OPENSEARCHAPI_FreeStmt(HSTMT hstmt, SQLUSMALLINT fOption) { - CSTR func = "OPENSEARCHAPI_FreeStmt"; - StatementClass *stmt = (StatementClass *)hstmt; - - MYLOG(OPENSEARCH_TRACE, "entering...hstmt=%p, fOption=%hi\n", hstmt, fOption); - - if (!stmt) { - SC_log_error(func, "", NULL); - return SQL_INVALID_HANDLE; - } - SC_clear_error(stmt); - - if (fOption == SQL_DROP) { - ConnectionClass *conn = stmt->hdbc; - - OpenSearchStopRetrieval(conn->opensearchconn); - - /* Remove the statement from the connection's statement list */ - if (conn) { - QResultClass *res; - - if (STMT_EXECUTING == stmt->status) { - SC_set_error(stmt, STMT_SEQUENCE_ERROR, - "Statement is currently executing a transaction.", - func); - return SQL_ERROR; /* stmt may be executing a transaction */ - } - if (conn->unnamed_prepared_stmt == stmt) - conn->unnamed_prepared_stmt = NULL; - - res = SC_get_Result(stmt); - QR_Destructor(res); - SC_init_Result(stmt); - if (!CC_remove_statement(conn, stmt)) { - SC_set_error(stmt, STMT_SEQUENCE_ERROR, - "Statement is currently executing a transaction.", - func); - return SQL_ERROR; /* stmt may be executing a - * transaction */ - } - } - - if (stmt->execute_delegate) { - OPENSEARCHAPI_FreeStmt(stmt->execute_delegate, SQL_DROP); - stmt->execute_delegate = NULL; - } - if (stmt->execute_parent) - stmt->execute_parent->execute_delegate = NULL; - /* Destroy the statement and free any results, cursors, etc. */ - SC_Destructor(stmt); - } else if (fOption == SQL_UNBIND) - SC_unbind_cols(stmt); - else if (fOption == SQL_CLOSE) { - OpenSearchStopRetrieval(stmt->hdbc->opensearchconn); - - /* - * this should discard all the results, but leave the statement - * itself in place (it can be executed again) - */ - stmt->transition_status = STMT_TRANSITION_ALLOCATED; - if (stmt->execute_delegate) { - OPENSEARCHAPI_FreeStmt(stmt->execute_delegate, SQL_DROP); - stmt->execute_delegate = NULL; - } - if (!SC_recycle_statement(stmt)) { - return SQL_ERROR; - } - SC_set_Curres(stmt, NULL); - } else if (fOption == SQL_RESET_PARAMS) - ; - else { - SC_set_error(stmt, STMT_OPTION_OUT_OF_RANGE_ERROR, - "Invalid option passed to OPENSEARCHAPI_FreeStmt.", func); - return SQL_ERROR; - } - - return SQL_SUCCESS; -} - -/* - * StatementClass implementation - */ -void InitializeStatementOptions(StatementOptions *opt) { - memset(opt, 0, sizeof(StatementOptions)); - opt->scroll_concurrency = SQL_CONCUR_READ_ONLY; - opt->cursor_type = SQL_CURSOR_FORWARD_ONLY; - opt->retrieve_data = SQL_RD_ON; - opt->use_bookmarks = SQL_UB_OFF; - opt->metadata_id = SQL_FALSE; -} - -static void SC_clear_parse_status(StatementClass *self, ConnectionClass *conn) { - UNUSED(self, conn); - self->parse_status = STMT_PARSE_NONE; -} - -static void SC_init_discard_output_params(StatementClass *self) { - ConnectionClass *conn = SC_get_conn(self); - - if (!conn) - return; - self->discard_output_params = 0; -} - -static void SC_init_parse_method(StatementClass *self) { - ConnectionClass *conn = SC_get_conn(self); - - self->parse_method = 0; - if (!conn) - return; - if (0 == (PODBC_EXTERNAL_STATEMENT & self->iflag)) - return; - if (self->catalog_result) - return; -} - -StatementClass *SC_Constructor(ConnectionClass *conn) { - StatementClass *rv; - - rv = (StatementClass *)malloc(sizeof(StatementClass)); - if (rv) { - rv->hdbc = conn; - rv->phstmt = NULL; - rv->result = NULL; - rv->curres = NULL; - rv->catalog_result = FALSE; - rv->prepare = NON_PREPARE_STATEMENT; - rv->prepared = NOT_PREPARED; - rv->status = STMT_ALLOCATED; - rv->external = FALSE; - rv->iflag = 0; - rv->plan_name = NULL; - rv->transition_status = STMT_TRANSITION_UNALLOCATED; - rv->multi_statement = -1; /* unknown */ - rv->num_params = -1; /* unknown */ - rv->processed_statements = NULL; - - rv->__error_message = NULL; - rv->__error_number = 0; - rv->opensearch_error = NULL; - - rv->statement = NULL; - rv->load_statement = NULL; - rv->statement_type = STMT_TYPE_UNKNOWN; - - rv->currTuple = -1; - rv->rowset_start = 0; - SC_set_rowset_start(rv, -1, FALSE); - rv->current_col = -1; - rv->bind_row = 0; - rv->from_pos = rv->load_from_pos = rv->where_pos = -1; - rv->last_fetch_count = rv->last_fetch_count_include_ommitted = 0; - rv->save_rowset_size = -1; - - rv->data_at_exec = -1; - rv->put_data = FALSE; - rv->ref_CC_error = FALSE; - rv->join_info = 0; - SC_init_parse_method(rv); - - rv->lobj_fd = -1; - INIT_NAME(rv->cursor_name); - - /* Parse Stuff */ - rv->ti = NULL; - rv->ntab = 0; - rv->num_key_fields = -1; /* unknown */ - SC_clear_parse_status(rv, conn); - rv->proc_return = -1; - SC_init_discard_output_params(rv); - rv->cancel_info = 0; - - /* Clear Statement Options -- defaults will be set in AllocStmt */ - memset(&rv->options, 0, sizeof(StatementOptions)); - InitializeEmbeddedDescriptor((DescriptorClass *)&(rv->ardi), rv, - SQL_ATTR_APP_ROW_DESC); - InitializeEmbeddedDescriptor((DescriptorClass *)&(rv->apdi), rv, - SQL_ATTR_APP_PARAM_DESC); - InitializeEmbeddedDescriptor((DescriptorClass *)&(rv->irdi), rv, - SQL_ATTR_IMP_ROW_DESC); - InitializeEmbeddedDescriptor((DescriptorClass *)&(rv->ipdi), rv, - SQL_ATTR_IMP_PARAM_DESC); - - rv->miscinfo = 0; - rv->execinfo = 0; - rv->rb_or_tc = 0; - SC_reset_updatable(rv); - rv->diag_row_count = 0; - rv->stmt_time = 0; - rv->execute_delegate = NULL; - rv->execute_parent = NULL; - rv->allocated_callbacks = 0; - rv->num_callbacks = 0; - rv->callbacks = NULL; - GetDataInfoInitialize(SC_get_GDTI(rv)); - PutDataInfoInitialize(SC_get_PDTI(rv)); - rv->lock_CC_for_rb = FALSE; - INIT_STMT_CS(rv); - } - return rv; -} - -char SC_Destructor(StatementClass *self) { - CSTR func = "SC_Destructor"; - QResultClass *res = SC_get_Result(self); - - MYLOG(OPENSEARCH_TRACE, "entering self=%p, self->result=%p, self->hdbc=%p\n", self, - res, self->hdbc); - SC_clear_error(self); - if (STMT_EXECUTING == self->status) { - SC_set_error(self, STMT_SEQUENCE_ERROR, - "Statement is currently executing a transaction.", func); - return FALSE; - } - - if (res) { - if (!self->hdbc) - res->conn = NULL; /* prevent any dbase activity */ - - QR_Destructor(res); - } - - SC_initialize_stmts(self, TRUE); - - /* Free the parsed table information */ - SC_initialize_cols_info(self, FALSE, TRUE); - - NULL_THE_NAME(self->cursor_name); - /* Free the parsed field information */ - DC_Destructor((DescriptorClass *)SC_get_ARDi(self)); - DC_Destructor((DescriptorClass *)SC_get_APDi(self)); - DC_Destructor((DescriptorClass *)SC_get_IRDi(self)); - DC_Destructor((DescriptorClass *)SC_get_IPDi(self)); - GDATA_unbind_cols(SC_get_GDTI(self), TRUE); - PDATA_free_params(SC_get_PDTI(self), STMT_FREE_PARAMS_ALL); - - if (self->__error_message) - free(self->__error_message); - if (self->opensearch_error) - ER_Destructor(self->opensearch_error); - cancelNeedDataState(self); - if (self->callbacks) - free(self->callbacks); - - DELETE_STMT_CS(self); - free(self); - - MYLOG(OPENSEARCH_TRACE, "leaving\n"); - - return TRUE; -} - -void SC_init_Result(StatementClass *self) { - self->result = self->curres = NULL; - MYLOG(OPENSEARCH_TRACE, "leaving(%p)\n", self); -} - -void SC_set_Result(StatementClass *self, QResultClass *res) { - if (res != self->result) { - MYLOG(OPENSEARCH_DEBUG, "(%p, %p)\n", self, res); - QR_Destructor(self->result); - self->result = self->curres = res; - } -} - -int statement_type(const char *statement) { - int i; - - /* ignore leading whitespace in query string */ - while (*statement && (isspace((UCHAR)*statement) || *statement == '(')) - statement++; - - for (i = 0; Statement_Type[i].s; i++) - if (!strnicmp(statement, Statement_Type[i].s, - strlen(Statement_Type[i].s))) - return Statement_Type[i].type; - - return STMT_TYPE_OTHER; -} - -void SC_set_planname(StatementClass *stmt, const char *plan_name) { - if (stmt->plan_name) - free(stmt->plan_name); - if (plan_name && plan_name[0]) - stmt->plan_name = strdup(plan_name); - else - stmt->plan_name = NULL; -} - -void SC_set_rowset_start(StatementClass *stmt, SQLLEN start, BOOL valid_base) { - QResultClass *res = SC_get_Curres(stmt); - SQLLEN incr = start - stmt->rowset_start; - - MYLOG(OPENSEARCH_DEBUG, "%p->SC_set_rowstart " FORMAT_LEN "->" FORMAT_LEN "(%s) ", - stmt, stmt->rowset_start, start, valid_base ? "valid" : "unknown"); - if (res != NULL) { - BOOL valid = QR_has_valid_base(res); - MYPRINTF(OPENSEARCH_DEBUG, ":(%p)QR is %s", res, - QR_has_valid_base(res) ? "valid" : "unknown"); - - if (valid) { - if (valid_base) - QR_inc_rowstart_in_cache(res, incr); - else - QR_set_no_valid_base(res); - } else if (valid_base) { - QR_set_has_valid_base(res); - if (start < 0) - QR_set_rowstart_in_cache(res, -1); - else - QR_set_rowstart_in_cache(res, start); - } - if (!QR_get_cursor(res)) - res->key_base = start; - MYPRINTF(OPENSEARCH_DEBUG, ":(%p)QR result=" FORMAT_LEN "(%s)", res, - QR_get_rowstart_in_cache(res), - QR_has_valid_base(res) ? "valid" : "unknown"); - } - stmt->rowset_start = start; - MYPRINTF(OPENSEARCH_DEBUG, ":stmt result=" FORMAT_LEN "\n", stmt->rowset_start); -} -void SC_inc_rowset_start(StatementClass *stmt, SQLLEN inc) { - SQLLEN start = stmt->rowset_start + inc; - - SC_set_rowset_start(stmt, start, TRUE); -} -int SC_set_current_col(StatementClass *stmt, int col) { - if (col == stmt->current_col) - return col; - if (col >= 0) - reset_a_getdata_info(SC_get_GDTI(stmt), col + 1); - stmt->current_col = (short)col; - - return stmt->current_col; -} - -void SC_set_prepared(StatementClass *stmt, int prepared) { - if (NOT_PREPARED == prepared) - SC_set_planname(stmt, NULL); - - // po_ind_t -> char - stmt->prepared = (po_ind_t)prepared; -} - -/* - * Initialize stmt_with_params and load_statement member pointer - * deallocating corresponding prepared plan. Also initialize - * statement member pointer if specified. - */ -RETCODE -SC_initialize_stmts(StatementClass *self, BOOL initializeOriginal) { - ProcessedStmt *pstmt; - ProcessedStmt *next_pstmt; - - if (self->lock_CC_for_rb) { - LEAVE_CONN_CS(SC_get_conn(self)); - self->lock_CC_for_rb = FALSE; - } - if (initializeOriginal) { - if (self->statement) { - free(self->statement); - self->statement = NULL; - } - - pstmt = self->processed_statements; - while (pstmt) { - if (pstmt->query) - free(pstmt->query); - next_pstmt = pstmt->next; - free(pstmt); - pstmt = next_pstmt; - } - self->processed_statements = NULL; - - self->prepare = NON_PREPARE_STATEMENT; - SC_set_prepared(self, NOT_PREPARED); - self->statement_type = STMT_TYPE_UNKNOWN; /* unknown */ - self->multi_statement = -1; /* unknown */ - self->num_params = -1; /* unknown */ - self->proc_return = -1; /* unknown */ - self->join_info = 0; - SC_init_parse_method(self); - SC_init_discard_output_params(self); - } - if (self->load_statement) { - free(self->load_statement); - self->load_statement = NULL; - } - - return 0; -} - -BOOL SC_opencheck(StatementClass *self, const char *func) { - QResultClass *res; - - if (!self) - return FALSE; - if (self->status == STMT_EXECUTING) { - SC_set_error(self, STMT_SEQUENCE_ERROR, - "Statement is currently executing a transaction.", func); - return TRUE; - } - /* - * We can dispose the result of Describe-only any time. - */ - if (self->prepare && self->status == STMT_DESCRIBED) { - MYLOG(OPENSEARCH_DEBUG, "self->prepare && self->status == STMT_DESCRIBED\n"); - return FALSE; - } - if (res = SC_get_Curres(self), NULL != res) { - if (QR_command_maybe_successful(res) && res->backend_tuples) { - SC_set_error(self, STMT_SEQUENCE_ERROR, "The cursor is open.", - func); - return TRUE; - } - } - - return FALSE; -} - -RETCODE -SC_initialize_and_recycle(StatementClass *self) { - SC_initialize_stmts(self, TRUE); - if (!SC_recycle_statement(self)) - return SQL_ERROR; - - return SQL_SUCCESS; -} - -void SC_reset_result_for_rerun(StatementClass *self) { - QResultClass *res; - ColumnInfoClass *flds; - - if (!self) - return; - if (res = SC_get_Result(self), NULL == res) - return; - flds = QR_get_fields(res); - if (NULL == flds || 0 == CI_get_num_fields(flds)) - SC_set_Result(self, NULL); - else { - QR_reset_for_re_execute(res); - SC_set_Curres(self, NULL); - } -} - -/* - * Called from SQLPrepare if STMT_PREMATURE, or - * from SQLExecute if STMT_FINISHED, or - * from SQLFreeStmt(SQL_CLOSE) - */ -char SC_recycle_statement(StatementClass *self) { - CSTR func = "SC_recycle_statement"; - ConnectionClass *conn; - - MYLOG(OPENSEARCH_TRACE, "entering self=%p\n", self); - - SC_clear_error(self); - /* This would not happen */ - if (self->status == STMT_EXECUTING) { - SC_set_error(self, STMT_SEQUENCE_ERROR, - "Statement is currently executing a transaction.", func); - return FALSE; - } - - if (SC_get_conn(self)->unnamed_prepared_stmt == self) - SC_get_conn(self)->unnamed_prepared_stmt = NULL; - - conn = SC_get_conn(self); - switch (self->status) { - case STMT_ALLOCATED: - /* this statement does not need to be recycled */ - return TRUE; - - case STMT_READY: - break; - - case STMT_DESCRIBED: - break; - - case STMT_FINISHED: - break; - - default: - SC_set_error(self, STMT_INTERNAL_ERROR, - "An internal error occured while recycling statements", - func); - return FALSE; - } - - switch (self->prepared) { - case NOT_PREPARED: - /* Free the parsed table/field information */ - SC_initialize_cols_info(self, TRUE, TRUE); - - MYLOG(OPENSEARCH_DEBUG, "SC_clear_parse_status\n"); - SC_clear_parse_status(self, conn); - break; - } - - /* Free any cursors */ - if (SC_get_Result(self)) - SC_set_Result(self, NULL); - self->miscinfo = 0; - self->execinfo = 0; - /* self->rbonerr = 0; Never clear the bits here */ - - /* - * Reset only parameters that have anything to do with results - */ - self->status = STMT_READY; - self->catalog_result = FALSE; /* not very important */ - - self->currTuple = -1; - SC_set_rowset_start(self, -1, FALSE); - SC_set_current_col(self, -1); - self->bind_row = 0; - MYLOG(OPENSEARCH_DEBUG, "statement=%p ommitted=0\n", self); - self->last_fetch_count = self->last_fetch_count_include_ommitted = 0; - - self->__error_message = NULL; - self->__error_number = 0; - - self->lobj_fd = -1; - - SC_initialize_stmts(self, FALSE); - cancelNeedDataState(self); - self->cancel_info = 0; - /* - * reset the current attr setting to the original one. - */ - self->options.scroll_concurrency = self->options_orig.scroll_concurrency; - self->options.cursor_type = self->options_orig.cursor_type; - self->options.keyset_size = self->options_orig.keyset_size; - self->options.maxLength = self->options_orig.maxLength; - self->options.maxRows = self->options_orig.maxRows; - - return TRUE; -} - -/* This is only called from SQLFreeStmt(SQL_UNBIND) */ -char SC_unbind_cols(StatementClass *self) { - ARDFields *opts = SC_get_ARDF(self); - GetDataInfo *gdata = SC_get_GDTI(self); - BindInfoClass *bookmark; - - ARD_unbind_cols(opts, FALSE); - GDATA_unbind_cols(gdata, FALSE); - if (bookmark = opts->bookmark, bookmark != NULL) { - bookmark->buffer = NULL; - bookmark->used = NULL; - } - - return 1; -} - -void SC_clear_error(StatementClass *self) { - QResultClass *res; - - self->__error_number = 0; - if (self->__error_message) { - free(self->__error_message); - self->__error_message = NULL; - } - if (self->opensearch_error) { - ER_Destructor(self->opensearch_error); - self->opensearch_error = NULL; - } - self->diag_row_count = 0; - if (res = SC_get_Curres(self), res) { - QR_set_message(res, NULL); - QR_set_notice(res, NULL); - res->sqlstate[0] = '\0'; - } - self->stmt_time = 0; - memset(&self->localtime, 0, sizeof(self->localtime)); - self->localtime.tm_sec = -1; - SC_unref_CC_error(self); -} - -/* - * This function creates an error info which is the concatenation - * of the result, statement, connection, and socket messages. - */ - -/* Map sql commands to statement types */ -static const struct { - int number; - const char ver3str[6]; - const char ver2str[6]; -} Statement_sqlstate[] = - - {{STMT_ERROR_IN_ROW, "01S01", "01S01"}, - {STMT_OPTION_VALUE_CHANGED, "01S02", "01S02"}, - {STMT_ROW_VERSION_CHANGED, "01001", "01001"}, /* data changed */ - {STMT_POS_BEFORE_RECORDSET, "01S06", "01S06"}, - {STMT_TRUNCATED, "01004", "01004"}, /* data truncated */ - {STMT_INFO_ONLY, "00000", - "00000"}, /* just an information that is returned, no error */ - - {STMT_OK, "00000", "00000"}, /* OK */ - {STMT_EXEC_ERROR, "HY000", "S1000"}, /* also a general error */ - {STMT_STATUS_ERROR, "HY010", "S1010"}, - {STMT_SEQUENCE_ERROR, "HY010", "S1010"}, /* Function sequence error */ - {STMT_NO_MEMORY_ERROR, "HY001", "S1001"}, /* memory allocation failure */ - {STMT_COLNUM_ERROR, "07009", "S1002"}, /* invalid column number */ - {STMT_NO_STMTSTRING, "HY001", - "S1001"}, /* having no stmtstring is also a malloc problem */ - {STMT_ERROR_TAKEN_FROM_BACKEND, "HY000", "S1000"}, /* general error */ - {STMT_INTERNAL_ERROR, "HY000", "S1000"}, /* general error */ - {STMT_STILL_EXECUTING, "HY010", "S1010"}, - {STMT_NOT_IMPLEMENTED_ERROR, "HYC00", "S1C00"}, /* == 'driver not - * capable' */ - {STMT_BAD_PARAMETER_NUMBER_ERROR, "07009", "S1093"}, - {STMT_OPTION_OUT_OF_RANGE_ERROR, "HY092", "S1092"}, - {STMT_INVALID_COLUMN_NUMBER_ERROR, "07009", "S1002"}, - {STMT_RESTRICTED_DATA_TYPE_ERROR, "07006", "07006"}, - {STMT_INVALID_CURSOR_STATE_ERROR, "07005", "24000"}, - {STMT_CREATE_TABLE_ERROR, "42S01", "S0001"}, /* table already exists */ - {STMT_QUERY_SYNTAX_ERROR, "42000", "42000"}, /* query syntax error */ - {STMT_NO_CURSOR_NAME, "S1015", "S1015"}, - {STMT_INVALID_CURSOR_NAME, "34000", "34000"}, - {STMT_INVALID_ARGUMENT_NO, "HY024", "S1009"}, /* invalid argument value */ - {STMT_ROW_OUT_OF_RANGE, "HY107", "S1107"}, - {STMT_OPERATION_CANCELLED, "HY008", "S1008"}, - {STMT_INVALID_CURSOR_POSITION, "HY109", "S1109"}, - {STMT_VALUE_OUT_OF_RANGE, "HY019", "22003"}, - {STMT_OPERATION_INVALID, "HY011", "S1011"}, - {STMT_PROGRAM_TYPE_OUT_OF_RANGE, "?????", "?????"}, - {STMT_BAD_ERROR, "08S01", "08S01"}, /* communication link failure */ - {STMT_INVALID_OPTION_IDENTIFIER, "HY092", "HY092"}, - {STMT_RETURN_NULL_WITHOUT_INDICATOR, "22002", "22002"}, - {STMT_INVALID_DESCRIPTOR_IDENTIFIER, "HY091", "HY091"}, - {STMT_OPTION_NOT_FOR_THE_DRIVER, "HYC00", "HYC00"}, - {STMT_FETCH_OUT_OF_RANGE, "HY106", "S1106"}, - {STMT_COUNT_FIELD_INCORRECT, "07002", "07002"}, - {STMT_INVALID_NULL_ARG, "HY009", "S1009"}, - {STMT_NO_RESPONSE, "08S01", "08S01"}, - {STMT_COMMUNICATION_ERROR, "08S01", "08S01"}}; - -static OpenSearch_ErrorInfo *SC_create_errorinfo(const StatementClass *self, OpenSearch_ErrorInfo *opensearch_error_fail_safe) { - QResultClass *res = SC_get_Curres(self); - ConnectionClass *conn = SC_get_conn(self); - Int4 errornum; - size_t pos; - BOOL resmsg = FALSE, detailmsg = FALSE, msgend = FALSE; - BOOL looponce, loopend; - char msg[4096], *wmsg; - char *ermsg = NULL, *sqlstate = NULL; - OpenSearch_ErrorInfo *opensearch_error; - - if (self->opensearch_error) - return self->opensearch_error; - errornum = self->__error_number; - if (errornum == 0) - return NULL; - - looponce = (SC_get_Result(self) != res); - msg[0] = '\0'; - for (loopend = FALSE; (NULL != res) && !loopend; res = res->next) { - if (looponce) - loopend = TRUE; - if ('\0' != res->sqlstate[0]) { - if (NULL != sqlstate && strnicmp(res->sqlstate, "00", 2) == 0) - continue; - sqlstate = res->sqlstate; - if ('0' != sqlstate[0] || '1' < sqlstate[1]) - loopend = TRUE; - } - if (NULL != res->message) { - STRCPY_FIXED(msg, res->message); - detailmsg = resmsg = TRUE; - } else if (NULL != res->messageref) { - STRCPY_FIXED(msg, res->messageref); - detailmsg = resmsg = TRUE; - } - if (msg[0]) - ermsg = msg; - else if (QR_get_notice(res)) { - char *notice = QR_get_notice(res); - size_t len = strlen(notice); - if (len < sizeof(msg)) { - memcpy(msg, notice, len); - msg[len] = '\0'; - ermsg = msg; - } else { - ermsg = notice; - msgend = TRUE; - } - } - } - if (!msgend && (wmsg = SC_get_errormsg(self), wmsg) && wmsg[0]) { - pos = strlen(msg); - - snprintf(&msg[pos], sizeof(msg) - pos, "%s%s", detailmsg ? ";\n" : "", - wmsg); - ermsg = msg; - detailmsg = TRUE; - } - if (!self->ref_CC_error) - msgend = TRUE; - - if (conn && !msgend) { - if (!resmsg && (wmsg = CC_get_errormsg(conn), wmsg) - && wmsg[0] != '\0') { - pos = strlen(msg); - snprintf(&msg[pos], sizeof(msg) - pos, ";\n%s", - CC_get_errormsg(conn)); - } - - ermsg = msg; - } - opensearch_error = ER_Constructor(self->__error_number, ermsg); - if (!opensearch_error) { - if (opensearch_error_fail_safe) { - memset(opensearch_error_fail_safe, 0, sizeof(*opensearch_error_fail_safe)); - opensearch_error = opensearch_error_fail_safe; - opensearch_error->status = self->__error_number; - opensearch_error->errorsize = sizeof(opensearch_error->__error_message); - STRCPY_FIXED(opensearch_error->__error_message, ermsg); - opensearch_error->recsize = -1; - } else - return NULL; - } - if (sqlstate) - STRCPY_FIXED(opensearch_error->sqlstate, sqlstate); - else if (conn) { - if (!msgend && conn->sqlstate[0]) - STRCPY_FIXED(opensearch_error->sqlstate, conn->sqlstate); - else { - EnvironmentClass *env = (EnvironmentClass *)CC_get_env(conn); - - errornum -= LOWEST_STMT_ERROR; - if (errornum < 0 - || (unsigned long long)errornum - >= sizeof(Statement_sqlstate) - / sizeof(Statement_sqlstate[0])) { - errornum = 1 - LOWEST_STMT_ERROR; - } - STRCPY_FIXED(opensearch_error->sqlstate, - EN_is_odbc3(env) - ? Statement_sqlstate[errornum].ver3str - : Statement_sqlstate[errornum].ver2str); - } - } - - return opensearch_error; -} - -void SC_reset_delegate(RETCODE retcode, StatementClass *stmt) { - UNUSED(retcode); - StatementClass *delegate = stmt->execute_delegate; - - if (!delegate) - return; - OPENSEARCHAPI_FreeStmt(delegate, SQL_DROP); -} - -void SC_set_error(StatementClass *self, int number, const char *message, - const char *func) { - if (self->__error_message) - free(self->__error_message); - self->__error_number = number; - self->__error_message = message ? strdup(message) : NULL; - if (func && number != STMT_OK && number != STMT_INFO_ONLY) - SC_log_error(func, "", self); -} - -void SC_set_errormsg(StatementClass *self, const char *message) { - if (self->__error_message) - free(self->__error_message); - self->__error_message = message ? strdup(message) : NULL; -} - -void SC_error_copy(StatementClass *self, const StatementClass *from, - BOOL check) { - QResultClass *self_res, *from_res; - BOOL repstate; - - MYLOG(OPENSEARCH_TRACE, "entering %p->%p check=%i\n", from, self, check); - if (!from) - return; /* for safety */ - if (self == from) - return; /* for safety */ - if (check) { - if (0 == from->__error_number) /* SQL_SUCCESS */ - return; - if (0 > from->__error_number && /* SQL_SUCCESS_WITH_INFO */ - 0 < self->__error_number) - return; - } - self->__error_number = from->__error_number; - if (!check || from->__error_message) { - if (self->__error_message) - free(self->__error_message); - self->__error_message = - from->__error_message ? strdup(from->__error_message) : NULL; - } - if (self->opensearch_error) { - ER_Destructor(self->opensearch_error); - self->opensearch_error = NULL; - } - self_res = SC_get_Curres(self); - from_res = SC_get_Curres(from); - if (!self_res || !from_res) - return; - QR_add_message(self_res, QR_get_message(from_res)); - QR_add_notice(self_res, QR_get_notice(from_res)); - repstate = FALSE; - if (!check) - repstate = TRUE; - else if (from_res->sqlstate[0]) { - if (!self_res->sqlstate[0] || strncmp(self_res->sqlstate, "00", 2) == 0) - repstate = TRUE; - else if (strncmp(from_res->sqlstate, "01", 2) >= 0) - repstate = TRUE; - } - if (repstate) - STRCPY_FIXED(self_res->sqlstate, from_res->sqlstate); -} - -void SC_full_error_copy(StatementClass *self, const StatementClass *from, - BOOL allres) { - OpenSearch_ErrorInfo *opensearch_error; - - MYLOG(OPENSEARCH_TRACE, "entering %p->%p\n", from, self); - if (!from) - return; /* for safety */ - if (self == from) - return; /* for safety */ - if (self->__error_message) { - free(self->__error_message); - self->__error_message = NULL; - } - if (from->__error_message) - self->__error_message = strdup(from->__error_message); - self->__error_number = from->__error_number; - if (from->opensearch_error) { - if (self->opensearch_error) - ER_Destructor(self->opensearch_error); - self->opensearch_error = ER_Dup(from->opensearch_error); - return; - } else if (!allres) - return; - opensearch_error = SC_create_errorinfo(from, NULL); - if (!opensearch_error || !opensearch_error->__error_message[0]) { - ER_Destructor(opensearch_error); - return; - } - if (self->opensearch_error) - ER_Destructor(self->opensearch_error); - self->opensearch_error = opensearch_error; -} - -/* Returns the next SQL error information. */ -RETCODE SQL_API OPENSEARCHAPI_StmtError(SQLHSTMT hstmt, SQLSMALLINT RecNumber, - SQLCHAR *szSqlState, SQLINTEGER *pfNativeError, - SQLCHAR *szErrorMsg, SQLSMALLINT cbErrorMsgMax, - SQLSMALLINT *pcbErrorMsg, UWORD flag) { - /* CC: return an error of a hdesc */ - OpenSearch_ErrorInfo *opensearch_error, error; - StatementClass *stmt = (StatementClass *)hstmt; - int errnum = SC_get_errornumber(stmt); - - if (opensearch_error = SC_create_errorinfo(stmt, &error), NULL == opensearch_error) - return SQL_NO_DATA_FOUND; - if (opensearch_error != &error) - stmt->opensearch_error = opensearch_error; - if (STMT_NO_MEMORY_ERROR == errnum && !opensearch_error->__error_message[0]) - STRCPY_FIXED(opensearch_error->__error_message, "Memory Allocation Error??"); - return ER_ReturnError(opensearch_error, RecNumber, szSqlState, pfNativeError, - szErrorMsg, cbErrorMsgMax, pcbErrorMsg, flag); -} - -time_t SC_get_time(StatementClass *stmt) { - if (!stmt) - return time(NULL); - if (0 == stmt->stmt_time) - stmt->stmt_time = time(NULL); - return stmt->stmt_time; -} - -struct tm *SC_get_localtime(StatementClass *stmt) { -#ifndef HAVE_LOCALTIME_R - struct tm *tim; -#endif /* HAVE_LOCALTIME_R */ - - if (stmt->localtime.tm_sec < 0) { - SC_get_time(stmt); -#ifdef HAVE_LOCALTIME_R - localtime_r(&stmt->stmt_time, &(stmt->localtime)); -#else - tim = localtime(&stmt->stmt_time); - stmt->localtime = *tim; -#endif /* HAVE_LOCALTIME_R */ - } - - return &(stmt->localtime); -} - -RETCODE -SC_fetch(StatementClass *self) { - CSTR func = "SC_fetch"; - QResultClass *res = SC_get_Curres(self); - ARDFields *opts; - GetDataInfo *gdata; - int retval; - RETCODE result; - - Int2 num_cols, lf; - OID type; - int atttypmod; - char *value; - ColumnInfoClass *coli; - BindInfoClass *bookmark; - BOOL useCursor = FALSE; - KeySet *keyset = NULL; - - /* TupleField *tupleField; */ - - MYLOG(OPENSEARCH_TRACE, "entering statement=%p res=%p ommitted=0\n", self, res); - self->last_fetch_count = self->last_fetch_count_include_ommitted = 0; - if (!res) - return SQL_ERROR; - coli = QR_get_fields(res); /* the column info */ - - MYLOG(OPENSEARCH_DEBUG, "fetch_cursor=%d, %p->total_read=" FORMAT_LEN "\n", - SC_is_fetchcursor(self), res, res->num_total_read); - - if (self->currTuple >= (Int4)QR_get_num_total_tuples(res) - 1 - || (self->options.maxRows > 0 - && self->currTuple == self->options.maxRows - 1)) { - /* - * if at the end of the tuples, return "no data found" and set - * the cursor past the end of the result set - */ - self->currTuple = QR_get_num_total_tuples(res); - return SQL_NO_DATA_FOUND; - } - - MYLOG(OPENSEARCH_DEBUG, "**** : non-cursor_result\n"); - (self->currTuple)++; - - num_cols = QR_NumPublicResultCols(res); - - result = SQL_SUCCESS; - self->last_fetch_count++; - MYLOG(OPENSEARCH_DEBUG, "stmt=%p ommitted++\n", self); - self->last_fetch_count_include_ommitted++; - - opts = SC_get_ARDF(self); - /* - * If the bookmark column was bound then return a bookmark. Since this - * is used with SQLExtendedFetch, and the rowset size may be greater - * than 1, and an application can use row or column wise binding, use - * the code in copy_and_convert_field() to handle that. - */ - if ((bookmark = opts->bookmark, bookmark) && bookmark->buffer) { - SC_set_current_col(self, -1); - SC_Create_bookmark(self, bookmark, (int)self->bind_row, - (int)self->currTuple, keyset); - } - - if (self->options.retrieve_data == SQL_RD_OFF) /* data isn't required */ - return SQL_SUCCESS; - /* The following adjustment would be needed after SQLMoreResults() */ - if (opts->allocated < num_cols) - extend_column_bindings(opts, num_cols); - gdata = SC_get_GDTI(self); - if (gdata->allocated != opts->allocated) - extend_getdata_info(gdata, opts->allocated, TRUE); - for (lf = 0; lf < num_cols; lf++) { - MYLOG(OPENSEARCH_DEBUG, - "fetch: cols=%d, lf=%d, opts = %p, opts->bindings = %p, buffer[] " - "= %p\n", - num_cols, lf, opts, opts->bindings, opts->bindings[lf].buffer); - - /* reset for SQLGetData */ - GETDATA_RESET(gdata->gdata[lf]); - - if (NULL == opts->bindings) - continue; - if (opts->bindings[lf].buffer != NULL) { - /* this column has a binding */ - - /* type = QR_get_field_type(res, lf); */ - type = CI_get_oid(coli, lf); /* speed things up */ - atttypmod = CI_get_atttypmod(coli, lf); /* speed things up */ - - MYLOG(OPENSEARCH_DEBUG, "type = %d, atttypmod = %d\n", type, atttypmod); - - if (useCursor) - value = QR_get_value_backend(res, lf); - else { - SQLLEN curt = GIdx2CacheIdx(self->currTuple, self, res); - MYLOG(OPENSEARCH_DEBUG, - "%p->base=" FORMAT_LEN " curr=" FORMAT_LEN - " st=" FORMAT_LEN " valid=%d\n", - res, QR_get_rowstart_in_cache(res), self->currTuple, - SC_get_rowset_start(self), QR_has_valid_base(res)); - MYLOG(OPENSEARCH_DEBUG, "curt=" FORMAT_LEN "\n", curt); - value = QR_get_value_backend_row(res, curt, lf); - } - - MYLOG(OPENSEARCH_DEBUG, "value = '%s'\n", - (value == NULL) ? "" : value); - - retval = copy_and_convert_field_bindinfo(self, type, atttypmod, - value, lf); - - MYLOG(OPENSEARCH_DEBUG, "copy_and_convert: retval = %d\n", retval); - - switch (retval) { - case COPY_OK: - break; /* OK, do next bound column */ - - case COPY_UNSUPPORTED_TYPE: - SC_set_error( - self, STMT_RESTRICTED_DATA_TYPE_ERROR, - "Received an unsupported type from OpenSearch.", - func); - result = SQL_ERROR; - break; - - case COPY_UNSUPPORTED_CONVERSION: - SC_set_error( - self, STMT_RESTRICTED_DATA_TYPE_ERROR, - "Couldn't handle the necessary data type conversion.", - func); - result = SQL_ERROR; - break; - - case COPY_RESULT_TRUNCATED: - SC_set_error(self, STMT_TRUNCATED, - "Fetched item was truncated.", func); - MYLOG(OPENSEARCH_DEBUG, "The %dth item was truncated\n", lf + 1); - MYLOG(OPENSEARCH_DEBUG, "The buffer size = " FORMAT_LEN, - opts->bindings[lf].buflen); - MYLOG(OPENSEARCH_DEBUG, " and the value is '%s'\n", value); - result = SQL_SUCCESS_WITH_INFO; - break; - - case COPY_INVALID_STRING_CONVERSION: /* invalid string */ - SC_set_error(self, STMT_STRING_CONVERSION_ERROR, - "invalid string conversion occured.", func); - result = SQL_ERROR; - break; - - /* error msg already filled in */ - case COPY_GENERAL_ERROR: - result = SQL_ERROR; - break; - - /* This would not be meaningful in SQLFetch. */ - case COPY_NO_DATA_FOUND: - break; - - default: - SC_set_error(self, STMT_INTERNAL_ERROR, - "Unrecognized return value from " - "copy_and_convert_field.", - func); - result = SQL_ERROR; - break; - } - } - } - - return result; -} - -#include "dlg_specific.h" - -#define CALLBACK_ALLOC_ONCE 4 - -RETCODE dequeueNeedDataCallback(RETCODE retcode, StatementClass *stmt) { - RETCODE ret; - NeedDataCallfunc func; - void *data; - int i, cnt; - - MYLOG(OPENSEARCH_TRACE, "entering ret=%d count=%d\n", retcode, stmt->num_callbacks); - if (SQL_NEED_DATA == retcode) - return retcode; - if (stmt->num_callbacks <= 0) - return retcode; - func = stmt->callbacks[0].func; - data = stmt->callbacks[0].data; - for (i = 1; i < stmt->num_callbacks; i++) - stmt->callbacks[i - 1] = stmt->callbacks[i]; - cnt = --stmt->num_callbacks; - ret = (*func)(retcode, data); - free(data); - if (SQL_NEED_DATA != ret && cnt > 0) - ret = dequeueNeedDataCallback(ret, stmt); - return ret; -} - -void cancelNeedDataState(StatementClass *stmt) { - int cnt = stmt->num_callbacks, i; - - stmt->num_callbacks = 0; - for (i = 0; i < cnt; i++) { - if (stmt->callbacks[i].data) - free(stmt->callbacks[i].data); - } - SC_reset_delegate(SQL_ERROR, stmt); -} - -void SC_log_error(const char *func, const char *desc, - const StatementClass *self) { - const char *head; -#define NULLCHECK(a) (a ? a : "(NULL)") - if (self) { - QResultClass *res = SC_get_Result(self); - const ARDFields *opts = SC_get_ARDF(self); - const APDFields *apdopts = SC_get_APDF(self); - SQLLEN rowsetSize; - const int level = 9; - - rowsetSize = (STMT_TRANSITION_EXTENDED_FETCH == self->transition_status - ? opts->size_of_rowset_odbc2 - : opts->size_of_rowset); - if (SC_get_errornumber(self) <= 0) - head = "STATEMENT WARNING"; - else { - head = "STATEMENT ERROR"; - QLOG(level, "%s: func=%s, desc='%s', errnum=%d, errmsg='%s'\n", - head, func, desc, self->__error_number, - NULLCHECK(self->__error_message)); - } - MYLOG(OPENSEARCH_DEBUG, "%s: func=%s, desc='%s', errnum=%d, errmsg='%s'\n", - head, func, desc, self->__error_number, - NULLCHECK(self->__error_message)); - if (SC_get_errornumber(self) > 0) { - QLOG(level, - " " - "------------------------------------------------------------" - "\n"); - QLOG(level, " hdbc=%p, stmt=%p, result=%p\n", - self->hdbc, self, res); - QLOG(level, " prepare=%d, external=%d\n", - self->prepare, self->external); - QLOG(level, " bindings=%p, bindings_allocated=%d\n", - opts->bindings, opts->allocated); - QLOG(level, - " parameters=%p, parameters_allocated=%d\n", - apdopts->parameters, apdopts->allocated); - QLOG(level, " statement_type=%d, statement='%s'\n", - self->statement_type, NULLCHECK(self->statement)); - QLOG(level, - " currTuple=" FORMAT_LEN - ", current_col=%d, lobj_fd=%d\n", - self->currTuple, self->current_col, self->lobj_fd); - QLOG(level, - " maxRows=" FORMAT_LEN - ", rowset_size=" FORMAT_LEN ", keyset_size=" FORMAT_LEN - ", cursor_type=" FORMAT_UINTEGER - ", scroll_concurrency=" FORMAT_UINTEGER "\n", - self->options.maxRows, rowsetSize, self->options.keyset_size, - self->options.cursor_type, self->options.scroll_concurrency); - QLOG(level, " cursor_name='%s'\n", - SC_cursor_name(self)); - - QLOG(level, - " ----------------QResult Info " - "-------------------------------\n"); - - if (res) { - QLOG(level, - " fields=%p, backend_tuples=%p, " - "tupleField=%p, conn=%p\n", - QR_get_fields(res), res->backend_tuples, res->tupleField, - res->conn); - QLOG(level, - " fetch_count=" FORMAT_LEN - ", num_total_rows=" FORMAT_ULEN - ", num_fields=%d, cursor='%s'\n", - res->fetch_number, QR_get_num_total_tuples(res), - res->num_fields, NULLCHECK(QR_get_cursor(res))); - QLOG(level, - " message='%s', command='%s', " - "notice='%s'\n", - NULLCHECK(QR_get_message(res)), NULLCHECK(res->command), - NULLCHECK(res->notice)); - QLOG(level, " status=%d\n", - QR_get_rstatus(res)); - } - - /* Log the connection error if there is one */ - CC_log_error(func, desc, self->hdbc); - } - } else { - MYLOG(OPENSEARCH_DEBUG, "INVALID STATEMENT HANDLE ERROR: func=%s, desc='%s'\n", - func, desc); - } -} - -extern void *common_cs; - -BOOL SC_SetExecuting(StatementClass *self, BOOL on) { - BOOL exeSet = FALSE; - ENTER_COMMON_CS; /* short time blocking */ - if (on) { - if (0 == (self->cancel_info & CancelRequestSet)) { - self->status = STMT_EXECUTING; - exeSet = TRUE; - } - } else { - self->cancel_info = 0; - self->status = STMT_FINISHED; - exeSet = TRUE; - } - LEAVE_COMMON_CS; - return exeSet; -} - -#ifdef NOT_USED -BOOL SC_SetCancelRequest(StatementClass *self) { - BOOL enteredCS = FALSE; - - ENTER_COMMON_CS; - if (0 != (self->cancel_info & CancelCompleted)) - ; - else if (STMT_EXECUTING == self->status) { - self->cancel_info |= CancelRequestSet; - } else { - /* try to acquire */ - if (TRY_ENTER_STMT_CS(self)) - enteredCS = TRUE; - else - self->cancel_info |= CancelRequestSet; - } - LEAVE_COMMON_CS; - return enteredCS; -} -#endif /* NOT_USED */ - -static void SC_set_error_if_not_set(StatementClass *self, int errornumber, - const char *errmsg, const char *func) { - int errnum = SC_get_errornumber(self); - - if (errnum <= 0) { - const char *emsg = SC_get_errormsg(self); - - if (emsg && 0 == errnum) - SC_set_errornumber(self, errornumber); - else - SC_set_error(self, errornumber, errmsg, func); - } -} - -void SC_set_errorinfo(StatementClass *self, QResultClass *res, int errkind) { - ConnectionClass *conn = SC_get_conn(self); - - if (CC_not_connected(conn)) { - SC_set_error_if_not_set(self, STMT_COMMUNICATION_ERROR, - "The connection has been lost", __FUNCTION__); - return; - } - - switch (QR_get_rstatus(res)) { - case PORES_NO_MEMORY_ERROR: - SC_set_error_if_not_set(self, STMT_NO_MEMORY_ERROR, - "memory allocation error???", __FUNCTION__); - break; - case PORES_BAD_RESPONSE: - SC_set_error_if_not_set(self, STMT_COMMUNICATION_ERROR, - "communication error occured", - __FUNCTION__); - break; - case PORES_INTERNAL_ERROR: - SC_set_error_if_not_set(self, STMT_INTERNAL_ERROR, - "Internal error fetching next row", - __FUNCTION__); - break; - default: - switch (errkind) { - case 1: - SC_set_error_if_not_set( - self, STMT_EXEC_ERROR, - "Error while fetching the next result", __FUNCTION__); - break; - default: - SC_set_error_if_not_set(self, STMT_EXEC_ERROR, - "Error while executing the query", - __FUNCTION__); - break; - } - break; - } -} - -int SC_Create_bookmark(StatementClass *self, BindInfoClass *bookmark, - Int4 bind_row, Int4 currTuple, const KeySet *keyset) { - ARDFields *opts = SC_get_ARDF(self); - SQLUINTEGER bind_size = opts->bind_size; - SQLULEN offset = opts->row_offset_ptr ? *opts->row_offset_ptr : 0; - size_t cvtlen = sizeof(Int4); - OPENSEARCH_BM opensearch_bm; - - MYLOG(OPENSEARCH_TRACE, "entering type=%d buflen=" FORMAT_LEN " buf=%p\n", - bookmark->returntype, bookmark->buflen, bookmark->buffer); - memset(&opensearch_bm, 0, sizeof(opensearch_bm)); - if (SQL_C_BOOKMARK == bookmark->returntype) - ; - else if (bookmark->buflen >= (SQLLEN)sizeof(opensearch_bm)) - cvtlen = sizeof(opensearch_bm); - else if (bookmark->buflen >= 12) - cvtlen = 12; - opensearch_bm.index = SC_make_int4_bookmark(currTuple); - if (keyset) - opensearch_bm.keys = *keyset; - memcpy(CALC_BOOKMARK_ADDR(bookmark, offset, bind_size, bind_row), &opensearch_bm, - cvtlen); - if (bookmark->used) { - SQLLEN *used = LENADDR_SHIFT(bookmark->used, offset); - - if (bind_size > 0) - used = (SQLLEN *)((char *)used + (bind_row * bind_size)); - else - used = (SQLLEN *)((char *)used + (bind_row * sizeof(SQLLEN))); - *used = cvtlen; - } - MYLOG(OPENSEARCH_TRACE, "leaving cvtlen=" FORMAT_SIZE_T " ix(bl,of)=%d(%d,%d)\n", - cvtlen, - opensearch_bm.index, opensearch_bm.keys.blocknum, - opensearch_bm.keys.offset); - - return COPY_OK; -} diff --git a/sql-odbc/src/sqlodbc/statement.h b/sql-odbc/src/sqlodbc/statement.h deleted file mode 100644 index 7dc57ff05c..0000000000 --- a/sql-odbc/src/sqlodbc/statement.h +++ /dev/null @@ -1,504 +0,0 @@ -#ifndef __STATEMENT_H__ -#define __STATEMENT_H__ - -#include - -#include "bind.h" -#include "descriptor.h" -#include "opensearch_helper.h" -#include "opensearch_odbc.h" -#include "opensearch_types.h" -#include "tuple.h" - -// C Interface -#ifdef __cplusplus -extern "C" { -#endif - -enum { - CancelRequestSet = 1L, - CancelRequestAccepted = (1L << 1), - CancelCompleted = (1L << 2) -}; - -typedef enum { - STMT_ALLOCATED, /* The statement handle is allocated, but - * not used so far */ - STMT_READY, /* the statement is waiting to be executed */ - STMT_DESCRIBED, /* ODBC states that it is legal to call - * e.g. SQLDescribeCol before a call to - * SQLExecute, but after SQLPrepare. To - * get all the necessary information in - * such a case, we parse the query _before_ - * the actual call to SQLExecute, and the - * result set contains only column information, - * but no actual data. */ - STMT_FINISHED, /* statement execution has finished */ - STMT_EXECUTING /* statement execution is still going on */ -} STMT_Status; -/* - * ERROR status code - * - * The code for warnings must be minus - * and LOWEST_STMT_ERROR must be set to - * the least code number. - * The code for STMT_OK is 0 and error - * codes follow after it. - */ -enum { - LOWEST_STMT_ERROR = (-6) - /* minus values mean warning returns */ - , - STMT_ERROR_IN_ROW = (-6), - STMT_OPTION_VALUE_CHANGED = (-5), - STMT_ROW_VERSION_CHANGED = (-4), - STMT_POS_BEFORE_RECORDSET = (-3), - STMT_TRUNCATED = (-2), - STMT_INFO_ONLY = (-1) - /* not an error message, - * just a notification - * to be returned by - * SQLError - */ - , - STMT_OK = 0, - STMT_EXEC_ERROR, - STMT_STATUS_ERROR, - STMT_SEQUENCE_ERROR, - STMT_NO_MEMORY_ERROR, - STMT_COLNUM_ERROR, - STMT_NO_STMTSTRING, - STMT_ERROR_TAKEN_FROM_BACKEND, - STMT_INTERNAL_ERROR, - STMT_STILL_EXECUTING, - STMT_NOT_IMPLEMENTED_ERROR, - STMT_BAD_PARAMETER_NUMBER_ERROR, - STMT_OPTION_OUT_OF_RANGE_ERROR, - STMT_INVALID_COLUMN_NUMBER_ERROR, - STMT_RESTRICTED_DATA_TYPE_ERROR, - STMT_INVALID_CURSOR_STATE_ERROR, - STMT_CREATE_TABLE_ERROR, - STMT_QUERY_SYNTAX_ERROR, - STMT_NO_CURSOR_NAME, - STMT_INVALID_CURSOR_NAME, - STMT_INVALID_ARGUMENT_NO, - STMT_ROW_OUT_OF_RANGE, - STMT_OPERATION_CANCELLED, - STMT_INVALID_CURSOR_POSITION, - STMT_VALUE_OUT_OF_RANGE, - STMT_OPERATION_INVALID, - STMT_PROGRAM_TYPE_OUT_OF_RANGE, - STMT_BAD_ERROR, - STMT_INVALID_OPTION_IDENTIFIER, - STMT_RETURN_NULL_WITHOUT_INDICATOR, - STMT_INVALID_DESCRIPTOR_IDENTIFIER, - STMT_OPTION_NOT_FOR_THE_DRIVER, - STMT_FETCH_OUT_OF_RANGE, - STMT_COUNT_FIELD_INCORRECT, - STMT_INVALID_NULL_ARG, - STMT_NO_RESPONSE, - STMT_COMMUNICATION_ERROR, - STMT_STRING_CONVERSION_ERROR -}; - -/* statement types */ -enum { - STMT_TYPE_UNKNOWN = -2, - STMT_TYPE_OTHER = -1, - STMT_TYPE_SELECT = 0, - STMT_TYPE_WITH, - STMT_TYPE_PROCCALL, - STMT_TYPE_TRANSACTION, - STMT_TYPE_DECLARE, - STMT_TYPE_FETCH, - STMT_TYPE_CLOSE, - STMT_TYPE_INSERT, - STMT_TYPE_UPDATE, - STMT_TYPE_DELETE, - STMT_TYPE_CREATE, - STMT_TYPE_ALTER, - STMT_TYPE_DROP, - STMT_TYPE_GRANT, - STMT_TYPE_REVOKE, - STMT_TYPE_LOCK, - STMT_TYPE_PREPARE, - STMT_TYPE_EXECUTE, - STMT_TYPE_DEALLOCATE, - STMT_TYPE_ANALYZE, - STMT_TYPE_NOTIFY, - STMT_TYPE_EXPLAIN, - STMT_TYPE_SET, - STMT_TYPE_RESET, - STMT_TYPE_MOVE, - STMT_TYPE_COPY, - STMT_TYPE_START, - STMT_TYPE_SPECIAL -}; - -#define STMT_UPDATE(stmt) ((stmt)->statement_type > STMT_TYPE_PROCCALL) - -/* Parsing status */ -enum { - STMT_PARSE_NONE = 0, - STMT_PARSE_COMPLETE /* the driver parsed the statement */ - , - STMT_PARSE_INCOMPLETE, - STMT_PARSE_FATAL, - STMT_PARSE_MASK = 3L, - STMT_PARSED_OIDS = (1L << 2), - STMT_FOUND_KEY = (1L << 3), - STMT_HAS_ROW_DESCRIPTION = (1L << 4) /* already got the col info */ - , - STMT_REFLECTED_ROW_DESCRIPTION = (1L << 5) -}; - -/* transition status */ -enum { - STMT_TRANSITION_UNALLOCATED = 0, - STMT_TRANSITION_ALLOCATED = 1, - STMT_TRANSITION_FETCH_SCROLL = 6, - STMT_TRANSITION_EXTENDED_FETCH = 7 -}; - -/* Result style */ -enum { STMT_FETCH_NONE = 0, STMT_FETCH_NORMAL, STMT_FETCH_EXTENDED }; - -#define OPENSEARCH_NUM_NORMAL_KEYS 2 - -typedef RETCODE (*NeedDataCallfunc)(RETCODE, void *); -typedef struct { - NeedDataCallfunc func; - void *data; -} NeedDataCallback; - -/* - * ProcessedStmt represents a fragment of the original SQL query, after - * converting ? markers to $n style, processing ODBC escapes, and splitting - * a multi-statement into individual statements. Each individual statement - * is represented by one ProcessedStmt struct. - */ -struct ProcessedStmt { - struct ProcessedStmt *next; - char *query; - int num_params; /* number of parameter markers in this, - * fragment or -1 if not known */ -}; -typedef struct ProcessedStmt ProcessedStmt; - -/******** Statement Handle ***********/ -struct StatementClass_ { - ConnectionClass *hdbc; /* pointer to ConnectionClass this - * statement belongs to */ - QResultClass *result; /* result of the current statement */ - QResultClass *curres; /* the current result in the chain */ - HSTMT *phstmt; - StatementOptions options; - StatementOptions options_orig; - /* attached descriptor handles */ - DescriptorClass *ard; - DescriptorClass *apd; - DescriptorClass *ird; - DescriptorClass *ipd; - /* implicit descriptor handles */ - DescriptorClass ardi; - DescriptorClass irdi; - DescriptorClass apdi; - DescriptorClass ipdi; - - STMT_Status status; - char *__error_message; - int __error_number; - OpenSearch_ErrorInfo *opensearch_error; - - SQLLEN currTuple; /* current absolute row number (GetData, - * SetPos, SQLFetch) */ - GetDataInfo gdata_info; - SQLLEN save_rowset_size; /* saved rowset size in case of - * change/FETCH_NEXT */ - SQLLEN rowset_start; /* start of rowset (an absolute row - * number) */ - SQLSETPOSIROW bind_row; /* current offset for Multiple row/column - * binding */ - Int2 current_col; /* current column for GetData -- used to - * handle multiple calls */ - SQLLEN last_fetch_count; /* number of rows retrieved in - * last fetch/extended fetch */ - int lobj_fd; /* fd of the current large object */ - - char *statement; /* if non--null pointer to the SQL - * statement that has been executed */ - /* - * processed_statements is the SQL after splitting multi-statement into - * parts, and replacing ? markers with $n style markers, or injecting the - * values in UseServerSidePrepare=0 mode. - */ - ProcessedStmt *processed_statements; - - TABLE_INFO **ti; - Int2 ntab; - Int2 num_key_fields; - Int2 statement_type; /* According to the defines above */ - Int2 num_params; - Int2 data_at_exec; /* Number of params needing SQLPutData */ - UDWORD iflag; /* OPENSEARCHAPI_AllocStmt parameter */ - PutDataInfo pdata_info; - po_ind_t parse_status; - po_ind_t proc_return; - po_ind_t put_data; /* Has SQLPutData been called ? */ - po_ind_t catalog_result; /* Is this a result of catalog function ? */ - po_ind_t prepare; /* is this a prepared statement ? */ - po_ind_t prepared; /* is this statement already - * prepared at the server ? */ - po_ind_t external; /* Allocated via SQLAllocHandle() */ - po_ind_t transition_status; /* Transition status */ - po_ind_t multi_statement; /* -1:unknown 0:single 1:multi */ - po_ind_t rb_or_tc; /* rollback on error */ - po_ind_t - discard_output_params; /* discard output parameters on parse stage */ - po_ind_t cancel_info; /* cancel information */ - po_ind_t ref_CC_error; /* refer to CC_error ? */ - po_ind_t lock_CC_for_rb; /* lock CC for statement rollback ? */ - po_ind_t join_info; /* have joins ? */ - po_ind_t parse_method; /* parse_statement is forced or ? */ - opensearchNAME cursor_name; - char *plan_name; - unsigned char miscinfo; - unsigned char execinfo; - po_ind_t updatable; - SQLLEN diag_row_count; - char *load_statement; /* to (re)load updatable individual rows */ - ssize_t from_pos; - ssize_t load_from_pos; - ssize_t where_pos; - SQLLEN last_fetch_count_include_ommitted; - time_t stmt_time; - struct tm localtime; - /* SQL_NEED_DATA Callback list */ - StatementClass *execute_delegate; - StatementClass *execute_parent; - UInt2 allocated_callbacks; - UInt2 num_callbacks; - NeedDataCallback *callbacks; - void *cs; -}; - -#define SC_get_conn(a) ((a)->hdbc) -void SC_init_Result(StatementClass *self); -void SC_set_Result(StatementClass *self, QResultClass *res); -#define SC_get_Result(a) ((a)->result) -#define SC_set_Curres(a, b) ((a)->curres = b) -#define SC_get_Curres(a) ((a)->curres) -#define SC_get_ARD(a) ((a)->ard) -#define SC_get_APD(a) ((a)->apd) -#define SC_get_IRD(a) ((a)->ird) -#define SC_get_IPD(a) ((a)->ipd) -#define SC_get_ARDF(a) (&(SC_get_ARD(a)->ardf)) -#define SC_get_APDF(a) (&(SC_get_APD(a)->apdf)) -#define SC_get_IRDF(a) (&(SC_get_IRD(a)->irdf)) -#define SC_get_IPDF(a) (&(SC_get_IPD(a)->ipdf)) -#define SC_get_ARDi(a) (&((a)->ardi)) -#define SC_get_APDi(a) (&((a)->apdi)) -#define SC_get_IRDi(a) (&((a)->irdi)) -#define SC_get_IPDi(a) (&((a)->ipdi)) -#define SC_get_GDTI(a) (&((a)->gdata_info)) -#define SC_get_PDTI(a) (&((a)->pdata_info)) - -#define SC_get_errornumber(a) ((a)->__error_number) -#define SC_set_errornumber(a, n) ((a)->__error_number = n) -#define SC_get_errormsg(a) ((a)->__error_message) -#define SC_is_prepare_statement(a) (0 != ((a)->prepare & PREPARE_STATEMENT)) -#define SC_get_prepare_method(a) ((a)->prepare & (~PREPARE_STATEMENT)) - -#define SC_parsed_status(a) ((a)->parse_status & STMT_PARSE_MASK) -#define SC_set_parse_status(a, s) ((a)->parse_status |= s) -#define SC_update_not_ready(a) \ - (SC_parsed_status(a) == STMT_PARSE_NONE \ - || 0 == ((a)->parse_status & STMT_PARSED_OIDS)) -#define SC_update_ready(a) \ - (SC_parsed_status(a) == STMT_PARSE_COMPLETE \ - && 0 != ((a)->parse_status & STMT_FOUND_KEY) && (a)->updatable) -#define SC_set_checked_hasoids(a, b) \ - ((a)->parse_status |= (STMT_PARSED_OIDS | (b ? STMT_FOUND_KEY : 0))) -#define SC_checked_hasoids(a) (0 != ((a)->parse_status & STMT_PARSED_OIDS)) -#define SC_set_delegate(p, c) \ - ((p)->execute_delegate = c, (c)->execute_parent = p) - -#define SC_is_updatable(s) (0 < ((s)->updatable)) -#define SC_reset_updatable(s) ((s)->updatable = -1) -#define SC_set_updatable(s, b) ((s)->updatable = (b)) -#define SC_clear_parse_method(s) ((s)->parse_method = 0) -#define SC_is_parse_forced(s) (0 != ((s)->parse_method & 1L)) -#define SC_set_parse_forced(s) ((s)->parse_method |= 1L) - -#define SC_cursor_is_valid(s) (NAME_IS_VALID((s)->cursor_name)) -#define SC_cursor_name(s) (SAFE_NAME((s)->cursor_name)) - -void SC_reset_delegate(RETCODE, StatementClass *); - -#define SC_is_lower_case(a, b) \ - ((a)->options.metadata_id || (b)->connInfo.lower_case_identifier) - -#define SC_MALLOC_return_with_error(t, tp, s, a, m, r) \ - do { \ - if (t = (tp *)malloc(s), NULL == t) { \ - SC_set_error(a, STMT_NO_MEMORY_ERROR, m, "SC_MALLOC"); \ - return r; \ - } \ - } while (0) -#define SC_MALLOC_gexit_with_error(t, tp, s, a, m, r) \ - do { \ - if (t = (tp *)malloc(s), NULL == t) { \ - SC_set_error(a, STMT_NO_MEMORY_ERROR, m, "SC_MALLOC"); \ - r; \ - goto cleanup; \ - } \ - } while (0) -#define SC_REALLOC_return_with_error(t, tp, s, a, m, r) \ - do { \ - tp *tmp; \ - if (tmp = (tp *)realloc(t, s), NULL == tmp) { \ - SC_set_error(a, STMT_NO_MEMORY_ERROR, m, "SC_REALLOC"); \ - return r; \ - } \ - t = tmp; \ - } while (0) -#define SC_REALLOC_gexit_with_error(t, tp, s, a, m, r) \ - do { \ - tp *tmp; \ - if (tmp = (tp *)realloc(t, s), NULL == tmp) { \ - SC_set_error(a, STMT_NO_MEMORY_ERROR, m, __FUNCTION__); \ - r; \ - goto cleanup; \ - } \ - t = tmp; \ - } while (0) - -/* options for SC_free_params() */ -#define STMT_FREE_PARAMS_ALL 0 -#define STMT_FREE_PARAMS_DATA_AT_EXEC_ONLY 1 - -/* prepare state */ -enum { - NON_PREPARE_STATEMENT = 0, - PREPARE_STATEMENT = 1, - PREPARE_BY_THE_DRIVER = (1L << 1), - NAMED_PARSE_REQUEST = (3L << 1), - PARSE_TO_EXEC_ONCE = (4L << 1), - PARSE_REQ_FOR_INFO = (5L << 1) -}; - -/* prepared state */ -enum { NOT_PREPARED = 0, PREPARED, EXECUTED }; - -/* misc info */ -#define SC_set_fetchcursor(a) ((a)->miscinfo |= (1L << 1)) -#define SC_no_fetchcursor(a) ((a)->miscinfo &= ~(1L << 1)) -#define SC_is_fetchcursor(a) (((a)->miscinfo & (1L << 1)) != 0) -#define SC_miscinfo_clear(a) ((a)->miscinfo = 0) -#define SC_set_with_hold(a) ((a)->execinfo |= 1L) -#define SC_set_without_hold(a) ((a)->execinfo &= (~1L)) -#define SC_is_with_hold(a) (((a)->execinfo & 1L) != 0) -#define SC_set_readonly(a) ((a)->execinfo |= (1L << 1)) -#define SC_set_no_readonly(a) ((a)->execinfo &= ~(1L << 1)) -#define SC_is_readonly(a) (((a)->execinfo & (1L << 1)) != 0) -#define SC_execinfo_clear(a) (((a)->execinfo = 0) -#define STMT_HAS_OUTER_JOIN 1L -#define STMT_HAS_INNER_JOIN (1L << 1) -#define SC_has_join(a) (0 != (a)->join_info) -#define SC_has_outer_join(a) (0 != (STMT_HAS_OUTER_JOIN & (a)->join_info)) -#define SC_has_inner_join(a) (0 != (STMT_HAS_INNER_JOIN & (a)->join_info)) -#define SC_set_outer_join(a) ((a)->join_info |= STMT_HAS_OUTER_JOIN) -#define SC_set_inner_join(a) ((a)->join_info |= STMT_HAS_INNER_JOIN) - -#define SC_start_tc_stmt(a) ((a)->rb_or_tc = (1L << 1)) -#define SC_is_tc_stmt(a) (((a)->rb_or_tc & (1L << 1)) != 0) -#define SC_start_rb_stmt(a) ((a)->rb_or_tc = (1L << 2)) -#define SC_is_rb_stmt(a) (((a)->rb_or_tc & (1L << 2)) != 0) -#define SC_unref_CC_error(a) (((a)->ref_CC_error) = FALSE) -#define SC_ref_CC_error(a) (((a)->ref_CC_error) = TRUE) -#define SC_can_parse_statement(a) (STMT_TYPE_SELECT == (a)->statement_type) -/* - * DECLARE CURSOR + FETCH can only be used with SELECT-type queries. And - * it's not currently supported with array-bound parameters. - */ -#define SC_may_use_cursor(a) \ - (SC_get_APDF(a)->paramset_size <= 1 \ - && (STMT_TYPE_SELECT == (a)->statement_type \ - || STMT_TYPE_WITH == (a)->statement_type)) -#define SC_may_fetch_rows(a) \ - (STMT_TYPE_SELECT == (a)->statement_type \ - || STMT_TYPE_WITH == (a)->statement_type) - -/* For Multi-thread */ -#define INIT_STMT_CS(x) XPlatformInitializeCriticalSection(&((x)->cs)) -#define ENTER_STMT_CS(x) XPlatformEnterCriticalSection(((x)->cs)) -#define TRY_ENTER_STMT_CS(x) XPlatformTryEnterCriticalSection(&((x)->cs)) -#define LEAVE_STMT_CS(x) XPlatformLeaveCriticalSection(((x)->cs)) -#define DELETE_STMT_CS(x) XPlatformDeleteCriticalSection(&((x)->cs)) - -/* Statement prototypes */ -StatementClass *SC_Constructor(ConnectionClass *); -void InitializeStatementOptions(StatementOptions *opt); -char SC_Destructor(StatementClass *self); -BOOL SC_opencheck(StatementClass *self, const char *func); -RETCODE SC_initialize_and_recycle(StatementClass *self); -void SC_initialize_cols_info(StatementClass *self, BOOL DCdestroy, - BOOL parseReset); -void SC_reset_result_for_rerun(StatementClass *self); -int statement_type(const char *statement); -char SC_unbind_cols(StatementClass *self); -char SC_recycle_statement(StatementClass *self); -void SC_clear_error(StatementClass *self); -void SC_set_error(StatementClass *self, int errnum, const char *msg, - const char *func); -void SC_set_errormsg(StatementClass *self, const char *msg); -void SC_error_copy(StatementClass *self, const StatementClass *from, BOOL); -void SC_full_error_copy(StatementClass *self, const StatementClass *from, BOOL); -void SC_set_prepared(StatementClass *self, int); -void SC_set_planname(StatementClass *self, const char *plan_name); -void SC_set_rowset_start(StatementClass *self, SQLLEN, BOOL); -void SC_inc_rowset_start(StatementClass *self, SQLLEN); -RETCODE SC_initialize_stmts(StatementClass *self, BOOL); -RETCODE SC_fetch(StatementClass *self); -void SC_log_error(const char *func, const char *desc, - const StatementClass *self); -time_t SC_get_time(StatementClass *self); -struct tm *SC_get_localtime(StatementClass *self); -int SC_Create_bookmark(StatementClass *stmt, BindInfoClass *bookmark, - Int4 row_pos, Int4 currTuple, const KeySet *keyset); -int SC_set_current_col(StatementClass *self, int col); -BOOL SC_SetExecuting(StatementClass *self, BOOL on); -BOOL SC_SetCancelRequest(StatementClass *self); - -BOOL SC_connection_lost_check(StatementClass *stmt, const char *funcname); -void SC_set_errorinfo(StatementClass *self, QResultClass *res, int errkind); -RETCODE dequeueNeedDataCallback(RETCODE, StatementClass *self); -void cancelNeedDataState(StatementClass *self); - -/* - * Macros to convert global index <-> relative index in resultset/rowset - */ -/* a global index to the relative index in a rowset */ -#define SC_get_rowset_start(stmt) ((stmt)->rowset_start) -#define GIdx2RowIdx(gidx, stmt) (gidx - (stmt)->rowset_start) -/* a global index to the relative index in a resultset(not a rowset) */ -#define GIdx2CacheIdx(gidx, s, r) \ - (gidx - (QR_has_valid_base(r) ? ((s)->rowset_start - (r)->base) : 0)) -#define GIdx2KResIdx(gidx, s, r) \ - (gidx - (QR_has_valid_base(r) ? ((s)->rowset_start - (r)->key_base) : 0)) -/* a relative index in a rowset to the global index */ -#define RowIdx2GIdx(ridx, stmt) (ridx + (stmt)->rowset_start) -/* a relative index in a resultset to the global index */ -#define CacheIdx2GIdx(ridx, stmt, res) \ - (ridx - (res)->base + (stmt)->rowset_start) -#define KResIdx2GIdx(ridx, stmt, res) \ - (ridx - (res)->key_base + (stmt)->rowset_start) - -#define BOOKMARK_SHIFT 1 -#define SC_make_int4_bookmark(b) ((b < 0) ? (b) : (b + BOOKMARK_SHIFT)) -#define SC_resolve_int4_bookmark(b) ((b < 0) ? (b) : (b - BOOKMARK_SHIFT)) - -#ifdef __cplusplus -} -#endif -#endif /* __STATEMENT_H__ */ diff --git a/sql-odbc/src/sqlodbc/tuple.c b/sql-odbc/src/sqlodbc/tuple.c deleted file mode 100644 index d8a7c06126..0000000000 --- a/sql-odbc/src/sqlodbc/tuple.c +++ /dev/null @@ -1,43 +0,0 @@ -// clang-format off -#include "tuple.h" -#include "misc.h" - -#include -#include -// clang-format on - -void set_tuplefield_null(TupleField *tuple_field) { - tuple_field->len = 0; - // Changing value to strdup("") from NULL to fix error - // "Object cannot be cast from DBNull to other types" in Excel & Power BI - tuple_field->value = strdup(""); /* NULL; */ -} - -void set_tuplefield_string(TupleField *tuple_field, const char *string) { - if (string) { - tuple_field->len = (Int4)strlen(string); /* ES restriction */ - tuple_field->value = strdup(string); - } - if (!tuple_field->value) - set_tuplefield_null(tuple_field); -} - -void set_tuplefield_int2(TupleField *tuple_field, Int2 value) { - char buffer[10]; - - ITOA_FIXED(buffer, value); - - tuple_field->len = (Int4)(strlen(buffer) + 1); - /* +1 ... is this correct (better be on the save side-...) */ - tuple_field->value = strdup(buffer); -} - -void set_tuplefield_int4(TupleField *tuple_field, Int4 value) { - char buffer[15]; - - ITOA_FIXED(buffer, value); - - tuple_field->len = (Int4)(strlen(buffer) + 1); - /* +1 ... is this correct (better be on the save side-...) */ - tuple_field->value = strdup(buffer); -} diff --git a/sql-odbc/src/sqlodbc/tuple.h b/sql-odbc/src/sqlodbc/tuple.h deleted file mode 100644 index cc5a29eec1..0000000000 --- a/sql-odbc/src/sqlodbc/tuple.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef __TUPLE_H__ -#define __TUPLE_H__ - -#include "opensearch_odbc.h" - -// C Interface -#ifdef __cplusplus -extern "C" { -#endif - -/* Used by backend data AND manual result sets */ -struct TupleField_ { - Int4 len; /* ES length of the current Tuple */ - void *value; /* an array representing the value */ -}; - -/* keyset(TID + OID) info */ -struct KeySet_ { - UWORD status; - UInt2 offset; - UInt4 blocknum; - OID oid; -}; -/* Rollback(index + original TID) info */ -struct Rollback_ { - SQLLEN index; - UInt4 blocknum; - UInt2 offset; - OID oid; - UWORD option; -}; -#define KEYSET_INFO_PUBLIC 0x07 -#define CURS_SELF_ADDING (1L << 3) -#define CURS_SELF_DELETING (1L << 4) -#define CURS_SELF_UPDATING (1L << 5) -#define CURS_SELF_ADDED (1L << 6) -#define CURS_SELF_DELETED (1L << 7) -#define CURS_SELF_UPDATED (1L << 8) -#define CURS_NEEDS_REREAD (1L << 9) -#define CURS_IN_ROWSET (1L << 10) -#define CURS_OTHER_DELETED (1L << 11) - -/* These macros are wrappers for the corresponding set_tuplefield functions - but these handle automatic NULL determination and call set_tuplefield_null() - if appropriate for the datatype (used by SQLGetTypeInfo). -*/ -#define set_nullfield_string(FLD, VAL) \ - ((VAL) ? set_tuplefield_string(FLD, (VAL)) : set_tuplefield_null(FLD)) -#define set_nullfield_int2(FLD, VAL) \ - ((VAL) != -1 ? set_tuplefield_int2(FLD, (VAL)) : set_tuplefield_null(FLD)) -#define set_nullfield_int4(FLD, VAL) \ - ((VAL) != -1 ? set_tuplefield_int4(FLD, (VAL)) : set_tuplefield_null(FLD)) - -void set_tuplefield_null(TupleField *tuple_field); -void set_tuplefield_string(TupleField *tuple_field, const char *string); -void set_tuplefield_int2(TupleField *tuple_field, Int2 value); -void set_tuplefield_int4(TupleField *tuple_field, Int4 value); -SQLLEN ClearCachedRows(TupleField *tuple, int num_fields, SQLLEN num_rows); - -typedef struct _OPENSEARCH_BM_ { - Int4 index; - KeySet keys; -} OPENSEARCH_BM; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/sql-odbc/src/sqlodbc/unicode_support.h b/sql-odbc/src/sqlodbc/unicode_support.h deleted file mode 100644 index e2b2a63521..0000000000 --- a/sql-odbc/src/sqlodbc/unicode_support.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef __UNICODE_SUPPORT_H__ -#define __UNICODE_SUPPORT_H__ - -#include "opensearch_odbc.h" - -#ifdef UNICODE_SUPPORT -#define WCLEN sizeof(SQLWCHAR) -enum { CONVTYPE_UNKNOWN, WCSTYPE_UTF16_LE, WCSTYPE_UTF32_LE, C16TYPE_UTF16_LE }; -char *ucs2_to_utf8(const SQLWCHAR *ucs2str, SQLLEN ilen, SQLLEN *olen, - BOOL tolower); -SQLULEN utf8_to_ucs2_lf(const char *utf8str, SQLLEN ilen, BOOL lfconv, - SQLWCHAR *ucs2str, SQLULEN buflen, BOOL errcheck); -int get_convtype(void); -#define utf8_to_ucs2(utf8str, ilen, ucs2str, buflen) \ - utf8_to_ucs2_lf(utf8str, ilen, FALSE, ucs2str, buflen, FALSE) - -SQLLEN bindcol_hybrid_estimate(const char *ldt, BOOL lf_conv, char **wcsbuf); -SQLLEN bindcol_hybrid_exec(SQLWCHAR *utf16, const char *ldt, size_t n, - BOOL lf_conv, char **wcsbuf); -SQLLEN bindcol_localize_estimate(const char *utf8dt, BOOL lf_conv, - char **wcsbuf); -SQLLEN bindcol_localize_exec(char *ldt, size_t n, BOOL lf_conv, char **wcsbuf); -SQLLEN bindpara_wchar_to_msg(const SQLWCHAR *utf16, char **wcsbuf, SQLLEN used); - -SQLLEN locale_to_sqlwchar(SQLWCHAR *utf16, const char *ldt, size_t n, - BOOL lf_conv); -#endif /* UNICODE_SUPPORT */ - -#endif /* __UNICODE_SUPPORT_H__ */ diff --git a/sql-odbc/src/sqlodbc/version.h b/sql-odbc/src/sqlodbc/version.h deleted file mode 100644 index baf7e67abc..0000000000 --- a/sql-odbc/src/sqlodbc/version.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef __VERSION_H__ -#define __VERSION_H__ - -/* - * BuildAll may pass ELASTICDRIVERVERSION, ELASTIC_RESOURCE_VERSION - * and OPENSEARCH_DRVFILE_VERSION via winbuild/elasticodbc.vcxproj. - */ -#ifdef OPENSEARCH_ODBC_VERSION - -#ifndef OPENSEARCHDRIVERVERSION -#define OPENSEARCHDRIVERVERSION OPENSEARCH_ODBC_VERSION -#endif -#ifndef OPENSEARCH_RESOURCE_VERSION -#define OPENSEARCH_RESOURCE_VERSION OPENSEARCHDRIVERVERSION -#endif -#ifndef OPENSEARCH_DRVFILE_VERSION -#define OPENSEARCH_DRVFILE_VERSION OPENSEARCH_ODBC_DRVFILE_VERSION -#endif - -#endif // OPENSEARCH_ODBC_VERSION - -#endif diff --git a/sql-odbc/src/sqlodbc/win_setup.h b/sql-odbc/src/sqlodbc/win_setup.h deleted file mode 100644 index 9abae27d30..0000000000 --- a/sql-odbc/src/sqlodbc/win_setup.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef _WIN_SETUP_H__ -#define _WIN_SETUP_H__ - -#ifndef INTFUNC -#define INTFUNC __stdcall -#endif /* INTFUNC */ -#define MAXDSNAME (32 + 1) /* Max data source name length */ -/* Globals */ -/* NOTE: All these are used by the dialog procedures */ -typedef struct tagSETUPDLG { - HWND hwndParent; /* Parent window handle */ - LPCSTR lpszDrvr; /* Driver description */ - ConnInfo ci; - char szDSN[MAXDSNAME]; /* Original data source name */ - BOOL fNewDSN; /* New data source flag */ - BOOL fDefault; /* Default data source flag */ - -} SETUPDLG, *LPSETUPDLG; - -/* Prototypes */ -INT_PTR CALLBACK ConfigDlgProc(HWND hdlg, UINT wMsg, WPARAM wParam, - LPARAM lParam); -BOOL INTFUNC ChangeDriverName(HWND hwnd, LPSETUPDLG lpsetupdlg, - LPCSTR driver_name); - -void test_connection(HANDLE hwnd, ConnInfo *ci, BOOL withDTC); - -#endif /* _WIN_SETUP_H__ */ diff --git a/sql-odbc/src/sqlodbc/win_unicode.c b/sql-odbc/src/sqlodbc/win_unicode.c deleted file mode 100644 index 706e86e53c..0000000000 --- a/sql-odbc/src/sqlodbc/win_unicode.c +++ /dev/null @@ -1,1091 +0,0 @@ -#ifdef UNICODE_SUPPORT - -#include -#include -#include -#include "unicode_support.h" - -#ifdef WIN32 -#define FORMAT_SIZE_T "%Iu" -#else -#define FORMAT_SIZE_T "%zu" -#endif - -#if (defined(__STDC_ISO_10646__) && defined(HAVE_MBSTOWCS) \ - && defined(HAVE_WCSTOMBS)) \ - || defined(WIN32) -#define __WCS_ISO10646__ -static BOOL use_wcs = FALSE; -#endif - -#if (defined(__STDC_UTF_16__) && defined(HAVE_UCHAR_H) \ - && defined(HAVE_MBRTOC16) && defined(HAVE_C16RTOMB)) -#define __CHAR16_UTF_16__ -#include -static BOOL use_c16 = FALSE; -#endif - -static int convtype = -1; - -int get_convtype(void) { - const UCHAR *cdt; - (void)(cdt); -#if defined(__WCS_ISO10646__) - if (convtype < 0) { - wchar_t *wdt = L"a"; - int sizeof_w = sizeof(wchar_t); - - cdt = (UCHAR *)wdt; - switch (sizeof_w) { - case 2: - if ('a' == cdt[0] && '\0' == cdt[1] && '\0' == cdt[2] - && '\0' == cdt[3]) { - MYLOG(OPENSEARCH_DEBUG, " UTF-16LE detected\n"); - convtype = WCSTYPE_UTF16_LE; - use_wcs = TRUE; - } - break; - case 4: - if ('a' == cdt[0] && '\0' == cdt[1] && '\0' == cdt[2] - && '\0' == cdt[3] && '\0' == cdt[4] && '\0' == cdt[5] - && '\0' == cdt[6] && '\0' == cdt[7]) { - MYLOG(OPENSEARCH_DEBUG, " UTF32-LE detected\n"); - convtype = WCSTYPE_UTF32_LE; - use_wcs = TRUE; - } - break; - } - } -#endif /* __WCS_ISO10646__ */ -#ifdef __CHAR16_UTF_16__ - if (convtype < 0) { - char16_t *c16dt = u"a"; - - cdt = (UCHAR *)c16dt; - if ('a' == cdt[0] && '\0' == cdt[1] && '\0' == cdt[2] - && '\0' == cdt[3]) { - MYLOG(OPENSEARCH_DEBUG, " C16_UTF-16LE detected\n"); - convtype = C16TYPE_UTF16_LE; - use_c16 = TRUE; - } - } -#endif /* __CHAR16_UTF_16__ */ - if (convtype < 0) - convtype = CONVTYPE_UNKNOWN; /* unknown */ - return convtype; -} - -#define byte3check 0xfffff800 -#define byte2_base 0x80c0 -#define byte2_mask1 0x07c0 -#define byte2_mask2 0x003f -#define byte3_base 0x8080e0 -#define byte3_mask1 0xf000 -#define byte3_mask2 0x0fc0 -#define byte3_mask3 0x003f - -#define surrog_check 0xfc00 -#define surrog1_bits 0xd800 -#define surrog2_bits 0xdc00 -#define byte4_base 0x808080f0 -#define byte4_sr1_mask1 0x0700 -#define byte4_sr1_mask2 0x00fc -#define byte4_sr1_mask3 0x0003 -#define byte4_sr2_mask1 0x03c0 -#define byte4_sr2_mask2 0x003f -#define surrogate_adjust (0x10000 >> 10) - -static int little_endian = -1; - -SQLULEN ucs2strlen(const SQLWCHAR *ucs2str) { - SQLULEN len; - for (len = 0; ucs2str[len]; len++) - ; - return len; -} -char *ucs2_to_utf8(const SQLWCHAR *ucs2str, SQLLEN ilen, SQLLEN *olen, - BOOL lower_identifier) { - char *utf8str; - int len = 0; - MYLOG(OPENSEARCH_DEBUG, "%p ilen=" FORMAT_LEN " ", ucs2str, ilen); - - if (!ucs2str) { - if (olen) - *olen = SQL_NULL_DATA; - return NULL; - } - if (little_endian < 0) { - int crt = 1; - little_endian = (0 != ((char *)&crt)[0]); - } - if (ilen < 0) - ilen = ucs2strlen(ucs2str); - MYPRINTF(0, " newlen=" FORMAT_LEN, ilen); - utf8str = (char *)malloc(ilen * 4 + 1); - if (utf8str) { - int i = 0; - UInt2 byte2code; - Int4 byte4code, surrd1, surrd2; - const SQLWCHAR *wstr; - - for (i = 0, wstr = ucs2str; i < ilen; i++, wstr++) { - if (!*wstr) - break; - else if (0 == (*wstr & 0xffffff80)) /* ASCII */ - { - if (lower_identifier) - utf8str[len++] = (char)tolower(*wstr); - else - utf8str[len++] = (char)*wstr; - } else if ((*wstr & byte3check) == 0) { - byte2code = byte2_base | ((byte2_mask1 & *wstr) >> 6) - | ((byte2_mask2 & *wstr) << 8); - if (little_endian) - memcpy(utf8str + len, (char *)&byte2code, - sizeof(byte2code)); - else { - utf8str[len] = ((char *)&byte2code)[1]; - utf8str[len + 1] = ((char *)&byte2code)[0]; - } - len += sizeof(byte2code); - } - /* surrogate pair check for non ucs-2 code */ - else if (surrog1_bits == (*wstr & surrog_check)) { - surrd1 = (*wstr & ~surrog_check) + surrogate_adjust; - wstr++; - i++; - surrd2 = (*wstr & ~surrog_check); - byte4code = byte4_base | ((byte4_sr1_mask1 & surrd1) >> 8) - | ((byte4_sr1_mask2 & surrd1) << 6) - | ((byte4_sr1_mask3 & surrd1) << 20) - | ((byte4_sr2_mask1 & surrd2) << 10) - | ((byte4_sr2_mask2 & surrd2) << 24); - if (little_endian) - memcpy(utf8str + len, (char *)&byte4code, - sizeof(byte4code)); - else { - utf8str[len] = ((char *)&byte4code)[3]; - utf8str[len + 1] = ((char *)&byte4code)[2]; - utf8str[len + 2] = ((char *)&byte4code)[1]; - utf8str[len + 3] = ((char *)&byte4code)[0]; - } - len += sizeof(byte4code); - } else { - byte4code = byte3_base | ((byte3_mask1 & *wstr) >> 12) - | ((byte3_mask2 & *wstr) << 2) - | ((byte3_mask3 & *wstr) << 16); - if (little_endian) - memcpy(utf8str + len, (char *)&byte4code, 3); - else { - utf8str[len] = ((char *)&byte4code)[3]; - utf8str[len + 1] = ((char *)&byte4code)[2]; - utf8str[len + 2] = ((char *)&byte4code)[1]; - } - len += 3; - } - } - utf8str[len] = '\0'; - if (olen) - *olen = len; - } - return utf8str; -} - -#define byte3_m1 0x0f -#define byte3_m2 0x3f -#define byte3_m3 0x3f -#define byte2_m1 0x1f -#define byte2_m2 0x3f -#define byte4_m1 0x07 -#define byte4_m2 0x3f -#define byte4_m31 0x30 -#define byte4_m32 0x0f -#define byte4_m4 0x3f - -/* - * Convert a string from UTF-8 encoding to UCS-2. - * - * utf8str - input string in UTF-8 - * ilen - length of input string in bytes (or minus) - * lfconv - TRUE if line feeds (LF) should be converted to CR + LF - * ucs2str - output buffer - * bufcount - size of output buffer - * errcheck - if TRUE, check for invalidly encoded input characters - * - * Returns the number of SQLWCHARs copied to output buffer. If the output - * buffer is too small, the output is truncated. The output string is - * NULL-terminated, except when the output is truncated. - */ -SQLULEN -utf8_to_ucs2_lf(const char *utf8str, SQLLEN ilen, BOOL lfconv, - SQLWCHAR *ucs2str, SQLULEN bufcount, BOOL errcheck) { - int i; - SQLULEN rtn, ocount, wcode; - const UCHAR *str; - - MYLOG(OPENSEARCH_DEBUG, "ilen=" FORMAT_LEN " bufcount=" FORMAT_ULEN, ilen, - bufcount); - if (!utf8str) - return 0; - - if (!bufcount) - ucs2str = NULL; - else if (!ucs2str) - bufcount = 0; - if (ilen < 0) - ilen = strlen(utf8str); - for (i = 0, ocount = 0, str = (SQLCHAR *)utf8str; i < ilen && *str;) { - if ((*str & 0x80) == 0) { - if (lfconv && OPENSEARCH_LINEFEED == *str - && (i == 0 || OPENSEARCH_CARRIAGE_RETURN != str[-1])) { - if (ocount < bufcount) - ucs2str[ocount] = OPENSEARCH_CARRIAGE_RETURN; - ocount++; - } - if (ocount < bufcount) - ucs2str[ocount] = *str; - ocount++; - i++; - str++; - } else if (0xf8 == (*str & 0xf8)) /* more than 5 byte code */ - { - ocount = (SQLULEN)-1; - goto cleanup; - } else if (0xf0 == (*str & 0xf8)) /* 4 byte code */ - { - if (errcheck) { - if (i + 4 > ilen || 0 == (str[1] & 0x80) || 0 == (str[2] & 0x80) - || 0 == (str[3] & 0x80)) { - ocount = (SQLULEN)-1; - goto cleanup; - } - } - if (ocount < bufcount) { - wcode = (surrog1_bits | ((((UInt4)*str) & byte4_m1) << 8) - | ((((UInt4)str[1]) & byte4_m2) << 2) - | ((((UInt4)str[2]) & byte4_m31) >> 4)) - - surrogate_adjust; - ucs2str[ocount] = (SQLWCHAR)wcode; - } - ocount++; - if (ocount < bufcount) { - wcode = surrog2_bits | ((((UInt4)str[2]) & byte4_m32) << 6) - | (((UInt4)str[3]) & byte4_m4); - ucs2str[ocount] = (SQLWCHAR)wcode; - } - ocount++; - i += 4; - str += 4; - } else if (0xe0 == (*str & 0xf0)) /* 3 byte code */ - { - if (errcheck) { - if (i + 3 > ilen || 0 == (str[1] & 0x80) - || 0 == (str[2] & 0x80)) { - ocount = (SQLULEN)-1; - goto cleanup; - } - } - if (ocount < bufcount) { - wcode = ((((UInt4)*str) & byte3_m1) << 12) - | ((((UInt4)str[1]) & byte3_m2) << 6) - | (((UInt4)str[2]) & byte3_m3); - ucs2str[ocount] = (SQLWCHAR)wcode; - } - ocount++; - i += 3; - str += 3; - } else if (0xc0 == (*str & 0xe0)) /* 2 byte code */ - { - if (errcheck) { - if (i + 2 > ilen || 0 == (str[1] & 0x80)) { - ocount = (SQLULEN)-1; - goto cleanup; - } - } - if (ocount < bufcount) { - wcode = ((((UInt4)*str) & byte2_m1) << 6) - | (((UInt4)str[1]) & byte2_m2); - ucs2str[ocount] = (SQLWCHAR)wcode; - } - ocount++; - i += 2; - str += 2; - } else { - ocount = (SQLULEN)-1; - goto cleanup; - } - } -cleanup: - rtn = ocount; - if (ocount == (SQLULEN)-1) { - if (!errcheck) - rtn = 0; - ocount = 0; - } - if (ocount < bufcount && ucs2str) - ucs2str[ocount] = 0; - MYPRINTF(OPENSEARCH_ALL, " ocount=" FORMAT_ULEN "\n", ocount); - return rtn; -} - -#ifdef __WCS_ISO10646__ - -/* UCS4 => utf8 */ -#define byte4check 0xffff0000 -#define byte4_check 0x10000 -#define byte4_mask1 0x1c0000 -#define byte4_mask2 0x3f000 -#define byte4_mask3 0x0fc0 -#define byte4_mask4 0x003f - -#define byte4_m3 0x3f - -static SQLULEN ucs4strlen(const UInt4 *ucs4str) { - SQLULEN len; - for (len = 0; ucs4str[len]; len++) - ; - return len; -} - -static char *ucs4_to_utf8(const UInt4 *ucs4str, SQLLEN ilen, SQLLEN *olen, - BOOL lower_identifier) { - char *utf8str; - int len = 0; - MYLOG(OPENSEARCH_DEBUG, " %p ilen=" FORMAT_LEN "\n", ucs4str, ilen); - - if (!ucs4str) { - if (olen) - *olen = SQL_NULL_DATA; - return NULL; - } - if (little_endian < 0) { - int crt = 1; - little_endian = (0 != ((char *)&crt)[0]); - } - if (ilen < 0) - ilen = ucs4strlen(ucs4str); - MYLOG(OPENSEARCH_DEBUG, " newlen=" FORMAT_LEN "\n", ilen); - utf8str = (char *)malloc(ilen * 4 + 1); - if (utf8str) { - int i; - UInt2 byte2code; - Int4 byte4code; - const UInt4 *wstr; - - for (i = 0, wstr = ucs4str; i < ilen; i++, wstr++) { - if (!*wstr) - break; - else if (0 == (*wstr & 0xffffff80)) /* ASCII */ - { - if (lower_identifier) - utf8str[len++] = (char)tolower(*wstr); - else - utf8str[len++] = (char)*wstr; - } else if ((*wstr & byte3check) == 0) { - byte2code = byte2_base | ((byte2_mask1 & *wstr) >> 6) - | ((byte2_mask2 & *wstr) << 8); - if (little_endian) - memcpy(utf8str + len, (char *)&byte2code, - sizeof(byte2code)); - else { - utf8str[len] = ((char *)&byte2code)[1]; - utf8str[len + 1] = ((char *)&byte2code)[0]; - } - len += sizeof(byte2code); - } else if ((*wstr & byte4check) == 0) { - byte4code = byte3_base | ((byte3_mask1 & *wstr) >> 12) - | ((byte3_mask2 & *wstr) << 2) - | ((byte3_mask3 & *wstr) << 16); - if (little_endian) - memcpy(utf8str + len, (char *)&byte4code, 3); - else { - utf8str[len] = ((char *)&byte4code)[3]; - utf8str[len + 1] = ((char *)&byte4code)[2]; - utf8str[len + 2] = ((char *)&byte4code)[1]; - } - len += 3; - } else { - byte4code = byte4_base | ((byte4_mask1 & *wstr) >> 18) - | ((byte4_mask2 & *wstr) >> 4) - | ((byte4_mask3 & *wstr) << 10) - | ((byte4_mask4 & *wstr) << 24); - /* MYLOG(OPENSEARCH_DEBUG, " %08x->%08x\n", *wstr, byte4code); */ - if (little_endian) - memcpy(utf8str + len, (char *)&byte4code, - sizeof(byte4code)); - else { - utf8str[len] = ((char *)&byte4code)[3]; - utf8str[len + 1] = ((char *)&byte4code)[2]; - utf8str[len + 2] = ((char *)&byte4code)[1]; - utf8str[len + 3] = ((char *)&byte4code)[0]; - } - len += sizeof(byte4code); - } - } - utf8str[len] = '\0'; - if (olen) - *olen = len; - } - return utf8str; -} - -/* - * Convert a string from UTF-8 encoding to UTF-32. - * - * utf8str - input string in UTF-8 - * ilen - length of input string in bytes (or minus) - * lfconv - TRUE if line feeds (LF) should be converted to CR + LF - * ucs4str - output buffer - * bufcount - size of output buffer - * errcheck - if TRUE, check for invalidly encoded input characters - * - * Returns the number of UInt4s copied to output buffer. If the output - * buffer is too small, the output is truncated. The output string is - * NULL-terminated, except when the output is truncated. - */ -static SQLULEN utf8_to_ucs4_lf(const char *utf8str, SQLLEN ilen, BOOL lfconv, - UInt4 *ucs4str, SQLULEN bufcount, - BOOL errcheck) { - int i; - SQLULEN rtn, ocount, wcode; - const UCHAR *str; - - MYLOG(OPENSEARCH_DEBUG, " ilen=" FORMAT_LEN " bufcount=" FORMAT_ULEN "\n", ilen, bufcount); - if (!utf8str) - return 0; - - if (!bufcount) - ucs4str = NULL; - else if (!ucs4str) - bufcount = 0; - if (ilen < 0) - ilen = strlen(utf8str); - for (i = 0, ocount = 0, str = (SQLCHAR *)utf8str; i < ilen && *str;) { - if ((*str & 0x80) == 0) { - if (lfconv && OPENSEARCH_LINEFEED == *str - && (i == 0 || OPENSEARCH_CARRIAGE_RETURN != str[-1])) { - if (ocount < bufcount) - ucs4str[ocount] = OPENSEARCH_CARRIAGE_RETURN; - ocount++; - } - if (ocount < bufcount) - ucs4str[ocount] = *str; - ocount++; - i++; - str++; - } else if (0xf8 == (*str & 0xf8)) /* more than 5 byte code */ - { - ocount = (SQLULEN)-1; - goto cleanup; - } else if (0xf0 == (*str & 0xf8)) /* 4 byte code */ - { - if (errcheck) { - if (i + 4 > ilen || 0 == (str[1] & 0x80) || 0 == (str[2] & 0x80) - || 0 == (str[3] & 0x80)) { - ocount = (SQLULEN)-1; - goto cleanup; - } - } - if (ocount < bufcount) { - wcode = (((((UInt4)*str) & byte4_m1) << 18) - | ((((UInt4)str[1]) & byte4_m2) << 12) - | ((((UInt4)str[2]) & byte4_m3) << 6)) - | (((UInt4)str[3]) & byte4_m4); - ucs4str[ocount] = (unsigned int)wcode; - } - ocount++; - i += 4; - str += 4; - } else if (0xe0 == (*str & 0xf0)) /* 3 byte code */ - { - if (errcheck) { - if (i + 3 > ilen || 0 == (str[1] & 0x80) - || 0 == (str[2] & 0x80)) { - ocount = (SQLULEN)-1; - goto cleanup; - } - } - if (ocount < bufcount) { - wcode = ((((UInt4)*str) & byte3_m1) << 12) - | ((((UInt4)str[1]) & byte3_m2) << 6) - | (((UInt4)str[2]) & byte3_m3); - ucs4str[ocount] = (unsigned int)wcode; - } - ocount++; - i += 3; - str += 3; - } else if (0xc0 == (*str & 0xe0)) /* 2 byte code */ - { - if (errcheck) { - if (i + 2 > ilen || 0 == (str[1] & 0x80)) { - ocount = (SQLULEN)-1; - goto cleanup; - } - } - if (ocount < bufcount) { - wcode = ((((UInt4)*str) & byte2_m1) << 6) - | (((UInt4)str[1]) & byte2_m2); - ucs4str[ocount] = (SQLWCHAR)wcode; - } - ocount++; - i += 2; - str += 2; - } else { - ocount = (SQLULEN)-1; - goto cleanup; - } - } -cleanup: - rtn = ocount; - if (ocount == (SQLULEN)-1) { - if (!errcheck) - rtn = 0; - ocount = 0; - } - if (ocount < bufcount && ucs4str) - ucs4str[ocount] = 0; - MYLOG(OPENSEARCH_DEBUG, " ocount=" FORMAT_ULEN "\n", ocount); - return rtn; -} - -#define SURROGATE_CHECK 0xfc -#define SURROG1_BYTE 0xd8 -#define SURROG2_BYTE 0xdc - -static int ucs4_to_ucs2_lf(const unsigned int *ucs4str, SQLLEN ilen, - SQLWCHAR *ucs2str, int bufcount, BOOL lfconv) { - int outlen = 0, i; - UCHAR *ucdt; - SQLWCHAR *sqlwdt, dmy_wchar; - UCHAR *const udt = (UCHAR *)&dmy_wchar; - unsigned int uintdt; - - MYLOG(OPENSEARCH_DEBUG, " ilen=" FORMAT_LEN " bufcount=%d\n", ilen, bufcount); - if (ilen < 0) - ilen = ucs4strlen(ucs4str); - for (i = 0; i < ilen && (uintdt = ucs4str[i], uintdt); i++) { - sqlwdt = (SQLWCHAR *)&uintdt; - ucdt = (UCHAR *)&uintdt; - if (0 == sqlwdt[1]) { - if (lfconv && OPENSEARCH_LINEFEED == ucdt[0] - && (i == 0 - || OPENSEARCH_CARRIAGE_RETURN != *((UCHAR *)&ucs4str[i - 1]))) { - if (outlen < bufcount) { - udt[0] = OPENSEARCH_CARRIAGE_RETURN; - udt[1] = 0; - ucs2str[outlen] = *((SQLWCHAR *)udt); - } - outlen++; - } - if (outlen < bufcount) - ucs2str[outlen] = sqlwdt[0]; - outlen++; - continue; - } - sqlwdt[1]--; - udt[0] = ((0xfc & ucdt[1]) >> 2) | ((0x3 & ucdt[2]) << 6); - // printf("%02x", udt[0]); - udt[1] = SURROG1_BYTE | ((0xc & ucdt[2]) >> 2); - // printf("%02x", udt[1]); - if (outlen < bufcount) - ucs2str[outlen] = *((SQLWCHAR *)udt); - outlen++; - udt[0] = ucdt[0]; - // printf("%02x", udt[0]); - udt[1] = SURROG2_BYTE | (0x3 & ucdt[1]); - // printf("%02x\n", udt[1]); - if (outlen < bufcount) - ucs2str[outlen] = *((SQLWCHAR *)udt); - outlen++; - } - if (outlen < bufcount) - ucs2str[outlen] = 0; - - return outlen; -} -static int ucs2_to_ucs4(const SQLWCHAR *ucs2str, SQLLEN ilen, - unsigned int *ucs4str, int bufcount) { - int outlen = 0, i; - UCHAR *ucdt; - SQLWCHAR sqlwdt; - unsigned int dmy_uint; - UCHAR *const udt = (UCHAR *)&dmy_uint; - - MYLOG(OPENSEARCH_DEBUG, " ilen=" FORMAT_LEN " bufcount=%d\n", ilen, bufcount); - if (ilen < 0) - ilen = ucs2strlen(ucs2str); - udt[3] = 0; /* always */ - for (i = 0; i < ilen && (sqlwdt = ucs2str[i], sqlwdt); i++) { - ucdt = (UCHAR *)(ucs2str + i); - // printf("IN=%x\n", sqlwdt); - if ((ucdt[1] & SURROGATE_CHECK) != SURROG1_BYTE) { - // printf("SURROG1=%2x\n", ucdt[1] & SURROG1_BYTE); - if (outlen < bufcount) { - udt[0] = ucdt[0]; - udt[1] = ucdt[1]; - udt[2] = 0; - ucs4str[outlen] = *((unsigned int *)udt); - } - outlen++; - continue; - } - /* surrogate pair */ - udt[0] = ucdt[2]; - udt[1] = (ucdt[3] & 0x3) | ((ucdt[0] & 0x3f) << 2); - udt[2] = (((ucdt[0] & 0xc0) >> 6) | ((ucdt[1] & 0x3) << 2)) + 1; - // udt[3] = 0; needless - if (outlen < bufcount) - ucs4str[outlen] = *((unsigned int *)udt); - outlen++; - i++; - } - if (outlen < bufcount) - ucs4str[outlen] = 0; - - return outlen; -} -#endif /* __WCS_ISO10646__ */ - -#if defined(__WCS_ISO10646__) - -static SQLULEN utf8_to_wcs_lf(const char *utf8str, SQLLEN ilen, BOOL lfconv, - wchar_t *wcsstr, SQLULEN bufcount, - BOOL errcheck) { - switch (get_convtype()) { - case WCSTYPE_UTF16_LE: - return utf8_to_ucs2_lf(utf8str, ilen, lfconv, (SQLWCHAR *)wcsstr, - bufcount, errcheck); - case WCSTYPE_UTF32_LE: - return utf8_to_ucs4_lf(utf8str, ilen, lfconv, (UInt4 *)wcsstr, - bufcount, errcheck); - } - return (SQLULEN)~0; -} - -static char *wcs_to_utf8(const wchar_t *wcsstr, SQLLEN ilen, SQLLEN *olen, - BOOL lower_identifier) { - switch (get_convtype()) { - case WCSTYPE_UTF16_LE: - return ucs2_to_utf8((const SQLWCHAR *)wcsstr, ilen, olen, - lower_identifier); - case WCSTYPE_UTF32_LE: - return ucs4_to_utf8((const UInt4 *)wcsstr, ilen, olen, - lower_identifier); - } - - return NULL; -} - -/* - * Input strings must be NULL terminated. - * Output wide character strings would be NULL terminated. The result - * outmsg would be truncated when the buflen is small. - * - * The output NULL terminator is counted as buflen. - * if outmsg is NULL or buflen is 0, only output length is returned. - * As for return values, NULL terminators aren't counted. - */ -static int msgtowstr(const char *inmsg, wchar_t *outmsg, int buflen) { - int outlen = -1; - - MYLOG(OPENSEARCH_DEBUG, " inmsg=%p buflen=%d\n", inmsg, buflen); -#ifdef WIN32 - if (NULL == outmsg) - buflen = 0; - if ((outlen = - MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED | MB_ERR_INVALID_CHARS, - inmsg, -1, outmsg, buflen)) - > 0) - outlen--; - else if (ERROR_INSUFFICIENT_BUFFER == GetLastError()) - outlen = - MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED | MB_ERR_INVALID_CHARS, - inmsg, -1, NULL, 0) - - 1; - else - outlen = -1; -#else - if (0 == buflen) - outmsg = NULL; - outlen = mbstowcs((wchar_t *)outmsg, inmsg, buflen); -#endif /* WIN32 */ - if (outmsg && outlen >= buflen) { - outmsg[buflen - 1] = 0; - MYLOG(OPENSEARCH_DEBUG, " out=%dchars truncated to %d\n", outlen, buflen - 1); - } - MYLOG(OPENSEARCH_DEBUG, " buf=%dchars out=%dchars\n", buflen, outlen); - - return outlen; -} - -/* - * Input wide character strings must be NULL terminated. - * Output strings would be NULL terminated. The result outmsg would be - * truncated when the buflen is small. - * - * The output NULL terminator is counted as buflen. - * if outmsg is NULL or buflen is 0, only output length is returned. - * As for return values, NULL terminators aren't counted. - */ -static int wstrtomsg(const wchar_t *wstr, char *outmsg, int buflen) { - int outlen = -1; - - MYLOG(OPENSEARCH_DEBUG, " wstr=%p buflen=%d\n", wstr, buflen); -#ifdef WIN32 - if (NULL == outmsg) - buflen = 0; - if ((outlen = WideCharToMultiByte(CP_ACP, 0, wstr, -1, outmsg, buflen, NULL, - NULL)) - > 0) - outlen--; - else if (ERROR_INSUFFICIENT_BUFFER == GetLastError()) - outlen = - WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL) - 1; - else - outlen = -1; -#else - if (0 == buflen) - outmsg = NULL; - outlen = wcstombs(outmsg, wstr, buflen); -#endif /* WIN32 */ - if (outmsg && outlen >= buflen) { - outmsg[buflen - 1] = 0; - MYLOG(OPENSEARCH_DEBUG, " out=%dbytes truncated to %d\n", outlen, buflen - 1); - } - MYLOG(OPENSEARCH_DEBUG, " buf=%dbytes outlen=%dbytes\n", buflen, outlen); - - return outlen; -} -#endif /* __WCS_ISO10646__ */ - -#if defined(__CHAR16_UTF_16__) - -static mbstate_t initial_state; - -static SQLLEN mbstoc16_lf(char16_t *c16dt, const char *c8dt, size_t n, - BOOL lf_conv) { - int i; - size_t brtn; - const char *cdt; - mbstate_t mbst = initial_state; - - MYLOG(OPENSEARCH_DEBUG, " c16dt=%p size=" FORMAT_SIZE_T "\n", c16dt, n); - for (i = 0, cdt = c8dt; i < n || (!c16dt); i++) { - if (lf_conv && OPENSEARCH_LINEFEED == *cdt && i > 0 - && OPENSEARCH_CARRIAGE_RETURN != cdt[-1]) { - if (c16dt) - c16dt[i] = OPENSEARCH_CARRIAGE_RETURN; - i++; - } - brtn = mbrtoc16(c16dt ? c16dt + i : NULL, cdt, 4, &mbst); - if (0 == brtn) - break; - if (brtn == (size_t)-1 || brtn == (size_t)-2) - return -1; - if (brtn == (size_t)-3) - continue; - cdt += brtn; - } - if (c16dt && i >= n) - c16dt[n - 1] = 0; - - return i; -} - -static SQLLEN c16tombs(char *c8dt, const char16_t *c16dt, size_t n) { - int i; - SQLLEN result = 0; - size_t brtn; - char *cdt, c4byte[4]; - mbstate_t mbst = initial_state; - - MYLOG(OPENSEARCH_DEBUG, " c8dt=%p size=" FORMAT_SIZE_T "u\n", c8dt, n); - if (!c8dt) - n = 0; - for (i = 0, cdt = c8dt; c16dt[i] && (result < n || (!cdt)); i++) { - if (NULL != cdt && result + 4 < n) - brtn = c16rtomb(cdt, c16dt[i], &mbst); - else { - brtn = c16rtomb(c4byte, c16dt[i], &mbst); - if (brtn < 5) { - SQLLEN result_n = result + brtn; - - if (result_n < n) - memcpy(cdt, c4byte, brtn); - else { - if (cdt && n > 0) { - c8dt[result] = '\0'; /* truncate */ - return result_n; - } - } - } - } - /* - printf("c16dt=%04X brtn=%lu result=%ld cdt=%02X%02X%02X%02X\n", - c16dt[i], brtn, result, (UCHAR) cdt[0], (UCHAR) cdt[1], (UCHAR) - cdt[2], (UCHAR) cdt[3]); - */ - if (brtn == (size_t)-1) { - if (n > 0) - c8dt[n - 1] = '\0'; - return -1; - } - if (cdt) - cdt += brtn; - result += brtn; - } - if (cdt) - *cdt = '\0'; - - return result; -} -#endif /* __CHAR16_UTF_16__ */ - - -// -// SQLBindParameter hybrid case -// SQLWCHAR(UTF-16) => the current locale -// -SQLLEN bindpara_wchar_to_msg(const SQLWCHAR *utf16, char **wcsbuf, - SQLLEN used) { - SQLLEN l = (-2); - char *ldt = NULL; - SQLWCHAR *utf16_nts, *alloc_nts = NULL, ntsbuf[128]; - int count; - - if (SQL_NTS == used) { - count = (int)ucs2strlen(utf16); - utf16_nts = (SQLWCHAR *)utf16; - } else if (used < 0) - return -1; - else { - count = (int)(used / WCLEN); - if (used + WCLEN <= sizeof(ntsbuf)) - utf16_nts = ntsbuf; - else { - if (NULL == (alloc_nts = (SQLWCHAR *)malloc(used + WCLEN))) - return l; - utf16_nts = alloc_nts; - } - memcpy(utf16_nts, utf16, used); - utf16_nts[count] = 0; - } - - get_convtype(); - MYLOG(OPENSEARCH_DEBUG, "\n"); -#if defined(__WCS_ISO10646__) - if (use_wcs) { -#pragma warning(push) -#pragma warning(disable : 4127) - if (sizeof(SQLWCHAR) == sizeof(wchar_t)) -#pragma warning(pop) - { - ldt = (char *)malloc(2 * count + 1); - l = wstrtomsg((wchar_t *)utf16_nts, ldt, 2 * count + 1); - } else { - unsigned int *utf32 = - (unsigned int *)malloc((count + 1) * sizeof(unsigned int)); - - l = ucs2_to_ucs4(utf16_nts, -1, utf32, count + 1); - if ((l = wstrtomsg((wchar_t *)utf32, NULL, 0)) >= 0) { - ldt = (char *)malloc(l + 1); - l = wstrtomsg((wchar_t *)utf32, ldt, (int)l + 1); - } - free(utf32); - } - } -#endif /* __WCS_ISO10646__ */ -#ifdef __CHAR16_UTF_16__ - if (use_c16) { - ldt = (char *)malloc(4 * count + 1); - l = c16tombs(ldt, (const char16_t *)utf16_nts, 4 * count + 1); - } -#endif /* __CHAR16_UTF_16__ */ - if (l < 0 && NULL != ldt) - free(ldt); - else - *wcsbuf = ldt; - - if (NULL != alloc_nts) - free(alloc_nts); - return l; -} - -size_t convert_linefeeds(const char *s, char *dst, size_t max, BOOL convlf, - BOOL *changed); -// -// SQLBindCol hybrid case -// the current locale => SQLWCHAR(UTF-16) -// -SQLLEN bindcol_hybrid_estimate(const char *ldt, BOOL lf_conv, char **wcsbuf) { - UNUSED(ldt, wcsbuf); - SQLLEN l = (-2); - - get_convtype(); - MYLOG(OPENSEARCH_DEBUG, " lf_conv=%d\n", lf_conv); -#if defined(__WCS_ISO10646__) - if (use_wcs) { - unsigned int *utf32 = NULL; - -#pragma warning(push) -#pragma warning(disable : 4127) - if (sizeof(SQLWCHAR) == sizeof(wchar_t)) -#pragma warning(pop) - { - l = msgtowstr(ldt, (wchar_t *)NULL, 0); - if (l >= 0 && lf_conv) { - BOOL changed; - size_t len; - - len = convert_linefeeds(ldt, NULL, 0, TRUE, &changed); - if (changed) { - l += (len - strlen(ldt)); - *wcsbuf = (char *)malloc(len + 1); - convert_linefeeds(ldt, *wcsbuf, len + 1, TRUE, NULL); - } - } - } else { - int count = (int)strlen(ldt); - - utf32 = (unsigned int *)malloc((count + 1) * sizeof(unsigned int)); - if ((l = msgtowstr(ldt, (wchar_t *)utf32, count + 1)) >= 0) { - l = ucs4_to_ucs2_lf(utf32, -1, NULL, 0, lf_conv); - *wcsbuf = (char *)utf32; - } - } - if (l < 0 && NULL != utf32) - free(utf32); - } -#endif /* __WCS_ISO10646__ */ -#ifdef __CHAR16_UTF_16__ - if (use_c16) - l = mbstoc16_lf((char16_t *)NULL, ldt, 0, lf_conv); -#endif /* __CHAR16_UTF_16__ */ - - return l; -} - -SQLLEN bindcol_hybrid_exec(SQLWCHAR *utf16, const char *ldt, size_t n, - BOOL lf_conv, char **wcsbuf) { - UNUSED(ldt, utf16, wcsbuf); - SQLLEN l = (-2); - - get_convtype(); - MYLOG(OPENSEARCH_DEBUG, " size=" FORMAT_SIZE_T " lf_conv=%d\n", n, lf_conv); -#if defined(__WCS_ISO10646__) - if (use_wcs) { - unsigned int *utf32 = NULL; - BOOL midbuf = (wcsbuf && *wcsbuf); - -#pragma warning(push) -#pragma warning(disable : 4127) - if (sizeof(SQLWCHAR) == sizeof(wchar_t)) -#pragma warning(pop) - { - if (midbuf) - l = msgtowstr(*wcsbuf, (wchar_t *)utf16, (int)n); - else - l = msgtowstr(ldt, (wchar_t *)utf16, (int)n); - } else if (midbuf) { - utf32 = (unsigned int *)*wcsbuf; - l = ucs4_to_ucs2_lf(utf32, -1, utf16, (int)n, lf_conv); - } else { - int count = (int)strlen(ldt); - - utf32 = (unsigned int *)malloc((count + 1) * sizeof(unsigned int)); - if ((l = msgtowstr(ldt, (wchar_t *)utf32, count + 1)) >= 0) { - l = ucs4_to_ucs2_lf(utf32, -1, utf16, (int)n, lf_conv); - } - free(utf32); - } - if (midbuf) { - free(*wcsbuf); - *wcsbuf = NULL; - } - } -#endif /* __WCS_ISO10646__ */ -#ifdef __CHAR16_UTF_16__ - if (use_c16) { - l = mbstoc16_lf((char16_t *)utf16, ldt, n, lf_conv); - } -#endif /* __CHAR16_UTF_16__ */ - - return l; -} - -SQLLEN locale_to_sqlwchar(SQLWCHAR *utf16, const char *ldt, size_t n, - BOOL lf_conv) { - return bindcol_hybrid_exec(utf16, ldt, n, lf_conv, NULL); -} - -// -// SQLBindCol localize case -// UTF-8 => the current locale -// -SQLLEN bindcol_localize_estimate(const char *utf8dt, BOOL lf_conv, - char **wcsbuf) { - UNUSED(utf8dt); - SQLLEN l = (-2); - char *convalc = NULL; - - get_convtype(); - MYLOG(OPENSEARCH_DEBUG, " lf_conv=%d\n", lf_conv); -#if defined(__WCS_ISO10646__) - if (use_wcs) { - wchar_t *wcsalc = NULL; - - l = utf8_to_wcs_lf(utf8dt, -1, lf_conv, NULL, 0, FALSE); - wcsalc = (wchar_t *)malloc(sizeof(wchar_t) * (l + 1)); - convalc = (char *)wcsalc; - l = utf8_to_wcs_lf(utf8dt, -1, lf_conv, wcsalc, l + 1, FALSE); - l = wstrtomsg(wcsalc, NULL, 0); - } -#endif /* __WCS_ISO10646__ */ -#ifdef __CHAR16_UTF_16__ - if (use_c16) { - SQLWCHAR *wcsalc = NULL; - - l = utf8_to_ucs2_lf(utf8dt, -1, lf_conv, (SQLWCHAR *)NULL, 0, FALSE); - wcsalc = (SQLWCHAR *)malloc(sizeof(SQLWCHAR) * (l + 1)); - convalc = (char *)wcsalc; - l = utf8_to_ucs2_lf(utf8dt, -1, lf_conv, wcsalc, l + 1, FALSE); - l = c16tombs(NULL, (char16_t *)wcsalc, 0); - } -#endif /* __CHAR16_UTF_16__ */ - if (l < 0 && NULL != convalc) - free(convalc); - else if (NULL != convalc) - *wcsbuf = (char *)convalc; - - MYLOG(OPENSEARCH_DEBUG, " return=" FORMAT_LEN "\n", l); - return l; -} - -SQLLEN bindcol_localize_exec(char *ldt, size_t n, BOOL lf_conv, char **wcsbuf) { - UNUSED(ldt, lf_conv); - SQLLEN l = (-2); - - get_convtype(); - MYLOG(OPENSEARCH_DEBUG, " size=" FORMAT_SIZE_T "\n", n); -#if defined(__WCS_ISO10646__) - if (use_wcs) { - wchar_t *wcsalc = (wchar_t *)*wcsbuf; - - l = wstrtomsg(wcsalc, ldt, (int)n); - } -#endif /* __WCS_ISO10646__ */ -#ifdef __CHAR16_UTF_16__ - if (use_c16) { - char16_t *wcsalc = (char16_t *)*wcsbuf; - - l = c16tombs(ldt, (char16_t *)wcsalc, n); - } -#endif /* __CHAR16_UTF_16__ */ - free(*wcsbuf); - *wcsbuf = NULL; - - MYLOG(OPENSEARCH_DEBUG, " return=" FORMAT_LEN "\n", l); - return l; -} - -#endif /* UNICODE_SUPPORT */ diff --git a/sql-odbc/src/vcpkg.json b/sql-odbc/src/vcpkg.json deleted file mode 100644 index a5903fbb85..0000000000 --- a/sql-odbc/src/vcpkg.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "sql-odbc", - "version-string": "1.1.0.1", - "dependencies": ["aws-sdk-cpp", "rapidjson", "zlib", "gtest", "curl"], - "builtin-baseline": "6ca56aeb457f033d344a7106cb3f9f1abf8f4e98", - "overrides": [ - { "name": "aws-sdk-cpp", "version": "1.8.83#2" }, - { "name": "rapidjson", "version": "2022-06-28#1" }, - { "name": "zlib", "version": "1.2.12#1" }, - { "name": "gtest", "version": "1.11.0" } - ] -} diff --git a/workbench/.cypress/integration/ui.spec.js b/workbench/.cypress/integration/ui.spec.js deleted file mode 100644 index b552ba24cd..0000000000 --- a/workbench/.cypress/integration/ui.spec.js +++ /dev/null @@ -1,247 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - - -/// - -import { edit } from 'brace'; -import { delay, files, testDataSet, testQueries, verifyDownloadData } from '../utils/constants'; - -describe('Dump test data', () => { - it('Indexes test data for SQL and PPL', () => { - const dumpDataSet = (url, index) => - cy.request(url).then((response) => { - cy.request({ - method: 'POST', - form: true, - url: 'api/console/proxy', - headers: { - 'content-type': 'application/json;charset=UTF-8', - 'osd-xsrf': true, - }, - qs: { - path: `${index}/_bulk`, - method: 'POST', - }, - body: response.body, - }); - }); - - testDataSet.forEach(({url, index}) => dumpDataSet(url, index)); - }); -}); - -describe('Test PPL UI', () => { - beforeEach(() => { - cy.visit('app/opensearch-query-workbench'); - cy.wait(delay); - cy.get('.euiToggle__input[title=PPL]').click({ force: true }); - cy.wait(delay); - }); - - it('Confirm results are empty', () => { - cy.get('.euiTextAlign') - .contains('Enter a query in the query editor above to see results.') - .should('have.length', 1); - }); - - it('Test Run button', () => { - cy.get('textarea.ace_text-input').eq(0).focus().type('source=accounts', { force: true }); - cy.wait(delay); - cy.get('.euiButton__text').contains('Run').click({ force: true }); - cy.wait(delay); - cy.get('.euiTab__content').contains('Events').click({ force: true }); - - cy.get('span.euiTableCellContent__text') - .eq(19) - .should((employer) => { - expect(employer).to.contain('Pyrami'); - }); - }); - - it('Test Clear button', () => { - cy.get('textarea.ace_text-input').eq(0).focus().type('source=accounts', { force: true }); - cy.wait(delay); - cy.get('.euiButton__text').contains('Run').click({ force: true }); - cy.wait(delay); - cy.get('.euiTab__content').contains('Events').click({ force: true }); - cy.wait(delay); - cy.get('.euiButton__text').contains('Clear').click({ force: true }); - cy.wait(delay); - - cy.get('.euiTextAlign') - .contains('Enter a query in the query editor above to see results.') - .should('have.length', 1); - cy.get('.ace_content') - .eq(0) - .then((queryEditor) => { - const editor = edit(queryEditor[0]); - expect(editor.getValue()).to.equal(''); - }); - }); - - it('Test full screen view', () => { - cy.get('.euiButton__text').contains('Full screen view').should('not.exist'); - cy.get('.euiTitle').contains('Query Workbench').should('exist'); - - cy.get('textarea.ace_text-input').eq(0).focus().type('source=accounts', { force: true }); - cy.wait(delay); - cy.get('.euiButton__text').contains('Run').click({ force: true }); - cy.wait(delay); - cy.get('.euiButton__text').contains('Full screen view').click({ force: true }); - - cy.get('.euiTitle').should('not.exist'); - - cy.get('button#exit-fullscreen-button').click({ force: true }); - cy.wait(delay); - cy.get('.euiButton__text').contains('Full screen view').should('exist'); - cy.get('.euiTitle').contains('Query Workbench').should('exist'); - }); -}); - -describe('Test SQL UI', () => { - beforeEach(() => { - cy.visit('app/opensearch-query-workbench'); - cy.wait(delay); - cy.get('.euiToggle__input[title=SQL]').click({ force: true }); - cy.wait(delay); - }); - - it('Confirm results are empty', () => { - cy.get('.euiTextAlign') - .contains('Enter a query in the query editor above to see results.') - .should('have.length', 1); - }); - - it('Test Run button and field search', () => { - cy.get('textarea.ace_text-input') - .eq(0) - .focus() - .type('{enter}select * from accounts where balance > 49500;', { force: true }); - cy.wait(delay); - cy.get('.euiButton__text').contains('Run').click({ force: true }); - cy.wait(delay); - cy.get('.euiTab__content').contains('accounts').click({ force: true }); - - cy.get('input.euiFieldSearch').type('marissa'); - cy.get('span.euiTableCellContent__text') - .eq(13) - .should((account_number) => { - expect(account_number).to.contain('803'); - }); - }); - - it('Test Translate button', () => { - cy.get('textarea.ace_text-input').eq(0).focus().type('{selectall}{backspace}', { force: true }); - cy.wait(delay); - cy.get('textarea.ace_text-input') - .eq(0) - .focus() - .type('{selectall}{backspace}select log(balance) from accounts where abs(age) > 20;', { - force: true, - }); - cy.wait(delay); - cy.get('.euiButton__text').contains('Explain').click({ force: true }); - cy.wait(delay); - - // hard to get euiCodeBlock content, check length instead - cy.get('.euiCodeBlock__code').children().should('have.length', 13); - }); - - it('Test Clear button', () => { - cy.get('.euiButton__text').contains('Clear').click({ force: true }); - cy.wait(delay); - - cy.get('.ace_content') - .eq(0) - .then((queryEditor) => { - const editor = edit(queryEditor[0]); - expect(editor.getValue()).to.equal(''); - }); - }); - - it('Test full screen view', () => { - cy.get('.euiButton__text').contains('Full screen view').should('not.exist'); - cy.get('.euiTitle').contains('Query Workbench').should('exist'); - - cy.get('.euiButton__text').contains('Run').click({ force: true }); - cy.wait(delay); - cy.get('.euiButton__text').contains('Full screen view').click({ force: true }); - - cy.get('.euiTitle').should('not.exist'); - }); -}); - -describe('Test and verify SQL downloads', () => { - verifyDownloadData.map(({ title, url, file }) => { - it(title, () => { - cy.request({ - method: 'POST', - form: true, - url: url, - headers: { - 'content-type': 'application/json;charset=UTF-8', - 'osd-xsrf': true, - }, - body: { - query: 'select * from accounts where balance > 49500', - }, - }).then((response) => { - if (title === 'Download and verify CSV' || title === 'Download and verify Text') { - expect(response.body.data.body).to.have.string(files[file]); - } else { - expect(response.body.data.resp).to.have.string(files[file]); - } - }); - }); - }); -}); - -describe('Test table display', () => { - beforeEach(() => { - cy.visit('app/opensearch-query-workbench'); - cy.wait(delay); - cy.get('.euiToggle__input[title=SQL]').click({ force: true }); - cy.wait(delay); - cy.get('textarea.ace_text-input').eq(0).focus().type('{selectall}{backspace}', { force: true }); - cy.wait(delay); - }); - - testQueries.map(({ title, query, cell_idx, expected_string }) => { - it(title, () => { - cy.get('textarea.ace_text-input') - .eq(0) - .focus() - .type(`{selectall}{backspace}${query}`, { force: true }); - cy.wait(delay); - cy.get('.euiButton__text').contains('Run').click({ force: true }); - cy.wait(delay); - - cy.get('span.euiTableCellContent__text') - .eq(cell_idx) - .should((cell) => { - expect(cell).to.contain(expected_string); - }); - }); - }); - - it('Test nested fields display', () => { - cy.get('textarea.ace_text-input') - .eq(0) - .focus() - .type(`{selectall}{backspace}select * from employee_nested;`, { force: true }); - cy.wait(delay); - cy.get('.euiButton__text').contains('Run').click({ force: true }); - cy.wait(delay); - - cy.get('button.euiLink').eq(2).click({ force: true }); - cy.wait(delay); - cy.get('span.euiTableCellContent__text') - .eq(24) - .should((cell) => { - expect(cell).to.contain('comment_2_1'); - }); - }); -}); diff --git a/workbench/.cypress/plugins/index.js b/workbench/.cypress/plugins/index.js deleted file mode 100644 index da3b59f2b6..0000000000 --- a/workbench/.cypress/plugins/index.js +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - - -/// - -// *********************************************************** -// This example plugins/index.js can be used to load plugins -// -// You can change the location of this file or turn off loading -// the plugins file with the 'pluginsFile' configuration option. -// -// You can read more here: -// https://on.cypress.io/plugins-guide -// *********************************************************** - -// This function is called when a project is opened or re-opened (e.g. due to -// the project's config changing) - -/** - * @type {Cypress.PluginConfig} - */ -module.exports = (on, config) => { - // `on` is used to hook into various events Cypress emits - // `config` is the resolved Cypress config -}; diff --git a/workbench/.cypress/support/commands.js b/workbench/.cypress/support/commands.js deleted file mode 100644 index abc0af8632..0000000000 --- a/workbench/.cypress/support/commands.js +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - - -// *********************************************** -// This example commands.js shows you how to -// create various custom commands and overwrite -// existing commands. -// -// For more comprehensive examples of custom -// commands please read more here: -// https://on.cypress.io/custom-commands -// *********************************************** -// -// -// -- This is a parent command -- -// Cypress.Commands.add("login", (email, password) => { ... }) -// -// -// -- This is a child command -- -// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... }) -// -// -// -- This is a dual command -- -// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... }) -// -// -// -- This will overwrite an existing command -- -// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) - -const { ADMIN_AUTH } = require('./constants'); - -Cypress.Commands.overwrite('visit', (originalFn, url, options) => { - // Add the basic auth header when security enabled in the OpenSearch cluster - // https://github.com/cypress-io/cypress/issues/1288 - if (Cypress.env('security_enabled')) { - if (options) { - options.auth = ADMIN_AUTH; - } else { - options = { auth: ADMIN_AUTH }; - } - // Add query parameters - select the default OpenSearch Dashboards tenant - options.qs = { security_tenant: 'private' }; - return originalFn(url, options); - } else { - return originalFn(url, options); - } -}); - -// Be able to add default options to cy.request(), https://github.com/cypress-io/cypress/issues/726 -Cypress.Commands.overwrite('request', (originalFn, ...args) => { - let defaults = {}; - // Add the basic authentication header when security enabled in the OpenSearch cluster - if (Cypress.env('security_enabled')) { - defaults.auth = ADMIN_AUTH; - } - - let options = {}; - if (typeof args[0] === 'object' && args[0] !== null) { - options = Object.assign({}, args[0]); - } else if (args.length === 1) { - [options.url] = args; - } else if (args.length === 2) { - [options.method, options.url] = args; - } else if (args.length === 3) { - [options.method, options.url, options.body] = args; - } - - return originalFn(Object.assign({}, defaults, options)); -}); diff --git a/workbench/.cypress/support/constants.js b/workbench/.cypress/support/constants.js deleted file mode 100644 index 1001fd49d4..0000000000 --- a/workbench/.cypress/support/constants.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -export const ADMIN_AUTH = { - username: 'admin', - password: 'admin', -}; diff --git a/workbench/.cypress/support/index.js b/workbench/.cypress/support/index.js deleted file mode 100644 index 929137ae3f..0000000000 --- a/workbench/.cypress/support/index.js +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - - -// *********************************************************** -// This example support/index.js is processed and -// loaded automatically before your test files. -// -// This is a great place to put global configuration and -// behavior that modifies Cypress. -// -// You can change the location of this file or turn off -// automatically serving support files with the -// 'supportFile' configuration option. -// -// You can read more here: -// https://on.cypress.io/configuration -// *********************************************************** - -// Import commands.js using ES2015 syntax: -import './commands'; - -// Alternatively you can use CommonJS syntax: -// require('./commands') - -// Switch the base URL of OpenSearch when security enabled in the cluster -if (Cypress.env('security_enabled')) { - Cypress.env('opensearch', 'https://localhost:9200'); -} diff --git a/workbench/.cypress/tsconfig.json b/workbench/.cypress/tsconfig.json deleted file mode 100644 index 36de33deef..0000000000 --- a/workbench/.cypress/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "compilerOptions": { - "allowJs": true, - "baseUrl": "../node_modules", - "types": ["cypress"] - }, - "include": ["**/*.*"] -} diff --git a/workbench/.cypress/utils/constants.js b/workbench/.cypress/utils/constants.js deleted file mode 100644 index 226b7121db..0000000000 --- a/workbench/.cypress/utils/constants.js +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - - -export const delay = 1000; - -export const testDataSet = [ - { - url: 'https://raw.githubusercontent.com/opensearch-project/sql/main/integ-test/src/test/resources/accounts.json', - index: 'accounts', - }, - { - url: 'https://raw.githubusercontent.com/opensearch-project/sql/main/integ-test/src/test/resources/employee_nested.json', - index: 'employee_nested' - } -] - -export const verifyDownloadData = [ - { - title: 'Download and verify JSON', - url: 'api/sql_console/sqljson', - file: 'JSONFile' - }, - { - title: 'Download and verify JDBC', - url: 'api/sql_console/sqlquery', - file: 'JDBCFile' - }, - { - title: 'Download and verify CSV', - url: 'api/sql_console/sqlcsv', - file: 'CSVFile' - }, - { - title: 'Download and verify Text', - url: 'api/sql_console/sqltext', - file: 'TextFile' - }, -]; - -export const testQueries = [ - { - title: 'Test GROUP BY', - query: 'select count(*) from accounts group by gender;', - cell_idx: 3, - expected_string: '493' - }, - { - title: 'Test GROUP BY with aliases and scalar function', - query: 'SELECT ABS(age) AS a FROM accounts GROUP BY ABS(age);', - cell_idx: 17, - expected_string: '27' - }, - { - title: 'Test GROUP BY and HAVING', - query: 'SELECT age, MAX(balance) FROM accounts GROUP BY age HAVING MIN(balance) > 3000;', - cell_idx: 5, - expected_string: '49119' - }, - { - title: 'Test ORDER BY', - query: 'SELECT account_number FROM accounts ORDER BY account_number DESC;', - cell_idx: 5, - expected_string: '998' - }, - { - title: 'Test JOIN', - query: 'select a.account_number, a.firstname, a.lastname, e.id, e.name from accounts a join employee_nested e order by a.account_number;', - cell_idx: 45, - expected_string: 'Duke' - }, -]; - -export const files = { - JSONFile: - `"hits":[{"_index":"accounts","_type":"_doc","_id":"842","_score":0,"_source":{"account_number":842,"balance":49587,"firstname":"Meagan","lastname":"Buckner","age":23,"gender":"F","address":"833 Bushwick Court","employer":"Biospan","email":"meaganbuckner@biospan.com","city":"Craig","state":"TX"}},{"_index":"accounts","_type":"_doc","_id":"854","_score":0,"_source":{"account_number":854,"balance":49795,"firstname":"Jimenez","lastname":"Barry","age":25,"gender":"F","address":"603 Cooper Street","employer":"Verton","email":"jimenezbarry@verton.com","city":"Moscow","state":"AL"}},{"_index":"accounts","_type":"_doc","_id":"97","_score":0,"_source":{"account_number":97,"balance":49671,"firstname":"Karen","lastname":"Trujillo","age":40,"gender":"F","address":"512 Cumberland Walk","employer":"Tsunamia","email":"karentrujillo@tsunamia.com","city":"Fredericktown","state":"MO"}},{"_index":"accounts","_type":"_doc","_id":"168","_score":0,"_source":{"account_number":168,"balance":49568,"firstname":"Carissa","lastname":"Simon","age":20,"gender":"M","address":"975 Flatbush Avenue","employer":"Zillacom","email":"carissasimon@zillacom.com","city":"Neibert","state":"IL"}},{"_index":"accounts","_type":"_doc","_id":"240","_score":0,"_source":{"account_number":240,"balance":49741,"firstname":"Oconnor","lastname":"Clay","age":35,"gender":"F","address":"659 Highland Boulevard","employer":"Franscene","email":"oconnorclay@franscene.com","city":"Kilbourne","state":"NH"}},{"_index":"accounts","_type":"_doc","_id":"803","_score":0,"_source":{"account_number":803,"balance":49567,"firstname":"Marissa","lastname":"Spears","age":25,"gender":"M","address":"963 Highland Avenue","employer":"Centregy","email":"marissaspears@centregy.com","city":"Bloomington","state":"MS"}},{"_index":"accounts","_type":"_doc","_id":"248","_score":0,"_source":{"account_number":248,"balance":49989,"firstname":"West","lastname":"England","age":36,"gender":"M","address":"717 Hendrickson Place","employer":"Obliq","email":"westengland@obliq.com","city":"Maury","state":"WA"}}]`, - JDBCFile: - `{"schema":[{"name":"account_number","type":"long"},{"name":"firstname","type":"text"},{"name":"address","type":"text"},{"name":"balance","type":"long"},{"name":"gender","type":"text"},{"name":"city","type":"text"},{"name":"employer","type":"text"},{"name":"state","type":"text"},{"name":"age","type":"long"},{"name":"email","type":"text"},{"name":"lastname","type":"text"}],"datarows":[[842,"Meagan","833 Bushwick Court",49587,"F","Craig","Biospan","TX",23,"meaganbuckner@biospan.com","Buckner"],[854,"Jimenez","603 Cooper Street",49795,"F","Moscow","Verton","AL",25,"jimenezbarry@verton.com","Barry"],[97,"Karen","512 Cumberland Walk",49671,"F","Fredericktown","Tsunamia","MO",40,"karentrujillo@tsunamia.com","Trujillo"],[168,"Carissa","975 Flatbush Avenue",49568,"M","Neibert","Zillacom","IL",20,"carissasimon@zillacom.com","Simon"],[240,"Oconnor","659 Highland Boulevard",49741,"F","Kilbourne","Franscene","NH",35,"oconnorclay@franscene.com","Clay"],[803,"Marissa","963 Highland Avenue",49567,"M","Bloomington","Centregy","MS",25,"marissaspears@centregy.com","Spears"],[248,"West","717 Hendrickson Place",49989,"M","Maury","Obliq","WA",36,"westengland@obliq.com","England"]],"total":7,"size":7,"status":200}`, - CSVFile: - `account_number,firstname,address,balance,gender,city,employer,state,age,email,lastname -842,Meagan,833 Bushwick Court,49587,F,Craig,Biospan,TX,23,meaganbuckner@biospan.com,Buckner -854,Jimenez,603 Cooper Street,49795,F,Moscow,Verton,AL,25,jimenezbarry@verton.com,Barry -97,Karen,512 Cumberland Walk,49671,F,Fredericktown,Tsunamia,MO,40,karentrujillo@tsunamia.com,Trujillo -168,Carissa,975 Flatbush Avenue,49568,M,Neibert,Zillacom,IL,20,carissasimon@zillacom.com,Simon -240,Oconnor,659 Highland Boulevard,49741,F,Kilbourne,Franscene,NH,35,oconnorclay@franscene.com,Clay -803,Marissa,963 Highland Avenue,49567,M,Bloomington,Centregy,MS,25,marissaspears@centregy.com,Spears -248,West,717 Hendrickson Place,49989,M,Maury,Obliq,WA,36,westengland@obliq.com,England`, - TextFile: - `account_number|firstname|address|balance|gender|city|employer|state|age|email|lastname -842|Meagan|833 Bushwick Court|49587|F|Craig|Biospan|TX|23|meaganbuckner@biospan.com|Buckner -854|Jimenez|603 Cooper Street|49795|F|Moscow|Verton|AL|25|jimenezbarry@verton.com|Barry -97|Karen|512 Cumberland Walk|49671|F|Fredericktown|Tsunamia|MO|40|karentrujillo@tsunamia.com|Trujillo -168|Carissa|975 Flatbush Avenue|49568|M|Neibert|Zillacom|IL|20|carissasimon@zillacom.com|Simon -240|Oconnor|659 Highland Boulevard|49741|F|Kilbourne|Franscene|NH|35|oconnorclay@franscene.com|Clay -803|Marissa|963 Highland Avenue|49567|M|Bloomington|Centregy|MS|25|marissaspears@centregy.com|Spears -248|West|717 Hendrickson Place|49989|M|Maury|Obliq|WA|36|westengland@obliq.com|England`, -}; diff --git a/workbench/.gitignore b/workbench/.gitignore deleted file mode 100644 index d3fce84065..0000000000 --- a/workbench/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules/ -/build/ -.cypress/screenshots -.cypress/videos -/target/* diff --git a/workbench/.opensearch_dashboards-plugin-helpers.json b/workbench/.opensearch_dashboards-plugin-helpers.json deleted file mode 100644 index 340532a661..0000000000 --- a/workbench/.opensearch_dashboards-plugin-helpers.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "serverSourcePatterns": [ - "package.json", - "tsconfig.json", - "yarn.lock", - ".yarnrc", - "index.js", - "{lib,public,server,test}/**/*", - "!__tests__" - ] -} diff --git a/workbench/CODE_OF_CONDUCT.md b/workbench/CODE_OF_CONDUCT.md deleted file mode 100644 index ed4f094f6d..0000000000 --- a/workbench/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,3 +0,0 @@ -## Code of Conduct - -This project has adopted an [Open Source Code of Conduct](https://github.com/opensearch-project/project-website/blob/main/CONTRIBUTING.md#code-of-conduct). diff --git a/workbench/CONTRIBUTING.md b/workbench/CONTRIBUTING.md deleted file mode 100644 index ce761c2eac..0000000000 --- a/workbench/CONTRIBUTING.md +++ /dev/null @@ -1,59 +0,0 @@ -# Contributing Guidelines - -Thank you for your interest in contributing to our project. Whether it's a bug report, new feature, correction, or additional -documentation, we greatly value feedback and contributions from our community. - -Please read through this document before submitting any issues or pull requests to ensure we have all the necessary -information to effectively respond to your bug report or contribution. - - -## Reporting Bugs/Feature Requests - -We welcome you to use the GitHub issue tracker to report bugs or suggest features. - -When filing an issue, please check [existing open](https://github.com/opensearch-project/sql/issues?q=is%3Aissue+is%3Aopen+workbench), or [recently closed](https://github.com/opensearch-project/sql/issues?q=is%3Aissue+workbench+is%3Aclosed+), issues to make sure somebody else hasn't already -reported the issue. Please try to include as much information as you can. Details like these are incredibly useful: - -* A reproducible test case or series of steps -* The version of our code being used -* Any modifications you've made relevant to the bug -* Anything unusual about your environment or deployment - - -## Contributing via Pull Requests -Contributions via pull requests are much appreciated. Before sending us a pull request, please ensure that: - -1. You are working against the latest source on the *main* branch. -2. You check existing open, and recently merged, pull requests to make sure someone else hasn't addressed the problem already. -3. You open an issue to discuss any significant work - we would hate for your time to be wasted. - -To send us a pull request, please: - -1. Fork the repository. -2. Modify the source; please focus on the specific change you are contributing. If you also reformat all the code, it will be hard for us to focus on your change. -3. Ensure local tests pass. -4. Commit to your fork using clear commit messages. -5. Send us a pull request, answering any default questions in the pull request interface. -6. Pay attention to any automated CI failures reported in the pull request, and stay involved in the conversation. - -GitHub provides additional document on [forking a repository](https://help.github.com/articles/fork-a-repo/) and -[creating a pull request](https://help.github.com/articles/creating-a-pull-request/). - - -## Finding contributions to work on -Looking at the existing issues is a great way to find something to contribute on. As our projects, by default, use the default GitHub issue labels (enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any issue tagged ["good first issue"](https://github.com/opensearch-project/sql/issues?q=is%3Aopen+is%3Aissue+label%3Aworkbench+label%3A%22good+first+issue%22) is a great place to start. - - -## Code of Conduct - -This project has adopted an [Open Source Code of Conduct](https://github.com/opensearch-project/project-website/blob/main/CONTRIBUTING.md#code-of-conduct). - - -## Security issue notifications - -If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public GitHub issue. - - -## Licensing - -See the [LICENSE](LICENSE.TXT) file for our project's licensing. We will ask you to confirm the licensing of your contribution. diff --git a/workbench/CONTRIBUTORS.md b/workbench/CONTRIBUTORS.md deleted file mode 100644 index 4299ae5e4e..0000000000 --- a/workbench/CONTRIBUTORS.md +++ /dev/null @@ -1,15 +0,0 @@ -Contributors in order of last name: - -Peng Huo - -Abbas Hussain - -Anirudh Jadhav - -Joshua Li - -Francesca Paoletti - -Alolita Sharma - -Chloe Zhang diff --git a/workbench/DEVELOPER_GUIDE.md b/workbench/DEVELOPER_GUIDE.md deleted file mode 100644 index 9d564a3cd1..0000000000 --- a/workbench/DEVELOPER_GUIDE.md +++ /dev/null @@ -1,55 +0,0 @@ -## Developer Guide - -So you want to contribute code to this project? Excellent! We're glad you're here. Here's what you need to do. - -### Setup - -1. Download OpenSearch for the version that matches the [OpenSearch Dashboards version specified in package.json](./package.json#L8). -1. Download and install the most recent version of [OpenSearch SQL plugin](https://github.com/opensearch-project/sql). -1. Download the OpenSearch Dashboards source code for the [version specified in package.json](./package.json#L8) you want to set up. - - See the [OpenSearch Dashboards contributing guide](https://github.com/opensearch-project/OpenSearch-Dashboards/blob/main/CONTRIBUTING.md) to get started. - -1. Change your node version to the version specified in `.node-version` inside the OpenSearch Dashboards root directory. -1. cd into the OpenSearch Dashboards source code directory. -1. Check out this package from version control into the `plugins` directory. -``` -git clone git@github.com:opensearch-project/sql.git plugins --no-checkout -cd plugins -echo 'workbench/*' >> .git/info/sparse-checkout -git config core.sparseCheckout true -git checkout main -``` -6. Run `yarn osd bootstrap` inside `OpenSearch-Dashboards/plugins/workbench`. - -Ultimately, your directory structure should look like this: - -```md -. -├── OpenSearch-Dashboards -│ └── plugins -│ └── workbench -``` - - -## Build - -To build the plugin's distributable zip simply run `yarn build`. - -Example output: `./build/query-workbench-dashboards*.zip` - - -## Run - -- `yarn start` - - Starts OpenSearch Dashboards and includes this plugin. OpenSearch Dashboards will be available on `localhost:5601`. - -- `NODE_PATH=../../node_modules yarn test:jest` - - Runs the plugin tests. - - -### Submitting Changes - -See [CONTRIBUTING](CONTRIBUTING.md). \ No newline at end of file diff --git a/workbench/LICENSE.TXT b/workbench/LICENSE.TXT deleted file mode 100644 index 67db858821..0000000000 --- a/workbench/LICENSE.TXT +++ /dev/null @@ -1,175 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. diff --git a/workbench/NOTICE b/workbench/NOTICE deleted file mode 100644 index f42ba2537e..0000000000 --- a/workbench/NOTICE +++ /dev/null @@ -1,2 +0,0 @@ -OpenSearch Dashboards SQL Plugin -Copyright OpenSearch Contributors diff --git a/workbench/README.md b/workbench/README.md deleted file mode 100644 index 870ee43df8..0000000000 --- a/workbench/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# OpenSearch Dashboards Query Workbench - -The OpenSearch Dashboards Query Workbench enables you to query your OpenSearch data using either SQL or PPL syntax from a dedicated OpenSearch Dashboards UI. You can download your query results data in JSON, JDBC, CSV and raw text formats. - - -## Documentation - -Please see our technical [documentation](https://opensearch.org/docs/latest/search-plugins/sql/workbench/) to learn more about its features. - - -## Contributing - -See [developer guide](DEVELOPER_GUIDE.md) and [how to contribute to this project](CONTRIBUTING.md). - -## Getting Help - -If you find a bug, or have a feature request, please don't hesitate to open an issue in this repository. - -For more information, see [project website](https://opensearch.org/) and [documentation](https://opensearch.org/docs/latest/). If you need help and are unsure where to open an issue, try [forums](https://discuss.opendistrocommunity.dev/). - -## Code of Conduct - -This project has adopted the [Amazon Open Source Code of Conduct](CODE_OF_CONDUCT.md). For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq), or contact [opensource-codeofconduct@amazon.com](mailto:opensource-codeofconduct@amazon.com) with any additional questions or comments. - -## Security - -If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public GitHub issue. - -## License - -This project is licensed under the [Apache v2.0 License](../LICENSE.txt). - -## Copyright - -Copyright OpenSearch Contributors. See [NOTICE](./NOTICE) for details. diff --git a/workbench/THIRD-PARTY b/workbench/THIRD-PARTY deleted file mode 100644 index 1496b14e1c..0000000000 --- a/workbench/THIRD-PARTY +++ /dev/null @@ -1,397 +0,0 @@ -** @elastic/eui; version 23.1.0 -- https://elastic.github.io/eui/#/ -Copyright 2020 Elasticsearch BV -** TSLint; version 6.1.2 -- https://github.com/palantir/tslint -Copyright 2017 Palantir Technologies, Inc. -** typescript; version 3.0.3 -- https://github.com/Microsoft/TypeScript -/*! -***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed 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 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF -ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** -*/ - -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND -DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, and - distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by the - copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all other - entities that control, are controlled by, or are under common control - with that entity. For the purposes of this definition, "control" means - (i) the power, direct or indirect, to cause the direction or management - of such entity, whether by contract or otherwise, or (ii) ownership of - fifty percent (50%) or more of the outstanding shares, or (iii) - beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity exercising - permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation source, - and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but not limited - to compiled object code, generated documentation, and conversions to - other media types. - - "Work" shall mean the work of authorship, whether in Source or Object - form, made available under the License, as indicated by a copyright - notice that is included in or attached to the work (an example is - provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object form, - that is based on (or derived from) the Work and for which the editorial - revisions, annotations, elaborations, or other modifications represent, - as a whole, an original work of authorship. For the purposes of this - License, Derivative Works shall not include works that remain separable - from, or merely link (or bind by name) to the interfaces of, the Work and - Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the original - version of the Work and any modifications or additions to that Work or - Derivative Works thereof, that is intentionally submitted to Licensor for - inclusion in the Work by the copyright owner or by an individual or Legal - Entity authorized to submit on behalf of the copyright owner. For the - purposes of this definition, "submitted" means any form of electronic, - verbal, or written communication sent to the Licensor or its - representatives, including but not limited to communication on electronic - mailing lists, source code control systems, and issue tracking systems - that are managed by, or on behalf of, the Licensor for the purpose of - discussing and improving the Work, but excluding communication that is - conspicuously marked or otherwise designated in writing by the copyright - owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity on - behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of this - License, each Contributor hereby grants to You a perpetual, worldwide, - non-exclusive, no-charge, royalty-free, irrevocable copyright license to - reproduce, prepare Derivative Works of, publicly display, publicly perform, - sublicense, and distribute the Work and such Derivative Works in Source or - Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of this - License, each Contributor hereby grants to You a perpetual, worldwide, - non-exclusive, no-charge, royalty-free, irrevocable (except as stated in - this section) patent license to make, have made, use, offer to sell, sell, - import, and otherwise transfer the Work, where such license applies only to - those patent claims licensable by such Contributor that are necessarily - infringed by their Contribution(s) alone or by combination of their - Contribution(s) with the Work to which such Contribution(s) was submitted. - If You institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work or a - Contribution incorporated within the Work constitutes direct or contributory - patent infringement, then any patent licenses granted to You under this - License for that Work shall terminate as of the date such litigation is - filed. - - 4. Redistribution. You may reproduce and distribute copies of the Work or - Derivative Works thereof in any medium, with or without modifications, and - in Source or Object form, provided that You meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative Works a - copy of this License; and - - (b) You must cause any modified files to carry prominent notices stating - that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works that You - distribute, all copyright, patent, trademark, and attribution notices - from the Source form of the Work, excluding those notices that do not - pertain to any part of the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must include - a readable copy of the attribution notices contained within such NOTICE - file, excluding those notices that do not pertain to any part of the - Derivative Works, in at least one of the following places: within a - NOTICE text file distributed as part of the Derivative Works; within the - Source form or documentation, if provided along with the Derivative - Works; or, within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents of the - NOTICE file are for informational purposes only and do not modify the - License. You may add Your own attribution notices within Derivative Works - that You distribute, alongside or as an addendum to the NOTICE text from - the Work, provided that such additional attribution notices cannot be - construed as modifying the License. - - You may add Your own copyright statement to Your modifications and may - provide additional or different license terms and conditions for use, - reproduction, or distribution of Your modifications, or for any such - Derivative Works as a whole, provided Your use, reproduction, and - distribution of the Work otherwise complies with the conditions stated in - this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, any - Contribution intentionally submitted for inclusion in the Work by You to the - Licensor shall be under the terms and conditions of this License, without - any additional terms or conditions. Notwithstanding the above, nothing - herein shall supersede or modify the terms of any separate license agreement - you may have executed with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, except - as required for reasonable and customary use in describing the origin of the - Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in - writing, Licensor provides the Work (and each Contributor provides its - Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied, including, without limitation, any - warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or - FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining - the appropriateness of using or redistributing the Work and assume any risks - associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, whether - in tort (including negligence), contract, or otherwise, unless required by - applicable law (such as deliberate and grossly negligent acts) or agreed to - in writing, shall any Contributor be liable to You for damages, including - any direct, indirect, special, incidental, or consequential damages of any - character arising as a result of this License or out of the use or inability - to use the Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all other - commercial damages or losses), even if such Contributor has been advised of - the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing the Work - or Derivative Works thereof, You may choose to offer, and charge a fee for, - acceptance of support, warranty, indemnity, or other liability obligations - and/or rights consistent with this License. However, in accepting such - obligations, You may act only on Your own behalf and on Your sole - responsibility, not on behalf of any other Contributor, and only if You - agree to indemnify, defend, and hold each Contributor harmless for any - liability incurred by, or claims asserted against, such Contributor by - reason of your accepting any such warranty or additional liability. END OF - TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - -To apply the Apache License to your work, attach the following boilerplate -notice, with the fields enclosed by brackets "[]" replaced with your own -identifying information. (Don't include the brackets!) The text should be -enclosed in the appropriate comment syntax for the file format. We also -recommend that a file or class name and description of purpose be included on -the same "printed page" as the copyright notice for easier identification -within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed 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. - -* For @elastic/eui see also this required NOTICE: - Copyright 2017 Elasticsearch BV -* For TSLint see also this required NOTICE: - Copyright 2017 Palantir Technologies, Inc. -* For typescript see also this required NOTICE: - /*! - ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed 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 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS - OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing - permissions - and limitations under the License. - ***************************************************************************** - */ - ------- - -** enzyme; version 3.1.0 -- http://airbnb.io/enzyme/ -Copyright (c) 2015 Airbnb, Inc. - -The MIT License (MIT) - -Copyright (c) 2015 Airbnb, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - ------- - -** react; version 16.3.0 -- https://reactjs.org/ -Copyright (c) Facebook, Inc. and its affiliates. - -MIT License - -Copyright (c) Facebook, Inc. and its affiliates. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - ------- - -** expect.js; version 0.3.1 -- https://github.com/Automattic/expect.js/ -Copyright (c) 2011 Guillermo Rauch -Heavily borrows from should.js by TJ Holowaychuck - MIT. - -(The MIT License) - -Copyright (c) 2011 Guillermo Rauch - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the 'Software'), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - ------- - -** jest; version 23.6.0 -- https://jestjs.io/ -Copyright (c) 2014-present, Facebook, Inc. - -MIT License - -For Jest software - -Copyright (c) 2014-present, Facebook, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - ------- - -** @types/react; version 16.3.14 -- https://www.npmjs.com/package/@types/react -These definitions were written by Asana https://asana.com, AssureSign -http://www.assuresign.com, Microsoft https://microsoft.com, John Reilly -https://github.com/johnnyreilly, Benoit Benezech https://github.com/bbenezech, -Patricio Zavolinsky https://github.com/pzavolinsky, Digiguru -https://github.com/digiguru, Eric Anderson https://github.com/ericanderson, -Tanguy Krotoff https://github.com/tkrotoff, Dovydas Navickas -https://github.com/DovydasNavickas, Stéphane Goetz https://github.com/onigoetz, -Josh Rutherford https://github.com/theruther4d, Guilherme Hübner -https://github.com/guilhermehubner, Ferdy Budhidharma -https://github.com/ferdaber, Johann Rakotoharisoa -https://github.com/jrakotoharisoa, Olivier Pascal -https://github.com/pascaloliv, Martin Hochel https://github.com/hotell, Frank -Li https://github.com/franklixuefei, Jessica Franco -https://github.com/Kovensky, Paul Sherman https://github.com/pshrmn. - -This project is licensed under the MIT license. -Copyrights are respective of each contributor listed at the beginning of each -definition file. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/workbench/babel.config.js b/workbench/babel.config.js deleted file mode 100644 index 19139b6863..0000000000 --- a/workbench/babel.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - - -// babelrc doesn't respect NODE_PATH anymore but using require does. -// Alternative to install them locally in node_modules -module.exports = { - presets: [require("@babel/preset-env"), require("@babel/preset-react"), require("@babel/preset-typescript")], - plugins: [require("@babel/plugin-proposal-class-properties"), require("@babel/plugin-proposal-object-rest-spread"), ["@babel/transform-runtime"]] -}; diff --git a/workbench/common/index.ts b/workbench/common/index.ts deleted file mode 100644 index a3d39b178b..0000000000 --- a/workbench/common/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - - -export const PLUGIN_ID = 'queryWorkbenchDashboards'; -export const PLUGIN_NAME = 'Query Workbench'; diff --git a/workbench/cypress.json b/workbench/cypress.json deleted file mode 100644 index 53c4ba96d8..0000000000 --- a/workbench/cypress.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "baseUrl": "http://localhost:5601", - "video": true, - "fixturesFolder": ".cypress/fixtures", - "integrationFolder": ".cypress/integration", - "pluginsFile": ".cypress/plugins/index.js", - "screenshotsFolder": ".cypress/screenshots", - "supportFile": ".cypress/support/index.js", - "videosFolder": ".cypress/videos", - "requestTimeout": 60000, - "responseTimeout": 60000, - "defaultCommandTimeout": 60000, - "env": { - "opensearch": "localhost:9200", - "opensearchDashboards": "localhost:5601", - "security_enabled": true - } -} diff --git a/workbench/opensearch_dashboards.json b/workbench/opensearch_dashboards.json deleted file mode 100644 index 972bedd4ef..0000000000 --- a/workbench/opensearch_dashboards.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "id": "queryWorkbenchDashboards", - "version": "3.0.0.0", - "opensearchDashboardsVersion": "3.0.0", - "server": true, - "ui": true, - "requiredPlugins": ["navigation"], - "optionalPlugins": [] -} diff --git a/workbench/package.json b/workbench/package.json deleted file mode 100644 index 6f2acd0b29..0000000000 --- a/workbench/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "opensearch-query-workbench", - "version": "3.0.0.0", - "description": "Query Workbench", - "main": "index.js", - "license": "Apache-2.0", - "homepage": "https://github.com/opensearch-project/sql/tree/main/workbench", - "repository": { - "type": "git", - "url": "https://github.com/opensearch-project/sql/tree/main/workbench" - }, - "scripts": { - "osd": "node ../../scripts/osd", - "opensearch": "node ../../scripts/opensearch", - "lint": "tslint .", - "start": "plugin-helpers start", - "test:server": "plugin-helpers test:server", - "test:browser": "plugin-helpers test:browser", - "test:jest": "../../node_modules/.bin/jest --config ./test/jest.config.js", - "build": "yarn plugin_helpers build", - "plugin_helpers": "node ../../scripts/plugin_helpers" - }, - "dependencies": { - "brace": "0.11.1", - "react-double-scrollbar": "^0.0.15" - }, - "devDependencies": { - "@testing-library/user-event": "^13.1.9", - "@types/hapi-latest": "npm:@types/hapi@18.0.3", - "@types/react-router-dom": "^5.3.2", - "cypress": "^5.0.0", - "eslint": "^6.8.0", - "eslint-plugin-no-unsanitized": "^3.0.2", - "eslint-plugin-prefer-object-spread": "^1.2.1", - "husky": "^4.2.5", - "jest-raw-loader": "^1.0.1", - "lint-staged": "^10.2.0", - "mutationobserver-shim": "^0.3.3", - "ts-jest": "^26.1.0", - "ts-node": "^8.9.1", - "tslint": "^6.1.2", - "tslint-config-prettier": "^1.18.0", - "tslint-plugin-prettier": "^2.0.1" - }, - "resolutions": { - "**/@types/node": "^10.12.27", - "@types/react": "^16.3.14", - "**/@types/angular": "^1.6.50", - "**/@types/jest": "^24.0.9", - "**/@types/react-dom": "^16.0.5", - "**/@types/react-router-dom": "^4.3.1", - "eslint-utils": "^2.0.0", - "json-schema": "^0.4.0", - "**/@types/react": "^16.3.14", - "ansi-regex": "^5.0.1" - } -} diff --git a/workbench/public/ace-themes/sql_console.js b/workbench/public/ace-themes/sql_console.js deleted file mode 100644 index c841db28da..0000000000 --- a/workbench/public/ace-themes/sql_console.js +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - - -import * as ace from 'brace'; - -ace.define('ace/theme/sql_console', ['require', 'exports', 'module', 'ace/lib/dom'], function (acequire, exports, module) { - exports.isDark = false; - exports.cssClass = 'ace-sql-console'; - exports.cssText = require('../index.scss'); - - const dom = acequire('../lib/dom'); - dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/workbench/public/app.scss b/workbench/public/app.scss deleted file mode 100644 index 1f9a0be739..0000000000 --- a/workbench/public/app.scss +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - - -@import '../node_modules/@elastic/eui/src/global_styling/variables/colors'; -@import '../node_modules/@elastic/eui/src/global_styling/variables/size'; - -.sql-console-query-container { - padding: $euiSizeL; -} - -.sql-console-query-editor { - .sql-query-panel-header { - margin-top: -10px; - } - .resize-panel { - resize: vertical; - overflow: auto; - cursor: row-resize; - } - .sql-editor-link:visited { - background-color: rgb(255,255,255); - } -} - -.sql-console-query-result{ - .query-result-panel-header { - color: #3f3f3f; - } - scroll-behavior: smooth; - .tabs-container { - overflow: hidden; - margin: 3px; - } - .table-name { - color: #3f3f3f; - margin-bottom: 7px; - } - .table-item-count { - color: #8a9596; - font-weight: 370; - } - .sideNav-table { - border: solid 1px rgb(217, 217, 217); - border-collapse: separate; - } - .search-panel { - display: inline-flex; - width: 70%; - } - .search-bar { - width:80%; - } - .pagination-container { - padding: 10px; - padding-top: 15px; - padding-bottom: 15px; - } - - .tab-arrow-down-container { - padding: 25px; - height: 56px; - vertical-align: middle; - color: rgb(0, 121, 165); - } - - .toggleContainer { - margin: 20px; - } -} - -.sql-console-results-container { - margin-top: -17px; -} - -.expanded-row { - /*background-color: rgb(232,243,246); - /*background-color: rgb(245,247,250);*/ - border-collapse: separate; -} - -.expanded-row:hover { - background-color: rgb(232,243,246); -} - -.no-background { - background-color: rgba(0, 0, 0, 0); -} - -/* Message Tab */ -.code-editor { - color: #006BB4; -} - -.error-message { - color: red; -} - -.successful-message{ - color: #006BB4; -} diff --git a/workbench/public/application.tsx b/workbench/public/application.tsx deleted file mode 100644 index 8957c22b4e..0000000000 --- a/workbench/public/application.tsx +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - - -import React from 'react'; -import ReactDOM from 'react-dom'; -import { AppMountParameters, CoreStart } from '../../../src/core/public'; -import { AppPluginStartDependencies } from './types'; -import { WorkbenchApp } from './components/app'; - -export const renderApp = ( - { notifications, http, chrome }: CoreStart, - { navigation }: AppPluginStartDependencies, - { appBasePath, element }: AppMountParameters -) => { - ReactDOM.render( - , - element - ); - - return () => ReactDOM.unmountComponentAtNode(element); -}; diff --git a/workbench/public/components/Header/Header.test.tsx b/workbench/public/components/Header/Header.test.tsx deleted file mode 100644 index 7fc409b067..0000000000 --- a/workbench/public/components/Header/Header.test.tsx +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - - -import React from "react"; -import "@testing-library/jest-dom/extend-expect"; -import { render } from "@testing-library/react"; -import Header from "./Header"; - - -describe("
    spec", () => { - it("renders the component", () => { - render(
    ); - expect(document.body.children[0]).toMatchSnapshot(); - }); -}); diff --git a/workbench/public/components/Header/Header.tsx b/workbench/public/components/Header/Header.tsx deleted file mode 100644 index beb82c1f2a..0000000000 --- a/workbench/public/components/Header/Header.tsx +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import React from 'react'; -import { EuiHorizontalRule } from '@elastic/eui'; - -const Header = () => { - return ( -
    - -
    - ); -}; - -export default Header; diff --git a/workbench/public/components/Header/__snapshots__/Header.test.tsx.snap b/workbench/public/components/Header/__snapshots__/Header.test.tsx.snap deleted file mode 100644 index 34fa845af8..0000000000 --- a/workbench/public/components/Header/__snapshots__/Header.test.tsx.snap +++ /dev/null @@ -1,11 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`
    spec renders the component 1`] = ` -
    -
    -
    -
    -
    -`; diff --git a/workbench/public/components/Main/__snapshots__/main.test.tsx.snap b/workbench/public/components/Main/__snapshots__/main.test.tsx.snap deleted file mode 100644 index defafbdc77..0000000000 --- a/workbench/public/components/Main/__snapshots__/main.test.tsx.snap +++ /dev/null @@ -1,2688 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`
    spec click clear button 1`] = ` -
    -
    -
    -
    -
    -
    -

    - Query Workbench -

    -
    -
    -
    - - query-language-swtich - -
    - - -
    -
    -
    - -
    -
    -
    -
    -
    -
    -

    - Query editor -

    -
    -
    -
    - -
    -

    R`NLCV^7GH6~3imy}eS+4H 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 I=akR{0Ds1mUH||9 diff --git a/bi-connectors/TableauConnector/img/tableau_dialog.png b/bi-connectors/TableauConnector/img/tableau_dialog.png deleted file mode 100644 index 2a3017586a80fa6095f87586d0240b50d919e870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14928 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 diff --git a/bi-connectors/TableauConnector/img/tableau_download_taco.png b/bi-connectors/TableauConnector/img/tableau_download_taco.png deleted file mode 100644 index ec84d503b41da34847130eccfe8ee1a922d3eec2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6504 zcmdT|d011|wogY|EpmHXMH$F%sgpmP2Z7Wqf!`&ceYiSf6m=OGJ_tW=e;icK)DZ!HJ`OzQcnk!p zOxwJC=@a1p=bR@D2J-v&g7(Tj7j-EI_0B+ zT8kpD?t{eM!^cudCsY06Rq*)Ax6NTIF$E^|^@{n^eVOIVQx99O?P*d>@UVBo&9|Fu zu~&`R0w)83?5bI-Vt~Hxf^J?N&mMspt&T^fNb>3kYX0v8jk{6gokhb#@z=~7mN?ef z-KR2kt$qp#L-D{Quq3)&e@KH3-&0azja@WlTwPnv*j4Hr=%fy!^8dGmRtFyF6$wYFb4-7GA^Uvt2?mUZTg)1DJ3C)KNY zaa)Jv+qI1!Mh+C@VW9|e2ZmH^j>A@!;P+-DT*D&8zravolh;CTbzEIPVogZ<6Rf*~ zKOMnxKhz&3pDXzYAudC&3L^+VQT{k{ZTIt~9rYz-=g|fzDTSZ^6PV?%Dy^J=p)h=( z`B%>c-5t{PL)PTK<7QMOo=n> zrjJIxiw-xdVx3-_+L!hOi`d5>h5HfzI=h~mqVGJtll2GGaGm3ks%cVj9D$flg06Fk z@f(6UEP!2i!bt0K%m$hD(F)UH<_+~Q^k8jY&x6dbnU^f?2;u^mGsj6S)O{P2kLi;< zQf0D}63b2@9w#!=|#RnuvUm$9j3%o|{U@YZG}c zPjF)63H!S?q$=yL&l+63UsP?FqbXrBAL9~aJD6|_s^E(xS+1pQgf+=^j-j}(>0sB$ zInO?ta9YiXgu2jcnw@v*HC@{n$jkoHJE+g)~-@2?EOAa7*lKhcme!S@Dp?E#3u!tSI zcZ$m6)lS>Hi8DxGo%-drnOE=BP4-|#R`emsb!1>8t~8;tot}0q+IRNz?6FCh#c9#K z&3OH;DigfQzBurBn;6lQcDn1p65}!O$~)VZO?r{o@NfhvgxuE5Fw5i?(>Fvp_l`T1 z$_XEX92kncl$=2Iv-QjT=QC3%6b`+&K_4sZjxVt`?dmT!R8LFPKsV;b<4Q>^lAJi` ziYJN}sEp55Ff)D{;gHG2hpLq;Y;Db0Y_HR{rC`T)Mmw>U5dr$vjO&Ysn{g%$BR zV_y5#Jf+5qSU=6;Y@%|e6>^s;Fo7W*EbrIiH}rth+}RVM}MV_rrXLHTE%D^DjCd>E19=_4i$!igTy z>*1cVDUc|%tG8ntW|mTx98;|}F6@7-}x^(N10 z%qzQ5L1=}X(&On`;=gJ9lPnXw&C>2|A}bgF^!`x+8>m5zJ(r0^+C(H7!@-3w7tb-j zfaTBkDKR*%xuS@jE$CwEVa3gXlonWDUx~LZuC!#Xg`HhWcYtv9RlftY?M-7`0+PI$ z{NkhC6>f4o^Uz`}k}Um!P_wMfFi_MRc?J-0qsumbdvggBTm%;>N@Kf2*l0q{+!eQV zgLJMLgvEiEWcY`NfKiZYM0j-VNHQ%+JI!nw|82f~!I5a(H;bY%6~;cgc9IrhhgwqP zNk2ZU;3cc9w(CvX_UbD0kmLr1I5wU_795F9Q)2K0Rtd+i^ z?|H)))Zvu}EYHrh?}1o>73aEiRJ(MumYCB+=VQ@L8d0{&4w;jEYZVI`yiZL_N6*pA zm*`nLqBMJ2d&9wF*p3`#=Q->7A-k=hp8e5Aj{4st`@=V&tZMb{KWUlm#9l!nI6Rf<)5 z40ATTsg*hOx#CWNojGhkF7v~Y2H>rDtVO=Jwn^F}lYGK0ML~-Bo5IP0$SmU}8W*={ zEwC4j&_q~o3uW6NHVMbwj#Gz;kK4?-cFMB$y^Z9;HEZpr{%*(*B*vW~!BC6evZ;O) zcj~d*Yk6*yi>CsPB2zfR%LBrePiz>xtx6lb)3sW;sRt(k7zUJEu%hP85#uile85k9`Wr?s1*Ha-Cw*@ z@QKVRN+syu1DKRg9y)$Xy2E1vlykc~}HI&l%&(1G|1y!4%P>8H8FNF;ffZ-nQB{6awz z9+RI8$Yb!S%;l$oEdF4IN3WH#TVStevrI^~W?0?@f=?&h!5S^Xkwr;<`K5z!{;f~T z{jf%v%fCxkw)G&e`uG6Vb6eWzNHM1i5jV8nOO}j7}w|l4gp%%VqjmO z5_Ukfot{l!{btQ^`mk#vWRjxFY}Ef=)abp(M|H zsddMr?`%dE!TE5amn(Lr$Xb-5Nm0F#)oH&rV1zF~wP{c0cyp%(9#jqh%C<7eNvS$3 zjUzvb_7Yt!&RPtv#m=lvkkhz=4jGXHB!)chrQR}ch5Jf9M>t9;F7sgLd{G*I~x zk5i9SDnf@VTUJb7_)b%KIo{{)V0Dqas^E~|ygF`J*pe>+j7~-;A5>JiQ#dm-$VM&5 ztdO~4&x0SSktB~}1{QnR(TDVuGvs;K*y*Fb!<9`YAy}md{Ual$ezTKDaGXJGZ7`R9 zt(9k0tI$r93~74mE^i%xTi3@jbiGYs^_EBx^r^tUIBR6^gb5*j{I>?J_fX2gTd}Rw z7AE!}P{h$vHFVy}iDr~qj};+Rnp6Ak*<(2dzm(7q(CKrW?lz+g(HFJ^Z zbZ9LLE@Jr;jXaMpF{O9(Rh4zl(Z3z>t{(uaGHB81Uhyk4f6fGrdJ=Os5Ma%VNHkC+ z)wyJm2#LH>3F6bB_w^4@PQZqid5(c+2Jy1qZFhvqOAscKS8&C2yQ78bH z{@B`L%6%}wB~?oQ0heaB{UhssoNSbQ@1F8`;VKC2gB;w>47cEB%e>3}1sBII6{%Og zZOK}N&@pQe+JqBwU8ci~8ePsRYp0g}^d8Uwc)K#$8s&|PAr+4VxMBh>InyS_r#1yz zOvf0`o^(h5_vj7)!$bMG)7snXx2f2~RHiZB?+HCYmi+~}@P9daf4w>QN=Zot zg#8uF9k!(QseNn9(BCiZc0A*l6uzD5XHn3WtR5JheiMG;?IPGEf5U3dt&x(xfgkwK z&W4$O%%ZN=FzSI8;Y?GOl}c%e&r z7`jDs!Qrw7V19l@2j@G?`q1%_aOVP!nJSqy=D(h=J%b?mbkaKZS9gbr1e+d*S~- z!82F(I6HAP1>Y~1IxlVqf%^8ZYNbw_UWav(B_Pv8!}(}2rsuM+H^LU+$u?H{|QVE z@%Ymo1bUjthJOIs`@6G($U0Q%-K zAlm)yZL}>EhWC{Z#6rmf?9Rq+=fw+`HIQT~R(s1~blga6)6$Tp2_`?<+TEF|CrQcb zoo}unQ=3h0sp|~slZX`_xhD%wCcdVj9NQWRnIU9Ne56sM;r<<$uvQdFFiz+*nY`IX za9=eLYPK8{7%P&z)Bu`wU#=?slhRr97Y4TT!LmdeNz>s1DvGF^<`w#shBAncQz?<$ zI)wJ9u^Y2$J_y)zT_0+N%FG2=pDr9R#{@Xi3^O?)AYQtDe@jm5;#%Q%?Fn?x%86<$;RB z<{sIOdc|)rD2OJ10n9lyW)dWhQE>qCItuXj%7at9J#fv4VqvIj8qPiDSGB{sCQBq} z>{$@#*MU{rGE2dGcuu8|Em8ut-$y4 z&R66IrR3j`RL(qe3>)(|9yT&HJ%uL|!Mcex2RjC54`a-m5WP|^L; zt-kVE?hWbTdcVjnmbucqtGQj{wUr*j4_yDoY~l7eywA@lB{gGkyJ8sQkVM>X>(Pwb z@!g#QUNl%qybRNzG)hCbfI(FAcVXrMUy z8^bxue}m`oX6pTTKqYaVNHz^|A=7+!Q0jE{%6 z#!pw=HoDJ&YN!3twzVq!4dW^l2fMaacf)>Wac`13wY|{sMVwBxDwvpdwMZ?;e2RuE zBTnU06b3oAWwdtEV*>zkVo6EAkZCifsEh#E=9yhtt>>sq>mAjy=j z4n1>iUCtCb&%a_$E8E&cbNkj83`wS@(UK{esb!|E3(yrty|O;2(@D1ZsJGWt zbYYFm+4SJy9$+WygFvhw`UNJQ>-cGY{H(pJWQJ6URZJH{*2sLAQ&Y5Q`g1?WynHuh zX2s?Z^0BZz*Xx=o=+ODT7veUNXh*|Z%l>KpPy+@HhX+I;A5ig+4?i$onpR70rf_^> z0}SeR{IcHf-Bk*=Svg@?_W&%tO#)vD41)s_20BFqdaM;byH1^dTtuuu`$Q*X_1-%W z3B5vAGy0RfTTu>#VR-XkKtNeL}fX(|FL(yP)#3B4Dk_t28i zks2UCfRF%zz}udCz4si?9q;{Py!ZAPjF3I{&YF9zxn}w1H}~78>WXwU%rqbnh)!AQ zp(Y4Ks{jI>?mcrFI1{wWbOQLGaMe`24=U-wFw7REu4+JWSqCGS_1$?J|rDWg= z0$t+#`A4Cwd2f<766K>q=xC5UJZpfa~#NT43IaH}U5XS*(Rnu(&z4+`s+ ztua$mPA0?Gu3hUMBn#*5Flq)~(B=63)=X{n1F^Gudy-$=TMn8$*FBts)HyzV?Vk|- z{mKt6Tf7QsGG2F0KaBa-w$;%V8ku(u7Zw`r!VpC^!!(S%nXDkQ7mF^(z0{Qc)aKQvSqF;v-X+dL=NY2=f(y7Dfk#JVik z_-Cx!@To#cJ2rg1_KA6GYc_58^>v=Su7Mh&c0rp)g{GTZIg;k$t@Qs))!2;-PqQsjHFiZ&`Ty)5cB)J z=r|hHf{0@&E3Hz~5RHA$Kk(M03}(#wn(vIu)sUFfs)OHF;cjeK7gtz5sjLRd36jhGZ%Ul=Ur zR^>FSLh-elE_J!u$A`w0FmYz9DnF`*AHV%%`$Ev=i7m_8;#MW!mm{~QTv0G-$LnX4 zJ^JgMbzitUEsmf~mv|)2r)oBs2B&obN%g0Fi=QDe?KA9uk>cmSd*Zw2b}%OI4s`a$ zHkkt)_ouI8E5|1Ag+}uvaZK(OOBrMeTUOxZYPY1;6mD0KJ<8LC2TK(R>jax{w(VN$ zrj$C~Gm5**!FY2J)D5w4<}^}@Bufw^eTaD&~D=*4nZ zg`KW0zZzCJlX2E=O+e+1<=Mil!K}0SHocWj+D(KdeXr1#Xkjq{20wNaOnoRl_vRme zlRBX3jnO$#FS4XE;50fo#WJ9HrH*m36R28IKi}EMg+5zcWHE`! zMDZ%i>7Baj_PUKUTRV4Xu&svmxObl6)VV0$zM%r;2@&fw+4W$3HK{hH$B#P)S8^?sKnMsQW@=boRdg(%JVyV5i~D zATN<(2m4NGVE#pII4r}`=GmctdjQaf8soO7T0@}u4ewLHBrTzO4`|^O)<2C5BO9B8 zn)nqdbgihdZ;_G5Pjzru1k~Y0lg^#m$SJlCWwmfE@~F*JAYQZUIkEyXe~aO3BxjZZ zcJ6do1@85AwkU%e>PT~N-;>P4WWK|sX$*{cnS_dIBuohC1Kg7d>o!(@uNDmAj@}BXyqdtZ{M9rzMDe*BtW{Z&bNol$0lR z>Q9&Xm*eW4ny|DcL)Y$A;i{vHuhokw%c<{(`&$JjHptE-ieJNEXOhhcaL-0x)y^?S zH)66z#a&K<8=DO(GXf^JTR)XR>?O^g{*cl~L$n+a%M4ivPE7htQ~7h?HDEoZRx-77 z3a$eNQTjK_QhHX;d1|fIXm6}7?fw9@Zh)A>mR4c;!U{_FxYTOGcHeb#adFm4M{UOcnm-p*+xCeN}$HOY-~X1ktJ@O!i=I`6GeWp%f&CGI~|wz@pp z;c&UEza;fjo2Z1Pte42z+fte;%#cZgi{UhH)O9AdchtO53I6&YBOMGk#+j0;=07Eu zI2Vi+W{3APy#CD^o_XFF3sZ!y+19^f0p-xNsf0~@oj9Y`N|pPl>=kZP5UKSogXxKZjVk^b zql;SWV<%H&olN*|-fZ3dM^FX2c`e76B@FO3M#9L{211?qU$(`c|0>x5;Y*GvuflJl zfRy;0DF>u{mBx?Zc(KBZx30xBHhcXe;>$ZH4q}6tO8F0YCF#E2R`Q~eboy-%fUYvm zolgJ#kWH4fw48@o4|^_CF{G zexDo4)BhhwuIK*8(+%;1Wb?si7p^W@@;>GS5XTV?$^k$#C5h=VGF z)wmmBiDxmeGZ$r|C^FfmPZ)bT{0#no9ZGUDlmlfX9>qvjQzLmkn=5&x=?-cH(J) zDBYdyz(^kdi$#NjgLe&bgxD_RO~##*KKXgJxvsM{7UdAx^!+@GZmx1P*U&qTZ`~%=?m>~aG?^b;kRoB`$@!e3a($8y6qtq8N+i>i=$uw7)v{~IM~xL=B$a{u zdHL)h%yug-=@JYr7IQ`RbwpXV&3h88=Ue3JCHT8M;enA%qYeoj=0ftTnSNICWMrUL zuVgY3A<6X-KW_-us@i#8-?8a_TLw-6ZugvseAs@|uYbsB8!i+lBJFnx(V<$+3#soQ zxH#;U(xbdD)cg6&q<(f~I|#mC*l5Di$V%^YKnlr6uru^bd%$}%`whN~p5+deFEmrr zwJwc2>DF86Z7jWkFyWpl(u#{GjN?n@a8C8+tCglsSY>;k#1(7UoVUDX5qk9d3A<6Y zjZbpwA6t^7NPQ3ne|zt>cknqj^vins){WuY1XpmFUDzidhbM>C22n`@@CoH6f!2?$ z2T@h?(FGVk8WgU_lADuXPNmg83FGq#&L4`|*Ep2@W>_^LB@5RS3=XyV0JD1asfC83CW%nQ<>BfO zZ6l2IPz{R*sqI-Sf?Mw-KnW=}QCHX;`BhdMZN3;PY9%;_h*gut$hY}ow2hEDYND!M zLy#o%Ad!zr75&ayRgYC)cG2WR^u<-r3r$=pOz`c<4XOeS(R4^ApxPt_0@G^6zh|5^ zPn1x%D37HVxsgnfQXOT+dkuOAyKy7JH6mf<@~l_APmTJg%hAh{J)o|J_Mx3UgWj5o z)8p88vGcF2pF$8nwC@(tf#DD*bQI$utmq!Zs&>l1SWFxDV|1vTQ7dqw1U^k^`4-HQ z2Q8X(iqU7w^lWP?e9{-$!Lml)|9rQIrmg7J3sK10l4sWCog(wMOr}LCj6txD2KG<; z-b)2iDI-TDPlpbrjlGdG=;4-nHsKDj`i<(l2ky@AH=8l@3+rB^tu(uqn-i%I3>)a< zw}waBD$e4K?;cE-=ecOlq<>E(Z}6$lRcB$a?wW8~As=$`ry*b&(P@|9EP2PbKZ42% zl^ZH=Vr9Qo*&&UPP^`+e$cgG0K#Xq(?p@Ug(AJ*!^!!#1`rKa^QU2n3c!F<6-+*Uf zSMl?iP!yW$(( zddz6!W!(Gsxr*2}B|`hjSeA9>lucr*JU2?e>Y!F1TaKP3@AbXkNNU}3E}FpmP4Dt= zVO!&b&UQ&yb$t>*>l?Dkqs^h zlSL5=tn|2pRdRKWy#LVqDs+DWE!^?WUum z1Q8)41@io!a*eLjXv76zQ@A+hV``$B(zg1`!hIX3W=>pSWpQfg$7ExC56%i>-6kCE znuaz#xpsW;)+Kdm@9`UzGgnB=lz*A#bLpR+QH&dGp`Fu4m+UO=>oGn=(D)$jI`Wm` zg;seTpFOZbK0_nIJ(P3}#z!X6Ozsx#Lc_^APYTV)9!^P(OP`x=gW0dhgnlHAd8My+ zXKnd6%f*(xuHISs?`?hi_H?Mc0V;AbFZek4S;&e_*EqzNk5PP;BX_;ca;CzZ*k{*!oxaqCm{}5p zCp2aIHSmZvJ3-a^wi`*TD2)cY6fwob+Y$S3J$8!|*e;h3$@QmsJ84c-rKTsxqlgE^*6XdlYe38LT18>>(&ABo0Rb_nu&nzCGh6y}Ip z{cz4^Tw@vG7F$R(Zj{r5(Xp<17L0DDSgN`95|BSyhs(Pb{-BmRkxV4Ks93$L@hrki z_R;L@=j8d!UGW;Ud%HYSa~gX#7atea%C+};7#7k|62YYF#*m8$3BHN-y~=pFQq4)M z{V=o}Ys*%b_m&<(?)AYvfg>(lX~P><5IY#(h;>ZRm`eu@Vtduc?>XWESKlup(hUAO zS(G}Vr_&Gm-9l4kj1CnXq)J*GN*J%K7blt5#d3?M$0r_e#hD~HZzDeTzj8>1y?4|( zU-&J?=uyW_{h0H<$d~cgRSg|fsYKPTnp}|^m&?hf{Az9-nax9+OmaziNvin#LEG5e z268xbKiTfa4LHH=d{Iu}J2($Ke&xWm?MkDo&c#Yz(F4s#qF1hmH94N*v+_1R5JE?i z4L{!Ik?Uw&cXENR|KTg3A5*4hJy2Jc{N-tf-PAC3N^yX{Kx#sO4^QZSeB#A^TXa|LJvL{0rh>Q0TbCQ6 zn`)e6Gt5fQj=?OiA0%A;FvY-kMcx^ALC$bc_`tR;eU&;iogaDHwuV}z4hAE2$6;Fq zi?V_<2SsCt=9yXyW`zY1_>^(G7PQ@zfzAkaUjJI%d$SPog&21PV?J-5q(_K->{QNv;q87H-S-I`}qoEEtq?#Y$w#>__MX;#(QLZLK`}-YTaTv45O7pvc zBGIO}xW;gN?T6Di{%m!7l@=l9CG+30s5cDLwEo`l zi9kra%HA$U1!<%T~hWu`MspAR(N#&bQp1r z%-RiU=7lBoDNbqd2yGKAasO`Ad}Gv-CqxOmS2i!P^rmhm)`0wy9oAKxlM+}0xDOF% zQ7{l`Wq*A|#Sp47znP*lDB|}@C>HCWmq zf=PZq49Ul(fs)#tcL<4OLp0qh(fJ~*VcTDKT>m#qwU_Y+je_(jGN{9?^9!q_abb|i zDF5w5F4gC)WFgi<(o0DA8{Kl~9pr_g!SgL6FM&v^1dfjUz$3vNXP%rf9PC%d{$gu) zaOob=u6;R6tlT9{T@97PJ2gM@U&*d}s;Sh%Y+WLwqYy3cKb*y#=$gkmtNf@*ux+dt zkjNytzGLe&ne~kIuG0whJ^MueoxDosW0&a@pS%hU59TGN-{Hp@4idGi9zSLqdziUb ze=unG*9t-aNB8;l=NczKLkd8a3X{uqtfYonRFTzaI!-9qZvM?Ze<**S57chP?q~X? z);EXQHXA&0p8)@L2Y?hTZva==+;Z{cpfeoQ6IQf}-g6cE{i3BmFS_dDskPYo@d1(w ziR@h-G-zaY`TgetjywM)-QNZQ1%NXse@6xWcde<@d9L-XHT3r)6zI?}ayUnW;h(wt zIhXOOzYhii{n-6Kge(5v;0+(=cUFc6{{eP$tl#d4VyqWxrgMn(qpKQNn34GbbpPh0ylQgtukA2NZOAp6^k@k=xc z7ztmJTX_R(W#L36?1?@j^epH{BwFbu#CU#_$v9l$xsboL(@f(OX^itK|6)&^Mhvfx zW`DBHF`N6eU8!LIuPWfx239FIr7vH;5LrKXLw7fjvHV6CFI@Qg`V_5Ul^1@A6SPiu zeC8yGdS3K`0UKK4@D%#`IsHn9iR`bB!eL4uue;Ni2F-Uw<-eM3CK{6@+}GkG*=1qH z#dqqs*Edb0eVsRcxw(}PkjPLXwSwZ~$A;fA_d{sfPNokx`ur;?7<-?0sJeG$<-4(- z_ND)#5bu;su{oh8NY+RRFzQ(+9XFBS3e9SNVCjgO+O4zQuc(>v1r%1J3!Bl zwQbFJ=v2Qlg9?x{(S$ar8nLbB*AryMJqSC?BO)@AdP36)H{I~=&70yQlcJ|z?$c0H zKbx-iBHsWxG$RC#&b?mZ2rO+pf8(+BM5P1Kcw0M9^HG#6F&>aCl1(~$ACECQzU;TR zX_g}G(eM3&NzinX)UgFD#Lq<_S|7X2wNmq&*6U+Yg~LbWgGEn%%|Oai+O=*r$U-AM zexu5A)7;Y6%gff-N26<)u4ryXM#il4^sCsm(KWbN3*zIAFxm0rEVNxF{0rEr)bQNi zRtE<^@{8TyO;&QjRl>Z zO6wC<8gT+9rE=lgg@#DdZN_CW$4P77BWolq<`Tc*O9H3WxQ|?(PJS#BBbe&5t&GJN zjy=XFpl8kn^rxOtxFKl@T^FUha$s zO6K1t}D;9{=(uYSwqkD8o{LN8*U!kT)e@(N%^uE{od5&+ny3L7vok z;83f`{6bWnhm#2esY7fy45D7}*=l2|JtAQt1f-sklP9o1=mcS_0;c??<0GS{BU1iG z)3IL@?exvKv78D!G_O^EGB3EX{@o>hn2gu<^5H&S%6li*eSO>_1YT6X{RDgYz%-s6B6&Ccot_AlvkOA!=fMu7}8dGlR%i7NpGe zVW*i^Fjpl`K=;mGKD<#gNz7p+Pm3G+@P}}kWN+Ljm`=W>ucaui@A&8dUQ|6t!^o%G z%gz|D`ey88h!$_ft_J;*mr;W^1k0M>fSs%EO5^(qx+~J z+h0G|Jyk|l9|_1FDlwVph{VbENAdeV;7^@_`GNhvq%y8I{!w}uamm}yPTrUNNW)_D zLB~~4N^!6p(;mqW+n*+{RV@tH%8PlH79)J%8rn1A)Z{=mk@4JoZg)gLgZ1?F<5NB7 zsO^5$RL^+=8d1o3F`(Z@5aD+8bYD_9!C!<;(j^n}Rn=lr!HQCt3q(eP{SAhdpbT89 zPmhnt$P7h#WP!mjjXVob1xz|pWcO-i#yGV{ve`KtI8;qp>KM44^6x855GPwsbVRUN z5vX_>{KT%g;Y0n_E6|2jC~*y!g<{94gFXpib_J9br99W@i*Zz;Q8W^Ro2-)jP&v`& zdca^CSPAB_@XPz|V*|wE*|kfFb_J{Jw3lud$DNkLEAEb!SrsaL8PmWY+22QS9oob0 zQ`L@y#*z6C?c)*Ez&=3(i)BkLZP(I}%}Vnlb-||D;ssWkluwM12M5PBH^gK~?Kz1O z?$xH=J7O^tcMYSa2f@cxLPwYf3?zrGb{FW`O)#~uz$Sr=YOsjgonEt^Z4S}h8#|Qx zWMk`LA7J4-ktc&*OC_1y8bl(NwLVMLzaT2EyfV75|eWB?#pchL%;T%<3w z44&`ayZNd^x-1jRMrl48>^zcBsK>uhr+A_LtOoV1z@DV&sOwfr+@&rPmlx?o(V$@UORpWi)>L4F;N@P_vB zKGPzH`yq=1dU|6W}-1-_T2rlAOi5+ctCG=%x zjrowSoZR1!>DF7~ZZPTSQsvG;%+xr!UUjGn#}K(kC>@$K=i$l7 zCVFRJtWzm%89@TsGlo6Yw-NXcIN>V^}WJ<2ON!>U;utz@n z<5)0suf`S$Tb-za6YvuTA=G{GFz-jXgMp+w6t>29*alF!>KrY25Lp|Ty8I8sqW&38|autiZK_epu3LbqXV2SXuSLa z=aW&D56A>T-s-UXXMA4LpE&);o4g&X?C9a&ZA#Z7?8pag;$bkWi4Xr{sYlXd#@8cu zzreQfm4#o)%br+%Uajo+1cS-7q_JHf8ZgAo2Nvn%>jE4hJ9vX`OBj7s;%uTAIkkRD zzASzous5>%Jt`mGO|KYGul8jVbwP9MdF5vJ#S-)Sj%cbuG> zne$T{byijsM~rlGd*_+62scJZ5xt+uA7QfAcHTlr8-y^33KU(=4n^ zV9tW6tX#=86;vOPvMPa0oK>rynGU0^t9Z4*uxion!IBX{JTu=~i`yZ!5akjGGD4c+ zyU&;>W=@eXl$mt+nZVGqY%mt5`axSu@8)1?lz-D5T-#FkAP~*2PSsUy)L_`{#!qJa zQkgNdFm8uX!`ZVsBdU_JGvF)A_|l_|_iNJh{!5Y`fhJ8qC7#)kH&Zh8B zB2Cib*rTyhi^3l<`G!?_rz2V|Vv09`&3=jd;tNCF2gTAqW5ZU~xF|VN=Z4y3kxAXo z&aj4&nY{l}qf=@h+P6XCz*a47;!GsvxN@HLKP|%R4OIjXn z?=s)HKT*aE_4jXsTFbwL^~i6vGMLU78TZ{5pD$%b>>?NH<7zj8zF8f$1AaWJk+jN} zpRkgrm1BqwqP_>@Xfq@n$aSf=Br!oO?LUy!7(}#cJm%r$?XD$Y1TWO!lC1C+U}2+lCx1f; zD6xQ1?rz}dPSH`a0m8&ppb!2z9`7*i(dU=20%V!kp3~Wavaj{(Ik=;|`jTX!l>{u8 zc}Jwq0dc($OfQ5gGO;_gtO{1>(NXc0XUj^Wug_!OZ7ibZtHi2ae-z=mDEPv+M5I-Q z5g)8SoXyyUD|qL-()oBjPx_%2w{NDR)QB#?hhY@GvRPdlHvgD@^~Ooj=0V*v(o%+^n~`}(<;5;R zjOnB0iSxsZNRnuTPi2s8oG_L*XPhl{2m_wU@}yr6>y1-(tXaGS?Uyc_BxFSwwBi9w zb6VxZy6X$w@>jF>>DXmPNsv>+z2*B(50EgOGR6PIH1~?IMU4=v6@s2+2lWl^^$(Y1 zW*$~h9m2*n$e9pn4_kb9)rdWIVs+B0fH<1*K36ScB+s3;0g@XbXHc&t?cs<@M#D$O zF-b79xcCD-r_O|P`!tm1#= zQh?t^B+L9H^C?rq^TYLhEH`FW7%-Q9Qe$OfybjG+ez4%_``+LxCmgj1tNpbuOGK2B zQ$_Z0^I(Qz;ge6ec9)@t!_XBKx%hLEQ`=Oesv4Z9$$%loiFKeqRd1YMco6cG_f#&C7qRJO| zVX@-Ic8KcW+{H4de5-m!m3_Mr&3GdA$F;ha*t)SY@7)dCcOFp@;UdsDb7`nJq(HRD z_>mFs^n-&u02easOKOe1Mkpm=S`}V4KL5q5QOG_6%lS?lhy89spX)drCi22DSbbj` z=^1$m%kQAS6>_>9?!b7MYkchID^w8G-%q;dY7UdY4UTqDt)Phv<+iJ3w&012RCxs? z*=h8g1ukzWc!PN_h|N>ra*=>Z)|K#B9(RVb%jhLgV6IAto#isS*R%QrZ7} zk;XP(`rrveHovn`mBSPw(JdFgfmJc6S;Y!>3oDsr0Uf zH#I5XC#qHu5F^-2>*noK^X>3NnOA?}^SBziVE4*wIhCO>Za*nF;Qq$-(0( z9@926H}E$hMaC1Wb8;!Vck#wq!FhMFQjV5VJlPlEc>%Vmbw@7K40Au7f1Gch{ZHp_ zwl&u#1TMORO#7KTx#b<%zXTLh`$nN*1&m-vx8yqrXlQV%+Fs4Ww-+Tvg6NV_E_nxp$XVM*H^2YFuvvs{%c~5lG z&!pyP%I4mvF=4|U8&9k~+Tca!F$(^$XPqv;ccA@<$IIH^72hY`;ZxJv2Bhu<-FRQ* z1T@diz?-@p@z&rOfNl}mS)7)?1)dnM^MITBlOb4g9GL1CE$`;SSP?oicR#bU!rPtX zKQ2KOvmpxGLKYcqXR!Qg#tnMZ$Lt;&4PxaLPow~v#p9=id`NvoNHamh+wMrCWeGhn ztl^<^zOIKe*V4aXvZ|OXGR2lEi56y2_bSDt^a-}WD@-d~)Cs7;dFQ1xTlHz#J1>hG z?hHE<>T3#R#I8}?vmMOJ5m_?o+wJ6oCy1Gb)q3bM!1<)I4Cdw0jYSB%r?OELj~sPy zsU2+j$sF?9DR1wJfFkrmXqiwqqGVo#q~ExHUBt5Ya?_FW!RK1Hl}|r$DZb3-%?JRm zQi%hpJ*hc1x4+N-Az`z|X0!ifGKsiurxU2E0>Iju8H_%aEw1OYq?Nsbo3e2HPVM7*=Z0y|Y39H~!t6cx)UjjrmNWdoM0eq+L?|;Rh@Qv%FtD;YyKe!rc{3@)+lh zw7MnQC(oWeLt&ioUL(P?#>h0awEdOTQj4DPjA2DxKY4XKu1xFZJ;A2KQXmrjifcSj zhc^%tD|&;klsSqXK4*jtJ=|>&dd2|G%M2moP@7ExV?CeTZDw9X_^h1`nK}B}?$noG zYm$b_g)P`(`f!!@Prgl{Zh>ux6ULO~lgX*lQ8 zapzI@NoOc=?TVJgG+^q7({#KV;g%?<&0~Lc5xB_`9_nJGONKC&IROcT?llm8@shAZ zqcLGbOT%Vwb5_ciR1PE@w!YLOBEb3FlmB+1osIqKWN>|KP+QRj!L03P*7(}*mM(ZQL##%RD&T~Rs zqCS~-j9SgooW~YDJ0uOq8nAo$?WG?U5Wd#JK&^EF`x!@{G9sl8(24&x&< z3Q2d$1uLCq9CbuhaX%P849e{n!hOk@>j`Ooob|&a^;$R<*GCV9cdUlua-h+%LFY*9cDpV>gL2Osc~5grp@z)AmQ^B`Ip}!ze&)f_(MmNqMlu0Bt*~l`&}!w<(W%}0i;7>-e*|eqXQbl zO)PW%@wd`bhBmJUx3s$6=H^FE<=c*zd$~MH&(J;0ROa-~4@U=7I%{_9D)Xhm9LT%A z2wmR+%@rK~xMLKN3IO{WU0PlMAXS}x>QOyXCZ`N`{n5MDV4&fr-sf`p3FM>g9>K!-m)YdSS`}IVZGX$~3Q&A8 zouY6i!6GTh>ZnR-DB!low6qgo~F{kMQ-vi=Gc9Nqe0Im=K_{|U_ zw3#22IxGke&BxOUuccLQb4AU2@tDX!#)YJKtjeGFTCZ>HeVX3zig~wGS~q-u>m3d4 zN0ig{mQz&3jO||X_UiFbnXQQcgkolnvE|}d!ZzW{iNO8W%1wUcf{6lwx+eH_=Oy8G z06BWDbB{yDv-nAzfP<*8!|S16p?PKlUJAksDDFqQG?clChxN!pb%HK9B=};?(fbiG z==5-2bjLbRTy5=EC3B*vQ;E7wwBG^e!*wHVR{@*R`_dSJXPM?*b6#a5m99|ET`&$y z+<<2@blAcO^q-z39AEpo#lvSl`gyUFzkK1lAFTmdkG@%@~rGdrlFx ziSz8Q#qMUZ@5Vs(c1+b^Tc@2A>|@m=ol;`zxbD=Iz%1LMfxCSd2u+8eB@N z8hb}_G&u4}=qUN4T%hvsv#?ne_mY2!Bz_Ii0Nq^$&KEoOH9l5UG^*MlTP9zj=hjnd zZgZWU5M3`6{7_9q;88PPsVs4siM=X5fMp^U>yZK_A zKo&RjY2I+Danla>-_qZo4I0n+r$>j%mf>m&QiJ}pW=$&CE^3MaY`WNkyX>_VZ0@!lV>|i~ zQt>c9IV4H;p$!42lC}95=Cpg6UQRrXj#cU<<^hQ zr`#SGU|uiWnz&b0k&@Ll%m(#YQL!o>Cx(;Eo^zl5v{(4%kcT?a zhQfNc8&R}b20bH{ujfZxpt%rD_Q z{Dh0)aZ4&UvhSwKulz)Jz1k*g!?Y)N`Ae3@alLa`q7~8I@+O{BM$387$5A-2Y`OtD zp;8+8j*)M5C`*L|)T0Q18!-&D9xmm@dxYe_E2~l4D6eUfm+;(72Mo$fL|gYyrvcB6D(R`_|BX+RFx)fsuEm;4XZ z!SLzAmdLG+eq)!NSgk^-YvV*R6Ui^A?06H^v_?40y|LBY+2v}1%Ym2=P&N=dClYPo z{#ft~wt>ofC8KHWo&eHrg_nO&{Dz+Xf$QF;ql3Q4J^0MT1Nb37r;}EZHZI3Wd*C&C zr*lHM!mP?*Mwd(=L%q|{irYTcdvU?jda?&V%jJr!WStQBv(J2lxZ96!6xg2cOTw=J z_+&lnmp59wwOS+2;J_2DF&iaU2rD}c+oi%T78+ZPWIrRlD%GxXhjc7o%$+bg(d@B0 z<&m=-KehM*MP7}cUv);XIrB+^nTj?-tgOF>^@!$s`I&d$k{0XM3clRbh$JR$Fs}Z>WkWnmnCt;P}v94~I8ownp_`&Xt}4XJ`@YyG%sOwRm4mDcanC{}n z1nZlLG`38%-NJv%`|(zs5=GJPF+DXdDco9ZdyNMhWqwz_Y5R!*iO_T3w=IWrf$~R( zP)nb)o=XWnEEmtF zxYcJZ@Ea=f*Ah?-CP~ZRxKl*#%$cf@_uMi5PsfDr?d}@pqW&zls)f}pdS|rZhXy#k zOY){HBv8jwZ$6T2-;VW9@@j9{LaK4fvif!j>~*g7wtjmVsn*ZMh@Xi3M^E8?cl5A* zXBP!B-|2Y_n9xsUv4jf_MpyY|zY{X|ux=(dlou1wr0Ykatr8_0(h-;UV`2;BVXj2d z26X!#(vTRx!3x&mINA#?Kw7;1Fa1M#g%ERb+HNR~`W5$0;e6wRo*MC{-c6teVg$Y@ z=2$&@T6TXS+9%;xd6#nZ%Y!gYomV`0A6y5Fc*qr_w;Y(EIa0)woFBv!J1=KgAY=$K z>&?s#Hd)Bqztwo%aWB;`O;|xRXsxby1O6i^YlZ3Y3RfN93;av2_AhHc%yW1SKGa3+8-h_24WQIh)lL#CC%1Zytc#2y|{Ew)CsNL4~ zj2nvOPuFvFVZG7e<>t8u@{?ZTb^gVUC^wT=GLPSD$>(a+q zb?RW9qJ!Wky-72;iTXF^Te_V1=@41aPy zxIyb0dsGT98BeBvWItRN{e*38ngWt0Ti|yj&R3Eh*dmy zf^$R?43Y6TVhEra?A3U*c6QncmAnEVog4+96~?C_{x?7o3V)%VFdfq=NTVT~*gk8{W z0~&Ly|3N6g}c)KTN))nKqFEApypkj`pL0TxdlogHl_W11IOQv zmEeEy)B*zj%e@N#SG)LmK!Mv%eyVWb9@F~I&7F~F*`zWD2A)FCDm4HRA@B9;_kkBq z2=O~j*K7ZiM=0?Rxj_HNEsB3Kz7!{hfwBE&yZ5I6u9)3~dT9;_6d?bD{9i6(>i;hi zy=Mg?*YL_5imN>|w6tY8^#H{yN%qt?j>-B(NhmLByfS(%uiEp767)f`z5%QOC&kMC zLRUcnYd|&sJ`EjR1twr*0sy_PU%w78^ezlqRh&u1Q`!7_av# z)1a_U6%07e6~&4{d39d^-iA(0p%bSz~N-8JQ z%dSxl1Tauo|H-Oye+Xh$NWbi7vl>;n(LT^ndX0{?%_< z8V``F@WQJBElYh#jF&E1BD|^`Cd2?KIkt$=q(9eUZf-xkpc$ZQFBl$q96#fqsMSbf ztqN05L+8;lLAHi0pgbSQ3;i)#r-EGbUw*HL8Nl8o>hNS3W`&Qde2fJq&gqZi>D2#p zzZ|^)2zP(Z8|Z3rJi7SJn=>K7!L8->UU*H4pG$t`p)kq`eM2j5)!$XuZYh-QorK$c zMMNt1;d^_83{|hI8UFh`X>4oK(_zC_Rt%CL`j@w?bTa=-9VuQ82hP_*oA3KJ@ZPVB zOhK&x!X|J)DC+MbB8D-7wjCu}%*O{@goI+Hk5o}(D!>0ENeY8mTj&@EgQcth_k3wT9N6 zKH#&2^TyXk!wLhHs*Q@jcAN%={yEGK4Di|!4L$pT1X^w1(?iV(_-CY-W8S>?eu1YT zkV3$}_?CMmYE+TfiKgq2rMX9SR0@U?zSo{G9KCzOyE#A2r8;QHsJ1!-_0O?`ka{M=U!dg zb>~9qidkRz*0^SMv547MKPd~3(--&@rod(E1|DSxRD9KKXPg&73aIVnj3~oC&b{b+KYmbOlm6}BcvD&JY6g6VR>QXI57i#a7AvI!$F0}SaQoF4Y5{Vf*@&EMv z{lDMyysqDkE4SS6Aj#(#@8f;EUe8xa7+hgd`&g!J&hgAGx}T1ND7kbN zqt_rs1D#j~+bw4FwU?Hb-~d7_1*kJW!3*-Rz48y2Ie_-a4tUhTV=S78QhnB>kYnGf zb0$Sn2#W>oJmf4%$x@*a^`rNzoX$FB7>T-_Yirz$XM9UuTCtat7{h*Y>abSAbx>HD z9lZ|?>LlTwQmUvvt6lQ0ote9@W|LH_Z~BPVhF$}Ay)V>m@b_}AQkwGkHh84=D8yz2 z0fE_u)W>=CEREBdqce8BtQrW9fnit*{B&mvRy)pGA zfV!NVoQX2dQ}u}H{nRKk-P9QiA)D?1=GK>zoC~ z$`1*KdK=sSxz<|Mh58@1vDhTb9U;Lz(Vi;PQ3PLt(CBrK?-l#CMweVkLUKi&AdKAD zJCBq})g2%^?vp2!h)VzPA^X^%A~H7d0PI69@g8Lb%?* zQ{eQMG6H7Tx0Ql*0m&f_n}^PPgB|3Z4wLe(>qHGz$WR)PH|dy;>I+qje2*aslUInk z6{&7JX>Mi!YruQ;ULqCq9TJE}9f{&l5<;38*`wabnf)Or_!|E+r-PjgxC;ro>zf#m zT2VrDlf1Ne&J-6Y`BPg^3}l_){HHR)rj-+SAhpdhdbk=9uQXVwEC5Tr0lll=eDVU( ztD)qLv6e2JS2_)k9S-ii>{1tMj!WbcGA)d2jNv^U`3_u5txyJjCG$nJWa=~OoK}&E zrhY%c#Z^M&US;|596Vj(KQkCu5dT_p;2XRc*p|+?ZN|k0o6No%uR)9Tkt*eA%zSmX zt?X}Hw=}L+LAqcRvr=BVJ5YvIaxT5E_Ob)C&KJbN_&wu2A11yhvFwX}RXG&z4Rx|z zIYPPyHq$D}P_H6|pV28|buf~>qZ=|XA8UqV(3xY!C@~@G7%8*Yf*F9MPbFY*12FPP zO?)%Ebg$-hPcfV}1JX-yGERTiMVU%>ojpTFY{Eg5fZIENxfYfMj^aw(3OxpOl%5E; z_luOb7R_Ysnx)X8Dn<1N^i2$3SxKC`oDXDyBP13azJ&#PL#%hfj` zR1LHP-CT{%6R(+~;Z?8(a~Yu%OE08kb*;}{@T_dv@lBX#t7YLfgoX_rtovd;BaHDH zmZ_~u47smt9CAFi+j(TDxTg4Ag#KR8+Da&^_O_Dw$GC+++ycskr5R|#L5$a_>K3T5 zg<~7*N*(RQ^3S3QrV~O~Egqxhs|{qM5Xn^EJG9W)Abj1Rs(Qk#cei90FU!*_bsB>& zI*U@7OxR2LwMV(6W)K|#16PaqYm^4mXP{Xz&JL1Np$68#o{^M=3@G*3wseS#tEBgi zmUbLU@zz~Typ&tOpB|Q&7EJjNt{+=p^~6N-9me;Ju~I~Wo2nL zu%)O{vJm_UEeJ=LzG+0=EmTS96Y*IeAPY4^SS=ORIdgxuHF0ob~ zjaEht8*)0jI=^bI&w)3P+b)xGVUc_Kg)2jj9C~LF+u>6yV-L2CAF&+cAn_q>H6t`q zhk7FP)}t$!X{y>rN#@C+t4?Ta4kJ$gAS5e~&6*f>vZhUx&&?f%+)^jq$Cj=JR#b)! zk`(*IE@D61w8;E)Qq~R*Y zCkzY>o%$b%K0%Xh!(AWqyrcJTsu3#N%D~#bK#LdPN1-fo-Gf_3At6HK9Nssqzk*Mx4kemgDm+7-&>`M9F_5yOU!p?aXYcL8VesTMghgqbplS9)+g zycn>d_fcKDJU+L(ASxf!?}6DCR%NbRT|OIV+MmT+f{YF(B_L`hWWxGEnc<-u23(`7 zl%v}ITI2}r-|y9C8)vH(u=1@MA$hk+UH~M>0giC#l<4VwKC-c7qv$a3Q%lGbqA?|= z6l92wZxjbn$quN|jjX6w|goSV5)ey`v0yIiV4%s5bWlwiG)!@aN)?;Ld z2$<@NnOsEK07uj)NjarVEq&){9% zqeq2k-v;EDhp1yJc(+~9i|)UVUzH0EvlyXvYo5DsDLpSoKw8sIK70r}_KX90BGCC0 zb?ZBmq8#9ov!_D+@2j5T5I5BqH-q_$Z_?Rv%BZq}I;dX&ZHbhPbht7lY<`vG@8axN zWbs4N>b3b74(p*-z@(l!Khf&Rp59LKi~J%1tY3UatNJ9WN#O?BP`NRaSR20#v96P; zG4Bu~cEy9Uj_>JT-dDw6Jenm<;?b{SQ60zC4UUq6+1ET5_YwJ_`>grn^&d_IPZmcl zcfM-jjLKUuzHEaCRgPl!lokSySD+f~65!S@oYKo1XIFZw-V5NyGh+!~kx&bVIulf3 zeNM;_x%dZ$=o;qD{3NWd(X0wv3Rq<%$f868(FJAqXHQr!kT#vqs(_1o%lNE*R+ww* zsz4N-Ix|*3@iLcr@88xk0l8J()svGV0#>{$Lj9ZMcyvU+5t*Yu7$(GgFgco{vSLdj zAdEi6ZHr?2pd%%XMbC3N%cJjBN2D4Fm_Py}h{y?={gOZl>9qlncqe}fw>sITZv;Ro z=@BS0GgWHnY{hAOx>qT6^1X;+9@aCH^21hoX65~Dg*VLp$e0z##sFH!YhU$GQQGu^ z+$XJSo;rZE%YWACM1VJ>5^3r;imjf=qj3(hwU$j*t@+j)J|%wb-Rtt4?j%8#d+a%} zLw9zz8FJERoI={gBJK?}u2d5c-des>{=;JnYlham7n>gwh2l6|+?aW4jdRK!LIkP# zzNU=BD6z>-Qo8wZ8`e{_3LGqu2<_|b%}>{!;Dn%~&T>9E$@t4wzm#&fq~>5a>e;k?NE!yv_%Z3)0OT#`g6VfOyrZJnq8_?AH1svd#OZsRR?A6zTRvTlLIK-h1%4O|;p{US|u27wojht+_MV(lEWnX^7dWNUig zw&uSYaYo{gjyw$5heeacL_vkl;)#rMbvB%S1738uM}B!(E=13FH>H;o8_gIl6+&zb zh}SmyoprD*Eh;hUX)SwQw4S1y{h>C{>#)o|iT=Fu+N5OSoZE$056vqtrVo-3;J6d` zhAOol(Mj={8ZgV?#Xe+6;YMO|{&)7x*>A-g$Z!Yr-1N(fgal*iNIfdHAgSHDYBo;Hs zUo+FX!8mpK3UdWf^>WLh`24ZD`y=-SQVi)uuKZgc`piTm4S#*`R|F+5O)n z-k+;m%6#Mq?{@GO{D6X|#ZAKq>4G}OGpu|1F^2Zqw#wPx6#@|N0+f}N?fmqdSODB1 z@)#laSlC|Xw(Iq2|3?gDVorjKbYXZ((SEm8kD#F~K#L#exjuwk)AazZwnRPR&5E5P zLQA4jo?-3BWmG3k-`A3tV-vl$9OhIj_nx~@6p2|OWUr5Py_4TbX4jP>1}Ymdg*w~# znB!f>s<@&zpv?DKDO}YM+6A-VDY5hnUI9j>Byb3O zBqb-S2khIRm7fkPhqoX6nmE=GQBE9nq+H`-9DmK~EM-O{?nAcwNK! zHh+8;S#q`2sfOTqg7@4v{$#E}z=?$i6E`HisJ0IH%W=#r5hqorxeX1Q0k6a+&~ZCn z!32tKpO#&0lw1kzt@Iwc1jXT_SL*A2pEtfKex`zwA+k@EO?jTJP~jcqP4aS)>uk(l z5Tr6s8PKisv&KP6s^CGO3SMSQH&RSd42-JR&jSY6JtYbh z2~xDLoa6o-XPr=#xVN=I{!u(G*JMP}RcOJX|Ar8=*Ert7o+wDu$sxj7-QQyjN#kQ< z9G5b9VtQI{y+VH_|x_7+ivG8l*62=3L246L(tA>_+i7d<%X(FgOaqQ8A7W6Ihank5ap z-}CA1-U`=NXE~m;I)$mGcHw>O1kR@9rBp*z-8BKx{)c<#tR@ADHF3qN))wks_+~GH zLER>2X7mEab1}76_N&yfUSo^;2XC)|qOSDrV)yG)iy{*21N~}p*s8TB)}7kX zenCxlxg)<}=;vIo=hidNY8!r^;UZCzo~scEj+p? zz+;L2(Z^sd$fJ38Vi&t7b=;NNAWd^`efDI~M>8G?C1$&^@8eEWLig>E)+kVzs`S6? z;DY{o98y}MJ8kbI0=qfmqfsy;9;eCsElW^S_0t}G+lIY)bH;SST%mO5*#4Nox~p?U zko+W}h-Vhvw4E#KWJ~U@i*>B4%=2XpJdTGA7^oxlXDq^smf+ zn*V%!^MT>VAF5rY*GXl%nbGIwAJ)RkF{*Q4j+4Gl?62LNwZ2D@OT?*_iRj9oTopzua<3jwzS*mF+#L*A(p5V+z7m^awhA zor!{4)!~ntMWl0DFr)Z@!1x}ukQbJ+_-AUwkyCXK{a!}UxcS4Atwq%!Z)mK;V)S6p zQ=+&!JKLhlXqz?Y87tq-4vuBmSqWy$;*Y8OcR%TR+0zf+?o0mKo6Ki5i=AQ}Eptzt z%KV_MW5CUp9uqHa(oWAuboe>G-u`Z71=WCd%ccY5M-~^B@|fyh~pQ#+gdii;BYI2md$YY z&UZ~XfWMWFxIQxEeb zG<~lFV2AwtGD+RgAG$fCK52agK55DY=h10>2%rV4#Q2&WHdxhF;kn_*Ru@y7zd-St zuU4K;Ym6L~3eRk{bq@4syHS@i_*!4?BF{WdBI;SQ2^C-?!QN^8u2oVkX;Xot`o%xzKN2sEu+T$;(VA+qbOC8n~1o ze*}yVosIYAjE}9DzQNAK)eRv>);z>6d%O$?n8^v?XBjL=&~AEXyNd9C31L3^e1!As zy_wXbhp7@c>d%?Rc3AyI2{}8#EG@uQTtm#1p8$petF{n+-Uu=FmL_EDEER<;K+!v zk1t$ulmg&E$d%j7U!jzD*Zf`Ps#MXuYi8n_HtMjL{;n<#HI{tCo#fUkribNs7;;#J zZ9}Dn?67Mmr!RV@uDvLrvkSC`v@$!IQY$RKc=mCY8hyr~M@eR2?gwLdR8=K-*ZEV9 zL4ym3a`)Ha<@77VFB}F%y<7Alm@;qt5h#ZtcEE#?FaQ&7LN(-{t7-hvq<~ zHaognYw62R)VQT4)7=^$&kF_?KHHDo~OLCU}8rM zCFm1)NOcY-2tpN>v%lF@d5L&9d^Lgk@tsnjBJ*Fx{#Y6~!V#bm&Qw#OlSFA7h@(B`}fi7d7CPr_mpY??8%KC#0t=XHqlu1|%$k*x1=RWFQ% zQf6>NM9PvUQybwNHp;||NWc(6G4H|B(aZ*_DuvUmmeNly1r;GF z-t_$8t*d$r+SMt9_8viEF4h+})K=BhCYf%6iE4NR(S`n)QteZX<11&4pq&vHC?4!B+adC!vel z-p?n`ojnM#=DOYQ#%`a_BV(Pa>x~U#%^@emZK=}b5#7IB(<%9( z!`*)U3(h``_ewXMh3p5-ojTJ>f=$d+=}sz3%owR)(aOD&>UAKs5AOnjBb#D zGAl*{Ij6|tNF0VZkV+oB%oCG;rF$&}^-aWDwYo0Q;#1v{7nv)twCoJzFfK5IfQxXP%b|84W)dF( z84Bs}W!AJ~^g7#Sk37vY??Pk0UR?{Qpi@B%=Tk0D*(5aygdx)$-K7ejf!@g02N<-_ zY4$7j0+R=>4 zIkyGZZ?G*`h%)`L_CYuKgPwl)5HV~$8vEj;H3*{WD@hwRh*5P<7}6g8<+(A@^+d~G zvyqYF1C6QX=P1eFr5qkv8bNf71l~w`oIYe@be!awx;cJ+sw@$|Wfv2FT{hyy73zwk zwF>*lbblgwqXp4n%dI{CDRai?Bfo-unPWtdM8O!0mo2N^rKNl785Xr9hIHs(fHnBP zW;-yp-dN@z_BfG8{s8w5uY)+BF_+DIsY#ve&%6I&#nV2wBFS$lWMh^ImdJa`~ ztkTvb8$am%mG?d4%${`ln~*t^~EF_6rO0EY)oUcVk3`=XU6qbE`*_1t4=dE2mNZfj4J|Kbq0Q8 z!Pn+k4f;-Tmp^^?+u*W>I1^50oLQ6AVsyuq)`<1I$}L{aXb?|{lro=yfmguyt`#H7 zy~+#k5kMW-25rt?EDR%9Eux8MdcenhDH zXj`VC6HvKi==%nRG>)F&k^ebQY&8KQXHhXRWLLgWd1tif{;WJIV23>nQkS4teDdi$ zaZ{51?h0MzUrH>V^$sy3YgiMbmNEKzUik{VNs7oAsAY0iJQez@ef-d&x8K8}Rwy!O z=PZRhdlNl7ePrS?tv*GY^|RP^=q~^;X{%k4yVNFvp=S#t{n}Cyn9rJ>wyG=EW}!L| z6USO>LaHh(b;z+h?adRF9v~6taxi6j;KfE6{Ax#V2PDxG->jg;EcIy-)nx$D9()IH zJ0hK&P6zuA`5Bd*A;~ciElwc2O7`ikmq7xW8Fu=E>L2L;9TGqf{jor|txW)qkL)(I zXR_7FUTX_CT3;9+?yhlD{KiP$;}zd~P9Basv>%}?1r@=4&_m&)V#kVydd{R zRBVrkh|`_b9k$YAXp+kt^pR`M#Q}M2Q@oLJ>w=CiP(W4T*K%y)&i9;D^Hhr6A%n;1jdGettxo zo23ZwwFFxNXW|!Di(Frk_ss`FiO{~^ODc;U>w~_%3hC%yd6n%E)jtWZY2Y zOga#b!gRhm{!8t+5AwIX?IGV$$GXS54Y|pVHKmWVXvKMq^MW{co=$6eO#IrnQD1ty z2NY8Rh|{!a1U&pRkz!b-PBDYu;{5A7D2x6(hT(5n9PUP}7$6G`^Bk?W1sn}4X@P(| zaD08|+UtK${}{SbnZQzb6Y0RISO3pxEkEdIR4l0-a1P_8(dqGIJnixutxj2&PK)c; zpI*Cm?d~5H@_s!x7vKZQ0GisLr}<)MpYy3a)YJd3{Pp3-pFs8xAT=JeenbEub}Nv@ zL+u?WPWq(PWbD^FD+EMPqyY-JM^St#WoLm@Rli;=k~=r_FfB zw9;9(A?t+^JJy8|W3BZ&4k2{K~u^TzJath-mATBYM=(UjuIQTQWA{h!xb3_v1usS)UIiIcQ`ea66_ zJ*Ob#vs|ygzZ|U-}Y-g3> zCH4SNDG_u$X+NkdS=ms1G$^;yYXl2eWpD@*lB!#RAQ=M|yZ(?la^a^Zdxuu%J0~Im z_8ihI^}{mYtijLRZHl(7`r}^rI&#El$8=HAMFppZ;fxqcnTttCG@n1RdT&-oMIC?$ zBzcdGX2b~TiOawY2pH?CHU$U7$AMqnG`KL2)Yn@`?%DrF~&{dcp*tkP`Tf zQH!{}v+Kfb7SiKnxbV>nTWLfq57ZzeJWeYZMz3U*PbsDQ!n6QckNjsy3CxAC;ZrIa zt{XgEjYi2`^XB?J0m(7{SCHP7*y7!+(Zg8YY$xQg8sKNnp8~$tBI5)(YW*FoqqKHF zdy2Uc0OcegNkFJbDccRJCl10acMp?UT4bAAjD;LTYZM80W>MPogiZy914U6)hZv@qDG&7-9W@jU*MMWuQ z%$bL|M1RWSN)i5lB?Io;cVW$*fKUZ2zDPAnsu=(v%1Bj373>ibyQrh1bD=x!pmHZ# z8qRU^Ls4lZ4%#TGQBh22I_=rS_mdKNuQn+7=&p5K5;WtAK|#ekY2)q6h4C>yON%>#$_Z_DJ(e@v4^UlsGs!A?k38xZXLx4ahv@|V>Xeg#_o)3>|$3;NlApkhFo{DF$XEt9A?^#Ud*&1!1v`t|D<&z(D0kZe2;tc&-8cV|8N`1g9a{f{XC*tGey zxCb8!AK;yM$Xkm8n5PUKEl#y?g{)gwekUlHc^D9`M_l6*+o$t=zg{XG(D{E0Quhw- z%!pPcGwl8?yN(nPZS~zT4e+|`ssLhaRRQ34AObc4+pzDYK#3}^?7uQ=iyFm$2^)Eq z9B3AD1_(Uar?>e>%)55-&#HaXi!TM(6?W33seA`7{%`&B=cjwit$-}C1hb350Q3d$ zCIy&ktapL80k&v9eg?x~*jBx`ynVwi`x<`-u!sPVxQdNGMrOhoz7D`iA{s(#gr#)c z%|i6~wEkN2+ zVmn}K>%%L%V1E4Btn7hl2MjO81^?he{B)b z*Kj2vQ)yN^XShk*}sQWrIVle`%sjz9Sh!4eMCj;4tkvAdzbAwH*~6z(Xf(lsyIj zB+aO)6K6bw>k`eDDwy3K%$4@_i;)S6MFQsqr#~+E!N&A|sgmRtU#YTie%itpt4%Mb z4^>)dF72M_eW5HM_r6O&Kh+hh?{;1@M{?GK@7o(H(aAe(Nd7WVuEebK?K-tYNkONA zL{XkYH&-C`IuWm-@4;WKeHDlrwI-nzu{*mS z`(EifO;on9#0AOR$m!hP_pD;_fBO{v%xrh}B2bcAyOul*@7|T)4mdr@&#vvdiCnz{ z?B6dkQY$n%zc08<+y`n3V8yv-p?OK{uEh@o+127}Qn%I!E%2A`y9@Wzy}O!@(@U*S zosIMJEr~RgK3Nn$ck#ZNv~IBD`qD%h_G+r0|N3EmysouS?F~)(`>+3<N09td8`JbOK6R!XnbZDsyfG{dqc$tM4Psdi);%b~ zRMk2PIaewR#V3%qmE_mEfCSlB$v3>5@^OiAuq3byvo9T2!B~@Gfg@7pmCHa&5`T3? zg5y{enISmySc_lY=$p%NGho)C|16q(d{#}nGe*R%@Il!+05$ZlUv6KP*AIuUG?QD) z0TkGUwKT|@=0O(>-v(gS?k=*-#V>C;$Abz)bl3Fe>X+iA!q@KLx-Ka@_qH4+4}ZwE zdi8eCrIUx>gUNc*4H_1rnd_GFFtb~k#sQ6c<(J3&(zeuE00%|y)8b`&uTOuGD?DDS zWoY4@k9W=Vx`g-h&rew`yD&A&el4FSR|jXeDoK<;TUP$%n0Pe+peLldh4iMrFY_$} zZYn}_7r?f$0xq@^WGtj`$sT>`?%k(QrW@|ra5$kCr!Z^#QCf1aaO8L@vw7Z1pt7#M zxZmwD%xpS$_hJuFWeNTT&GdFqh3-{K>nS!l&T`~y&=5si?(NKk(V=6=) zp!Zc5xQWFl%_sG`1vnQ2At@1yw~17yz`0}q#Cqf9iEMz-X0W+BM+4w7c-I26vH4$L zSeC`dN$9i z>6J!(LWw#PRW#+W!R*tJUpDI>jTFN;g{W3lGBKpu+(zBBs=m@Dc8>o9@ut{s-ICRV z+maDo8@h#P-`$YZZ z4j)2KD8+`fqD|W`^KJ>Q7F;?iJy#!IeJez1KyV~DO^Lq3!@t)rpK!r#zsSrtlOAD9 zICqwle;9FVhD&@vlB;CySaf0Wj<$q zNg}5%N}8hJ%`Ixe!Q6i(t>S))?CKwnFuD7LY-z_CaZaarw#!B~F2)|i+vkfagCTW& z<0|tU&1gUpV&ya(Q8zj;Xs=|NlA9o(G@UAgb!T-KE;qS`JkP1%)V1{244p_9h%gwt zWK#^4cV&DDCty(n>CT`FEC7 zEjOKjcU8z3Wf;tg=`u|X4X;xsXS zjEVJKvGI#F55}iv*i!y_jRG8Z_n!UP15;nOp@GKEs{(U-EnQ<^#lmX~1ViJyAZaa>U)-h&4zeJoE#AWF&wy3vf~_ zfKy2MJ?Qf_hC-bxDg*o2-M&muxqH3aK0~3Q93={*J56DZ?cTK z9O*|Vak_*C$qQhdr{h8uc1imtw z|EtEdbY$>YuqB6B)9M@{SkwtsC3)cJua_o)M|jSC28A51_Nk}Vk91(>6J!y7=SnlR z`3|f3Zpx*T{d+P@Uf9kD^O*5++ovb}JRJa6 zj6;V?n;i*uq)ui^H!dK@5nb08GtA+b$k3~I(=u^s&r~Dyz6jK*wTIVhunZ(U$1F@3 zD!sA6pumsW?#^boh`Iu(taso&5i=y{u5>1S*;5wy3s*!#W^%$VxixPcHG0m*u{2yc zLrmSxx;K~U6s~@9Bx2h z^gHXw*4|Fg=4^11pwOcF_1>zSI&{^octMX@QZKJ$&Id zKW_+0abFpChS*D{sK7TjGkOc(!aasgdjG;*OdqH;ehUuMw-^a5AFRT_{8;BtX4^N( z)mFO^>!~Mnw=yd;e&Cemyxhq()m6=1?XN4@uOtmE28*q=vJu$CG(O+{lb&{}wwVnJ z@7Q%UWCSR6>+D;GU-I3_qcC6rB#zwfs!OA8M5qEGY41q`Kc=`+Yq{LK70p2) zIK4lsw*xV{BFr)S!iUT*BT+^&R^By2R8`GpmEzN~#i(1lLYE$x*MY!gj=DtsmC8B4 zt<%Sj+TZBFJwpWyUEL@RJv~_!WxELPSD0in5`P=a3XgHf)ZI^{dp_hv{M8&kX&F_v zpTEa%W~%qjLc@WJlYP*9$rgMl+96?xZR|}KLAmj6r1a*I5Nn^D@(Oblr{7BA{&ll= zZx8(T0Ohdr&hJ3+1mtYH4?N%`PnIN}@B=G100}5Czt})R7g-7C4nVX`QG*r5BjUKB z)wy#6FM-~(%;0daU6kA3Z32wFLbv~P_i1yJ=f#ZB`*Wuga8TQ()+DRfSI*;qE>%*t zu{Yl0(w7V^5FMs6=QX@P{OM(K4`~yEkNE0-Kqr;VjdrFeI@Mu)=^eSf&^EhY)6Sd1 zc72apy?1pBs^9O6u|9@mKFX~Pnkhr0rrwG^&e$w)+?rD~d%qI9N6j|(wG*$T0@rvV z|7--nKr&ay&J~ebXo-xioV;ptG-Aiq-G)%|D$G5VME8O>kAj z*s)lXyzBz0O|Jyb((Z*pqEfzzfz}b^n5K6Trh-{?x~~g6sPJT&SEWpv_8f~hMP#(S z+i&$&SETqyl{abvyDJXl``06OrXyuuRDq)xFGjt{r-x|$ADtB;f!KFLqycI=3(04=lO-s+I~c8T4rr%3u{hCoNC zNyj#VC@EKz$^_%L*e3m5|+`v7}Klqc?ec z$25?*0}vkEVt8eRX~+bHYyh!asC2A_WdSh?Aum`;L-z|yz7qHu$Ep4vf8fLy6#sH+dDoYhDE$M zm|t?y>D6Ks724+|GDBWiS~eh>q|C41cOy-5$2@LVm9}oT2d1d=R5>1Y@X44di*xVa z=n6~zzzw_TLx(fsbAw!<`v@=? zZNOF6J&9z0&7|*u6tYcdu{S4 ztSCXj^tB_neXCB2d=dq-T)2!}`DYunL zuoyu(%ne(N_n!3B39%Pf%Bw&I+}`Z+d1-c#jPj_uRjm-=?n&}X+k-NdNUGRQ8-Je; zD&{7!N)9}j`gj0TKaP)n7SQW9Dfok&OuyI9Z#J?@{Fk2cr4`UTedwi!e6Lrw|5V+z zZw9RzZ{L;ZmJd@xClQ7~tK6B*Y*6f*`>iYa9B2(VWa;gY)OheQBZjmz@8jT5T9MIM zldK9Z8B@S`PZ42_U1C+1g7EJ0UP%Vcho~!g+4?4TCwH{N?sxnE*r}XXRCIxsSne8; zxlR^VZ#1ZaJrB8KAPG*K*dT9&6*Pc{?W=|nr@d~eF{!WwXA zY@lgwWnABqG*?0T%oXz{ajZ{=Lds>7e!bjJnacZA$B;pvdnyqd(%9aHm=f7z>dT>@ zeZ0cnB+{>l3U9CFIJTni({)0E_5$jFskoT93SN9CaUTHsIZ*O$G4=*htzizOK}3dOpiB zx$K5v?@w)mZyJq~Lj;qg@d(RqH@by3@$F-m{xhS6ygsp|)pJ5x@1h0z*yh)f+2c=a zv%3dtDdVN~pN3pE&yu&qOoGXX!nkNH-Po|jxjn4%kg(D)nw6Q(`1^}i)>U-Bm128! zgE64|A`(!68WVEGk2sq%?uLeqw$z1_o}N_OU4oMVidA#UTK(OT z#0CpHZ%j|k?9_2|#iS=D@1b3{Mjq*m{i>jFpE#{nYUzCX{mIMJ4^_2ZaY*I`#uNB(tE|It@zDDLM99o zU)NO0mOD}84uDHqIM;T3H3&b9g#1z?1cG6NxjvexG4?s=^URwIo{rh1IF=_ImpnK? zPM);#uSk^k;T`xd0fujD?AMnlG;nGJj+7=q0zhSfnUinwrq~p(;H0dr$itUOGdrfG zKp1xbg9`+Qyk40bBQDX?p=`OMO8CaWSz2$b_VN&Jm6<3a<1toh4U1?!dMkz(Uo;xs zr5djPdnU8o#F6R{AKQl|yB(ce8%y?FT5dFq@}MhN6vKt+?|nsaM)JqqM;{4Nw<3?c zMrdJPu_dlp$VR_@hbxjp6!R|$e?yE%9*MTsLOfwhhtM*NBc;>uf@#{e7i#1mA2&quAS#)X60ze+umb@OY-IIzGl|SzTXwhOni1EeC1!| zKYA!`F*8~D;wj)_G;?)ZHJu(jrK#+f@#`RWZgs13SY7qO{B=)dkvFustsiQ&`t8j+XQe;!HN}7|QVFf~jFz4$Z8;`|8*?@|`T5 z*<@QBwoZDkxGyulcX}q(Wwi3?don`Z<>>~Q+?nBw&61-GS1@Vk2a$wypY2?A6gzd7 zYS8a|`Edp#P28*DV$^!y-EUt)f;DxvS5Z3T%RCdhJQOE1g1?f6Jh4_$kJG8yQ+-==+eW3%hQI+dtE zZz(!(xs8JyyR-3$9N*mKP(W#$Vve6azufoy5yrWO>v3|f06B0DfukB|ZYB~Cx=-hD(ZeL%fa~m~h;ce$Fu(=V=it zth<(!;T*xhy^miEI}yxW3mkTtRYtl-uoWJB+mr6(_ST&7`45lVw@~_sd-Yzm;<#q-3H)z#}B- zSxS=FahF(PIWOX*8;P3*nk!oR;tiGerxhsbi&{~fqzVHNo5#|h!xs(^Gy1+q zt5Z?{NFDLF4+6O*S+mt2EV_DAnMTM6pLKVH2M4FEw`fcSa1(5d9T+1-A$3aaiHiZm z|Btoz3~Msm!iG^t84+b1K?D>=9YBbHbSVK90RicRUX%`@2%(3js3=8HdI`NI6sZA1 zQIJkTP3TQJ0Rn^&I`4z$%#3rs_qyIcUw%MH$bO#evi90*-S@hSSt| zUA=3ls$O1Yc9XNOI-%8bQGAA>PUY2NJESW7Fw}KF_}S%vH|2sw!}_#?@xMZE96h;% zG8LE2Vu|5D0+X0~6dT0t0i|D@JEBfpIar!EKOj?4q);nSowK#De<3&wzKDM!*Pn0b zm%SnBh|BYsexKS2k{D&YI&vEpWgECaiK%`!oqdIMZ}_1>zBW!#msxB#!g3n=9}!!&2MSwu4Jqt} z*-WW@Tk3meT66qNla)SpBf&K@vyU$>nHRW+^0RJD%eWs+!Ncn`CZyoCM&M$*)UE#A zrP~8#F)kOsHi_=)3;1mwUa`-*hA4eyS!BN-Kw6r}m|Xr?IX_a-j}Uk|SVC}KOe(oC zhXEV&#N`Y(2>@))Vv)A{rcqam?Xo4}gQ-H)>md>!^R&c0`kM}&^vG_?Om0{1v zmON)=+55m-v_lvfv>LXov%m=qKcMCwD*WNhA%Db_L6>f302@6LGrG`~?9m=#zm%M= z_7H(b#cy~%-^tysb;et^Th=kdOtX2>geYBkC_{KnHBekRbwCewoI66G1fY_x2B1jS z=P2L8vEj#SPe6}^sb;K?)r%VIo*!G!Rkpa~*7$9`-dLc9sFF}Qb(b6i4mB(yn6(Gr z-oUq}3}!yMI3uupJFyD4yGJ@8gYZWZkEsRw3K45%GVJk>YUep7oTaa76J28va(cZb zzbtU?{ar3eWBmr8(~9wsfa&L|r&hk|X%5Xj?{3XUP$3 z4LoqmlgpMKej2Xmj*Tk(?4l$zw0hcR1IW~Dp)ZcW?<&No>>H*ps!>p*a83PqND!RF zigdRa9l71+Ieo=_Fte31ma#C<)m5K8JCwn&R%eD`H$@)1cjoPFS8(3F`}F0@mmUIs zA3uI1aNMJzdnDv zxT|ks(WmP-Ks=A|w)>b;E<~8#n@!mlMa_rqO=XWluyhYI@73v{X{fg#vi5+Z^{2Q4ItT_bP0sQtz9iqmJ+%ZS_IPutcn~AC}Z> zWMUCVjO{T)a2zO8lJ)%vyQeOC92%YRPsz`>em<#8UACO5F+3a`wTIP05@(q4Gg#As zUmD8xoG3;$q)6{C(R~tTtcA1o*|o0{bZMC;8Fa^ZoPgI=-=HbUfvV{PR);b0P)Wl(luFb)T;{=B^{ zig6n7Bin%HoGluVR8Y-x169+FB6dkGO7)V2AKO$;o*#K@DhInK`nBpyS2QU<{;GKU z!n*pVSp~n|!<|~Kf+w2I9^Qntn^JxIR7z!$>kxEkTqk{5d%F)IyOQXRP5rUNaZ$`jzGESliIqF-D=}%*P6Ll zqk`jcLT6_uosLcGT6s&7n`QS7Hn{m;#|h}|a_(>5tu?-R;9Gwry%6gi0HpC}iA4Bw z^7?w!9#fjI#al!J+k{a=!$BIwYdknLE?hH;OI2vH;zv5T$zFzz#RJ4x>YewEw9OJ0VXKOt*fzdb-$cEkt=?>ov~oA%CP( z%9vtIfpV|i_0g@)jvig@ZDrve+zffE%WwiGcO3uE8pGa~F6UWZ|(Uw*6+Ut{yT zHyE-#r)47QJd@89aNt;eOyB?|<_}|wT3)~^Bt9z{si`Oq7He7(ui8i7QeR!3RO|My z*H^h3kd9t+<|;gV65&b8{s>!rCQA2)ru%mf5Vba>roGdNJ2Z4MQ=AZxBd8eu0d7L! zC0=j%f^TA}RRu{zCcSUoN86`{^qvGh6FF*}!Rr0u65FPdWVQpxgb%Isb@MMwwVM zp_4T;4hNxoxmOkJ{Ig#juHN?E_@{{8mza;n>BIDQlRgCj{HK@t3uUIU; zd>f9^T-xG|FimP~Y-F^Jt;0RGw9KNkUI=`3v#xkxa$rLW6JzKx+0dRofBp)WC1}b4 z*I7ANjBM`j3(##S5ZjLAnP0GBJaBTU6YRg%5V^mvP4e)6lxs?d?{w@t;`dk!<-izc z8gVhyp>Q|nww8uqK1TtZTSu==c{BU>b`wS`D)-gx#n5H`jt!4VV=3OBd%XGleVluv zYKGb6zMA_d-kg(+}jtfrGdrqk=uR(Xo^vCQ2i>CixC?>?C2qX zfP>gM-aA?2nLdqVXYdX>Nv68G@@jE_-1s)jLW8A~CU{~+UUgjxMbd4^-seBhICv7i z#*2DXJDop-fL41gAs{L~Cn;#w+qcBY6p*Cu`l?Lj&37?bYLw{H%!;oe`010O(SQsf zN1oHpW$4bw91D@&<98GLt7pQ)O5W1f`($J9g!8yRzS37P!$}tK_G@1e-55ru!*ZaX zkjrH_2HVe=-c;u;?V>V0i3+v*IZT&kq}!=8U+#JrAF8-)M{kuQ$yNRgyr{FpR#vDZ z{m`J+^KLgV$p_7)Gvq&Q9M@I%!f&ZI_5#$|j9fkGPW)sRT}I;JLDFSQ*~$}Rku2n- z#G^_b;tDu+6U@~Aoon~{ke|M;-#s@vZc~{`whSEevdP7)aI0PUkddtfQloL*)`6u;^JMcD->v2v}#W z?B&asHz}05&)!~M0K)dg>TQ~fj551G#cMs5U(&*5SGVwoRC~3~Zqe0}8rK#C;MtF- z_){q|b+e)++5C|iVcdCdk+Q3fvU3$1DKRdt+*k8Ilg*UUz1aB@CtDSPyIxfP z@nMalb=5L1G0hamP{C?$>3>Ciu7fAS;oZTb!+nLNUX`NDXXQs|wvaP$JnYa7@gxkb z=-PtvRbO>|dpl;m_;$S^Us@0f3Km;}eElcwV zX06uBu+u$G_PW`*_0C>Fr$dqlW|?LvJ%al_{O2EFmT-xVI<6!wzsmuFwJVVHxJx1p znzT(o%*zqSyNY`N8@X5Mckx4bjq{NM=ke9e%{-LA=oo4urTY8>6@=5Ze0fpda=rs? z(TS^$!AW%#w@z+~T6K^QIZlc7hRtL|X^TXxdS4skG!ZDWW@|i*Wvz8g?fO2*@-`9N zz36pWy?Sk5*PpG@XrbMNMshcCJbc0LnKY?<_i<>P=M_H_Va;wQ*Q46#yQ7B1RfpNV zy(P?Yqw@C9mQ`v#H9@6mr2;CQR9bEgPf?Y{A)eZY3vym)w-Z|69CA~%>!d7o)MCLh0^7Us*GNPOYc8l(tS&14Jn z9OS_o9Je>G!+bj2dV<|Y7Revfq43U$MEA1livu}a;vEYIH?bomdf6ng*2I{!(0pn* z!~F$_ctanrGBkpXp-9}`cXVyfvtm1O#5Mks2XHc% z9F5Vr%1ja{`F&4I!-tYmUC@-Msr;gFMSGh~Lov3DfRVE(j2T}=nZGlnKY+EO|B9;O z@-xg!oJ33IN+kwAN~x_}y`ZAqJ}Nifk??Y+Y;Uy(e?c~h7ryiR&+Mj0KWeN$ka4Zs zeI9PhlFq<=P;i0b=r_7JXUBo`Z1iO9tt&JvU(HdJmB^pkFtc+@5{XHgE6m|bdg2tW z(+~@`q^o);?#;#f*&PP?9DFxs4Nu!|rZwZIo!siwYiM$=9+`clZr8CW*3zpHFU{Jc z-)u6zVycGdFJ13;o7p^@=+m{c1S5Y;4K85`4wc!?Re1YBo7@(9>Y2(|>hj(w;80Qn zKm5rA!%<&oALN4*Yo;yE0zmS+7D$)piO^V1U9nf_U;;EzB7F?YIz4y2=J7{!UZ_cM zwYTzn+H&88)8j`f?|gFd9w!%N%A)24%!uJZt&kcWFr~oQ3=Go!G^#X15jfOQ&%GmA z=Q`+H=Xqb@QZbTHJEb)b7gQh}NT>)~0HQy$Sf6x%VRsK%Bz5rhVoE^QqK5&V%x4dl zRs0>jSfnvilfl4(&aQN+AE`-Syo?ngRL#8!>3JKUZGTEpVHuOf8cOkbEyvpJrJ-LpzUNkR$@gzOf|`?@tb23 zST1@FVH*YibxZT+&S}G|lBp( zHs5Zmm@nrlJXR((Gis+M!HJhW;nxQFse6gN1qr<0?hYb|;!rf$H+%OgU(O&D-LJ~Y zJ9PW!MqmA>(Jx>_inZShIdRZuZ&gW-!jGNY#Jc`^`>8o=hVO=uzD{+>cfxW?OoRQf zH+-Fr?9P`H!RFB~2XQJ@{HHmZH~+!ur~S4#W2RR;XqQ{+WV+oZIzJ{8ZhVxlko=^a z_C=wj%Xel`{mKVrzpuOm6_jIwCyM$Xdg|ptBYtX$j_n8U;K5Bnktu7esCFdvHKH!kWS*iAL*-l-Hw^L}nQYGP%2yP)|R} z&r`V^^Mc%SvAJ_;wdO|os26EWC!@BG`JXFm=mR7^;7_`nWvp9fj_kd)Tz;aphT5Wh zno9oc&2y$%dEhfuGEBk~XRNaq<~c!juQw**Cue0GZG|7pAw^1U{%MPbPAcwjpUOS# zNK?fHFc1HU57E)lmBML?Du0d;g;NEJn5L(v5AL41qx1ia5uEa1sAghfidm|Ajv${S z`dV35;Hs@AQh|d0yL)@4Ljb*L7Fa6_G+#t{?%oZf5z%P-EwF`hLTGIKPwD#~_xVQ7 z|Ch7~b};hw>t8UzW3HZ_dI>^SD-+p2O=qA(UW@}Z@EK)(Npk@MPtrdBq<=6S$pP%m zRa!!H5131+|3hn`dGJ#4tS!x8?TT*TIgJ-vL%Yf2HFwJB05acHhYD$O5N2O%h5oC@ z9z2|$nUMqj|BbE!Q`-3lXR79{xPi+(vs+i;z_@EFoHzk5+}BBe)Bos#0c0lN6>8X8 zF$VIRlW6~H>c77OPe=Ti;6J|{_~`#aw0hLU+5QZDYATWO>eZYtUmjp+)9%@xTou3< z(nYD>XecxKtBtg@`>wO^4h|1jO(*UHST0-&7)p&aT3cJ=)y@eU$1oC;#q}3Jw^8l@ z^KsEu{_*3s!9i-{{Pgrg8rClrzzu2aoKVHmUi?Q_;H2FLU!#Ct6pp<1+i%Z+wg9=% zgb6l+g!5;do`Nnh*@)$ATIkUJUyk(Ock-pvZE-heu-Y_twouavuocE7r#aFqri?2dEzUiGz9OEUr9*Ij2oQF&00feI-02Ko0 z5O3b^(qe%GC(`&~|1>mN z(H!ZIPiJ}u{kIuCNg9)H6AU!oIC}Q~nOw7+|I1AR#_Hn#&##61GCW8H3i1HlnjU5| z-*lxYt|dUM6Q3*rbNl}7JY3;xh5wFy;T4a%{r&wnfiZ3W#EAzO zilTrj9FpGgZPx!zhCie>MQI%0rUGh>s9W;<;Bb~er@pNB<7Xm`08S`IA%eY7k;8Am zM`SU7hOM~MOptM1yGx}YYAgHVfPeNLkR_% z#>UBb@r0OMafhKa)g&>Vn>QZ$L*h-YuXCk9|+tLqd0vf%{>oKz+}NDD|n>lLWmTRa7L^Q)1H*Tgd3#m0XS~a5fKqgk0(m4LYdfcT}39C zazKI+RJFU_#6X;Ylko4a0LQuFh7sZ9uXEnyd4p+7;dloe&_}7iU%669qhoj?BmD{o z>iCiU9T>^h@9=pQ)F$Isglh&#=5L z<&-fPwt&L}a?g+ke?I^d-$lm;2ofLe0lHBuED~|0rLYd=?u77v&yc`cmm@$G*tGho zqU^Cg?a^UIM(SbQ@Ab(URr!;Pvs7VsFU`D5$8{#}ZEz#qRY$W>nvsH$F_fNwsBO;! z=wML=Z$AzoMABZm{@KRZ@?26JpHU7lfAddhzpxWIQDD~C0qQaUF)vcIyMVAVH)r)G z6N~I_C$oy$XPt1AVOm0<$CG~4ae}e4voo|SnFej_Uc3Qqf+skz+T`Z%V=qIn5*T#wKp? zqMZ^#e8nNb%ty$oOzxH2#8!kz708{F6;9^@-)68Q=q1b zLgcY|(cIbZ-_5}(VE7@|g66$weiK6}&$V*6nl-08Od74F>!D__BvDqF_mliMc$V^E1BZ}O8K3#t=xzQwY!)wj}VOlY^Y@^sqUeIxx zRAWlo&&-G`6r8xwQe(=!38q1OGI&!B*bv=oBlK6hQ^2FhEC)%agTN%F7;e=>w{~k? zsEqe!mZ$({*{3ZaUoYyn=Y~xb?POQwb8H*7OhEx`UJr&lwTU8j8O8N`$|v}pBTf#$ zKmaP+TEL#O9hR(OFf3t}z0lRdAGdq+O)ERRYwx#L0FF)BXE8mPe|P=S*FIALY?6&% z+U?bCQ&I?yM^|GHVwK`4Cf7>^HFb&nm|Oq-@giKwpm~^HASvAfCLDydzQijL>97V^ z3G}P(_Gueo?dZ}ryWR}>!sIj*3gtbelWs`%niuS9ot;TqP?2%!m~z{!#=4LXtVe6l z!Bj38aLdY8oAgMa?vu2?*MoKE=Kq|j;6w-)9qtGsE>0qMJ~trnZ^92Zrj5FqML^#S zjV?PoSL?2qMOdzEZhTbKFsY7hxbN|@#8gN)#l=PF>fj<VXB z)+83zZ`w87cqcY$eP?9MJj^0lW;GeM7frr4UsCL{U}535zFHEJAUld|M6g-^HWJV} z8Imld%55G_!CW$qaZBF~Z7KM^;#m98V`b=hL}K2TC8zlV%M;cw?~`H^3;{Vi z25=l+8Sz|gl&aDK%O5_9_63zDJlbj2vjeO`a^X`u7=oo~yt`E-Pu7H;h z0FnSCD``33GH|4<1vArKW!MF_w$des?AkEdoTrYagk`({D!lApKHryTZ$qPkzO_HM zgsBuYIw%*lILyBT#7kq5@fo|)!aEKhFc=H~PKF6`yK${JH#?6PknI{f=PfojqT~h* z1iPKzCS$R_AF4Tj^gl{Ib^LM>OfjPExx;(fZO{ZA*jcMFWn9wvO?tOMgthHhrtS?U zl&OlmG+2PqTgG!GFC>Sdx5B{8E97a)VuGLfgaBcLtjn^=}Ajdn84~Y9~^fESA z8N~;?r5jkh#KeUkJ0|x_;z}%V7V)heEr+}X1?yy^;ycd=oA0j9-3Q?NDSOMFh%lAU zibW>7tbt;n^tZvmqjf4kk-qsx0T8fYb-mTrY%BrWYgp@5vQ{;73AAIJtsHZmmJV1jc29mR2Ei-U}*+Rkt^uxGeRp-O7C06uly!Dc6c z^iO4+lPNyPB}}%t`t+$my9A%`kb@JK@Mnk0D7l{YuM5%Xi!f`hdpzyPw4@gYw)Hx; zY6gBIcYjGTj;Tr8{1tgSV(;SIyiGu+pX3-ApZU+BX+vO)bm2Ia`NYJB#7~^qvvIzD*yc)4Q=_g_d=u%ol`ePT&E(8DW$pcU zNuOJ~0;)#Yu!RdA4~|^{uW4j*((Ghwm67-uD^VG6?7zFSqkjmDzhT2~eHWe9=% zLWQV6rI6vBVKM(I?I)z`Ea&OzfoiD-uyz$*w-6>-FVN8qdtH)KLyC}Y}Lv?6>lT|dc+lI?L1 z>aTSitc5zMHbUJl$9f^93)>`*q%!B#u-+WTZf6%G@r&Mba7Ss6RsUOmr{Yff{H&Sl zi~D5-kqI-x7ZMZk8Q99*_=H=W%7)Vh%ro&$oGQba-ktO&NrMh=(=N#2+MApDecbrW z9`f@ve&^v_n?#XqzDIu+e)PU~-(AccQzisc_}+a#sC)i86hXfKi_?)qG#_YpM>2x6 z>PV{EPCnQ$LX0y#r}B3ry*v-8uZ1I^Be3;68AC>EYLV*6%xg-p{^AX|b-FKhf!&x; z2_58z761}bC&$_O#MCg`(aJ*I0{!%N@7`UoS{N)a$o%~IUJSp0$!mGcguy{!GroZkeCO678CyiKwHVt(Uw+wUC3^h5ZTO(mLR~uGUXc>o%iq;=ZQc)NUBzdV)5r+#HVUY z2JA(D64EDez^6+YFw_vh13%$Pruy&YKa!IJ%3^?stTcZ>$&_*fh{T*n`sU^w>_AYn zxUfpK_`oxbb>F)kz_|{3r5){eI2vvoc`8FdvIn$(@2%Fmu@AgYO8EOn$_`~64Fe9$GfRda6jHuB=->egl; z448aVc-D9Jow2z^wuNG$hWlk^W=@CE^qq@IF;zCHU_q$ThpsdIZ+Nzn@3v3(47c3? z@Hg@*(b4c2q${7%1ik-ACd)k%K0z3V?bj|vJzdDZ^~M=`=!$L_@2qpT8K>w< zPTTZL%+#%0E$U)CSK9|^%G>E5CdJs((qBtcWcU6yvW6kaK)c4`bOEbca5!HJR1ZP{ z?g?{aHy2sL`pMpOFh~81f|KGQH*L$z07f%3#XxXm#pau|8UWIud^y9QPX;Pb1wh&|0b!XYW+JNt~2P+Bf6vIP}e_+di-JrYNI$Y*@9c=B;S{Ugh z6bJZNe+u^6GmCp!78IcbwrV2bgg2+*ma%LAQwC_PXLF7J+*+yjXdam{>Ue0a4H>Y(FRdTE2tC zf-Y`|cSng++1gY>Qp(r&&&l6EdAhXM(r#>Qe}HyYM{zS!7bG!pa5h}c5@lv7I5o=g z10d^le_?;gFp6{%L=y9ELpvD6s8$ch#0gAlu1+vzF7hzs6y0-lDoh=`CC>}Q=Y5rt zk0rS;`KX~?q3ioTeQpvuy8EvnK@l>;$%$82SfkngY)7*#w+inv z@=tLLV;akAYzRvvzn<>q27b5CYWBr_w~2~8V?V^#9&@IS{1XN1n}jgl``l|2&^KwS z3*9M@@3=deE~XRwl+QE1U1ily9j7HPihR z;=NdqoBR8xPX%9v`2Xv#x_gN+YC!(aW1$yp;VYN+;Q*AM$tosW5dadMJ27J zmt?s|Yxm!c*Hi*Av%u52VMtvn#B$cjxXPu*;`i_0>$=aY z48=rXk=UHssZxo-@$vDIE;7@Gl8If-6Bp+N73CW_!FCq2}Fn zMTXI!>PQ6K@>~|SV|?C+1zIrE%E`cx|M)zQgzefqKV&^BB=^^pIR4uZS8QP!jldm0b8ZdkD zuvC~Zw4gEelCn3uK}#uwpMeM;akY)f93B{&QEu$M*VXS9|8T?e!E<4*rTwPyfi>%e zyEK*Y4Wb+AmzHnP#z2NbY#U#c`oNB^%sQye0kt(_O`4H|I$Doj{hmo3 z&6J2n{8q)HAPZ{&Cg>U59LTs}-a+@JScGOx`Rp2hj1YV1@WZ?TX^APdX5SK*&AQEDeal# zVSa^p$Mx2cL6_Q`y0Mm_BtZR~8non-zagW_(mU?G!heRctQ7zjwJIO+0)(QUd@yO* zx6G@5A)Ut~tJasdMu7~A@Akhg+T?{8P@JpvGG&spd*nHm*^BQvN|}=sw*S1|H(%{+ z{|sYt=d{q*vS<#EV`p9|MVYCRZ3MHPvIxNM5HAuXR|=7o$gW6SIe@FQiBIQ z^m0iN?W+axFXx{oOpnAzDNA~5EnNA%fSeWW>rd`oX6EB1)jZrRFcF5QPd;jF9yf71 ziqR?ea*?>iq0?6l12#f)$Q!XygH16xMINN5&7W)Ki~+iv>$TVX#S)-PGq+iY@RxCd zt)0Xgx(660Yzu2nW)oivyhU6dzvAH9y?m(or21OJ_0pr&$X5mzdk-YNXxo86QBO?~obJ7Hl_OjTTivbF^;o@3$7Kh0*eea-_*nc`M?T?U< zkWUQ_fFr{OBqr%jAT{2dVIn|uNDQ(rQEd+cBwA%tdG9%HYrhW_zT_0<%^VjT-1_D- zOrdM$&&R+<1~^;Ib@9fibBWC6;Yov0%s}jOw+8qAy(9+oNU6mzsjCN#3gE1c<+q>+ zTjC<#yXgAFmJD|{ysoZiIw%nBjNT33%~g{CDI`%>w(M*)My?BJHm10F7tKrN+DugH zHz#9FrbZ8Tjn+qb5g(*1A}kAimwr#&v8Bbt1#HfEhPVF%@kt;(KgpH`5)FqY1D;fj z=E+wArogSSyDd4m!HI37WL_X4M{oarQ};i8K$F!<&y^Y>3w7Aoeit1dZ|le-*K3ym zK>+p}QlMY5)zoJl^PKdZkX!(?1+&5FPupl~H5wqKT)HHkOy8syi!sB(yCO@l1vH2% zab@7NBwT#Xv7opkCaNPY&R2Mk9d6-={lndZzSx&$ zN^0roZk9vd$U?&&DUFMlZsbZ;KAv9cnkrk-KqV8r8oQ#ocgLU3q`c3Efs(^`1Q9@R7p zP>0SAkqslTg_=Xqt#Yg$>QD$3#3`T`{5?Z_d0*VLr}ZNm+E}1zpZs;#{3s<)Ga?{8 zD4e6GtZ5(Vt!h>cdMGFryBri}iccQG`Rpgf4TxnjXh~*>9?#wMajcH;ktV-lU(`@M zGA(lbCJ&vVIum0e22qXcJc&aMH9|h^*4JvNJBdD?wWJya_luA@ZbKK z(~-Fu85y%Ak~4Kv!OgAw^y$+prtB)peeDg6VZmhHt2)}e-|25MtKJ7uhx9qCs}_BS zU3u+wZ{c3EsEMHzaxLGcV(EH@-GP8VCp$Rf7JG^-C}2rXCF$Yf$~hzu4ytP(bQk;P zJPLFI?wwIKuPa}ayw|o)L76K|xy8o-l2O(fR?^bkzNfraP8Ic@v|>E09U&&`8h`i3 zPM9Cu9X%Wik-Ad+Mn$jlqmssW*Li=T43sk5ror6JX|9#T8uc%zc$+s+LH8u1|6tl3 z$k~0M9BZ!kkaRqT+*DbTUH-VQqD!-9vFZwgRIm#W5y!+V-laqF{v|8c{zIizw!J8s zRoGI%bqNpEUb#cr*mF+@c3PbWI9Y63`BlC18d{{@+U`YvMf$g&ZM7Yahi}a;zxAPn ziVt9q`}7#g9KzPTU8@sog;k2t>ay}cRoQ>~x#;2>ej3Mn7b;S~Ns{qIcDBrnb_-4w zB^eo<$2nlajnHAOA&VzPVSySi!VXDt)?V+9K;tK9po3{HG znP=RYP}=JJ@}<9ewI)Zau^K5`TYWE`vmEh?Hrj1IZ0t00X{`6QYvGg) z30wW@YM>ZjcvydZ{J^Qhv3Fp1!_c^5yu^%+5SVfrv`nezTQNPV={vPZ%>CsqkSLZk zW{c=kyzSIe#ITPdK>>5|b>bt)%Dp>SMPzlC9ypMabZaWI%Qr~(O!nmO(~9oPa)1i< zehX(w1mb+Nh9*H1Ecr>50eRy7_iY(WXZ2+@i;tu8_`B=loq+d8w>j%P(BBT&NP3be854ZiQXR;eQg6_{UJEK2JONX6dgRYp2v3I4AZE%Y#gnI}n_YQU!q1LEA9Wwt)hZhqBD`a5x zv^3XY>61Oa>MQ5X#aIdorPloWUw!bPhf7!7s?xz)3=Q`^c-L>J;<);yfQbL9{y_OBRw9PURnR% zuzp?u{?FQ=34FzAl_s3~)k=6Jxy#qd^^XxOcJ))5t!{yG_d+*u1=upK8Fk!qdR~0m z(N(aiqw-d>^sHe`!FcC6s`ib_e)r71TRk=<*9O?L|Mibpv5fD z5VO^$5VPu#r=OmjC{m@rTKy>D_dUJAbHF!ze6mQVPJ6}_Pntv=Q9*C`&2pTNV8!AL3kk%k_DE|E}dKXYW(D~t4HzmKd6C7-BF!^R=uKZ<xbC>h z#G3b&xkBA$Gx1*_dhfrR`V^A*Ts`Y5Z#VuZmfknBoc)E1YCjNM##pm>1#CR+S=TGB z&!9RU(|}JyK{Por3HhaSbH$HM_AUyD>Qt1Dcj>UifSjeT(NFJy50s^}eUO~Rj$YS#pcHMOe@${8fZOsMW9qyRdwqyWN zTPE(}W^KvGkXZiA3{Dl4K6bSh}+i+x7!!#60-AeBcYvDts+i-{*T|@z}+J^ z+6-hUT@h`!CxT6RLS>C`2;mQ<+8h%}xC6IJ?ts$NpYk^kPDLA=?7D*PFNg|90$2tC zaeWhws#qQnbD5S0#qcbzt;4xelf#2TC?+=H<|2PZEu<_AhAyBCPA;lZCtXjb6%{nkUV^qjB=kXrfql{ z;8Zg@@UUhl`=nmwUk}FX);&XGkqseUULDQ!31tMmaA1r@Q7ieliV##rF|;zM$9lb5 z`MmhJlQd~Qgq_#$#U^q0L#i%-*mFSTo)cGjKYFWtl)YUg21ST$ybTLjQHJQK_Kr}x z?cje?EQZ znv^u&gr8qEeO%FbwX6|4PTW~cIaj|t`1$o(J_#ii=1)YL((w}c)zL)pb5BoJuyLz7 z;}r|>vfI}Au?5lgXxj{-Z4E%>MceOm#@2WQbnbJo&_d*G{5PSRL)>;>@g#KOA^gsT z4+FGSc@EyY&?JwQ(*3`N;^g;(QvihOq+PM)fUka(`R`AftzrNSRv&{vZEkkG-gy?a- zcjJPcZSeOGB>a5!%vKxXkjZt{!*A!X-+slOgrl7(Oc`V@79;F2``Ax)YM1-AZiG&+ zyuP+Neh`{dE3JX>k;ymX-O|`s-mbrZL>}+F_xVDBU92Hq4o|`uz%4#S^~@88)7|@9 z?S>FH21r4fHQ*gCxS8QaO3#I_l83u@!V{~EKejVZztb*vxfrnG;qkBdItcqe(6+ex zwzel{&z>Cy)0~y}^74u$P4@I?oTa55tuuE0#^X98&6i9`^52J}FR{zy4Lx4q@9txQ z5L=vPiFoHi_!9Dd%1}c z$IkLAvN^)@X-N^hI)x~snr+A=+>o~iRQ9LGtL?j~ImJ1AJtU*>LCc0ThX!_|#+2s0 zDeU{ivT2TmM6Xy~>^bz(R~to?iU-|uBchP$=&DmC9_Q=#)7T7OVPfJ82nfK$iDzVH zGW`cYXE6R3dd~l#NbuiyTmT?eJA=!Ge0blW|?&mYwk2dJ_L}*sEF?BxM zD+%VrymQ&B2)tp|@Stgh-^$OO@#CMLRb`x7?7Z9nO@H*(O=CPz3%FT9G3Q;;<=jX} z@Z9HxthxKO%28npzeIOT9H@LF^>s1VpgyLe$;sKL2cEb6Styx2|Lcb)Ls7eTl3BHt zhBrk1v`qJC{+GDck1H8hzTyb+^$J`Yz+zT}jgqgg1qh)~_u zP;Rxhx9!(uwU=()jh@|ArR=<#Aw+lGuT<47mK1dxWFwbvJWGbHe`5zAOd1vTdsY1G zw{$}l#UQBk)aAkG!O9suKgneeeANaIUs>v;q+Z^-%^V`A%zK5$}hU__UOBf@N~ ztb@7e{hyS1s6a^9bF=qXVeH3pS87%?|2&IBP0^;A5N&70(+#WLL+d%lenNQ}l2~rnIyzseT}Wt-xT(NKnbSScnZF;?ww~ zf`aZgD1FZ!Kr*Nh8F3Mos~EX1eI-|W-h!8X(|OG7CbUtsT9F4%|3A0#WzJPeNQKQz zREn_=8LN=+d`58|WS4=kRg06$-9E@R^WS+miAChQKi3>_xreI;HN%+c-8Iol3Yl~F zfUoRJ!%mGUuXv&_I9Mv)700GKYixRs_EXX+qanjnm(0=krBW=8`KBL$;mNY zzwSW&>9!vz13=jSpzUWCdoz`vJoyZ7I=mMwYpSa0) zuAj119Jmg~A7Az>{hn6PR;G6rPha&g+av%#f>n^koU-NX(TH;r^7K6Linz*9nCwL3 zqxb}bFXcyOAqO_1(7OXFV`;g}T|HCw3gjKFx(UyB6Z+StYwImdE8M6%5{Y6}AB7m8*sYSxECg z5@xS4$<(`_O#Z2-empgfJUljxfCV*y_=y(EU>-p~px0#ji=E^Ga- zl-kKRwBlVqwb*teK!S}sV$rs?EPuzA??Sbry00U(zsxCY?_z5Hx;8G))px6#6>Ohz zDIRf-N-RtqR#{ECUuE3-5<0^%I-d{vyas%vx!}<60KCdd7~qL z_)Ju}Lj<_{w}2gv)v`|2xJ`94oYSh}-17Oi7S2y`jR29oH63 ztBe>6v#6@ty)#A7Osv2pBMJF`2oroAdcFLr)?SM}WkDL9S@9<9?k&QE9Ze`M;kCK1 zyfyy!*5dNN(5CtMMCdJ6)z{>|VhNH-53=dZTe^`+nZY>%0DakoECjr~d$=ZVTK}-r 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%0Ar;PD4jG_n#GG_la{SEJ5xBKTc zOZ5L6Zj#Kb2O!dY?i8WE2z7Obi6M2ZUIxzWQ=aP>YMRyPLSD$UxkdvIB>wsE=jgHL zZCm>9jrBJIoK2>%PM?Bh16+BA(`YhUO=uA78$CY4fnUBEW6dTCS z3GBkfguONDm!OE>fg&J&iLPBe-svdl?I+NDAI0BfT)hxy5c@GUw~OME4OBiy-);D zFJ&|+rmN$#nCV$Cbh~LU&o17+bz|*Whd-jIScGzR7OphVNN(9O?KtxTB2%}wI2U_7 zxdvg*&*Zp#3i}aAU!qLRX|+VAnmOgMYxQn@kxzGZ>Amaf8iZUF8;x#A?`aGH%%-ES-crMpwAx~kcw+t zbDh9n&@S~0*opx0`dNvBUZJZUXch~-@4?HwVv5=C&s{vIseEZ9RPr6tu`Z-XWY2e3=(4G=A#qFMj&3b{Tc1h(E>?f}}sxLGh zo}fP<1QNF{-yKavSRTW!A1Snj5_IcibUL^%4(y|XH>z#Y+)%XCc*Wn=eD!3>%p-Yv`sGPXjEXkeTU`}I%TJSv ziVm4o<%b*fc}jPkpED8Pyj~IaWIU5CyMBCT*7EYj0$Dvpwu|O+$BCDgyr?DY`YwyR zb2Z6QHut_!7IjUoTXIrY{2Ltt&^MN+TL6P<2W%1yt(o=&Zkd{Myt&7H9avG z{611rJD6+^Ei~!fN@1r-EB!X8%A%o%9M567Ph~A2!FlhXQqPgOHSeJX^aEo#O`q$N zYm~d^uvN`Z9NRpni)?DeTY<+AF%aoL5a&VLgFG3)ge3?rOCv4|2Wxm>U6&EeM2fk2JZZD>YfZuVn$YhPMKr=V@~Md zxg?xAz9NhfU(|Ta`spA!froHwO4ucw}gCg*4RZ^?a2;DrE~VYi5=$l z%^F|*)5SIrPdlzwm{A7Qz!*E%j`aS3F|PAUB~WaVzZSyu;(HX?&?Z<_CfVg1F;e0M zbQuQ0o3O1dz}s8Uv?qe}wl&)P;ph#>w>GY>3q^l^a(FOHT$Da$5!=bVbF4Z|#F?Xz%d+jamR*aEoHFG&TJB#6x29t}&% zJmCM-$=73ST9-fsLj0s5-6tuoqp8UXvD;HUsw**lMHNQP+_~MLr^SP4_o%)(HuO{1 zvP;NmkMjKIiM0-TtqMu);6Jz)mLv0`qVN%z-l>q|4|%Y9U@mK6|KDez+@LSuXKlI#slt4M8QV@BwyJ+RI!+1D2{PRb}TS@YXbF&>Z zeL3?%d;;cYP_7rV4bOTXT2lvQ;)@m_s0e&fUeKxmzmOjn!IraszSFgD9Zb@#v$+qoxLhu8 zjP!@Q#9O_bioCXtTn6+9SJb_uM^L5#)Y$HbYc1@ewunr|_{_2({3u6y;c{BO{a#HU zO2_X4=y&8_&L|-Cc$du|E+xR@Wx7lsBusu3q((CcF9xv1Z(&cvaU`Zny$a&>Eqikf zy$G=d&n~WxYvb?|b)>^xkzMmQA16cjNQNmxTbf~eIT0Iq&O7Q=LXH{N{7;oB@$(uT zq-`Q%sI5x0a->k3EhK}@y=@BN=K{D-KX^*mYfD{!J#%RYN34K&yxwd>$fj49J1H@6 z^_2U#`YquCr}V0s&f82WMvMXNV$aQcu`TQ9tH#|`BlJaF732c(oD-uJs`d6m6ckwo z6_;vwG_?q7x`JWd0ufOX*&7NGutz12OG8q^as`x9yX>LSky8204dHjXhiI-&Yn8oK zS4^#;OQ>zaf|JF09}`@?w2~xybAR8;zbLb$v$a{AG(W{?rcZ+jg1#+u7!`ck|C^7@ zH1qr#9R~pKKoYc@*+G7cykqu7{{@-pFR_$1kqeGzhbj3%*L;vJxPBjee%}#|Ci>y& znY=F=LQ}dPYLDk{YrP~}HFF9>`sEX#2^ixzpS-{JJ~yyxIPF{_@wUPAj8r20~>+=2oZ09af~w zgumfn03Eb*`zA$H?xkaPWAlm>68Wnktn)+<=glNPw~1rz04^eZf2d&3W}D!@2S=_~ zX^;mldaJka9)?|^7(3lVDjkhP_ob|T?LFA}SAZj#j)g^yg3MWLb>v2Q?JPdTQIy_e zGRKAP=rP{O$!Y4TEu7gbjIrUUnK{8rHq{RqaRx`x)B!=rqKk~+F04!U$#u=dznOd0$*9pImx zXZrE=A4P+XT`m_ChB4_YiU%!J%_ks7gsz%OsWA%-aCziJlJo8>_*K~mRuz5z2l#sQ z(RO8;np{;-dte98D$-U^c_iFc8H)4dg8>jh*L*~MB1py^&|D~` zXj=3(moJnV>j$kRCVY!#)~h{ET9zFVcl1N8m;edMg9-73C_mGPoL0|9v3^`oABvxlrjH@Q)xwY&)j2%hSsVqp@Y$~_PpZb5w zgM1k+eH@(jne^hB%dn7yuf7S|rRU8S)u)pO=YHDSvwSLEp?L192&bU)m=%d;lv~=f zj1nS2Wiu?13Dcl!BY$ujTF(a$DN!Kt>R?t;EvB26)-88OBMAtI;(k_Xlo>8!=jgn= z;`G)$(#EKuFo%j0H}@NM`U2!V*RIep;Puepw5)6?&**`Mr2HlS?ac1`?mx{fX?Lr0 zcUv$k%OVyjWzG*W2^=rO1#m_tBiq#?VxqbS-*3!Zvf>%gl0P!I|3Q{U&wRtrA1$dr zyQ^dihG8G4cbqndAgx_W%!!zMq*Z^Ls<;UTN0WJ>xJ6`dFqH2OZ zW+kC{zfB~KTd|!kSD}2ESpyMC$pP!O!r34yd*wGRV$pq!wd)$D;b;q8Uwy;izYa0` zr7z+Je&8k)tGa`ApgJijsYvQCy*675Sck!~e61VO;s0w8qlXY;jn=IkVMOm@&jxL3 z%UD->Yl8w0LJ7NHl_4(1NEtS#sCeJ=s@tsi$p4G9_Y7-t-L}6iOIgAKmjWsvU*Z`@aC4taXdhflx(Y4p!y3gL{f3EAz z7x`lH(= zBHD+CGyds+_(uu&a@lN4*$r=+{nC?OR${^h)A?go*l>j`NNI=p+AjZsN#9UTjpc{O zPT!Ze-ja=Z=- zEzgZ*Dv^$yfmZn%^6ppZBd`OE_ybYhAfwD)2OFa(e>}PJVb0W43Bez>v*-_-cRF58)SAUQvNqg%UAxJJp)v55GYN9!Q@ieaA zcmHgk+s0OM|9N00_`un_w9FIK^>QD7X|Be-_buHn;uxh@I9*f`Ield@2e*uOmwDYO zj<%s{vEg@}+=odiziWl7yt%WH<2pYC~fzzpgo zdqg|8Kqr~ChJz0;%{IR639okVDeUfaiNE{&(6FAY7aoh40SS0)%1I7&P76`JfE!6& z4@j=lIpY?%!JBk5_32i&si;SKDxtsqdqeZK;CC?%b$9x#3c}2lU1&ZZk^M*|NUSGY z+;MEY_&JP7Ns1Q_m#x?6u>j(HTBN&D?loU+J_8>hRMfbwbT>t83RqhBuuDY`I%TRz zp|cJcxSR%wk~Qwzkq2AQlUfVCT8IHd-JX8jjFOUZNJBccYq1W$z0SgkC;4Jb;AY8m zMeY_V=WD(NAFs@PJ8pa&xuov{<5UsBq&WOdY4QEQR>HyKb?I>X70`C|iZw!9D|Jm3FdlrsSBLCHNstKCH0 z*^WpigAqaHeKkblOK@}EC(jPaTDHz7F9Iapm@KfEV#o8kUvp1i)-n#}+fY^JVn6#o zMpdEc`u*Xf8!kMXyQ&F!2Jq$KOUm_f;IiFb-C$MIe&7T+O0jHx;7yu;!N}1ogFnJUkMD_S$IEpO{0h?Qr=|(^wGe73s(r$1&;p z5sKcn=?17+eb;O6#WLkq4bDJmtw%0ZspnZ&BOpZyW8B&WSu(L@<|G<}zl|V1RST6g z4kJD8FldiR)z=gzm%}>#^_QaDjvFRNpd2L2VS0pDQb8FiVQT4hucI#6Rz;XoI&8s zx-YoE{0N$D@M4ArhhZl&LD8=|XNK>TwP_#PtQ`o~m8)E%I=BG6@0^#g*4tJm&8~lF zZ0KX}{gT{@@!sHC-n1QNX|y&f=^kg-RmxnDwc*?nn$SCR&Q<#N$LAf=y(gD#k~`BR zd;95lFE;4A%umN}B^YV_j6V=b+GdgB8walm9)mJD z2P22L!xIOnn8{)?o5lnA=MjQ38Qq;6t?P~7l-B#d;W<6mDylOLEKX%R);{yE%&1Kl zE8|Nn)u_v{t?9 zlNd_>X61HTO-`s##gt_0cJN4!G!dHjUZ}!B^D}l!S>UlS2*Pb9DLBz53X|+Oe4jqP zGt!|^W3z}0US|~4a~){2SODTSBX=vzHdSkd-C?GF6H?HE&~1pI^-ZN#1-WmF?J|=X z4R6OOT71p9dO7Kh|I!@-_H z*4Fv_KuB>ALlo_bs&;j*Z_ceGJ}P_8z1mzTaQqDdVcv~x+ohrI0pT+D_wU!_*v#I8 zEom=oSXmXg?1jUFUFg17RwEY{bj!{iE$8jcA%xM>CwxiQ?T9n*IM6Q60KM;%USH#x2^ zu)d}Y8GWvJ4zVI;MxIzHgv4EQS=mjB&Zu{u<8U2J7>^!`U^f^Y^j6v0ujo)t@5ZUd z21`XmL`ZJ@r?tpZQ11>6_T`NpzmLjgh8)A@o{xo@3dJHd*<8~4G$R!FvX$NylX;$? z4{{+=4690RtqE_S!M}OP*_IH`ZMtUVxk+i1gTMx@e~uSzw78frf2nZoM>31+^N?0{ zX2^VyL1YFI4ZSN?bK%hxTfa~;%-*w{MFqn3`u^+^M=J)o!ex-pYrJ(Q>NG)AcG4h| z5_M~Yq^h)K)QeH(=6!tEZ$`GCpT~eD!cOc6cYtAQn2%xNGtttLlGrGXJ0J%s-PM>z zPNwd#KIAIkt;vaM8vxzErD(=zq}TMM9k~0sAU#a*-N0U|O&H&Hdt@#>Tr!G%qKo{M z#VT*(fl(o#Y1_O02nnE?S$`qfDIDW4be7)Vu)J<~XV*(6FTFqY2EtIwFHvIVP#<(pF>Qr($$ zLPxl{3x{o53-><^&d7QqzsDe|-Shp=?VAs^CV&>-SxfdDCS4zMx>|o5sTq1(iK}0} zjf=VKDFIZW>9cQ9o*dloN@Q3Ka^Az`xkeWke^@`pmM)WWaf+XdOKFwNXF2W1Fa;ft zf38R|J^J2%%DV*+W~qDOi4FiWIO_-b4H0Lg0jY0gLS4cR-r^o$O~Zlg*^5-yF4GY) zgMn>Tue;u8NXc79PNBGPay2Fid_K{mQtGU`{+-sb$$?~;JfN%VJ`Q@I(ONN2W~dhi zrwMT3I|F$Nt~B%tN3nKtIOpoS%0@Dt%E&&lMi0dgs?<|bvOjVi?=7=+sIIPV#(HV3 z|It_Yv24a(Ev*CY-)(#l6L?EpRGT#@Qi45@uTfy((XhR{2O3yuk^?Mbak9FtLl$=V zewGtl*Rq5AfnY?;rom>(>zsD_kHGWNU4eK9%zZ2b2>7I96`za!=@$aM9+4vFTmY^e z8jzu8(_*b{gC^}v%5)Dyc~*!E;KFo{SpDpE9jj@=3VQW?W{ZtA7oNB54nHo%y2j%! zS7SN2Cp(pHm>6mk;t4CS#?=iGDaoQ&$@%*iTx8sp`OK-I$II5>n;4o=&9fDb*|V61 zSXC1Vn_KAe1ierVqh2a(a4gFSQn78^Vo=-jIkD4#1~Ww)6H~&ktD$J9XFewgaJlu( z6xqxI3lU2(Q)H6s>`ZDsoBzkUwD){^N+oF!Zhw_Z>tf*eDnGm}{Z4fY8+f!xzpcc8 zW=o_PmbB-wfCdwUx(KPRX1bjw8W|GLoqM)~+Txlidu3m34IeE1np~p>1b4gqEU|8w za_O9nr$loW0@_ukRwr^5_60BW-yfYFGvG0&zD%6GB`Se`Jz`jM1}7jVrY0LPixCB^yYGkZ zysHbMWD{Q|dV=$wMQ@%G9?{W;6`S65;Uf2>dxNl(r5VNM*9rDMrcL*BrVC3Xs)ZPQ zre~4TW4cw(f~WL{{6%VN}S7&O*bhkta6e<-hI|Y4?h9?p29T#^xmoa9=R#(rX-EnPU}zN99=j} zGOnD*FVIYq`3`auPo0|TJmNR7C7@dZ1dc%0!>a`__=?{XGNYpQzA-&7!DU4_w>6d4 zfON~AMtH4FU14^f$UAv-S?}xjqI50TDl5~u?l>D~fZ-~Gl);J0BFbhhTT#JNCsvZt zNY03@IsG%S?clW1KyG5!0%#Ex_(8$A12G48fosM|Z5oKT65UVpt=1GR9QM%IxYO<%yv$=?p*ee7H@J!h*mW1@4y{F{Rj*ILtleLx-BjBub``<)He z8sE{Eu4eMt^Q%f^jT1b=-yBW9Tn_?<)M}gEs^4rh;WiOh7g2}{eZmz(je-Ro*uuT8 zWCWEjH2MOhT536+_M%`jo+LGSvfU7Kl+MOW`bMpd$5GZXG&&uhKANNLoLQ^`6dLDHf(ob1#-S?gS+(agMG z;(^^J!~z}Cv_Nf(*f=4i_Dk;Gcl~l}O#mws!MXmeFbi`JT{+Qyl&@YZek|T+;SZqy z!^+_dpDp5}xv)p62ZOzPl1~GEG%gNNbQX-^K606|zr9GjLKkPe=A6rEQHTOM^22!7 zf#2}xaKo*7s}#zHsPmfsV}CTfM$72=8?BYfz1P;KZl52(s2osb1(*C@J0S*-i!hO9+k!?{d-sbR+wc_ zl2ZLes4B^!cyA~V#czulLKs$z_Xnc&Pm#KW{pSPF)G<4DP8q$A{$wKu)p!S;pdvGWs;$?zqD;)a08ZXY-2 zKu*O=wkH6IBA)8pw-u&_VQ1_g5A1MCxM91ZsFq`Y%wC%!ox_z;B&Fs`C`t1X%ClHP z@9S>VO_X(4$OGm{cX05JtYO8D#Rv~aZWcXSZPaQd0G}I@_m!>JbA2!FI+yK|6fM_*M#-7_b9hlsM zX(^s?7Z`r(OA!Z?5#N4$csvszz~MN|DQ#u3u&O*Q3)OxOvzzAWb;!|5w|uiB&tZHV z4#J`gX&xaJ(R9d))i#)^I}WrQU&4C7Fm+;nU-Q>6n!Fay%BSrtz0Nfk%d-x zWTd-PF=sAue54*>8Lcu^zC0Xnuv-Y7I0KQVY%WZ0MU%gsNd+t&o|{<=CjAl~KJuh# z9=XGw&_3KzxK!lPlCJig3nU?UZL{xKXIM_hw9TT2Z<@Hqi@6M1hfhz5PLE=V3;1X3 za|40uD5)GR_aF_ucr045b@(Ehu5jlbkMGfr zV(~}53v7qR(jC&MkqMk(Etn=4)1{_IT;Np5shU{h$W1)_lOkm>&aZivoG zqqW^+$$kCji9>;Qhect!ogmi~<%7TXey4!<*9GGUPbFU-6B-;fnE>$ob~)Skobd-z zkRv_5{<{443`GK6|M$0goKk96Ql{-!;VjE7;iU1P%H0t7S2}bdX`M{j;|v;y<3?^d zETywkEM|Ps9?a77zXNZ?cd5OeCSf6?x+>QhxuSaC{tE0#db{{{I8-uJtqC<@VgeYH za$0;^UmHPyb1lVtr%SXLqOy#N*~oj_Le}l#nR{BE(%$+5eA*ObNYiT6Yfhu7fb~7E zdo3iHjlzlD`mDVSg|$)gWG`&%qKgt|UNs_W)M08p&pkXs!@(3Ye0p{0r*=GjL%YO_ zG5KVU5MqxnBOtoo_jJgXA^Z(R1l&$b)1?VN`o$jEc-dU+dL0>8Ll!Nz*^L%h@J`1s z-1LuzNqDWQU&pSu4%_tlj_IJ+Lwd$iu1DaLA)qwxH>;5jI{=#f;8jSycG_jT`e?@` zU4v1V@&0KMfSmjt1&ha(+T0xz{n}+rQC;sj=GQLW%RMv!0p`Et%PQ?V5@`vkl!L6w zU6JnCkPhL3Ld~)bLE!3n5rS~&!OC-~ogMVo=jp8#x&AsA(REklW4F)?*-@5%SezyAeHMyop@<1BD9c~QKZZ&WibQeJloDfyFkcJ4$#D5F7K z;95zM9l`{FUOY>&L(q>FX2ORDtFVoXGYxzQ^EKj0;b6UwJ5D>u@E86K|i@ zZeZsKURjj!j~$+s)o62KCguRCF~|YtInMwZ!!&Ty?VTx3QM+@{bj`cXIsk=c2RKWhg(6 z(?N5qb=z`STw@;N1)-%Z=WoKu@XYHas`x!j%&n<`+b%Ixmu$qcCY`*x7?2Fjm9GdT zpa0~%v}nlyxZ#=;7)ddIx>DxwgD25?$ADhm9Fb})^szzOuI9`GXc5)oskws_kc}oA z(1C5)v4G_Alkvy*oqOqEvF z_IJm>etl$kBtr@VE;j1P*NS4C)}xP=zIgE>oy+y4skkAmEQ-);DpN-&`P-EGF8;E- zyxGFS0v(V!tzm7Qd-v|$vAMZGyRyp4kdwzdV;=mIGzHqtc!PDI>Vk@Vb&rd+8_Dq_ zx9<;RZ4N>WD0%NW_21hcoxbo7L4W@{D9N|`U#)q0ExI=Kfbh5(MJYTf8axKn(ygKymcn$9pY}(cxjXbD&Q?S+-b4y789XUT_WVzK5fS-#L@tF3kI^^{*j-KCLn- zFUHeEje=vU_ER66(9_bINPg|!Pi~6TfO+}|!fdNXxbIKqH`vftECDoLY{I#>&WVtw zTzdr(zx&+I+^GHFDqy(Id+iOyqkk{)aQ4LWK+5(K@+lz<(%nWlbwz8 z{R&aE`x}l_G%G zyJjp%V*TH|qHC?UOso8S1wB8VLP*Vg{v6+;SM+K@!AZrBO(ZA&4FBSbyhV3dfvq-E z{HCe7VdL=BFFQ4dSKlx5ZGV`!dV%HO*x5?er}0WXM-DAkR#)RkewaN6U=#Tz9djQ- zSM`&G)y3n}hm=KQ3t){m#8fh+#o8?m)odh-LA@LZz)UXAadlH^%Iu?sV{D*5{f+h_B%MNIjH?hezea7l$(cbw_{;t+y~ko9<9>u*-Wrqc?1S?G+mk6N7p%lkrj-kF z-x2ADW|O2~$qjwCMh2bD5skl(eOkxMt9)>1h+a0k@~2qgTrgcz(R9O4_=uW^HMrSI z%|<FJo%3>f0k9`BI{&t8y;lJnWD|2+p%W-g-8}1uepgmHB)~LkIQe3`e#N1O!`@^FYA76_= z4&N|TbAwCo`TSLJ>5u$v|4}-N3y77pivpHJ@(6x&*WkZ8dfJwhaj(W(tArw$%G4F^ zO+pT;q_$rV^P2`B)n{`2u!A10Kk+c8 zi!;zS>RItY-c(x2i%edmse2{t{T}zlI)826&?2L!N{#lD4L3$_@cc#Mo=yr2KPQJH z?22)&@An6=frwXCz1HaB`!zvfLn_l4m%!PD( z9nD8H?|D3tYWqu!CAX!@YJluGX@;l{1|@4rM~Y^!CA$rGPS1kZx;ISV7Y+)#8b)t_ zue6tjTJq6=*6FE53|o?X-w%|Gr~WCO$}QTwY+`GTT8Ohok~)z+UyBPlZjNn3=z2EB zS*!qw5U04zwZBO+H#_`zO_TN!O(X<`|+!&I{cf{qn$8d!1LEuIyLpK z7CowAU?=UdJILpUoZlntPrTX=LN{jMKJkq~tcB0Jq_KpwE(Z3kcEkCNnWE%y6I0t? z{6se6*gh-Bdbe;O#Kfy|Jt5+l7>)sQO~G1k4-FY8>zDaA{#-c} zhuGm*gSAP6bKL9}1u=S;MTW$VAl}Oy{2_xvAqJ+XoRVI?R!{sX!Xnbr($$GLRK`&* zn6DAHh(nKwfevTuVQdUvW1b?Nr6no8ko}Palm#IMg!K?6VR-SZ0>>n&@6x2Y^p0-5 zGXm4mw2Rv9)3p-+>Bgh~8FRO=vDZU?fwm93X>bM^*30P=7=|0FaWF)UnSn32hu!F? zGZ%!m+2>y}P{#TR1e*`8TBxu(Orxh?^1Y;|^0&m~C6C(o(DXQ~@>7qgY`3guOnPpFi1ZZu=fTRNHI3t<>+! zaN`!eS8>`opV8F>yXYfetaF^I!WAK0F;!`j+*|GBv`WqwhK9M72ap2Mf*x1roorvJ_HnYNIo1 z8|iB(FlZF5x35u=HKUJ_pJ0ryJ0KMAmjfZ+G9u2P?n9V2#lttf<*5w|3 zp#Oh?unWj2K^0o0C_1=BM~fwBc&)cOQ$Pw^=h%Gh(~(YY+Mgg3`iHff%OvVncUO<4 zy#2&h^u#}}ck;GE)Nn9F+RcJ8%+c;u2ju`T{vN#LK)sWRvET^dwqJ=lh^#`TCHpw^ zdZzV`j*GEbn}0#Rp0N9~at(%}Q5j3-(kfpoQl2ln{u-=H$ttVJ>A}8C2u*|C{8We~QY%$Y3fNmc0fJWEq?vm6bE(GN#P(8;>tHr3kFJO;*fT>0 z{*4>&qu(s>>J7Yo00Z4~YQ9>#%{n&(a(Wnok1)x@21Ejq#b)Z%XEI%{mc%Pe7)`UeMsX~wHM z#6u(1lP4UkZu5gy9>=GR6BBi`25xmuWF}wR4>8Ke!==qvX8WFu-2Y|6{lx3DmwhCs z-}dZ7L@|EcI?}RZvAaAudKR&wb!$R*<$=eG3GZU;LR#J0^0%Py6sq}VOvilBXBGC| z!-rN;13oI!qM2R1hpk!7h#Hh<8lxj{0JJ~JFk76m3fw_dO4SeFL2huk0W{)gCFsy1 zKG3bfUX6%*qO&S(YV@}?iHDbKf4#U|VJ1W0_>O)zd9tCEEU)u#cCTn9F~V+ca;5}u zX@}*@-vm65r}-nVYRX4aW_syVpv;$YS}DZm%n^{ zwNMww2{GDLFn2m2+K!}pA@mx|Sa&8iiEG3U7&1shZuITtT7whq8pc+`I6$zeTnk7y z@l$ffN!Nx3htcid|4}G@(F z)|k}GFk61EX5g)UeP_O#rY8ad2G|OCdV~D;nF(GlVIBUa9bKw`m8R2wwvUt+`-5l& zqx_MT`CTx?PIl&S^Iqz?NGaU=J(C7VH02pd!l`qqq2}!2!nG?n^IIDS*x#`-oBV|gBZ9@W*1mpC6{E#z>Ic@{wI({i@cd$t&Gn&0&3Ms- zg4Ac6+X7i{YUheCmf%d?FB?Vox7a)9ISN`8c?$Jua|tEr#d0lALVT~7+0Ct@3__^@ zA!w!RPZpt|b+c%ryFe)e zWs$-mGh(#(vQyi@#;gelr|XHu8mq`g**J`US`T9hyps66!yL5a-Y{GjWQX>go0q{3 zdP-kTZxuLzrVU6fA6|jC75879OO%brDmqX*>G4YG@%1;)V)pL!ZF=QyLsuOIL2ZRt z4}q|Vl3gFhWL=IhJguU&kkxD$C6d-!s2hwtkWMcZ2z%yrqe1pS;FR7{rhe+#3>Abi zPjyJv=JHXO?#9rvg!w2I^dqmI?|~ynraz~$!+DLh zhiJ(<=d3G0uRDguS9gU)WL(RI!$Y$44g<7PqgECHhO5bO%%fia@;i1(q^;q8wmYtH zB7XC8qJXDOgz)bRS!*Av3nc74o=684woYIiQ>d%jk4-q#Q8pQW=&#*r4+r?au3}#! z%WMh*{hVJi7G>a)LJrU>v&VX6_iEJ7x#et@ekzvZ;m!|A-fRt7Ki^XOsG`IbO{{vT zm_mrOaF2vi<#qH{4de=5%Y7q}S4h)>CBnB|eD-pswTE9p*ZyRztr8UWEj3FH7T9E0 zvVV15D+86254v$ZIR)WZ8(8OPqUbi@BUtBBDJn-bd=e(E0<0`>Oyj*X6$|}FO{s)n zRMBe_)iZDTAA~d%t4mJ09Z>HDXPW;nqaAojr2jD5;a`AJO}`hl@BapjZf3@Zg!~+# z-BJ?J1hY6zq#ZA>8oEtLT@qqBd}(Jxemqb_U^rM1-Eee$r$dV!18aA4@dF$N)KqQ7 zk^sl(^sdk{vvqY0BL(@(wSD5nH}=N6S);)KKAAe8wOwwpdzQ4?7Hc57$-ABI-91)w z*ULV6O{3sqX<3;@O`;!E4)#EmHLQ>~RI+wmqiAf*0zy=g=zU)|@~*D_@}ABr`!%~_ z(QVLhz9y4o0o&Ydm%;NK&v#`XC z_+`KIZjfU`vSX%2&t_;G0;>bbfK9`cgZ6o7v~eLYo1fJjIhI6i<#Zlquh3@thRin- zpP0NkvUgE%OjJ}_<71#!Qfgc1D%Eggj-|zQI(1QeY%W;DcT00)zoCIc&bRl!1bYt~ zd@d+70Xb^?^5Q5vHj5ID@+8uHgQ)>zA4px@Z68H2v~KUajg~$uwyR~mRYSGmi1Hi@YOzw z9|o;yEDF`BIGq@S0X}p(2&v|WwN_nO|Nkwp9c}qpVAGarJh+3P#0=4zy}z9beW5BO zDyseWbdVI=`cO*@jc^jZ^6jX<(#_D{%LRcJ<|(_u1RNInU)qB^I#2i>1prC)N}0 zz0`M1<$ta@$zq>m^LX{%l9vab2(-pvvlZ56HqDEiO;^|HBUoZo6=9j;V63#4(eli}j_dwWWo2anLFWS79WZ#A z1+(5g$T7pC6u*C2rtpdC<)9J#s~Ol7QZZ=9zR!mV|F}V0*{qu1eSb+l!0G*<3S>C< zmBmsf3h`(n;O2;GUq|Xnv4z%gfM)AUY8C6Zj?I=E%%0nKi7v;>MZbk><_m=zpUW$Mk>Cd zFH3`teMQ8Iy_=@B@pfaP!d(n*Z4`H;W)WH=*rr_V;|04l*LH%iY;`iF)lUO+=j8x| zqeNA&@oTQ=OfKx^+M{&~2}7v}{l1DtNnRgHfDJSO+~~boXf9cj zA-ka-qWc!C?QTBq#i-%v#%H%4Zi^DyM+6SOPd=cvHKkdBPqi)~oYn$hes5A7EGK(`eRHCcgi64Jpi`sJwLD57_tVb=3+(@uaE)5^2XKpN3?e_{-GxEJ_a>bxGGkf^r zhanDYyiZ)#&&@m*e{e^v0vr*>lK-o$)SaOQ?m*BDwiELo0MipT`!@YbLD~YOKiV-J z&_KcDSeM@5wv&jPViM-E+00fn%yg&b&dRLo1bfUqni+W56*{Yt9P8K<94VDvWf=^l z!oI!}CQR(3D-v;830EGwtR%$6V-b3Jp*=gYE9vx#3H3{)ON5!WD#H@d*Uw|7`D0Rw zdkhE>wXN@`ApL&!mJK!N%r1R4Lw1ewZtGya^NSg+?}-VVw$hCEHp~EQUltOk%qrWI zxSH@yE2|IV^(b-#4k0Hm+4$!kBWiDL_1R-;W>Ug0cj*;uILy1CqU~JB>TxgH(Mcq{ z{_PFTWgC^#%t9vW4QH{h#Sy(bOw{%OjsyW_gYxK#)ZWH<_ek*&sUHTut@F=bCWAhD zj@*G)9-pI_usd@p+ z*Dp6X(2IwCNJ(lb>Rm*!eeb8Qj?=OI#*ZrKVYrvcy-#65UYR|E-$}aa46`4(M#+8l z4c|e(A3-Y_POs}1zMOWm56qFy{VVi#dcXIu2@qbDqFmidCS&e3+JDwKvCz!UccaoZ zj>SU3?yvTm7$w1Othlkg%82mfHgVm|2nsNMa^&ldUsZpj-mzH#c@iY^Od)K5DKYc%rIpjD_n z*$A}$L|Qlzp)6W)YEqI8CN2FYn5aMX)eR)vw=$et7g3MGU-wMQ+!fe&->Ac-1}tat z&ogD9&$FnaabTr(F-zhdI+!UMh+R#Rw)F;IrKXn>%2n{xA~K(b7_N7e~EM|yAm16F2{ne1<=?M^ULFg*nLHM?Pk+ui7Vk)4J&Q7+TxJ^)R? z5w%bAJV}y3KQj$F;R||G`Fwm;v*xk5;b=QmYHn_P>r17dmN?aMC*KPM@@WxNT@`_A zo-dyq1Fq95H3k->FUcidl(g-BrN2%tyL|%ry!`Hwoij|_rl#Y>w(Lhr(Opi%C&uje zVa)Nk`_A2Cip4iBZT>b7pRzhYo(K`zc(#4Idag7^A*TGQ_@Q*&XliX;NF{XbvqBj%nmTV~_&{Tm>9*a? z=uzm(9Kq}k6ilIH!^TtFRivbn+Ch0-Eac!!6PjZ5(&}>=nfI#OrF}Ovh&7yuM=43n z{Cj`=vatF3w-@&r(GQJ&SEOA`Ewz7?=dBWY$ar+>mR0c;;&Ffz=v5A`v01`cPE-`~ zl>t0mOT{!NvMnALAiI^}AQ?mC8}mD;TJ@E|U*7kKPDxAu5TLK@WxC6JBuh8bWMnF! z$eKHml+-l!rT*>@5ehq4mFqd#F+G^arSfy>{*p=1D~xOO1AwGV1L(A4#Pz*BmwvvP z*!sGz_aU!;2)Sr;GFk_Y@mm$$u~jX?TLFPu=1x@5Xk!$)%GHIA+X9-G^8DP8+OnG; z)R;b0?==#YW1zn&NPE@iR*shf-d)JXYYF;eveg?%h)B<%a)H;3x``jSVsB#nk(S>i z*L;1d0c`gVy@9jR?D!?Cs1e(6=--Ou_iw#)WRKCP``hF|bNjGfG>0S|av&f)@;bm) z^@P#FyRpfp$RCI7$PLUIN}@87P`TslTeesx>H4Ip!b%H={9%M+T7(9q#5-pE#!sj5 z-Eqv=9Bv61v}V%mFF2o|(J$FAgp7)EXFJ44N^vBJ7}zS%pXoDsGqb)!ih`LUG45}%W`>lGO9it(*l-^-=^0moxjs_&)X^33Kf>gb& zeuG4V2g%1HUioHYN{ z%=BOWZ}(q9X4u173ox&ydG@-Tl+*g47#UyWx%X5a3wX53GQTytzjgZ;m%x)-Hs1xt z5B?KVB#PZ<+2$uGoJH z;-7BHU9Fw4_brw}8(>QX!BTGbC~9D;!vpixU}P-KK_cnro8ZU;$shI;{q|g>A+_K7+Zxtb*)q&^H%1NESzc8-+=y7YhZyPt~=$%9Z>K-R+z; z!5alQC*OZ;zm4i#y>QLcsG1#9kP$C6D;&>v^oZ};!HyO*W(et&n$d$9+0Rd`*CHp+ zw{SA##gRZa4_EUK{s3Mad4PTKWi@QkX-+DjdU7xA$TIc;B3u~hisX0v_Q`tSA#XKD ztFYzs;LbP2-pz#3Kcl30d6h~l(R%=m=k*rI)kgSldO|ApOGT~d{*c_pG-@nxE{=M-PjMbo~|Vx4s4C8uR@iZtJpgyaEj(Rp`m;In_tl1-4pp;4B; z=Xn$>`iL8sAHxeyx)M(++z)YF)mn8L!mVK5+^bj~k}CxQA<(O&^fF>TsI^|E>%$ULfZLtOnfmbp z&V`NAPsx(i3E-xq=7zo>Ns!pUqBR9e_FF-v{|!q;hb-{}@Sa@z5UZCgZhz>K;CbT{ z6MU830J7vmBnt_RyzT;Yno+abR$A%$R3)ReCf;JWlzO3{D$LL7nXu?GHP~)dH!q2I zCYcPyY~>z>|7l&M;hC{A!d9SlkU=NWy_0OAP&h9cITztfxzzSy8&I*D zKRc}(wlwSrgv=U^2`Eo^Ce!`!;64_Y>KSYeD9+sAKM!b&Pb)Lhi&EF45oZ@!JHbAr z-tr)e85*kYmD114*CnjNugWZ7J4L0x1;0JX+2tH{G8!Tj-=*cVLI%Y<-hmJ|Qohgb zh`C=ah<0e^D@LH21H>9O&!$8>eyy9IKpfgFT6_r*K2(aXuU9fC6X%n-pVWNW(_VRk z&687B*dr9Ct+x5xt{!bSzWv!!`nJ^-(B_gF4%0h^=!+#~L#r>=K0%_wBY*QUdsC-% zzzBx3y!h>N0X!|;1rMs))8gA6V0tcIT#C_5^6YS3CyU?IWMFwA@Yc!&&k|nN&bTSv zoUs1kaY$<2bGBsf+n1kmgGSo>y$Mb>yeDuvQheq@WzotfQ9ePlG?C0%$UsH@Jz0Zc z3W;S&&j#FjF}`eY#>ens-%;-0nGBm~SR1H+`m;K%6{(D?1}jqS7ZTQK!;InbNeT}# zmPOl}*krAAD|~tbj5OafBaR<&)#-2n+{(g*PusO~bl!0}S(ob`vGE|l*6DGw;?9&E zYU=pCTc0L(7DM(XmzBIM$pI^yo0XMz$Jb_RGacr|3Q9v04tHi>7#0~X+?m$Ld1yU| z3mS2pwq7~a+H0wjXs*_3cKsmRN(C{*p&Wb=8eQpUgz#M8`9&rjV>PG=?W)i2$lb>_ zx&>O#hSlxm4z?yz-di=#h`YS5h~~EEA}LY6xB^1gqNzKNK#?V8*V^?NDoMRS@3Ld^ z!gxTrsY?uvSf;@n2IyhnRS?Sz#|e%bsYlbr%>W1GnrA`S^J(m?V@MUKza!{wA#3f(Jr0* zBt=wKt&&l~I8TLqm8{Ag#i+HsNnw$|V&t3#H21R0j$mzqvo(SmsxsTgnTd%S?V zWDlJQKU_RJpZc|+wEwQA>;zl{)_kT$?i)X0=u+#a1m&4&2~dpn3$%y_^KGAqu3Ri; zO@Cf^R|5X=R#stsi#1(N*|6pfy@_@IY<(SvuaC4`Gis>iI9w~k)gg!rku`-Q5 zbZ^ED0Ss365V)Ew7nvQHkbK1J<*I5uxvE6mQEK_R0%XOXZe?s~^`GBHGG;E}a%So? zIO>R;6y5Up_;|geHwu9 z!P@e;g<;sb??>9se2leKuj|B{CYRdV{~v4b9oN*lwTnhw$`S>)3L@R5A{|5sNXG&Q zNGBi(MWqJia>9vle zOL(ELx#}FM@W5hyOHFfSWGhDi-c6t=OS7+)CA;H#cHRAJhVjPtOClH?eD|tCEo@$< zqwymB&!g}3i92o$wq=&`&>|=mjuTE(pVG7AhDPLJTZ2U}`>()Rsw@*M=oem*Wb^9x zYHUv_!>T+vG6EPW{b!qkv|-5B3&2Ppl=7l=r~K}LK#bAylLpiDm+2VDJH|8fpVk;W zzQ3&#gA|opZ~Gf1)wM5Utoahe^J^l?avU9qeItRL$etS}&R(cueLKUP=YHwD1#XV~ z3t{GV;kSNum@Wm5#)7C#@5f_3mwCZlioKMceU1L4QMSi;8_fYP&~CH!xJ;LmY`lkC zU#coM)i_ETUs~&Gc-%{Hy8nfm|4EILbn^%!Y?A(Pto~fe+}Mawp_pzyZRmncAG?7k zTq`Gkxvsfj{SLt!f48O%(Z8h@ZKqOTe0+PZUW9!<$8tkxbwl}B-lCD5a)CdZ@_r|@|$VV zaQS`y(X=kt4_q<2>Ewe{Nyok{GGLt5t~=TzuMl7L6BMPK8i7 zBuY}AA8mr)dG7C`x;|$qwUTIpD^|})TPQhPZCFUX8mw>PW0bUb|Y(oPRaZjY#-xITY__Pd|jb`_8tX3WVE0E+5Q z)~WKb%T(&RC9HO`=NPJqX*B%Vh-|;FrnrYf?zUkAQYzsPDHZhHWdxW&Yl^FD zE^{_UJ%*$OAVbCwx361`UIruIA?#*#EWl1kFBe^0vXmuhED`;!F?6tLZT=l|-Q*1~ z`~`l_V{96fZ-eer-^O8R_u;OsP_D^ty8^lWwbB#PA}+%YRXOTsL~Az#hmT$ijb58A)!W>6 zAxv*nwzm;SF$^P~j)5h-Zws$QT(DVo}`%WspqJiQu3Nn zamqxPnAQ==M8^6G`pYOjNIutNO}d`0HI}=5etO}-@Ul;Nx&KfutN!uvBl86|NecYX z4P}mBOQwP*&lpxCg})4cK1-T^LO4n!k<-`%gpx%kohYRrGJPuhS2$=yH>Lvn)6K_Q zYlZ^q5_v={t!AG;*-jqP67FGjl25d*A|y+1r}q}?BxvllqiT`VwcLb(3!jB(s`*xSM4_Zj)P58cfiy&vA&%whXJ zA!2qrNj*~uJo%Sa;PfKjVrhm4CU8ogi9+8-*Kd3E*L_>$Wu1cH+X+3N8)C>KKAl?i z#FWk7*2c%`eE;eJ!I=E|_3y~pu1^JwA;5V~Tb0gk(QXvukZ&`=`@iqxb36!cgjUn} zx%U@}I~JJZ3Jgr@&1)9Acg$~iAv>O26Em}Hx5%vvd@wzxe;dLgdlug`a!aHZEka=&aa>-eM&hoD*#6E3qcuRmhTRH&RPeI2BFi!J4|>=C$#s z3kwU~+}v&mfsR9F-kplD7<(1D;y?|89s8Ga<^ScVUt$Tu-(&9o5Iic?iF|vlUikqx zDlWc*r+cWd6F!jNI=@ab)?O!_n;;p2Y>IluLNjyOLz`pS40Q`d z2CJu9zb%{#>iGSNi@!!q{~2PfZrRirtp?F=E}Q3I zxy3m@ya`j>)sD3pZQ8jCibw`@9D0?kO(5!0F!1T-KQ5|1`n<{h&m%(bJs?)mduuKP z+T)$rUHU{e>D{>N_-IC%>X6=qPwyit&*m2r@IA$|ih~WE-ZnavH-r^q;=ap#Rhp8| zWc@eIPz%(n^Seg*cTI6=7p`C>X!Iv~G5!1n6OksgrYvi#c6v)MZm)(P`3)Uk^q@T_ zD~`j_Y4I2@vr|e+3;H~C;sT0n8{GJZJ+I_9{WcQzvXDwCk(9{T?w2V&hI&NXX`e{dVO{KKJ-V` z7Q_jgSX9+*z4rh2G1H%(hULx*o^eQCVvt5?ufZa;>saYR8-#&F1vv#)1`_!~s z$bT4d{N}t8K}GZdC+bhhIZfRPyfya_!8o1SIj4-dsT}rh!hh|QSq853jhq#%BA1W1 zXCIdif0A8R9hY#JrU42X4ig+r@;n}N+i7L2?yn}(gE<{HN{ zoA*(S9C0)uIw?trpPxVbsGc5@r>bjq%6xV!P3=r2_`Cn#`!>t95N2+J?X{^0Mi68C z%a^}3HZ`?1Hu7O*<>bna0Z`>fh(@Tvy?gh@phnTIhq&uOyMLkg;zi1toAnR!m|&jv z&5^?8rKIq%Utcz8@-L-}Np^5lT0nWECNCX|Q6%e=pyk~`2}<22^4~n>U91j0ZO}sG z52*Yjxw0lPxK>#UCF4w~ew98Or-aN=T$ggar;BqMyFHr5jTs!@%Xw*pb^RL*{W)^b z!n2=9d)mk!Y*8V7{w+I6IG=2346Hy`jj9({zCs&x)Gf5aUVuvi#a!0N%#EdBV7ULf z-md&CA-a3YtMch==JFlteldBd(mVA+zzwt1%jYx7zx&2C~ zO;W-V=u!K(iPBC+e-fD@TL0_jfKO|Gq5CLn9qlgNaS~NPJtR!!Kwkv(d|o z*E(dJ$@F1BUE!&MYT7h@(N=OJ@&1h}W8)W*&lqLj+TO23HXipT_W30-bI^`!B#}R@ zi6qGO+cureuGjxO<+5h1m!f|Zr1xOaGN&6;m)BpC=g)0rcBrb`CBlfsk=e;7OsI*% zv`jC@u3FyMw{J6E@=iPGkyoTXVk3iJ@pGQX1cSdgMh8~vPv5E}XyiFoc4d3RAmbl2 zV20t(PEYgVXuibN=$RtaY6EM;v)v1T&*10_WO-Nw{@Plm(ZJU7uPecg^LR#-z45p+ zbi}$OVEd1IFOn$HKe`sd!Q_k#UMlhV1v(yPNvfWYi1ueqNh^71ncaSD{EJ7fCGi!l zj@;%@=eaCBf4Y0Pynb1a3E}z1T`YCda2%*C{1I2xplZ_=+X{29YN$MX6NLLBXy zrtu1V--%?Tf7G?%4*ztYS!j4p@u!!m{6HKl;j`d*&BzI2bUXWi=RqLQJ>=kj`I+{>-{o=Y%O`Ems%%ZU+ z_pt_#FDmbk%2SLNGHwnRKM9PvZz_IzGoe-fo~r``%eeu4+Gq-*zs7h&{|nvPDjISU z?9_8#*(J;%THl}qEtMr!u@I}6;N#Q!#5mLUQGz!LHeYoXj_N;q z6e7kLkQ}87Z@R<_@x&GPZzyPk?H}EruC2V}LVOC2cpYn7UeQ^q7~(qCQEc_@*1Y*R zeOYA2T$srJq^?XUE{=wM?$e);jHM}+6pc#gJqjtqw9vcP9;u?4Is4y{Ryu7nP^BF!Q1*h$M^PoDp5w%sF!E3eEBJZ@B9n z)^^7C^^yYc%?kHkgvs<=wz6nC zQpzKv{nip#Vc`y6h~sQSU3vW{BZRJ;o%e=6y~Qp)%~9IOG~U|F{vBOr8N&-FpyPJV zvv^i{F@ioKttijD_vaPtqvM_AFUOT+t8*HcrMo%j>C}t$q-(L@6Ms9j;l2fyC&=f| z5eUcj(^C;XS#fIOrY_+_$TX>b{CR3kCZ`i^M7suo!)c!$w&x@!-{p=-fE(4_etOSDzDgk+eYEQej01g1Oo<5i}etM>vn*(#2sxkJY>O1!#y zQOf73x*A?_f&qzJv`2*#(Ta4rjKmQwQ>9O(wMob83wR10amWgZ=A!xvsO&4p-V520 z!)yZ8E32`mwww z11Mf%8bVrFPzaKGC5z=o85(ZdKcQ!~xyha#q}EOMTp}-5`#s3#?CfJ+u&aWNC)2P; zX^*3f&?G+rEQO$`@+hhkujtFSAYZ2B`>{W1@9BGsy@7i$&dd2CCWr;!vJxU`X>ElC z6tpnaIhAw+QPFY1U*%xWqlzMup1bMWC!qrk=v)n=v5mXaCFpEBzs`J6ke@p+^_BT~ zOuSaAeQF;8{fyN&5CL|~-e$07W}|_Qi?F@bc{Fqn&Wm`OP0&eKbmXjY<>}wy-6~v+ zbHg(P8hgOqy=7V?N?#`MIK)aCrG`}p%p1t7mk(tYgbL~NW1Zqf6tnWU&$E^`?mHWJ zI(IKmGfg_6=7}}rM~E=ZGKfa8V;9$x zdph=Fs!;Aj%5zZc&h6Wk_fPTfGyi5L*vzzt6wR+xeG_hK9-HakS?Lb~ouZ&sA9{6`2ldk4|&&uW9v&4<&D5n-tz#DaIR@ug}CY zgd0-$;_4T^y#*pLnUohVLZML(4s_*V70*DPod!=2!DT1;Lq0@{vJ4++@6P>NP1c$Q zJQ0f5o&v9WyAkq;tu`J|au)QZ^zdK|wIJ(GzgEwhAUazjGs{ zEXw9Ouik9*QoN47qEUXZ{~|P1*YNX(Y7%uGn^Z--So2&`-p>9dfv^ieL0J;<mlQd79F3(N26IH*sH5^q_WN zdyCI!V$fm8L#Y2(CJG2t(yDz@MST3c_(8md8lNJ$HqCh7LvQXNXL#PikZsU2czM$1 z3=?v5!>C4MoxGSjC}dIm9wCC^nd{OLbGLJJEt7ci&RR50(L`*&j!aL&U-W#do}M|s zMQr96_)v>rn26?4EdM@s;BYX)Q=O!pgMs?;LFZR;DL!J)L5RW zT%zm`5HY_4mJM}>F)zu#TGG9`l*OCuH3acbw~J<4@yZ=_nG$1GV~4W z`%hZw1pi4sF9p99npA&NgV%IghkF!K@-7DK6A)ek2glJ+7{eEM3w2H(fxNe}W?l6_5!ii>A1<5pvSM^w&^*gXF-eet*=SPj+*r8C@-@>MlQ zu8iNa!J-vS`6D?;{nlU0QQf*n2E#FOx*Pml;OonhsbGuh$T zh}QMC5=g!S1-R@*R9}mzevdfhv4zW#kV#3u0_YxV(OdHk!l%#I5U6+&Z3rrJA8s(F zPuX(Q@AsMCgDXP@sd2_Lc$|l{LulH1VnFerrGIUS#BYaULbK1nj2`D=1wUMtnXfLy zEW2=J=*lb`K7O2aZo&(0p<*>UE_^%6U()255J&HNyGGo|3VCL4B}NxBLmhGNbQsCc zWHhfc4AGt0TyEl{+9z*7OFasC;5}UiHjvv)$x^-1d|G|=q-@y^(-&V{;Kt*k9A6~w z|FN@gkkl^c|MW%EjH{3(YM?RfVI4*@KER{!8w0^$D zteOkaYFPZ_hTUeY(VCgen0Dzf7#BS@DJgPyXI~Q=I2OFRhG5B&=N!X04zF_prz+`I z?!sml%>6P;l@*qPHY-FXd)YTP<L}vbRM?*@UGb7*@WD&!m#SXZ)NrSv-+D{UT)4A*DT%)@gTQ< zqb8cKOYP(j&5!4&{R?A(FsgRM{*;NO_V9W1tJH(8e18s<-}ai&K}LGs{*Wd%Ytudn zgOXU~cproOwo*ebJ4p5^$&ccx!c<0Q^~1mZrc4&pH%8|-PD)(#^PZ}O&HhnU_^3{( zspU9?qrwPD9K0|#75=W+Y)an0rrvk$;>j}9~adi zuKoVoe4$C!LNF~|f4BSf*ehUEP4eZ8%hsg{mqy=Pmn44ip3L2_;yf9 z&40=x3lJPU(@W^zXMB9Tx9#TNEp>A7Idu1OOF5W0&yhrsgIWzgC|LwoLYR$Y8;*|XAsLHJ$;q}14gR06(YiV_L^`l+e6ECN?MsuT*o8j(& zuq|G-?J~_{`=0ivPm4@lN$$kIY8lNR)~vRLb|(J;=_vIXlMz zS(%wmOE+By(DA$DUJ0CawaGj5i2WBLAE#D-0lI+a0^k{z2ft-tu$2xZ$mU)T$L7=l zwcLx3wE}SrL78hvrVYC53e7G@v9c}-n+!XFWX>J2&v;TJcx09-o7Q!Tn9Cf4vvQKO zx*jH++L^7zkkQMs*T~5zxc>YoFR^T5jRfGdyZWzmpPJ~?29I!5a+g|(F`lpQ{HHe@ z^!X(>a0}K6j4B7sH=_butp%S=^e#e!v%v(i7(sU91}J>hc6gy=Z4`jlnq zw&;>vQNvCSh$p|O`;=!z8wXNaRj6fi`@MH~W1m-tUu(Nv<_YhHh zt}};NUFzxMQ^vexiPB||F)$sD1Ue;W=oJhb)O(pmDhFoiW6!iW@!}--MS2fx51i&k z`NrdsOE3C0sMQd;_%aK_G+F{7Fn(iIdalJF0#BC25pVQ&*A)rv(^1SR6_&}6$9^gM zm>xwTyS})U^{&=|V{(uB*iuY(F$_kf28~(_C8-OAcH>Dy$`kIY(a-)yEPt5tBl556 zH5jhiN!|fdXVp%Jm5@<#77^=XHFC3V)rk!^d((J9mo*MHqq6O5KCXNO;_~pr^B3+8 zol{>C0d^YQyC$T}eqDN^h4& z40&TXWIQBKxXqZY2-bD2#!l-p^>>>c?f*5(`3SV#{(X+(BB6P$?pblR;fI{- z?N71JkElm7^oDA@Fh5DMDv!>eJ)6nQEq9SjS_4XED)Uvvz9VusbrC)|<`I;}Y+0&G zmzNdVOcF*yy!-EOhd^489e_{jFX0=vvF~a;vm%fw#N^|k=OP~08Xbt2$4to2Ec6~9 z_P9Rf!Yb%l!DBycsk`mdGWh;cg_h)=SDUa^{#JwW$W(Y zaTUar@f~1jvpCC0g7!8GC*)`q`jgYlY;mnocRl_9%1jAx{T`lm{p&Bk2JAQjEn=)e z`%$hx3fq`0#Y)%iy-%ue%J*Cn>s1bz-Was@npQ0dUh{L%y{13;j+CV^~*>j6=y#VRtR`9@77uX38NJgwqi zfbV}|@)*2dMze)kmX%ySZKArsyvDPt;tc*G+pl*8`X^kyR%GVCy}b>zZV;v*Kn^l7i$X@xL0vneD-u4&DyPU=b-u~}rOzbyW7`@?5!u(28$wz6`c{8zoc&ZBCt{Na-zz zP7LO7>)lhK$i9$j@NqSszQagNv5LmR{E??mcRvgNXjDl+)b5=Ybh`_Nja#o(6yJPd z+I-p0{;jT!Rm4W8=|wB)4wz|rC+wE1gWNyP6-469mo{C|=&@VFu_^039nNr$%CQ>( z&zAN~E%es#T+H@ipn!j~om{R@tL!Z57vH$4Yr!|~;dNBG;LemLbcKg*2|kwYYLR6@ghk(?`hF>^?aEuQ?{i%QEB=O_3z-@=JN{wH9{umx%-d(8o6*4}kY7KI|Oa zFkisuTW_p_)f8I(lJPBWS89?#X61%Jt+E33-dc*rxy5p6Ddq&R`3lfJKH_8V=Sifc zsEx?pBIa!u#v`NexQ?#KXcMoE6n^x&9g*P?y|KTQEJq7$Q&OjN+UEsfHXZtXNt4#e z?(EZ7RdYR!?;5>U!{acGnOl4FlGjusvIu}0bb}JyV9?Arw2ll)f(VH*5PgKUnYsf} z>cU0Ti>e3zxJrQLPTFr<7KR+90$3sU&6HKCV8;FU&DE+C-Zr&Swj6aH&wO^z6?olt zf0=s(RB8SoK)bv#U9>qXUw0uKp;t7uoiUXjDC9Tl{BMAu)^8c;8b!;(QG4WGbpaln zkfQn~IyV<@-dE_fk;=mzdI9WXtN~@MR#QB&VW4Vt^-iNL!pLz9jwpjn8OvTSNiOgq@OvPYj%`yI+rd)a($t_nxvFm8N5IizxAJ+P-V_6~g+ zn^v^fo8XfbAPfF|B!|VSZ7K)Yz*HK1CndgXrFv%&n#6}nj=dQ#!2CEx&BUju557p% zZCdC;_LLXKC-rp9`R_wEYtF#;+IZt;pG5I+12;J&H=O@B@$}~%w#ZZfE`9H7fjTlx zpIo4)*4yt?!HuT1)AXCdVGuC+sb1*5Y)1j6J@YA_H;z5$<8e;fPM(Q1&p}CjeNTLw zx@{q9=4#yUp_CO)Wrzx!cvXU+7{dfLBKoP6h0b!EQ3sGQt2Dn^qnu@ohR$WSMQ$8P zIKd&|h?8C($mHfsnBUt+PCh0 zG&*I-(;3}jy3S%F9em?z$Xwj5QyyK$?~$_~{~#)3-M<%OLSl;zO$LtAAGSE53x>`2 zIO9k>J~~R76KXP+sw|Qgz*+&e2am;qeqRsGp zTGpyD((iNR%YEHLdg;g9 zC*`rrOIR{6gIPWZK@FG9^XieB1qE|r)1FNcLcmBFU{tdnNfi7DV@Bnxc5XB zp!0`TRrLO;yd&_~JE&|jo%}7%bl!d5A1q>P>eZbIwPJVw?yoC+l#5EZK-oz)!cz?C zlkYLM>Kz7N75A0~6FOIy@rF37XHk@${w{M0jxvw3+0@ae7CjoI01nF4nQx7VX3M~x zQO`pT+uOkVa~ISO;<3~D$LNbY0(_|o*=~HPh|F0EZbh==o7$UGYsR=e7a_%g{)aG z_MW_*o#2%@;me`;h4S$i8WfkD$Gs_Hf{YMI;K8|b=U6y7h1u8=+NWn{pDrwe5H?Km z;v5vnID?Xd{J8+YbCMxZ1n2t-W9sU#9ZLA+)KgaM=!huMT>$6$5#FsInxd1*Fu5PT z=@a4>fdKUX(f5^ir6_rB{Q0W1-Q6}$z(n1gKOpn01@ngYq5oU^*_iA&rgNX_fePIqqmugF-Q7tO zLdqco2FSqtY=ivPgj^$V{kq;W^CHe;!35p8tTZ}-hA^9T;@-22gEsaV5i_e8tx zC*0$*>MQk9BW}8Zik#o`@nE>3<|rsPA9*rYys0tB=9@R9GvZVz~KD(VN~L_efl*n6d>8)>jTmJKG~*v!^w z==;)noC7@Nn|giP`ktBMt?Uaq1#@9B)OR+^eck3$9I~d_GtIL_-`Z!a%I)cD5S}ed zu&dzX(}$Mn0nbk%X)WD7xBjGjQFi`9%g!I_#E;@h+dUyezRO}bKj-qaf&iU2nO4+p zX{>*Mh3dZ}#qY}C>pk|0OE8no*e9`ywq`~hn+nDG7E5T&;riZ<82qiUU(sV+dvxec z<9D6kGvPFog4>>hFGi#tU^r`sA}ABhBxY@6=K>O)KZe;bjMKJsKxP5N)LcQI4m*0O zZ6J`Dm2UcVz6I_649qWK0><*qDOP(7Mh!l@q6VDIrjcY{$JrQeaIvntma8VJe+8dL zs`1&AqC4=CJ#bC2;`y&b&EW1f&5woh2(-;{HEzNkSjSV8%?qw)lb4s*oEM8y<;52l zQ!e1lYgQ1M>Z9%>BUR6mp7Ozc`=-u!*?E$B7t`UWz;vI>`+oC=P>`WXkD(7!Kme?}~8Lu;= z-dkRL?8w`n&&HK_rfYK2j;l^u(3H4k{jN%i_`j2s2fKLI)`o1v^GNz~>pH;w9WHo#S`ZH-K66nP~yc#U)r54CFkfR!-2LG1EK;4y$ zvJHO!mr&`w8|i9-Tb$$V=tWe#&b9Op_eE`u2II=xA>VlAZ2JaN^(SX6XP+k9k!5F= zyMMg_6(xyW*hPPkKLUc2b~vN902Shu$CmCS%|j` zq-_-D)`W80x$x$zivzV=hp}Vn+MBOFj#PalBags>>B7t_$VHTXz4OMpsj0H?A$bjZ zy4Zh1T|)=dHEaK-u5lTjJ_TY-In1Uz2M|)X{*sfN4~lO;xgaI@T@gJHb2&sPg4S1{ zKX2KrstGN&tFA>YHQqSd-E{omGwZP~_KtkPsm|=s!73eLJD=+j1(Ndrfy=YNM9{EOrSh>2BrZpOM4_S>N;P2BH7x2FAl z0l|lvi9c7>9eK)>?v|`>=*^-(M>ppljpx&vV58P_p?l*zW$8ly#2y!IJOlZJtNdg~ z5wU#cTClt{aM7X;bh>THISxGU6l(N#W&Icg=vd-kx)3h$`>%6hQv9dt`jy_6jk&MLzw^Q4NKJi|3L~@mKV)*6?Z6o`|Rn$(WeiQK1z=L{PE-DDt9?M z4{^`ifjr__H*&QGwf=|I1V5|eS4O8Nz(*=wIVz|#i?lds)9!-JN`lX$MLWjv0F}U$ z*4MYwO@`7L%Eg{Ok55}E5IZBwF>#2Je>}f4pSy49Oulf|ZQX5hTUkEV>JDwuLUUaE z3?=WS6p=gEy|qRv@UtJc2pXH!~K3}_h`8Kzl$MvEG>jry8>SwpY2J5AZ!;825 z`PkRj?fdTs`U9)b&9F4=hh#0eV=iiR++k`6JrqdQO})20>{j+VG_ELTC<5gbkv~H>0p}f$AqA4qaL=e0&S<$M0fCy@4~=GF@yS??wF1h5raQKFyeC zzmoVr3^>+C9P1JcBlj<9yecSZTB^Sfl9M&tXR2{7Ib(>ttk+ zEhNt;II756DTG~-9GXo-9z(((or$~N6a+i+GmY@aky&Mc7wUVCuR`tzb$ISa5YWaU zUH@F(%%}-SOnuA+W)UO9(QJYHzicY!f2`E9e~QDFa*CPt?@ctpQ{bm3g-pL%f5)m)%U;oO>Sq*7SfP9Vp%O{tv!VyK5k6bE9~D0Y{FY15Kwt!L-i;{_ z-4g+!)yu<th|zy^2wHU|n8qS>S(7TrL7oFUcJLlIx=i;1#}QqKR0r_tTq zrCY7tAWLJnhT@%4+GF!xGD%YXnokrh!c*;{9hb(ESbtz*iAWK*;1kYBEpOo>C|pmeZ5r*%%=$^?@R{ag<=#w7x*Kf& z&Q2FemC|V~es3C3)QdpFBTgEQw0fi}atIM#TA@y z5;33Ie{h+g%x1q;{<~E?3)`Y_XQpr8euJXsy^3~?H$BY}R#Ki@Aw%!r=`rPgrN-qQ zHb5&Ys9Z&KFx63vVOS-le*bX{xWhevd0A$DlPcIH#?R31sK0A#fT+D1WS zIj5(S2U0M8D`IxHM67uCvA$M)pTq$G{A|BH z9`?-SR`2a!&pgmtqxLD4sP{FRS9o1A^>xd8X89H(^lLg|riVPA2grE5K&RC>RG{(r zH;*_GR{dhC!nZFJA}g4S1Y{ru&Zq5Mt&J_~Ol_;jHjy7lw8cSv_U)O;@0s&bHC3PS z+J?Ls09m{w8}E|$NVme|8^v7CzFi9{Z4y|=f%X?}w&`#e7}i82YsIz2m+ESo7E6e8 zQ6wevTQSChve00z&~b5sLvq}QfLI>4G9AsHwMOA^nr*^4IbC;Qnn8Xzsc@p6Z1S$B zbW$$qVwJ%J{b}ncN!zBFH;t<#Gu0O5Js_=(4L2zhHzNfrqBq{aaKct!+1?loJdc?t zSCuMSFMZ8!RydD)xP4*RlyhNbc_YR$IeZD2H%`lzK4718A?3m=Gnhj1*6o#MM0kI9B^-m?)#b~DK1g<9xb@#mQvg$uK$pcU|C zAq3&sjyreLkmmcZtHn!36tw65%@w&> zf@yW>?St*ioea`>LbUmuQ`<8bmO=Yy;{e46ILVTV(q;Qm7=a*dd4x@T#0_60WGAAKUvORY=Ac$8 zr=8i1;CKl+?jqh;zv(s2-D_uCQ1YNSl;gU87Br5uZ#u2LP+m-b^%3t)G9aO)?yl7K z-5bo~8O$Kd4>|TR_p&ntlnGu`>9_`0BAdLn20osKopRX(U z=W>$88i&R2I?VMMe*81DXyP$%$1?M%^24m7^QP5-V%=FdyTyk8vODl;jRa5$T*9}t z9cK1hN64~E=^p4oZpW0kw%89YtvgYLub1rcTv~Fn^Bq~tJ}7n0;Q^ec>Deq*fWG72 zp->tJ)DSpEFmA4TR`ZHGQC1IB&36HY3NNmJ%4%injJ8wNzVS)dTC~%gT)RDvCm@jN^4Nu1OU;@5`JoIKb{KI9K01 zsD=LVN1WKpLe_j2La0&H%$_)-9qdAhYuJ8I=(A0;a%V%_*-)qPyG-sDR<9Xh88LNo z!jcD0`s4XABLNnB5(ee{9m&puP1dxmd{)r>ALJQtErur|t`nMfwA;>vt2h4SKU=(^`9mI-eMZslx}v zYeP3rgFdo0E_O${$4@lW!{a9U3l`f7<5n8tCuElftPUCurvyth}M=7jK)9W4|s4GG8gti~D*uPV>YAk-O%65CYMy>VHrnkW>(StBh7JzI8fsm8PG z)kqIe%p4YF+jyU|WGdiOlUS<;wEpQU1z*ot#RINfK1(%J^Jl{!EKHmz@52%BQqb+A zNk!1?0LC#vZ(3?rqy7%f+mavBd0`6)S$BmYMW)_*`t3i5^LJ9d_(1x+DQ72k&%P2f z%iK_uU--7`{`z*2Qem^?dgu5&s)c9GFP*;mLD=3fLS77dd5tn2IaAk+6NND17Hn0)KUzNDH+6H&>_oWk?S)K z9QCy?l(>u=cs8`5C5^%y4k}(&J2N=~h@Gl;Jge0=AEv~~+Q#qBdl*{RU|4`~!tj_6 z%0W~n&h0^Vt~+*l!0*|eRn4{ea~XxgoA%BGBmaX5rJXldh%{1C$^uTad;aY|Af(fF zF!vTL%V2{p+e~^43vS5{?DOYB7IzZHzW1oV+YPJcDG@FX6q27`wPY{@OuR7PU+>>H z=;@AqY`a~kQ*jTsBLvka<_TqZ8Is+E`9i>2U>U%`8=%csqc}CtLIVrGD3~1Hp3$;pSb{5dQH%o2AZs|{L#a3aq zb|*owc}r%2K~FK%gQfAQtAq9yDzdZnxd|m+*e_Dj zEhkvF$nJl8weVozIt?$bV3PcK+HAm8mXiVOFsKhbo5LoWK3t*YctxsS1#?C@J0V`% zsAi2VZHyjyfs}^QOsuiAJTUO8~utT`7Q?i^g6PTfB*F8r++ zS6L0LeU-FD(;T1>fqA{?kk!AW&c}Zg5tzRBhqFe2a(!OmcohPVCngs9#g*RDwB8HQR;y$i$Z}Gi6l9 zLQq$RDtA_zsPw9>oq=M~6|jqGTtF$dKpNmSjC|{y>MKTG;nO+OH^6i<9yzG&2#`T> zTf4U+%ET4el7X3G$rXqf>K@ZoWI@kb?i2ym1Mg2<6V+BkE5{&oT}<6-Jv)GsKOu_X zr~2`u7(-*>t5+R^%_VAE+>+1GyHvmO(D#%kMG;F_Vv86*c*m&CTH*Am3B!TpwecTY{G z`)NE z9-y`Dh(H`R%Y8;!vv}e=-Aj6IcZ$B-udz-|6Fb2EWmu=o0NT1?$+q38s7I$**W5spghiwe=TT@Ov1MFu|{= z&D;4czWvuB74;2kNU7cA8$N%0W6*YTuKk4ivAWIT)Ghkj;)K^J7LzWAlAfTog6@#MGDXHX|^;rszydeR&)b;=zqBw6@KDNhrVSz{XhGiv&OZU z)>-qPoVP;*sXY6MY#;jWqo}x*j6F~V3Z2jiFsZDmpfA&!8XE8Z&*(c85zAl1!F%)t zjGL>g{+n}rPR;Twwd?fb8ArYtmjWg~+NJV`8mRiq4|W#wZ)*DQf7KZO;9Xi%KpuX6 zwW7Nz-2lU?QuGJXA#=3rIPVW=a1alQ0J#*vIm*nI`#+NZ8C;5WbE zfhQFh`CWz0@3)L+pPzjcI7F+Qq|WuqxliA>-60(8C9F6?LDV_upJf3BA6w=T-gvW3Ji({NUR{|Q$L1?0C{}+ zkA$+0G(}W-xzup?P)DkK0(-zUP{il?ssl8@mfa-G46!SY*s}wCQBLWCM-9RFA&%#s zPoC(NK5m?xowavV4ZFbizesGqWt>t1?DkdVAn_gM{z2Si2SotuB6vX{PIx*(=9tGM{N*? zO6Cs>j4&cWbibr?0jJ3$E)S4*j!X^lq-VquaxXV7$E#=S%#s3k#0EVJ(}`i|22o_OGU{)8?Kd$QG^n(e!(5k(5$2?2t12G2_Lng4mie0IosQj>xmZ$EtYb|(u$U zmTpaCm24K~9)P@g!@8!Q4!>>u0}U(J zUwAy&>0UM~-nQ(74W@L;Q+X%?!LF=svnMM&F;jZ_XVTLdOrtwcdzFgj;1PnBk;zG( z&N(-#5FgBPVm0Fw3Jvok@vhh3Pe&0Cv{CU7mcGpM8O)Bl%k|4@WII3!b(nIdL>3!OX5E>_qBhtIIq|1NA_vcpcJUUu3;{Ak~uK zj{cT`P0@Y;7EgmuA&{V_s&#h>V$+FvdOJ2tm+A1^lK^At)!%poGWMuAt6HY}=?h0& z8sn|0*@8N!wqJ?=3Dl*}7aR}pwgDAEF?pd2x_i|zp@r*}8Qz;)dUyJLS{k#`ioP_M z8+^J>=34u25+GPXpc0zfFSpbVoCKUbVeq5!BMDlezl0eOiJtXHSE(_NvIF*Ml1bxnMM5} z-`*Crn5ukjzu>QARt1(O`{(0nRx~412EDV#Dh_S$4EjXGn1$sh6JiomXvzIe+h8%; z1-206+P3=ErLKcSW0TJ_7^mL$o3tZM&v}|G>WxmaXlKM{bSBP3oclSpXd*j`@Npwk zVA1R2L>>ZLfoFl@)o!R6mTG;w$>y@oavv1ep|b&0-(h8S+_{CbW5=i}p*wYWTG3<( zQDcKO0e7tz*pyAJ8=8Roij>LrWn{G%Fq#;;roQXpf9@;({8R3zaRqQx|NO$aN!m2S zz?H};Up$6AJONAq3uD0CWfFC=pFMcg+Zi9`V?V7Bti`9jOfCMjjvGdMMb|)DGGId0 zQ~ljU0FrOJV#DjFS>upan}bgO?2Z}we7d=7bPAsz$iVsDG4te-U+jPz^OB=hmw1-i zI5-X(2|<5814?|V-l$ylDY8~iJ7yn5&~*`K0MlWbbvNyXz4;x&E$X+gBG#@HT%Vi^ z;CfuWVDhvW5`W%Fp|Q}-!Kls@VKOONo|+z5QYQG+^RzI2cZYo@N~B^MqjxI=2Wbe@ z^;$QJ+6~e-XM?jC%B7Gaw@x~iQG63Alf4UGXTGocIhdyeBAA&74m2=0#2Yc+ce`jE zf1S1X80HmM+9F*A4a$ksY-1U?07iXn{vIlw8`@w}CEsQMap$-YQ6h1!G5LZw$x09~qt8hq(r+16Z|Kr2(47tn4zv*u;lzyPM- zYxMjiq_GVv)Q!ckpOD<$!r%JjkXHjbh4Hj$TCA8?xtt@!EJ@)-bQ#Z+Xj27Eld=i5 z-DO<7i$OQQa61d&o+{Z&7hmoy=bHbe!uR)0*)u5_x97{kzec6q)!OAmh5%4S?xUy0 zf#FN+>pc?bg$0il?W*KSQYfz31XsJD%$^fBy2zTaFx_!)oA4isP27h`2gLNJ>Ighl z@e_5W_7{~G(h-K>FXCOO3pL>kzUwv`a=1?%1Kc3yEBS3&(rgD79prdVFKBw8SjS}# zeztNY25yf~*N^i~?`l-@oB%#3hafJ~ZXkV)1KY%gj+O{F5qw}i;u7GkvCknVQe|P? zWJFE1>iunhjR$Iy0ZOlvIM5tRy;gD=tuB447!C(U^@>>5M9Y`p5&E!f`$GGb`XAJn*1gVROJy!U@pYuHF*>fT)H zOM|i>BzpG=dC08gVnXhlU#1P{DmP4#y#K$^#0(DYI;0vtq75R4fKwc{GVKfL!Ka3O zNd3vMmoJ7)zYwgoO$MX@oU&hn50Y<6vnIw#e{^2jeBUUhI+D41!CqWA)Qm_|y6*%y z5qCL8yc9O9yF~wSk_WoJQh=Y#kCu>+@^O8Ww1nKdj&Gr11hX!bU`!*-mdevD20*}w9Sc9Ipgr#H_;aPx52s0f8q<>p`Edw$$94-gLz@?Vz1E2U4Cl9Bu` zbM6uLZ)rZ5K?~m;;_~!h%-f*WGTgqSGObabWHgyr?Ikp3WJkA`Z2IgTu_~ZK=;pxU z`y2bh6gu4l5djDjfAMrJT&jZnh;4<*)euVv3!U9_mrq2EfF@hOmT&&rE+BO;LDt+f zPl-eDKU~Pj9x2^kXz%&ziU${GdP|O_STXkgLe?rjRFODCyBeb-b_!I zIm?p3RojKeLni*cQuhZl&|L%HR@Y1KBL8kro3c5TnviNoa`8XavygC&{oIfyn*`)Z z=zIlAaM!fP>>0wVHwT863IW&{yooQr=)~@(V^Y0bp6vA|X~y&&hJ01eRL2-`1(^K9 z9sB;iv~PC2hZ5K+E-N}8n%5nEe zsg5bafNnN=9uavSC2qX=+|6F6O3q%& zey~V1qB?Lxlj1ijd#l`^Y3sm;hAOOTodjlFB#sT3e#mOLXK}S~zNq;~xWwo5)^a~8 z=+$leooGAj&><WTs}3|Z@7?sJy)jq8kcb3Sx`1} zAQWpES^~BV1d>NqdsJmM>(*VzE!|{B^`_qTRz-$XsYkGs^N=&vdTVQ8 zCuzc`8jVDe7bQ5Z`87+qgi9>$Ghm@9Ww(f7Dy*cIfe@b;*HkF&jtPe`y8Rp5IB)p`#I#Fi7*9Cn)`Rel}7O0Mz>iyl~)A_)_ecq7$ zTNp~QkZ~U}zJ3GARP!KGDMYB?#h<8$Z1Kq*hHvN0Y z-sK8gO|0>n9i{kwXLU^)zinz^Nh>ZEYAI{JrO|7>2z_@Pt{>2B|)^pxEbp|f@-l0_e$-(QflnHg6 zrey1aF1THzGI6)l=OvliaxEd*0RV5b#cs$EH;0j!SOb0UG%V(PjA=Qe$h86({zN6L z3OE%RiWE;;D_E&kT0Z7L7MdtUKj8A8H1=L$&TB`RK*Ja=wQ>D+Z_l=;0N|O?nddJ{ zRf1B?gC#`A-zW3Wm}jQ38@UE32q{l$830o9#LQ_d%MKvF~cd0%f|B;skTb)7)^@XHHa`5LJGRVXQ_Ydze6W6X%eEf@w*AW>sC&N4fvdkSx;f* z0$S+36x6YMoX%2GzQ~#0`J6E=-no7rX<}wVtyXfsKsj`nkuk|J>pP<}z1C>dM_s@u zs5T@3AUIq`Ih}~SRQiQR^;4E6B|ocIBvP*wQm>nXEv7knCPXI^3ijFV#xAf6 z67CU8V_#iL5{DpP31|u~8s9##J%jJqtmuGzzf=`fE7iDmxX1i(hB>4)SX4iKG0}x{ zseT2I9yP%=iZ$m-$~wUKAJ9dQlc_w+HJnfp4cX>+|YHPa{gF z5N`vE6cLuPJCp!z?ECRNwhSa|KXga~tjGn3N;$jOVvCTrra#^ecY1P52*WBxsaMP1 zm{_ErfJdB5S|t63=s$tz?LgF&{Fw|sS(Zw@5#?~ir(LVWvfeW+wKzU8ZEaHlq>Csf zfM12tqFyhjW-UM0`Hc5l&q?9FNz)C7uxpA((3cnZ?t~j{5`TLaA6k3>5M${>G0KTvq9TC(I3bI$a(!$w?7iQaLsJ}e1b=%c-<+Dr2TFS8akL6J*62b%rF%3S7qLf!Mv@Gz0SGSRjRQe7~)Y`br&K>2v)Q2FT%f1dMdyC3)wa165E0K~x^D zkX0S?Y{k77jaxWfQ_S@>vfVJB@14wve~Gu7Y&UxQs!3CPhhvxG1rCd%Z`Sh-bh zfI&@8uYP6P#7KHEIwN|b0^8t2F>)V%_}!B%^d|&G9i;a}T+9i@V@e~sWXz9CG?S## zmLK`1aI`>aWV<=Dmov^KLFvL#k~~dl>d&sz<{`+pkbL=5O>G3IJWjMo#lTfz?spY zmXoEIP*}SbUHPX3eKf~psZYg~UG2KJCi@8f^B*y=p9l#fE{@SI8LY^CD}r`&B+%isKe~X+v}ojoTXs0G3tQ8BMQjie?FPNob>5 zE1mGApKDN#eh+qw8%2NJlNn$nHhah6wd5AC?+p1Sig<|GqjMtWHpJ>j3QVvLyPw(! z0Q`O;_?9(xexo!n>T*)4csBbfD1PV@LE?OI+kzTq-G_GzT_=z)G{q9B5hyR{uzs9WsTw9_;q;CuJb z4xNZN)-Z1K5+=$lyB~w0*4r)anf^-KVCLk6OP&*1ShoxTYMpiHm**(Tu7T6bOpd$4 zry3CcngV-%#tY2l72O_(mt4f>;3-rd=Mvu5cQ;kSeAb&Qsy#s?K5MAD2o~>tcde!K zj^C3ZYdWb~ayjE7TGgRY_)#$S&CgTtYHJespk{e`a7)XHIi@hrNsqRULUEe%+vTF+ zz`hk6GP@JiGdGJKRcY%~6Bkl5m*y;aq+Js-`?KV1qhBXd-Q7Ioc(I$yw}s`|Bph&Q zKbP3M*kc|E`z7BsF=`t17|b6xnje_g2$tAMYP*=_gWjuXm?9+ovvk2x>fb@`Xmg&I z$hf86(W-K=#>rw`R$cQ2ETMydu6MI@t}U+TNm3t|MO&6#`48-vPAK}OEY)A05xqfo z)a4JfbjAg*3g_kv`dzNR#C$)A{!ZW5uO^n%+$P0k6|EZ|-;ING>Y4~*JQ>nEnL!WR zV_avX@-HFHgnf6Pb{E^(7>?AFd-o5ZC7epS5NoBF_-f&eeCEtV+TE@j0KiR3)qe<| z&CX?MBE=t;-f9~|`#s7cB=_0`r)XWuC=}lsy~-E;JQQYT>g~#0VzQmjPuNts6sQnh z_VeAsNUf)nLSK6ETT8w77W6f8MnM|KTfnIKfZzQ$F`Syiqk{J~uCA(}MV?J+=6l%H zKCZ280k7uXYHX(G-d}=rz-o|l;^PtW?b^D4-a&PG>Rlba7`Cj}=ti`qBX(?GbzMkp zHh4ll`QC7+JH=L6QF-Gp|0XZdhi61shhMeZE)N??!dwf#3mqf0aI=Amac)0`*L%-& zjrIHW-nH|7!vcfDEOcGSt9ve`WPoH^tn04F5T7)h#nPr~vSQW;sA+y2Q83RKD4waz zupwUWezc!4W7yk6cmddbOgKdhg$J*ZcBVAon;Z_TJVo}HEvGl0ftnVnb?Y{LadVKz z`;8#ZG@#_vt@7M|dNzq?&J?%aYP27FZb#c73Z%#O0}0`~Ls4EfQ!=ny)e_4`-`It5 zdlA?tNH-w92MaD-Ps8%Ow)iR7@h)3#^6@td#b1k~KM}X@Q?UFNVOqlI*LoXh1qF;ZFE zx5Ha3^RpMG43Wl3!#0Q8p~Dfk>l98>>WUup_hTfwBPEkz#VMrij)XByle4p_)N-bz zpEkr`B@WrVG&X5p14Pc)!{%MmH@k2FON=;A$r3YUU%(o;gdxS7b2aD>Ia9#IWzZ=+ zdvw)15}&Fkj&>5)wh{=S>zoipwKQsgY!BS+h1t6UhA(l=BOU~V__Tpc9lwsPFie(s zEP@2+!)hD5fVT@|2+4g@B$0q+(1y)$3*Zn-aXdkvnxde`jTU%#E^L}~;=h&bk%Ya7 zIiAt0IFW5q{^NWn{$n?bSN5|k(j`jcnPMu{1-C_>=DoFG*?!Ms-1U>a-09VM+;qFZ zQN#B9-Ucq&60{8dXrcH)T#aM`lwCOjUQ!Ki2Vro|8Sd=A(rS)L&-^13rCxe-BOF*Z z<-UE~*r2S10V%)j_W@;a?%zDU%Arv$M^MtGnCEw{%+2kDCa>#=gUkN=NReIiDSGAx z>z@|%%=OZ_jeQviSJPPit$jb2BQ~HUo76q|UIoVy!?oF)JHbJ*H9Ki86E)iwBChYP z0#}$aangl!64^tCCEp~{)xMre$p0z!XS&2S9$Y0#!|Pd}KHqpwsb@<3wgWk0_wz~= zWI!(jQMJ0VI;Jh%lse=)9FE{-)4*KZZkRVumwkeYMXZ%6sZAD}gZ@L0ErW0Wbk!;u zQ#cuV8gD2Sp(hT*>@z z*tBPX-)G5z@P62*@Yz{9=RZd=Uo?;JNrqOy$tM86dp_4q?0@<({B>JJ@_`RXKst2< zxX{^O23Mz!{=a{0Zuf#*l*Yl0fjqxVfV4gw&3SF35PM2p71 z{9?D9lz+TBu$=T3%Sp@(F^AZsYRD-$bf(g2y{6ns>6Gl)!kp?spkHxIDHJEDpmo`1 zV=3pUhqq^9#^4lk!hWDWdBXSEbC5GD#OIdS%ER*$0CXQlh=2GDaU=Ie*SWa|H{9-m zcwVM0A~TqTA$4qj{4rL#(|hK`(CBnCldaPyA;gU&DhdQ12LOs8m0`QMfn$vTH302~ z*OjEZunaTj+!^2i_c;u|(9%aZ83D?a)8`=h5aR_%7u`4_7m30J1crz*RUyUiH1jSA zzCcL_)A!WecRna3n`;2|AUu3v<+0D%B;MI(Qt#Ep)a9@##6oOw8R|zAVw$F|xmNM_ zgaNwA%w;Ka0ps=VTASIJ?}W$I{fuT>n$#jvw&z&mS&cqSLs{~|)q0E0wo)KJJDvh- zZt2=bzelO9y!b-Mc!TyvPFGp2hD`t&->j%m*2ibbnKwW@OWA4Kvg{?+V#~u|~#`5IP znIgmGIjH;2J%33nqHzT5MVl8-KDgW;O~23>*-0kNNnG~0yYH4W9>0*AuTVJRnL1&2 zUnMZ~P$P>VTL>y-;zNW-89DyT;VQ?=;V%wXaCRIYAYLn%u{t}#MKFc;)_QLN&ihx^ z_9f(cr_?$Jw_3J(|1`dzZk&8?g(1|D+ppiMuJK9F3D$@$)Q9!cQTQ)JbA;4`?BK(( zJwu+i)<<6249^>N2MBaGZtM-$*j)9p`zlG%n^4@RT`4c-e;%k<>sJlzY#TLqwcSH_!$07d*O6XJ?(IS$3f^ead0&ica#=>sYs*O6f$)cOgHC zrqbq}GN**wK+n{b0}ep^_q$4lf;H0*W{h2wmG8BcGR;4x!dkqMry^5lgr6@{%=!p! zl!{p=^IjM&tSuG9QLdg@`;tiiW`Pfc`kF-8-GHvvd1(^|CB5t&8ELEaRbUShMeTC< zt_CO1R$E6sr))zvA#5p+k72*klA{CWT#bLsV(2=Ub0YQb`7Qfy4?ZsON5u3cKa)!_ zc!*mKs#iH|*0WsdR=BY3jDSSe!W?rMmi@O8kXv!`Qcnfjmk9T8Q{tWQ`NFfP|D3Z3 z|M>4Y3tIzCEva!G&!q^STdrAvPSMi)hhBzLk1Qu~>v(mVDyScSbiBC~vgm8u-I{bU zzJcqda%6PEqu!?)t&2BpY?$fjX~}I2$(6)=9%ONk(q(*M=zW*~Nna$bT+a?ChZuI+lhP2p~S8F-Qs-uHj*TK-{ROO~b zJ?E>F(W9L4TG(Qv30Q!J7~lY;$i~_Z(_UoyZJrc^%Sw|Vrvgi5@EMNMcT^os7tKOd zRL8idNAnv71)e)8k(JHB^yp=A)zm@gfDI4nVN{ufW^5-lg{8`F{2ydKjq<&Rsl40S zdFiM{Q)ZO|7i{I*1V=*4MK%NfxW zG4t-^um*G;R5rFLuQ0heKrSIIM&>KZchq|P(u(>ACKB5^hnOr&izk}FST+^H0&I`= zr!{%Qtk2srvzC1d>`Y-S3{6-%rr)9tmHTXoaq`a^3eJt_#0H01enPlWr%wpi{srIZIs(og8 zGRuhp{%H-@>*W}(cqt1kp=al4OlnneJuyUP%QK|newJdMJFf|Qi!Ac_1tWRhRQSD?zy}=c>P=d{(Np-klfMn6_y! zt=_pMq3ac8=Dk6LC;61!@vi;Lgn9BT+Gz$5k{yqYN=4YSrb9FR08skSRxANRt@r%zXQw=7Vc8o6c}?p&2a=_9 zyzy53&nbR}#0DKz%F7eH59ZKNKBlIXnAUK7Zv_hjZKdVnB%aa9gd|m+Sm5O)u z-uX;|aM%E^WVm?tBzoOB3MN_|2{0U48{vK*I8)6$z%GSgn)d*YEy;El4z_;(uy(pE zwdFpPsCFJQn0y6=Zsfhqrdd96ag;I?4uf901YJC;pE+`QSF1z@l{+#4AQC2byLzM~ zJ)8*|J7T!~9=s%r;2zL9UbmPgOh~}9heI{}9ZgoB;(gzuvxy44!l}<;#n*xk(z2zu zi&z}A0aJUiQBOwGm03&vcf~M4rC7(y^(HEw>mzL+T?~-Wa90;W|8Vk zcF&OO$Sc;ps-kD!p3m==_N}u$o=PoHdfx8_TO&+av6gxC<*}lc_vCJ!ogH|wY;D6} zC!jWxAEvM<`?g!fqX3JzB8+T~>|$gX*jLZjawBzIuh7_EjvIb9<65v_wgp z2Cd<{C&GS5o*K0kJ0sGc#kiAXW@X1~kAINN-IwX9?Q|`uQ1PfA<`l!zcH?9~o@~QA zw`4aDmHvz}u3q?Ml@-O|0Kc}5($G32GHWodz%g|UbL>C;w;5VRSn>slpe_W|KQ}6o zVedLTJ}%q9`cZzB%WzK!W>Li5QOY`+fbdFoakRo;m)4ETj?sVgeIc!DrV!6+w=x)i z1`Fy}N%`qvFzUl_|H*5H_8d7T*6XJh<1X?)Z>nheZ)C^; zc|Q1?MP8Lb-&yOfx%gNfrh8>KedG8&V&X4rGyTMrmRDlgck#$qSfG-f%>#Lr}<)vI>z)?x-8tVKQMy)iSroE#0vfmBcAKn<6}%KkXB?B`w4EV}eE z->y&l;lZ19fbzD1pK-aMASo%yC{4246{uT3*ccE$92|2^Tkyw8#!{}(+(uI}<3XT{ zaZ6OhN#yne;_F7@F8t1!ig}jY37xBG^83v4LIOE}OS*(x82rPPY&x)&3KpTMiVJa6GB)JA&}en#zEF{Pvm0-?8dw^2a55Jv2n+UY4ZSBfID$8*x?f zphr{;qFl(vYBkCIORgoPl&M@P|JDx5r(0uh3YVXi(_Zonb6<&Dvc<4b$qvz}#?v$n z4m9_{Zr9%|na`wIJCrbI$(o#xOo!Fj!!fchqjcN~LqloqQEyuG%q1G=N!dLe_A=Y> z;^k;huy_8;(>11_@%=dpDiyUZ8jgZ_g?))<3N3}G=dE$ewf>+ABq}HvL<kFU^?aoza3wP}$_vuE+VQVg7I+hdS? zjp4eK=9-=nuV3{3)ay}U*>%HxGBQZwTfuhi!d5x5IH&Rv^hX9ORNw2-Mc#EoSu!#& z-S`qH@rN;T#mL-}h!csq+s}NpS#u?;-M+al@VPcVxxQrd{Wr%3-!#M4oVr(lAM3wb z*w)wo!{v!rYB7~L_2#k<~IenbvTr<_zPipktaNSW=Bs&%MIJvIR+~Nf}CGw7s zAM-{&-@4uKp_xQsGGO$!MD7RgW5|{D$yRuS#4bHJ!m@~G^1Tl}pY}0e%j_RCkZ^r( z+9x1EP&@s$hMUvA*+TW=zn)&PDGE~tfX<3V_+$Uz;46K5(rT+pK%Q zwYbu(vQVH3=hCBtz6?;%)b&zr5OnnFG3@wd>vdxOQ<~kJq5y1(Bwz}Ex;?X@sLNMIUi5TBvNaO)aJRut9X zhh0~XO0#|h0)G_3FQ2x&dh7CH|2yCEOCB!MO2b=jn1W>zIy7S)_+`{ECt|GoflDzb zeQ-wL0d?X*6n;YIQ(%Tq>1dSbOh9QiFu{0*?Gq{Q1bDoTM7RM#9D!Z!TSnc)h7LGU zj!(vz4QF|3K?VHdC4K_@PQU9PgL6;x;E@U{Yj(Gmj1OqTRmkO8^djrj8SvwR=3Tw$ zhIx@K;);#PTD`h=v8(N0nz-s^xki{gvjFKwSs zIH20{#Ip*&Wh6PdE-kL>KfZ_S?#_*w2voKVYH43qTN%8CH)>(V-rqCLYPJsPCvHI7 zk5cgi9rgad^mbJ<_4leR#Z4>2YvzrU1-g46H_xNi7szqF>7!Hz6N?I_0o&X7Z z1_`O+M7=Q;M=sH4UPh)d{4j+cS!(!B`@FRoSsaVt2klIQ$YkcrK$;19 z$VlP+Eq@UyNL#RqBj(@?sK zy&D~Np=k_o`UV{=DyOB#X!OhIjb7&pzsk3xIy6eL>0o1Sg==h)QQgaENAVexoYtU| zkR)SrSi(@1uj~yRp}LeTj1~h60lhZQcF5Unyc3n$yV>kuSmqtMC1d9M);m;t1gR2? zregb7dzCxIS=9z%{BE<4xJwt+7>3{-L~)v9X$1eIauPnd5$V81dB4x)<5eZ`?wb>j?#F`c_ z6UCv>A@8HcI~=EnE(uRMz&sG0=b5BgM9~4pNh7sA+^pz%>>@|qi*}bAp#{&9=)uckBE&^S^>jJRm&I6_UNT2?FtPQ7LhmP z<6$yMsagW&8b^PTb^f~LlTp`=Y{%-glwdyR7u4ElMtmF7vnoa#C_k=1srS}iO5;C- z7=&iz#*lL0++0fK#k3Qy_^9q7>|J+yCHe>Rrpy*no>}*8IH>dVdGQ#s^-mSHNf%>H z>9mkrN7vX3gJBM2ymF>B8^v}Rid>(Rt_dqgc1q{xcN#pbmv z5A?6pLc1I;Ox%Z;GfaP#D_(m?$x_WIO#27uBDSSl3w&573#gK&OGPF(8zv zNe0GMPj-X<=JBbm`$?++twU|q?|ee0t)p#&nc{i2)e2UtCtCa)v-fd# z;o^2#I>sjxVZTVas8^-#*)HAQaUE&$^UDX~GKBV6HtcB3=}a2nm6usWP{>V^={5Ep z&aMSmFEa*=*G00}d%V@;aMAmz&WeCrC`m7|juFHWFq82w&fzgh>>+#&BC>Qv-->5_-Tl=)Ru zvtGH|cxlTlXK>3#uArb6slW8Jo{CDbaDio=kb$Sq>UX}D;Xv;dc3E$cw%;a!Fxa<~ zt(newmElR~=!(CDXp`UaXwu(G57s4fJC{C- zIWYv4CQ0tyU7K83Sg_f799LCUHNU#*yhAd^yP@(;5rx*_WZ3kKH!x|2s|Q;h!YBDwCtoJ>>!B+?G(H?#?@xJ)J zs39*ez<2i?-un%DHCI9PPJ&^dCJ354egP_Ww?lLc~`r_Pd66VKA*hIhwxoi1Mj$FO{y*PScMW#9SZ_{*Z=T9{J$ zG=Ca4ZLF3>PQTT6^;vv5qWco>)EvIci(mKjryWJF1k*N&AYR2yC1{5@4ixvuXL?2|JQ+Fob*vTVDJqR7qFHCvn?3Y(5SPZczyMLc6 zSL({3(L1K^Y?1kHL&3K32WB=$=k|E-*M1#a2&}XCeCtuDVa=F{PSlu3;W@8YqHy!V zJK)rECix}697Nx7wn*Y&F8Q6q4kdI*j*78hWuDt~@9%t)V4_*KL0JhW9yTbQ8qy|( zNFU@a{lzIIyN}-#qHVG+(cEKT+sH?s_E7NneloWndjW`U5a91yCl)?ksaoT6>7q(5 z7SzwL>fkNQbjpM6s10zsTm2>`tw#o2 zu*^(dCsopltKoK!=;5$BkMF$%PbOO0e@9~Jb4c|AJ@0pT1owj)2?&~i^8dLOls+WO zWu?x5Y7vXBIi&)LPowdCB*Bk+l)9K|jpLZ!3{^C?m7LY&-_>mj*K&9m-6C_FB!=Ob;iCrbDOaFmKwnyP#0@^n6uM@HfRc=lpbly5|RZKAJdD<6MJOOmb;NiSTNry z?-kEmPP>;h5R%W~hcPm7k~4ic*w@#mNF9dU%BFFxDYKaOvILXqUp%>A5=hU_1J{MN zBMU}M`O_z|+G!`W*|WLLgHcp6P}y3xO;(3TZF%hfG8(pddO=6h?Yt>xwo~wb(cV9{BSAdK)A71q^|VA;DJ*COQJ8N;H1=5 zkwM|Bb?oK~4j@H!U_d*fFQbtDs^vR7C-SU)ydk>GCBqPw(%`gCjk5!FK4?@&no&-lNSaH4Dz+ZWK#VST12gcs>W{nfl8@+P)kTn+Mq21`#tMOZ65s%VC3^@OrD}$hxQFh?u>=Y|B7e(KxNw56 zlXi5Hq7-sZ&`klbXY3uk{!`kH=9}BpEFql0x0kQ^h|oGW;1i1LvO^#jsBDapnnHWSIiaaA@--j~NC4-YbD~;qn2_J$< zHq|6k$N5}rbim0hCYU^luf!eFl|Zud=6@qef*MO9b9bLR63fCcpd=B+xNUblmAM_3h)WM zP273Asmnb2J+&Pxa8Jw;rNxUQn##cX4`b5zQ#%Pt)|)q~tmxeK+4;~DH{S+GVQ&!+ z6LK0Eh_k-xSgWa=KtA!bW4(>M&Hx*^l-jjML0)o_u<0&f(8l>d_dlCk(}bl=tq&sk zCGq}d@%kQ`Q9dDA{BeCQTk^dIpc+G5PA%?j(oKhzp8Ks|W=r_9rlOxGG}HuY&Ji+4 zu?>R~IuB3h5!PP|4Im-3G2|PRl&JFgIr}|G#fhYT9Ar&OLTj)vzttBin|VO(6^ni@ zuQ>axyg$)#&D!f?EWk}TEIHHWmN&KUSkFpea(z%(5q-VAuBA>4PmojWV&J{>Yn)=d z9ypTy0}&v{LU=$P335QETnAf*S&88p6Y{BLx!;FrVkQb50%|P-!Isz9XLDRuAV94h zx$J_tBY4Mj3)gl+VJdia_7YdXjC1hdE^WKT(i9U1w~mc#b(qS7qH~U zT|)B5yl{er)4VBI8ST71xP{m#2#@q0c@NSyYDx97-HcQfBB&Cy-wOPMYB7R=Kw6i^ z+eiuCz)5ln2D;p^u*(51ZS4{>i|k|vbpSEVsg-<nY|nb4P<|=s{ibd;7BdNr{VtUre@3M}x)Y`C@kNtTe98vtr$js?YH+ zdRE(Zw#df_y(&7zs?YBI8`k07Y1YAjTi7k{AgO>gAtodZp~GtFupgk7wtCy;qVKS0 zzi@TdsiHqX-;_N7fbHzM*|0sWtI-`!#9_l3kBdZw$Pmps!-sw9Y6EQ!!RU^`_qrw{ z!Rj;8RtP_X7wT==**jEo_@`q!U?a1PqtE&WvQMH^jLR2XwYp)?-G9GE{ds^jKFN6* z5x(#>@hW<*1&cTQ8mG+6DW`M_hx8R+pB5${NCt=ZU1tEDDO_4-7&ZbHM7Y3*G@Zm z`=e#R_G0Y?x4GTXhL5z+4i$2BQl474L4h-|mOH2@Zo;q}oV`tb4VGedEruKkc5nfU z?Ce54p7|+ns|l0^$&1(iF|t@7-sm~^czfyI>?E8|n5!9OyEaqw;hGVT|FoQiR^8wX za(ZX=p7-fm;lS0uPTZeQr*}zuFtk&P^$y66?OiX*-?Y?wSh3!;5yp{2JsO5>yAdWk zjS4=PUtf3KA<-9|taD2R+F-bJS65d;b#?V1>ErTd&Im?0j81%d)cy=D>HmIci+ z(ZS9jn+AF5fhnqso;@Vv_MReDR74IRQwBntw-7tx_B%H~66T@sKLXc(U4l+Jn9B$# zwyj&OlaVaE6tYGU@~GEQ0tm%;jOf5DK29vr7rD{-b)nx=p8VgxwA`S}VJJsU$M5${ zo=jfi=DTOq(2#P=T$XjLXfM*&kXgyI# zfA#77_qX@!lOTa40c;BANmV5B+^TU@a8q-0b2Q7Uj-g>nW>!`V3rXODH20LfIkIB~ zrAP_6?w5U%wgH4_k2VjQJ*+~@sc=S>6|Db^61z%;9G_-bPCXg$m({jj#xT*ff%*Wv zuxn)JbuRE6CAvE=^%{#9p}sPq2nPQJ?g(Pa51&ysoO^`h$w^`43@kT9jmgKDG0zV; z<(0NOwt|^`+keO=2+_q9iT^3Ed}KiN177Rt2}|L36m=Yi?f_$YtY{ zf(zi%IVnb@RwQEjLv7EPcQls3#=YLHCgz?^_an1&rqL1AW)(L= zEs78d$Fxtp$}Gi$?HfzAa%JFGwyPq?3GCdT>u;+V5##@K-w{f{A}7r#)&wka(bC~{ zAt%GPYFrz(N^-1kJuRTALw6qYVb|3yG{=h)G zw}nBbr#zS6fvp)fQ{P99A6)SlTIV|OKzEDSF6Wv&rxOjy54r^Bk~YLHF_+~H+D zHR{wR%NqU5C>AcaXQ2gi@_!28h$5%}!x*&(Ch}Yl{J00=l)W>)uMM-o{5&IVnVLJQ zKJtPkK+OXsH<^iHWvf04AOTjPN)^w_%A3HP*2<^k?Y$k&&uLPojx@~T2N?gbT(cx! zLj&5Li5F*;I;kA2QpR4|F!f(brS}wim+O(_8yL@=P$M(jSSs0{Z2}&Tk;3QaIfd-z`C*N={`&>6#=fBgv1<9(659D9Etu&(Mpj~`N z@=}lWxQaMkb%)n(+ljnpDuNyX#8Q-}HNsHwC4X(}jnd&#M5weKB>R%oeZuX05cyB?KPW?uCQG3x#Zw&7+ zS9y;rMGYyOIj+)3UXTy}Ipo$b!))P>y@_(U{tI}wr-*j>taSEdkLv)GODEdLhz~aU zNeHszW*SA}xvFCYceZV)8PYpDVE~?w+ZK1_lsR4~s`ho|l($o3jHNidZx)2E7p~al*dn)cR_t3kU^DsNj-LBX6yiXXS?UifH~@SWR``h%iuN05qBt>u=-K=}f2- zmOflr6|+(m_xS-PLaVVw=tNKZ5Gby*O=ErOfV2(wpSIB(|QQNbPnH(rMzg=eB-r*2aVSSUB)RPa-sPrNDp2cL~?* z#5pJk$)t&0B4J}B6usr*DHb&sldQm#lJ{5=%ZCC9r|2`wt1AblW6W#< zI(}$RO+PTKF67al_excXI*KpS2BKR#Dz&d(tZWe46$WnbTBtpL%Y{{A)``)azsDnLZW!f?aKEc2I_P`S4ZwCWD>=BgW?Z${}k; z-~)PEO3r>=`ktLZjZgM3JAqdlq=!PG)o7aS8$E9YoIcUT*J|6A+@n!m3lD}< zIM*Z$EMndKtgLZF@v1p*3Muoi&fxqemTH3>9r<#73%#f*nTE2(j1L{U-gE-@m>32Y zkwg&BH47aCxlDbX8V`uGY?WGW5I0R@uJp-l`FH%*lKuSDQRyRUHwt`)Sl7 zAU6HgpRS*vt>DYs3oc%gKT(Gm`HI127zSO#x4 zxLES*-e648sudqOXsjPoN}P<$QM>%rUdtsvVsBUFrA!Uw6DfC}?WeY;TYtMiDjkx+ zrEH`1m?2$WCW}!P{JR$yvcs0_kjsK#^L+7z$+SBxVy1~1Arcu#o;W@h(^?zrYK?4( zj4w~8062Y39tR!Dpf#__=_DtoI(8xDgQ&T6TR9T{jz2B=H|gh%UzMM(;!QX8?(KyM zI)ZfM;|nh)p9UPmZo3o<1eZj!fz>`-CBPc6>3Ntr)@kl(uQ&Dw2I1C~z0;_ipzXFU zH)Gv3WWj8}iN%zt+jfxMYBq)r4!#@UuoR`!);*QGXR8vRJE}#88!f$X;v_9sf~Ir9 zmCBpBah>+R*gPNcDg7d;5hOMGw0vu$tehxV#&I<@TW*)232rWZ9BcpN3n zxojLITq|3JU5>kMbF91Qqe@HEtP&;;N!`N-HOc>Q-VdXE5!YrBpVP@Cx4RZ|M#%Q_ zA<(I1KGL~<%GgzFl)K$BVezpSjl64ojb^<8edXX3)4*0e8EK_1VT*_Vq>Y-Lr(Rhos}%3f%*+;C}A$6o4*qcF)1+a=)j z(*h3GjWn$O3*AClKqWQID&q)D8N#_7R2*V9bEosNdE<52yxF{+=vL{$Pj#g6(HF}2 zCT}bJ@T^pt{THd+ZIgWMFW01rmi>ly!k*TTWTcJSrR6zNvkNy$i->%IYJJdlx?{uB z&At8ma{Fr}qGk59oiN(-QGM%kynt0kis1F^&S@OFG%lBc_^rECtJ<{%2-|;gx!p8T zKC^ALgYPbaGgOLT`uYxC8BM1}R6LXpRYUh{KdMfi3^+NOK2kRVez?HssirWq*70!( z+e`FeeP*2g!m-OUu53C_gfx1ElJeCjc|uXZ!mw5%6`ygoz|~!Nxv*Y1rD4HNV$+Ii z`ll&&djk^AE8|4dIV9FwiLjIw!o%2%UQRmf<>JAqaQrZiJG8d+27>LD4=J{ovsgPS z?9TIa<8J zeZ*#j#~L{qmQ^+$Gp|+sC=J`ctSzSJ+^B_hlGmXKTHxt!3?&-vAfGRnc-Z|G0Bb8r z=TiPD21c=?6*+IDzv~#q%ycoifSB;4(&pdMH8%lL8{2gc54VoCRzl%czG9bA8}HNK7dCvq=Vy=ST&gKVvy0XqGl{mh0xbQN!{|DA zW+QYXe9>#mm4_sGA4cgKMfK7vpDu(Fq;Yx0+LRjGdm(j#gyZloMU*EkxA5)SpNy_qNItqQ}OTa~xfub@`Y%gQWswOg0h(UNJ61XcA0>&l$LQX}!m z?b3ROo|EO)3gVnt@A73PU`m_?(pr*9ov54+F&@F1O_mM+jG2Ls7}av6Wn;o~p*$#a zsbf9FXr+ws)Z2B8+fT_ytya8ZuFN3heD*UVeLqvyh|PDf031xZt9L|&6L`wQfsfIF zwjq2_gOtUyLZ9w2)9arl>|Fc2o!n0A!U3;ZMz6~aiayCUXgXu}X$6r-vS4jatTU|< zck?i4pG0;&FZ?7#YB0u+`NZ3a=}TU+KW@pwEO~E)!v1~DngFYMuEMdm^v2wCx5C~R z-=|*k(4|)1GN9Ei(QI==8~N(QNMkSop4IWoa}Ozhi~VM#d!;Z*TA^SyVS5*HloJ5S2h3X zx_3U)h;sSVD+Bm^g_*wLFH;8kev|6C;w<}w!6qkPnm~yyU-6<Q- zB?C!?wmeop%r%vkH>r{AZF4n`B98hq3vZZ(r8rNwCP=^@tq`7A+s_PAX&AH38N~^^ z_%ZuH^Zm=K;UB!8aNFs1I(WShdCAm0#!lek9gM&k>p!u1qk6Z9%;P(P>yowzr@5CW zD4s5T`<0J&72>g5mCwj(oxgj5#*B}kh^(bj{3sN7!Xg~=eGfsgCawdYYFMP1)xOIw zzNNV)-kMphHq1!o5DcChzoNqB-1dNHTSTkBS96&S&homqX7^eSIuHo=97#eYfmi|E z%h(bJMGsH|9Djcs?1F;B_*Hl|L|NkFrYjXTwK9Wz9>oS26>DaC2ETRh#CQG-;%Wn?$a+Yq)jevRW%^> zEhHp6qvpI_C-mqLTjsp!0O{k++Ha^52r1Aq82sqCj~w@hlyVQqJ1JP-fFv$YeN}eW zH@l>ChHw|nuv<%WRIe)sAf60loLO$BCq6HGZO_~t;s~DM_G5|XQT#qRLqo1kkDzL^Q}y$X~CxPtE1TL?|c z!R?mahZ+?t5rXPSPsGa%!gd)_E=p6(q#^2` z42KAaWj7exEvrC{Bzhmbl?QRUx~K2Z-IQTrU+RXw@`Cr2SL=_cGPhaeG;DzMXEd5> z+%k!i7;a(QLjT4L!4z_1tL78s1#U-|x~fVQjlmh2I6_6ZhXxZ?x4_dXEXCD#_}mbl zae;H|7ka(i3&DkJK@Y~8ga*YOGzry})+OkzHUY2^(rD!X9o{Nm#5RCN zwQZy*t_HWf*0t<~NE}ia$JLt|XbDJSbU;wP_APpRjV9@XFQBvEUAfr@Qw{d7~l7!7`J| zLQ!dezaYhn2{Uk~-25WH26}VW{hYHv>uQp>9C*u`@5`+3G-Q3~F;<^XS0qEDC{Eh^ z<<7-e%R1?7?RsR++}k&CoBpA37vPt}bx!t#^Sx@`Ivq?f6>`o?aoZx_u?6YtaOuS03IzS*c>?s<1dV;WBlyUwPAs5#V)VqC!|k3*!V z(~G~Zef!c~ILFdGXw~YQxY9is4U|R48igYskA*|}onSd|f9OKa71Io`CT19t@|_Z| z=fI~#DU4jIk2_^smjvNjiRLK=IKIkgwpXOULcr&x__lbfnboWaQ=dP^x@TB)Mn}GgAt9J-@NGny;tO58}qaFA*6nZcA|FEN8g_9 z0t2ij_MHIqe$Rj(%j`U>snEvwM)8xdzY??zjFjKFkz#3KVUb4p!PrBEN>pEm*U zS8$8s6X9e;$Pz%;uZE7|{>b^N5Xm!X_ypKI{!q1?ekMnusX%;es59G1j$c7V4ZP=h z|I}}OMGKO%`oNV#)vvPn3K_MgohVQ)YDkAFwnD>phyOMR%xLQ2v}%pb&DHXrm!2BF z*HX3>$oZW~$XydRvHPjxBbtHHSf)_P`wp>fID&W*jmnTQWL;X9zML#D?r~J1X$=4nn@vlEmf-E$A5Ay> zq0Iq`_W9^!NoS=Vx_gVX>Q$8YsOiH~e5-b=Qp5VPne2=6?IW&MzN*%Wd z1ORCjk#k`r+I&I$cOAz7&$VB59C(IpIi_Lg;b(fwuatKu6o*Jxt`gLMx^qbARAjl*D1M% z>}E~9d(kMiiEy{46VB3U>UFP{U#pt$!8yua$E921Ftf`uL)WEy4B@iYh#jlyx_g}O zqS}Kr9&9DzyPDfBaKtKB`c z{ixWoWmbL_$J5&`uF{fgWSm#|lg^>6Qmh|XAw~|_7A|qav?;*i60Yy;cl9@HZf8AK zFEMNW#Y90x2#EqGLh_Kzyx9{jSF|)oontmE)65I+sh9Cn{R~PXC=Yd1Jl_xhxM`Ob z_lS~XLh6Y-Wikq_UvoJUvrA26hf#7H}D+qjd`}0?c6mg zBQmQQKfZx`Y0RaYTd5HEoQfG^oSkdyEdRS!A)KV(hxU1zH?opjP`E>klLNG`$Bi>r z+D(N<20=*mmB`9}lts5+3GhRK7J327lrLF2wzO+#>S<>ht~FKYOqLEGH%- z6BPrL-q3ZjXNiBXF)h?MXGmDo268iWT}^pRDl%HdT6j19R{c zSZZl(>}vVyVLJ71kJ;&4e+@~K9t6-hr~zT-uRQUSCp?=|Fn5?xQmL<-y?ctnat*yO z9J}Dgr=FtGTbrCK#%u!3F3pzb9lgFg)H;px@Nh-=h|GQpJsmfVk!cHFb9D4n4R=51 z#bR)5d*sn}WHdD7qDf(gMRW9}tD%o!(m*QX^;{KC(MsLkHU#3R|7W9}g!3610Y>Yo zkQmGdCt4a_JFv-w)X!@l@Gw6Z?`euGL|@K)f4`rvvU-Dp+t0LO} zC=3_zQxK<37}flH5XU>(EZ$iFoG3!PG47*eK>Xg~53#x@DyC2Q4&gSdJq&GPuI=-9 zS!XS*Wj#SNlS!NOF4t`1W5cr5W@%Y$ljt>=#$v*Hc@l1z6rX7yY92Sre!o!kP3H<{u1imh`N)xcBiF(W>9Dny3%0sf zNFMI|QmtmqFt4mW@}1?@&8-Yy{rPTf6?2-hGke%#5zR(a4J@evq=xFQ8gs zdzBm~XFg8WageLng}hEeU3gLHpC-+FK_Dyu@ff}3jThZdWdjJp-T^+Aiv#D1S~!~aEUDwLTlA? zqBgROn_qg&(`iy6G4XBsHcYt{hSSBVfqIp|x;T-+^dQ$b@x_>(GRrzIee}EV{fx#b zL1?DB`-9Hy_Ne>&gp?!F&+KkNSBt+7K3*q5oOIUv0(YW1p`xY370e987m&;a^~XK}m3bl7-@oakL-VyiPM|W39t{k5)P^iV zOrD1#)OlK8IqgNO1o>QQ#jDUFN*Cj=mS#9Z0Uq1FgNoE#t=PHl46tFBa>=D?wT1^& zbXLC9>G#_DP5>^eul&oubk;Z#nHk{pkW8!S@3#edmCzNY(C$>yp0e{e5V?vDonCr? z4&hvDt@@izm)MKN__y|@zZM1&OA!f9uIM~l#`b7Qlf$D6S;AL9TH90lJSN?8bskt) zH)h8EFtl@2hcZVtEWxgkc%2Z3v>M}sV(=f%%W}zDd?}+Sqjg&DJ8hOIkvuF2Z^$Og z`~f(<4JE22jFH2Siz?;1!QM6Bw0%_jDoG{x>5fO>)vFA~G#cD`Fs}=_6KA$2`d0ldkMZ}9wX*Xc(7W952^@h<7fLZ1uL}?4;o`N!t<#v7aXURJQ~bK*Lv3DFnjqa8MZnr4%P_q}}% z9_`YYl-|DYF11q?<&~6<@)cJkT`?!L6c`l9ov$?sJZbypwQBd4Ls`Vi_~VB2$1a+j`Zq z)X7XrxOEP;PZH733(tv=WQq7OKvOOT&V8_8`Z6Z?p$96nHb}MnzKOj5eVL7%T!hK3 zE;&Dz)i4#l$;ji58!3dt8;Lv|AJoc)=9AeE@^LpDE2xR)hpzumwotDdnZulO|12ZY-cFwktS!^{mwT+X+Ysk1x7h)%^5XC zT>7W$A==ZqjKtMR;?$GGhmX3lgE_|yk><9rfq}|Q zW-b?GzxbK&IT;0Du2Ct{cigAQcZzS-w;El+^&Hft!%t&1K}C1#O|lDiYea7qH0mZ9 zmH2}j>X)n+zPVMwZ(YIdbI0!m5W>168Y-SxiY%m>rf%GZ8{Z|U2%vt-L!!DLv9Meu zS;R-2<*K7#6aqiY%7cC0<7_$Wip5=Sy=j*ci28F~A-5br+8XT{D!gYPQLpXs^g{_M z%W_9-mH2T$$^{{ZeU%u>jZe$R5A7bu(xScZfh01mK2AOKj*a7q<(<*p;-YYyEnr(y z3WJ)qrZ3SE9HV%*qId}>IXCmvzdB!EBjpa9G)eRK@iuFd-Yvd&c*!n}-51$YbmBVU z*?szuhPiDVtgEY?#cD*O?6WX=N^oC(@@lp0JFs#)k1I6$q0urR z32xhuPbi?V;5xoR&wQ%+)J4U`?sJ2|(ar8BMzn~#HJRkH-6#d^`BhkYiA99n_Dy;h z$ga6xO`nWAXqA?YF6)6Ub;_ETK8a*uHe(n^V!d`9|DxH;J`-?0Td`Qd_-K?$E!KE> zL9nl?=A?Qw61&e^7JCfa7&tumo_h!l-#jxc+F%l;vfP^bysEk_d>RG$>IEV^bA^py z2r4{UxX|flUHv}|yuR!`$y`B*JeQZobA`_om+Xjf+BB^yQ*k&sAh$gcjZ`J!%o*sI zv*~w7J(u%LlxT$GvzL0d@#j|)_X1b>Gmbjc$MHF=yOwES8eS)BLPQ4CHQwLfZ>FC? zy*#9My~O1eQhO;O<0#9TP9RLk4$D z>l_@1ffmr?x03-}<07_u$+$+{iM&nDk9)acH*-yLE`BLDBaWDuvpxK2#pv_Q^ld?~Y+b5RE5ULwoP!-KcNJxXfBQmD+#MlkZi8uZ`tu4i7MC*K zFI^S-x_;Sxy|B04ih9Ly_x$vn*q0P#ZjdlBYs05XJ|&55SmHn@8$w6IKka@aC*$~f z1@qPN@Gba1%R0`rCP~-)k#qcysI4y=olxd)1ggm6s1onMfB^Ni#o=J%X1gS+jsuO@ zTVt5_55k_275B)=$#o>pvoSbR$2NEBf0Ij=(`^s+(Gt}DJh$g^_VzbNvod3gyJL*{ zrxNoXOwODAt0}FX=ysEoloU3WaL-)jNKbT?A3x@XgjMznbM~x}50?R0@A0o@vT9}A zbZ)<$ulFsIfh1j6Ae?i-_vhRCfM5kuO2|}apKv?Q(RZ1uWQB+Gr~jO^s)d$RZ^$l! z1TkmJqvW`*@(+r%UG!AFS@5imRsTpYgLqcr>!0hXlMM~+OW~IRUJx*_ zQg813sFD^r-DyDEE8_pP_#Y;oQq>Hp{+4)p&~_|-3*Y^7r`;j}BK#fPn5 z)&y#Y9-vuT-pCZhb{>7EU^QCj?d0w*3L)c)Ul=TJ1+JNK+!u^6ZlybJe6&EdPmE_n zi6U_(SC#OT|G%E4sVA5F{?AF8SAhUU(LV`LENia7D7R|vn0+D`7U{0CI#m^RZhHTb zQ~*qpNMNQUJF$`(-CE_Xm9R@=*xF`UwtEtEvEZ)~E%`K`Zz%kknO*|#1oAqt{(Ehi z1otBTa3_<9F7qx~En7@$3U~?Q0RxtkMm1SBX(nI#UErA9+`(WwCCtEdHhr-1BivVK ztXnny!uFksKH-RJa@&)g(5$a!O@vzrVe&M3M4&c>=Yi*XK+T&pC-%bRJ1b*wt|^PvL;eCh$| zaKXuQXQ7!@E>40+6{fou#e(OYjdO8wb9awFxBmGC#`O33wfF8~lte3+IOci6doZI+ zgK*bb-)j6!K&3wPvQhL`)`Mi~i*Dt_sX=6vl)wHFfv?eBXAzL;U&+*MrIUZ3 zOWnEjW98Po`@<8!(0s@uAiGmB^!!Qw=;YsdQD5Qfmv6Be#}`%@Y@a*Vai6y_LGr(m z$o1nUop}@GXNNhHoCG&?Cc3_Au#Qr7R;Q#;C5kGZedW?&%XU33cczR+M#!;O(k~8I z$G99N2NB^u9}zXsEZsA@WpUi_E6%*_9rP80*-51X$^_)!y4?S-r#S!B^pig`uzjE( zye?TE{hysC`eNU`7%~HqeHhuF7e9|QvVY(Vap3>`w`kk{;ytPI0-MC{IPgf5^Y&d7 z4z%c3|B3_e{m-=W;hK|+xKFS-@^sc|KrMUWbk=b}sgAO#2a{W7d$8iIsQpTAT+vnI zOy{6*Kiz`LJA%ec`DBElUuCiZCj4rFht9|D-r!|7t2JifH{r)Adi^m{HOYR(O=RCJ z_IIp@7$=vjkc=0seE5>l}6MaymSAd)CQ$Tqa(nHC~FJPlr>*B_=}-`{ofwye%Tc zcg|;UI@fhvG*wReyUwTtiKyFu4`I-m+`m0q%nbBp1^*AfiV~P~XZ0Yy1^UT(W8X64 zV(vt`LA(q4RH0{{hRx3wsEGF5i5^{$Txd_41uI=xjBUJmSgqombbD7C>){?mQuvMU z*qnj|A%{<=ghNQG23qkBRcuA0;=OG za5GPH7M|qmBjADbk+utTjv_|0L_FRt&7d1m=7E<@)9Di<7*-A!h|3}0auKm&jV7+; zZM|KeADEun8=l|fb$3_}L05hqs?S<}7}pE~=Bm@uR;W5>V3;Z|Dxt@|Jz{F+KT35^ z@qRCqaU`Wm4yhJyF77__y8Xg-t5by2`fCOu8&!y_MYP*8(~vsld0w>}7Y~F54Jm)@ z@!CqDZ)3IM%l#tobJQZZdCW*H+SOf9)L?Xhd3df^1J*=$pY1Or%N&r--xBkKtfM}` zhn*QPxEgI#aPONlhcLh1!v2pBh<$&ehfM&D4z}D*)c=J~pR$WjuZb7VqPkMkpkM>i zRS_zui9G;qqGAsso4*Vb_uyl5UGYUbkcu)}{n>w*4gagpk*zCLOzOBhODBGepX%7L zj+imDxYL@0l1D+JVUXT=E&Y?4-zruWjF|HHr#=2aIoTbOfdjOm=y)GA5sftNJ~k)( zuji`&isQ7vGrXuU2=|nc-=3BA+j5~U0xz25O7{G3fM?nxgq|sC8eFPDtW5@#s;j0@7CXQjmHRke+DPPA_iywK=@ZEFVZ6!}tF0u8awG~l)ug*{((JzVqE8ZI39?Vk327BKzbecS}J*uj|S`0!3XG-{yc zx^nQVAT?xE0pR;IG@nb%duABT%%WkTeTn!n?ef7_P*?$!YlP3*or z;~A4gEaVPiu6lNj>Xt=jVn=L-5<2}}M*pX_ADZn%p^fb9Car3ZvuKfxXss~M?(5<{ z^G|(rt75)B&DW2*8X6|kGwq(M{s-IydP-;iVDyY>b77@Wyo3Y;mc#cj`q$q8gq~A6}r`;{7V}-;6Ti*?hBE=}YOX2BdUVYGk zq<#)|no4syMlvqA_vUKz@bK^qd6rF?{U|RVA79$5g!z;3oo|&=`bBzrAY;rC)JE~$ zuJ@ zO1oI-RNe1WH)I2&k7OJzFP_}=BvkgVM&l|U7tPD>SxT*K{$6B30GLEvAfUh>R*tOd zi5R<7XX%(PWM)B!=+HLD^ejY&venvInFBI?lC2aL!&1Y0LXl&jzrTNm{Jjo<_k(-U z)p5J2fyIxc0Yxe09w>2`{N{bwq4paA4m4x6yhfUDG&BI7x+e-*tv?J}A2!`9&ECg0U%M@syxh~JuvOWcS?5}0LU?MTNoH%BbNrU7 zbL9Da^hV~w##Q(|eQ`l${_pNNitM7M$xnC}lDaFTa0rN9sdB`riUX&K0*d`_swT#l zAwkL?xgWbsVIJtEb%^zEEZj;rZyPDVZ`btjA~l^^LHrfDAq6qHM9QvwXXoNj@L&za zfbpn~R6bRYiyQvh=ni6~|AlHpx_RrnM|BZNS!h9>xgOJPqJ!;VX_uCoH|h~SEjX_B z>izykj-S^hRpuXOs@yoEmF0O+G;-&5J_++A`1mo^4}g{XYs}pG1I4mjxeMi=!BNTKe}5Rt;OS6ll(?dX2s4j>y8Z0s`oQ}&tw4u+tEm)eUqEU zA&(Lv$9t5++K*E!1MKF0xqH^4P0&P8bIHF39+vc%U}Vbkz{02^cMVW zTEv&gfzf6a5dNZ!-&S6m^+eCpFBgc`vpG4_VFz+7fA$#_xMega)_lgK06(C7nEj;M zWDG3=p5E2v_k`Q3fpVh`t4fU@dmMCN+F|#NV{fs&b-t?4?N-+H(B9qpVP#Cj(uz{X zE9P0$buUo!5GPH25EOQ(E0t*8ahym^jK|ZYvE*?kc@**{_aV+AIL1H? zdV}W5%nTsUEdA(r(Ds%V0ewI0RD`|;L*$p=36Zl<)WVTXgC9mehxhdF6^`q5wfyRvPpM}h8*&C`H$)XZNN zj{!V1XKdJbyp2wm2X{}g{eO60oR>*RgyEu3w}6K>UP?ZdouN99`b2@sj3>3aDclG668t zwpV4p6d#vpoxNGp+8W?>w!nvSZg|`unyZH?K9aoKw9XF9xA_OkE!Xq=Jz*QsS8NP_ zg(7L&+z z?4ZMB#IG|)n?Co>;~M*BR#}@t@&eHt+nsYu$s$vEdBH>x#&b;T0l4hO#c9RaH~JuF zgfghtgcef>AUMWg&8LUwOl=g%R3-NkS#by*rVl~ zl80%Y|H_+QEo0U=Ul%PG7V3+e{uxiDBuK>Qm8Ukfhn{yONoUk)Y(RD}fvTvb#t^O1 z87HZu2LneqxxdlIKYMojKlR?tWSldL(YO64^Z_2UcRL3!a^L^8@2Oq`!8T`J>{k%G zX>#P&fky)jG5(RGEu^ZkuDk!K&f4#p|6u3;Pk!DlvQ`D7!U||;_X%H^`mWD*PoW7E zB>XgD#ArFKYk2jQQ}YmW=6%#4%-iX$TrEqXudx(+rRy&{-oXqj={Ska>|G6%wfc~o z*#Hv6dRt>tiMVBddojJAVE~${{dDm3@5AH+`EQTmAm)=6hlS3sZ1Hg#Or%{C!pe6lxNu5dhVj5I&RuaZSfp%u2-a)S56 z#B4`XI~i6V`P)IvgRXl@NjzFN%BcV+_@nMcsEmJIyxW$rf&i~=L%}+{Uq+7o-W1@) zIVSSGHHl%juDR}er%yqOoTcX6AfbwAaK2t1LcT;4GT(_4#LNsx9d@xu z3rJGAfBPdQhY%i`+ZtB6A@nhlz#nLhFh`MOjhL4*-GrU$$~7A}hzvvWn1XfPz*VeQ zo&&F~*RGNG=*;cyE8;yP2aY-CXn%Bt_S+X!iUpT0rJhRcX%1h7bh&Scl;n#e+Ueh3 zI+s!=s;%j@75lZlz!gZ8iVMM?3R`NGF~~Jqk;*r6Up+SS^(F1fNJa+a8?D;agPcr5 z@czY@#T_Pmx)TO*R zD%m?;etDWzzAOFhDUaa$1*&Rv8mruBV-VzK8=>=*Cr{yW5(;dRL(@0sVFpGcGiD!R zcJQ&%p1_j-$EEs!R|5M8DDJ`5HQg3Zclz|BLUInPC?121#o_8f>*%bP+4!|-22c2l zxRLM45Ldgr7Wljp^X7zc&$p>jYlTq`PetC%iIs_OPquv&O!SaSF#{?vztE2NeRwe> zs%^sn=4bu+y)Jf31Q@ur+1*g1kG90A3QBb8+jX3Y52;~?ldrtGBcY4qHY8O4;jYV0 z25sf%B?8$8lJE&!n&nNOTjLedWV_=&haHMkfrP>eR1@6IN6g2(vZtMLQ>WMwv>5{B zdr-eUU45$tswOnVQa1_V_30(WY_@E#4pj2!zQ4sJ;Z};NVI^a@^+q1B7B4gV}2kH;f5wU2GZ`4QBFE=eal46!`hbwH9==yI5RRUg7ls!Jd*NtYOc zalYH!{S`^xO-TBTaUX)wtRX)swCIjdk&K%^uK$gU9U+C$LOD$L