@blackrainbowlabs/cli-win32-x64 2.1.5 → 2.2.0

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.
Binary file
Binary file
Binary file
Binary file
@@ -98,6 +98,7 @@ typedef struct inillucent_stmt inillucent_stmt; /* a statement + bindings */
98
98
  typedef struct inillucent_rows inillucent_rows; /* what a statement said */
99
99
  typedef struct inillucent_txn inillucent_txn; /* an open transaction */
100
100
  typedef struct inillucent_error inillucent_error; /* one failure */
101
+ typedef struct inillucent_params inillucent_params; /* rows of values to run */
101
102
 
102
103
  /* ------------------------------------------------------------------ */
103
104
  /* Status codes. Frozen at 1.0; a new one takes the next number. */
@@ -200,8 +201,10 @@ int32_t inillucent_open_with_timeout(const char *path, uint32_t flags,
200
201
  inillucent_db **out,
201
202
  inillucent_error **error);
202
203
 
203
- /* Checkpoints and closes. Refuses with INILLUCENT_INVALID_STATE while any
204
- * connection on it is still open, rather than leaving them dangling. */
204
+ /* Folds the log into the file when this database wrote something, then
205
+ * closes. A database that only read leaves the file as it was. Refuses with
206
+ * INILLUCENT_INVALID_STATE while any connection on it is still open, rather
207
+ * than leaving them dangling. */
205
208
  int32_t inillucent_close(inillucent_db *db, inillucent_error **error);
206
209
 
207
210
  /* Makes everything written so far durable in the file. */
@@ -295,6 +298,26 @@ void inillucent_clear_bindings(inillucent_stmt *stmt);
295
298
  int32_t inillucent_stmt_execute(inillucent_stmt *stmt, uint64_t limit,
296
299
  inillucent_rows **out, inillucent_error **error);
297
300
 
301
+ /* Binds every parameter of the next execution from one JSON array, replacing
302
+ * what was bound. A value is null, true or false (bound as 1 and 0), an
303
+ * integer, a real, a string, {"blob": "<hex>"} or {"real": "Infinity"}; the
304
+ * bare words Infinity, -Infinity and NaN are read as reals too. One call where
305
+ * binding each value is one call a value, which is what a binding with an
306
+ * expensive foreign call wants. Since ABI 1.3.0. */
307
+ int32_t inillucent_bind_json(inillucent_stmt *stmt, const char *json, size_t len,
308
+ inillucent_error **error);
309
+
310
+ /* Runs the statement once for each array in a JSON array of arrays of values,
311
+ * each read the way inillucent_bind_json reads one, and writes the rows the
312
+ * executions changed in all to *changed. Opens no transaction: outside one,
313
+ * each execution commits by itself. A row longer than the statement's
314
+ * parameters is refused before any row runs; otherwise the first failure
315
+ * stops the run and is reported, and the executions before it stand. What
316
+ * inillucent_bind_* bound is left as it was. Since ABI 1.3.0. */
317
+ int32_t inillucent_stmt_execute_many(inillucent_stmt *stmt, const char *json,
318
+ size_t len, uint64_t *changed,
319
+ inillucent_error **error);
320
+
298
321
  /* ------------------------------------------------------------------ */
299
322
  /* A result. Materialised, so every pointer below is stable until free. */
300
323
  /* ------------------------------------------------------------------ */
