You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
release: v2.8.0, and rewrite the npm description for what people search - #222
three current description phrases each rank #1 out of 1-2M results, scoring 306-363
keywords
no measurable effect
duckdb, simd, etl, dataframe, mcp are all keywords; absent from the top 25 for every one
README
not indexed
three real phrases from nodejs/README.md, all absent
downloads
weak
an 11/week package outranks us, and a 13k/week package scores 4x a 25M/week one
The old description owned phrases nobody types (no import no database, #1 of 2,097,569). The queries people do type are held by packages matching loosely at 104-167, while our exact-phrase matches score 306-363, so those slots were open by 2-3x.
Old:
SQL on CSV files in place — no import, no database. Zig/SIMD engine for Node and AI agents (MCP). Read-only by design.
New:
Run SQL on CSV files in place. Query large CSV files fast with no import and no database. A CSV SQL engine in Zig with SIMD parsing, for Node and AI agents (MCP). Read only by design.
Covers run sql on csv, query large csv files, csv sql engine and csv files fast while keeping the phrases already won. Every claim is one we have measured. Keywords left alone since they do nothing, and the README is left for humans since search never sees it.
This is a hypothesis from the scoring pattern, not a tested outcome: npm reindexes on publish, so it cannot be A/B tested beforehand. Baseline to compare against after release is in the table above.
The same text goes on pyproject.toml for consistency and clearer copy on the PyPI page, not as a measured SEO claim. PyPI blocks scripted search and publishes no field-weighting docs, so the npm result does not transfer.
release.yml derives npm and PyPI versions from the tag, but not src/main.zig, so that one is bumped here or csvql --version would keep reporting 2.7.0. pyproject.toml had also drifted to 2.6.0 and is now in line.
Verified locally: 657 tests pass, and bench/verify_correctness.sh is 103/103 against DuckDB.
Added a third change after finding it via the local release.sh helper, which bumps a version string this PR had missed.
src/mcp.zig line 31 hardcodes the MCP handshake response, including serverInfo.version. Tracing it:
ca82dab chore: bump version to 1.0.1 <- last commit that moved it
407701c chore: bump version to 1.0.0
afeabf0 Imprv/arena buffer (#37)
It has not moved since 1.0.1, so every release from 1.1.0 through 2.7.0 reported "version":"1.0.1" to MCP clients. Those releases were tagged directly rather than through release.sh, which is the only thing that bumps this field, and nothing else reads it so no test caught the drift.
protocolVersion is deliberately untouched: 2024-11-05 is the MCP spec revision, not our version, and the two sit on the same line.
Worth noting for later, not fixed here: this field will drift again the next time a tag is pushed without release.sh, since release.yml patches package.json and pyproject.toml from the tag but not either Zig source. Making the binary read its version from one place, or asserting it in a test, would close that off.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
Two things, both needing a publish to take effect.
npm description
Measured what npm's search actually indexes. The answer is name and description, nothing else:
csvql queryranks #1duckdb,simd,etl,dataframe,mcpare all keywords; absent from the top 25 for every onenodejs/README.md, all absentThe old description owned phrases nobody types (
no import no database, #1 of 2,097,569). The queries people do type are held by packages matching loosely at 104-167, while our exact-phrase matches score 306-363, so those slots were open by 2-3x.Old:
New:
Covers
run sql on csv,query large csv files,csv sql engineandcsv files fastwhile keeping the phrases already won. Every claim is one we have measured. Keywords left alone since they do nothing, and the README is left for humans since search never sees it.This is a hypothesis from the scoring pattern, not a tested outcome: npm reindexes on publish, so it cannot be A/B tested beforehand. Baseline to compare against after release is in the table above.
The same text goes on
pyproject.tomlfor consistency and clearer copy on the PyPI page, not as a measured SEO claim. PyPI blocks scripted search and publishes no field-weighting docs, so the npm result does not transfer.v2.8.0
54 commits since v2.7.0. Highlights:
featLPAD/RPAD (feat: add LPAD/RPAD string functions #178), with truncation and NULL handling (fix: LPAD/RPAD truncate long values and leave NULL alone #179)fixSUM/AVG no longer change with--threads(fix: SUM/AVG no longer change with --threads (#185) #198)fixVARIANCE/STDDEV precision on large-magnitude values (fix: VARIANCE/STDDEV lose all precision on large-magnitude values (#190) #191)fixlow-cardinality SELECT DISTINCT contending on shard locks (fix: low-cardinality SELECT DISTINCT contends on shard locks (#213) #215)fixstdin spool file surviving SIGKILL on macOS (stdin-aggregate spool file (macOS/Windows) not cleaned up if the process is killed or interrupted #177)perfprefix-XOR quote mask so quoted CSV skips like unquoted (perf: prefix-XOR quote mask so quoted CSV skips like unquoted CSV #212, perf: use the fused scan's record end at the remaining quoted call sites #218)perfhigh-cardinality GROUP BY (perf: high-cardinality GROUP BY builds each group once, not once per worker #184, perf: high-cardinality GROUP BY sorts a compact array and uses more merge shards #199), COUNT(DISTINCT) thread scaling (perf: COUNT(DISTINCT) scales with thread count instead of collapsing #180), fewer accumulator allocations (perf: SELECT DISTINCT stops allocating accumulators it never uses #182, perf: stop allocating unused aggregate slots for every group #183)cisetup-zig retry (ci: retry the Zig install once when the download fails #220), docs-only matrix skip (ci: skip the build matrix for documentation-only changes #209)release.ymlderives npm and PyPI versions from the tag, but notsrc/main.zig, so that one is bumped here orcsvql --versionwould keep reporting 2.7.0.pyproject.tomlhad also drifted to 2.6.0 and is now in line.Verified locally: 657 tests pass, and
bench/verify_correctness.shis 103/103 against DuckDB.🤖 Generated with Claude Code