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

−

−

−

−

−

○

−

−

−

−

○

(凡例)

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

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

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

DOUBLE:DOUBLE PRECISION,FLOAT

DEC:DECIMAL,NUMERIC

VCHAR:CHAR,VARCHAR,STRING

BIN:BINARY,VARBINARY

注※1

java.sql.Date,java.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

−

−

−

−

−

−

−

−

−

−

−

−

(凡例)

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

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

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

DOUBLE:DOUBLE PRECISION,FLOAT

DEC:DECIMAL,NUMERIC

VCHAR:CHAR,VARCHAR,STRING

BIN:BINARY,VARBINARY

注※1

java.sql.Date,java.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

−

−

−

−

−

○

−

−

−

−

○

−

(凡例)

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

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

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

DOUBLE:DOUBLE PRECISION,FLOAT

DEC:DECIMAL,NUMERIC

VCHAR:CHAR,VARCHAR,STRING

BIN:BINARY,VARBINARY

注※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

−

−

−

−

−

−

−

(凡例)

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

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

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

DOUBLE:DOUBLE PRECISION,FLOAT

DEC:DECIMAL,NUMERIC

VCHAR:CHAR,VARCHAR,STRING

注※

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

表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

−

−

−

−

−

−

−

○

(凡例)

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

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

BIN:BINARY,VARBINARY