@@ -342,6 +365,64 @@ double inillucent_value_real(const inillucent_rows *rows, size_t row, size_t co
342
365
  const uint8_t *inillucent_value_bytes(const inillucent_rows *rows, size_t row,
343
366
  size_t column, size_t *len);
344
367
 
368
+ /* The whole result as one JSON object, NUL terminated, with its length in
369
+ * bytes written to *len. It holds "columns", "types", "rows" (an array of
370
+ * arrays of values), "total", "more", "affected" (null for a query),
371
+ * "elapsed_us" and "tag". A value is null, an integer, a real that always has
372
+ * a fraction or an exponent, a string, {"blob": "<hex>"}, or for an infinity
373
+ * or NaN {"real": "Infinity"}, {"real": "-Infinity"} or {"real": "NaN"}.
374
+ * Valid until the result is freed. One call for the whole result, where the
375
+ * accessors above take two a cell. Since ABI 1.3.0. */
376
+ const char *inillucent_rows_json(const inillucent_rows *rows, size_t *len);
377
+
378
+ /* For a binding running inside CPython. inillucent_py_init takes the addresses
379
+ * of PyList_New, PyList_SetItem, PyLong_FromLongLong, PyFloat_FromDouble,
380
+ * PyUnicode_FromStringAndSize, PyBytes_FromStringAndSize, Py_IncRef,
381
+ * Py_DecRef, PyErr_SetString, the None object and the exception type to raise
382
+ * on a misuse, in that order (count 11), from the CPython that loaded the
383
+ * library. inillucent_rows_py then returns a new reference to a list: column
384
+ * names, declared types, the rows as lists of values, total, more (0 or 1),
385
+ * affected or None, elapsed_us and the tag. Call it with the interpreter lock
386
+ * held (ctypes.PyDLL). On a failure it returns NULL with a Python exception
387
+ * set. No CPython is linked. Since ABI 1.3.0. */
388
+ int32_t inillucent_py_init(const void *const *api, size_t count);
389
+ void *inillucent_rows_py(const inillucent_rows *rows);
390
+
391
+ /* Parameters for many executions, read out of Python objects.
392
+ * inillucent_py_init_params takes the addresses of PyList_Size,
393
+ * PyList_GetItem, PyTuple_Size, PyTuple_GetItem, PyLong_AsLongLong,
394
+ * PyFloat_AsDouble, PyUnicode_AsUTF8AndSize, PyBytes_AsStringAndSize,
395
+ * PyErr_Clear, PyErr_Occurred, the types list, tuple, int, bool, float, str,
396
+ * bytes and type(None), PyGILState_Ensure and PyGILState_Release, and the
397
+ * None object, in that order (count 21), and
398
+ * refuses a CPython whose objects keep their type anywhere but the word after
399
+ * the reference count. inillucent_py_params reads a list or tuple of rows,
400
+ * each a list or tuple of None, int, bool, float, str or bytes, and returns
401
+ * NULL with no exception set for anything else, an integer wider than 64 bits
402
+ * included, so the caller can send those rows as JSON instead. Call it with the
403
+ * interpreter lock held (ctypes.PyDLL). inillucent_stmt_execute_params runs
404
+ * the statement once for each row, as inillucent_stmt_execute_many does, and
405
+ * frees the parameters whatever happens; call it without the lock, and keep
406
+ * the rows alive until it returns. The rows move into the engine, so when the
407
+ * one statement they run as fails, it takes the lock with PyGILState_Ensure
408
+ * and reads them again to run them one at a time. inillucent_params_free
409
+ * frees parameters nothing ran.
410
+ * Since ABI 1.3.0. */
411
+ int32_t inillucent_py_init_params(const void *const *api, size_t count);
412
+ inillucent_params *inillucent_py_params(void *rows);
413
+ int32_t inillucent_stmt_execute_params(inillucent_stmt *stmt,
414
+ inillucent_params *params,
415
+ uint64_t *changed,
416
+ inillucent_error **error);
417
+ void inillucent_params_free(inillucent_params *params);
418
+
419
+ /* For Node. The library is also a Node addon: process.dlopen() calls this,
420
+ * and it fills exports with open, connect, query, batch, disconnect and
421
+ * close. Node's napi_* functions are looked up in the host process when it is
422
+ * called, so no Node is linked, and a host that is not Node gets exports back
423
+ * unchanged. A C caller has no reason to call it. Since ABI 1.3.0. */
424
+ void *napi_register_module_v1(void *env, void *exports);
425
+
345
426
  /* ------------------------------------------------------------------ */
346
427
  /* A transaction. */
347
428
  /* ------------------------------------------------------------------ */
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blackrainbowlabs/cli-win32-x64",
3
- "version": "2.1.5",
3
+ "version": "2.2.0",
4
4
  "description": "The inillucent binaries for win32-x64. Installed automatically by the 'inillucent' package; there is no reason to depend on this directly.",
5
5
  "homepage": "https://github.com/Black-Rainbow-Labs/Inillucent#readme",
6
6
  "repository": {