@@ -437,6 +437,7 @@ static bool KeyIsHashable(const LogicalType &type) {
437437 case LogicalTypeId::TIMESTAMP_NS :
438438 case LogicalTypeId::TIMESTAMP_SEC :
439439 case LogicalTypeId::TIMESTAMP_TZ :
440+ case LogicalTypeId::TIMESTAMP_TZ_NS :
440441 case LogicalTypeId::TIME_TZ :
441442 case LogicalTypeId::TIME :
442443 case LogicalTypeId::DATE :
@@ -518,7 +519,8 @@ py::object PythonObject::FromValue(const Value &val, const LogicalType &type,
518519 case LogicalTypeId::TIMESTAMP_MS :
519520 case LogicalTypeId::TIMESTAMP_NS :
520521 case LogicalTypeId::TIMESTAMP_SEC :
521- case LogicalTypeId::TIMESTAMP_TZ : {
522+ case LogicalTypeId::TIMESTAMP_TZ :
523+ case LogicalTypeId::TIMESTAMP_TZ_NS : {
522524 D_ASSERT (type.InternalType () == PhysicalType::INT64 );
523525 auto timestamp = val.GetValueUnsafe <timestamp_t >();
524526
@@ -532,7 +534,7 @@ py::object PythonObject::FromValue(const Value &val, const LogicalType &type,
532534
533535 if (type.id () == LogicalTypeId::TIMESTAMP_MS ) {
534536 timestamp = Timestamp::FromEpochMs (timestamp.value );
535- } else if (type.id () == LogicalTypeId::TIMESTAMP_NS ) {
537+ } else if (type.id () == LogicalTypeId::TIMESTAMP_NS || type. id () == LogicalTypeId:: TIMESTAMP_TZ_NS ) {
536538 timestamp = Timestamp::FromEpochNanoSeconds (timestamp.value );
537539 } else if (type.id () == LogicalTypeId::TIMESTAMP_SEC ) {
538540 timestamp = Timestamp::FromEpochSeconds (timestamp.value );
@@ -555,7 +557,7 @@ py::object PythonObject::FromValue(const Value &val, const LogicalType &type,
555557 // Failed to convert, fall back to str
556558 return py::str (val.ToString ());
557559 }
558- if (type.id () == LogicalTypeId::TIMESTAMP_TZ ) {
560+ if (type.id () == LogicalTypeId::TIMESTAMP_TZ || type. id () == LogicalTypeId:: TIMESTAMP_TZ_NS ) {
559561 // We have to add the timezone info
560562 auto tz_utc = import_cache.pytz .timezone ()(" UTC" );
561563 auto timestamp_utc = tz_utc.attr (" localize" )(py_timestamp);
0 commit comments