Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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/golangci-lint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
go-version: ${{ matrix.go }}

- name: Perform linting
uses: golangci/golangci-lint-action@v8
uses: golangci/golangci-lint-action@v9
with:
args: --config=${{ github.workspace }}/.github/linters/.golangci.yaml
only-new-issues: false
Expand Down
4 changes: 2 additions & 2 deletions bearer.ignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"d77cfa512728249f637fbf096fae3c7a_0": {
"author": "docktermj",
"false_positive": false,
"ignored_at": "2025-05-20T16:58:57Z"
"false_positive": true,
"ignored_at": "2025-11-10T22:19:10Z"
}
}
18 changes: 12 additions & 6 deletions connector/connector.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,11 +117,13 @@ func createPostgresqlConnector(ctx context.Context, parsedURL *url.URL) (driver.
configurationMap["search_path"] = searchPath[0]
}

configuration := ""
var configurationBuilder strings.Builder
for key, value := range configurationMap {
configuration += fmt.Sprintf("%s=%s ", key, value)
configurationBuilder.WriteString(fmt.Sprintf("%s=%s ", key, value))
}

configuration := configurationBuilder.String()

result, err := connectorpostgresql.NewConnector(ctx, configuration)

return result, wraperror.Errorf(err, wraperror.NoMessage)
Expand Down Expand Up @@ -221,11 +223,13 @@ func createMssqlConnector(ctx context.Context, parsedURL *url.URL) (driver.Conne
}
}

configuration := ""
var configurationBuilder strings.Builder
for key, value := range configurationMap {
configuration += fmt.Sprintf("%s=%s;", key, value)
configurationBuilder.WriteString(fmt.Sprintf("%s=%s;", key, value))
}

configuration := configurationBuilder.String()

result, err := connectormssql.NewConnector(ctx, configuration)

return result, wraperror.Errorf(err, wraperror.NoMessage)
Expand Down Expand Up @@ -259,11 +263,13 @@ func createOciConnector(ctx context.Context, parsedURL *url.URL) (driver.Connect
configurationMap[key] = value[0]
}

configuration := ""
var configurationBuilder strings.Builder
for key, value := range configurationMap {
configuration += fmt.Sprintf("%s=%s ", key, value)
configurationBuilder.WriteString(fmt.Sprintf("%s=%s ", key, value))
}

configuration := configurationBuilder.String()

result, err := connectororacle.NewConnector(ctx, configuration)

return result, wraperror.Errorf(err, wraperror.NoMessage)
Expand Down
5 changes: 4 additions & 1 deletion connectormssql/connectormssql_examples_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@ func ExampleNewConnector() {
databaseConnector, err := connectormssql.NewConnector(ctx, configuration)
failOnError(err)

_ = databaseConnector // Faux use of databaseConnector
connection, err := databaseConnector.Connect(ctx)
failOnError(err)

_ = connection // Faux use of database connection.
// Output:
}

Expand Down
5 changes: 4 additions & 1 deletion connectormysql/connectormysql_examples_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,10 @@ func ExampleNewConnector() {
databaseConnector, err := connectormysql.NewConnector(ctx, configuration)
failOnError(err)

_ = databaseConnector // Faux use of databaseConnector
connection, err := databaseConnector.Connect(ctx)
failOnError(err)

_ = connection // Faux use of database connection.
// Output:
}

Expand Down
5 changes: 4 additions & 1 deletion connectororacle/connectororacle_examples_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@ func ExampleNewConnector() {
databaseConnector, err := connectororacle.NewConnector(ctx, configuration)
failOnError(err)

_ = databaseConnector // Faux use of databaseConnector
connection, err := databaseConnector.Connect(ctx)
failOnError(err)

_ = connection // Faux use of database connection.
// Output:
}

Expand Down
5 changes: 4 additions & 1 deletion connectorpostgresql/connectorpostgresql_examples_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@ func ExampleNewConnector() {
databaseConnector, err := connectorpostgresql.NewConnector(ctx, configuration)
failOnError(err)

_ = databaseConnector // Faux use of databaseConnector
connection, err := databaseConnector.Connect(ctx)
failOnError(err)

_ = connection // Faux use of database connection.
// Output:
}

Expand Down
10 changes: 8 additions & 2 deletions connectorsqlite/connectorsqlite_examples_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@ func ExampleNewConnector() {
databaseConnector, err := connectorsqlite.NewConnector(ctx, configuration)
failOnError(err)

_ = databaseConnector // Faux use of databaseConnector
connection, err := databaseConnector.Connect(ctx)
failOnError(err)

_ = connection // Faux use of database connection.
// Output:
}

