Class LocalDateTimeCodec

java.lang.Object
org.mariadb.jdbc.plugin.codec.LocalDateTimeCodec
All Implemented Interfaces:
Codec<LocalDateTime>

public class LocalDateTimeCodec extends Object implements Codec<LocalDateTime>
LocalDateTime codec
  • Field Details

    • INSTANCE

      public static final LocalDateTimeCodec INSTANCE
      default instance
    • TIMESTAMP_FORMAT

      public static final DateTimeFormatter TIMESTAMP_FORMAT
      timestamp with fractional part formatter
    • TIMESTAMP_FORMAT_NO_FRACTIONAL

      public static final DateTimeFormatter TIMESTAMP_FORMAT_NO_FRACTIONAL
      timestamp without fractional part formatter
    • MARIADB_LOCAL_DATE_TIME

      public static final DateTimeFormatter MARIADB_LOCAL_DATE_TIME
      formatter
    • COMPATIBLE_TYPES

      private static final EnumSet<DataType> COMPATIBLE_TYPES
  • Constructor Details

    • LocalDateTimeCodec

      public LocalDateTimeCodec()
  • Method Details

    • parseTextTimestamp

      public static int[] parseTextTimestamp(ReadableByteBuf buf, MutableInt length)
    • isDelimiter

      private static boolean isDelimiter(byte b)
    • isDigit

      private static boolean isDigit(byte b)
    • adjustNanoPrecision

      private static void adjustNanoPrecision(int[] parts, int nanoLength)
    • isZeroTimestamp

      public static boolean isZeroTimestamp(int[] parts)
    • localDateTimeOf

      static LocalDateTime localDateTimeOf(int year, int month, int dayOfMonth, int hour, int minutes, int seconds, int nanos) throws SQLDataException
      LocalDateTime from server values, or SQLDataException when they cannot be represented (zero day or month, permitted by the server when sql_mode doesn't contain NO_ZERO_IN_DATE).
      Parameters:
      year - year
      month - month
      dayOfMonth - day of month
      hour - hour
      minutes - minutes
      seconds - seconds
      nanos - nanoseconds
      Returns:
      LocalDateTime
      Throws:
      SQLDataException - if the value is not a valid date-time
    • className

      public String className()
      Description copied from interface: Codec
      Codec native type
      Specified by:
      className in interface Codec<LocalDateTime>
      Returns:
      code native return type
    • canDecode

      public boolean canDecode(ColumnDecoder column, Class<?> type)
      Description copied from interface: Codec
      If codec can decode this a server datatype to a java class type
      Specified by:
      canDecode in interface Codec<LocalDateTime>
      Parameters:
      column - server datatype
      type - java return class
      Returns:
      true if codec can decode it
    • canEncode

      public boolean canEncode(Object value)
      Description copied from interface: Codec
      Can Codec encode the java object type
      Specified by:
      canEncode in interface Codec<LocalDateTime>
      Parameters:
      value - java object type
      Returns:
      true if codec can encode java type
    • decodeText

      public LocalDateTime decodeText(ReadableByteBuf buf, MutableInt length, ColumnDecoder column, Calendar cal, Context context) throws SQLDataException
      Description copied from interface: Codec
      Decode from a mysql packet text encoded a value to codec java type
      Specified by:
      decodeText in interface Codec<LocalDateTime>
      Parameters:
      buf - mysql packet buffer
      length - encoded value length
      column - server column metadata
      cal - calendar
      context - connection context
      Returns:
      decoded value
      Throws:
      SQLDataException - if unexpected error occurs during decoding
    • decodeBinary

      public LocalDateTime decodeBinary(ReadableByteBuf buf, MutableInt length, ColumnDecoder column, Calendar cal, Context context) throws SQLDataException
      Description copied from interface: Codec
      Decode from a mysql packet binary encoded a value to codec java type
      Specified by:
      decodeBinary in interface Codec<LocalDateTime>
      Parameters:
      buf - mysql packet buffer
      length - encoded value length
      column - server column metadata
      cal - calendar
      context - connection context
      Returns:
      decoded value
      Throws:
      SQLDataException - if unexpected error occurs during decoding
    • fromConnectionTimeZone

      private static LocalDateTime fromConnectionTimeZone(LocalDateTime ldt, Calendar cal, Context context)
      Apply timezone handling when DECODING a DATETIME/TIMESTAMP wall-clock value as a LocalDateTime. By default the value is returned verbatim (LocalDateTime is zoneless). Only when pureLocalDateTime=false and preserveInstants is set (no Calendar) is the instant converted from the connection time zone to the JVM default. A Calendar has no effect on a zoneless LocalDateTime.
    • toConnectionTimeZone

      private static LocalDateTime toConnectionTimeZone(LocalDateTime ldt, Calendar cal, Context context)
      Inverse of fromConnectionTimeZone(LocalDateTime, Calendar, Context), applied when ENCODING a LocalDateTime. By default, the value is sent verbatim. Only when pureLocalDateTime=false and preserveInstants is set (no Calendar) is the value, taken as a JVM-default-zone wall-clock, converted to the connection time zone before being sent (so it round-trips to the same instant).
    • encodeText

      public void encodeText(Writer encoder, Context context, LocalDateTime value, Calendar cal, Long maxLen) throws IOException
      Description copied from interface: Codec
      Text encode value to writer
      Specified by:
      encodeText in interface Codec<LocalDateTime>
      Parameters:
      encoder - writer
      context - connection context
      value - value to encode
      cal - calendar
      maxLen - maximum value length
      Throws:
      IOException - if any socket error occurs
    • getApproximateTextProtocolLength

      public int getApproximateTextProtocolLength(LocalDateTime value, Long length)
      Description copied from interface: Codec
      Get approximate text length, or -1 if unknown
      Specified by:
      getApproximateTextProtocolLength in interface Codec<LocalDateTime>
      Parameters:
      value - parameter object
      length - max length
      Returns:
      max length if known, -1 if unknown
    • encodeBinary

      public void encodeBinary(Writer encoder, Context context, LocalDateTime value, Calendar cal, Long maxLength) throws IOException
      Description copied from interface: Codec
      Binary encode value to writer
      Specified by:
      encodeBinary in interface Codec<LocalDateTime>
      Parameters:
      encoder - writer
      context - connection context
      value - value to encode
      cal - calendar
      maxLength - maximum value length
      Throws:
      IOException - if any socket error occurs
    • getBinaryEncodeType

      public int getBinaryEncodeType()
      Description copied from interface: Codec
      Return server encoding data type
      Specified by:
      getBinaryEncodeType in interface Codec<LocalDateTime>
      Returns:
      server encoding data type