fix(tests): use portable bigint test literals (#200)

* fix(parquet): use portable bigint test literals

* fix(tests): format bigint predicate cases
diff --git a/src/paimon/format/parquet/predicate_converter_test.cpp b/src/paimon/format/parquet/predicate_converter_test.cpp
index 542ea0f..ba7664c 100644
--- a/src/paimon/format/parquet/predicate_converter_test.cpp
+++ b/src/paimon/format/parquet/predicate_converter_test.cpp
@@ -32,6 +32,16 @@
 
 namespace paimon::parquet::test {
 
+namespace {
+
+// Use an explicit int64_t literal for BIGINT predicates. On macOS arm64, `long` and
+// `int64_t` are distinct types, so `Literal(5l)` may instantiate `Literal<long>`.
+Literal BigIntLiteral(int64_t value) {
+    return Literal(value);
+}
+
+}  // namespace
+
 TEST(PredicateConverterTest, TestSimple) {
     // "struct<f0:bigint,f1:double,f2:string,f3:int,f4:tinyint,f5:decimal(6,2),f6:date,f7:timestamp>";
     {
@@ -50,7 +60,7 @@
     }
     {
         auto predicate = PredicateBuilder::Equal(/*field_index=*/0, /*field_name=*/"f0",
-                                                 FieldType::BIGINT, Literal(5l));
+                                                 FieldType::BIGINT, BigIntLiteral(5));
         ASSERT_OK_AND_ASSIGN(auto expression, PredicateConverter::Convert(
                                                   predicate, /*predicate_node_count_limit=*/100));
         ASSERT_EQ("(f0 == 5)", expression.ToString());
@@ -71,21 +81,21 @@
     }
     {
         auto predicate = PredicateBuilder::NotEqual(/*field_index=*/0, /*field_name=*/"f0",
-                                                    FieldType::BIGINT, Literal(5l));
+                                                    FieldType::BIGINT, BigIntLiteral(5));
         ASSERT_OK_AND_ASSIGN(auto expression, PredicateConverter::Convert(
                                                   predicate, /*predicate_node_count_limit=*/100));
         ASSERT_EQ("(f0 != 5)", expression.ToString());
     }
     {
         auto predicate = PredicateBuilder::GreaterThan(/*field_index=*/0, /*field_name=*/"f0",
-                                                       FieldType::BIGINT, Literal(5l));
+                                                       FieldType::BIGINT, BigIntLiteral(5));
         ASSERT_OK_AND_ASSIGN(auto expression, PredicateConverter::Convert(
                                                   predicate, /*predicate_node_count_limit=*/100));
         ASSERT_EQ("(f0 > 5)", expression.ToString());
     }
     {
         auto predicate = PredicateBuilder::GreaterOrEqual(/*field_index=*/0, /*field_name=*/"f0",
-                                                          FieldType::BIGINT, Literal(5l));
+                                                          FieldType::BIGINT, BigIntLiteral(5));
         ASSERT_OK_AND_ASSIGN(auto expression, PredicateConverter::Convert(
                                                   predicate, /*predicate_node_count_limit=*/100));
         ASSERT_EQ("(f0 >= 5)", expression.ToString());
@@ -100,14 +110,14 @@
     }
     {
         auto predicate = PredicateBuilder::LessThan(/*field_index=*/0, /*field_name=*/"f0",
-                                                    FieldType::BIGINT, Literal(5l));
+                                                    FieldType::BIGINT, BigIntLiteral(5));
         ASSERT_OK_AND_ASSIGN(auto expression, PredicateConverter::Convert(
                                                   predicate, /*predicate_node_count_limit=*/100));
         ASSERT_EQ("(f0 < 5)", expression.ToString());
     }
     {
         auto predicate = PredicateBuilder::LessOrEqual(/*field_index=*/0, /*field_name=*/"f0",
-                                                       FieldType::BIGINT, Literal(5l));
+                                                       FieldType::BIGINT, BigIntLiteral(5));
         ASSERT_OK_AND_ASSIGN(auto expression, PredicateConverter::Convert(
                                                   predicate, /*predicate_node_count_limit=*/100));
         ASSERT_EQ("(f0 <= 5)", expression.ToString());
