Skytable-py

Latest version: v0.1.3

Safety actively analyzes 681812 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 5

0.8.2

Additions

- Server:
- Skyhash/2: Restored support for pipelines
- Enable online (runtime) recovery of transactional failures due to disk errors
- Added BlueQL shorthands:
- `INSERT`: `INS`
- `SELECT`: `SEL`
- `UPDATE`: `UPD`
- `DELETE`: `DEL`
- Added new `UPSERT` (shorthand: `UPS`) query
- Auto-compaction of journal(s) on boot
- Allow manual compaction with `skyd compact` subcommand
- CLI:
- Enable setting custom history file location using the `SKYSH_HISTORY_FILE` environment variable
- Correctly format rows as CSV when using `--eval`

Fixes

- Server:
- Fixed an issue where an incorrect handshake with multiple errors caused the client connection
to be terminated without yielding an error
- Fixed SE bug that resulted in unsafe cleanup of journals when multiple failures occur in sequence
- Fixed SE memory management bug in delta diff algorithm: In rare cases, a crash might occur on startup (*only during startup* and *not* at runtime)
- Fixed DCL command `sysctl alter user` not working properly (preventing change of any data)
- CLI:
- Fixed transient history file location. History is now always saved to $HOME/.sky_history
- Fixed an issue where queries were not correctly parameterized when using `--eval`

Platform notes

- 32-bit Windows (MSVC) has been downgraded to a Tier-2 platform and will likely be deprecated in the future
- Linux ARM64 is now a Tier-1 platform
- macOS ARM64 is a now a Tier-1X platform

0.8.1

Additions

- Added support for manual repair with the `skyd repair` command

Fixes

- **Server**:
- Fixed migration from v1 SE (released with v0.8.0-beta) to v2 SE (released in v0.8.0)
- Fixed health reporting
- Fixed a connection crash (not a server-wide crash) at the pre-connection stage when authentication data
was sent incorrectly
- **CLI**:
- Fixed `--eval` output. All server errors are now correctly written to `stderr`
- Guard against empty passwords

0.8.0

> This is the first release of Skytable Octave, and it changes the query API entirely making all previous versions incompatible
> excluding the data files which are automatically upgraded per our backwards compatibility guarantees

Additions

BlueQL query language
- DDL:
- `space`s are the equivalent of the `keyspace` from previous versions
- `model`s are the equivalent of `table`s from previous version
- The following queries were added:
- `CREATE SPACE [IF NOT EXISTS] ...`
- `CREATE MODEL [IF NOT EXISTS] ...`
- Nested lists are now supported
- Type definitions are now supported
- Multiple fields are now supported
- `ALTER SPACE ...`
- `ALTER MODEL ...`
- `DROP SPACE [IF EXISTS] ...`
- `DROP MODEL [IF EXISTS] ...`
- `USE <space>`:
- works just like SQL
- **does not work with DDL queries**: the reason it works in this way is to prevent accidental deletes
- `INSPECT ...`:
- `INSPECT global`: can be used to inspect the global state, seeing all spaces currently present on the system, users and other information. Some information is limited to the root account only (as JSON)
- `INSPECT space <space>`: can be used to inspect a single space, returning a list of models and relevant information (as JSON)
- `INSPECT model <model>`: can be used to inspect a single model, returning declaration and relevant information (as JSON)
- DML:
- **All actions removed**: All the prior `SET`, `GET` and other actions have been removed in favor of the new query language
- The following queries were added:
- `INSERT INTO <space>.<model>(col, col2, col3, ...)`
- Insert queries can use several ways of insertion including:
- a standard order of declared columns like this:
sql
INSERT INTO myspace.mymodel(col1, col2, col3, ...)

- using a map:
sql
INSERT INTO myspace.mymodel { col1: val1, col2: val2, col4: val4, col3: val3 }

- Inserts can also make use of function calls during inserts:
- It can be called like this: `INSERT INTO myspace.mymodel(uuidstr, ...)`
- The following functions are available:
- `uuidstr`: returns a string with a randomly generated v4 UUID
- `uuidbin`: same as `uuidstr` but returns it as a blob
- `timesec`: returns a 64-bit integer with the current time in seconds
- `SELECT [ALL] field1, field2, ... FROM <space>.<model> WHERE <primary_key_column> = <value> [LIMIT n]`
- New data manipulation via `UPDATE` allows arithmetic operations, string manipulation and more! Examples:
- `UPDATE <space>.<model> SET col_num += 1 WHERE <primary_key_column> = <value>`
- `UPDATE <space>.<model> SET mystring += " last part of string" WHERE ...`
- `DELETE FROM <space>.<model> WHERE <primary_key_column> = <value>`
- DCL:
- `SYSCTL CREATE USER <name> WITH { password: <password> }`
- `SYSCTL ALTER USER <name> WITH { password: <new password> }`
- `SYSCTL DROP USER <name>`

