ldbc icon indicating copy to clipboard operation
ldbc copied to clipboard

Creating a MySQL connector project written in pure Scala3.

Open takapi327 opened this issue 2 years ago • 0 comments

Implementation Details

Creating a MySQL connector project written in pure Scala3.

JVM, JS and Native platforms are all supported.

Related pull requests

  • [x] https://github.com/takapi327/ldbc/pull/128
  • [x] https://github.com/takapi327/ldbc/pull/134
  • [x] https://github.com/takapi327/ldbc/pull/146
  • [x] https://github.com/takapi327/ldbc/pull/157
  • [x] https://github.com/takapi327/ldbc/pull/158
  • [x] https://github.com/takapi327/ldbc/pull/159
  • [x] https://github.com/takapi327/ldbc/pull/167
  • [x] https://github.com/takapi327/ldbc/pull/173
  • [x] https://github.com/takapi327/ldbc/pull/177
  • [x] https://github.com/takapi327/ldbc/pull/180
  • [x] https://github.com/takapi327/ldbc/pull/181
  • [x] https://github.com/takapi327/ldbc/pull/182
  • [x] https://github.com/takapi327/ldbc/pull/183
  • [x] https://github.com/takapi327/ldbc/pull/184
  • [x] https://github.com/takapi327/ldbc/pull/186

Supported Platforms

Module / Platform JVM Scala Native Scala.js
ldbc-connector

Function Development

  • [x] Implementation of Authentication Function
    • [x] mysql_native_password support
    • [x] sha256_password support
    • [x] caching_sha2_password support
  • [x] SSL/TLS support
  • [x] RSA authentication method support
  • [x] Establish connection specifying database
  • [x] Codec
    • [x] Encoder
    • [x] Decoder
  • [x] Execute query
    • [x] Statement
      • [x] Read query execution
      • [x] Execute write query
      • [x] Decode acquisition records
    • [x] PreparedStatement in Client
      • [x] Building a query
      • [x] Encoding of sent values
      • [x] Read query execution
      • [x] Execute write query
      • [x] Decode acquisition records
    • [x] PreparedStatement in Server
      • [x] Encoding of sent values
      • [x] Read query execution
      • [x] Execute write query
      • [x] Decode acquisition records
  • [x] Transaction function implementation
    • [x] Read Only setting function
    • [x] Auto Commit setting function
    • [x] Transaction isolation level setting function
    • [x] Commit function
    • [x] Rollback function
    • [x] Savepoint function
  • [x] Utility Commands
  • [x] Batch commands
  • [ ] Connection pooling implementation

Supported DetaType

DataType Support
BIT
TINYINT
SMALLINT
MEDIUMINT
INT
BIGINT
DECIMAL
FLOAT
DOUBLE
CHAR
VARCHAR
BINARY
VARBINARY
TINYBLOB
BLOB
MEDIUMBLOB
LONGBLOB
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
ENUM
SET
JSON
DATE
DATETIME
TIMESTAMP
TIME
YEAR
BOOLEAN
GEOMETRY
POINT
LINESTRING
POLYGON
MULTIPOINT
MULTILINESTRING
MULTIPOLYGON
GEOMETRYCOLLECTION

Other

  • [x] Documentation Creation
    • [x] https://github.com/takapi327/ldbc/pull/317
  • [x] Performance Verification
    • [x] Comparison with JDBC
    • [x] Comparison with other MySQL Scala libraries
    • [ ] Verification of operation in AWS and other infrastructure environments

References

Porting of the following repository functions. https://github.com/takapi327/scala-jvm-js-native-example

takapi327 avatar Mar 03 '24 10:03 takapi327