Pere Diaz Bou
|
d41319a837
|
core: remove hash for Table
Signed-off-by: Pere Diaz Bou <pere-altea@hotmail.com>
|
2024-07-09 18:14:32 +02:00 |
|
Pere Diaz Bou
|
46592e7b34
|
core: fix translate_expr args from new agg functions
Signed-off-by: Pere Diaz Bou <pere-altea@hotmail.com>
|
2024-07-09 18:10:18 +02:00 |
|
Pere Diaz Bou
|
90a4fc6bb8
|
test: cross-join-specific-columns
Signed-off-by: Pere Diaz Bou <pere-altea@hotmail.com>
|
2024-07-09 18:08:16 +02:00 |
|
Pere Diaz Bou
|
110df3cff1
|
core: fix resolve table name from join
Signed-off-by: Pere Diaz Bou <pere-altea@hotmail.com>
|
2024-07-09 18:08:16 +02:00 |
|
Pere Diaz Bou
|
e0431fdde1
|
testing: update testing with products table and cross join test
Signed-off-by: Pere Diaz Bou <pere-altea@hotmail.com>
|
2024-07-09 18:08:16 +02:00 |
|
Pere Diaz Bou
|
0b0885325c
|
core: refactor generation of table row read
In sqlite3 generating the loop to read multiple joined tables follows
the pattern:
```c
sqlite3WhereBegin();
sqlite3WhereEnd();
```
and this generates:
```
sqlite> explain select * from users, products;
addr opcode p1 p2 p3 p4 p5 comment
---- ------------- ---- ---- ---- ------------- -- -------------
0 Init 0 23 0 0 Start at 23
1 OpenRead 0 2 0 10 0 root=2 iDb=0; users
2 OpenRead 1 3 0 3 0 root=3 iDb=0; products
3 Rewind 0 22 0 0
4 Rewind 1 22 0 0
5 Rowid 0 1 0 0 r[1]=users.rowid
6 Column 0 1 2 0 r[2]= cursor 0 column 1
7 Column 0 2 3 0 r[3]= cursor 0 column 2
8 Column 0 3 4 0 r[4]= cursor 0 column 3
9 Column 0 4 5 0 r[5]= cursor 0 column 4
10 Column 0 5 6 0 r[6]= cursor 0 column 5
11 Column 0 6 7 0 r[7]= cursor 0 column 6
12 Column 0 7 8 0 r[8]= cursor 0 column 7
13 Column 0 8 9 0 r[9]= cursor 0 column 8
14 Column 0 9 10 0 r[10]= cursor 0 column 9
15 Rowid 1 11 0 0 r[11]=products.rowid
16 Column 1 1 12 0 r[12]= cursor 1 column 1
17 Column 1 2 13 0 r[13]= cursor 1 column 2
18 RealAffinity 13 0 0 0
19 ResultRow 1 13 0 0 output=r[1..13]
20 Next 1 5 0 1
21 Next 0 4 0 1
22 Halt 0 0 0 0
23 Transaction 0 0 2 0 1 usesStmtJournal=0
24 Goto 0 1 0 0
```
`sqlite3WhereBegin()` as the name represents, mainly does stuff with
`WHERE` expressions + loop generation. This is why I decided to change
the name to `translate_tables_begin` to try improve the naming.
In our case:
```rust
translate_table_open_cursor(program, &mut context, select.from.as_ref().unwrap());
translate_table_open_loop(program, &mut context, loop_index);
```
translates into:
```sql
> explain select * from users, products;
addr opcode p1 p2 p3 p4 p5 comment
---- ------------- ---- ---- ---- ------------- -- -------
0 Init 0 28 0 0 Start at 28
1 OpenReadAsync 0 2 0 0 root=2
2 OpenReadAwait 0 0 0 0
3 OpenReadAsync 1 3 0 0 root=3
4 OpenReadAwait 0 0 0 0
5 RewindAsync 0 0 0 0
6 RewindAwait 0 27 0 0
7 RewindAsync 1 0 0 0
8 RewindAwait 1 25 0 0
9 RowId 0 0 0 0
10 Column 0 1 1 0 r[1]= cursor 0 column 1
11 Column 0 2 2 0 r[2]= cursor 0 column 2
12 Column 0 3 3 0 r[3]= cursor 0 column 3
13 Column 0 4 4 0 r[4]= cursor 0 column 4
14 Column 0 5 5 0 r[5]= cursor 0 column 5
15 Column 0 6 6 0 r[6]= cursor 0 column 6
16 Column 0 7 7 0 r[7]= cursor 0 column 7
17 Column 0 8 8 0 r[8]= cursor 0 column 8
18 Column 0 9 9 0 r[9]= cursor 0 column 9
19 RowId 1 10 0 0
20 Column 1 1 11 0 r[11]= cursor 1 column 1
21 Column 1 2 12 0 r[12]= cursor 1 column 2
22 ResultRow 0 13 0 0 output=r[0..13]
23 NextAsync 1 0 0 0
24 NextAwait 1 8 0 0
25 NextAsync 0 0 0 0
26 NextAwait 0 6 0 0
27 Halt 0 0 0 0
28 Transaction 0 0 0 0
29 Goto 0 1 0 0
```
This works on as many joined tables but... it is ready to extend for
further join operations.
Signed-off-by: Pere Diaz Bou <pere-altea@hotmail.com>
|
2024-07-09 18:08:16 +02:00 |
|
Pekka Enberg
|
c5272afdd6
|
Add JSON functions to sqlite-compat.md
|
2024-07-09 12:28:31 +03:00 |
|
Pekka Enberg
|
704a9c214e
|
Update compatibility doc and changelog
|
2024-07-09 12:17:55 +03:00 |
|
Pekka Enberg
|
01ed0f8257
|
Merge pull request #107 from ishanjain28/iouring_direct
|
2024-07-09 09:19:11 +03:00 |
|
Ishan Jain
|
c171b63ec2
|
use O_DIRECT for file read operations
|
2024-07-09 11:41:20 +05:30 |
|
Pekka Enberg
|
32df171786
|
Merge pull request #106 from mazchew/add-min-aggregate-function
|
2024-07-08 22:21:20 +03:00 |
|
Pekka Enberg
|
3c76a68a6d
|
Update compatibility matrix and changelog
|
2024-07-08 22:18:12 +03:00 |
|
mazchew
|
fc0c3d539a
|
add min aggregate function
add changes for all.test
|
2024-07-09 03:14:02 +08:00 |
|
Pekka Enberg
|
7bc83e5a0f
|
Merge pull request #105 from mazchew/add-max-aggregate-function
|
2024-07-08 21:59:59 +03:00 |
|
mazchew
|
3f339d07d3
|
add max aggregate function
|
2024-07-09 02:45:34 +08:00 |
|
Pekka Enberg
|
e5d55398db
|
Merge pull request #104 from KunalSin9h/dot-commands
|
2024-07-08 20:51:50 +03:00 |
|
Kunal Singh
|
46cd1f067b
|
fix: missing dot command description in unknown command message
|
2024-07-08 23:19:21 +05:30 |
|
Pekka Enberg
|
3a9a54e8d2
|
Merge pull request #103 from KunalSin9h/clippy
|
2024-07-08 20:37:33 +03:00 |
|
Kunal Singh
|
00c26286ce
|
fix: lint warnings
|
2024-07-08 22:43:11 +05:30 |
|
Pekka Enberg
|
0e60f077ca
|
Merge pull request #102 from KunalSin9h/empty-args
fix: unhanded empty args in aggregate function
|
2024-07-08 17:37:30 +03:00 |
|
Kunal Singh
|
fab8f1777a
|
fix: unhandled empty args in aggregate function
|
2024-07-08 19:13:53 +05:30 |
|
Pekka Enberg
|
57cdabcc99
|
Merge pull request #100 from vivek378521/add-agg-fn-count
|
2024-07-08 11:53:30 +03:00 |
|
Vivek Khatri
|
fe7c1b5b1d
|
Merge branch 'main' into add-agg-fn-count
|
2024-07-08 13:58:14 +05:30 |
|
Vivek
|
94358dc665
|
Add aggregate fn: count
|
2024-07-08 13:55:06 +05:30 |
|
Pekka Enberg
|
b7566ae720
|
Add opcodes to SQLite compatibility doc
|
2024-07-08 09:13:37 +03:00 |
|
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 |
|