Skip to content

Commit

Permalink
[CONJ-1009] improve performance reading result-set of big size part 3
Browse files Browse the repository at this point in the history
 * JSON metadata correction
  • Loading branch information
rusher committed Sep 19, 2022
1 parent 22cff70 commit 211e286
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/main/java/org/mariadb/jdbc/client/DataType.java
Expand Up @@ -24,7 +24,7 @@ public enum DataType {
NEWDATE(14, DateColumn::new, DateColumn::new),
VARCHAR(15, StringColumn::new, StringColumn::new),
BIT(16, BitColumn::new, BitColumn::new),
JSON(245, StringColumn::new, StringColumn::new),
JSON(245, JsonColumn::new, JsonColumn::new),
DECIMAL(246, BigDecimalColumn::new, BigDecimalColumn::new),
ENUM(247, StringColumn::new, StringColumn::new),
SET(248, StringColumn::new, StringColumn::new),
Expand Down
41 changes: 41 additions & 0 deletions src/main/java/org/mariadb/jdbc/client/column/JsonColumn.java
@@ -0,0 +1,41 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2012-2014 Monty Program Ab
// Copyright (c) 2015-2021 MariaDB Corporation Ab

package org.mariadb.jdbc.client.column;

import org.mariadb.jdbc.Configuration;
import org.mariadb.jdbc.client.ColumnDecoder;
import org.mariadb.jdbc.client.DataType;
import org.mariadb.jdbc.client.ReadableByteBuf;
import java.sql.*;

/** Column metadata definition */
public class JsonColumn extends StringColumn implements ColumnDecoder {

public JsonColumn(
ReadableByteBuf buf,
int charset,
long length,
DataType dataType,
byte decimals,
int flags,
int[] stringPos,
String extTypeName,
String extTypeFormat) {
super(buf, charset, length, dataType, decimals, flags, stringPos, extTypeName, extTypeFormat);
}

public String defaultClassname(Configuration conf) {
return String.class.getName();
}

public int getColumnType(Configuration conf) {
return Types.LONGVARCHAR;
}

public String getColumnTypeName(Configuration conf) {
return "JSON";
}

}
Expand Up @@ -398,10 +398,10 @@ public Timestamp decodeTimestampBinary(ReadableByteBuf buf, int length, Calendar
Timestamp timestamp;
synchronized (cal) {
cal.clear();
cal.set(year, month - 1, (int) dayOfMonth, hour, minutes, seconds);
cal.set(year, month - 1, dayOfMonth, hour, minutes, seconds);
timestamp = new Timestamp(cal.getTimeInMillis());
}
timestamp.setNanos((int) (microseconds * 1000));
timestamp.setNanos(microseconds * 1000);
return timestamp;

} catch (DateTimeException dte) {
Expand Down
Expand Up @@ -476,7 +476,7 @@ public Timestamp decodeTimestampBinary(ReadableByteBuf buf, int length, Calendar
Timestamp timestamp;
synchronized (cal) {
cal.clear();
cal.set(year, month - 1, (int) dayOfMonth, hour, minutes, seconds);
cal.set(year, month - 1, dayOfMonth, hour, minutes, seconds);
timestamp = new Timestamp(cal.getTimeInMillis());
}
timestamp.setNanos((int) (microseconds * 1000));
Expand Down

0 comments on commit 211e286

Please sign in to comment.