Giter VIP home page Giter VIP logo

rdbc's Introduction

Travis Codecov Maven Central Gitter license

What is rdbc?

rdbc is a SQL-level relational database connectivity API targeting Scala and Java programming languages. The API is fully asynchronous and provides a possibility to leverage Reactive Streams' stream processing capabilities.

Documentation

See the documentation at http://rdbc.io.

Goals

Following list outlines the goals of the API:

  1. Provide vendor neutral access to most commonly used database features.

    The API is meant to be vendor neutral in a sense that if clients stick to using only standard SQL features no vendor-specific code should be needed and database backends can be switched with no client code changes.

  2. Be asynchronous and reactive.

    All methods that can potentially perform I/O actions don't block the executing thread so the API fits well into non-blocking application design. rdbc allows building applications according to the Reactive Manifesto by using Reactive Streams for asynchronous streaming results with a back-pressure.

  3. Provide a foundation for higher-level APIs.

    rdbc is a rather low-level API enabling clients to use plain SQL queries and get results back. While it can be used directly it's also meant to provide a foundation for higher-level APIs like functional or object relational mapping libraries.

rdbc's People

Contributors

povder avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rdbc's Issues

Implement a testkit

Common for all statements

Errors

  • non-existent table
  • non-existent column
  • missing param value
  • superfluous param
  • syntactically incorrect
  • timeout
  • positional params ^
  • can't mix positional with named params
  • TODO don't forget to test all the cases above for executing batch

Selects - everything inside a tx and without an explicit tx

Streaming

  • Select empty table
  • Read fully at once
  • Read fully by chunks
  • Read some & cancel
  • Cancel right away
  • warnings
  • rows affected count
  • metadata

Result set

  • Select empty table
  • Select non-empty table
  • warnings
  • rows affected count
  • metadata

For first row

  • Empty table
  • Single row
  • Many rows

For value

  • Empty table
  • Single row
  • Many rows
  • Incorrect type
  • null value

For value opt

  • Empty table
  • Single row
  • Many rows
  • Incorrect type
  • null value

Streaming arguments

  • TODO
  • Don't forget about arg conversion errors and execution errors in the middle of streaming
  • Test what happens when publisher fails: connection should roll back

Row

  • opt/non opt

Data types

outbound

  • ...

inbound

  • ...

Param tests

Do select with different parameters and see if results show that parameters got applied

  • no parameters
  • one parameter
  • many parameters
  • the same parameter multiple times
  • parameter at the end of sql

TX tests

...

Cross tests with JDBC

...

Introduce "whenIdle" method on connection

Introduce "whenIdle" method on connection that will start executing stuff after the conn becomes ready and the code being executed will "own" the connection so that no other request can interfere.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.