Skip to content

Releases: elliotchance/vsql

v0.5.0

29 Jul 14:01
baa523a
Compare
Choose a tag to compare
Greatly improved expressions (#18)

- Expressions can now contain artithmetic for binary operations (+, -, *
and /).
- Expressions now follow correct operator pecedence.
- Added SQLSTATE 22012 "division by zero".
- Adding grouping expression (parenthesis).
- Added concatenation `||`.
- Added logical operators for `AND`, `OR` and `NOT`.
- Added unary operators `+` and `-`.
- Changes not equal operator `!=` to `<>` to correct follow the SQL
standard.
- Renamed the lexer tokens to be same as the naming conventions in the
SQL standard.

v0.4.1

28 Jul 00:19
837d5b9
Compare
Choose a tag to compare
row: Improve API and implementation (#14)

- The `Row` now has new functions for `get_bool`, `get_null` and
`get_unknown` for respective value types.
- The get methods are sensitive to returning only on the correct types
(ie. `get_f64` can only be used on numeric values).
- An error is returned from any get method if the column does not exist.
- Should a column not exist but there is a column with a different
case, a more helpful message is returned like
"no such column foo, did you mean FOO?"

Fixes #13

v0.4.0

27 Jul 00:22
a649dd4
Compare
Choose a tag to compare
Added vsql-server (#9)

`vsql-server` will run vsql in server mode on the default port 3210. You
can connect to it with any compatible PostgeSQL client.

The PostgreSQL protocol implementation is very basic so it may not
handle many edge cases yet.

v0.3.3

27 Jul 00:17
3f61c59
Compare
Choose a tag to compare
Cleanup storage.v (#8)

Now that V supports seek/tell we no longer have to track the positions
manually.

v0.3.2

26 Jul 22:10
b1121f5
Compare
Choose a tag to compare
Statements optionally terminated by `;` (#12)

A statement can optionally be terminated by `;` and any tokens after
that is now considered an error.

The SQL test suite has been updated so that statements can span multiple
lines since all statements must be terminated with `;`.

Overall this makes queries and test more compatible and reliable.

v0.3.1

26 Jul 21:20
6ad17e2
Compare
Choose a tag to compare
Better handling of SQLSTATE (#11)

The SQLState structs now carry the SQLSTATE in their `code` attribute.
Along with the new functions `sqlstate_from_int()` and
`sqlstate_to_int()` more flexible printing and matching operations are
possible.

v0.3.0

26 Jul 18:39
27f7c38
Compare
Choose a tag to compare
Adding NULL values and constraints (#10)

- NULL can now be used as a value.
- Specifying a `NOT NULL` constraint on table columns will ensure that
NULL values will not be added to the table. `NULL` can also be
explicitely provided to allow for `NULL`s.
- New expressions in the form of `X IS NULL` and `X IS NOT NULL` can be
used in both `SELECT` expressions and all `WHERE` clauses.
- A new SQLSTATE 23502 violates non-null constraint has been added.

As a consequence, also:

- TRUE, FALSE and UNKNOWN (boolean values) can now be used in
expressions.
- SELECT statements support multiple expressions (not just a single
value or `*`). However, the `*` is still not actually implemented.
- The version stored in the databse file will now start to increment
and be enforced for compatibility when opening a database.

v0.2.5

24 Jul 21:14
5aed64d
Compare
Choose a tag to compare
Added type checking (#7)

Types from statements like INSERT and UPDATE are now checked for casting
compatibility.

v0.2.4

24 Jul 16:50
0d5b19e
Compare
Choose a tag to compare
Adding delimited identifiers (#6)

Delimited identifiers are surrounded by double-quotes. A delimited
identifier casing is kept the same. Whereas as regular identifier is not
case-sensitive and will always be represented as upper case.

v0.2.3

24 Jul 16:15
3d1c610
Compare
Choose a tag to compare
Disallow reserved words for identifiers (#5)

Table and column names may not use reserved words. This does not
included SQL standard defined non-reserve words. Some of these words
are also parser keywords so they will return a different error, that's
OK, just as long as the name itself can not be used.