amysql/private/protocol

    Dark Mode
Search:
Group by:

Basic datatype packers/unpackers little endianMySQL packet packers/unpackers

Types

SessionStateType {...}{.pure.} = enum
  systemVariables = 0, schema = 1, stateChange = 2, gtids = 3,
  transactionCharacteristics = 4, transactionState = 5
SessionState = object
  name*: string
  typ*: SessionStateType
  value*: string
Command {...}{.pure.} = enum
  quit = 1, initDb = 2, query = 3, fieldList = 4, createDb = 5, dropDb = 6,
  refresh = 7, shutdown = 8, statistics = 9, processInfo = 10, processKill = 12,
  debug = 13, ping = 14, changeUser = 17, statementPrepare = 22,
  statementExecute = 23, statementSendLongData = 24, statementClose = 25,
  statementReset = 26, setOption = 27, statementFetch = 28, resetConnection = 31 ## https://dev.mysql.com/doc/dev/mysql-server/latest/group__group__cs__column__definition__flags.html
FieldFlag {...}{.pure.} = enum
  notNull = 0, primaryKey = 1, uniqueKey = 2, multipleKey = 3, blob = 4,
  unsigned = 5, zeroFill = 6, binary = 7, enumeration = 8, autoIncrement = 9,
  timeStamp = 10, isSet = 11, noDefaultValue = 12, onUpdateNow = 13, isNum = 15
FieldType = enum
  fieldTypeDecimal = 0, fieldTypeTiny = 1, fieldTypeShort = 2,
  fieldTypeLong = 3, fieldTypeFloat = 4, fieldTypeDouble = 5, fieldTypeNull = 6,
  fieldTypeTimestamp = 7, fieldTypeLongLong = 8, fieldTypeInt24 = 9,
  fieldTypeDate = 10, fieldTypeTime = 11, fieldTypeDateTime = 12,
  fieldTypeYear = 13, fieldTypeVarchar = 15, fieldTypeBit = 16,
  fieldTypeJson = 245, fieldTypeNewDecimal = 246, fieldTypeEnum = 247,
  fieldTypeSet = 248, fieldTypeTinyBlob = 249, fieldTypeMediumBlob = 250,
  fieldTypeLongBlob = 251, fieldTypeBlob = 252, fieldTypeVarString = 253,
  fieldTypeString = 254, fieldTypeGeometry = 255
CursorType {...}{.pure.} = enum
  noCursor = 0, readOnly = 1, forUpdate = 2, scrollable = 3
ResponseOK {...}{.final.} = object
  eof: bool
  affectedRows*: Natural
  lastInsertId*: Natural
  statusFlags*: set[Status]
  warningCount*: Natural
  info*: string
  sessionStateChanges*: seq[SessionState]
ResponseAuthSwitch {...}{.final.} = object
  status: uint8
  pluginName*: string
  pluginData*: string
ResponseAuthMore {...}{.final.} = object
  status: uint8
  pluginData*: string
ResponseERR = object of CatchableError
  error_code: uint16
  sqlstate: string
HandshakePacket = ref HandshakePacketObj
ColumnDefinition {...}{.final.} = object
  catalog*: string
  schema*: string
  table*: string
  origTable*: string
  name*: string
  origName*: string
  charset*: int16
  length*: uint32
  columnType*: FieldType
  flags*: set[FieldFlag]
  decimals*: int
ResultSet[T] {...}{.final.} = object
  status*: ResponseOK
  columns*: seq[ColumnDefinition]
  rows*: seq[seq[T]]

Consts

ResponseCode_OK: uint8 = 0
ResponseCode_EOF: uint8 = 254
ResponseCode_ERR: uint8 = 255
ResponseCode_LOCAL_INFILE: uint8 = 251
ResponseCode_AuthSwitchRequest: uint8 = 254
ResponseCode_ExtraAuthData: uint8 = 1
NullColumn = 0x000000FB
Charset_utf8_ci: uint8 = 0x00000021

Procs

proc isEOF(stats: ResponseOK): bool {...}{.raises: [], tags: [].}
proc setInt32(buf: var openArray[char]; pos: int; value: int) {...}{.inline,
    raises: [], tags: [].}
proc putU8(buf: var string; val: range[0 .. 255]) {...}{.inline, raises: [], tags: [].}
proc scanU16(buf: openArray[char]; pos: int): uint16 {...}{.raises: [], tags: [].}
proc putU16(buf: var string; val: uint16) {...}{.raises: [], tags: [].}
proc scanU32(buf: openArray[char]; pos: int): uint32 {...}{.raises: [], tags: [].}
proc putU32(buf: var string; val: uint32) {...}{.raises: [], tags: [].}
proc putFloat(buf: var string; val: float32) {...}{.raises: [], tags: [].}
proc putDouble(buf: var string; val: float64) {...}{.raises: [], tags: [].}
proc scanFloat(buf: openArray[char]; pos: int): float32 {...}{.raises: [], tags: [].}
proc scanDouble(buf: openArray[char]; pos: int): float64 {...}{.raises: [], tags: [].}
proc scanU64(buf: openArray[char]; pos: int): uint64 {...}{.raises: [], tags: [].}
proc putS64(buf: var string; val: int64) {...}{.raises: [], tags: [].}
proc putU64(buf: var string; val: uint64) {...}{.raises: [], tags: [].}
proc readLenInt(buf: openArray[char]; pos: var int): int {...}{.raises: [], tags: [].}
proc putLenInt(buf: var string; val: int | uint | int32 | uint32): int {...}{.
    discardable.}
