Skip to content

Add MS-SQL Server support#4

Closed
Copilot wants to merge 3 commits into
mainfrom
copilot/add-mssql-support
Closed

Add MS-SQL Server support#4
Copilot wants to merge 3 commits into
mainfrom
copilot/add-mssql-support

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Feb 6, 2026

Implements the MS-SQL vendor adapter and migrations per plans/mssql-support-implementation.md, porting the SQL dialect differences from the original Scala implementation.

MsSqlServerAdapter

New sealed subclass of SQLVendorAdapter with MS-SQL specific query syntax:

  • Row limiting: TOP N instead of LIMIT N — overrides selectByKey, selectAllAvailableWithLock, selectFirstAvailableWithLock, acquireManyOptimistically
  • Locking: WITH (UPDLOCK) on selectForUpdateOneRow, WITH (UPDLOCK, READPAST) on poll queries to prevent concurrent pollers from blocking on the same row
  • Conditional insert: IF NOT EXISTS ... BEGIN INSERT ... END instead of insert-catch-duplicate

MsSqlServerMigrations

Table creation using MS-SQL types: NVARCHAR, DATETIMEOFFSET, BIGINT IDENTITY(1,1). Composite primary key (pKey, pKind) with a separate unique index on id, matching the old Scala schema.

Wiring

  • SQLVendorAdapter.create() routes JdbcDriver.MsSqlServer to the new adapter
  • DelayedQueueJDBC.runMigrations() routes to MsSqlServerMigrations
  • selectByKey and selectAllAvailableWithLock made open on the base class to allow MS-SQL overrides

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • docs.oracle.com
    • Triggering command: /usr/lib/jvm/temurin-21-jdk-amd64/bin/java /usr/lib/jvm/temurin-21-jdk-amd64/bin/java --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.xml/javax.xml.namespace=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED -XX:+UseParallelGC -Xmx2g -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en (dns block)
    • Triggering command: /usr/lib/jvm/temurin-21-jdk-amd64/bin/java /usr/lib/jvm/temurin-21-jdk-amd64/bin/java -XX:+HeapDumpOnOutOfMemoryError -XX:+AlwaysPreTouch @/home/REDACTED/.gradle/.tmp/gradle-worker-classpath229983155010189027txt -Xmx2g -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en -Duser.variant worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Worker Daemon 3' (dns block)
  • kotlinlang.org
    • Triggering command: /usr/lib/jvm/temurin-21-jdk-amd64/bin/java /usr/lib/jvm/temurin-21-jdk-amd64/bin/java --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.xml/javax.xml.namespace=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED -XX:+UseParallelGC -Xmx2g -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en (dns block)
    • Triggering command: /usr/lib/jvm/temurin-21-jdk-amd64/bin/java /usr/lib/jvm/temurin-21-jdk-amd64/bin/java -XX:+HeapDumpOnOutOfMemoryError -XX:+AlwaysPreTouch @/home/REDACTED/.gradle/.tmp/gradle-worker-classpath229983155010189027txt -Xmx2g -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en -Duser.variant worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Worker Daemon 3' (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

Add support for MS-SQL.

  • Follow the plan in: ./plans/mssql-support-implementation.md
  • Respect best practices outlined in AGENTS.md

💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot AI and others added 2 commits February 6, 2026 18:24
Co-authored-by: alexandru <11753+alexandru@users.noreply.github.com>
Co-authored-by: alexandru <11753+alexandru@users.noreply.github.com>
Copilot AI changed the title [WIP] Add support for MS-SQL Add MS-SQL Server support Feb 6, 2026
Copilot AI requested a review from alexandru February 6, 2026 18:27
@alexandru alexandru closed this Feb 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants