I just deployed a GitHub bot on our infrastructure. The purpose of this bot
is to run basic checks on pull requests, so that contributors know right
away if something needs to be changed, without having to wait for a human
to take the time to review. And to avoid oversights for some boring, but
nevertheless important rules.
You can see a few failing checks in this playground project:
Pull requests failing these checks can still be merged ; the checks are
only here to help, not to enforce anything. So if you need to merge a few
commits that do not mention a JIRA ticket (e.g. changes in github
workflows), you can still do it.
The checks are obviously very simple. At the moment, we check:
- That the pull request title has at least two words
- That the pull request title doesn't end with a dot or ellipsis (they
are a sign that the title may be incomplete)
- That every commit message starts with a JIRA ticket key.
- That the pull request title/description mentions all JIRA ticket keys
mentioned in commit messages.
We can definitely work on adding more checks, or tuning the existing
checks. Please create issues here:
The bot is currently only enabled on Hibernate Search and Hibernate ORM. If
you want to enable it on other projects, please follow instructions here:
To anyone interested, the bot was implemented using Quarkus and Guillaume's
GitHub extension: https://github.com/quarkiverse/quarkus-github-app
Testing against Firebird, it seems like Dialect.supportsValuesList() is
Specifically the test
generates the following statement even with Dialect.supportsValuesList()
(id, ticket_key, subject, details)
(2, 'XYZ123', 'Outage', 'Something is broken'), (
13, 'HIJ456', 'x', 'x'
Or is this a situation where this is ignored because the HQL explicitly
contains two lists?
For an INSERT ... SELECT, Hibernate (in wip/6.0) will generate a SQL
statement with parentheses around the select statement.
This happens in AbstractSqlAstTranslator.visitQuerySpec(QuerySpec
querySpec) because the querySpec is not a root. Firebird doesn't support
a parenthesized select in insert (yet).
What would be the best way to address this in the AstTranslator or
elsewhere? Overriding the entire visitQuerySpec(QuerySpec querySpec)
method could be brittle as significant changes would need to be
replicated to the Firebird-specific translator, and this only really
applies when processing a select in an insert statement (I think; there
are some other places where Firebird doesn't support parenthesized
selects where the standard does).
I was doing some testing Firebird against wip/6.0 and I tripped over the
fact the list of keywords in AnsiSqlKeywords.java (introduced for
https://hibernate.atlassian.net/browse/HHH-9768) is incomplete.
For example, the keyword POSITION is missing from the list, while it is
listed in SQL:2003 <reserved word>, on the other hand ADD is in the
list, which is only listed as non-reserved in <non-reserved word>. I
also notice that most - if not all - other function names are missing.
Firebird is particular finicky about keywords. I see two approaches:
1) I add the difference between the current list in AnsiSqlKeywords +
DatabaseMetaData.getKeywords() (which only returns those not reserved in
SQL:2003) and Firebird's actual keywords explicitly in the dialect
2) I update the list in AnsiSqlKeywords to contain all reserved words
from SQL:2003 (+ retain any additional keywords currently in the list)
This last option would have compatibility consequences (as additional
keywords may get quoted, which could change case-sensitivity for some
databases), so that may not be desirable.
Your thoughts on this?