fix: issue-triage quick wins (extraction, MCP probes, gitignore, CJK, impact) (#654)
Batch of small, localized fixes from an open-issue triage: - .codegraph/.gitignore now ignores everything but itself, so the database, daemon.pid, sockets, and logs stop showing up in git status (#492, #484) - MCP server answers resources/list and prompts/list with empty lists instead of -32601, clearing scary log lines in opencode/Codex (#621) - index SAP HANA .xsjs/.xsjslib as JavaScript (#556) and TS .mts/.cts (#366) - visit anonymous AMD/CommonJS/IIFE wrapper bodies so their inner functions and calls are indexed instead of coming up empty (#528) - batch the changed-file lookup so a huge first sync no longer hits "too many SQL variables" (#540) - list files with `git ls-files -z` so non-ASCII/CJK paths survive core.quotepath and are no longer silently skipped (#541) - attach Go methods on generic receivers (*T[P]) to their type (#583, RC1) - impact no longer climbs the structural `contains` edge, so a leaf symbol stops dragging in its sibling methods (#536) - README: explicit `codegraph install` step, run in a new shell (#631) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
2a22f9f55a
commit
ddb1a8f72d
+13
-4
@@ -1588,10 +1588,19 @@ export class QueryBuilder {
|
||||
getUnresolvedReferencesByFiles(filePaths: string[]): UnresolvedReference[] {
|
||||
if (filePaths.length === 0) return [];
|
||||
|
||||
const placeholders = filePaths.map(() => '?').join(',');
|
||||
const rows = this.db
|
||||
.prepare(`SELECT * FROM unresolved_refs WHERE file_path IN (${placeholders})`)
|
||||
.all(...filePaths) as UnresolvedRefRow[];
|
||||
// Chunk under SQLite's parameter limit: the first sync of a very large repo
|
||||
// passes every changed file here, which an unbounded `IN (...)` would bind
|
||||
// as one parameter each — exceeding MAX_VARIABLE_NUMBER and aborting with
|
||||
// "too many SQL variables". (#540)
|
||||
const rows: UnresolvedRefRow[] = [];
|
||||
for (let i = 0; i < filePaths.length; i += SQLITE_PARAM_CHUNK_SIZE) {
|
||||
const chunk = filePaths.slice(i, i + SQLITE_PARAM_CHUNK_SIZE);
|
||||
const placeholders = chunk.map(() => '?').join(',');
|
||||
const chunkRows = this.db
|
||||
.prepare(`SELECT * FROM unresolved_refs WHERE file_path IN (${placeholders})`)
|
||||
.all(...chunk) as UnresolvedRefRow[];
|
||||
rows.push(...chunkRows);
|
||||
}
|
||||
|
||||
return rows.map((row) => ({
|
||||
fromNodeId: row.from_node_id,
|
||||
|
||||
Reference in New Issue
Block a user