@@ -115,7 +125,7 @@
     {
         auto predicate =
             PredicateBuilder::In(/*field_index=*/0, /*field_name=*/"f0", FieldType::BIGINT,
-                                 {Literal(1l), Literal(3l), Literal(5l)});
+                                 {BigIntLiteral(1), BigIntLiteral(3), BigIntLiteral(5)});
         ASSERT_OK_AND_ASSIGN(auto expression, PredicateConverter::Convert(
                                                   predicate, /*predicate_node_count_limit=*/100));
         ASSERT_EQ("(((f0 == 1) or (f0 == 3)) or (f0 == 5))", expression.ToString());
@@ -123,7 +133,7 @@
     {
         auto predicate =
             PredicateBuilder::NotIn(/*field_index=*/0, /*field_name=*/"f0", FieldType::BIGINT,
-                                    {Literal(1l), Literal(3l), Literal(5l)});
+                                    {BigIntLiteral(1), BigIntLiteral(3), BigIntLiteral(5)});
         ASSERT_OK_AND_ASSIGN(auto expression, PredicateConverter::Convert(
                                                   predicate, /*predicate_node_count_limit=*/100));
         ASSERT_EQ("(((f0 != 1) and (f0 != 3)) and (f0 != 5))", expression.ToString());
@@ -320,7 +330,7 @@
             auto predicate,
             PredicateBuilder::And({
                 PredicateBuilder::Equal(/*field_index=*/0, /*field_name=*/"f0", FieldType::BIGINT,
-                                        Literal(3l)),
+                                        BigIntLiteral(3)),
                 PredicateBuilder::Equal(/*field_index=*/1, /*field_name=*/"f1", FieldType::FLOAT,
                                         Literal(static_cast<float>(5.0))),
                 PredicateBuilder::Equal(/*field_index=*/2, /*field_name=*/"f2", FieldType::STRING,
@@ -349,7 +359,7 @@
             auto predicate,
             PredicateBuilder::Or({
                 PredicateBuilder::Equal(/*field_index=*/0, /*field_name=*/"f0", FieldType::BIGINT,
-                                        Literal(3l)),
+                                        BigIntLiteral(3)),
                 PredicateBuilder::Equal(/*field_index=*/1, /*field_name=*/"f1", FieldType::FLOAT,
                                         Literal(static_cast<float>(5.0))),
                 PredicateBuilder::Equal(/*field_index=*/2, /*field_name=*/"f2", FieldType::STRING,
@@ -370,7 +380,7 @@
                      {PredicateBuilder::Equal(/*field_index=*/3, /*field_name=*/"f3",
                                               FieldType::BOOLEAN, Literal(true)),
                       PredicateBuilder::LessThan(/*field_index=*/0, /*field_name=*/"f0",
-                                                 FieldType::BIGINT, Literal(3l))})
+                                                 FieldType::BIGINT, BigIntLiteral(3))})
                      .value(),
                  PredicateBuilder::And(
                      {PredicateBuilder::Equal(/*field_index=*/3, /*field_name=*/"f3",
diff --git a/src/paimon/format/parquet/predicate_pushdown_test.cpp b/src/paimon/format/parquet/predicate_pushdown_test.cpp
index 3d169db..9723794 100644
--- a/src/paimon/format/parquet/predicate_pushdown_test.cpp
+++ b/src/paimon/format/parquet/predicate_pushdown_test.cpp
@@ -55,6 +55,16 @@
 
 namespace paimon::parquet::test {
 
+namespace {
+
+// Use an explicit int64_t literal for BIGINT predicates. On macOS arm64, `long` and
+// `int64_t` are distinct types, so `Literal(5l)` may instantiate `Literal<long>`.
+Literal BigIntLiteral(int64_t value) {
+    return Literal(value);
+}
+
+}  // namespace
+
 class PredicatePushdownTest : public ::testing::Test {
  public:
     void SetUp() override {
@@ -186,19 +196,19 @@
     {
         // f2 != 4, has data
         auto predicate = PredicateBuilder::NotEqual(/*field_index=*/2, /*field_name=*/"f2",
-                                                    FieldType::BIGINT, Literal(4l));
+                                                    FieldType::BIGINT, BigIntLiteral(4));
         CheckResult(read_schema, predicate, expected_array);
     }
     {
         // f2 == 6, has data
         auto predicate = PredicateBuilder::Equal(/*field_index=*/2, /*field_name=*/"f2",
-                                                 FieldType::BIGINT, Literal(6l));
+                                                 FieldType::BIGINT, BigIntLiteral(6));
         CheckResult(read_schema, predicate, expected_array);
     }
     {
         // f2 == 1, no data
         auto predicate = PredicateBuilder::Equal(/*field_index=*/2, /*field_name=*/"f2",
-                                                 FieldType::BIGINT, Literal(1l));
+                                                 FieldType::BIGINT, BigIntLiteral(1));
         CheckResult(read_schema, predicate, /*expected_array=*/
                     nullptr);
     }
@@ -206,14 +216,14 @@
         // f2 in [1,2,3], no data
         auto predicate =
             PredicateBuilder::In(/*field_index=*/2, /*field_name=*/"f2", FieldType::BIGINT,
-                                 {Literal(1l), Literal(2l), Literal(3l)});
+                                 {BigIntLiteral(1), BigIntLiteral(2), BigIntLiteral(3)});
         CheckResult(read_schema, predicate, /*expected_array=*/nullptr);
     }
     {
         // f2 in [1,2,3] but has small predicate node limit, has data
         auto predicate =
             PredicateBuilder::In(/*field_index=*/2, /*field_name=*/"f2", FieldType::BIGINT,
-                                 {Literal(1l), Literal(2l), Literal(3l)});
+                                 {BigIntLiteral(1), BigIntLiteral(2), BigIntLiteral(3)});
         CheckResult(read_schema, predicate, expected_array,
                     /*predicate_node_count_limit=*/1);
     }