Fractal engine

- The fractal engine is the start of the development of advanced internal state management in Skytable
- Effectively balances performance and reliability tasks

Skyhash 2 protocol
- The `Skyhash-2` protocol now uses a multi-stage connection sequence for improved security and performance
- Seamless auth
- More types
- Fewer retransmissions

Storage engines
- **New `deltax` storage engine for data**:
- The `deltax` storage engine monitors the database for changes and only records the changes in an append only file
- The interval can be adjusted per requirements of reliability
- Faster and hugely more reliable than the previous engine
- **New DDL ACID transactions with with the `logx` engine**:
- DDL queries are now fully transactional which means that if they are executed, you can be sure that they were complete and synced to disk
- This largely improves reliability

New shell

- The new client shell easily authenticates based on the Skyhash-2 protocol
- More reliable

Benchmark tool

- New benchmark engines to enable more efficient and real-world load testing
- New benchmark engines use far lesser memory
- New engines can handle midway benchmark crashes

Breaking changes

- `skyd`:
- **The entire query API has changed as actions have been removed**
- **Spaces and models**: replace keyspaces and models respectively
- **Configuration**:
- The configuration system now uses YAML instead of TOML for better readability
- The configuration options have changed across CLI, ENV and the config file
- Authentication **must be enabled** irrespective of `dev`/`prod` mode
- `sky-bench`:
- New benchmark engines are completely different from the previous engines (see above)
- Configuration options have changed because of how the new Skytable engine works
- `skysh`:
- Configuration options have changed because of how the new Skytable engine works
- `sky-migrate`: **This tool is deprecated and has been removed**. The Skytable engine will now automatically manage data upgrades. (please see [this issue](https://github.com/skytable/skytable/issues/320) for discussion on the same)

0.7.6

Fixes

- `skyd`:
- Fixed erroneous removal of `auth` system table during tree cleanup (see 276)
- `sky-bench`:
- Fixed sample space calculation

Breaking changes

- The `testkey` subcommand was removed. This was done due to the addition of different data types making this command
redundant since it only works with simple key/value pairs

0.7.5

Additions

- `sys` action for system information and metrics:
- `info`: For static properties:
- `version`: Server version
- `protocol`: Protocol version string (Skyhash-x.y)
- `protover`: Protocol version float
- `metric`: For dynamic properties:
- `health`: System health
- `storage`: Bytes used for on-disk storage
- `INSPECT KEYSPACE` without arguments to inspect the current keyspace
- `INSPECT TABLE` without arguments to inspect the current table
- `AUTH WHOAMI` returns the AuthID of the currently logged in user

Improvements

- Enable multiples values to be pushed into a list at once with `lmod push`
- (skyd) Improved error reporting infrastructure with more details and context

Fixes

- skysh:
- Added error code output for new error codes which otherwise printed "Unknown error"
- Fixed handling of EOF keystroke
- skyd:
- Respect logging level for all terminal output
- Fixed LF check in protocol impl
- Fixed new instance detection (now checks if data directory is empty or not)
- Fixed panic resulting from corrupted metadata in `PARTMAP`
- Fixed invalid pipeline response when action error is propagated from a single stage
- Fixed bug where the preload wasn't flushed if a snapshot already flushed it before the
save on termination routine
- Fixed bug that prevented tree cleanup from working
- Disallow `PRELOAD` and `PARTMAP` as entity names
- Fixed edge case where time on host is incorrect, resulting in bad snapshot names which might
ultimately lead to loss of snapshot data
- Fixed remote snapshots with same names being overwritten
- (sky-bench) Fixed `testkey` causing RSTs

0.7.4

Additions

- Token-based authentication:
- `auth claim`
- `auth login <username> <token>`
- `auth logout`
- `auth adduser <username>`
- `auth deluser <username>`
- `auth restore <username>`
- `auth restore <origin key> <username>`
- `auth listuser`
- Shell now supports multiple `--eval` expressions
- Partial entity syntax: `:table` can be used for referring to the current table. For example
you can use `use :default` instead of `use default:default`

Fixes

- Fixed snapshot option being silently ignored in configuration file
- Fixed snapshot engine init failure

Page 1 of 5

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.