|
90 | 90 | varbytehex_recv, |
91 | 91 | walk_array, |
92 | 92 | ) |
93 | | -from redshift_connector.utils.type_utils import ( |
94 | | - BIGINT, |
95 | | - DATE, |
96 | | - GEOGRAPHY, |
97 | | - INTEGER, |
98 | | - INTEGER_ARRAY, |
99 | | - NUMERIC, |
100 | | - REAL_ARRAY, |
101 | | - SMALLINT, |
102 | | - SMALLINT_ARRAY, |
103 | | - TEXT_ARRAY, |
104 | | - TIME, |
105 | | - TIMESTAMP, |
106 | | - TIMESTAMPTZ, |
107 | | - TIMETZ, |
108 | | - VARBYTE, |
109 | | - VARCHAR_ARRAY, |
110 | | -) |
| 93 | +from redshift_connector.utils.oids import RedshiftOID |
111 | 94 |
|
112 | 95 | if TYPE_CHECKING: |
113 | 96 | from ssl import SSLSocket |
@@ -741,42 +724,42 @@ def get_calling_module() -> str: |
741 | 724 |
|
742 | 725 | def _enable_protocol_based_conversion_funcs(self: "Connection"): |
743 | 726 | if self._client_protocol_version >= ClientProtocolVersion.BINARY.value: |
744 | | - self.pg_types[NUMERIC] = (FC_BINARY, numeric_in_binary) |
745 | | - self.pg_types[DATE] = (FC_BINARY, date_recv_binary) |
746 | | - self.pg_types[GEOGRAPHY] = (FC_BINARY, geographyhex_recv) # GEOGRAPHY |
747 | | - self.pg_types[TIME] = (FC_BINARY, time_recv_binary) |
748 | | - self.pg_types[TIMETZ] = (FC_BINARY, timetz_recv_binary) |
749 | | - self.pg_types[1002] = (FC_BINARY, array_recv_binary) # CHAR[] |
750 | | - self.pg_types[SMALLINT_ARRAY] = (FC_BINARY, array_recv_binary) # INT2[] |
751 | | - self.pg_types[INTEGER_ARRAY] = (FC_BINARY, array_recv_binary) # INT4[] |
752 | | - self.pg_types[TEXT_ARRAY] = (FC_BINARY, array_recv_binary) # TEXT[] |
753 | | - self.pg_types[VARCHAR_ARRAY] = (FC_BINARY, array_recv_binary) # VARCHAR[] |
754 | | - self.pg_types[REAL_ARRAY] = (FC_BINARY, array_recv_binary) # FLOAT4[] |
755 | | - self.pg_types[1028] = (FC_BINARY, array_recv_binary) # OID[] |
756 | | - self.pg_types[1034] = (FC_BINARY, array_recv_binary) # ACLITEM[] |
757 | | - self.pg_types[VARBYTE] = (FC_TEXT, text_recv) # VARBYTE |
| 727 | + self.pg_types[RedshiftOID.NUMERIC] = (FC_BINARY, numeric_in_binary) |
| 728 | + self.pg_types[RedshiftOID.DATE] = (FC_BINARY, date_recv_binary) |
| 729 | + self.pg_types[RedshiftOID.GEOGRAPHY] = (FC_BINARY, geographyhex_recv) # GEOGRAPHY |
| 730 | + self.pg_types[RedshiftOID.TIME] = (FC_BINARY, time_recv_binary) |
| 731 | + self.pg_types[RedshiftOID.TIMETZ] = (FC_BINARY, timetz_recv_binary) |
| 732 | + self.pg_types[RedshiftOID.CHAR_ARRAY] = (FC_BINARY, array_recv_binary) # CHAR[] |
| 733 | + self.pg_types[RedshiftOID.SMALLINT_ARRAY] = (FC_BINARY, array_recv_binary) # INT2[] |
| 734 | + self.pg_types[RedshiftOID.INTEGER_ARRAY] = (FC_BINARY, array_recv_binary) # INT4[] |
| 735 | + self.pg_types[RedshiftOID.TEXT_ARRAY] = (FC_BINARY, array_recv_binary) # TEXT[] |
| 736 | + self.pg_types[RedshiftOID.VARCHAR_ARRAY] = (FC_BINARY, array_recv_binary) # VARCHAR[] |
| 737 | + self.pg_types[RedshiftOID.REAL_ARRAY] = (FC_BINARY, array_recv_binary) # FLOAT4[] |
| 738 | + self.pg_types[RedshiftOID.OID_ARRAY] = (FC_BINARY, array_recv_binary) # OID[] |
| 739 | + self.pg_types[RedshiftOID.ACLITEM_ARRAY] = (FC_BINARY, array_recv_binary) # ACLITEM[] |
| 740 | + self.pg_types[RedshiftOID.VARBYTE] = (FC_TEXT, text_recv) # VARBYTE |
758 | 741 |
|
759 | 742 | if self.numeric_to_float: |
760 | | - self.pg_types[NUMERIC] = (FC_BINARY, numeric_to_float_binary) |
| 743 | + self.pg_types[RedshiftOID.NUMERIC] = (FC_BINARY, numeric_to_float_binary) |
761 | 744 |
|
762 | 745 | else: # text protocol |
763 | | - self.pg_types[NUMERIC] = (FC_TEXT, numeric_in) |
764 | | - self.pg_types[TIME] = (FC_TEXT, time_in) |
765 | | - self.pg_types[DATE] = (FC_TEXT, date_in) |
766 | | - self.pg_types[GEOGRAPHY] = (FC_TEXT, text_recv) # GEOGRAPHY |
767 | | - self.pg_types[TIMETZ] = (FC_BINARY, timetz_recv_binary) |
768 | | - self.pg_types[1002] = (FC_TEXT, array_recv_text) # CHAR[] |
769 | | - self.pg_types[SMALLINT_ARRAY] = (FC_TEXT, int_array_recv) # INT2[] |
770 | | - self.pg_types[INTEGER_ARRAY] = (FC_TEXT, int_array_recv) # INT4[] |
771 | | - self.pg_types[TEXT_ARRAY] = (FC_TEXT, array_recv_text) # TEXT[] |
772 | | - self.pg_types[VARCHAR_ARRAY] = (FC_TEXT, array_recv_text) # VARCHAR[] |
773 | | - self.pg_types[REAL_ARRAY] = (FC_TEXT, float_array_recv) # FLOAT4[] |
774 | | - self.pg_types[1028] = (FC_TEXT, int_array_recv) # OID[] |
775 | | - self.pg_types[1034] = (FC_TEXT, array_recv_text) # ACLITEM[] |
776 | | - self.pg_types[VARBYTE] = (FC_TEXT, varbytehex_recv) # VARBYTE |
| 746 | + self.pg_types[RedshiftOID.NUMERIC] = (FC_TEXT, numeric_in) |
| 747 | + self.pg_types[RedshiftOID.TIME] = (FC_TEXT, time_in) |
| 748 | + self.pg_types[RedshiftOID.DATE] = (FC_TEXT, date_in) |
| 749 | + self.pg_types[RedshiftOID.GEOGRAPHY] = (FC_TEXT, text_recv) # GEOGRAPHY |
| 750 | + self.pg_types[RedshiftOID.TIMETZ] = (FC_BINARY, timetz_recv_binary) |
| 751 | + self.pg_types[RedshiftOID.CHAR_ARRAY] = (FC_TEXT, array_recv_text) # CHAR[] |
| 752 | + self.pg_types[RedshiftOID.SMALLINT_ARRAY] = (FC_TEXT, int_array_recv) # INT2[] |
| 753 | + self.pg_types[RedshiftOID.INTEGER_ARRAY] = (FC_TEXT, int_array_recv) # INT4[] |
| 754 | + self.pg_types[RedshiftOID.TEXT_ARRAY] = (FC_TEXT, array_recv_text) # TEXT[] |
| 755 | + self.pg_types[RedshiftOID.VARCHAR_ARRAY] = (FC_TEXT, array_recv_text) # VARCHAR[] |
| 756 | + self.pg_types[RedshiftOID.REAL_ARRAY] = (FC_TEXT, float_array_recv) # FLOAT4[] |
| 757 | + self.pg_types[RedshiftOID.OID_ARRAY] = (FC_TEXT, int_array_recv) # OID[] |
| 758 | + self.pg_types[RedshiftOID.ACLITEM_ARRAY] = (FC_TEXT, array_recv_text) # ACLITEM[] |
| 759 | + self.pg_types[RedshiftOID.VARBYTE] = (FC_TEXT, varbytehex_recv) # VARBYTE |
777 | 760 |
|
778 | 761 | if self.numeric_to_float: |
779 | | - self.pg_types[NUMERIC] = (FC_TEXT, numeric_to_float_in) |
| 762 | + self.pg_types[RedshiftOID.NUMERIC] = (FC_TEXT, numeric_to_float_in) |
780 | 763 |
|
781 | 764 | @property |
782 | 765 | def _is_multi_databases_catalog_enable_in_server(self: "Connection") -> bool: |
@@ -1458,17 +1441,17 @@ def handle_BACKEND_KEY_DATA(self: "Connection", data: bytes, ps) -> None: |
1458 | 1441 |
|
1459 | 1442 | def inspect_datetime(self: "Connection", value: Datetime): |
1460 | 1443 | if value.tzinfo is None: |
1461 | | - return self.py_types[TIMESTAMP] # timestamp |
| 1444 | + return self.py_types[RedshiftOID.TIMESTAMP] # timestamp |
1462 | 1445 | else: |
1463 | | - return self.py_types[TIMESTAMPTZ] # send as timestamptz |
| 1446 | + return self.py_types[RedshiftOID.TIMESTAMPTZ] # send as timestamptz |
1464 | 1447 |
|
1465 | 1448 | def inspect_int(self: "Connection", value: int): |
1466 | 1449 | if min_int2 < value < max_int2: |
1467 | | - return self.py_types[SMALLINT] |
| 1450 | + return self.py_types[RedshiftOID.SMALLINT] |
1468 | 1451 | if min_int4 < value < max_int4: |
1469 | | - return self.py_types[INTEGER] |
| 1452 | + return self.py_types[RedshiftOID.INTEGER] |
1470 | 1453 | if min_int8 < value < max_int8: |
1471 | | - return self.py_types[BIGINT] |
| 1454 | + return self.py_types[RedshiftOID.BIGINT] |
1472 | 1455 | return self.py_types[Decimal] |
1473 | 1456 |
|
1474 | 1457 | def make_params(self: "Connection", values): |
|
0 commit comments