A MySQL client that is not Service
-based like com.twitter.finagle.Mysql.Client is,
making it easier to use for most cases.
A MySQL client that is not Service
-based like com.twitter.finagle.Mysql.Client is,
making it easier to use for most cases.
Creation:
import com.twitter.finagle.Mysql import com.twitter.finagle.mysql.Client val client: Client = Mysql.client .withCredentials("username", "password") .withDatabase("database") .newRichClient("host:port")
A CloseRequest deallocates a prepared statement on the server.
A CloseRequest deallocates a prepared statement on the server. No response is sent back to the client. https://dev.mysql.com/doc/internals/en/com-stmt-close.html
Indicates the requested column name was not found.
A command request is a request initiated by the client and has a cmd byte associated with it.
A closable async stream of projected rows from a CursoredStatement.
A CursoredStatement
represents a parameterized SQL statement
applied concurrently with varying parameters and yields
a lazy stream of rows.
A CursoredStatement
represents a parameterized SQL statement
applied concurrently with varying parameters and yields
a lazy stream of rows.
These are SQL statements with ?
's used for the parameters which are
"filled in" per usage by apply
.
PreparedStatement for eager processing of Rows.
Client.cursor(String
A decoder for Results contained in a single packet.
Uses the binary protocol to build an execute request for a prepared statement.
Uses the binary protocol to build an execute request for a prepared statement. https://dev.mysql.com/doc/internals/en/com-stmt-execute.html
A base class for exceptions related to client incompatibility with an upstream MySQL server.
A LostSyncException indicates that this finagle-mysql client and the MySQL server are no longer able to properly communicate, as there has been a failure to decode a message from the server or data has become corrupted in transmission.
A LostSyncException indicates that this finagle-mysql client and the MySQL server are no longer able to properly communicate, as there has been a failure to decode a message from the server or data has become corrupted in transmission. It is a fatal error and the communication with the server must be closed, then reopened, and renegotiated.
Represents the OK Packet received from the server.
Represents the OK Packet received from the server. It is sent to indicate that a command (e.g. PreparedStatement.modify) has completed successfully.
how many records were changed by the command.
the first automatically generated value successfully inserted for an AUTO_INCREMENT column for an INSERT statement.
server status bit mask.
how many warnings were generated.
the status message, which will be an empty String if none is present.
A value of type A
can implicitly convert to a Parameter
if an evidence
CanBeParameter[A]
is available in scope via the Parameter.wrap or
Parameter.wrapOption implicits.
A value of type A
can implicitly convert to a Parameter
if an evidence
CanBeParameter[A]
is available in scope via the Parameter.wrap or
Parameter.wrapOption implicits. Explicit conversions are available
via Parameter.of and Parameters.of.
A Scala example with implicits:
import com.twitter.finagle.mysql.Parameter import com.twitter.finagle.mysql.Parameter._ val p: Parameter = "this will get implicitly converted to a Parameter"
A Scala example without implicits:
import com.twitter.finagle.mysql.Parameter val p: Parameter = Parameter.of("explicitly converted to a Parameter")
A Java example:
import com.twitter.finagle.mysql.Parameter; import com.twitter.finagle.mysql.Parameters; Parameter p = Parameters.of("explicitly converted to a Parameter");
Allocates a prepared statement on the server from the passed in query string.
Allocates a prepared statement on the server from the passed in query string. https://dev.mysql.com/doc/internals/en/com-stmt-prepare.html
A PreparedStatement
represents a parameterized SQL statement which may be
applied concurrently with varying parameters.
A PreparedStatement
represents a parameterized SQL statement which may be
applied concurrently with varying parameters.
These are SQL statements with ?
's used for the parameters which are
"filled in" per usage by read
, select
, and modify
.
CursoredStatement for a lazy stream of Rows.
Client.prepare(String)
A QueryRequest is used to send the server a text-based query that is executed immediately.
A QueryRequest is used to send the server a text-based query that is executed immediately. https://dev.mysql.com/doc/internals/en/com-query.html
A RawValue contains the raw bytes that represent a value and enough meta data to decode the bytes.
A Request
is an outgoing message sent by the client
as part of the MySQL protocol.
A Request
is an outgoing message sent by the client
as part of the MySQL protocol. It is packet-based and
based around a MySQL command.
A ServiceFactory
that ensures a ROLLBACK statement is issued when a service is put
back into the connection pool.
A ServiceFactory
that ensures a ROLLBACK statement is issued when a service is put
back into the connection pool.
https://dev.mysql.com/doc/en/implicit-commit.html
A Row
allows you to extract Value's from a MySQL row.
A Row
allows you to extract Value's from a MySQL row.
Column values can be accessed by the MySQL column name via the
typed xyzOrNull
and getXyz
methods. For example, stringOrNull
and getString
. The get
-prefixed methods return Options
and use None
to represent a SQL NULL. For SQL NULLs, the or
-suffixed methods return
null
for Object-types and use a sentinel, like 0, for primitives.
Alternatively, Value's based on the column name can be accessed
via the apply
method.
For example, given the query, SELECT 'text' AS str_col, 123 AS int_col
,
you could extract the columns as such.
First, in Scala:
import com.twitter.finagle.mysql.Row val row: Row = ??? // if the column is not null: val strCol: String = row.stringOrNull("str_col") val intCol: Int = row.intOrZero("int_col") // if the column is nullable: val strCol: Option[String] = row.getString("str_col") val intCol: Option[java.lang.Integer] = row.getInteger("int_col")
Then, the same in Java:
import com.twitter.finagle.mysql.Row; import scala.Option; Row row = ... // if the column is not null: String strCol = row.stringOrNull("str_col"); int intCol = row.intOrZero("int_col"); // if the column is nullable: Option<String> strCol = row.getString("str_col"); Option<Integer> intCol = row.getInteger("int_col");
A catch-all exception class for errors returned from the upstream MySQL server.
Represents the ServerStatus as represented in EOF packets
Represents the ServerStatus as represented in EOF packets
the raw bit mask in the EOF packet
Explicitly manage the lifecycle of a MySQL session.
Explicitly manage the lifecycle of a MySQL session.
Client#session()
Defines a request that encodes the command byte and associated data into a packet.
An injector/extractor of java.sql.Timestamp values.
Indicates the requested column was for an unsupported type.
Indicates the requested column was for an unsupported type. For example, asking for a string when the column is a tinyint.
A UseRequest is used to change the default schema of the connection.
A UseRequest is used to change the default schema of the connection. https://dev.mysql.com/doc/internals/en/com-init-db.html
Defines a Value ADT that represents the domain of values received from a mysql server.
Thrown if unable to serialize a value of the column.
Contains the SQL for a Request.
When a new implicit CanBeParameter is added here, it should also be explicitly added to Parameter.unsafeWrap.
Used internally to synthesize a response from the server when sending a prepared statement CloseRequest
A stack module that executes a request when create a connection.
A stack module that executes a request when create a connection.
that this needs to be added at the bottom of the stack near
the prepConn
Role.
Represents and EOF result received from the server which contains any warnings and the server status.
Represents and EOF result received from the server which contains any warnings and the server status. https://dev.mysql.com/doc/internals/en/generic-response-packets.html#packet-EOF_Packet
Represents the Error Packet received from the server and the data sent along with it.
Represents the Error Packet received from the server and the data sent along with it. https://dev.mysql.com/doc/internals/en/generic-response-packets.html#packet-ERR_Packet
Represents the column meta-data associated with a query.
Represents the column meta-data associated with a query. Sent during ResultSet transmission and as part of the meta-data associated with a Row. https://dev.mysql.com/doc/internals/en/com-query-response.html#packet-Protocol::ColumnDefinition41
These bit masks are to understand whether corresponding attribute is set for the field.
These bit masks are to understand whether corresponding attribute is set for the field. Link to source code from mysql is below. https://github.com/mysql/mysql-server/blob/5.7/include/mysql_com.h
First result received from the server as part of the connection phase.
First result received from the server as part of the connection phase. https://dev.mysql.com/doc/internals/en/connection-phase-packets.html
Indicates that the server to which the client is connected is configured to use a charset that the client is incompatible with.
Indicates that the server to which the client is connected is running a version of MySQL that the client is incompatible with.
MySQL Isolation Levels.
MySQL Isolation Levels. Used to override the SESSION or GLOBAL isolation level when executing transactions.
For Scala users, the typical usage is by importing the implicit conversions and then letting the compiler do the conversions for you.
For Scala users, the typical usage is by importing the implicit conversions and then letting the compiler do the conversions for you. Explicit runtime conversions are also available via Parameter.of.
Java users should generally be using Parameters.of to do explicit conversions.
A Scala example with implicits:
import com.twitter.finagle.mysql.Parameter import com.twitter.finagle.mysql.Parameter._ val p: Parameter = "this will get implicitly converted to a Parameter"
A Scala example without implicits:
import com.twitter.finagle.mysql.Parameter val p: Parameter = Parameter.of("explicitly converted to a Parameter")
A Java example:
import com.twitter.finagle.mysql.Parameter; import com.twitter.finagle.mysql.Parameters; Parameter p = Parameters.of("explicitly converted to a Parameter");
Parameters for a Java-friendly API.
A Java adaptation of the com.twitter.finagle.mysql.Parameter companion object.
A request to check if the server is alive.
A request to check if the server is alive. https://dev.mysql.com/doc/internals/en/com-ping.html
Meta data returned from the server in response to a prepared statement initialization request COM_STMT_PREPARE.
Meta data returned from the server in response to a prepared statement initialization request COM_STMT_PREPARE. https://dev.mysql.com/doc/internals/en/com-stmt-prepare-response.html#packet-COM_STMT_PREPARE_OK
Tells the server that the client wants to close the connection.
Tells the server that the client wants to close the connection. https://dev.mysql.com/doc/internals/en/com-quit.html
Extracts a value in UTC.
Extracts a value in UTC. To use a different time zone, create an instance of com.twitter.finagle.mysql.TimestampValue.