@@ -221,21 +231,21 @@
         // f2 not in [1,2,3], has data
         auto predicate =
             PredicateBuilder::NotIn(/*field_index=*/2, /*field_name=*/"f2", FieldType::BIGINT,
-                                    {Literal(1l), Literal(2l), Literal(3l)});
+                                    {BigIntLiteral(1), BigIntLiteral(2), BigIntLiteral(3)});
         CheckResult(read_schema, predicate, expected_array);
     }
     {
         // f2 in [2,3,4], has data
         auto predicate =
             PredicateBuilder::In(/*field_index=*/2, /*field_name=*/"f2", FieldType::BIGINT,
-                                 {Literal(2l), Literal(3l), Literal(4l)});
+                                 {BigIntLiteral(2), BigIntLiteral(3), BigIntLiteral(4)});
         CheckResult(read_schema, predicate, expected_array);
     }
     {
         // f2 not in [2,3,4], has data
         auto predicate =
             PredicateBuilder::NotIn(/*field_index=*/2, /*field_name=*/"f2", FieldType::BIGINT,
-                                    {Literal(2l), Literal(3l), Literal(4l)});
+                                    {BigIntLiteral(2), BigIntLiteral(3), BigIntLiteral(4)});
         CheckResult(read_schema, predicate, expected_array);
     }
 }
