|
1 | 1 | package com.databricks.jdbc.api.impl; |
2 | 2 |
|
3 | 3 | import static com.databricks.jdbc.common.util.DatabricksThriftUtil.getTypeFromTypeDesc; |
4 | | -import static org.junit.jupiter.api.Assertions.assertEquals; |
5 | | -import static org.junit.jupiter.api.Assertions.assertFalse; |
| 4 | +import static org.junit.jupiter.api.Assertions.*; |
6 | 5 |
|
7 | 6 | import com.databricks.jdbc.common.DatabricksJdbcConstants; |
8 | 7 | import com.databricks.jdbc.common.util.DatabricksTypeUtil; |
9 | 8 | import com.databricks.jdbc.model.client.thrift.generated.*; |
10 | 9 | import com.databricks.jdbc.model.core.ResultManifest; |
11 | | -import com.databricks.sdk.service.sql.ColumnInfo; |
12 | | -import com.databricks.sdk.service.sql.ColumnInfoTypeName; |
13 | | -import com.databricks.sdk.service.sql.ResultSchema; |
| 10 | +import com.databricks.sdk.service.sql.*; |
14 | 11 | import java.sql.ResultSetMetaData; |
15 | 12 | import java.sql.SQLException; |
16 | | -import java.util.Collections; |
17 | | -import java.util.HashMap; |
18 | | -import java.util.List; |
19 | | -import java.util.Map; |
| 13 | +import java.util.*; |
| 14 | +import java.util.stream.Stream; |
20 | 15 | import org.junit.jupiter.api.Assertions; |
21 | 16 | import org.junit.jupiter.api.Test; |
| 17 | +import org.junit.jupiter.params.ParameterizedTest; |
| 18 | +import org.junit.jupiter.params.provider.MethodSource; |
22 | 19 |
|
23 | 20 | public class DatabricksResultSetMetaDataTest { |
24 | 21 | private static final String STATEMENT_ID = "statementId"; |
25 | 22 |
|
| 23 | + static Stream<TSparkRowSetType> thriftResultFormats() { |
| 24 | + return Stream.of( |
| 25 | + TSparkRowSetType.ARROW_BASED_SET, |
| 26 | + TSparkRowSetType.COLUMN_BASED_SET, |
| 27 | + TSparkRowSetType.ROW_BASED_SET, |
| 28 | + TSparkRowSetType.URL_BASED_SET); |
| 29 | + } |
| 30 | + |
| 31 | + static Stream<Format> sdkResultFormats() { |
| 32 | + return Stream.of(Format.ARROW_STREAM, Format.CSV, Format.JSON_ARRAY); |
| 33 | + } |
| 34 | + |
26 | 35 | public ColumnInfo getColumn(String name, ColumnInfoTypeName typeName, String typeText) { |
27 | 36 | ColumnInfo columnInfo = new ColumnInfo(); |
28 | 37 | columnInfo.setName(name); |
@@ -225,6 +234,36 @@ public void testGetScaleAndPrecisionWithTColumnDesc() { |
225 | 234 | assertEquals(0, scaleAndPrecision[1]); |
226 | 235 | } |
227 | 236 |
|
| 237 | + @ParameterizedTest |
| 238 | + @MethodSource("thriftResultFormats") |
| 239 | + public void testGetDispositionThrift(TSparkRowSetType resultFormat) { |
| 240 | + TGetResultSetMetadataResp thriftResultManifest = getThriftResultManifest(); |
| 241 | + thriftResultManifest.setResultFormat(resultFormat); |
| 242 | + DatabricksResultSetMetaData metaData = |
| 243 | + new DatabricksResultSetMetaData(STATEMENT_ID, thriftResultManifest, 1, 1); |
| 244 | + |
| 245 | + if (resultFormat == TSparkRowSetType.URL_BASED_SET) { |
| 246 | + assertTrue(metaData.getIsCloudFetchUsed()); |
| 247 | + } else { |
| 248 | + assertFalse(metaData.getIsCloudFetchUsed()); |
| 249 | + } |
| 250 | + } |
| 251 | + |
| 252 | + @ParameterizedTest |
| 253 | + @MethodSource("sdkResultFormats") |
| 254 | + public void testDispositionSdk(Format format) { |
| 255 | + ResultManifest resultManifest = getResultManifest(); |
| 256 | + resultManifest.setFormat(format); |
| 257 | + DatabricksResultSetMetaData metaData = |
| 258 | + new DatabricksResultSetMetaData(STATEMENT_ID, resultManifest); |
| 259 | + |
| 260 | + if (format == Format.ARROW_STREAM) { |
| 261 | + assertTrue(metaData.getIsCloudFetchUsed()); |
| 262 | + } else { |
| 263 | + assertFalse(metaData.getIsCloudFetchUsed()); |
| 264 | + } |
| 265 | + } |
| 266 | + |
228 | 267 | private void verifyDefaultMetadataProperties(DatabricksResultSetMetaData metaData) |
229 | 268 | throws SQLException { |
230 | 269 | for (int i = 1; i <= metaData.getColumnCount(); i++) { |
|
0 commit comments