Expand All @@ -29,7 +32,10 @@ func ExampleNewConnector_inmemory() {
databaseConnector, err := connectorsqlite.NewConnector(ctx, configuration)
failOnError(err)

_ = databaseConnector // Faux use of databaseConnector
connection, err := databaseConnector.Connect(ctx)
failOnError(err)

_ = connection // Faux use of database connection.
// Output:
}

Expand Down
83 changes: 41 additions & 42 deletions docker-compose.test.yaml
Original file line number Diff line number Diff line change
@@ -1,79 +1,75 @@
version: "3"

services:

# makefile makes a metadata file for pgadmin.

makefile:
container_name: senzing-makefile
command:
- sh
- -c
- mkdir /output/postgres_postgres.com; echo $${FILE_CONTENTS} >> /output/postgres_postgres.com/servers.json
- mkdir /output/postgres_postgres.com || true; echo $${FILE_CONTENTS} > /output/postgres_postgres.com/servers.json;
environment:
FILE_CONTENTS: >-
{
"Servers": {
"1": {
"Name": "senzing",
"Group": "Servers",
"Host": "senzing-postgres",
"Port": 5432,
"MaintenanceDB": "postgres",
"Username": "postgres",
"SSLMode": "prefer",
"SSLCert": "<STORAGE_DIR>/.postgresql/postgresql.crt",
"SSLKey": "<STORAGE_DIR>/.postgresql/postgresql.key",
"SSLCompression": 0,
"Timeout": 10,
"UseSSHTunnel": 0,
"TunnelPort": "22",
"TunnelAuthentication": 0
"Servers": {
"1": {
"Name": "senzing",
"Group": "Servers",
"Host": "senzing-postgres",
"Port": 5432,
"MaintenanceDB": "postgres",
"Username": "postgres",
"UseSSHTunnel": 0,
"TunnelPort": "22",
"TunnelAuthentication": 0,
"KerberosAuthentication": false,
"ConnectionParameters": {
"sslmode": "prefer",
"connect_timeout": 10,
"sslcert": "<STORAGE_DIR>/.postgresql/postgresql.crt",
"sslkey": "<STORAGE_DIR>/.postgresql/postgresql.key"
}
}
}
}
}
image: busybox:${SENZING_DOCKER_IMAGE_VERSION_BUSYBOX:-latest}
networks:
- senzing
read_only: true
user: ${SENZING_UID:-1001}:${SENZING_GID:-1001}
user: ${SENZING_UID:-0}:${SENZING_GID:-0}
volumes:
- /tmp:/output
- pgadmin-volume:/output

postgres:
container_name: senzing-postgres
environment:
# See https://github.com/bitnami/bitnami-docker-postgresql#configuration
POSTGRESQL_DATABASE: G2
POSTGRESQL_PASSWORD: senzing
POSTGRESQL_POSTGRES_PASSWORD: postgres
POSTGRESQL_USERNAME: senzing
# See https://hub.docker.com/_/postgres "Environment Variables"
PGDATA: /var/lib/postgresql/data/pgdata
POSTGRES_DB: ${POSTGRES_DB:-G2}
POSTGRES_PASSWORD: ${POSTGRESQL_POSTGRES_PASSWORD:-postgres}
healthcheck:
test:
[
"CMD-SHELL",
"pg_isready -U ${POSTGRES_USERNAME:-postgres}"
]
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USERNAME:-postgres}"]
interval: 10s
timeout: 5s
retries: 5
image: bitnami/postgresql:${SENZING_DOCKER_IMAGE_VERSION_BITNAMI_POSTGRESQL:-latest}
image: postgres:${SENZING_DOCKER_IMAGE_VERSION_POSTGRES:-latest}
networks:
- senzing
ports:
- 5432:5432
restart: always
user: ${SENZING_UID:-0}:${SENZING_GID:-0}
volumes:
- postgres-volume:/var/lib/postgresql/data/pgdata

mysql:
container_name: senzing-mysql
environment:
# See https://hub.docker.com/_/mysql/ "Environment Variables"
MYSQL_DATABASE: G2
MYSQL_NATIVE_PASSWORD: "ON"
MYSQL_PASSWORD: mysql
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: mysql
image: bitnami/mysql:${SENZING_DOCKER_IMAGE_VERSION_BITNAMI_MYSQL:-latest}
image: mysql:${SENZING_DOCKER_IMAGE_VERSION_MYSQL:-latest}
networks:
- senzing
ports:
Expand All @@ -87,7 +83,7 @@ services:
ACCEPT_EULA: Y
MSSQL_PID: Developer
MSSQL_SA_PASSWORD: Passw0rd
image: mcr.microsoft.com/mssql/server:${SENZING_DOCKER_IMAGE_VERSION_MSSQL_SERVER:-latest}
image: mcr.microsoft.com/mssql/server:${SENZING_DOCKER_IMAGE_VERSION_MSSQL_SERVER:-2025-latest}
networks:
- senzing
ports:
Expand All @@ -109,7 +105,7 @@ services:
container_name: senzing-mssql-create-database
depends_on:
- mssql
image: mcr.microsoft.com/mssql/server:${SENZING_DOCKER_IMAGE_VERSION_MSSQL_SERVER:-latest}
image: mcr.microsoft.com/mssql/server:${SENZING_DOCKER_IMAGE_VERSION_MSSQL_SERVER:-2025-latest}
networks:
- senzing
restart: on-failure
Expand Down Expand Up @@ -151,17 +147,17 @@ services:
- 9171:80
- 9172:443
restart: always
user: "${SENZING_UID:-1001}:0"
user: ${SENZING_UID:-0}:${SENZING_GID:-0}
volumes:
- /tmp:/var/lib/pgadmin/storage
- pgadmin-volume:/var/lib/pgadmin/storage

