Added
IS NULLandIS NOT NULLoperators.depthfield.CONTAINS_CYRILLICfunction; better Japanese text detection.STRPOSfunction, split fromLOCATE.rlikeas a regex operator alias.- Encrypted entries in zip archives; more fields available for archived files, with archive paths included in their values.
include:directives in.hgignoreand.dockerignore.- Function argument counts and literals compared with typed expressions are checked when the query is parsed.
- Integration test suite covering traversal, ignore files, formats, grouping, dates, archives and CLI flags.
Changed
- Expressions carry static types; caches, sorting, grouping and aggregates work on typed values instead of rendered text.
fsizeis numeric: it compares, groups, sorts and aggregates by byte count while printing the formatted size.CURRENT_DATE,NOW,DATE_ADD,DATE_SUB,FROM_UNIXTIME,LAST_DAYandDATE_TRUNCreturn datetimes.LEASTandGREATESToperate on strings as well as numbers.xattr()returns values that are not UTF-8 as0x..hex instead of an empty string (#187).- Unknown columns in
GROUP BYandORDER BY, ungrouped columns in grouped queries, an emptyIN ()and an incompleteWHEREclause are rejected. - A literal that can never match a typed expression (
length(name) > 'abc') is rejected before the search starts. LIKE ''matches the empty string.- Bare words are treated as function calls only for functions that take no arguments.
- Root aliases are case-insensitive; JSON column names are lowercase.
- Search roots defined by subqueries inherit the root options of the parent query; a grouped subquery in
FROMyields one entry per group. - Faster sorting, aggregates, subquery caching, BFS traversal with
LIMIT, deferred evaluation of heavy columns.
Fixed
GROUP BYmerged distinct values that render alike, such as sizes of 10,241 and 10,242 bytes both shown as10.00KiB.- Missing boolean values sorted as
falseinstead of last. HAVING, aggregate aliases andMIN/MAX/COALESCEcorner cases.- Correlated subqueries: caching, nested contexts and the group values they see.
- Symlink handling and ignore rules applied across symlinks.
- SVG dimension detection, MP4 duration and
exif_altfor negative altitudes. - Errors no longer break JSON and HTML output or the row count.
--helpand--versionafter other arguments; paths containing whitespace; floating point literals and unary minus.- Windows: datetime formatting, Unix permission fields, extended attributes on musl builds.
- Subquery
OFFSETapplied twice; depth calculation; path under symlinks.