Skip to content

Commit 867d1b5

Browse files
fix FilterConverterTest
1 parent 6b9abe4 commit 867d1b5

File tree

1 file changed

+14
-38
lines changed

1 file changed

+14
-38
lines changed

paimon-core/src/test/java/org/apache/paimon/rest/filter/FilterConverterTest.java

Lines changed: 14 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,12 @@
2929

3030
import java.math.BigDecimal;
3131
import java.time.LocalDate;
32+
import java.time.LocalDateTime;
3233
import java.util.Arrays;
33-
import java.util.Base64;
3434
import java.util.Collections;
3535

3636
import static org.junit.jupiter.api.Assertions.assertFalse;
3737
import static org.junit.jupiter.api.Assertions.assertNotNull;
38-
import static org.junit.jupiter.api.Assertions.assertThrows;
3938
import static org.junit.jupiter.api.Assertions.assertTrue;
4039

4140
/** Tests for {@link FilterPredicateConverter}. */
@@ -132,79 +131,56 @@ public void testIsNullFunctionConversion() {
132131

133132
@Test
134133
public void testLiteralConversions() {
135-
// BOOLEAN from string
134+
// BOOLEAN from boolean
136135
Predicate boolEq =
137136
FilterPredicateConverter.toPredicate(
138137
new TransformFilter(
139138
new FieldFilterTransform(0, "b", DataTypes.BOOLEAN()),
140139
LeafFilterFunction.EQUAL,
141-
Collections.singletonList("true")));
140+
Collections.singletonList(true)));
142141
assertNotNull(boolEq);
143142
assertTrue(boolEq.test(GenericRow.of(true)));
144143
assertFalse(boolEq.test(GenericRow.of(false)));
145144

146-
// VARBINARY/BINARY from base64 string
147-
byte[] bytes = new byte[] {1, 2, 3};
148-
String b64 = Base64.getEncoder().encodeToString(bytes);
149-
Predicate bytesEq =
150-
FilterPredicateConverter.toPredicate(
151-
new TransformFilter(
152-
new FieldFilterTransform(0, "c", DataTypes.VARBINARY(3)),
153-
LeafFilterFunction.EQUAL,
154-
Collections.singletonList(b64)));
155-
assertNotNull(bytesEq);
156-
assertTrue(bytesEq.test(GenericRow.of(bytes)));
157-
assertFalse(bytesEq.test(GenericRow.of(new byte[] {1, 2, 4})));
158-
159-
// DECIMAL from string
145+
// DECIMAL from BigDecimal
160146
Decimal expectedDec = Decimal.fromBigDecimal(new BigDecimal("12.34"), 10, 2);
161147
Predicate decEq =
162148
FilterPredicateConverter.toPredicate(
163149
new TransformFilter(
164150
new FieldFilterTransform(0, "d", DataTypes.DECIMAL(10, 2)),
165151
LeafFilterFunction.EQUAL,
166-
Collections.singletonList("12.34")));
152+
Collections.singletonList(new BigDecimal("12.34"))));
167153
assertNotNull(decEq);
168154
assertTrue(decEq.test(GenericRow.of(expectedDec)));
169155
assertFalse(
170156
decEq.test(GenericRow.of(Decimal.fromBigDecimal(new BigDecimal("12.35"), 10, 2))));
171157

172-
// DATE from ISO string -> epoch day int
158+
// DATE from LocalDate -> epoch day int
173159
LocalDate date = LocalDate.parse("2025-12-23");
174160
int epochDay = (int) date.toEpochDay();
175161
Predicate dateEq =
176162
FilterPredicateConverter.toPredicate(
177163
new TransformFilter(
178164
new FieldFilterTransform(0, "e", DataTypes.DATE()),
179165
LeafFilterFunction.EQUAL,
180-
Collections.singletonList("2025-12-23")));
166+
Collections.singletonList(date)));
181167
assertNotNull(dateEq);
182168
assertTrue(dateEq.test(GenericRow.of(epochDay)));
183169
assertFalse(dateEq.test(GenericRow.of(epochDay + 1)));
184170

185-
// TIMESTAMP from string (java.sql.Timestamp.valueOf compatible)
186-
Timestamp ts = Timestamp.fromEpochMillis(1_700_000_000_000L);
187-
String tsString = ts.toSQLTimestamp().toString();
171+
// TIMESTAMP from LocalDateTime
172+
LocalDateTime dateTime = LocalDateTime.of(2025, 12, 23, 12, 34, 56, 789_000_000);
173+
Timestamp ts = Timestamp.fromLocalDateTime(dateTime);
188174
Predicate tsEq =
189175
FilterPredicateConverter.toPredicate(
190176
new TransformFilter(
191177
new FieldFilterTransform(0, "f", DataTypes.TIMESTAMP_MILLIS()),
192178
LeafFilterFunction.EQUAL,
193-
Collections.singletonList(tsString)));
179+
Collections.singletonList(dateTime)));
194180
assertNotNull(tsEq);
195181
assertTrue(tsEq.test(GenericRow.of(ts)));
196-
assertFalse(tsEq.test(GenericRow.of(Timestamp.fromEpochMillis(ts.getMillisecond() + 1))));
197-
}
198-
199-
@Test
200-
public void testDecimalOverflowThrows() {
201-
TransformFilter rest =
202-
new TransformFilter(
203-
new FieldFilterTransform(0, "d", DataTypes.DECIMAL(2, 0)),
204-
LeafFilterFunction.EQUAL,
205-
Collections.singletonList("123"));
206-
207-
assertThrows(
208-
IllegalArgumentException.class, () -> FilterPredicateConverter.toPredicate(rest));
182+
assertFalse(
183+
tsEq.test(
184+
GenericRow.of(Timestamp.fromLocalDateTime(dateTime.plusNanos(1_000_000)))));
209185
}
210186
}

0 commit comments

Comments
 (0)