phpmyadmin:
container_name: senzing-phpmyadmin
depends_on:
- mysql
environment:
DATABASE_HOST: mysql
image: bitnami/phpmyadmin:${SENZING_DOCKER_IMAGE_VERSION_BITNAMI_PHPMYADMIN:-latest}
image: phpmyadmin:${SENZING_DOCKER_IMAGE_VERSION_PHPMYADMIN:-latest}
networks:
- senzing
ports:
Expand All @@ -179,7 +175,10 @@ services:
- 9177:8080
restart: always


networks:
senzing:
name: ${SENZING_DOCKER_NETWORK:-senzing-network}

volumes:
pgadmin-volume:
postgres-volume:
18 changes: 9 additions & 9 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -21,22 +21,22 @@ require (
filippo.io/edwards25519 v1.1.0 // indirect
github.com/VictoriaMetrics/easyproto v0.1.4 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/go-logfmt/logfmt v0.6.0 // indirect
github.com/go-logfmt/logfmt v0.6.1 // indirect
github.com/godror/knownpb v0.3.0 // indirect
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect
github.com/golang-sql/sqlexp v0.1.0 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/rogpeppe/go-internal v1.10.0 // indirect
golang.org/x/crypto v0.41.0 // indirect
golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b // indirect
golang.org/x/net v0.43.0 // indirect
golang.org/x/sys v0.35.0 // indirect
golang.org/x/text v0.28.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1 // indirect
google.golang.org/grpc v1.75.0 // indirect
google.golang.org/protobuf v1.36.8 // indirect
golang.org/x/crypto v0.43.0 // indirect
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 // indirect
golang.org/x/net v0.46.0 // indirect
golang.org/x/sys v0.38.0 // indirect
golang.org/x/text v0.30.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20251110190251-83f479183930 // indirect
google.golang.org/grpc v1.76.0 // indirect
google.golang.org/protobuf v1.36.10 // indirect
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
44 changes: 22 additions & 22 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ github.com/VictoriaMetrics/easyproto v0.1.4/go.mod h1:QlGlzaJnDfFd8Lk6Ci/fuLxfTo
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
github.com/go-logfmt/logfmt v0.6.1 h1:4hvbpePJKnIzH1B+8OR/JPbTx37NktoI9LE2QZBBkvE=
github.com/go-logfmt/logfmt v0.6.1/go.mod h1:EV2pOAQoZaT1ZXZbqDl5hrymndi4SY9ED9/z6CO0XAk=
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
Expand Down Expand Up @@ -92,28 +92,28 @@ go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFh
go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps=
go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4=
go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0=
golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b h1:DXr+pvt3nC887026GRP39Ej11UATqWDmWuS99x26cD0=
golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b/go.mod h1:4QTo5u+SEIbbKW1RacMZq1YEfOBqeXa19JeshGi+zc4=
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4=
golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw=
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04=
golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0=
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 h1:mgKeJMpvi0yx/sU5GsxQ7p6s2wtOnGAHZWCHUM4KGzY=
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546/go.mod h1:j/pmGrbnkbPtQfxEe5D0VQhZC6qKbfKifgD0oM7sR70=
golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4=
golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210=
golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug=
golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q=
golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss=
golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k=
golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM=
gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1 h1:pmJpJEvT846VzausCQ5d7KreSROcDqmO388w5YbnltA=
google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1/go.mod h1:GmFNa4BdJZ2a8G+wCe9Bg3wwThLrJun751XstdJt5Og=
google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4=
google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ=
google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc=
google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
google.golang.org/genproto/googleapis/rpc v0.0.0-20251110190251-83f479183930 h1:tK4fkUnnRhig9TsTp4otV1FxwBFYgbKUq1RY0V6KZ4U=
google.golang.org/genproto/googleapis/rpc v0.0.0-20251110190251-83f479183930/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk=
google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A=
google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c=
google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
Expand Down
Loading