@@ -408,26 +418,28 @@
     // other predicate, always return IS_NULL (no data)
     {
         // f4 in [1,2], no data
-        auto predicate = PredicateBuilder::In(/*field_index=*/4, /*field_name=*/"f4",
-                                              FieldType::BIGINT, {Literal(1l), Literal(2l)});
+        auto predicate =
+            PredicateBuilder::In(/*field_index=*/4, /*field_name=*/"f4", FieldType::BIGINT,
+                                 {BigIntLiteral(1), BigIntLiteral(2)});
         CheckResult(read_schema, predicate, /*expected_array=*/nullptr);
     }
     {
         // f4 not in [1,2], no data
-        auto predicate = PredicateBuilder::NotIn(/*field_index=*/4, /*field_name=*/"f4",
-                                                 FieldType::BIGINT, {Literal(1l), Literal(2l)});
+        auto predicate =
+            PredicateBuilder::NotIn(/*field_index=*/4, /*field_name=*/"f4", FieldType::BIGINT,
+                                    {BigIntLiteral(1), BigIntLiteral(2)});
         CheckResult(read_schema, predicate, /*expected_array=*/nullptr);
     }
     {
         // f4 >= 3, no data
         auto predicate = PredicateBuilder::GreaterOrEqual(/*field_index=*/4, /*field_name=*/"f4",
-                                                          FieldType::BIGINT, Literal(3l));
+                                                          FieldType::BIGINT, BigIntLiteral(3));
         CheckResult(read_schema, predicate, /*expected_array=*/nullptr);
     }
     {
         // f4 <= 3, no data
         auto predicate = PredicateBuilder::LessOrEqual(/*field_index=*/4, /*field_name=*/"f4",
-                                                       FieldType::BIGINT, Literal(3l));
+                                                       FieldType::BIGINT, BigIntLiteral(3));
         CheckResult(read_schema, predicate, /*expected_array=*/nullptr);
     }
 }
