Skip to content

Commit 0fcc30c

Browse files
shiyuhang0ti-chi-bot
authored andcommitted
This is an automated cherry-pick of pingcap#2598
Signed-off-by: ti-chi-bot <[email protected]>
1 parent e4358bf commit 0fcc30c

File tree

4 files changed

+19
-16
lines changed

4 files changed

+19
-16
lines changed

core/src/test/scala/com/pingcap/tispark/datasource/AutoIncrementSuite.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class AutoIncrementSuite extends BaseBatchWriteTest("test_datasource_auto_increm
2929
val schema = StructType(List(StructField("j", LongType)))
3030

3131
jdbcUpdate(
32-
s"create table $dbtable(i int NOT NULL AUTO_INCREMENT, j int NOT NULL, primary key (i)) SHARD_ROW_ID_BITS=4")
32+
s"create table $dbtable(i int NOT NULL AUTO_INCREMENT, j int NOT NULL, primary key (i)/*T![clustered_index] NONCLUSTERED */) SHARD_ROW_ID_BITS=4")
3333

3434
val tiTableInfo = ti.tiSession.getCatalog.getTable(dbPrefix + database, table)
3535
assert(!tiTableInfo.isPkHandle)

db-random-test/src/main/scala/com/pingcap/tispark/test/generator/IndexColumn.scala

+3-1
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,9 @@ case class IndexInfo(
110110
isUnique: Boolean) {
111111

112112
def toString(isClusteredIndex: Boolean): String = {
113-
val clusteredIndexStr = if (isClusteredIndex) " /*T![clustered_index] CLUSTERED */" else ""
113+
val clusteredIndexStr =
114+
if (isClusteredIndex) " /*T![clustered_index] CLUSTERED */"
115+
else "/*T![clustered_index] NONCLUSTERED */"
114116
val indexColumnString = indexColumns.mkString("(", ",", ")")
115117
if (isPrimary) {
116118
s"PRIMARY KEY $indexColumnString$clusteredIndexStr"

tikv-client/src/main/java/com/pingcap/tikv/key/CommonHandle.java

+12-6
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,22 @@
1818
import com.pingcap.tikv.codec.Codec;
1919
import com.pingcap.tikv.codec.CodecDataInput;
2020
import com.pingcap.tikv.codec.CodecDataOutput;
21+
<<<<<<< HEAD:tikv-client/src/main/java/com/pingcap/tikv/key/CommonHandle.java
2122
import com.pingcap.tikv.exception.CodecException;
2223
import com.pingcap.tikv.types.Converter;
24+
=======
25+
import com.pingcap.tikv.key.Key;
26+
>>>>>>> 47d082c7c (Compatible with TiDB mater (v6.5.0) (#2598)):tikv-client/src/main/java/com/pingcap/tikv/handle/CommonHandle.java
2327
import com.pingcap.tikv.types.DataType;
2428
import com.pingcap.tikv.types.MySQLType;
2529
import com.pingcap.tikv.util.FastByteComparisons;
2630
import java.sql.Date;
2731
import java.sql.Timestamp;
32+
import java.text.SimpleDateFormat;
2833
import java.util.ArrayList;
2934
import java.util.Arrays;
3035
import java.util.List;
36+
import java.util.TimeZone;
3137
import java.util.stream.Collectors;
3238
import org.joda.time.Days;
3339
import org.joda.time.LocalDate;
@@ -69,16 +75,16 @@ public static CommonHandle newCommonHandle(
6975
// When indexScan or tableScan, it will pass `Long` object.
7076
// It's a compromise here since we don't have a good way to make them consistent.
7177
if (data[i] instanceof Date) {
72-
days = Days.daysBetween(new LocalDate(0), new LocalDate(data[i])).getDays();
78+
days = Days.daysBetween(new LocalDate(1970, 1, 1), new LocalDate(data[i])).getDays();
7379
} else {
7480
days = (long) data[i];
7581
}
7682

77-
// Convert to UTC days for row key.
78-
if (Converter.getLocalTimezone().getOffset(0) < 0) {
79-
days += 1;
80-
}
81-
dataTypes[i].encode(cdo, DataType.EncodeType.KEY, new Date((days) * MS_OF_ONE_DAY));
83+
SimpleDateFormat utcFmt = new SimpleDateFormat("yyyy-MM-dd");
84+
utcFmt.setTimeZone(TimeZone.getTimeZone("UTC"));
85+
86+
dataTypes[i].encode(
87+
cdo, DataType.EncodeType.KEY, Date.valueOf(utcFmt.format(days * MS_OF_ONE_DAY)));
8288
} else {
8389
if (prefixLengthes[i] > 0 && data[i] instanceof String) {
8490
String source = (String) data[i];

tikv-client/src/main/java/com/pingcap/tikv/types/DateType.java

+3-8
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import org.joda.time.LocalDate;
3030

3131
public class DateType extends AbstractDateTimeType {
32-
private static final LocalDate EPOCH = new LocalDate(0);
32+
private static final LocalDate EPOCH = new LocalDate(1970, 1, 1);
3333
public static final DateType DATE = new DateType(MySQLType.TypeDate);
3434
public static final MySQLType[] subTypes = new MySQLType[] {MySQLType.TypeDate};
3535

@@ -93,13 +93,8 @@ public String getName() {
9393
}
9494

9595
public int getDays(LocalDate d) {
96-
// count how many days from EPOCH
97-
int days = Days.daysBetween(EPOCH, d).getDays();
98-
// if the timezone has negative offset, minus one day.
99-
if (getTimezone().getOffset(0) < 0) {
100-
days -= 1;
101-
}
102-
return days;
96+
// count how many days from EPOCH (UTC)
97+
return Days.daysBetween(EPOCH, d).getDays();
10398
}
10499

105100
/** {@inheritDoc} */

0 commit comments

Comments
 (0)