[KYUUBI #5969] Trino engine add default schema

# 🔍 Description
## Issue References 🔗

This pull request fixes #5969

## Describe Your Solution 🔧

Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.

## Types of changes 🔖

- [x] Bugfix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)

## Test Plan 🧪

#### Behavior Without This Pull Request ⚰️

#### Behavior With This Pull Request 🎉

#### Related Unit Tests

---

# Checklist 📝

- [x] This patch was not authored or co-authored using [Generative Tooling](https://www.apache.org/legal/generative-tooling.html)

**Be nice. Be informative.**

Closes #5971 from lsm1/branch-kyuubi-trino-schema.

Closes #5969

dfc987e03 [senmiaoliu] trino engine add default result schema

Authored-by: senmiaoliu <senmiaoliu@trip.com>
Signed-off-by: Cheng Pan <chengpan@apache.org>
This commit is contained in:
senmiaoliu 2024-01-15 10:20:06 +08:00 committed by Cheng Pan
parent 3af755115a
commit fcad8b520c
No known key found for this signature in database
GPG Key ID: 8001952629BCC75D

View File

@ -25,6 +25,7 @@ import scala.concurrent.ExecutionContext
import com.google.common.base.Verify
import io.trino.client.ClientSession
import io.trino.client.ClientTypeSignature
import io.trino.client.Column
import io.trino.client.StatementClient
import io.trino.client.StatementClientFactory
@ -46,6 +47,9 @@ class TrinoStatement(
sql: String,
operationLog: Option[OperationLog]) extends Logging {
private val defaultSchema: List[Column] =
List(new Column("Result", "VARCHAR", new ClientTypeSignature("VARCHAR")))
private lazy val trino = StatementClientFactory
.newStatementClient(trinoContext.httpClient, trinoContext.clientSession.get, sql)
@ -68,6 +72,9 @@ class TrinoStatement(
val columns = results.getColumns()
if (columns != null) {
info(s"Execute with Trino query id: ${results.getId}")
if (columns.isEmpty) {
return defaultSchema
}
return columns.asScala.toList
}
trino.advance()