sqlmath 2026.7.30 → 2026.9.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +53 -11
- package/_sqlmath.napi6_darwin_arm64.node +0 -0
- package/_sqlmath.napi6_darwin_x64.node +0 -0
- package/_sqlmath.napi6_linux_x64.node +0 -0
- package/_sqlmath.napi6_win32_x64.node +0 -0
- package/_sqlmath.shell_darwin_arm64 +0 -0
- package/_sqlmath.shell_darwin_x64 +0 -0
- package/_sqlmath.shell_linux_x64 +0 -0
- package/_sqlmath.shell_win32_x64.exe +0 -0
- package/jslint.mjs +2210 -975
- package/package.json +1 -1
- package/sqlmath/lib_lightgbm_darwin_arm64.dylib +0 -0
- package/sqlmath/lib_lightgbm_darwin_x64.dylib +0 -0
- package/sqlmath/lib_lightgbm_linux_x64.so +0 -0
- package/sqlmath/lib_lightgbm_win32_x64.dll +0 -0
- package/sqlmath.mjs +41 -37
- package/sqlmath_browser.mjs +103 -104
- package/sqlmath_wasm.js +1 -1
- package/sqlmath_wasm.wasm +0 -0
- package/test.mjs +597 -98
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,22 @@
|
|
|
7
7
|
- sqlite - Add similar error-handling from builtin-sql-function PERCENTILE() into custom-sql-function QUANTILE().
|
|
8
8
|
- none
|
|
9
9
|
|
|
10
|
+
# v2026.9.29
|
|
11
|
+
- sqlmath - Update sql-function WIN_COINFLIP2() to calculate 'biasba50' - balanced-accuracy-minus-50.
|
|
12
|
+
- jslint-ecma - Add Exponentiation-assignment-operator '**=' support.
|
|
13
|
+
- jslint-cli - Add cli-option jslint_autofix=filename to autofix whitespace-warnings, and add function jslint_phase6_autofix().
|
|
14
|
+
- jslint-ecma - Add ES2018-feature Asynchronous Iteration - for await...of.
|
|
15
|
+
- jslint-cli - Skip dotfiles when linting a directory.
|
|
16
|
+
|
|
17
|
+
# v2026.8.31
|
|
18
|
+
- jslint-ci - Update ci-shell-function shGitLsTree() to include sha256 hash of files.
|
|
19
|
+
- sqlmath - Cleanup c-function winSinefitSnr().
|
|
20
|
+
- sqlmath - Update sql-function WIN_SINEFIT2() argument modeSnr with bitmask, allowing selective sine-fit of each column, to avoid wasting cpu on columns that don't need it.
|
|
21
|
+
- lgbm - Upgrade to lightgbm-v4.7.0.
|
|
22
|
+
- sqlite - Upgrade to sqlite-v3.51.3.
|
|
23
|
+
- sqlmath - Remove obsolete sql-functions MEDIAN2(), QUANTILE(), superseded by sqlite-builtins.
|
|
24
|
+
- sqlmath - Fix c-header conflict between dlfcn.h and Python.h.
|
|
25
|
+
|
|
10
26
|
# v2026.7.30
|
|
11
27
|
- jslint-ecma - Add ES2015-feature for..of.
|
|
12
28
|
- jslint - Change scope from scope_function to scope_block:
|
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
# Status
|
|
11
11
|
|
|
12
|
-
| Branch | [master<br>(v2026.
|
|
12
|
+
| Branch | [master<br>(v2026.9.29)](https://github.com/sqlmath/sqlmath/tree/master) | [beta<br>(Web Demo)](https://github.com/sqlmath/sqlmath/tree/beta) | [alpha<br>(Development)](https://github.com/sqlmath/sqlmath/tree/alpha) |
|
|
13
13
|
|--:|:--:|:--:|:--:|
|
|
14
14
|
| CI | [](https://github.com/sqlmath/sqlmath/actions?query=branch%3Amaster) | [](https://github.com/sqlmath/sqlmath/actions?query=branch%3Abeta) | [](https://github.com/sqlmath/sqlmath/actions?query=branch%3Aalpha) |
|
|
15
15
|
| Coverage | [](https://sqlmath.github.io/sqlmath/branch-master/.artifact/coverage/index.html) | [](https://sqlmath.github.io/sqlmath/branch-beta/.artifact/coverage/index.html) | [](https://sqlmath.github.io/sqlmath/branch-alpha/.artifact/coverage/index.html) |
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
<br><br>
|
|
21
|
+
|
|
21
22
|
# Table of Contents
|
|
22
23
|
|
|
23
24
|
1. [Web Demo](#web-demo)
|
|
@@ -78,6 +79,7 @@
|
|
|
78
79
|
|
|
79
80
|
|
|
80
81
|
<br><br>
|
|
82
|
+
|
|
81
83
|
# Web Demo
|
|
82
84
|
- https://sqlmath.github.io/sqlmath/index.html
|
|
83
85
|
|
|
@@ -85,6 +87,7 @@
|
|
|
85
87
|
|
|
86
88
|
|
|
87
89
|
<br><br>
|
|
90
|
+
|
|
88
91
|
# Why sqlmath?
|
|
89
92
|
|
|
90
93
|
SQLite is everywhere — it's the most deployed database in the world. But it lacks the statistical and ML functions needed for data-science. sqlmath fixes that.
|
|
@@ -97,10 +100,12 @@ SQLite is everywhere — it's the most deployed database in the world. But it la
|
|
|
97
100
|
|
|
98
101
|
|
|
99
102
|
<br><br>
|
|
103
|
+
|
|
100
104
|
# Quickstart
|
|
101
105
|
|
|
102
106
|
|
|
103
107
|
<br><br>
|
|
108
|
+
|
|
104
109
|
### Python
|
|
105
110
|
|
|
106
111
|
```shell
|
|
@@ -135,6 +140,7 @@ db_close(db)
|
|
|
135
140
|
|
|
136
141
|
|
|
137
142
|
<br><br>
|
|
143
|
+
|
|
138
144
|
### JavaScript (Node.js)
|
|
139
145
|
|
|
140
146
|
```shell
|
|
@@ -165,16 +171,19 @@ await dbCloseAsync(db);
|
|
|
165
171
|
|
|
166
172
|
|
|
167
173
|
<br><br>
|
|
174
|
+
|
|
168
175
|
### Browser (WebAssembly)
|
|
169
176
|
|
|
170
177
|
Try it live: **[sqlmath.github.io/sqlmath](https://sqlmath.github.io/sqlmath/index.html)**
|
|
171
178
|
|
|
172
179
|
|
|
173
180
|
<br><br>
|
|
181
|
+
|
|
174
182
|
# Built-in SQL Functions
|
|
175
183
|
|
|
176
184
|
|
|
177
185
|
<br><br>
|
|
186
|
+
|
|
178
187
|
### Math
|
|
179
188
|
|
|
180
189
|
| Function | Description |
|
|
@@ -190,6 +199,7 @@ Try it live: **[sqlmath.github.io/sqlmath](https://sqlmath.github.io/sqlmath/ind
|
|
|
190
199
|
|
|
191
200
|
|
|
192
201
|
<br><br>
|
|
202
|
+
|
|
193
203
|
### Statistics (Aggregate)
|
|
194
204
|
|
|
195
205
|
| Function | Description |
|
|
@@ -201,6 +211,7 @@ Try it live: **[sqlmath.github.io/sqlmath](https://sqlmath.github.io/sqlmath/ind
|
|
|
201
211
|
|
|
202
212
|
|
|
203
213
|
<br><br>
|
|
214
|
+
|
|
204
215
|
### Statistics (Scalar)
|
|
205
216
|
|
|
206
217
|
| Function | Description |
|
|
@@ -210,6 +221,7 @@ Try it live: **[sqlmath.github.io/sqlmath](https://sqlmath.github.io/sqlmath/ind
|
|
|
210
221
|
|
|
211
222
|
|
|
212
223
|
<br><br>
|
|
224
|
+
|
|
213
225
|
### Arrays
|
|
214
226
|
|
|
215
227
|
| Function | Description |
|
|
@@ -221,12 +233,14 @@ Try it live: **[sqlmath.github.io/sqlmath](https://sqlmath.github.io/sqlmath/ind
|
|
|
221
233
|
|
|
222
234
|
|
|
223
235
|
<br><br>
|
|
236
|
+
|
|
224
237
|
### Date/Time
|
|
225
238
|
|
|
226
239
|
sqlmath extends SQLite's date functions with integer-format conversions (YYYYMMDDHHMMSS).
|
|
227
240
|
|
|
228
241
|
|
|
229
242
|
<br><br>
|
|
243
|
+
|
|
230
244
|
### Time Series / Signal Processing
|
|
231
245
|
|
|
232
246
|
| Function | Description |
|
|
@@ -236,6 +250,7 @@ sqlmath extends SQLite's date functions with integer-format conversions (YYYYMMD
|
|
|
236
250
|
|
|
237
251
|
|
|
238
252
|
<br><br>
|
|
253
|
+
|
|
239
254
|
### Compression
|
|
240
255
|
|
|
241
256
|
| Function | Description |
|
|
@@ -247,6 +262,7 @@ sqlmath extends SQLite's date functions with integer-format conversions (YYYYMMD
|
|
|
247
262
|
|
|
248
263
|
|
|
249
264
|
<br><br>
|
|
265
|
+
|
|
250
266
|
### Type Casting
|
|
251
267
|
|
|
252
268
|
| Function | Description |
|
|
@@ -258,6 +274,7 @@ sqlmath extends SQLite's date functions with integer-format conversions (YYYYMMD
|
|
|
258
274
|
|
|
259
275
|
|
|
260
276
|
<br><br>
|
|
277
|
+
|
|
261
278
|
### Cryptography
|
|
262
279
|
|
|
263
280
|
| Function | Description |
|
|
@@ -271,6 +288,7 @@ SELECT HEX(sha256('hello')) AS hash;
|
|
|
271
288
|
|
|
272
289
|
|
|
273
290
|
<br><br>
|
|
291
|
+
|
|
274
292
|
# Machine Learning with LightGBM
|
|
275
293
|
|
|
276
294
|
sqlmath embeds [LightGBM](https://lightgbm.readthedocs.io/) for gradient boosting directly in SQL queries. Train models on your data without leaving SQL — no data shuffle to Python needed.
|
|
@@ -279,6 +297,7 @@ sqlmath embeds [LightGBM](https://lightgbm.readthedocs.io/) for gradient boostin
|
|
|
279
297
|
|
|
280
298
|
|
|
281
299
|
<br><br>
|
|
300
|
+
|
|
282
301
|
### Training from a Table
|
|
283
302
|
|
|
284
303
|
`LGBM_TRAINFROMTABLE` is an **aggregate function** — it consumes rows like `SUM()` or `AVG()`, but outputs a trained model BLOB.
|
|
@@ -311,6 +330,7 @@ FROM training_data;
|
|
|
311
330
|
|
|
312
331
|
|
|
313
332
|
<br><br>
|
|
333
|
+
|
|
314
334
|
### Prediction
|
|
315
335
|
|
|
316
336
|
```sql
|
|
@@ -330,6 +350,7 @@ FROM test_data;
|
|
|
330
350
|
|
|
331
351
|
|
|
332
352
|
<br><br>
|
|
353
|
+
|
|
333
354
|
### Real-World Example: Credit Card Fraud Detection
|
|
334
355
|
|
|
335
356
|
From the [Kaggle notebook](https://www.kaggle.com/code/kaizhu256/sql-is-all-you-need) — training on 284,807 transactions with 0.17% fraud rate:
|
|
@@ -378,6 +399,7 @@ db_exec(db=db, sql="""
|
|
|
378
399
|
|
|
379
400
|
|
|
380
401
|
<br><br>
|
|
402
|
+
|
|
381
403
|
### LightGBM Functions
|
|
382
404
|
|
|
383
405
|
| Function | Type | Description |
|
|
@@ -398,14 +420,16 @@ Full notebook with fraud detection, intraday trading signals, and model persiste
|
|
|
398
420
|
**Kaggle Environment:**
|
|
399
421
|
- Linux x64, Python 3.12, Node.js 24
|
|
400
422
|
- Datasets: [Credit Card Fraud](https://www.kaggle.com/datasets/mlg-ulb/creditcardfraud) (284K transactions), SPY intraday OHLCV
|
|
401
|
-
- sqlmath installs via `pip install sqlmath==2026.
|
|
423
|
+
- sqlmath installs via `pip install sqlmath==2026.9.29`
|
|
402
424
|
|
|
403
425
|
|
|
404
426
|
<br><br>
|
|
427
|
+
|
|
405
428
|
# Use Cases
|
|
406
429
|
|
|
407
430
|
|
|
408
431
|
<br><br>
|
|
432
|
+
|
|
409
433
|
### Financial Data Analysis
|
|
410
434
|
|
|
411
435
|
```python
|
|
@@ -434,6 +458,7 @@ db_close(db)
|
|
|
434
458
|
|
|
435
459
|
|
|
436
460
|
<br><br>
|
|
461
|
+
|
|
437
462
|
### Embedded ML Pipelines
|
|
438
463
|
|
|
439
464
|
Train and deploy models without data movement:
|
|
@@ -460,6 +485,7 @@ db_file_save(db=db, filename="scored_data.sqlite")
|
|
|
460
485
|
|
|
461
486
|
|
|
462
487
|
<br><br>
|
|
488
|
+
|
|
463
489
|
### Data Compression & Hashing
|
|
464
490
|
|
|
465
491
|
```sql
|
|
@@ -476,6 +502,7 @@ HAVING COUNT(*) > 1;
|
|
|
476
502
|
|
|
477
503
|
|
|
478
504
|
<br><br>
|
|
505
|
+
|
|
479
506
|
# Why sqlmath vs Alternatives?
|
|
480
507
|
|
|
481
508
|
| Feature | sqlmath | pandas | DuckDB | sqlite3 |
|
|
@@ -483,14 +510,14 @@ HAVING COUNT(*) > 1;
|
|
|
483
510
|
| In-database ML | ✅ LightGBM | ❌ | ❌ | ❌ |
|
|
484
511
|
| Zero data shuffle | ✅ | ❌ | ✅ | ✅ |
|
|
485
512
|
| Statistical functions | ✅ 20+ | ✅ | ✅ | ❌ |
|
|
486
|
-
| Browser support | ✅ WASM | ❌ |
|
|
513
|
+
| Browser support | ✅ WASM + LightGBM | ❌ | ✅ DuckDB-Wasm | ✅ official WASM |
|
|
487
514
|
| Single file deployment | ✅ | ❌ | ✅ | ✅ |
|
|
488
515
|
| Memory efficiency | ✅ Streaming | ❌ In-memory | ✅ | ✅ |
|
|
489
516
|
|
|
490
517
|
**Choose sqlmath when:**
|
|
491
518
|
- You need ML training/inference inside the database
|
|
492
519
|
- Your data is already in SQLite
|
|
493
|
-
- You want browser
|
|
520
|
+
- You want ML training/inference in the browser (WebAssembly)
|
|
494
521
|
- You need statistical functions beyond basic SQL
|
|
495
522
|
|
|
496
523
|
**Choose pandas when:**
|
|
@@ -505,6 +532,7 @@ HAVING COUNT(*) > 1;
|
|
|
505
532
|
|
|
506
533
|
|
|
507
534
|
<br><br>
|
|
535
|
+
|
|
508
536
|
# Python API Reference
|
|
509
537
|
|
|
510
538
|
```python
|
|
@@ -522,6 +550,7 @@ from sqlmath import (
|
|
|
522
550
|
|
|
523
551
|
|
|
524
552
|
<br><br>
|
|
553
|
+
|
|
525
554
|
### db_exec()
|
|
526
555
|
|
|
527
556
|
```python
|
|
@@ -537,6 +566,7 @@ result = db_exec(
|
|
|
537
566
|
|
|
538
567
|
|
|
539
568
|
<br><br>
|
|
569
|
+
|
|
540
570
|
# Node.js API Reference
|
|
541
571
|
- https://sqlmath.github.io/sqlmath/apidoc.html
|
|
542
572
|
|
|
@@ -544,6 +574,7 @@ result = db_exec(
|
|
|
544
574
|
|
|
545
575
|
|
|
546
576
|
<br><br>
|
|
577
|
+
|
|
547
578
|
# Platform Notes
|
|
548
579
|
|
|
549
580
|
The JavaScript (Node.js) binding is more mature than Python. Key differences:
|
|
@@ -559,10 +590,12 @@ The JavaScript (Node.js) binding is more mature than Python. Key differences:
|
|
|
559
590
|
|
|
560
591
|
|
|
561
592
|
<br><br>
|
|
593
|
+
|
|
562
594
|
# Building from Source
|
|
563
595
|
|
|
564
596
|
|
|
565
597
|
<br><br>
|
|
598
|
+
|
|
566
599
|
### Prerequisites
|
|
567
600
|
|
|
568
601
|
- Node.js 24+
|
|
@@ -571,6 +604,7 @@ The JavaScript (Node.js) binding is more mature than Python. Key differences:
|
|
|
571
604
|
|
|
572
605
|
|
|
573
606
|
<br><br>
|
|
607
|
+
|
|
574
608
|
### Build
|
|
575
609
|
|
|
576
610
|
```shell
|
|
@@ -589,6 +623,7 @@ sh jslint_ci.sh shCiBuildWasm
|
|
|
589
623
|
|
|
590
624
|
|
|
591
625
|
<br><br>
|
|
626
|
+
|
|
592
627
|
### Run Tests
|
|
593
628
|
|
|
594
629
|
```shell
|
|
@@ -604,6 +639,7 @@ npm run test --fast
|
|
|
604
639
|
|
|
605
640
|
|
|
606
641
|
<br><br>
|
|
642
|
+
|
|
607
643
|
### Serve Demo Locally
|
|
608
644
|
|
|
609
645
|
```shell
|
|
@@ -613,11 +649,13 @@ PORT=8080 sh jslint_ci.sh shHttpFileServer
|
|
|
613
649
|
|
|
614
650
|
|
|
615
651
|
<br><br>
|
|
652
|
+
|
|
616
653
|
# Package Listing
|
|
617
654
|

|
|
618
655
|
|
|
619
656
|
|
|
620
657
|
<br><br>
|
|
658
|
+
|
|
621
659
|
# Changelog
|
|
622
660
|
- [Full CHANGELOG.md](CHANGELOG.md)
|
|
623
661
|
|
|
@@ -625,6 +663,7 @@ PORT=8080 sh jslint_ci.sh shHttpFileServer
|
|
|
625
663
|
|
|
626
664
|
|
|
627
665
|
<br><br>
|
|
666
|
+
|
|
628
667
|
# License
|
|
629
668
|
- [sqlite](https://github.com/sqlite/sqlite) is under [public domain](https://www.sqlite.org/copyright.html).
|
|
630
669
|
- [jslint](https://github.com/jslint-org/jslint) is under [Unlicense License](https://github.com/jslint-org/jslint/blob/master/LICENSE).
|
|
@@ -635,34 +674,37 @@ PORT=8080 sh jslint_ci.sh shHttpFileServer
|
|
|
635
674
|
|
|
636
675
|
|
|
637
676
|
<br><br>
|
|
677
|
+
|
|
638
678
|
# Devops Instruction
|
|
639
679
|
|
|
640
680
|
|
|
641
681
|
<br><br>
|
|
682
|
+
|
|
642
683
|
### python pypi publish
|
|
643
684
|
```shell
|
|
644
685
|
python -m build
|
|
645
686
|
#
|
|
646
|
-
twine upload --repository testpypi dist/sqlmath-2026.
|
|
647
|
-
py -m pip install --index-url https://test.pypi.org/simple/ sqlmath==2026.
|
|
687
|
+
twine upload --repository testpypi dist/sqlmath-2026.9.29*
|
|
688
|
+
py -m pip install --index-url https://test.pypi.org/simple/ sqlmath==2026.9.29
|
|
648
689
|
#
|
|
649
|
-
twine upload dist/sqlmath-2026.
|
|
650
|
-
pip install sqlmath==2026.
|
|
690
|
+
twine upload dist/sqlmath-2026.9.29*
|
|
691
|
+
pip install sqlmath==2026.9.29
|
|
651
692
|
```
|
|
652
693
|
|
|
653
694
|
|
|
654
695
|
<br><br>
|
|
696
|
+
|
|
655
697
|
### sqlite upgrade
|
|
656
698
|
- goto https://www.sqlite.org/changes.html
|
|
657
699
|
```shell
|
|
658
700
|
(set -e
|
|
659
701
|
#
|
|
660
702
|
# lgbm
|
|
661
|
-
sh jslint_ci.sh shRollupUpgrade "v4.
|
|
703
|
+
sh jslint_ci.sh shRollupUpgrade "v4.6.0" "v4.7.0" ".ci.sh sqlmath_base.h"
|
|
662
704
|
#
|
|
663
705
|
# sqlite
|
|
664
|
-
sh jslint_ci.sh shRollupUpgrade "3.50.
|
|
665
|
-
sh jslint_ci.sh shRollupUpgrade "
|
|
706
|
+
sh jslint_ci.sh shRollupUpgrade "3.50.4" "3.51.3" ".ci.sh sqlmath_external_sqlite.c"
|
|
707
|
+
sh jslint_ci.sh shRollupUpgrade "3500400" "3510300" ".ci.sh sqlmath_external_sqlite.c"
|
|
666
708
|
#
|
|
667
709
|
# shSqlmathUpdate
|
|
668
710
|
read -p "Press Enter to shSqlmathUpdate:"
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/_sqlmath.shell_linux_x64
CHANGED
|
Binary file
|
|
Binary file
|