Hitachi

Hitachi Advanced Database AP開発ガイド


7.6.3 オーバフローが発生したときの処理

ここでは,setXXXおよびgetXXXメソッド実行時のオーバフローの可能性について説明します。

〈この項の構成〉

(1) setXXXメソッド(setObjectメソッドを除く)実行時のオーバフローの可能性

setXXXメソッド実行時のオーバフローの可能性(setObjectメソッドを除く)を次の表に示します。

表7‒11 setXXXメソッド実行時のオーバフローの可能性(setObjectメソッドを除く)

実行するメソッド

HADBのデータ型

SMALLINT

INTEGER

BIGINT

DOUBLE

REAL,

BOOLEAN

DEC

VCHAR

DATE※1

TIME※1

TIMESTAMP※1,※3

ROW

BIN

UUID

setByte

×

setShort

×

setInt

×※2

×

setLong

×

×※2

×

setFloat

×

×

×

×

setDouble

×

×

×

×

setBigDecimal

×

×

×

×

setBoolean

setString

×

×

×

×

×

×

setBytes

setDate

×

×

setTime

×

setTimestamp

×

×

setAsciiStream

setBinaryStream

setCharacterStream

(凡例)

○:値に関係なく,オーバフローしません。

×:値によっては,オーバフローすることがあります。

−:この組み合わせでは使用できません。

DOUBLEDOUBLE PRECISIONFLOAT

DECDECIMALNUMERIC

VCHARCHARVARCHARSTRING

BINBINARYVARBINARY

注※1

java.sql.Datejava.sql.Time,またはjava.sql.TimestampクラスのgetTimeメソッドで取得した値が253,402,268,399,999より大きいか,または-62,135,802,000,000より小さいオブジェクトである場合,オーバフローします。なお,getTimeメソッドは,1970年1月1日0時0分0秒(グリニッジ標準時)からのミリ秒数を返します。

253,402,268,399,999はHADBのTIMESTAMP型に格納できる最大値から,-62,135,802,000,000はjava.sql.Timestampクラスで表現できる最小値から,次に示すメソッドで取得できます。

253,402,268,399,999:

Timestamp.valueOf("9999-12-31 23:59:59.999999").getTime()

-62,135,802,000,000:

Timestamp.valueOf("0001-01-01 00:00:00.0").getTime()

注※2

整数データ型のデータ形式がレガシー形式の場合,値に関係なく,オーバフローしません。

注※3

上記の表のTIMESTAMP型は,TIMESTAMP WITHOUT TIME ZONE型の場合です。

TIMESTAMP WITH TIME ZONE型の場合は,次のようになります。

  • すべてのメソッド:−

(2) setObjectメソッド実行時のオーバフローの可能性

setObjectメソッド実行時のオーバフローの可能性を次の表に示します。

表7‒12 setObjectメソッド実行時のオーバフローの可能性

setObjectメソッドで指定するオブジェクトのデータ型

HADBのデータ型

SMALLINT

INTEGER

BIGINT

DOUBLE

BOOLEAN

REAL

DEC

VCHAR

DATE※1

TIME※1

TIMESTAMP※1,※3

ROW

BIN

UUID※4

Byte

×

Short

×

Integer

×※2

×

Long

×

×※2

×

Decimal

×

×

×

×

Float

×

×

×

×

Double

×

×

×

×

×

Boolean

String

×

×

×

×

×

×

Date

×

×

Time

Timestamp

×

×

byte[]

OffsetDateTime

LocalDate

×

LocalDateTime

×

Instant

×

×

ZonedDateTime

java.util.UUID

(凡例)

○:値に関係なく,オーバフローしません。

×:値によっては,オーバフローすることがあります。

−:この組み合わせでは使用できません。

DOUBLEDOUBLE PRECISIONFLOAT

DECDECIMALNUMERIC

VCHARCHARVARCHARSTRING

BINBINARYVARBINARY

注※1

java.sql.Datejava.sql.Time,またはjava.sql.TimestampクラスのgetTimeメソッドで取得した値が253,402,268,399,999より大きいか,または-62,135,802,000,000より小さいオブジェクトである場合,オーバフローします。なお,getTimeメソッドは,1970年1月1日0時0分0秒(グリニッジ標準時)からのミリ秒数を返します。

253,402,268,399,999はHADBのTIMESTAMP型に格納できる最大値から,-62,135,802,000,000はjava.sql.Timestampクラスで表現できる最小値から,次に示すメソッドで取得できます。