proc countLenInt(val: int | uint | int32 | uint32): int
proc readNulString(buf: openArray[char]; pos: var int): string {...}{.raises: [],
    tags: [].}
proc readNulStringX(buf: openArray[char]; pos: var int): string {...}{.raises: [],
    tags: [].}
proc putNulString(buf: var string; val: string) {...}{.raises: [], tags: [].}
proc readLenStr(buf: openArray[char]; pos: var int): string {...}{.
    raises: [ProtocolError], tags: [].}
proc putLenStr(buf: var string; val: string) {...}{.raises: [ProtocolError], tags: [].}
proc writeTypeAndFlag(buf: var string; intVal: int64) {...}{.inline, raises: [],
    tags: [].}
proc writeTypeAndFlag(buf: var string; intVal: uint64) {...}{.inline, raises: [],
    tags: [].}
proc putValue(buf: var string; intVal: int64) {...}{.raises: [], tags: [].}
proc putValue(buf: var string; intVal: uint64) {...}{.raises: [], tags: [].}
proc writeTypeAndFlag(buf: var string; fieldType: FieldType) {...}{.inline,
    raises: [], tags: [].}
proc isEOFPacket(conn: Connection): bool {...}{.raises: [], tags: [].}
proc isEOFPacketFollowed(conn: Connection): bool {...}{.raises: [], tags: [].}
proc isERRPacket(conn: Connection): bool {...}{.raises: [], tags: [].}
proc isOKPacket(conn: Connection): bool {...}{.raises: [], tags: [].}
proc isAuthSwitchRequestPacket(conn: Connection): bool {...}{.raises: [], tags: [].}
http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::AuthSwitchRequest
proc isExtraAuthDataPacket(conn: Connection): bool {...}{.raises: [], tags: [].}
https://dev.mysql.com/doc/internals/en/successful-authentication.html
proc isLocalInfileRequestPacket(conn: Connection): bool {...}{.raises: [], tags: [].}
proc parseLocalInfileRequestPacket(conn: Connection): string {...}{.raises: [],
    tags: [].}
proc parseErrorPacket(conn: Connection): ref ResponseERR {...}{.raises: [], tags: [].}
proc checkEof(conn: Connection) {...}{.inline, raises: [ProtocolError], tags: [].}
proc parseAuthSwitchPacket(conn: Connection): ref ResponseAuthSwitch {...}{.
    raises: [], tags: [].}
proc parseResponseAuthMorePacket(conn: Connection; pkt: string): ref ResponseAuthMore {...}{.
    raises: [], tags: [].}
proc parseOKPacket(conn: Connection): ResponseOK {...}{.raises: [ProtocolError],
    tags: [].}
proc parseEOFPacket(conn: Connection): ResponseOK {...}{.raises: [], tags: [].}
proc putTime(buf: var string; val: Duration): int {...}{.discardable, raises: [],
    tags: [].}
proc readTime(buf: openArray[char]; pos: var int): Duration {...}{.raises: [],
    tags: [].}
proc putDate(buf: var string; val: DateTime): int {...}{.discardable, raises: [],
    tags: [].}
proc putDateTime(buf: var string; val: DateTime): int {...}{.discardable, raises: [],
    tags: [].}
proc readDateTime(buf: openArray[char]; pos: var int; zone: Timezone = utc()): DateTime {...}{.
    raises: [], tags: [].}
proc putTimestamp(buf: var string; val: DateTime): int {...}{.discardable,
    raises: [ValueError], tags: [].}
proc hexdump(buf: openArray[char]; fp: File) {...}{.raises: [IOError],
    tags: [WriteIOEffect].}
proc sendQuery(conn: Connection; query: string): Future[void] {...}{.
    tags: [WriteIOEffect, RootEffect], raises: [].}
proc sendFile(conn: Connection; filename: string): Future[void] {...}{.
    tags: [WriteIOEffect, RootEffect], raises: [IOError].}
proc sendEmptyPacket(conn: Connection): Future[void] {...}{.
    tags: [WriteIOEffect, RootEffect], raises: [].}
proc processMetadata(conn: Connection; meta: var seq[ColumnDefinition];
                     index: int) {...}{.raises: [ProtocolError], tags: [].}