Skip to content

Commit 9a75075

Browse files
author
xiaohongbo
committed
optimize
1 parent 80b0875 commit 9a75075

File tree

3 files changed

+15
-24
lines changed

3 files changed

+15
-24
lines changed

paimon-python/pypaimon/manifest/schema/data_file_meta.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
################################################################################
1818

1919
from dataclasses import dataclass
20-
from datetime import datetime
20+
from datetime import datetime, timezone
2121
from typing import List, Optional
2222
import time
2323

@@ -61,12 +61,12 @@ def get_creation_time(self) -> Optional[Timestamp]:
6161
def creation_time_epoch_millis(self) -> Optional[int]:
6262
if self.creation_time is None:
6363
return None
64-
millis = self.creation_time.get_millisecond()
65-
if time.daylight:
66-
tz_offset_seconds = -time.altzone
67-
else:
68-
tz_offset_seconds = -time.timezone
69-
return millis - (tz_offset_seconds * 1000)
64+
local_dt = self.creation_time.to_local_date_time()
65+
local_time_struct = local_dt.timetuple()
66+
local_timestamp = time.mktime(local_time_struct)
67+
local_time_struct_utc = time.gmtime(local_timestamp)
68+
utc_timestamp = time.mktime(local_time_struct_utc)
69+
return int(utc_timestamp * 1000)
7070

7171
def creation_time_as_datetime(self) -> Optional[datetime]:
7272
if self.creation_time is None:

paimon-python/pypaimon/tests/file_store_commit_test.py

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,7 @@ def test_generate_partition_statistics_single_partition_single_file(
104104
self.assertEqual(stat.record_count, 10000)
105105
self.assertEqual(stat.file_count, 1)
106106
self.assertEqual(stat.file_size_in_bytes, 1024 * 1024)
107-
expected_time = creation_time.get_millisecond()
108-
if time.daylight:
109-
tz_offset_seconds = -time.altzone
110-
else:
111-
tz_offset_seconds = -time.timezone
112-
expected_time = expected_time - (tz_offset_seconds * 1000)
107+
expected_time = file_meta.creation_time_epoch_millis()
113108
self.assertEqual(stat.last_file_creation_time, expected_time)
114109

115110
def test_generate_partition_statistics_multiple_files_same_partition(
@@ -173,12 +168,7 @@ def test_generate_partition_statistics_multiple_files_same_partition(
173168
self.assertEqual(stat.record_count, 25000) # 10000 + 15000
174169
self.assertEqual(stat.file_count, 2)
175170
self.assertEqual(stat.file_size_in_bytes, 3 * 1024 * 1024) # 1MB + 2MB
176-
expected_time = creation_time_2.get_millisecond()
177-
if time.daylight:
178-
tz_offset_seconds = -time.altzone
179-
else:
180-
tz_offset_seconds = -time.timezone
181-
expected_time = expected_time - (tz_offset_seconds * 1000)
171+
expected_time = file_meta_2.creation_time_epoch_millis()
182172
self.assertEqual(stat.last_file_creation_time, expected_time)
183173

184174
def test_generate_partition_statistics_multiple_partitions(

paimon-python/pypaimon/tests/reader_primary_key_test.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -289,11 +289,12 @@ def test_manifest_creation_time_timestamp(self):
289289
self.assertGreater(epoch_millis, 0)
290290
import time
291291
expected_epoch_millis = creation_time.get_millisecond()
292-
if time.daylight:
293-
tz_offset_seconds = -time.altzone
294-
else:
295-
tz_offset_seconds = -time.timezone
296-
expected_epoch_millis = expected_epoch_millis - (tz_offset_seconds * 1000)
292+
local_dt = creation_time.to_local_date_time()
293+
local_time_struct = local_dt.timetuple()
294+
local_timestamp = time.mktime(local_time_struct)
295+
local_time_struct_utc = time.gmtime(local_timestamp)
296+
utc_timestamp = time.mktime(local_time_struct_utc)
297+
expected_epoch_millis = int(utc_timestamp * 1000)
297298
self.assertEqual(epoch_millis, expected_epoch_millis)
298299
creation_times_found.append(epoch_millis)
299300

0 commit comments

Comments
 (0)