Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
9c793e2
feat(odbc source): add ODBC source for scheduled database queries
powerumc Apr 24, 2025
9e3f5d7
test(odbc source): Integration tests
powerumc Aug 25, 2025
f383c9f
test(odbc source): prepare Dockerfile
powerumc Sep 1, 2025
50fac18
feat(odbc source): implement ODBC metrics for event tracking
powerumc Sep 16, 2025
fa4502d
test(odbc source): integration test configuration
powerumc Sep 16, 2025
3090a4e
refactor(odbc source): introduce graceful shutdown and improve schedu…
powerumc Sep 16, 2025
e13b1a1
chore(odbc source): clean up formatting
powerumc Sep 16, 2025
f39ee28
test(odbc source): ODBC init_params, tracking_columns, last_run_metad…
powerumc Sep 21, 2025
831eb45
fix(odbc source): fix data type handling and comments
powerumc Sep 24, 2025
64fda4e
test(odbc source): number types integration test
powerumc Sep 24, 2025
e9037aa
test(odbc source): string types, other types integration test
powerumc Sep 28, 2025
b88c42e
chore(odbc source): clean up formatting
powerumc Sep 28, 2025
aef4174
feat(odbc source): add support for PostgreSQL and update integration …
powerumc Sep 29, 2025
32a566d
fix(odbc source): refactor test setup for consistency
powerumc Oct 4, 2025
8af2a13
test(odbc source): add integration test for timestamp columns
powerumc Oct 4, 2025
be3e3ef
docs(odbc source): add documentation for ODBC data source configuration
powerumc Oct 18, 2025
5dae7a7
Merge branch 'master' into powerumc/odbc-source
powerumc Oct 18, 2025
19cf895
test(odbc source): add external network configuration for MySQL and P…
powerumc Oct 18, 2025
15d4436
docs(odbc source): update source code documents.
powerumc Oct 21, 2025
1a3efcb
docs(odbc source): add comprehensive CUE configuration and documentat…
powerumc Oct 21, 2025
40d5795
chore(odbc source): source code formatting
powerumc Oct 21, 2025
c74a12a
refactor(odbc source): executes ODBC query processing with result tra…
powerumc Oct 21, 2025
cea0073
chore(deps): update odbc-api dependency to version 19.1.0
powerumc Oct 22, 2025
bb62426
chore(odbc source): update LICENSE-3rdparty.csv
powerumc Oct 22, 2025
6af628d
docs(odbc source): improve documentation clarity and update examples …
powerumc Oct 22, 2025
f4830ed
Merge branch 'master' into powerumc/odbc-source
powerumc Oct 22, 2025
3cb3d8f
chore(odbc source): update fmt and clippy
powerumc Oct 22, 2025
2a12364
chore(vdev): apply vdev rust check fixes
powerumc Oct 22, 2025
0b9c191
chore(vdev): apply vdev rust check fixes
powerumc Oct 22, 2025
ffc2a22
docs(odbc source): apply suggestion to odbc.cue
powerumc Oct 22, 2025
4c2e19b
docs(odbc source): apply suggestion to odbc.cue
powerumc Oct 22, 2025
ff66be0
docs(odbc source): apply suggestion to odbc.cue
powerumc Oct 22, 2025
af3fd51
docs(odbc source): add changelog
powerumc Oct 27, 2025
e341811
Merge branch 'master' into powerumc/odbc-source
powerumc Oct 27, 2025
b266337
chore(odbc source): update spelling expect.txt and fix spell check fa…
powerumc Oct 28, 2025
5e26f6e
Merge branch 'master' into powerumc/odbc-source
powerumc Oct 29, 2025
eae2e87
Merge branch 'master' into powerumc/odbc-source
powerumc Oct 30, 2025
58bdd2f
test(e2e): add ODBC drivers to Dockerfile
powerumc Oct 30, 2025
c6d5e38
Merge branch 'master' into powerumc/odbc-source
powerumc Nov 2, 2025
816e056
Merge branch 'master' into powerumc/odbc-source
powerumc Nov 13, 2025
723d127
fix(odbc source): update ClosedError import path and fix changelog ne…
powerumc Nov 13, 2025
02eb982
fix(odbc source): add ODBC metrics feature support
powerumc Nov 13, 2025
49d8d7d
refactor(odbc source): extract `OdbcConfig` into `config.rs` file
powerumc Nov 13, 2025
a44ab52
refactor(odbc source): move `OdbcSchedule` implementation to `schedul…
powerumc Nov 13, 2025
f832f30
refactor(odbc source): move client functions and types to client.rs
powerumc Nov 13, 2025
dc85af0
test(odbc source): move the integration test file and fix the import
powerumc Nov 13, 2025
d0de50d
docs(odbc source): update sources/generated/odbc.cue
powerumc Nov 13, 2025
a2cba35
Merge branch 'master' into powerumc/odbc-source
powerumc Nov 14, 2025
ae48f96
Merge branch 'master' into powerumc/odbc-source
powerumc Nov 16, 2025
b599b75
fix(docker): add unixodbc-dev to Dockerfile dependencies
powerumc Nov 16, 2025
c2a48f4
Merge branch 'master' into powerumc/odbc-source
powerumc Nov 20, 2025
b602ac4
chore(dependencies): update dependencies in `Cargo.lock`
powerumc Nov 20, 2025
3088a83
fix(odbc source): update error handling to use SendError instead of C…
powerumc Nov 20, 2025
7353a02
Merge branch 'master' into powerumc/odbc-source
powerumc Nov 24, 2025
a196bf2
Merge branch 'master' into powerumc/odbc-source
powerumc Dec 1, 2025
b8b1b87
Merge branch 'master' into powerumc/odbc-source
powerumc Dec 5, 2025
0e08ab7
Merge branch 'master' into powerumc/odbc-source
powerumc Dec 12, 2025
cf4370f
Merge branch 'master' into powerumc/odbc-source
powerumc Dec 18, 2025
96ab321
fix(odbc_metrics): add NamedInternalEvent derive to event structs
powerumc Dec 19, 2025
70023b1
chore(odbc source): code formatting
powerumc Dec 19, 2025
d23f4dc
Merge branch 'master' into powerumc/odbc-source
powerumc Dec 28, 2025
bde9f88
Merge branch 'vectordotdev:master' into powerumc/odbc-source
powerumc Jan 7, 2026
130abe3
chore(ci): add odbc-mariadb and odbc-postgresql to CI workflows
powerumc Jan 7, 2026
ffd0976
Merge branch 'master' into powerumc/odbc-source
powerumc Jan 14, 2026
9360370
Merge branch 'master' into powerumc/odbc-source
powerumc Mar 16, 2026
980edad
Merge branch 'master' into powerumc/odbc-source
pront Mar 19, 2026
d579eee
fix(odbc source): correct default function for `odbc_max_str_limit` c…
powerumc Mar 22, 2026
3d75710
fix(odbc source): improve handling of statement file reading
powerumc Mar 22, 2026
beef419
fix(odbc source): update datetime parsing to handle local timezones
powerumc Mar 22, 2026
848bc9b
fix(odbc source): update comment `schedule` field and error log.
powerumc Mar 22, 2026
21c8189
Merge branch 'vectordotdev:master' into powerumc/odbc-source
powerumc Mar 23, 2026
18a311c
Merge branch 'master' into powerumc/odbc-source
powerumc Mar 26, 2026
333e537
Merge branch 'master' into powerumc/odbc-source
powerumc Mar 26, 2026
5e68722
Merge branch 'master' into powerumc/odbc-source
powerumc Apr 5, 2026
7679c48
fix(odbc source): use log schema paths for inserting timestamp
powerumc Apr 6, 2026
5013881
chore(ci): add odbc-mariadb and odbc-postgresql to changes.yml
powerumc Apr 6, 2026
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
9 changes: 7 additions & 2 deletions .github/actions/spelling/expect.txt
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,6 @@ Jolokia
JSONAs
jsonify
jsonlines
jszwedko
kebabcase
kernelmode
keyclock
Expand All @@ -310,6 +309,7 @@ landingpad
leebenson
leveldb
libcrypto
libmaodbc
librdkafka
libvector
lld
Expand All @@ -333,6 +333,7 @@ majorly
makecache
Makefiles
mallocs
mariadb
markdownify
marketo
maxbin
Expand Down Expand Up @@ -406,6 +407,7 @@ nullishness
NUMA
numbackends
NXRR
odbcinst
OIDC
OKD
oneof
Expand Down Expand Up @@ -535,6 +537,9 @@ spencergilbert
spinlock
SPOF
spog
SQLLEN
SQLSETPOSIROW
SQLULEN
sqlx
srcaddr
srcport
Expand Down Expand Up @@ -618,6 +623,7 @@ underutilizing
unevictable
unflatten
unioning
unixodbc
unnested
upgradable
urql
Expand Down Expand Up @@ -678,5 +684,4 @@ zieme
zoog
zork
zorp
zsherman
zulip
8 changes: 8 additions & 0 deletions .github/workflows/changes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,10 @@ on:
value: ${{ jobs.int_tests.outputs.nats }}
nginx:
value: ${{ jobs.int_tests.outputs.nginx }}
odbc-mariadb:
value: ${{ jobs.int_tests.outputs.odbc-mariadb }}
odbc-postgresql:
value: ${{ jobs.int_tests.outputs.odbc-postgresql }}
opentelemetry:
value: ${{ jobs.int_tests.outputs.opentelemetry }}
postgres:
Expand Down Expand Up @@ -337,6 +341,8 @@ jobs:
mqtt: ${{ steps.filter.outputs.mqtt }}
nats: ${{ steps.filter.outputs.nats }}
nginx: ${{ steps.filter.outputs.nginx }}
odbc-mariadb: ${{ steps.filter.outputs.odbc-mariadb }}
odbc-postgresql: ${{ steps.filter.outputs.odbc-postgresql }}
Comment on lines +344 to +345
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add ODBC entries to int-test change-detection JSON

These new ODBC outputs are exposed, but the int_tests "Detect changes and generate JSON" payload in the same workflow still omits odbc-mariadb/odbc-postgresql. In merge-queue runs, integration.yml decides matrix execution from that JSON, so both ODBC services resolve to false and can be skipped even when ODBC files changed.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added odbc-mariadb and odbc-postgresql to changes.yml 5013881

opentelemetry: ${{ steps.filter.outputs.opentelemetry }}
postgres: ${{ steps.filter.outputs.postgres }}
prometheus: ${{ steps.filter.outputs.prometheus }}
Expand Down Expand Up @@ -403,6 +409,8 @@ jobs:
"mqtt": ${{ steps.filter.outputs.mqtt }},
"nats": ${{ steps.filter.outputs.nats }},
"nginx": ${{ steps.filter.outputs.nginx }},
"odbc-mariadb": ${{ steps.filter.outputs.odbc-mariadb }}
"odbc-postgresql": ${{ steps.filter.outputs.odbc-postgresql }}
"opentelemetry": ${{ steps.filter.outputs.opentelemetry }},
"postgres": ${{ steps.filter.outputs.postgres }},
"prometheus": ${{ steps.filter.outputs.prometheus }},
Expand Down
127 changes: 68 additions & 59 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ on:
workflow_dispatch:
pull_request:
merge_group:
types: [checks_requested]
types: [ checks_requested ]

concurrency:
# `github.event.number` exists for pull requests, otherwise fall back to SHA for merge queue
Expand Down Expand Up @@ -58,7 +58,7 @@ jobs:
needs.changes.outputs.integration-yml == 'true' ||
needs.changes.outputs.int-tests-any == 'true' ||
needs.changes.outputs.e2e-tests-any == 'true')))
}}
}}
uses: ./.github/workflows/build-test-runner.yml
with:
commit_sha: ${{ github.sha }}
Expand Down Expand Up @@ -105,6 +105,8 @@ jobs:
"mongodb",
"nats",
"nginx",
"odbc-mariadb",
"odbc-postgresql",
"opentelemetry",
"postgres",
"prometheus",
Expand All @@ -114,56 +116,60 @@ jobs:
]
timeout-minutes: 90
steps:
- name: Download JSON artifact from changes.yml
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
if: github.event_name == 'merge_group'
with:
name: int_tests_changes

- name: Determine if test should run
id: check
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" || \
"${{ needs.changes.outputs.dependencies }}" == "true" || \
"${{ needs.changes.outputs.integration-yml }}" == "true" ]]; then
echo "should_run=true" >> "$GITHUB_OUTPUT"
elif [[ "${{ needs.changes.outputs.website_only }}" == "true" ]]; then
echo "should_run=false" >> "$GITHUB_OUTPUT"
elif [[ -f int_tests_changes.json ]]; then
should_run=$(jq -r '."${{ matrix.service }}" // false' int_tests_changes.json)
echo "should_run=${should_run}" >> "$GITHUB_OUTPUT"
else
echo "should_run=false" >> "$GITHUB_OUTPUT"
fi

- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
if: steps.check.outputs.should_run == 'true'
with:
submodules: "recursive"

- uses: ./.github/actions/setup
if: steps.check.outputs.should_run == 'true'
with:
vdev: true
mold: false
cargo-cache: false
datadog-ci: true

- name: Download JSON artifact from changes.yml
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
if: github.event_name == 'merge_group'
with:
name: int_tests_changes

- name: Pull test runner image
if: steps.check.outputs.should_run == 'true'
uses: ./.github/actions/pull-test-runner
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
commit_sha: ${{ github.sha }}

- name: Run Integration Tests for ${{ matrix.service }}
if: steps.check.outputs.should_run == 'true'
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
with:
timeout_minutes: 30
max_attempts: 3
command: |
bash scripts/run-integration-test.sh int ${{ matrix.service }}
if [[ -f int_tests_changes.json ]]; then
# Parse the JSON and check if the specific integration test should run.
should_run=$(jq -r '."${{ matrix.service }}" // false' int_tests_changes.json)
else
# The `changes` job did not run (manual run) or the file is missing, default to false.
should_run=false
fi

if [[ "${{ needs.changes.outputs.website_only }}" == "true" ]]; then
echo "Skipping ${{ matrix.service }} test since only website changes were detected"
exit 0
fi

# Check if any of the three conditions is true
if [[ "${{ github.event_name }}" == "workflow_dispatch" || \
"${{ needs.changes.outputs.dependencies }}" == "true" || \
"${{ needs.changes.outputs.integration-yml }}" == "true" || \
"$should_run" == "true" ]]; then
# Only install dep if test runs
bash scripts/environment/prepare.sh --modules=datadog-ci
echo "Running test for ${{ matrix.service }}"
bash scripts/run-integration-test.sh int ${{ matrix.service }}
else
echo "Skipping ${{ matrix.service }} test as the value is false or conditions not met."
fi


e2e-tests:
runs-on: ubuntu-24.04-8core
Expand All @@ -174,60 +180,63 @@ jobs:
(github.event_name == 'merge_group' || github.event_name == 'workflow_dispatch') }}
strategy:
matrix:
service: ["datadog-logs", "datadog-metrics", "opentelemetry-logs", "opentelemetry-metrics"]
service: [ "datadog-logs", "datadog-metrics", "opentelemetry-logs", "opentelemetry-metrics" ]
timeout-minutes: 90

steps:
- name: Download JSON artifact from changes.yml
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
if: github.event_name == 'merge_group'
with:
name: e2e_tests_changes

- name: Determine if test should run
id: check
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" || \
"${{ needs.changes.outputs.dependencies }}" == "true" || \
"${{ needs.changes.outputs.integration-yml }}" == "true" ]]; then
echo "should_run=true" >> "$GITHUB_OUTPUT"
elif [[ "${{ needs.changes.outputs.website_only }}" == "true" ]]; then
echo "should_run=false" >> "$GITHUB_OUTPUT"
elif [[ -f e2e_tests_changes.json ]]; then
should_run=$(jq -r '."${{ matrix.service }}" // false' e2e_tests_changes.json)
echo "should_run=${should_run}" >> "$GITHUB_OUTPUT"
else
echo "should_run=false" >> "$GITHUB_OUTPUT"
fi

- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
if: steps.check.outputs.should_run == 'true'
with:
submodules: "recursive"

- uses: ./.github/actions/setup
if: steps.check.outputs.should_run == 'true'
with:
vdev: true
mold: false
cargo-cache: false
datadog-ci: true

- name: Download JSON artifact from changes.yml
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
if: github.event_name == 'merge_group'
with:
name: e2e_tests_changes

- name: Pull test runner image
if: steps.check.outputs.should_run == 'true'
uses: ./.github/actions/pull-test-runner
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
commit_sha: ${{ github.sha }}

- name: Run E2E Tests for ${{ matrix.service }}
if: steps.check.outputs.should_run == 'true'
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
with:
timeout_minutes: 30
max_attempts: 3
command: |
bash scripts/run-integration-test.sh e2e ${{ matrix.service }}
if [[ -f e2e_tests_changes.json ]]; then
# Parse the JSON and check if the specific e2e test should run.
should_run=$(jq -r '."${{ matrix.service }}" // false' e2e_tests_changes.json)
else
# The `changes` job did not run (manual run) or the file is missing, default to false.
should_run=false
fi

if [[ "${{ needs.changes.outputs.website_only }}" == "true" ]]; then
echo "Skipping ${{ matrix.service }} test since only website changes were detected"
exit 0
fi

# Check if any of the three conditions is true
if [[ "${{ github.event_name }}" == "workflow_dispatch" || \
"${{ needs.changes.outputs.dependencies }}" == "true" || \
"${{ needs.changes.outputs.integration-yml }}" == "true" ]] || \
"$should_run" == "true" ]]; then
# Only install dep if test runs
bash scripts/environment/prepare.sh --modules=datadog-ci
echo "Running test for ${{ matrix.service }}"
bash scripts/run-integration-test.sh e2e ${{ matrix.service }}
else
echo "Skipping ${{ matrix.service }} test as the value is false or conditions not met."
fi

integration-test-suite:
name: Integration Test Suite
Expand Down
Loading
Loading