Commit Graph

279 Commits

Author SHA1 Message Date
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
Pekka Enberg
1149ba11dc Merge pull request #70 from KMJ-007/main
.schema without args shows all tables
2024-07-06 08:56:39 +03:00
Pekka Enberg
a51e79d5a1 Add helper guide for contributors 2024-07-06 08:48:28 +03:00
Karan Janthe
26dcfb7e8f Merge branch 'penberg:main' into main 2024-07-06 11:10:25 +05:30
Karan Janthe
c4e85cb8da .schema without args shows all table indexs 2024-07-06 11:09:29 +05:30
Pekka Enberg
e6f50bec60 Merge pull request #69 from KMJ-007/main
added .schema command in cli
2024-07-06 08:30:21 +03:00
Karan Janthe
8e1c737236 added .schema command in cli 2024-07-06 10:50:26 +05:30
Pekka Enberg
7cf3c80323 Update SQLite compatibility document
We don't support `SELECT ... WHERE` so mark it as such.
2024-07-05 20:07:18 +03:00
Pekka Enberg
5128b89474 Update SQLite compatibility document
We now support avg() and sum() functions.
2024-07-05 20:06:13 +03:00
Pekka Enberg
c7a67a1bf4 Fix ResultRow operands
Fix ResultRow operands to follow SQLite bytecode format for consistency.
2024-07-05 18:13:06 +03:00
Pekka Enberg
be11460c0e Merge pull request #68 from penberg/insn-dump-cleanup
Clean up insn_to_str()
2024-07-05 11:53:57 +03:00
Pekka Enberg
2f3c3b5404 Clean up insn_to_str()
The SQLite documentation explicitly says that P1, P2, and P3 are 32-bit
signed integers. P4 is a value, and P5 is a 16-bit unsigned integer.
Although we use different types for operands, the `EXPLAIN` output
should be compatible with SQLite and, therefore, use those types.
2024-07-05 11:39:21 +03:00
Pekka Enberg
8a09f2a29e Tweak mascot size 2024-07-05 09:52:29 +03:00
Pekka Enberg
2ee21443c0 Limbo mascot 2024-07-05 09:51:56 +03:00
Pekka Enberg
4a089e6e4e Merge pull request #67 from pereman2/fix-float-parse 2024-07-05 08:43:11 +03:00
Pekka Enberg
5f4927b5a4 Merge pull request #66 from pereman2/agg-evaluate-extra 2024-07-05 08:42:29 +03:00
Pere Diaz Bou
ae524a07e2 core: Insn::Real support
Signed-off-by: Pere Diaz Bou <pere-altea@hotmail.com>
2024-07-04 17:19:05 +02:00
Pere Diaz Bou
6bebfccd99 core: fix evaluating columns a part from agg
Signed-off-by: Pere Diaz Bou <pere-altea@hotmail.com>
2024-07-04 17:02:54 +02:00
Pekka Enberg
f4369c873f Simplify AggFinal emission in translate_select() 2024-07-04 12:21:27 +03:00