Releases
Release notes for Resource Surveillance (surveilr) 0.21.0
We are excited to announce the release of new features in surveilr, specifically focusing on the shell command. This release brings a lightweight, unopinionated alternative to sqlite3 or duckdb, allowing users to execute SQL scripts easily, while offering minimal logging compared to the highly opinionated orchestrate command.
The shell and orchestrate commands are now closely related, with shell providing a simpler execution flow without detailed tracking. In contrast, orchestrate offers robust logging and support functions.
New Features
1. Default Engine
surveilr shell --engine rusqlite: Rusqlite is the default engine for theshellcommand unless the--engineoption is overridden.
2. Multi-Script Execution
surveilr shell first.sql second.sql https://site.com/third.sql:- Supports executing multiple SQL scripts passed as arguments, whether from local or remote locations.
- Globs: You can now use globs such as
**/*.sqland**/*.sql.tsto match and execute files in sorted depth-first order. - File Type Handling:
- Files ending in
.sqlare treated as direct SQL files. - Files ending in other extensions (like
.sql.ts) are treated as potentially runnable files:- Local Executable: If the file is local and executable, it will be run, and the STDOUT output will be used for SQL execution.
- Remote Executable: For security reasons, remote executable files cannot be run and will produce an error message:
remote files cannot be executed due to safety reasons.
- Files ending in
3. Command-Line SQL Execution
surveilr shell --cmd "select * from table": Now supports executing SQL commands passed directly through the command line, similar tosqlite3’s-cmdoption.
4. STDIN Support
cat my.sql | surveilr shellandsurveilr shell < my.sql:surveilrnow supports executing SQL scripts via STDIN, allowing seamless integration with piping or file redirection.
5. Observability and Logging
- Logging Execution: Unless the
--no-observabilityflag is used,surveilr shellwill log the execution into the orchestration tables:orchestration_nature: Logs the nature of the execution asshell-<engine>(e.g.,shell-rusqlite).orchestration_session: Logs a new session for each execution.orchestration_session_log: Logs any exceptions or errors that occur during the execution for better debugging and traceability.
Assets
Please find the release here.