7.6.3 オーバフローが発生したときの処理
ここでは,setXXXおよびgetXXXメソッド実行時のオーバフローの可能性について説明します。
- 〈この項の構成〉
(1) setXXXメソッド(setObjectメソッドを除く)実行時のオーバフローの可能性
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メソッド実行時のオーバフローの可能性を次の表に示します。
|
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メソッドを除く)を次の表に示します。
|
実行するメソッド |
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メソッド実行時のオーバフローの可能性を次の表に示します。
|
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
- 注※
-
整数データ型のデータ形式がレガシー形式の場合,値によっては,オーバフローすることがあります。
|
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