You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by "suibianwanwank (via GitHub)" <gi...@apache.org> on 2024/07/17 12:44:06 UTC
[PR] [CALCITE-6482] OracleSqlDialect support bool literal as predicate [calcite]
suibianwanwank opened a new pull request, #3863:
URL: https://github.com/apache/calcite/pull/3863
(no comment)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@calcite.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [CALCITE-6482] Oracle dialect convert boolean literal when version < 23 [calcite]
Posted by "NobiGo (via GitHub)" <gi...@apache.org>.
NobiGo commented on code in PR #3863:
URL: https://github.com/apache/calcite/pull/3863#discussion_r1687962628
##########
core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java:
##########
@@ -7700,6 +7700,27 @@ private void checkLiteral2(String expression, String expected) {
.withOracle(11).throws_("Lower Oracle version(<12) doesn't support offset/fetch syntax!");
}
+ /** Test case for
+ * <a href="https://issues.apache.org/jira/browse/CALCITE-6482">[CALCITE-6482]
+ * Oracle dialect convert boolean literal when version < 23</a>.*/
Review Comment:
`</a>. */` need to modify it. There is a space in the middle.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@calcite.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [CALCITE-6482] OracleSqlDialect support bool literal as predicate [calcite]
Posted by "suibianwanwank (via GitHub)" <gi...@apache.org>.
suibianwanwank commented on code in PR #3863:
URL: https://github.com/apache/calcite/pull/3863#discussion_r1681788412
##########
core/src/main/java/org/apache/calcite/sql/SqlBoolLiteral.java:
##########
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.calcite.sql;
+
+import org.apache.calcite.sql.parser.SqlParserPos;
+import org.apache.calcite.sql.type.SqlTypeName;
+
+import org.checkerframework.checker.nullness.qual.Nullable;
+
+/**
+ * A SQL literal representing a BOOLEAN value,
+ * for example <code>BOOLEAN 'TRUE'</code>.
+ *
+ * <p>Create values using {@link SqlLiteral#createBoolean}.
+ */
+public class SqlBoolLiteral extends SqlLiteral {
Review Comment:
You're right, there doesn't seem to be a need to separate a class. I removed this in the new commit.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@calcite.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [CALCITE-6482] OracleSqlDialect support bool literal as predicate [calcite]
Posted by "sonarcloud[bot] (via GitHub)" <gi...@apache.org>.
sonarcloud[bot] commented on PR #3863:
URL: https://github.com/apache/calcite/pull/3863#issuecomment-2240909163
## [](https://sonarcloud.io/dashboard?id=apache_calcite&pullRequest=3863) **Quality Gate passed**
Issues
 [3 New issues](https://sonarcloud.io/project/issues?id=apache_calcite&pullRequest=3863&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0 Accepted issues](https://sonarcloud.io/project/issues?id=apache_calcite&pullRequest=3863&issueStatuses=ACCEPTED)
Measures
 [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_calcite&pullRequest=3863&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [92.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=apache_calcite&pullRequest=3863&metric=new_coverage&view=list)
 [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_calcite&pullRequest=3863&metric=new_duplicated_lines_density&view=list)
[See analysis details on SonarCloud](https://sonarcloud.io/dashboard?id=apache_calcite&pullRequest=3863)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@calcite.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [CALCITE-6482] OracleSqlDialect support bool literal as predicate [calcite]
Posted by "mihaibudiu (via GitHub)" <gi...@apache.org>.
mihaibudiu commented on code in PR #3863:
URL: https://github.com/apache/calcite/pull/3863#discussion_r1681460397
##########
core/src/main/java/org/apache/calcite/sql/dialect/OracleSqlDialect.java:
##########
@@ -126,6 +139,19 @@ public OracleSqlDialect(Context context) {
return false;
}
+ @Override public void unparseBoolLiteral(SqlWriter writer,
+ SqlBoolLiteral literal, int leftPrec, int rightPrec) {
+ Boolean value = (Boolean) literal.getValue();
+ if (value == null || majorVersion >= 23) {
+ super.unparseBoolLiteral(writer, literal, leftPrec, rightPrec);
+ return;
+ }
+ // low version oracle not support bool literal
+ SqlCall call =
Review Comment:
Creating a call seems overkill, you can just emit the expected output directly.
The expression emitted would also require parentheses.
##########
core/src/main/java/org/apache/calcite/sql/SqlBoolLiteral.java:
##########
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.calcite.sql;
+
+import org.apache.calcite.sql.parser.SqlParserPos;
+import org.apache.calcite.sql.type.SqlTypeName;
+
+import org.checkerframework.checker.nullness.qual.Nullable;
+
+/**
+ * A SQL literal representing a BOOLEAN value,
+ * for example <code>BOOLEAN 'TRUE'</code>.
+ *
+ * <p>Create values using {@link SqlLiteral#createBoolean}.
+ */
+public class SqlBoolLiteral extends SqlLiteral {
Review Comment:
I don't know if it's this easy to create this class.
It looks that currently SqlLiteral is used to represent Boolean literals.
With this change there will be two possible representations.
Unless you audit the whole codebase and make sure that SqlLiteral is never used to represent Booleans, everybody will handle both cases.
You can do that by asserting in SqlLiteral that the value is never a Boolean, and then you can see how many tests fail.
##########
core/src/main/java/org/apache/calcite/sql/SqlDialect.java:
##########
@@ -466,6 +466,12 @@ public void unparseCall(SqlWriter writer, SqlCall call, int leftPrec,
}
}
+ public void unparseBoolLiteral(SqlWriter writer,
+ SqlBoolLiteral literal, int leftPrec, int rightPrec) {
+ writer.keyword(
+ literal.getValue() == null ? "UNKNOWN" : (Boolean) literal.getValue() ? "TRUE" : "FALSE");
Review Comment:
if you use a separate class you can probably add a method getBooleanValue in SqlBooleanLiteral
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@calcite.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [CALCITE-6482] OracleSqlDialect support bool literal as predicate [calcite]
Posted by "suibianwanwank (via GitHub)" <gi...@apache.org>.
suibianwanwank commented on code in PR #3863:
URL: https://github.com/apache/calcite/pull/3863#discussion_r1683787968
##########
core/src/main/java/org/apache/calcite/sql/dialect/OracleSqlDialect.java:
##########
@@ -126,6 +139,19 @@ public OracleSqlDialect(Context context) {
return false;
}
+ @Override public void unparseBoolLiteral(SqlWriter writer,
+ SqlBoolLiteral literal, int leftPrec, int rightPrec) {
+ Boolean value = (Boolean) literal.getValue();
+ if (value == null || majorVersion >= 23) {
+ super.unparseBoolLiteral(writer, literal, leftPrec, rightPrec);
+ return;
+ }
+ // low version oracle not support bool literal
+ SqlCall call =
Review Comment:
This is a very good reminder, and I noticed that someone also pointed this out in [CALCITE-6480](https://issues.apache.org/jira/browse/CALCITE-6480?jql=project%20%3D%20CALCITE%20AND%20status%20%3D%20Open%20ORDER%20BY%20created%20DESC). I will fix this.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@calcite.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [CALCITE-6482] Oracle dialect convert boolean literal when version < 23 [calcite]
Posted by "suibianwanwank (via GitHub)" <gi...@apache.org>.
suibianwanwank commented on code in PR #3863:
URL: https://github.com/apache/calcite/pull/3863#discussion_r1687985778
##########
core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java:
##########
@@ -7700,6 +7700,27 @@ private void checkLiteral2(String expression, String expected) {
.withOracle(11).throws_("Lower Oracle version(<12) doesn't support offset/fetch syntax!");
}
+ /** Test case for
+ * <a href="https://issues.apache.org/jira/browse/CALCITE-6482">[CALCITE-6482]
+ * Oracle dialect convert boolean literal when version < 23</a>.*/
Review Comment:
> `</a>. */` need to modify it. There is a space in the middle.
sry, I've fixed it.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@calcite.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [CALCITE-6482] OracleSqlDialect support bool literal as predicate [calcite]
Posted by "suibianwanwank (via GitHub)" <gi...@apache.org>.
suibianwanwank commented on PR #3863:
URL: https://github.com/apache/calcite/pull/3863#issuecomment-2244565880
thanks,Can this code be merged? @mihaibudiu @NobiGo
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@calcite.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [CALCITE-6482] OracleSqlDialect support bool literal as predicate [calcite]
Posted by "mihaibudiu (via GitHub)" <gi...@apache.org>.
mihaibudiu commented on PR #3863:
URL: https://github.com/apache/calcite/pull/3863#issuecomment-2240100230
If the CI passes I think you can squash the commits into a single one.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@calcite.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [CALCITE-6482] OracleSqlDialect support bool literal as predicate [calcite]
Posted by "sonarcloud[bot] (via GitHub)" <gi...@apache.org>.
sonarcloud[bot] commented on PR #3863:
URL: https://github.com/apache/calcite/pull/3863#issuecomment-2233516295
## [](https://sonarcloud.io/dashboard?id=apache_calcite&pullRequest=3863) **Quality Gate passed**
Issues
 [4 New issues](https://sonarcloud.io/project/issues?id=apache_calcite&pullRequest=3863&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0 Accepted issues](https://sonarcloud.io/project/issues?id=apache_calcite&pullRequest=3863&issueStatuses=ACCEPTED)
Measures
 [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_calcite&pullRequest=3863&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [89.2% Coverage on New Code](https://sonarcloud.io/component_measures?id=apache_calcite&pullRequest=3863&metric=new_coverage&view=list)
 [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_calcite&pullRequest=3863&metric=new_duplicated_lines_density&view=list)
[See analysis details on SonarCloud](https://sonarcloud.io/dashboard?id=apache_calcite&pullRequest=3863)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@calcite.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [CALCITE-6482] OracleSqlDialect support bool literal as predicate [calcite]
Posted by "sonarcloud[bot] (via GitHub)" <gi...@apache.org>.
sonarcloud[bot] commented on PR #3863:
URL: https://github.com/apache/calcite/pull/3863#issuecomment-2238188304
## [](https://sonarcloud.io/dashboard?id=apache_calcite&pullRequest=3863) **Quality Gate passed**
Issues
 [3 New issues](https://sonarcloud.io/project/issues?id=apache_calcite&pullRequest=3863&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0 Accepted issues](https://sonarcloud.io/project/issues?id=apache_calcite&pullRequest=3863&issueStatuses=ACCEPTED)
Measures
 [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_calcite&pullRequest=3863&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [92.6% Coverage on New Code](https://sonarcloud.io/component_measures?id=apache_calcite&pullRequest=3863&metric=new_coverage&view=list)
 [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_calcite&pullRequest=3863&metric=new_duplicated_lines_density&view=list)
[See analysis details on SonarCloud](https://sonarcloud.io/dashboard?id=apache_calcite&pullRequest=3863)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@calcite.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [CALCITE-6482] OracleSqlDialect support bool literal as predicate [calcite]
Posted by "sonarcloud[bot] (via GitHub)" <gi...@apache.org>.
sonarcloud[bot] commented on PR #3863:
URL: https://github.com/apache/calcite/pull/3863#issuecomment-2235200430
## [](https://sonarcloud.io/dashboard?id=apache_calcite&pullRequest=3863) **Quality Gate passed**
Issues
 [4 New issues](https://sonarcloud.io/project/issues?id=apache_calcite&pullRequest=3863&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0 Accepted issues](https://sonarcloud.io/project/issues?id=apache_calcite&pullRequest=3863&issueStatuses=ACCEPTED)
Measures
 [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_calcite&pullRequest=3863&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [92.9% Coverage on New Code](https://sonarcloud.io/component_measures?id=apache_calcite&pullRequest=3863&metric=new_coverage&view=list)
 [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_calcite&pullRequest=3863&metric=new_duplicated_lines_density&view=list)
[See analysis details on SonarCloud](https://sonarcloud.io/dashboard?id=apache_calcite&pullRequest=3863)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@calcite.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [CALCITE-6482] OracleSqlDialect support bool literal as predicate [calcite]
Posted by "mihaibudiu (via GitHub)" <gi...@apache.org>.
mihaibudiu commented on code in PR #3863:
URL: https://github.com/apache/calcite/pull/3863#discussion_r1683213867
##########
core/src/main/java/org/apache/calcite/sql/dialect/OracleSqlDialect.java:
##########
@@ -126,6 +139,19 @@ public OracleSqlDialect(Context context) {
return false;
}
+ @Override public void unparseBoolLiteral(SqlWriter writer,
+ SqlBoolLiteral literal, int leftPrec, int rightPrec) {
+ Boolean value = (Boolean) literal.getValue();
+ if (value == null || majorVersion >= 23) {
+ super.unparseBoolLiteral(writer, literal, leftPrec, rightPrec);
+ return;
+ }
+ // low version oracle not support bool literal
+ SqlCall call =
Review Comment:
I think you should write `(1 = 1)`. You don't know what other operators will surround this expression
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@calcite.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [CALCITE-6482] OracleSqlDialect support bool literal as predicate [calcite]
Posted by "sonarcloud[bot] (via GitHub)" <gi...@apache.org>.
sonarcloud[bot] commented on PR #3863:
URL: https://github.com/apache/calcite/pull/3863#issuecomment-2238812226
## [](https://sonarcloud.io/dashboard?id=apache_calcite&pullRequest=3863) **Quality Gate passed**
Issues
 [3 New issues](https://sonarcloud.io/project/issues?id=apache_calcite&pullRequest=3863&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0 Accepted issues](https://sonarcloud.io/project/issues?id=apache_calcite&pullRequest=3863&issueStatuses=ACCEPTED)
Measures
 [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_calcite&pullRequest=3863&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [92.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=apache_calcite&pullRequest=3863&metric=new_coverage&view=list)
 [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_calcite&pullRequest=3863&metric=new_duplicated_lines_density&view=list)
[See analysis details on SonarCloud](https://sonarcloud.io/dashboard?id=apache_calcite&pullRequest=3863)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@calcite.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [CALCITE-6482] Oracle dialect convert boolean literal when version < 23 [calcite]
Posted by "NobiGo (via GitHub)" <gi...@apache.org>.
NobiGo merged PR #3863:
URL: https://github.com/apache/calcite/pull/3863
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@calcite.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [CALCITE-6482] OracleSqlDialect support bool literal as predicate [calcite]
Posted by "NobiGo (via GitHub)" <gi...@apache.org>.
NobiGo commented on code in PR #3863:
URL: https://github.com/apache/calcite/pull/3863#discussion_r1687712138
##########
core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java:
##########
@@ -7700,6 +7700,27 @@ private void checkLiteral2(String expression, String expected) {
.withOracle(11).throws_("Lower Oracle version(<12) doesn't support offset/fetch syntax!");
}
+ /** Test case for
+ * <a href="https://issues.apache.org/jira/browse/CALCITE-6482">[CALCITE-6482]
+ * Oracle dialect convert bool literal when version < 23</a>.*/
Review Comment:
The Doc comment should stay the same as the JIRA summary. And we try not to use abbreviations as much as possible.
##########
core/src/main/java/org/apache/calcite/sql/SqlDialect.java:
##########
@@ -466,6 +466,13 @@ public void unparseCall(SqlWriter writer, SqlCall call, int leftPrec,
}
}
+ public void unparseBoolLiteral(SqlWriter writer,
+ SqlLiteral literal, int leftPrec, int rightPrec) {
+ Object value = literal.getValue();
+ writer.keyword(
+ !(value instanceof Boolean) ? "UNKNOWN" : (Boolean) value ? "TRUE" : "FALSE");
Review Comment:
Why do we use `value instanceof Boolean`, not the `value == null`?CASE condition has done the same thing, so I think `value == null` is clearer to me.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@calcite.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [CALCITE-6482] OracleSqlDialect support bool literal as predicate [calcite]
Posted by "suibianwanwank (via GitHub)" <gi...@apache.org>.
suibianwanwank commented on PR #3863:
URL: https://github.com/apache/calcite/pull/3863#issuecomment-2240914516
> 如果 CI 通过,我认为您可以将提交压缩为一个提交。
thanks, It's done
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@calcite.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [CALCITE-6482] OracleSqlDialect support bool literal as predicate [calcite]
Posted by "suibianwanwank (via GitHub)" <gi...@apache.org>.
suibianwanwank commented on PR #3863:
URL: https://github.com/apache/calcite/pull/3863#issuecomment-2240914764
> If the CI passes I think you can squash the commits into a single one.
Yes. It's done.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@calcite.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org