Skip to content

Commit af10c3e

Browse files
authored
Fix bug where sync failed if database name contained spaces. (#16)
* Fix bug where sync failed if database name contained spaces. * Fix docker compase command on ubuntu latest. * Fix docker exec command. * Upgrade baton-sdk to v0.2.13 * Add health check for sql server. Use new path to sqlcmd that microsoft broke without telling anyone. See microsoft/mssql-docker#892
1 parent be843ec commit af10c3e

File tree

17 files changed

+147
-40
lines changed

17 files changed

+147
-40
lines changed

.github/workflows/ci.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,13 @@ jobs:
5555
- name: Checkout code
5656
uses: actions/checkout@v4
5757
- name: Run Docker Compose as a Daemon (to start sql server)
58-
run: docker-compose -f ./docker-compose.yml up --detach
58+
run: docker compose -f ./docker-compose.yml up --detach
5959
- name: Install baton
6060
run: ./scripts/get-baton.sh && mv baton /usr/local/bin
6161
- name: Build baton-sql-server
6262
run: go build ./cmd/baton-sql-server
63+
- name: Create another database
64+
run: docker exec -t baton-sql-server-db-1 /opt/mssql-tools18/bin/sqlcmd -C -S localhost -U SA -P 'devP@ssw0rd' -Q 'create database [space test 1]'
6365
- name: Run baton-sql-server
6466
run: ./baton-sql-server
6567
- name: Check for grant before revoking

docker-compose.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ services:
1212
- 1433:1433
1313
volumes:
1414
- db:/var/opt/mssql
15+
healthcheck:
16+
test: [ "CMD", "/opt/mssql-tools18/bin/sqlcmd","-C -U sa -P 'devP@ssw0rd' -Q 'SELECT * FROM INFORMATION_SCHEMA.TABLES'" ]
17+
interval: 10s
18+
timeout: 10s
19+
retries: 6
1520

1621
volumes:
1722
db:

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/conductorone/baton-sql-server
33
go 1.21
44

55
require (
6-
github.com/conductorone/baton-sdk v0.2.8
6+
github.com/conductorone/baton-sdk v0.2.13
77
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0
88
github.com/jmoiron/sqlx v1.3.5
99
github.com/microsoft/go-mssqldb v1.3.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZx
5454
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
5555
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
5656
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
57-
github.com/conductorone/baton-sdk v0.2.8 h1:DLHTQXhl50A5AB0cbSoMOmzrUwwbpP7poCXI69Lcdtw=
58-
github.com/conductorone/baton-sdk v0.2.8/go.mod h1:cg5FyUcJnD7xK5SPbHe/KNpwUVVlpHJ9rnmd3UwxSkU=
57+
github.com/conductorone/baton-sdk v0.2.13 h1:/9wJGlbiPxDQmjqKOTqyKpJ1Ui2+o7oYHInMqqR1PyQ=
58+
github.com/conductorone/baton-sdk v0.2.13/go.mod h1:cg5FyUcJnD7xK5SPbHe/KNpwUVVlpHJ9rnmd3UwxSkU=
5959
github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
6060
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
6161
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=

pkg/mssqldb/permissions.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,12 @@ func (c *Client) ListDatabasePermissions(ctx context.Context, dbName string, pag
9090
perms.state as state,
9191
STRING_AGG(perms.type, ',') as perms,
9292
principals.type as principal_type
93-
FROM `)
93+
FROM [`)
9494
_, _ = sb.WriteString(dbName)
95-
_, _ = sb.WriteString(`.sys.database_permissions perms
96-
JOIN `)
95+
_, _ = sb.WriteString(`].sys.database_permissions perms
96+
JOIN [`)
9797
_, _ = sb.WriteString(dbName)
98-
_, _ = sb.WriteString(`.sys.database_principals AS principals
98+
_, _ = sb.WriteString(`].sys.database_principals AS principals
9999
ON perms.grantee_principal_id = principals.principal_id
100100
WHERE (perms.state = 'G' OR perms.state = 'W') AND (perms.class = 0 AND perms.major_id = 0)
101101
GROUP BY perms.grantee_principal_id, perms.state, principals.name, principals.type

pkg/mssqldb/roles.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,9 @@ SELECT
160160
sid,
161161
name,
162162
type_desc
163-
FROM `)
163+
FROM [`)
164164
_, _ = sb.WriteString(dbName)
165-
_, _ = sb.WriteString(`.sys.database_principals
165+
_, _ = sb.WriteString(`].sys.database_principals
166166
WHERE type = 'R'
167167
ORDER BY
168168
principal_id ASC OFFSET @p1 ROWS FETCH NEXT @p2 ROWS ONLY
@@ -212,14 +212,14 @@ func (c *Client) ListDatabaseRolePrincipals(ctx context.Context, dbName string,
212212

213213
query := fmt.Sprintf(
214214
`SELECT
215-
%s.sys.database_principals.principal_id,
216-
%s.sys.database_principals.name,
217-
%s.sys.database_principals.type
215+
[%s].sys.database_principals.principal_id,
216+
[%s].sys.database_principals.name,
217+
[%s].sys.database_principals.type
218218
FROM
219-
%s.sys.database_principals
220-
JOIN %s.sys.database_role_members ON %s.sys.database_role_members.member_principal_id = %s.sys.database_principals.principal_id
221-
WHERE %s.sys.database_role_members.role_principal_id = @p1
222-
ORDER BY %s.sys.database_principals.principal_id ASC OFFSET @p2 ROWS FETCH NEXT @p3 ROWS ONLY`,
219+
[%s].sys.database_principals
220+
JOIN [%s].sys.database_role_members ON [%s].sys.database_role_members.member_principal_id = [%s].sys.database_principals.principal_id
221+
WHERE [%s].sys.database_role_members.role_principal_id = @p1
222+
ORDER BY [%s].sys.database_principals.principal_id ASC OFFSET @p2 ROWS FETCH NEXT @p3 ROWS ONLY`,
223223
dbName,
224224
dbName,
225225
dbName,

pkg/mssqldb/users.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,9 @@ SELECT
104104
is_disabled
105105
FROM
106106
sys.server_principals
107-
WHERE sid = (SELECT sid FROM `)
107+
WHERE sid = (SELECT sid FROM [`)
108108
_, _ = sb.WriteString(dbName)
109-
_, _ = sb.WriteString(`.sys.database_principals WHERE principal_id = @p1)`)
109+
_, _ = sb.WriteString(`].sys.database_principals WHERE principal_id = @p1)`)
110110

111111
row := c.db.QueryRowxContext(ctx, sb.String(), principalID)
112112
if row.Err() != nil {
@@ -141,9 +141,9 @@ SELECT
141141
principal_id,
142142
name,
143143
type_desc
144-
FROM `)
144+
FROM [`)
145145
_, _ = sb.WriteString(dbName)
146-
_, _ = sb.WriteString(`.sys.database_principals
146+
_, _ = sb.WriteString(`].sys.database_principals
147147
WHERE
148148
(
149149
type = 'S'

vendor/github.com/conductorone/baton-sdk/pkg/config/config.go

Lines changed: 4 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/conductorone/baton-sdk/pkg/field/fields.go

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/conductorone/baton-sdk/pkg/field/relationships.go

Lines changed: 12 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/conductorone/baton-sdk/pkg/field/validation.go

Lines changed: 30 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/conductorone/baton-sdk/pkg/pagination/pagination.go

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/conductorone/baton-sdk/pkg/sdk/version.go

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/conductorone/baton-sdk/pkg/tasks/c1api/list_ticket_schemas.go

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/conductorone/baton-sdk/pkg/uhttp/transport.go

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)