nedb-engine 4.1.1 → 4.3.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.
package/README.md CHANGED
@@ -206,6 +206,44 @@ there is no declared column order to infer. Values must be literals — a number
206
206
  a quoted string, `TRUE`/`FALSE`/`NULL` — since storing an unevaluated
207
207
  expression as text would be worse than refusing it.
208
208
 
209
+ ### `\d` works — the catalogue is real tables, not matched strings
210
+
211
+ `pg_catalog` and `information_schema` are **queryable relations synthesised
212
+ from the live database**, not pattern-matched query text, so psql's
213
+ introspection runs as the SQL it actually is. `\dt` alone is two `LEFT JOIN`s,
214
+ a nine-branch `CASE`, two scalar functions and `ORDER BY 1,2`; `\d orders`
215
+ is a regex (`^(orders)$`) plus three correlated subqueries; `\dp` builds two
216
+ `ARRAY(SELECT …)` columns with `= ANY(…)`; `\dd` is a seven-arm `UNION ALL`
217
+ inside a derived table; `\dP+` is a `LATERAL` join. All of it is evaluated by
218
+ a real SQL engine (`rust/nedb-v2/src/sqlselect.rs`): joins (hash and nested
219
+ loop), subqueries, `EXISTS`, `ANY`/`ALL`, set operations, derived tables,
220
+ `LATERAL`, aggregates, `CASE`, casts, and the POSIX ERE subset psql writes.
221
+
222
+ ```console
223
+ shop=> \d orders
224
+ Table "public.orders"
225
+ Column | Type | Collation | Nullable | Default
226
+ --------+--------+-----------+----------+---------
227
+ _id | text | | |
228
+ _seq | bigint | | |
229
+ status | text | | |
230
+ total | bigint | | |
231
+ ```
232
+
233
+ **Every psql 17 backslash-describe command exits 0** against `nedbd` — `\d`,
234
+ `\dt+`, `\dn`, `\l`, `\du`, `\df`, `\dp`, `\dT`, `\dd`, `\dD`, `\dy`, `\dRp`,
235
+ `\dRs`, `\dX`, `\dP+`, `\dconfig`, `\z` and the rest — verified by driving the
236
+ real `psql` binary in `tests/test_psql_introspection.py` (psql 16 and 17).
237
+ Three exit 1 exactly as they do on a fresh Postgres: `\dx+`, `\dRp+` and
238
+ `\dF+` print psql's own "Did not find any …" when a `+` listing is empty.
239
+
240
+ What a schemaless engine reports is *derived*, and says so: a collection is a
241
+ table, a field observed in a sampled document is a column typed the way the
242
+ wire types it, and everything Postgres tracks that NEDB does not — owners,
243
+ ACLs, sizes, statistics, publications, triggers — is a fixed value or an
244
+ empty relation, never a fabricated plausible one. `pg_size_pretty(pg_table_size(…))`
245
+ is a blank cell in `\dt+`, not an invented number.
246
+
209
247
  ### Your driver, not just `psql`
210
248
 
211
249
  **Both wire protocols are implemented**, which is the difference between "psql
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nedb-engine",
3
- "version": "4.1.1",
3
+ "version": "4.3.0",
4
4
  "description": "NEDB \u2014 hash-chained, time-traveling, bi-temporal embedded database with Rust native core. SQL, Redis, MongoDB adapters. Causal Write Provenance. RESP2 wire protocol.",
5
5
  "main": "index.js",
6
6
  "exports": {
Binary file
Binary file
Binary file