253,402,268,399,999:

Timestamp.valueOf("9999-12-31 23:59:59.999999").getTime()

-62,135,802,000,000:

Timestamp.valueOf("0001-01-01 00:00:00.0").getTime()

注※2

整数データ型のデータ形式がレガシー形式の場合,値に関係なく,オーバフローしません。

注※3

上記の表のTIMESTAMP型は,TIMESTAMP WITHOUT TIME ZONE型の場合です。

TIMESTAMP WITH TIME ZONE型の場合は,次のようになります。

  • OffsetDateTime型:○

  • LocalDateTime型:○

  • Instant型:○

  • ZonedDateTime型:○

  • そのほかのデータ型:−

注※4

上記の表は,BINARY型,VARBINARY型の場合です。

UUID型の場合は,次のようになります。

  • java.util.UUID型:○

  • そのほかのデータ型:−

(3) getXXXメソッド(getObjectメソッドを除く)実行時のオーバフローの可能性

getXXXメソッド実行時のオーバフローの可能性(getObjectメソッドを除く)を次の表に示します。

表7‒13 getXXXメソッド実行時のオーバフローの可能性(getObjectメソッドを除く)

実行するメソッド

HADBのデータ型

SMALLINT

INTEGER

BIGINT

DOUBLE

REAL

DEC

VCHAR

DATE

TIME

TIMESTAMP※2

ROW

BIN

UUID

BOOLEAN

getByte

×

×

×

×

×

×

getShort

※1

×

×

×

×

×

getInt

※1

×

×

×

×

getLong

×

×

×

getFloat

getDouble

getBigDecimal

getBoolean

getString

getBytes

getDate

getTime

getTimestamp

getAsciiStream

getBinaryStream

getCharacterStream

getArray

(凡例)

○:値に関係なく,オーバフローしません。

×:値によっては,オーバフローすることがあります。

−:この組み合わせでは使用できません。

DOUBLEDOUBLE PRECISIONFLOAT

DECDECIMALNUMERIC

VCHARCHARVARCHARSTRING

BINBINARYVARBINARY

注※1

整数データ型のデータ形式がレガシー形式の場合,値によっては,オーバフローすることがあります。

注※2

上記の表のTIMESTAMP型は,TIMESTAMP WITHOUT TIME ZONE型の場合です。

TIMESTAMP WITH TIME ZONE型の場合は,次のようになります。

  • getBytesメソッド:○

  • getTimestampメソッド:○

  • そのほかのメソッド:−

(4) getObjectメソッド実行時のオーバフローの可能性

getObjectメソッド実行時のオーバフローの可能性を次の表に示します。

表7‒14 getObjectメソッド実行時のオーバフローの可能性(その1)

getObjectメソッドで取得するオブジェクトのデータ型

HADBのデータ型

SMALLINT

INTEGER

BIGINT

DOUBLE

REAL

DEC

VCHAR

Byte

×

×

×

×

×

×

×

Short

×

×

×

×

×

×

Int

×

×

×

×

×

Long

×

×

×

×

Float

×

×

×

Double

×

×

×

BigDecimal

×

×

×

Boolean

String

Bytes

Date

Time

Timestamp

AsciiStream

BinaryStream

Object

CharacterStream

OffsetDateTime

LocalDate

LocalDateTime

Instant

ZonedDateTime

java.util.UUID

(凡例)

○:値に関係なく,オーバフローしません。

×:値によっては,オーバフローすることがあります。

−:この組み合わせでは使用できません。

DOUBLEDOUBLE PRECISIONFLOAT

DECDECIMALNUMERIC

VCHARCHARVARCHARSTRING

注※

整数データ型のデータ形式がレガシー形式の場合,値によっては,オーバフローすることがあります。

表7‒15 getObjectメソッド実行時のオーバフローの可能性(その2)

getObjectメソッドで取得するオブジェクトのデータ型

HADBのデータ型

DATE

TIME

TIMESTAMP WITHOUT TIME ZONE

TIMESTAMP WITH TIME ZONE

ROW

BIN

BOOLEAN

UUID

Byte

Short

Int

Long

Float

Double

BigDecimal

Boolean

String

Bytes

Date

Time

Timestamp

AsciiStream

BinaryStream

Object

CharacterStream

OffsetDateTime

LocalDate

LocalDateTime

Instant

ZonedDateTime

java.util.UUID

(凡例)

○:値に関係なく,オーバフローしません。

−:この組み合わせでは使用できません。

BINBINARYVARBINARY