Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build_installer.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ jobs:
- name: Install Build Dependencies
run: |
brew update && brew upgrade && brew cleanup
brew install cmake unixodbc postgresql curl openssl zlib icu4c
brew install cmake unixodbc postgresql curl openssl@3 zlib icu4c
- name: Resolve AWS SDK version
id: aws-sdk-version
shell: bash
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/compatibility_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -459,7 +459,7 @@ jobs:
- name: Install Build Dependencies
run: |
brew update && brew upgrade && brew cleanup
brew install cmake unixodbc postgresql curl openssl zlib icu4c
brew install cmake unixodbc postgresql curl openssl@3 zlib icu4c
- name: Resolve AWS SDK version
id: aws-sdk-version
shell: bash
Expand Down Expand Up @@ -865,7 +865,7 @@ jobs:
if ($LASTEXITCODE -ne 0) { Write-Error "Failed to initialize local MySQL database."; exit 1 }
- name: Build Compatibility Tests (Unicode)
run: |
cmake -S test/compatibility -B build_test_w -DUNICODE=ON -DTEST_BASE_OUTPUT=ON
cmake -S test/compatibility -B build_test_w -DBUILD_UNICODE=ON -DTEST_BASE_OUTPUT=ON
cmake --build build_test_w --config ${{env.BUILD_CONFIG}}
- name: Install PostgreSQL Unicode DSNs
shell: pwsh
Expand Down Expand Up @@ -960,7 +960,7 @@ jobs:
- name: Install Build Dependencies
run: |
brew update && brew upgrade && brew cleanup
brew install cmake unixodbc postgresql curl openssl zlib icu4c
brew install cmake unixodbc postgresql curl openssl@3 zlib icu4c
- name: Resolve AWS SDK version
id: aws-sdk-version
shell: bash
Expand Down Expand Up @@ -1039,7 +1039,7 @@ jobs:
- name: Build Compatibility Tests (Unicode)
run: |
cmake -S test/compatibility -B test-compatibility-w \
-D UNICODE=ON \
-D BUILD_UNICODE=ON \
-D TEST_BASE_OUTPUT=ON \
-D TEST_DRIVER_PATH="${{ github.workspace }}/build/driver/aws-advanced-odbc-wrapper-w.dylib" \
-D PG_DRIVER_PATH="${{ steps.psqlodbc-path.outputs.PSQLODBC_UNICODE_DRIVER_PATH }}" \
Expand Down Expand Up @@ -1087,7 +1087,7 @@ jobs:
echo "Using iODBC headers: $IODBC_INCLUDE_DIR"
echo "Using iODBC library: $IODBC_LIBRARY"
cmake -S test/compatibility -B test-compatibility-w-mysql \
-D UNICODE=ON \
-D BUILD_UNICODE=ON \
-D TEST_BASE_OUTPUT=ON \
-D ODBC_INCLUDE_DIR="$IODBC_INCLUDE_DIR" \
-D ODBC_LIBRARY="$IODBC_LIBRARY" \
Expand Down Expand Up @@ -1197,7 +1197,7 @@ jobs:
- name: Build Compatibility Tests (Unicode)
run: |
cmake -S test/compatibility -B test-compatibility-w \
-D UNICODE=ON \
-D BUILD_UNICODE=ON \
-D TEST_BASE_OUTPUT=ON \
-D TEST_DRIVER_PATH="${{ github.workspace }}/build/driver/aws-advanced-odbc-wrapper-w.so" \
-D PG_DRIVER_PATH="${{ github.workspace }}/psqlodbc/.libs/psqlodbcw.so" \
Expand Down
27 changes: 24 additions & 3 deletions .github/workflows/integration_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -776,7 +776,14 @@ jobs:
- name: Setup Python virtual environment
shell: bash
run: |
python3 -m venv .venv
# Grab 3.13 rather than 3.14 due to OpenSSL3 requirements
PYTHON=$(command -v python3.13 || echo /opt/homebrew/opt/python@3.13/bin/python3.13)
if [ ! -x "$PYTHON" ]; then
echo "ERROR: python3.13 not found. Install it with: brew install python@3.13" >&2
exit 1
fi
echo "Using $("$PYTHON" -V) at ${PYTHON}"
"$PYTHON" -m venv .venv
source .venv/bin/activate
pip install -r scripts/requirements.txt
pip show botocore | grep Version
Expand Down Expand Up @@ -1624,7 +1631,14 @@ jobs:
- name: Setup Python virtual environment
shell: bash
run: |
python3 -m venv .venv
# Grab 3.13 rather than 3.14 due to OpenSSL3 requirements
PYTHON=$(command -v python3.13 || echo /opt/homebrew/opt/python@3.13/bin/python3.13)
if [ ! -x "$PYTHON" ]; then
echo "ERROR: python3.13 not found. Install it with: brew install python@3.13" >&2
exit 1
fi
echo "Using $("$PYTHON" -V) at ${PYTHON}"
"$PYTHON" -m venv .venv
source .venv/bin/activate
pip install -r scripts/requirements.txt
- name: Create Aurora Limitless Resources
Expand Down Expand Up @@ -2205,7 +2219,14 @@ jobs:
- name: Setup Python virtual environment
shell: bash
run: |
python3 -m venv .venv
# Grab 3.13 rather than 3.14 due to OpenSSL3 requirements
PYTHON=$(command -v python3.13 || echo /opt/homebrew/opt/python@3.13/bin/python3.13)
if [ ! -x "$PYTHON" ]; then
echo "ERROR: python3.13 not found. Install it with: brew install python@3.13" >&2
exit 1
fi
echo "Using $("$PYTHON" -V) at ${PYTHON}"
"$PYTHON" -m venv .venv
source .venv/bin/activate
pip install -r scripts/requirements.txt
- name: Create Aurora Resources with Blue/Green Deployment
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/release_draft.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ jobs:
- name: Install Build Dependencies
run: |
brew update && brew upgrade && brew cleanup
brew install cmake unixodbc curl openssl zlib icu4c
brew install cmake unixodbc curl openssl@3 zlib icu4c
- name: Resolve AWS SDK version
id: aws-sdk-version
shell: bash
Expand All @@ -109,7 +109,7 @@ jobs:
./scripts/compile_aws_sdk_unix.sh ${{env.BUILD_CONFIG}}
- name: Build aws-advanced-odbc-wrapper
run: |
cmake -S . -B build -DCMAKE_BUILD_TYPE=${{env.BUILD_CONFIG}} -DUNIT_TEST=OFF
cmake -S . -B build -DCMAKE_BUILD_TYPE=${{env.BUILD_CONFIG}} -DBUILD_UNIT_TEST=OFF
cmake --build build
ls ./build/driver/
- name: Check Artifacts
Expand Down Expand Up @@ -179,7 +179,7 @@ jobs:
./scripts/compile_aws_sdk_unix.sh ${{env.BUILD_CONFIG}}
- name: Build aws-advanced-odbc-wrapper
run: |
cmake -S . -B build -DCMAKE_BUILD_TYPE=${{env.BUILD_CONFIG}} -DUNIT_TEST=OFF
cmake -S . -B build -DCMAKE_BUILD_TYPE=${{env.BUILD_CONFIG}} -DBUILD_UNIT_TEST=OFF
cmake --build build
ls ./build/driver/
- name: Get Ansi Driver Hash
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/static_analysis.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
- name: Install Build Dependencies
run: |
brew update && brew upgrade && brew cleanup
brew install cmake unixodbc curl openssl zlib cppcheck llvm icu4c
brew install cmake unixodbc curl openssl@3 zlib cppcheck llvm icu4c
python3 -m venv ./venv
source ./venv/bin/activate
python3 -m pip install CodeChecker==${{ env.CODECHECKER_VERSION }}
Expand Down Expand Up @@ -89,7 +89,7 @@ jobs:
- name: Install Build Dependencies
run: |
brew update && brew upgrade && brew cleanup
brew install cmake unixodbc curl openssl zlib cppcheck llvm icu4c
brew install cmake unixodbc curl openssl@3 zlib cppcheck llvm icu4c
python3 -m venv ./venv
source ./venv/bin/activate
python3 -m pip install CodeChecker==${{ env.CODECHECKER_VERSION }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/unit_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ jobs:
- name: Install Build Dependencies
run: |
brew update && brew upgrade && brew cleanup
brew install cmake unixodbc postgresql curl openssl zlib icu4c
brew install cmake unixodbc postgresql curl openssl@3 zlib icu4c
- name: Resolve AWS SDK version
id: aws-sdk-version
shell: bash
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
**/build**/
aws_sdk/*
*.def
driver/driver_version.h
**report**

# Test Files
Expand Down
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,15 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Fixed

- Debug builds no longer log the generated IAM authentication token [(PR #167)](https://github.com/aws/aws-advanced-odbc-wrapper/pull/167)
- `SQLGetInfo(SQL_DRIVER_VER)` now reports the real wrapper version instead of a hardcoded `1.0.0`
- Discovery of the `odbcinst`/`iodbcinst` library on macOS and Linux, which ignored the configured `ODBC_ROOT`
- The ANSI static library is now compiled with `SQL_NOUNICODEMAP`, matching the ANSI shared library

## [1.3.1] - 2026-09-08

### Fixed
Expand Down
75 changes: 40 additions & 35 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ set(WRAPPER_VERSION "1.3.1")
set(BUILD_ANSI OFF CACHE BOOL "Toggle to build with Ansi Wrapper")
set(BUILD_UNICODE OFF CACHE BOOL "Toggle to build with Unicode Wrapper")
set(BUILD_UNIT_TEST OFF CACHE BOOL "Toggle to build Unit Tests")
set(WITH_IODBC OFF CACHE BOOL "Build with iODBC")
set(USE_ASAN OFF CACHE BOOL "Toggle to use Address Sanitizer")
set(WITH_IODBC OFF CACHE BOOL "Toggle to build with iODBC, else unixODBC")

# External Tools ---------------------------------------------------------------------------------------------
include(FetchContent)
Expand Down Expand Up @@ -70,15 +71,19 @@ else(WIN32)
NAME
iodbcinst
HINTS
ODBC_ROOT
${ODBC_ROOT}
PATH_SUFFIXES
lib
REQUIRED
)
else() # unixODBC
find_library(ODBC_INST_LIB
NAME
odbcinst
HINTS
ODBC_ROOT
${ODBC_ROOT}
PATH_SUFFIXES
lib
REQUIRED
)
endif()
Expand Down Expand Up @@ -129,45 +134,45 @@ if(BUILD_UNIT_TEST)
endif()

# CPACK ------------------------------------------------------------------------------------------------------
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "AWS Advanced ODBC Wrapper")
SET(CPACK_PACKAGE_NAME "aws-advanced-odbc-wrapper")
SET(CPACK_PACKAGE_VENDOR "Amazon")
SET(CPACK_PACKAGE_VERSION "${WRAPPER_VERSION}")

SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt")
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.txt")
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${WRAPPER_VERSION}-src")

IF(APPLE)
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}-${WRAPPER_VERSION}-macos")
SET(CPACK_GENERATOR "productbuild")
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
SET(CPACK_PACKAGING_INSTALL_PREFIX "/usr/local/${CPACK_PACKAGE_FILE_NAME}")

CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/scripts/macOS/Welcome.html.in ${CMAKE_SOURCE_DIR}/scripts/macOS/Welcome.html @ONLY)
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/scripts/macOS/ReadMe.html.in ${CMAKE_SOURCE_DIR}/scripts/macOS/ReadMe.html @ONLY)
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/scripts/macOS/postflight.sh.in ${CMAKE_SOURCE_DIR}/scripts/macOS/postflight.sh @ONLY)
SET(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_SOURCE_DIR}/scripts/macOS/Welcome.html")
SET(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/scripts/macOS/ReadMe.html")
SET(CPACK_POSTFLIGHT_WRAPPER_SCRIPT "${CMAKE_SOURCE_DIR}/scripts/macOS/postflight.sh")

CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/scripts/macOS/Info.plist.in ${CMAKE_BINARY_DIR}/Info.plist @ONLY)
SET(CPACK_PRODUCTBUILD_IDENTIFIER "com.amazon.AwsAdvancedOdbcWrapper")
ENDIF()
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "AWS Advanced ODBC Wrapper")
set(CPACK_PACKAGE_NAME "aws-advanced-odbc-wrapper")
set(CPACK_PACKAGE_VENDOR "Amazon")
set(CPACK_PACKAGE_VERSION "${WRAPPER_VERSION}")

set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.txt")
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${WRAPPER_VERSION}-src")

if(APPLE)
set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}-${WRAPPER_VERSION}-macos")
set(CPACK_GENERATOR "productbuild")
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
set(CPACK_PACKAGING_INSTALL_PREFIX "/usr/local/${CPACK_PACKAGE_FILE_NAME}")

configure_file(${CMAKE_SOURCE_DIR}/scripts/macOS/Welcome.html.in ${CMAKE_SOURCE_DIR}/scripts/macOS/Welcome.html @ONLY)
configure_file(${CMAKE_SOURCE_DIR}/scripts/macOS/ReadMe.html.in ${CMAKE_SOURCE_DIR}/scripts/macOS/ReadMe.html @ONLY)
configure_file(${CMAKE_SOURCE_DIR}/scripts/macOS/postflight.sh.in ${CMAKE_SOURCE_DIR}/scripts/macOS/postflight.sh @ONLY)
set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_SOURCE_DIR}/scripts/macOS/Welcome.html")
set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/scripts/macOS/ReadMe.html")
set(CPACK_POSTFLIGHT_WRAPPER_SCRIPT "${CMAKE_SOURCE_DIR}/scripts/macOS/postflight.sh")

configure_file(${CMAKE_SOURCE_DIR}/scripts/macOS/Info.plist.in ${CMAKE_BINARY_DIR}/Info.plist @ONLY)
set(CPACK_PRODUCTBUILD_IDENTIFIER "com.amazon.AwsAdvancedOdbcWrapper")
endif()

set(CPACK_COMPONENTS_ALL "Wrapper")

INSTALL(FILES LICENSE.txt COMPONENT Wrapper DESTINATION .)
INSTALL(FILES README.txt COMPONENT Wrapper DESTINATION .)
IF(APPLE)
INSTALL(FILES "${CMAKE_BINARY_DIR}/Info.plist" COMPONENT Wrapper DESTINATION .)
ENDIF()
INSTALL(
install(FILES LICENSE.txt COMPONENT Wrapper DESTINATION .)
install(FILES README.txt COMPONENT Wrapper DESTINATION .)
if(APPLE)
install(FILES "${CMAKE_BINARY_DIR}/Info.plist" COMPONENT Wrapper DESTINATION .)
endif()
install(
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/build/driver/"
DESTINATION "./lib"
COMPONENT Wrapper
FILES_MATCHING PATTERN "*.dylib"
PATTERN "CMakeFiles" EXCLUDE
)

include (CPack)
include(CPack)
13 changes: 6 additions & 7 deletions docs/development-guide/development-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ You can also build the installer via the following:
```
2. Install build dependencies
```
brew install cmake curl openssl unixodbc zlib icu4c
brew install cmake curl openssl@3 unixodbc zlib icu4c
```
3. Build AWS SDK for C++
```
Expand All @@ -70,7 +70,7 @@ You can also build the installer via the following:

```
# In Repository Root
cmake -S driver -B build -DBUILD_UNICODE=<ON/OFF> -DBUILD_ANSI=<ON/OFF> -DBUILD_UNIT_TEST=<ON/OFF> -DCMAKE_BUILD_TYPE=<Release/Debug>
cmake -S . -B build -DBUILD_UNICODE=<ON/OFF> -DBUILD_ANSI=<ON/OFF> -DBUILD_UNIT_TEST=<ON/OFF> -DCMAKE_BUILD_TYPE=<Release/Debug>
cmake --build build
```

Expand Down Expand Up @@ -101,7 +101,7 @@ cpack

```
# In Repository Root
cmake -S driver -B build -DBUILD_UNICODE=<ON/OFF> -DBUILD_ANSI=<ON/OFF> -DBUILD_UNIT_TEST=<ON/OFF> -DCMAKE_BUILD_TYPE=<Release/Debug>
cmake -S . -B build -DBUILD_UNICODE=<ON/OFF> -DBUILD_ANSI=<ON/OFF> -DBUILD_UNIT_TEST=<ON/OFF> -DCMAKE_BUILD_TYPE=<Release/Debug>
cmake --build build
```

Expand All @@ -110,7 +110,7 @@ cmake --build build

There are multiple types of test, each type will be in its own folder under `test`.

The unit tests is built along side the driver by passing in the CMake flag `-DUNITTEST` and can be ran manually from the build folder
The unit tests is built along side the driver by passing in the CMake flag `-DBUILD_UNIT_TEST=ON` and can be ran manually from the build folder
e.g.
Note: Windows will build binaries into a subfolder of the build config while Unix does not.

Expand All @@ -124,13 +124,12 @@ The following will go over how to build compatibility tests, in particular, how

```
cmake -S test/compatibility -B test_compatibility \
-DUNICODE=<ON/OFF> \
-DBUILD_UNICODE=<ON/OFF> \
-DCMAKE_BUILD_TYPE=<Release/Debug> \
-DTEST_SERVER="<Test Database Host>" \
-DTEST_PORT="<Test Database Port>" \
-DTEST_DATABASE="<Test Database>" \
-DTEST_DRIVER_PATH="<Path to AWS Advanced ODBC Wrapper>" \
-DBASE_PG_DRIVER_PATH="<Path to PostgreSQL Driver>"
-DPG_DRIVER_PATH="<Path to PostgreSQL Driver>"

cmake --build test_compatibility
```
Expand Down
Loading
Loading