Commit Graph

298 Commits

Author SHA1 Message Date
Pekka Enberg
910b3bc84c Merge pull request #99 from vivek378521/improve-makefile 2024-07-08 08:58:13 +03:00
Pekka Enberg
5be71e9b9b Merge pull request #98 from haaawk/remove_copies 2024-07-07 20:07:10 +03:00
Piotr Jastrzebski
c01f39aefb Make it possible to get row values as &str
This allows to avoid some unneeded copies and allocations.

Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 18:51:47 +02:00
Pekka Enberg
7818a97ac9 Merge pull request #97 from haaawk/primary_key
Fix primary key handling in BTreeTable
2024-07-07 19:14:15 +03:00
Piotr Jastrzebski
4a9e0dfc4d Add tests for primary key
Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 17:55:04 +02:00
Piotr Jastrzebski
77f50e7f7c Stop ignoring test_column_is_rowid_alias_single_integer_separate_primary_key_definition
Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 17:55:04 +02:00
Piotr Jastrzebski
861716f343 Use BTreeTable::primary_key_column_names in column_is_rowid_alias
Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 17:55:04 +02:00
Piotr Jastrzebski
f98c62bfb7 Setup BTreeTable::primary_key_column_names correctly
Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 17:54:47 +02:00
Piotr Jastrzebski
6bf9fbb0de Add primary_key_column_names to BTreeTable
Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 17:20:49 +02:00
Pekka Enberg
caf888151c Merge pull request #95 from haaawk/schema 2024-07-07 16:18:21 +03:00
Piotr Jastrzebski
828c4ce459 Add tests for BTreeTable::column_is_rowid_alias
Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 15:14:38 +02:00
Piotr Jastrzebski
73e037afa2 Add tests for hes_rowid field
Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 14:52:20 +02:00
Piotr Jastrzebski
50ecea0c86 Use has_rowid in column_is_rowid_alias
Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 14:52:20 +02:00
Piotr Jastrzebski
2aa0a92955 Setup has_rowid correctly for BTreeTable
Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 14:52:00 +02:00
Piotr Jastrzebski
9ddb0befc4 Add has_rowid field to BTreeTable
Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 14:32:28 +02:00
Pekka Enberg
541e966834 Add SELECT ... LIMIT to changelog 2024-07-07 14:28:36 +03:00
Pekka Enberg
eb7e5c8749 Add PRAGMA cache_size to changelog 2024-07-07 14:27:24 +03:00
Pekka Enberg
8eb64d23a6 Initial changelog 2024-07-07 14:26:10 +03:00
Pekka Enberg
5deea70a77 Merge pull request #92 from haaawk/to_sql
Simplify BTreeTable::to_sql
2024-07-07 14:20:02 +03:00
Pekka Enberg
b8165f52b1 Merge pull request #90 from crrow/topic/fix-error-handling-for-invalid-file
Replace unwrap() in PageIO.get() with proper error handling
2024-07-07 14:19:47 +03:00
Piotr Jastrzebski
708cae99b8 Simplify BTreeTable::to_sql
Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 13:15:04 +02:00
Ryan Tan
9c2988e0ed fix: replace unwrap() with ? 2024-07-07 19:12:48 +08:00
Pekka Enberg
ac5b0502b4 Merge pull request #89 from haaawk/improve_normalize_ident
Improve normalize_ident
2024-07-07 14:07:42 +03:00
Piotr Jastrzebski
81cf0430de Improve normalize_ident
Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 13:05:00 +02:00
Pekka Enberg
f1206ef29d Merge pull request #88 from haaawk/tests
Mark test code cfg(test) instead of allow(dead_code)
2024-07-07 14:00:00 +03:00
Pekka Enberg
ae92e2f7e7 Merge pull request #87 from haaawk/remove_allocation
Remove unneded allocation
2024-07-07 13:59:37 +03:00
Piotr Jastrzebski
8ce1c4a1ab Mark test code cfg(test) instead of allow(dead_code)
Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 12:59:06 +02:00
Pekka Enberg
30ec86a81e Add sorter utility functions and opcodes
This adds basic in-memory sorting utility functions, similar to SQLite's
src/vdbesort.c. We need to improve this later with external sorting so
to support large data sets.

