Diego Reis
e7d95399e3
Add Or bytecode
...
Take the logical OR of the values in register P1 and P2 and store the answer in register P3. If either P1 or P2 is nonzero (true) then the result is 1 (true) even if the other input is NULL. A NULL and false or two NULLs give a NULL output.
2025-01-25 02:54:14 -03:00
Diego Reis
aff454b5f6
Implement And bytecode
...
Take the logical AND of the values in registers P1 and P2 and write the result into register P3. If either P1 or P2 is 0 (false) then the result is 0 even if the other input is NULL. A NULL and true or two NULLs give a NULL output.
2025-01-25 02:12:50 -03:00
Pekka Enberg
c282b23e6b
Merge 'Implement Concat opcode' from Harin
...
This adds the Concat opcode to the VDBE.
Closes #758
2025-01-21 07:45:16 +02:00
sonhmai
dd436d3fc5
add PRAGMA statements in COMPAT doc
2025-01-21 11:27:22 +07:00
Harin
da53cc3821
Added Concat Opcode
2025-01-21 00:29:23 +05:30
Pekka Enberg
bda1e4e6ab
Merge 'Add support for json_object function' from Jorge Hermo
...
Relates to #127 . This PR is still in draft and I have a few left things
to do (tests, improve implementation), just opening it so anyone can
track this work meanwhile.
Closes #664
2025-01-20 09:36:56 +02:00
Pekka Enberg
c25d9a1824
Merge 'Implement Not' from Vrishabh
...
This PR adds support for Not operator and Opcode.
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com >
Closes #748
2025-01-20 09:17:45 +02:00
ben594
2ec52d14f1
Update compatibility status
2025-01-19 20:51:16 -05:00
psvri
e616bd5361
Implement Not
2025-01-20 00:21:23 +05:30
psvri
e16b3491c4
Fix null compares giving incorrect results
2025-01-19 00:44:38 +05:30
Pekka Enberg
20837d217b
Update COMPAT.md
2025-01-17 19:50:43 +02:00
psvri
e43271f53b
Implement regexp extension
2025-01-16 23:15:59 +05:30
Pekka Enberg
465c923db1
Update COMPAT.md
2025-01-16 09:14:46 +02:00
Jorge Hermo
fa8eb9549a
Merge with main
2025-01-15 22:10:35 +01:00
psvri
d3f28c51f4
Implement ShiftRight
2025-01-15 21:21:51 +05:30
psvri
5b4d82abbf
Implement ShiftLeft
2025-01-15 18:54:07 +05:30
PThorpe92
23d9d09b70
Add load_extension function, resolve shared lib extensions
2025-01-14 12:01:07 -05:00
Jorge Hermo
b3d3c8cf65
docs: update COMPAT.md
2025-01-14 00:04:54 +01:00
Pekka Enberg
1e94dbffcc
Merge branch 'main' into json-error-position
2025-01-13 18:21:37 +02:00
Peter Sooley
b5fed15997
implement json_error_position
2025-01-10 11:12:30 -08:00
Kacper Madej
1a85601261
Update docs
2025-01-10 13:41:47 +07:00
Kacper Madej
eebf9bfaac
Implement json_type
2025-01-09 11:29:17 +07:00
PThorpe92
ca428b3dda
Julianday function and additional tests/comments
2025-01-04 10:42:34 -05:00
PThorpe92
7c4a780cc2
Add DateTime func and support more modifiers
2025-01-04 08:41:03 -05:00
Kacper Madej
2e730ead25
Merge branch 'main' into json-extract
2024-12-31 15:41:18 +07:00
Kacper Madej
ad9acf7400
Add support for json_extract
2024-12-31 15:11:36 +07:00
Pekka Enberg
f87dc7cacc
Merge 'Support like function with escape' from Vrishabh
...
I have added support for like function with escape i.e like(X,Y,Z) .
There is good opportunity to refactor/cleanup the like operations which
can be done in another PR, as I wanted to keep the changes small .
Closes #568
2024-12-29 16:58:06 +02:00
psvri
1922b8ea38
Support like function with escape
2024-12-28 13:55:12 +05:30
PThorpe92
ddf229c432
Update COMPAT.md
2024-12-27 15:42:13 -05:00
Peter Sooley
28244b10d6
implement json_array_length
2024-12-26 15:08:11 -08:00
PThorpe92
f96f289609
Remove unnecessary nanos arg from uuid7, add insn const
2024-12-21 09:13:48 -05:00
PThorpe92
c1561ecbb0
Tests for uuid funcitons, add compat docs
2024-12-21 09:13:48 -05:00
Kacper Madej
e2fc03e822
Update COMPAT.md
2024-12-20 11:32:57 +01:00
Lauri Virtanen
e69ee80fac
Support log(X) and log(B,X) math functions
2024-12-17 00:14:25 +02:00
Lauri Virtanen
89d0289444
Support pi() function
2024-12-17 00:14:25 +02:00
Lauri Virtanen
5e426a7624
Support binary math functions
2024-12-16 22:29:05 +02:00
Lauri Virtanen
f69fdc1645
Support unary math functions
2024-12-16 19:31:20 +02:00
Lauri Virtanen
9e0a9b5490
Add mathematical functions table to COMPAT.md
2024-12-16 19:31:10 +02:00
Pekka Enberg
7907944f10
Update COMPAT.md
2024-12-15 09:14:50 +02:00
jussisaurio
30920d9ddc
update compat.md
2024-12-14 21:30:49 +02:00
Kacper Kołodziej
dda5e1e871
update scalar function list in COMPAT.md
...
add `unhex(x, y)`
2024-12-14 00:55:44 +01:00
Alperen Keleş
841a4fe2f8
Merge branch 'tursodatabase:main' into main
2024-12-12 13:13:41 -05:00
Pekka Enberg
5796b418b9
Merge 'Add support for soundex() function' from flaneur
...
add [soundex](https://www.sqlite.org/lang_corefunc.html#soundex ) scalar
function.
it seems that sqlite did not enable `soundex()` function by default
unless build it with `SQLITE_SOUNDEX`, while the sqlite in the ci
workflow did not enable it. this pr skipped the test over `soundex()`
temporarily in the `scalar-function.test` file.
Closes #453
2024-12-12 18:10:46 +02:00
Pekka Enberg
91764b85e6
Merge 'Add bitwise vdbe ops' from Preston Thorpe
...
Love the project, been following your blog posts for quite a while now.
I asked on Discord prior to submitting this, just because I didn't see a
specific issue for this feature... but if this PR is out of scope for
contributors, feel free to close it as I just had a good time hacking on
it.
This PR adds support for `BitAnd`, `BitOr`, and `BitNot` operators in
the vdbe, as well as unary expressions applied to aggregate functions;
which was needed in order to have `BitNot` support the same tests that
the other operators had.
*Also added unary negation of function calls, because since unary ops
were added, I figured adding support for the other existing unary
operator might be in scope, but lmk if not.
Let me know if there is any more tests or documentation to add/improve.
Closes #445
2024-12-12 17:35:12 +02:00
krishvishal
33f3eb02c8
Change octet_length to yes in COMPAT.md
...
- Its added in https://github.com/tursodatabase/limbo/pull/430
2024-12-12 19:46:01 +05:30
Li Yazhou
03288e5170
add impl about scalar function soundex with test
2024-12-12 21:48:05 +08:00
Alex Miller
c4d4569dc9
Merge remote-tracking branch 'upstream/main' into expr-iif
2024-12-11 20:13:54 -08:00
alpaylan
da28ed51ca
add implementation and tests for replace scalar function
2024-12-11 16:23:13 -05:00
PThorpe92
d5391dc716
Add vdbe bitwise operators: and, or, not
2024-12-11 11:06:22 -05:00
jussisaurio
eb9374aebf
Merge 'Add support for CASE expressions.' from Alex Miller
...
There's two forms of case:
CASE (WHEN [bool expr] THEN [value])+ (ELSE [value])? END
which checks a series of boolean conditions, and:
CASE expr (WHEN [expr] THEN [value})+ (ELSE [value])? END
Which checks a series of equality conditions.
This implements support for both. Note that the ELSE is optional, and
will be equivalent to `ELSE null` if not specified.
sqlite3 gives the implementation as:
```
sqlite> explain select case a WHEN a THEN b WHEN c THEN d ELSE 0 END from casetest;
addr opcode p1 p2 p3 p4 p5 comment
---- ------------- ---- ---- ---- ------------- -- -------------
0 Init 0 16 0 0 Start at 16
1 OpenRead 0 3 0 4 0 root=3 iDb=0; casetest
2 Rewind 0 15 0 0
3 Column 0 0 2 0 r[2]= cursor 0 column 0
4 Column 0 0 3 0 r[3]= cursor 0 column 0
5 Ne 3 8 2 BINARY-8 83 if r[2]!=r[3] goto 8
6 Column 0 1 1 0 r[1]= cursor 0 column 1
7 Goto 0 13 0 0
8 Column 0 2 3 0 r[3]= cursor 0 column 2
9 Ne 3 12 2 BINARY-8 83 if r[2]!=r[3] goto 12
10 Column 0 3 1 0 r[1]= cursor 0 column 3
11 Goto 0 13 0 0
12 Integer 0 1 0 0 r[1]=0
13 ResultRow 1 1 0 0 output=r[1]
14 Next 0 3 0 1
15 Halt 0 0 0 0
16 Transaction 0 0 2 0 1 usesStmtJournal=0
17 Goto 0 1 0 0
```
and after this patch, limbo gives:
```
addr opcode p1 p2 p3 p4 p5 comment
---- ----------------- ---- ---- ---- ------------- -- -------
0 Init 0 19 0 0 Start at 19
1 OpenReadAsync 0 4 0 0 table=casetest, root=4
2 OpenReadAwait 0 0 0 0
3 RewindAsync 0 0 0 0
4 RewindAwait 0 18 0 0 Rewind table casetest
5 Column 0 0 2 0 r[2]=casetest.a
6 Column 0 0 3 0 r[3]=casetest.a
7 Ne 2 3 10 0 if r[2]!=r[3] goto 10
8 Column 0 1 1 0 r[1]=casetest.b
9 Goto 0 15 0 0
10 Column 0 2 3 0 r[3]=casetest.c
11 Ne 2 3 14 0 if r[2]!=r[3] goto 14
12 Column 0 3 1 0 r[1]=casetest.d
13 Goto 0 15 0 0
14 Integer 0 1 0 0 r[1]=0
15 ResultRow 1 1 0 0 output=r[1]
16 NextAsync 0 0 0 0
17 NextAwait 0 5 0 0
18 Halt 0 0 0 0
19 Transaction 0 0 0 0
20 Goto 0 1 0 0
```
And then as there's nowhere to annotate this new support in COMPAT.md, I
added a corresponding heading for SELECT expressions and what is/isn't
supported.
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com >
Closes #425
2024-12-11 17:05:41 +02:00