Skip to content

Release v1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 24 Oct 14:00
· 1 commit to main since this release

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-uri property is renamed to git.url. The old name still works.
  • git.url must not contain credentials for HTTP(S) URLs. Use git.username and git.password instead. (#260)
  • trees.object_type is renamed to file_mode, with values file, executable, symlink, submodule and directory. (#10)
  • diff_stats.change_type values are added, modified, deleted, renamed and copied, instead of Add, Modify, Delete, Rename and Copy. (#10)
  • trees also returns directories, before their contents. (#10)
  • trees.attributes is a map(varchar, varchar) instead of JGit's text representation. (#10)
  • diff_stats compares 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_stats returns NULL instead of /dev/null paths and all-zero object ids, and NULL line counts for binary files. (#11)
  • branches only has the remote's branches, without refs/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).
  • idents is a table instead of a view, and uses .mailmap. (#261)
  • objects only 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 in java.io.tmpdir are 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 (default 1m), and CALL git.system.refresh() makes every node fetch new commits right away. (#264, #13)
  • All scans of a query read the same commits. (#264)
  • commits, trees and diff_stats of large repositories are read by many splits in parallel, git.commits-per-split commits each. (#264)
  • Network operations time out after git.timeout (default 5m). (#264)
  • Filters on object_id, commit_id and path_name read less data. (#4, #259)
  • commits.author_time, tags.commit_id, diff_stats.old_object_id and trees.mode columns. (#272, #81, #11, #10)
  • Every column has a comment, shown in DESCRIBE and information_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 querying commit_stats, no longer fails. (#277)
  • commit_stats includes commits without changed files, and averages similarity_score only for renames and copies. (#261)
  • objects includes loose objects, and returns NULL contents for blobs too large to load, instead of failing. (#265)
  • The README documents when diff_stats reports copies: for files moved to more than one path in the same commit. (#313)
  • Reading branches of an empty repository, and tags without a tagger, no longer fails. (#266)
  • Made-up table statistics are removed. (#267)