dirsql 0.4.105__tar.gz → 0.4.107__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dirsql-0.4.105 → dirsql-0.4.107}/Cargo.lock +2 -2
- {dirsql-0.4.105 → dirsql-0.4.107}/PKG-INFO +1 -1
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/react-to-changes.md +2 -1
- {dirsql-0.4.105/packages/rust → dirsql-0.4.107}/docs/reference/http-api.md +1 -1
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/reference/sdk.md +4 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/Cargo.toml +1 -1
- dirsql-0.4.107/packages/python/changelog.d/2026-10-08-watch-requires-named-table.md +1 -0
- {dirsql-0.4.105/packages/rust → dirsql-0.4.107/packages/python}/docs/howto/react-to-changes.md +2 -1
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/reference/http-api.md +1 -1
- {dirsql-0.4.105/packages/rust → dirsql-0.4.107/packages/python}/docs/reference/sdk.md +4 -0
- dirsql-0.4.107/packages/python/e2e-attestations/bot-1406-watch-no-tables-1008.json +7 -0
- dirsql-0.4.107/packages/python/e2e-attestations/bot-1459-rescan-on-overflow-1008.json +7 -0
- dirsql-0.4.107/packages/python/migrations.d/2026-10-08-watch-requires-named-table.md +23 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/Cargo.toml +1 -1
- {dirsql-0.4.105/packages/python → dirsql-0.4.107/packages/rust}/docs/howto/react-to-changes.md +2 -1
- {dirsql-0.4.105 → dirsql-0.4.107/packages/rust}/docs/reference/http-api.md +1 -1
- {dirsql-0.4.105/packages/python → dirsql-0.4.107/packages/rust}/docs/reference/sdk.md +4 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/server.rs +25 -3
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/db.rs +52 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/lib.rs +237 -42
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/watcher.rs +35 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/Cargo.toml +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/README.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/__init__.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/_async.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/_dirsql.pyi +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/cli/__init__.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/cli/discover_plugins/__init__.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/cli/main.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/cli/resolve_config_extensions.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/plan_entry_path.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/py.typed +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/read_config.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/resolve_configs_extension_specs.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/resolve_extension.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/resolve_package.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/.vitepress/config.ts +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/AGENTS.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/context/.gitattributes +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/context/recipes.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/context/troubleshooting.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/context/usage.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/explanation.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/getting-started.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/agent-skill.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/embed.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/persist.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/query-json.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/index.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/package.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/plugins.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/reference/cli.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/reference/columns.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/reference/config.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/reference/glob.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/reference/hooks.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/docs/reference/path-tables.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/CHANGELOG.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/MIGRATIONS.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/README.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-08-02-release-profile.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-08-02-scan-failures.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-08-03-python-no-ignore.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-08-04-cast-lints.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-08-04-cli-in-process.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-08-20-declared-table-name.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-04-config-paths-from-argv-module.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-05-config-extension-loader-split.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-05-resolve-config-extensions-split.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-05-resolve-extension-split.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-09-launcher-config-path-scan.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-17-extension-resolution-via-core.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-18-export-scan-failure.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-18-flatten-row-event-in-core.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-18-programmatic-extension-plan.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-24-query-rows-in-projection-order.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-02-readme-docs-host.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-03-path-table-directory-one-level.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-05-brace-groups-follow-bash.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-05-cli-context.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-05-gitignore-requires-repo.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-05-path-table-node-modules-named.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-05-path-table-symlinks.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-05-path-table-trailing-slash.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-config-braces.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-config-directory.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-config-dotnames.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-config-gitignore.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-config-links.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-one-glob-compiler.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-plugin-no-default-records.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-watch-broadcast.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-zero-match-config-table-warning.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-bracket-slash-literal.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-dotdot-and-double-slashes.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-dotdot-as-written.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-glob-walks-node-modules.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-literal-gitignore.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-on-file-ndjson.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-parallel-hooks.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-persist-cache-outside-root.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-posix-classes-unicode.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-spread-few-large-files.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-08-small-walks-stay-on-one-thread.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/README.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/conftest.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/.vitepress/config.ts +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/AGENTS.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/context/.gitattributes +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/context/recipes.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/context/troubleshooting.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/context/usage.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/explanation.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/getting-started.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/agent-skill.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/embed.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/persist.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/query-json.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/index.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/package.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/plugins.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/reference/cli.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/reference/columns.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/reference/config.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/reference/glob.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/reference/hooks.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/reference/path-tables.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1334-listing-exemptions.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1397-watch-broadcast.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1398-inotify-error.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1399-server-cors.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1401-watch-scope.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1407-child-place-depth.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1414-stat-speed.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1415-server-speed.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1418-node-modules.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1419-dotdot-slashes.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1420-bracket-slash.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1421-posix-unicode.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1422-literal-gitignore.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1426-walk-spawn-threshold-1008.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1428-ndjson-hooks.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1429-parallel-hooks.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1430-dotdot-as-written.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1431-persist-cache-dir.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1437-test-cache-isolation.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1440-fix-main-build.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1448-wildcard-ignored-prefix.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1451-named-dir-never-hidden.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1454-split-few-files.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1457-incremental-refresh-1008.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-fix-main-place-depth-20261007.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/cc-keen-knuth-f11gyq.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1056-py-ofpf9.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1066-p1-resolve-extension.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1078-argv-config-paths-core.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1079-p2-resolve-config-extensions.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1080-share-vtab-scaffolding.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1081-indicatif-progress.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1096-watch-moved-dir.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1109-watch-moved-out.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1119-ext-plan.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1120-py-ext.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1122-ext-cleanup.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1130-codec-crates.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1131-flatten-row-event.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1139-sse-flatten.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1140-scan-failure-export.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1148-clippy-all-targets.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1164-sigint-fatal.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1170-projection-order.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1172-on-file-path.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1173-py-projection-order.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1184-win-rel-paths.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1185-win-abs-table-names.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1186-win-test-harness.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1196-join-index.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1199-glob-prefix.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1201-single-walk.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1204-embed-batch.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1207-win-argv-quote.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1208-win-nonverbatim-paths.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1215-on-file-batch.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1216-on-file-cleanup.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1223-config-glob-rule.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1223-dir-one-level.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1225-plugin-no-default.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1226-stale-docs.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1232-anchor-plumbing.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1232-config-anchor.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1232-multi-watch.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1232-zero-match.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1238-parallel-walk.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1241-content-prefetch.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1243-ingest-perf.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1249-dotfiles.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1256-symlinks.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1257-trailing-slash.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1258-config-braces.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1258-config-directory.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1258-config-dotnames.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1258-config-gitignore.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1258-config-links.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1258-one-pattern.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1262-brace-literal.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1264-context.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1267-posix-classes.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1268-unbalanced-brackets.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1269-utf8-chars.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1271-node-modules-named.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1272-ancestor-gitignore.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1273-walk-prune.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1285-ingest-fast.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1286-nested-repo.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1305-glob-speed.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1308-glob-speed.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1310-glob-speed.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1311-glob-speed.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1312-glob-speed.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1318-lazy-stat.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1320-walk-speed.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1322-walk-readdir.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1325-parallel-walk.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1326-stream-rows.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1330-python-dirsql-patch.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1330-python-extensions-patch.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1330-scanner-effects.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1330-scanner-gitignore.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1330-vtab-prefetch-flag.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1330-vtab-read.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1351-dot-dirs.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-819-oneshot-timeout.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-827-unquote-doubled-quotes.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-epic-953-slice2-reedline.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-epic-953-slice3-format.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-epic-953-stacked-prs-x59wm3.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-github-issue-825-e4mhhp.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-issue-951-0eease.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-issue-962-0jjrfv.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-issue-986-red-test-e7sjrb.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-tackle-1034-cachesplit.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-tackle-1042-py12.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-tackle-956-xzen74.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6-worker-calls.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-tackle-975-n8mc2h.json +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-08-04-cli-in-process.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-08-20-declared-table-name.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-09-24-query-rows-in-projection-order.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-02-readme-docs-host.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-03-path-table-directory-one-level.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-05-brace-groups-follow-bash.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-05-cli-context.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-05-gitignore-requires-repo.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-05-path-table-node-modules-named.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-05-path-table-symlinks.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-05-path-table-trailing-slash.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-config-braces.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-config-directory.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-config-dotnames.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-config-gitignore.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-config-links.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-one-glob-compiler.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-plugin-no-default-records.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-watch-broadcast.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-zero-match-config-table-warning.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-bracket-slash-literal.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-dotdot-and-double-slashes.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-dotdot-as-written.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-glob-walks-node-modules.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-literal-gitignore.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-on-file-ndjson.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-parallel-hooks.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-persist-cache-outside-root.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-posix-classes-unicode.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-spread-few-large-files.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-08-small-walks-stay-on-one-thread.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/README.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/src/lib.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/testing-conventions.toml +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/tests/__init__.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/tests/conftest.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/tests/e2e/__init__.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/tests/e2e/speed_of_light.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/tests/integration/__init__.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/tests/integration/binding/__init__.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/tests/integration/hermetic/__init__.py +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/CHANGELOG.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/MIGRATIONS.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/README.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/benches/db_bench.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/benches/differ_bench.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/benches/matcher_bench.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/benches/scanner_bench.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/context/.gitattributes +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/context/recipes.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/context/troubleshooting.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/context/usage.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/explanation.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/getting-started.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/agent-skill.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/embed.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/persist.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/query-json.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/index.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/plugins.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/reference/cli.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/reference/columns.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/reference/config.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/reference/glob.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/reference/hooks.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/reference/path-tables.md +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/bin/dirsql.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/brace.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/context.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/execute.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/init.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/mod.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/repl.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/router.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/run.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/serialize.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/table.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/command.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/config.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/default_config.toml +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/differ.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/extension_resolution.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/functions.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/infer.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/launcher.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/listing.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/matcher.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/on_file.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/parsed_vtab.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/path_table.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/persist.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/posix_class.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/progress.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/row_event_flat.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/scanner.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/sql_literal.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/tree_walk.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/vtab.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/vtab_scaffold.rs +0 -0
- {dirsql-0.4.105 → dirsql-0.4.107}/pyproject.toml +0 -0
|
@@ -573,7 +573,7 @@ dependencies = [
|
|
|
573
573
|
|
|
574
574
|
[[package]]
|
|
575
575
|
name = "dirsql"
|
|
576
|
-
version = "0.4.
|
|
576
|
+
version = "0.4.107"
|
|
577
577
|
dependencies = [
|
|
578
578
|
"assert_cmd",
|
|
579
579
|
"axum",
|
|
@@ -625,7 +625,7 @@ dependencies = [
|
|
|
625
625
|
|
|
626
626
|
[[package]]
|
|
627
627
|
name = "dirsql-py-ext"
|
|
628
|
-
version = "0.4.
|
|
628
|
+
version = "0.4.107"
|
|
629
629
|
dependencies = [
|
|
630
630
|
"dirsql",
|
|
631
631
|
"pyo3",
|
|
@@ -7,7 +7,8 @@ side.
|
|
|
7
7
|
|
|
8
8
|
Row events are emitted for **named tables**, so this flow needs a config —
|
|
9
9
|
[path-tables](../reference/path-tables.md) are scanned per query and are not
|
|
10
|
-
watched
|
|
10
|
+
watched, so `watch()` on an instance with no named tables raises an error and
|
|
11
|
+
`/events` returns `503`. Define one next to your files. A named table's columns are whatever
|
|
11
12
|
its [`on-file`](../reference/config.md#table) hook emits; here a minimal hook
|
|
12
13
|
prints each file's basename:
|
|
13
14
|
|
|
@@ -115,4 +115,4 @@ Row values serialize as in [`POST /query`](#value-serialization).
|
|
|
115
115
|
|---|---|
|
|
116
116
|
| `200` | Stream opened (`text/event-stream`). |
|
|
117
117
|
| `405` | `POST /events`. Plain-text body `method not allowed`. |
|
|
118
|
-
| `503` | The server is in [degraded mode](./cli.md#degraded-mode), or its filesystem watcher failed to start (for example, the inotify limit is exhausted). JSON `{"error": …}` body; for a watcher failure the message starts `filesystem watcher failed to start:` and gives the reason. `POST /query` keeps working. |
|
|
118
|
+
| `503` | The server is in [degraded mode](./cli.md#degraded-mode), or its filesystem watcher failed to start (for example, the inotify limit is exhausted, or the instance has no named tables). JSON `{"error": …}` body; for a watcher failure the message starts `filesystem watcher failed to start:` and gives the reason. `POST /query` keeps working. |
|
|
@@ -301,6 +301,10 @@ under the root. The watcher starts on first iteration (Python/TypeScript)
|
|
|
301
301
|
or at the `watch()` call (Rust). The stream never terminates on its own;
|
|
302
302
|
stop consuming it to stop.
|
|
303
303
|
|
|
304
|
+
An instance with no named tables cannot be watched: path-tables emit no
|
|
305
|
+
watch events, so `watch()` (and the polling primitives) raise an error naming
|
|
306
|
+
that cause. Define a table first.
|
|
307
|
+
|
|
304
308
|
Python/TypeScript: each `watch()` call returns an independent stream, and every stream
|
|
305
309
|
on one instance receives every event observed after it was created, so
|
|
306
310
|
several consumers (one per client, say) can share one instance.
|
|
@@ -4,7 +4,7 @@ name = "dirsql-py-ext"
|
|
|
4
4
|
# pypi/maturin handler can rewrite it via `write-version` before
|
|
5
5
|
# `maturin build`. `pyproject.toml` declares `dynamic = ["version"]`
|
|
6
6
|
# and maturin reads this field. Mirrors `packages/rust/Cargo.toml`.
|
|
7
|
-
version = "0.4.
|
|
7
|
+
version = "0.4.107"
|
|
8
8
|
# abi3 note: the `abi3-py310` pyo3 feature (below) builds ONE stable-ABI
|
|
9
9
|
# `cp310-abi3` wheel per platform that loads on every CPython >= 3.10
|
|
10
10
|
# (matching `pyproject.toml`'s `requires-python = ">=3.10"`), instead of
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
**Changed** — `watch()` (and the polling primitives) on an instance with no named tables now fails immediately with `watching requires at least one named table: path-tables emit no watch events; define a table`, instead of starting a watcher that never yields. The `dirsql server` `/events` endpoint returns 503 with the same reason; `/query` is unaffected.
|
{dirsql-0.4.105/packages/rust → dirsql-0.4.107/packages/python}/docs/howto/react-to-changes.md
RENAMED
|
@@ -7,7 +7,8 @@ side.
|
|
|
7
7
|
|
|
8
8
|
Row events are emitted for **named tables**, so this flow needs a config —
|
|
9
9
|
[path-tables](../reference/path-tables.md) are scanned per query and are not
|
|
10
|
-
watched
|
|
10
|
+
watched, so `watch()` on an instance with no named tables raises an error and
|
|
11
|
+
`/events` returns `503`. Define one next to your files. A named table's columns are whatever
|
|
11
12
|
its [`on-file`](../reference/config.md#table) hook emits; here a minimal hook
|
|
12
13
|
prints each file's basename:
|
|
13
14
|
|
|
@@ -115,4 +115,4 @@ Row values serialize as in [`POST /query`](#value-serialization).
|
|
|
115
115
|
|---|---|
|
|
116
116
|
| `200` | Stream opened (`text/event-stream`). |
|
|
117
117
|
| `405` | `POST /events`. Plain-text body `method not allowed`. |
|
|
118
|
-
| `503` | The server is in [degraded mode](./cli.md#degraded-mode), or its filesystem watcher failed to start (for example, the inotify limit is exhausted). JSON `{"error": …}` body; for a watcher failure the message starts `filesystem watcher failed to start:` and gives the reason. `POST /query` keeps working. |
|
|
118
|
+
| `503` | The server is in [degraded mode](./cli.md#degraded-mode), or its filesystem watcher failed to start (for example, the inotify limit is exhausted, or the instance has no named tables). JSON `{"error": …}` body; for a watcher failure the message starts `filesystem watcher failed to start:` and gives the reason. `POST /query` keeps working. |
|
|
@@ -301,6 +301,10 @@ under the root. The watcher starts on first iteration (Python/TypeScript)
|
|
|
301
301
|
or at the `watch()` call (Rust). The stream never terminates on its own;
|
|
302
302
|
stop consuming it to stop.
|
|
303
303
|
|
|
304
|
+
An instance with no named tables cannot be watched: path-tables emit no
|
|
305
|
+
watch events, so `watch()` (and the polling primitives) raise an error naming
|
|
306
|
+
that cause. Define a table first.
|
|
307
|
+
|
|
304
308
|
Python/TypeScript: each `watch()` call returns an independent stream, and every stream
|
|
305
309
|
on one instance receives every event observed after it was created, so
|
|
306
310
|
several consumers (one per client, say) can share one instance.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"command": "uv run python -m pytest tests/e2e/server_speed_test.py tests/e2e/query_contract_test.py tests/e2e/sigint_interrupt_test.py tests/e2e/cli_version_test.py -x -q",
|
|
3
|
+
"ran_at": 1791474667,
|
|
4
|
+
"exit_code": 0,
|
|
5
|
+
"commit": "31f567c6cc0e5873a9bdc41df84e95a6722527f1",
|
|
6
|
+
"branch": "bot/1406-watch-no-tables-1008"
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"command": "uv run python -m pytest tests/e2e/on_file_query_test.py tests/e2e/query_contract_test.py tests/e2e/use_case_notebook_test.py -x -q",
|
|
3
|
+
"ran_at": 1791464863,
|
|
4
|
+
"exit_code": 0,
|
|
5
|
+
"commit": "480d3e491818207f55eb2d8dc6c95498dc27afab",
|
|
6
|
+
"branch": "bot/1459-rescan-on-overflow-1008"
|
|
7
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
### `watch()` requires a named table
|
|
2
|
+
|
|
3
|
+
#### Summary
|
|
4
|
+
|
|
5
|
+
`watch()`, `poll_events()`/`pollEvents()` and `start_watching()`/`startWatcher()` on an instance with no named tables now raise an error naming the cause, rather than watching and silently yielding nothing. Path-tables emit no watch events. Instances with at least one named table are unaffected.
|
|
6
|
+
|
|
7
|
+
#### Required changes
|
|
8
|
+
|
|
9
|
+
| Before | After |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| `DirSQL(root).watch()` yields nothing forever | Define a table (programmatic or `[[table]]`), or stop calling `watch()` |
|
|
12
|
+
|
|
13
|
+
#### Deprecations removed
|
|
14
|
+
|
|
15
|
+
_None._
|
|
16
|
+
|
|
17
|
+
#### Behavior changes without code changes
|
|
18
|
+
|
|
19
|
+
A path-table-only instance that called `watch()` now gets an error. `dirsql server` with no tables returns 503 from `/events`.
|
|
20
|
+
|
|
21
|
+
#### Verification
|
|
22
|
+
|
|
23
|
+
Run `dirsql server -c <config with no [[table]]>` and `curl -i http://localhost:7117/events`; expect `503` naming "path-tables emit no watch events".
|
|
@@ -6,7 +6,7 @@ description = "Ephemeral SQL index over a local directory"
|
|
|
6
6
|
# version stays for the binding crates (publish = false). The literal
|
|
7
7
|
# intentionally lags the published version: putitoutthere rewrites it to
|
|
8
8
|
# the planned release version at build time and never commits it back.
|
|
9
|
-
version = "0.4.
|
|
9
|
+
version = "0.4.107"
|
|
10
10
|
edition.workspace = true
|
|
11
11
|
# Literal `license` (not `license.workspace = true`) because
|
|
12
12
|
# putitoutthere's preflight check reads `[package].license` directly
|
{dirsql-0.4.105/packages/python → dirsql-0.4.107/packages/rust}/docs/howto/react-to-changes.md
RENAMED
|
@@ -7,7 +7,8 @@ side.
|
|
|
7
7
|
|
|
8
8
|
Row events are emitted for **named tables**, so this flow needs a config —
|
|
9
9
|
[path-tables](../reference/path-tables.md) are scanned per query and are not
|
|
10
|
-
watched
|
|
10
|
+
watched, so `watch()` on an instance with no named tables raises an error and
|
|
11
|
+
`/events` returns `503`. Define one next to your files. A named table's columns are whatever
|
|
11
12
|
its [`on-file`](../reference/config.md#table) hook emits; here a minimal hook
|
|
12
13
|
prints each file's basename:
|
|
13
14
|
|
|
@@ -115,4 +115,4 @@ Row values serialize as in [`POST /query`](#value-serialization).
|
|
|
115
115
|
|---|---|
|
|
116
116
|
| `200` | Stream opened (`text/event-stream`). |
|
|
117
117
|
| `405` | `POST /events`. Plain-text body `method not allowed`. |
|
|
118
|
-
| `503` | The server is in [degraded mode](./cli.md#degraded-mode), or its filesystem watcher failed to start (for example, the inotify limit is exhausted). JSON `{"error": …}` body; for a watcher failure the message starts `filesystem watcher failed to start:` and gives the reason. `POST /query` keeps working. |
|
|
118
|
+
| `503` | The server is in [degraded mode](./cli.md#degraded-mode), or its filesystem watcher failed to start (for example, the inotify limit is exhausted, or the instance has no named tables). JSON `{"error": …}` body; for a watcher failure the message starts `filesystem watcher failed to start:` and gives the reason. `POST /query` keeps working. |
|
|
@@ -301,6 +301,10 @@ under the root. The watcher starts on first iteration (Python/TypeScript)
|
|
|
301
301
|
or at the `watch()` call (Rust). The stream never terminates on its own;
|
|
302
302
|
stop consuming it to stop.
|
|
303
303
|
|
|
304
|
+
An instance with no named tables cannot be watched: path-tables emit no
|
|
305
|
+
watch events, so `watch()` (and the polling primitives) raise an error naming
|
|
306
|
+
that cause. Define a table first.
|
|
307
|
+
|
|
304
308
|
Python/TypeScript: each `watch()` call returns an independent stream, and every stream
|
|
305
309
|
on one instance receives every event observed after it was created, so
|
|
306
310
|
several consumers (one per client, say) can share one instance.
|
|
@@ -109,6 +109,16 @@ fn start_watch_task(db: DirSQL, tx: broadcast::Sender<String>) -> Option<String>
|
|
|
109
109
|
mod tests {
|
|
110
110
|
use super::*;
|
|
111
111
|
|
|
112
|
+
fn db_with_a_table(root: &std::path::Path) -> DirSQL {
|
|
113
|
+
let config = root.join("dirsql.toml");
|
|
114
|
+
std::fs::write(
|
|
115
|
+
&config,
|
|
116
|
+
"[[table]]\nname = \"t\"\nddl = \"CREATE TABLE t (x TEXT)\"\nglob = \"*.none\"\non-file = \"true\"\n",
|
|
117
|
+
)
|
|
118
|
+
.unwrap();
|
|
119
|
+
DirSQL::builder().root(root).config(config).build().unwrap()
|
|
120
|
+
}
|
|
121
|
+
|
|
112
122
|
// An `Unavailable` state needs no DB/filesystem, so the real bind /
|
|
113
123
|
// graceful-shutdown plumbing runs without standing up an index.
|
|
114
124
|
#[tokio::test]
|
|
@@ -130,7 +140,7 @@ mod tests {
|
|
|
130
140
|
#[tokio::test]
|
|
131
141
|
async fn serve_with_a_ready_db_attaches_the_watcher_then_shuts_down() {
|
|
132
142
|
let dir = tempfile::tempdir().unwrap();
|
|
133
|
-
let db =
|
|
143
|
+
let db = db_with_a_table(dir.path());
|
|
134
144
|
let config = ServerConfig::bind("127.0.0.1".to_string(), 0);
|
|
135
145
|
let handle = serve(config, db).await.expect("bind on an ephemeral port");
|
|
136
146
|
assert_ne!(handle.local_addr().port(), 0);
|
|
@@ -140,17 +150,29 @@ mod tests {
|
|
|
140
150
|
#[tokio::test]
|
|
141
151
|
async fn start_watch_task_reports_no_failure_once_the_watcher_attaches() {
|
|
142
152
|
let dir = tempfile::tempdir().unwrap();
|
|
143
|
-
let db =
|
|
153
|
+
let db = db_with_a_table(dir.path());
|
|
144
154
|
let (tx, _) = broadcast::channel::<String>(1);
|
|
145
155
|
assert_eq!(start_watch_task(db, tx), None);
|
|
146
156
|
}
|
|
147
157
|
|
|
158
|
+
#[tokio::test]
|
|
159
|
+
async fn start_watch_task_names_the_cause_without_named_tables() {
|
|
160
|
+
let dir = tempfile::tempdir().unwrap();
|
|
161
|
+
let db = DirSQL::new(dir.path(), Vec::new()).unwrap();
|
|
162
|
+
let (tx, _) = broadcast::channel::<String>(1);
|
|
163
|
+
let reason = start_watch_task(db, tx).expect("watch() must fail");
|
|
164
|
+
assert!(
|
|
165
|
+
reason.contains("path-tables emit no watch events"),
|
|
166
|
+
"got: {reason}"
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
|
|
148
170
|
// `poll_events` locks out `watch`, the one deterministic way to make the
|
|
149
171
|
// watcher refuse to attach without exhausting inotify.
|
|
150
172
|
#[tokio::test]
|
|
151
173
|
async fn start_watch_task_returns_the_reason_when_the_watcher_cannot_attach() {
|
|
152
174
|
let dir = tempfile::tempdir().unwrap();
|
|
153
|
-
let db =
|
|
175
|
+
let db = db_with_a_table(dir.path());
|
|
154
176
|
db.poll_events(std::time::Duration::ZERO).unwrap();
|
|
155
177
|
let (tx, _) = broadcast::channel::<String>(1);
|
|
156
178
|
let reason = start_watch_task(db, tx).expect("watch() must fail");
|
|
@@ -991,6 +991,22 @@ impl Db {
|
|
|
991
991
|
.collect()
|
|
992
992
|
}
|
|
993
993
|
|
|
994
|
+
/// Every distinct `(table_name, file_path)` that owns rows, ordered by
|
|
995
|
+
/// table then path. A per-table hook's rows have no file owner and are
|
|
996
|
+
/// not listed.
|
|
997
|
+
pub fn owned_files(&self) -> Result<Vec<(String, String)>> {
|
|
998
|
+
let mut stmt = self.conn.prepare(
|
|
999
|
+
"SELECT DISTINCT table_name, file_path FROM ( \
|
|
1000
|
+
SELECT table_name, file_path FROM _dirsql_internal_rows \
|
|
1001
|
+
UNION ALL \
|
|
1002
|
+
SELECT table_name, file_path FROM _dirsql_internal_ranges) \
|
|
1003
|
+
WHERE file_path != '' \
|
|
1004
|
+
ORDER BY table_name, file_path",
|
|
1005
|
+
)?;
|
|
1006
|
+
let rows = stmt.query_map([], |r| Ok((r.get(0)?, r.get(1)?)))?;
|
|
1007
|
+
Ok(rows.collect::<rusqlite::Result<Vec<_>>>()?)
|
|
1008
|
+
}
|
|
1009
|
+
|
|
994
1010
|
/// Every distinct `(table_name, file_path)` whose file sits beneath the
|
|
995
1011
|
/// directory `dir`, ordered by table then path.
|
|
996
1012
|
pub fn files_under(&self, dir: &str) -> Result<Vec<(String, String)>> {
|
|
@@ -2496,6 +2512,42 @@ mod tests {
|
|
|
2496
2512
|
assert!(db.files_under("nothing").unwrap().is_empty());
|
|
2497
2513
|
}
|
|
2498
2514
|
|
|
2515
|
+
#[test]
|
|
2516
|
+
fn owned_files_lists_each_file_once_and_skips_the_batch_owner() {
|
|
2517
|
+
let db = Db::new().unwrap();
|
|
2518
|
+
db.create_table("t1", "CREATE TABLE t1 (id TEXT)").unwrap();
|
|
2519
|
+
db.create_table("t2", "CREATE TABLE t2 (id TEXT)").unwrap();
|
|
2520
|
+
let row = HashMap::from([("id".into(), Value::Text("x".into()))]);
|
|
2521
|
+
for (table, file, idx) in [
|
|
2522
|
+
("t2", "c.jsonl", 0),
|
|
2523
|
+
("t1", "a.jsonl", 0),
|
|
2524
|
+
("t1", "a.jsonl", 1),
|
|
2525
|
+
("t1", "d/b.jsonl", 0),
|
|
2526
|
+
("t1", "", 0),
|
|
2527
|
+
] {
|
|
2528
|
+
db.insert_row(table, &row, file, idx).unwrap();
|
|
2529
|
+
}
|
|
2530
|
+
|
|
2531
|
+
assert_eq!(
|
|
2532
|
+
db.owned_files().unwrap(),
|
|
2533
|
+
vec![
|
|
2534
|
+
("t1".to_string(), "a.jsonl".to_string()),
|
|
2535
|
+
("t1".to_string(), "d/b.jsonl".to_string()),
|
|
2536
|
+
("t2".to_string(), "c.jsonl".to_string()),
|
|
2537
|
+
]
|
|
2538
|
+
);
|
|
2539
|
+
}
|
|
2540
|
+
|
|
2541
|
+
#[test]
|
|
2542
|
+
fn owned_files_surfaces_sql_failure() {
|
|
2543
|
+
let db = Db::new().unwrap();
|
|
2544
|
+
db.conn
|
|
2545
|
+
.execute("DROP TABLE _dirsql_internal_rows", [])
|
|
2546
|
+
.unwrap();
|
|
2547
|
+
let err = db.owned_files().unwrap_err();
|
|
2548
|
+
assert!(matches!(err, DbError::Sqlite(_)), "got: {err:?}");
|
|
2549
|
+
}
|
|
2550
|
+
|
|
2499
2551
|
#[test]
|
|
2500
2552
|
fn files_under_surfaces_sql_failure() {
|
|
2501
2553
|
let db = Db::new().unwrap();
|