Repository navigation
This release completes the 1.0 roadmap (#274). It requires Trino 484, and has breaking changes in table schemas and values, so read the breaking changes below before upgrading from 0.104.
Breaking changes
- The
metadata-uriproperty is renamed togit.url. The old name still works. git.urlmust not contain credentials for HTTP(S) URLs. Usegit.usernameandgit.passwordinstead. (#260)trees.object_typeis renamed tofile_mode, with valuesfile,executable,symlink,submoduleanddirectory. (#10)diff_stats.change_typevalues areadded,modified,deleted,renamedandcopied, instead ofAdd,Modify,Delete,RenameandCopy. (#10)treesalso returns directories, before their contents. (#10)trees.attributesis amap(varchar, varchar)instead of JGit's text representation. (#10)diff_statscompares every commit with its first parent, and root commits with an empty tree. Before, it compared each commit with the next commit read, which gave wrong results in repositories with more than one branch. (#258)diff_statsreturnsNULLinstead of/dev/nullpaths and all-zero object ids, andNULLline counts for binary files. (#11)branchesonly has the remote's branches, withoutrefs/remotes/*, and they're updated on every fetch. Branches deleted from the remote are removed. (#263)- New columns change the order of columns in
SELECT *:tags.commit_id(#81),diff_stats.old_object_id(#11),trees.mode(#10),commits.author_time(#272). identsis a table instead of a view, and uses.mailmap. (#261)objectsonly has blobs reachable from a branch or tag. (#265)- Clones are kept in
git.cache-directory(default${java.io.tmpdir}/trino-git), which must be accessible only by the user running Trino. Existing clones injava.io.tmpdirare not reused. (#260, #264) - The coordinator now keeps a clone of every repository it plans queries on. (#264)
New features
- More than one repository per catalog, as schemas, with
git.repositories. (#273) - Repositories are fetched at most once per
git.fetch-interval(default1m), andCALL git.system.refresh()makes every node fetch new commits right away. (#264, #13) - All scans of a query read the same commits. (#264)
commits,treesanddiff_statsof large repositories are read by many splits in parallel,git.commits-per-splitcommits each. (#264)- Network operations time out after
git.timeout(default5m). (#264) - Filters on
object_id,commit_idandpath_nameread less data. (#4, #259) commits.author_time,tags.commit_id,diff_stats.old_object_idandtrees.modecolumns. (#272, #81, #11, #10)- Every column has a comment, shown in
DESCRIBEandinformation_schema. (#268) - Errors explain why a repository couldn't be cloned or fetched, with error codes for repositories that don't exist and for failed authentication. (#184, #12)
Fixes
- Credentials are no longer saved in clones, logged, or sent in splits. (#260)
- Concurrent queries no longer fail or return no rows when cloning or fetching the same repository. Broken clones are replaced. (#79)
- Filter pushdown no longer returns wrong results for filters on
object_id, or for combined filters. (#259) - Scans no longer stop early at empty trees, or at refs pointing to blobs or trees. (#262)
- Selecting
commits.parents, and so queryingcommit_stats, no longer fails. (#277) commit_statsincludes commits without changed files, and averagessimilarity_scoreonly for renames and copies. (#261)objectsincludes loose objects, and returnsNULLcontents for blobs too large to load, instead of failing. (#265)- The README documents when
diff_statsreports copies: for files moved to more than one path in the same commit. (#313) - Reading
branchesof an empty repository, and tags without a tagger, no longer fails. (#266) - Made-up table statistics are removed. (#267)