Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

draw.io Board Diagram
bordertrue
diagramNameclasses-driver
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth701
revision2


There're Sessions and Operations in SqlGateway. SqlGateway will open a Session for each external connection, and then do multiple Operations in one Session. When users create a FlinkSession by FlinkDriver with SqlGateway, it will open an exist or a new Session. Any time users want to issue SQL statements to the database, they require a FlinkStatement instance from FlinkConnection. Once users have a FlinkStatement , they can use issue a query. This will return a FlinkResultSet instance, which contains the entire result. Each operation such as the execution query(Flink job), fetching results in FlinkResultSet will be an Operation in the Session of SqlGateway .

User Case

Flink Jdbc Driver module will be packaged into an independent jar file such as flink-table-jdbc-driver-{version}.jar , which will contains classes of flink jdbc driver and shaded flink classes such as data type. User only need to add jdbc dependency in pom.xml or add the jar in the classpath of external Jdbc Tools such as sqlite.

...

  1. Driver Name: org.apache.flink.table.jdbc.FlinkDriver
  2. Flink Connection URL: Users can use default catalog and database directly, or set them in url. Users can also set custom parameters in url to open the session in SqlGateway with key1=val1&key2=val2&... 
    1. jdbc:flink://{sql-gateway.host}:{sql-gateway.port}?key1=val1&key2=val2
    2. jdbc:flink://{sql-gateway.host}:{sql-gateway.port}/{catalog name}?key1=val1&key2=val2
    3. jdbc:flink://{sql-gateway.host}:{sql-gateway.port}/{catalog name}/{catalog database name}?key1=val1&key2=val2&key2=val2
  3. Currently SqlGateway does not support authentication, user  and password in connection are invalid.
  4. Use Flink Jdbc Driver in Java code

    Code Block
    languagejava
    String driverName = "org.apache.flink.table.jdbc.FlinkDriver";
    String url = "jdbc:flink://{sql-gateway.host}:{sql-gateway.port}/{catalog name}/{database name}?key1=val1&key2=val2
  5. Currently SqlGateway does not support authentication, user  and password in connection are invalid.
  6. Use Flink Jdbc Driver in Java code

    Code Block
    languagejava
    String driverName = "org.apache.flink.table.jdbc.FlinkDriver";
    String url = "jdbc:flink://{sql-gateway.host}:{sql-gateway.port}/{catalog name}/{database name}?key1=val1&key2=val2";
    Class.forName(driverName);
    
    try (Connection connection = DriverManager.getConnection(url)) {
        try (Statement statement = connection.createStatement()) {
    ";
    Class.forName(driverName);
    
    try (Connection connection = DriverManager.getConnection(url)) {
        try (Statement statement = connection.createStatement()) {
            try (ResultSet resultSet = statement.execute("SELECT * FROM {Your Table}")) {
                while (resultSet.hasNext()) {
                    Do your work ...
                }
             }
    
    		try (ResultSet resultSet = statement.execute("SELECT * FROM {Your Table} T1 JOIN T2 on T1.id=T2.id ...")) {
                			while (resultSet.hasNext()) {
                    Do your      work ....
          
          }
            }
    		}
        }
    }


  7. User can also add the flink-table-jdbc-driver-{version}.jar to the classpath of external jdbc tools.

...

TIMESTAMP_LZT(Not

Flink Data Type

Java Sql Data Type

Java Data Type

CharType/VarCharType

CHAR/VARCHAR

String

BooleanType

BOOLEAN

Boolean

TinyIntType

TINYINT

Byte

SmallIntType

SMALLINT

Short

IntType

INTEGER

Int

BigIntType

BIGINT

Long

FloatType

FLOAT

Float

DoubleType

DOUBLE

Double

DecimalType

DECIMAL

BigDecimal

BinaryType/VarBinaryType

BINARY/VARBINARY

byte[]

DateType

DATE

Date

TimeType

TIME

Time

TimestampType

TIMESTAMP

Timestamp

ZonedTimestampType

TIMESTAMP_WITH_TIMEZONE

ZonedDateTime

LocalZonedTimestampType

TIMESTAMP

Timestamp

ZonedTimestampType

TIMESTAMP_WITH_TIMEZONE

OffsetDateTime

LocalZonedTimestampType

TIMESTAMP_WITH_LOCAL_TIMEZONE

Timestamp

ArrayType

ARRAY

Array

RowType

ROW(Not in java.sql.Types)

Row(Flink Row Data)

MapType

MAP

Map<K, V>

Currently TIMESTAMP_WITH_LOCAL_TIMEZONE is not exist in java.sql.Types

...

Instant

...

ArrayType

...

ARRAY

...

Array

...

RowType

...

ROW(Not in java.sql.Types)

...

Row(Flink Row Data)

...

MapType

...

MAP

...

, but it is supported by Flink. Users can define a field as (f TIMESTAMP(p) WITH LOCAL TIME ZONE) and set time zone through the connection parameters or dynamic parameters in console by table.local-time-zone. After that, users can get Timestamp which will be automatically converted from stored time data into specific Timestamp  according to the given time zone.

Public Interface

There are many methods in Jdbc Driver, while this FLIP only implement the basic methods first and more methods will be implemented later when they are needed. 

...