Skip to content

Commit

Permalink
This is an automated cherry-pick of pingcap#2740
Browse files Browse the repository at this point in the history
Signed-off-by: ti-chi-bot <[email protected]>
  • Loading branch information
shiyuhang0 authored and ti-chi-bot committed Aug 1, 2023
1 parent 13251eb commit b789c7b
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
41 changes: 41 additions & 0 deletions core/src/test/scala/org/apache/spark/sql/IssueTestSuite.scala
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,47 @@ import org.apache.spark.sql.functions.{col, sum}

class IssueTestSuite extends BaseTiSparkTest {

<<<<<<< HEAD
=======
test("test tiflash overflow in unsigned bigint") {
if (!enableTiFlashTest) {
cancel("tiflash test not enabled")
}
val dbTable = "tispark_test.tiflash_overflow"
tidbStmt.execute(s"drop table if exists $dbTable")
tidbStmt.execute(
s"CREATE TABLE $dbTable (`a` bigint(20) UNSIGNED NOT NULL,`b` bigint(20) UNSIGNED NOT NULL)")
tidbStmt.execute(s"insert into $dbTable values(16717361816800086255, 16717361816800086255)")
tidbStmt.execute(s"ALTER TABLE $dbTable SET TIFLASH REPLICA 1")

Thread.sleep(5 * 1000)

val prev = spark.conf.getOption(TiConfigConst.ISOLATION_READ_ENGINES)
try {
spark.conf
.set(TiConfigConst.ISOLATION_READ_ENGINES, TiConfigConst.TIFLASH_STORAGE_ENGINE)
val df = spark.sql(s"select * from $dbTable")
val row = Row(BigDecimal("16717361816800086255"), BigDecimal("16717361816800086255"))
checkAnswer(df, Seq(row))
} finally {
spark.conf.set(
TiConfigConst.ISOLATION_READ_ENGINES,
prev.getOrElse(TiConfigConst.DEFAULT_STORAGE_ENGINES))
}
}

test("test issue 2649") {
val dbTable = "tispark_test.mutil_uniq"
tidbStmt.execute(s"drop table if exists $dbTable")
tidbStmt.execute(
s"CREATE TABLE $dbTable (`a` int(5) NOT NULL,`b` int(5) NOT NULL,UNIQUE KEY `idx_ab` (`a`,`b`))")
tidbStmt.execute(s"insert into $dbTable values(0, 0),(1,1)")
val df = spark.sql(s"select * from $dbTable where a=1")
val row1 = Row(1, 1)
checkAnswer(df, Seq(row1))
}

>>>>>>> 044630939 (Fix TiFlash overflow (#2740))
//https://github.com/pingcap/tispark/issues/2268
test("show rowid in commonhandle") {
spark.sqlContext.setConf(TiConfigConst.SHOW_ROWID, "true")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,18 @@

import static com.pingcap.tikv.util.MemoryUtil.EMPTY_BYTE_BUFFER_DIRECT;

<<<<<<< HEAD
import com.pingcap.tikv.ExtendedDateTime;
=======
import com.google.common.primitives.UnsignedLong;
>>>>>>> 044630939 (Fix TiFlash overflow (#2740))
import com.pingcap.tikv.codec.Codec.DateCodec;
import com.pingcap.tikv.codec.Codec.DateTimeCodec;
import com.pingcap.tikv.columnar.datatypes.CHType;
import com.pingcap.tikv.types.AbstractDateTimeType;
import com.pingcap.tikv.types.BytesType;
import com.pingcap.tikv.types.DateType;
import com.pingcap.tikv.types.DecimalType;
import com.pingcap.tikv.util.MemoryUtil;
import java.math.BigDecimal;
import java.nio.ByteBuffer;
Expand Down Expand Up @@ -236,6 +241,10 @@ public double getDouble(int rowId) {
@Override
public BigDecimal getDecimal(int rowId, int precision, int scale) {
long rowIdAddr = (long) rowId * fixedLength + dataAddr;
// avoid unsigned long overflow here
if (type == DecimalType.BIG_INT_DECIMAL) {
return new BigDecimal(UnsignedLong.fromLongBits(this.getLong(rowId)).bigIntegerValue());
}
if (fixedLength == 4) {
return MemoryUtil.getDecimal32(rowIdAddr, scale);
} else if (fixedLength == 8) {
Expand Down

0 comments on commit b789c7b

Please sign in to comment.