From 1f938a005d9c64a6bb24c8b43a793a0f5bf8b3c5 Mon Sep 17 00:00:00 2001 From: Colin Dellow Date: Sun, 11 Mar 2018 19:18:44 -0400 Subject: [PATCH] More tests cases to deal with affinity I'm not sure how these manifest - whether SQLite retypes them based on column affinity before we see them, or whether they're provided as is. --- parquet/parquet_cursor.cc | 14 ++++++++++---- tests/queries/037-double-gt.sql | 2 +- tests/queries/041-double-rowid-and-field-ne.sql | 2 +- tests/queries/042-double-rowid-and-field-ne2.sql | 2 +- tests/queries/059-rowid-eq-string.sql | 2 ++ tests/queries/060-rowid-double.sql | 2 ++ tests/queries/061-string-eq-int.sql | 2 ++ tests/queries/062-string-eq-double.sql | 1 + tests/queries/063-int8-eq-double.sql | 2 ++ tests/queries/064-int8-eq-str.sql | 2 ++ tests/queries/065-int8-eq-str2.sql | 2 ++ tests/queries/066-int8-eq-bogus-str.sql | 1 + tests/queries/067-int8-lt-str.sql | 2 ++ tests/queries/068-int8-lt-double.sql | 2 ++ tests/queries/069-int8-lte-str.sql | 3 +++ tests/queries/070-int8-lte-double.sql | 3 +++ tests/queries/071-int8-gt-str.sql | 2 ++ tests/queries/072-int8-gt-double.sql | 2 ++ tests/queries/073-int8-gte-str.sql | 3 +++ tests/queries/074-int8-gte-double.sql | 3 +++ tests/queries/075-int8-ne-str.sql | 1 + tests/queries/076-int8-ne-double.sql | 1 + tests/queries/077-int64-gte-str.sql | 3 +++ tests/queries/078-int64-gte-double.sql | 3 +++ tests/queries/079-int65-gt-str.sql | 2 ++ tests/queries/080-int65-gt-double.sql | 2 ++ tests/queries/081-int64-eq-str.sql | 2 ++ tests/queries/082-int64-eq-double.sql | 2 ++ tests/queries/083-int64-lt-str.sql | 2 ++ tests/queries/084-int64-lt-double.sql | 2 ++ tests/queries/085-int64-lte-str.sql | 3 +++ tests/queries/086-int64-lte-double.sql | 3 +++ tests/queries/087-int64-ne-str.sql | 1 + tests/queries/088-int64-ne-double.sql | 1 + tests/queries/089-int64-ne-some-str.sql | 2 ++ tests/queries/090-int64-ne-some-double.sql | 2 ++ tests/queries/091-double-eq-str.sql | 2 ++ tests/queries/092-double-eq-int.sql | 2 ++ tests/queries/093-double-gt-str.sql | 2 ++ tests/queries/094-double-gt-int.sql | 2 ++ tests/queries/095-double-gte-str.sql | 3 +++ tests/queries/096-double-gte-int.sql | 2 ++ tests/queries/097-double-lt-str.sql | 2 ++ tests/queries/098-double-lt-int.sql | 2 ++ tests/queries/099-double-lte-str.sql | 2 ++ tests/queries/100-double-lte-int.sql | 2 ++ .../queries/101-double-rowid-and-field-ne-str.sql | 1 + .../queries/102-double-rowid-and-field-ne-int.sql | 1 + .../103-double-rowid-and-field-ne2-some-str.sql | 2 ++ .../104-double-rowid-and-field-ne2-some-int.sql | 2 ++ 50 files changed, 106 insertions(+), 7 deletions(-) create mode 100644 tests/queries/059-rowid-eq-string.sql create mode 100644 tests/queries/060-rowid-double.sql create mode 100644 tests/queries/061-string-eq-int.sql create mode 100644 tests/queries/062-string-eq-double.sql create mode 100644 tests/queries/063-int8-eq-double.sql create mode 100644 tests/queries/064-int8-eq-str.sql create mode 100644 tests/queries/065-int8-eq-str2.sql create mode 100644 tests/queries/066-int8-eq-bogus-str.sql create mode 100644 tests/queries/067-int8-lt-str.sql create mode 100644 tests/queries/068-int8-lt-double.sql create mode 100644 tests/queries/069-int8-lte-str.sql create mode 100644 tests/queries/070-int8-lte-double.sql create mode 100644 tests/queries/071-int8-gt-str.sql create mode 100644 tests/queries/072-int8-gt-double.sql create mode 100644 tests/queries/073-int8-gte-str.sql create mode 100644 tests/queries/074-int8-gte-double.sql create mode 100644 tests/queries/075-int8-ne-str.sql create mode 100644 tests/queries/076-int8-ne-double.sql create mode 100644 tests/queries/077-int64-gte-str.sql create mode 100644 tests/queries/078-int64-gte-double.sql create mode 100644 tests/queries/079-int65-gt-str.sql create mode 100644 tests/queries/080-int65-gt-double.sql create mode 100644 tests/queries/081-int64-eq-str.sql create mode 100644 tests/queries/082-int64-eq-double.sql create mode 100644 tests/queries/083-int64-lt-str.sql create mode 100644 tests/queries/084-int64-lt-double.sql create mode 100644 tests/queries/085-int64-lte-str.sql create mode 100644 tests/queries/086-int64-lte-double.sql create mode 100644 tests/queries/087-int64-ne-str.sql create mode 100644 tests/queries/088-int64-ne-double.sql create mode 100644 tests/queries/089-int64-ne-some-str.sql create mode 100644 tests/queries/090-int64-ne-some-double.sql create mode 100644 tests/queries/091-double-eq-str.sql create mode 100644 tests/queries/092-double-eq-int.sql create mode 100644 tests/queries/093-double-gt-str.sql create mode 100644 tests/queries/094-double-gt-int.sql create mode 100644 tests/queries/095-double-gte-str.sql create mode 100644 tests/queries/096-double-gte-int.sql create mode 100644 tests/queries/097-double-lt-str.sql create mode 100644 tests/queries/098-double-lt-int.sql create mode 100644 tests/queries/099-double-lte-str.sql create mode 100644 tests/queries/100-double-lte-int.sql create mode 100644 tests/queries/101-double-rowid-and-field-ne-str.sql create mode 100644 tests/queries/102-double-rowid-and-field-ne-int.sql create mode 100644 tests/queries/103-double-rowid-and-field-ne2-some-str.sql create mode 100644 tests/queries/104-double-rowid-and-field-ne2-some-int.sql diff --git a/parquet/parquet_cursor.cc b/parquet/parquet_cursor.cc index b6bbf53..29d8d32 100644 --- a/parquet/parquet_cursor.cc +++ b/parquet/parquet_cursor.cc @@ -18,11 +18,17 @@ bool ParquetCursor::currentRowGroupSatisfiesFilter() { int op = constraints[i].getOperator(); bool rv = true; -// printf("column = %d\n", column); -// std::unique_ptr md = rowGroupMetadata->ColumnChunk(column); + if(column == -1) { + if(op == IsNull) { + return false; + } + } else { + // printf("column = %d\n", column); + // std::unique_ptr md = rowGroupMetadata->ColumnChunk(column); - if(op == IsNull) { - } else if(op == IsNotNull) { + if(op == IsNull) { + } else if(op == IsNotNull) { + } } if(!rv) diff --git a/tests/queries/037-double-gt.sql b/tests/queries/037-double-gt.sql index 22d0c4f..83beb2e 100644 --- a/tests/queries/037-double-gt.sql +++ b/tests/queries/037-double-gt.sql @@ -1,2 +1,2 @@ -select printf('%.2f', double_6) as double_6 from nulls where double_6 > 98 +select printf('%.2f', double_6) as double_6 from nulls where double_6 > 98.0 99.00 diff --git a/tests/queries/041-double-rowid-and-field-ne.sql b/tests/queries/041-double-rowid-and-field-ne.sql index b1e47fb..f12b7c0 100644 --- a/tests/queries/041-double-rowid-and-field-ne.sql +++ b/tests/queries/041-double-rowid-and-field-ne.sql @@ -1 +1 @@ -select printf('%.2f', double_6) from nulls where rowid = 0 and double_6 <> 99 +select printf('%.2f', double_6) from nulls where rowid = 0 and double_6 <> 99.0 diff --git a/tests/queries/042-double-rowid-and-field-ne2.sql b/tests/queries/042-double-rowid-and-field-ne2.sql index 6c2c43d..6b4f78d 100644 --- a/tests/queries/042-double-rowid-and-field-ne2.sql +++ b/tests/queries/042-double-rowid-and-field-ne2.sql @@ -1,2 +1,2 @@ -select printf('%.2f', double_6) from nulls where rowid = 0 and double_6 <> 100 +select printf('%.2f', double_6) from nulls where rowid = 0 and double_6 <> 100.0 99.00 diff --git a/tests/queries/059-rowid-eq-string.sql b/tests/queries/059-rowid-eq-string.sql new file mode 100644 index 0000000..ffe4244 --- /dev/null +++ b/tests/queries/059-rowid-eq-string.sql @@ -0,0 +1,2 @@ +select count(*) from no_nulls1 where rowid = '1' +1 diff --git a/tests/queries/060-rowid-double.sql b/tests/queries/060-rowid-double.sql new file mode 100644 index 0000000..bc82a14 --- /dev/null +++ b/tests/queries/060-rowid-double.sql @@ -0,0 +1,2 @@ +select int8_1 from no_nulls1 where rowid = 50.0; +0 diff --git a/tests/queries/061-string-eq-int.sql b/tests/queries/061-string-eq-int.sql new file mode 100644 index 0000000..2af041c --- /dev/null +++ b/tests/queries/061-string-eq-int.sql @@ -0,0 +1,2 @@ +select string_7 from nulls where string_7 = 22; +22 diff --git a/tests/queries/062-string-eq-double.sql b/tests/queries/062-string-eq-double.sql new file mode 100644 index 0000000..903b82d --- /dev/null +++ b/tests/queries/062-string-eq-double.sql @@ -0,0 +1 @@ +select string_7 from nulls where string_7 = 22.0; diff --git a/tests/queries/063-int8-eq-double.sql b/tests/queries/063-int8-eq-double.sql new file mode 100644 index 0000000..cae3a57 --- /dev/null +++ b/tests/queries/063-int8-eq-double.sql @@ -0,0 +1,2 @@ +select int8_1 from nulls where int8_1 = 30.0; +30 diff --git a/tests/queries/064-int8-eq-str.sql b/tests/queries/064-int8-eq-str.sql new file mode 100644 index 0000000..5631731 --- /dev/null +++ b/tests/queries/064-int8-eq-str.sql @@ -0,0 +1,2 @@ +select int8_1 from nulls where int8_1 = '30.0'; +30 diff --git a/tests/queries/065-int8-eq-str2.sql b/tests/queries/065-int8-eq-str2.sql new file mode 100644 index 0000000..106bbd4 --- /dev/null +++ b/tests/queries/065-int8-eq-str2.sql @@ -0,0 +1,2 @@ +select int8_1 from nulls where int8_1 = '30'; +30 diff --git a/tests/queries/066-int8-eq-bogus-str.sql b/tests/queries/066-int8-eq-bogus-str.sql new file mode 100644 index 0000000..0c72dc7 --- /dev/null +++ b/tests/queries/066-int8-eq-bogus-str.sql @@ -0,0 +1 @@ +select int8_1 from nulls where int8_1 = '30f'; diff --git a/tests/queries/067-int8-lt-str.sql b/tests/queries/067-int8-lt-str.sql new file mode 100644 index 0000000..0a7e8c2 --- /dev/null +++ b/tests/queries/067-int8-lt-str.sql @@ -0,0 +1,2 @@ +select int8_1 from nulls where int8_1 < '-46' +-48 diff --git a/tests/queries/068-int8-lt-double.sql b/tests/queries/068-int8-lt-double.sql new file mode 100644 index 0000000..af93808 --- /dev/null +++ b/tests/queries/068-int8-lt-double.sql @@ -0,0 +1,2 @@ +select int8_1 from nulls where int8_1 < -46.0 +-48 diff --git a/tests/queries/069-int8-lte-str.sql b/tests/queries/069-int8-lte-str.sql new file mode 100644 index 0000000..a2d12fb --- /dev/null +++ b/tests/queries/069-int8-lte-str.sql @@ -0,0 +1,3 @@ +select int8_1 from nulls where int8_1 <= '-46' +-46 +-48 diff --git a/tests/queries/070-int8-lte-double.sql b/tests/queries/070-int8-lte-double.sql new file mode 100644 index 0000000..1adff8f --- /dev/null +++ b/tests/queries/070-int8-lte-double.sql @@ -0,0 +1,3 @@ +select int8_1 from nulls where int8_1 <= -46.0 +-46 +-48 diff --git a/tests/queries/071-int8-gt-str.sql b/tests/queries/071-int8-gt-str.sql new file mode 100644 index 0000000..bdb00d4 --- /dev/null +++ b/tests/queries/071-int8-gt-str.sql @@ -0,0 +1,2 @@ +select int8_1 from nulls where int8_1 > '49' +50 diff --git a/tests/queries/072-int8-gt-double.sql b/tests/queries/072-int8-gt-double.sql new file mode 100644 index 0000000..556c391 --- /dev/null +++ b/tests/queries/072-int8-gt-double.sql @@ -0,0 +1,2 @@ +select int8_1 from nulls where int8_1 > 49.0 +50 diff --git a/tests/queries/073-int8-gte-str.sql b/tests/queries/073-int8-gte-str.sql new file mode 100644 index 0000000..9f414df --- /dev/null +++ b/tests/queries/073-int8-gte-str.sql @@ -0,0 +1,3 @@ +select int8_1 from nulls where int8_1 >= '49' +50 +49 diff --git a/tests/queries/074-int8-gte-double.sql b/tests/queries/074-int8-gte-double.sql new file mode 100644 index 0000000..b24a1f5 --- /dev/null +++ b/tests/queries/074-int8-gte-double.sql @@ -0,0 +1,3 @@ +select int8_1 from nulls where int8_1 >= 49.0 +50 +49 diff --git a/tests/queries/075-int8-ne-str.sql b/tests/queries/075-int8-ne-str.sql new file mode 100644 index 0000000..1c9f57c --- /dev/null +++ b/tests/queries/075-int8-ne-str.sql @@ -0,0 +1 @@ +select int8_1 from nulls where rowid = 66 and int8_1 <> '-16' diff --git a/tests/queries/076-int8-ne-double.sql b/tests/queries/076-int8-ne-double.sql new file mode 100644 index 0000000..d15790a --- /dev/null +++ b/tests/queries/076-int8-ne-double.sql @@ -0,0 +1 @@ +select int8_1 from nulls where rowid = 66 and int8_1 <> -16.0 diff --git a/tests/queries/077-int64-gte-str.sql b/tests/queries/077-int64-gte-str.sql new file mode 100644 index 0000000..c23ac35 --- /dev/null +++ b/tests/queries/077-int64-gte-str.sql @@ -0,0 +1,3 @@ +select int64_4 from nulls where int64_4 >= '49000000000' +50000000000 +49000000000 diff --git a/tests/queries/078-int64-gte-double.sql b/tests/queries/078-int64-gte-double.sql new file mode 100644 index 0000000..38e17a7 --- /dev/null +++ b/tests/queries/078-int64-gte-double.sql @@ -0,0 +1,3 @@ +select int64_4 from nulls where int64_4 >= 49000000000.0 +50000000000 +49000000000 diff --git a/tests/queries/079-int65-gt-str.sql b/tests/queries/079-int65-gt-str.sql new file mode 100644 index 0000000..60b9599 --- /dev/null +++ b/tests/queries/079-int65-gt-str.sql @@ -0,0 +1,2 @@ +select int64_4 from nulls where int64_4 > '49000000000' +50000000000 diff --git a/tests/queries/080-int65-gt-double.sql b/tests/queries/080-int65-gt-double.sql new file mode 100644 index 0000000..35a1131 --- /dev/null +++ b/tests/queries/080-int65-gt-double.sql @@ -0,0 +1,2 @@ +select int64_4 from nulls where int64_4 > 49000000000.0 +50000000000 diff --git a/tests/queries/081-int64-eq-str.sql b/tests/queries/081-int64-eq-str.sql new file mode 100644 index 0000000..2a706f4 --- /dev/null +++ b/tests/queries/081-int64-eq-str.sql @@ -0,0 +1,2 @@ +select int64_4 from nulls where int64_4 = '49000000000' +49000000000 diff --git a/tests/queries/082-int64-eq-double.sql b/tests/queries/082-int64-eq-double.sql new file mode 100644 index 0000000..56ce1d3 --- /dev/null +++ b/tests/queries/082-int64-eq-double.sql @@ -0,0 +1,2 @@ +select int64_4 from nulls where int64_4 = 49000000000.0 +49000000000 diff --git a/tests/queries/083-int64-lt-str.sql b/tests/queries/083-int64-lt-str.sql new file mode 100644 index 0000000..6e72b69 --- /dev/null +++ b/tests/queries/083-int64-lt-str.sql @@ -0,0 +1,2 @@ +select int64_4 from nulls where int64_4 < '-46000000000' +-47000000000 diff --git a/tests/queries/084-int64-lt-double.sql b/tests/queries/084-int64-lt-double.sql new file mode 100644 index 0000000..380f5d6 --- /dev/null +++ b/tests/queries/084-int64-lt-double.sql @@ -0,0 +1,2 @@ +select int64_4 from nulls where int64_4 < -46000000000.0 +-47000000000 diff --git a/tests/queries/085-int64-lte-str.sql b/tests/queries/085-int64-lte-str.sql new file mode 100644 index 0000000..52da2fa --- /dev/null +++ b/tests/queries/085-int64-lte-str.sql @@ -0,0 +1,3 @@ +select int64_4 from nulls where int64_4 <= '-45000000000' +-45000000000 +-47000000000 diff --git a/tests/queries/086-int64-lte-double.sql b/tests/queries/086-int64-lte-double.sql new file mode 100644 index 0000000..fb04332 --- /dev/null +++ b/tests/queries/086-int64-lte-double.sql @@ -0,0 +1,3 @@ +select int64_4 from nulls where int64_4 <= -45000000000.0 +-45000000000 +-47000000000 diff --git a/tests/queries/087-int64-ne-str.sql b/tests/queries/087-int64-ne-str.sql new file mode 100644 index 0000000..cac8fc6 --- /dev/null +++ b/tests/queries/087-int64-ne-str.sql @@ -0,0 +1 @@ +select int64_4 from nulls where rowid = 57 and int64_4 <> '-7000000000' diff --git a/tests/queries/088-int64-ne-double.sql b/tests/queries/088-int64-ne-double.sql new file mode 100644 index 0000000..ce9f0d3 --- /dev/null +++ b/tests/queries/088-int64-ne-double.sql @@ -0,0 +1 @@ +select int64_4 from nulls where rowid = 57 and int64_4 <> -7000000000.0 diff --git a/tests/queries/089-int64-ne-some-str.sql b/tests/queries/089-int64-ne-some-str.sql new file mode 100644 index 0000000..72dcc98 --- /dev/null +++ b/tests/queries/089-int64-ne-some-str.sql @@ -0,0 +1,2 @@ +select int64_4 from nulls where rowid = 57 and int64_4 <> '-8000000000' +-7000000000 diff --git a/tests/queries/090-int64-ne-some-double.sql b/tests/queries/090-int64-ne-some-double.sql new file mode 100644 index 0000000..ebf8b0c --- /dev/null +++ b/tests/queries/090-int64-ne-some-double.sql @@ -0,0 +1,2 @@ +select int64_4 from nulls where rowid = 57 and int64_4 <> -8000000000.0 +-7000000000 diff --git a/tests/queries/091-double-eq-str.sql b/tests/queries/091-double-eq-str.sql new file mode 100644 index 0000000..09147c4 --- /dev/null +++ b/tests/queries/091-double-eq-str.sql @@ -0,0 +1,2 @@ +select printf('%.2f', double_6) as double_6 from nulls where double_6 = '99.0' +99.00 diff --git a/tests/queries/092-double-eq-int.sql b/tests/queries/092-double-eq-int.sql new file mode 100644 index 0000000..b21841f --- /dev/null +++ b/tests/queries/092-double-eq-int.sql @@ -0,0 +1,2 @@ +select printf('%.2f', double_6) as double_6 from nulls where double_6 = 99 +99.00 diff --git a/tests/queries/093-double-gt-str.sql b/tests/queries/093-double-gt-str.sql new file mode 100644 index 0000000..5462292 --- /dev/null +++ b/tests/queries/093-double-gt-str.sql @@ -0,0 +1,2 @@ +select printf('%.2f', double_6) as double_6 from nulls where double_6 > '98' +99.00 diff --git a/tests/queries/094-double-gt-int.sql b/tests/queries/094-double-gt-int.sql new file mode 100644 index 0000000..22d0c4f --- /dev/null +++ b/tests/queries/094-double-gt-int.sql @@ -0,0 +1,2 @@ +select printf('%.2f', double_6) as double_6 from nulls where double_6 > 98 +99.00 diff --git a/tests/queries/095-double-gte-str.sql b/tests/queries/095-double-gte-str.sql new file mode 100644 index 0000000..b3eb211 --- /dev/null +++ b/tests/queries/095-double-gte-str.sql @@ -0,0 +1,3 @@ +select printf('%.2f', double_6) as double_6 from nulls where double_6 >= '49.5' +99.00 +49.50 diff --git a/tests/queries/096-double-gte-int.sql b/tests/queries/096-double-gte-int.sql new file mode 100644 index 0000000..2a0776e --- /dev/null +++ b/tests/queries/096-double-gte-int.sql @@ -0,0 +1,2 @@ +select printf('%.2f', double_6) as double_6 from nulls where double_6 >= '99' +99.00 diff --git a/tests/queries/097-double-lt-str.sql b/tests/queries/097-double-lt-str.sql new file mode 100644 index 0000000..95fa35b --- /dev/null +++ b/tests/queries/097-double-lt-str.sql @@ -0,0 +1,2 @@ +select printf('%.2f', double_6) from nulls where double_6 < '99.0' order by double_6 desc limit 1 +49.50 diff --git a/tests/queries/098-double-lt-int.sql b/tests/queries/098-double-lt-int.sql new file mode 100644 index 0000000..4afcce9 --- /dev/null +++ b/tests/queries/098-double-lt-int.sql @@ -0,0 +1,2 @@ +select printf('%.2f', double_6) from nulls where double_6 < 99 order by double_6 desc limit 1 +49.50 diff --git a/tests/queries/099-double-lte-str.sql b/tests/queries/099-double-lte-str.sql new file mode 100644 index 0000000..b6028d7 --- /dev/null +++ b/tests/queries/099-double-lte-str.sql @@ -0,0 +1,2 @@ +select printf('%.2f', double_6) from nulls where double_6 <= '99.0' order by double_6 desc limit 1 +99.00 diff --git a/tests/queries/100-double-lte-int.sql b/tests/queries/100-double-lte-int.sql new file mode 100644 index 0000000..97b8140 --- /dev/null +++ b/tests/queries/100-double-lte-int.sql @@ -0,0 +1,2 @@ +select printf('%.2f', double_6) from nulls where double_6 <= 99 order by double_6 desc limit 1 +99.00 diff --git a/tests/queries/101-double-rowid-and-field-ne-str.sql b/tests/queries/101-double-rowid-and-field-ne-str.sql new file mode 100644 index 0000000..61d059b --- /dev/null +++ b/tests/queries/101-double-rowid-and-field-ne-str.sql @@ -0,0 +1 @@ +select printf('%.2f', double_6) from nulls where rowid = 0 and double_6 <> '99.0' diff --git a/tests/queries/102-double-rowid-and-field-ne-int.sql b/tests/queries/102-double-rowid-and-field-ne-int.sql new file mode 100644 index 0000000..b1e47fb --- /dev/null +++ b/tests/queries/102-double-rowid-and-field-ne-int.sql @@ -0,0 +1 @@ +select printf('%.2f', double_6) from nulls where rowid = 0 and double_6 <> 99 diff --git a/tests/queries/103-double-rowid-and-field-ne2-some-str.sql b/tests/queries/103-double-rowid-and-field-ne2-some-str.sql new file mode 100644 index 0000000..32a3f02 --- /dev/null +++ b/tests/queries/103-double-rowid-and-field-ne2-some-str.sql @@ -0,0 +1,2 @@ +select printf('%.2f', double_6) from nulls where rowid = 0 and double_6 <> '100' +99.00 diff --git a/tests/queries/104-double-rowid-and-field-ne2-some-int.sql b/tests/queries/104-double-rowid-and-field-ne2-some-int.sql new file mode 100644 index 0000000..6c2c43d --- /dev/null +++ b/tests/queries/104-double-rowid-and-field-ne2-some-int.sql @@ -0,0 +1,2 @@ +select printf('%.2f', double_6) from nulls where rowid = 0 and double_6 <> 100 +99.00