@@ -484,7 +496,7 @@
             auto predicate,
             PredicateBuilder::And(
                 {PredicateBuilder::LessThan(/*field_index=*/2, /*field_name=*/"f2",
-                                            FieldType::BIGINT, Literal(6l)),
+                                            FieldType::BIGINT, BigIntLiteral(6)),
                  PredicateBuilder::Equal(/*field_index=*/1, /*field_name=*/"f1", FieldType::FLOAT,
                                          Literal(static_cast<float>(4.0))),
                  PredicateBuilder::Equal(/*field_index=*/3, /*field_name=*/"f3", FieldType::BOOLEAN,
@@ -498,7 +510,7 @@
             auto predicate,
             PredicateBuilder::And(
                 {PredicateBuilder::LessThan(/*field_index=*/2, /*field_name=*/"f2",
-                                            FieldType::BIGINT, Literal(6l)),
+                                            FieldType::BIGINT, BigIntLiteral(6)),
                  PredicateBuilder::Equal(/*field_index=*/1, /*field_name=*/"f1", FieldType::FLOAT,
                                          Literal(static_cast<float>(4.0))),
                  PredicateBuilder::IsNull(/*field_index=*/3, /*field_name=*/"f3",
@@ -512,7 +524,7 @@
             auto predicate,
             PredicateBuilder::And(
                 {PredicateBuilder::LessThan(/*field_index=*/2, /*field_name=*/"f2",
-                                            FieldType::BIGINT, Literal(6l)),
+                                            FieldType::BIGINT, BigIntLiteral(6)),
                  PredicateBuilder::Equal(/*field_index=*/1, /*field_name=*/"f1", FieldType::FLOAT,
                                          Literal(static_cast<float>(4.0))),
                  PredicateBuilder::IsNull(/*field_index=*/5, /*field_name=*/"f5",
@@ -526,7 +538,7 @@
             auto predicate,
             PredicateBuilder::And(
                 {PredicateBuilder::LessThan(/*field_index=*/2, /*field_name=*/"f2",
-                                            FieldType::BIGINT, Literal(6l)),
+                                            FieldType::BIGINT, BigIntLiteral(6)),
                  PredicateBuilder::Equal(/*field_index=*/1, /*field_name=*/"f1", FieldType::FLOAT,
                                          Literal(static_cast<float>(4.0))),
                  PredicateBuilder::Equal(/*field_index=*/5, /*field_name=*/"f5", FieldType::BINARY,
@@ -540,7 +552,7 @@
             auto predicate,
             PredicateBuilder::And(
                 {PredicateBuilder::LessThan(/*field_index=*/2, /*field_name=*/"f2",
-                                            FieldType::BIGINT, Literal(6l)),
+                                            FieldType::BIGINT, BigIntLiteral(6)),
                  PredicateBuilder::Equal(/*field_index=*/1, /*field_name=*/"f1", FieldType::FLOAT,
                                          Literal(static_cast<float>(5.0))),
                  PredicateBuilder::IsNull(/*field_index=*/5, /*field_name=*/"f5",
@@ -554,7 +566,7 @@
             auto predicate,
             PredicateBuilder::Or(
                 {PredicateBuilder::LessThan(/*field_index=*/2, /*field_name=*/"f2",
-                                            FieldType::BIGINT, Literal(6l)),
+                                            FieldType::BIGINT, BigIntLiteral(6)),
                  PredicateBuilder::Equal(/*field_index=*/1, /*field_name=*/"f1", FieldType::FLOAT,
                                          Literal(static_cast<float>(4.0)))}));
         ASSERT_TRUE(predicate);
@@ -566,7 +578,7 @@
             auto predicate,
             PredicateBuilder::Or(
                 {PredicateBuilder::LessThan(/*field_index=*/2, /*field_name=*/"f2",
-                                            FieldType::BIGINT, Literal(6l)),
+                                            FieldType::BIGINT, BigIntLiteral(6)),
                  PredicateBuilder::Equal(/*field_index=*/1, /*field_name=*/"f1", FieldType::FLOAT,
                                          Literal(static_cast<float>(5.0)))}));
         ASSERT_TRUE(predicate);
@@ -577,7 +589,7 @@
         ASSERT_OK_AND_ASSIGN(
             auto predicate,
             PredicateBuilder::Or({PredicateBuilder::LessThan(/*field_index=*/2, /*field_name=*/"f2",
-                                                             FieldType::BIGINT, Literal(2l)),
+                                                             FieldType::BIGINT, BigIntLiteral(2)),
                                   PredicateBuilder::IsNull(/*field_index=*/5, /*field_name=*/"f5",
                                                            FieldType::BINARY)}));
         ASSERT_TRUE(predicate);
@@ -589,7 +601,7 @@
             auto predicate,
             PredicateBuilder::Or(
                 {PredicateBuilder::LessThan(/*field_index=*/2, /*field_name=*/"f2",
-                                            FieldType::BIGINT, Literal(2l)),
+                                            FieldType::BIGINT, BigIntLiteral(2)),
                  PredicateBuilder::Equal(/*field_index=*/5, /*field_name=*/"f5", FieldType::BINARY,
                                          Literal(FieldType::BINARY, "zoo", 3))}));
         ASSERT_TRUE(predicate);
@@ -601,7 +613,7 @@
             auto predicate,
             PredicateBuilder::Or(
                 {PredicateBuilder::LessThan(/*field_index=*/2, /*field_name=*/"f2",
-                                            FieldType::BIGINT, Literal(2l)),
+                                            FieldType::BIGINT, BigIntLiteral(2)),
                  PredicateBuilder::Equal(/*field_index=*/1, /*field_name=*/"f1", FieldType::FLOAT,
                                          Literal(static_cast<float>(4.0))),
                  PredicateBuilder::Equal(/*field_index=*/3, /*field_name=*/"f3", FieldType::BOOLEAN,
@@ -615,7 +627,7 @@
             auto predicate,
             PredicateBuilder::Or(
                 {PredicateBuilder::LessThan(/*field_index=*/2, /*field_name=*/"f2",
-                                            FieldType::BIGINT, Literal(2l)),
+                                            FieldType::BIGINT, BigIntLiteral(2)),
                  PredicateBuilder::Equal(/*field_index=*/1, /*field_name=*/"f1", FieldType::FLOAT,
                                          Literal(static_cast<float>(5.0))),
                  PredicateBuilder::IsNull(/*field_index=*/3, /*field_name=*/"f3",