Fix piping query without go
command into sqlcmd-go
#583
+38
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue
When piping a SQL query to sqlcmd-go without a
GO
statement, the query was read but not executed, returning no output. However, the ODBC version of sqlcmd does execute these queries.For example:
Root Cause
The issue was in the
run
function incmd/sqlcmd/sqlcmd.go
. When input is coming from stdin in non-interactive mode, theprocessAll
parameter was always set tofalse
. This meant that when EOF was reached, if there was no explicitGO
statement, the query would not be executed.Solution
The fix detects when stdin is a pipe (not an interactive terminal) and sets
processAll=true
in that case, which executes the query when EOF is reached:This minimal change ensures that sqlcmd-go behaves like the ODBC version when receiving piped input, executing queries without requiring a
GO
statement.Fixes #581.
Warning
Firewall rules blocked me from connecting to one or more addresses
I tried to connect to the following addresses, but was blocked by firewall rules:
someserver
/tmp/go-build689818603/b001/sqlcmd.test -test.testlogfile=/tmp/go-build689818603/b001/testlog.txt -test.paniconexit0 -test.timeout=10m0s -test.v=true
(dns block)If you need me to access, download, or install something from one of these locations, you can either:
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.