This also adds sorting functionality to the VDBE. Note that none of this
is wired to SQL translation yet so it's unused for now.
2024-07-07 13:56:55 +03:00
Piotr Jastrzebski
5eea420994 Simplify normalize_ident
Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 12:46:09 +02:00
Piotr Jastrzebski
83c7e7bd95 Remove unneeded allocation
Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 12:45:49 +02:00
Pekka Enberg
dac8f4dcba Format source code with cargo fmt 2024-07-07 12:28:02 +03:00
Pekka Enberg
519e6b141f Add Table::column_is_rowid_alias() helper
We need to check for rowid alias elsewhere too with ORDER BY, for
example, so let's extract a small helper for that.
2024-07-07 12:27:08 +03:00
Pekka Enberg
77bfbd47be Merge pull request #84 from haaawk/rowid_alias
Remove incorrect Column::is_rowid_alias
2024-07-07 12:23:57 +03:00
Piotr Jastrzebski
fdbd010d89 Remove incorrect Column::is_rowid_alias
Fixes #83

Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 10:06:45 +02:00
Pekka Enberg
d46f523ac3 Merge pull request #82 from haaawk/derive_clone 2024-07-07 10:48:39 +03:00
Piotr Jastrzebski
3b3ea9a54f Derive Clone for Buffer
Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 09:28:58 +02:00
Pekka Enberg
23d93b402d Merge pull request #81 from haaawk/remove_submit 2024-07-07 10:27:15 +03:00
Piotr Jastrzebski
1004215853 Remove submit from LinuxIO write
Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 09:24:44 +02:00
Pekka Enberg
e5b0e8a512 Merge pull request #79 from haaawk/schema_add_table
Remove unneeded clone in add_table
2024-07-07 09:52:17 +03:00
Piotr Jastrzebski
7b6c6ef9f1 Remove unneeded clone in add_table
Signed-off-by: Piotr Jastrzebski <haaawk@gmail.com>
2024-07-07 08:47:47 +02:00
Pekka Enberg
e9032aaeaf Merge pull request #77 from pereman2/cli-opcodes
cli: added .opcodes helper
2024-07-06 15:51:32 +03:00
Pere Diaz Bou
c4f98e5f27 cli: add sqlite links in opcode description 2024-07-06 14:41:45 +02:00
Pekka Enberg
e54e1e661f Merge pull request #75 from heyrutvik/wait-for-completion
wait for the read completion
2024-07-06 15:37:33 +03:00
Pekka Enberg
6aa658a8c0 Merge pull request #76 from psarna/psarna/f55
translate: special case for LIMIT 0
2024-07-06 15:33:42 +03:00
Pere Diaz Bou
0b7226087b cli: added .opcodes helper
Improve quality of life while implementing core features.

```
Welcome to Limbo SQL shell!
> .opcodes
Abortable
---------
Verify that an Abort can happen. Assert if an Abort at this point might cause database corruption. This opcode only appears in debugging builds. An Abort is safe if either there have been no writes, or if there is an active statement journal.

Add
---------
Add the value in register P1 to the value in register P2 and store the result in register P3. If either input is NULL, the result is NULL.

AddImm
---------
Add the constant P2 to the value in register P1. The result is always an integer. To force any register to be an integer, just add 0.

Affinity
---------
Apply affinities to a range of P2 registers starting with P1. P4 is a string that is P2 characters long. The N-th character of the string indicates the column affinity that should be used for the N-th memory cell in the range.

AggFinal
---------
P1 is the memory location that is the accumulator for an aggregate or window function. Execute the finalizer function for an aggregate and store the result in P1. P2 is the number of arguments that the step function takes and P4 is a pointer to the FuncDef for this function. The P2 argument is not used by this opcode. It is only there to disambiguate functions that can take varying numbers of arguments. The P4 argument is only needed for the case where the step function was not previously called.
```

It can also search for specific opcode:
```
> .opcodes yield
Yield
---------
Swap the program counter with the value in register P1. This has the effect of yielding to a coroutine. If the coroutine that is launched by this instruction ends with Yield or Return then continue to the next instruction. But if the coroutine launched by this instruction ends with EndCoroutine, then jump to P2 rather than continuing with the next instruction. See also: InitCoroutine
```
2024-07-06 14:21:29 +02:00
Piotr Sarna
9376d68f73 testing: add a test for limit 0 2024-07-06 10:58:19 +02:00
Piotr Sarna
5bd3d283d1 translate: special case for LIMIT 0
Fixes #55
2024-07-06 10:58:19 +02:00
Rutvik Patel
fd9af2739e wait for the read completion
The submit_and_wait command waits for `n` completion events.
We were providing an incorrect argument, which caused the issue.
2024-07-06 13:48:58 +05:30
Pekka Enberg
095bf494f3 Merge pull request #73 from ishanjain28/makefile_fix
download wasm32-wasi target for wasm builds
2024-07-06 10:17:10 +03:00
Ishan Jain
61f6d69237 download wasm32-wasi target for wasm builds 2024-07-06 12:41:46 +05:30