ISQL - Internet SQL embedded database  (SDK drop, 64-bit / x64)
==============================================================

Copyright (c) 2026 Muhammad Anisur Rahman.  MIT License - see LICENSE.

An embedded relational + storage-vector SQL engine that runs in-process in your
C application. No server and no network are required. This is the 64-bit (x64)
build: record numbers and file offsets are genuine 64-bit values.

The database directory db\ ships EMPTY. The engine creates the catalog and
system tables on the first connection, so just point it at a home directory
that contains an empty db\ sub-folder.


INSTALL
-------
    install.bat                     prompts for a home directory (default C:\ISQL)
    install.bat D:\MyIsql           install to a specific directory
    install.bat D:\MyIsql /nopath   install without touching PATH
    install.bat D:\MyIsql /system   register on the SYSTEM PATH (needs admin)

By default <home>\bin is added to your PER-USER PATH; no administrator rights
are needed. Open a new command prompt afterwards for it to take effect.
uninstall.bat removes that PATH entry again and leaves your data alone.


QUICK START
-----------
1. Self-checking example (exercises the SQL command set):
       examples\build_example.bat
       examples\isql_example.exe  C:\ISQL

2. Interactive shell:
       examples\build_shell.bat
       bin\isql_shell.exe  C:\ISQL
       isql> help;

The build scripts locate the MSVC x64 tools automatically (via vswhere, then
common install paths), so they are not tied to one Visual Studio version. If
detection fails, set VCVARS to your vcvars64.bat and re-run.

Keep isqldll.dll next to your .exe, or on PATH. This matters more than it
looks: the DLL is a LOAD-TIME import, so without it an executable can exit
silently with no error at all.


LAYOUT
------
  db\        your database (created empty; the engine fills it)
  bin\       isqldll.dll, isql_shell.exe
  lib\       isqldll.lib (DLL import), isqllib.lib (static)
  include\h\ isql.h  <-- include THIS one; it pulls in the rest
  include\   newpwd.*, vlr.h, vlrengine.h
  examples\  isql_example.c, isql_shell.c, build_*.bat, findvc.bat
  doc\       HOWTO_BUILD_C_APP.md  <-- full guide, start here
             VLR_ARCHITECTURE.txt, VLR_API.txt
  isql.cfg   engine configuration (see the note inside it)


ACCESS
------
Embedded owner access:   ISQL_SetOwnerAccess(obj)   - the path the example and
                         shell use, and the one to start from.
Multi-user login:        add user <n>,<pwd>,<a|m|o>;  then  login <n>,<pwd>;
                         ISQL supports server and standalone modes, four
                         privilege tiers and five lock levels.

Passwords are SHA-256 (newpwd); legacy PC1 hashes migrate on first successful
login.


VARIABLE-LENGTH RECORDS (VLR)
-----------------------------
Tables can store variable-length rows instead of fixed-width padded ones,
which saves substantial disk on columns that are mostly short:

    create table t (id number(5), name char(20)) (recordformat=vlr);

VLR is OFF by default; shipping behaviour is unchanged until it is enabled.
Legacy fixed-width tables are untouched and both formats coexist in one
database. See doc\VLR_ARCHITECTURE.txt for the on-disk format and
doc\VLR_API.txt for the API.


KNOWN LIMITATIONS (stated deliberately)
---------------------------------------
- Run Apache in PREFORK mode for the CGI/PHP paths. The engine's thread-safety
  refactor is not complete, so do not assume a threaded MPM is safe.
- The ODBC driver is not part of this release; the ODBC example is reference
  code for once it ships.
- The JNI shim must be built to match your JVM's bitness.

See doc\HOWTO_BUILD_C_APP.md for the complete API and build instructions.
