This is an automated email from the ASF dual-hosted git repository.
chengpan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kyuubi.git
The following commit(s) were added to refs/heads/master by this push:
new 9a409956a [KYUUBI #5282] Support configure Trino session conf in
`kyuubi-default.conf`
9a409956a is described below
commit 9a409956a1566220867518ee60bf60e20dc5636c
Author: liupeiyue <[email protected]>
AuthorDate: Tue Oct 24 16:19:44 2023 +0800
[KYUUBI #5282] Support configure Trino session conf in `kyuubi-default.conf`
### _Why are the changes needed?_
Refer to spark and flink settings conf, support configure Trino session
conf in kyuubi-default.conf
issue : https://github.com/apache/kyuubi/issues/5282
### _How was this patch tested?_
- [ ] Add some test cases that check the changes thoroughly including
negative and positive cases if possible
- [ ] Add screenshots for manual tests if appropriate
- [ ] [Run
test](https://kyuubi.readthedocs.io/en/master/contributing/code/testing.html#running-tests)
locally before make a pull request
### _Was this patch authored or co-authored using generative AI tooling?_
No
Closes #5283 from ASiegeLion/kyuubi-master-trino.
Closes #5282
87a3f57b4 [Cheng Pan] Apply suggestions from code review
effdd79f4 [liupeiyue] [KYUUBI #5282]Add trino's session conf to
kyuubi-default.xml
399a200f7 [liupeiyue] [KYUUBI #5282]Add trino's session conf to
kyuubi-default.xml
7462b32c2 [liupeiyue] [KYUUBI #5282]Add trino's session conf to
kyuubi-default.xml--Update documentation
5295f5f94 [liupeiyue] [KYUUBI #5282]Add trino's session conf to
kyuubi-default.xml
Lead-authored-by: liupeiyue <[email protected]>
Co-authored-by: Cheng Pan <[email protected]>
Signed-off-by: Cheng Pan <[email protected]>
---
docs/configuration/settings.md | 27 +++++++++++++++++++
.../engine/trino/session/TrinoSessionImpl.scala | 12 ++++++++-
.../kyuubi/config/AllKyuubiConfiguration.scala | 30 ++++++++++++++++++++++
3 files changed, 68 insertions(+), 1 deletion(-)
diff --git a/docs/configuration/settings.md b/docs/configuration/settings.md
index 6ec647e5d..66fa45578 100644
--- a/docs/configuration/settings.md
+++ b/docs/configuration/settings.md
@@ -534,6 +534,33 @@ Setting them in the JDBC Connection URL supplies
session-specific for each SQL e
Please refer to the Flink official online documentation for [SET
Statements](https://nightlies.apache.org/flink/flink-docs-stable/docs/dev/table/sql/set/)
+## Trino Configurations
+
+### Via config.properties
+
+Setting them in `$TRINO_HOME/etc/config.properties` supplies with default
values for SQL engine application. Available properties can be found at Trino
official online documentation for [Trino
Configurations](https://trino.io/docs/current/admin/properties.html)
+
+### Via kyuubi-defaults.conf
+
+Setting them in `$KYUUBI_HOME/conf/kyuubi-defaults.conf` supplies with default
values for SQL engine application too. You can use properties with the
additional prefix `trino.` to override settings in
`$TRINO_HOME/etc/config.properties`.
+
+For example:
+
+```
+trino.query_max_stage_count 500
+trino.parse_decimal_literals_as_double true
+```
+
+The below options in `kyuubi-defaults.conf` will set `query_max_stage_count:
500` and `parse_decimal_literals_as_double: true` into trino session properties.
+
+### Via JDBC Connection URL
+
+Setting them in the JDBC Connection URL supplies session-specific for each SQL
engine. For example:
```jdbc:hive2://localhost:10009/default;#trino.query_max_stage_count=500;trino.parse_decimal_literals_as_double=true```
+
+### Via SET Statements
+
+Please refer to the Trino official online documentation for [SET
Statements](https://trino.io/docs/current/sql/set-session.html)
+
## Logging
Kyuubi uses [log4j](https://logging.apache.org/log4j/2.x/) for logging. You
can configure it using `$KYUUBI_HOME/conf/log4j2.xml`, see
`$KYUUBI_HOME/conf/log4j2.xml.template` as an example.
diff --git
a/externals/kyuubi-trino-engine/src/main/scala/org/apache/kyuubi/engine/trino/session/TrinoSessionImpl.scala
b/externals/kyuubi-trino-engine/src/main/scala/org/apache/kyuubi/engine/trino/session/TrinoSessionImpl.scala
index 362ee3ed0..0b3ac01a9 100644
---
a/externals/kyuubi-trino-engine/src/main/scala/org/apache/kyuubi/engine/trino/session/TrinoSessionImpl.scala
+++
b/externals/kyuubi-trino-engine/src/main/scala/org/apache/kyuubi/engine/trino/session/TrinoSessionImpl.scala
@@ -22,6 +22,8 @@ import java.time.ZoneId
import java.util.{Collections, Locale, Optional}
import java.util.concurrent.TimeUnit
+import scala.collection.JavaConverters._
+
import io.airlift.units.Duration
import io.trino.client.ClientSession
import io.trino.client.OkHttpUtil
@@ -89,6 +91,8 @@ class TrinoSessionImpl(
val clientRequestTimeout =
sessionConf.get(TrinoConf.CLIENT_REQUEST_TIMEOUT)
+ val properties = getTrinoSessionConf(sessionConf).asJava
+
new ClientSession(
URI.create(connectionUrl),
username,
@@ -104,7 +108,7 @@ class TrinoSessionImpl(
Locale.getDefault,
Collections.emptyMap(),
Collections.emptyMap(),
- Collections.emptyMap(),
+ properties,
Collections.emptyMap(),
Collections.emptyMap(),
null,
@@ -170,6 +174,12 @@ class TrinoSessionImpl(
resultSet.next().head.toString
}
+ private def getTrinoSessionConf(sessionConf: KyuubiConf): Map[String,
String] = {
+ val trinoSessionConf =
sessionConf.getAll.filterKeys(_.startsWith("trino."))
+ .map { case (k, v) => (k.stripPrefix("trino."), v) }
+ trinoSessionConf.toMap
+ }
+
override def close(): Unit = {
sessionEvent.endTime = System.currentTimeMillis()
EventBus.post(sessionEvent)
diff --git
a/kyuubi-server/src/test/scala/org/apache/kyuubi/config/AllKyuubiConfiguration.scala
b/kyuubi-server/src/test/scala/org/apache/kyuubi/config/AllKyuubiConfiguration.scala
index f53fb3a61..8c0806ba3 100644
---
a/kyuubi-server/src/test/scala/org/apache/kyuubi/config/AllKyuubiConfiguration.scala
+++
b/kyuubi-server/src/test/scala/org/apache/kyuubi/config/AllKyuubiConfiguration.scala
@@ -177,6 +177,36 @@ class AllKyuubiConfiguration extends KyuubiFunSuite {
"""Please refer to the Flink official online documentation for [SET
Statements]
|(https://nightlies.apache.org/flink/flink-docs-stable/docs/dev/table/sql/set/)"""
+ builder ++=
+ """## Trino Configurations
+ |### Via config.properties""" += """Setting them in
`$TRINO_HOME/etc/config.properties`
+ |
+ | supplies with default values for SQL engine application.
+ | Available properties can be found at Trino official online
documentation for
+ | [Trino Configurations]
+ |(https://trino.io/docs/current/admin/properties.html)""" +=
+ "### Via kyuubi-defaults.conf" +=
+ """Setting them in `$KYUUBI_HOME/conf/kyuubi-defaults.conf`
+ | supplies with default values for SQL engine application too.
+ | You can use properties with the additional prefix `trino.` to
override settings in
+ | `$TRINO_HOME/etc/config.properties`.""" ++=
+ """
+ |For example:
+ |```
+ |trino.query_max_stage_count 500
+ |trino.parse_decimal_literals_as_double true
+ |```""" +=
+ """The below options in `kyuubi-defaults.conf` will set
`query_max_stage_count: 500`
+ | and `parse_decimal_literals_as_double: true` into trino session
properties.""" +=
+ "### Via JDBC Connection URL" +=
+ """Setting them in the JDBC Connection URL supplies session-specific
+ | for each SQL engine. For example:
```jdbc:hive2://localhost:10009/default;
+
|#trino.query_max_stage_count=500;trino.parse_decimal_literals_as_double=true```
+ |""" +=
+ "### Via SET Statements" +=
+ """Please refer to the Trino official online documentation for [SET
Statements]
+ |(https://trino.io/docs/current/sql/set-session.html)"""
+
builder += "## Logging" +=
"""Kyuubi uses [log4j](https://logging.apache.org/log4j/2.x/) for
logging.
| You can configure it using `$KYUUBI_HOME/conf/log4j2.xml`, see