mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Fixed an issue where pgAdmin does not support pg_vector column length/precision. #8181
This commit is contained in:
parent
58bb14253e
commit
f63190dc93
@ -29,5 +29,6 @@ Housekeeping
|
||||
Bug fixes
|
||||
*********
|
||||
|
||||
| `Issue #8181 <https://github.com/pgadmin-org/pgadmin4/issues/8181>`_ - Fixed an issue where pgAdmin does not support pg_vector column length/precision.
|
||||
| `Issue #8341 <https://github.com/pgadmin-org/pgadmin4/issues/8341>`_ - Fixed an issue where the query tool was not treating IDENTITY columns as columns with default values when inserting new rows.
|
||||
| `Issue #8410 <https://github.com/pgadmin-org/pgadmin4/issues/8410>`_ - Fixed Docker image entrypoint.sh email validation.
|
@ -441,7 +441,8 @@ def fetch_length_precision(data):
|
||||
precision = False
|
||||
if 'elemoid' in data:
|
||||
length, precision, _ = \
|
||||
DataTypeReader.get_length_precision(data['elemoid'])
|
||||
DataTypeReader.get_length_precision(data['elemoid'],
|
||||
data['typname'])
|
||||
|
||||
# Set length and precision to None
|
||||
data['attlen'] = None
|
||||
|
@ -28,6 +28,7 @@ from pgadmin.utils.ajax import make_json_response, internal_server_error, \
|
||||
from pgadmin.utils.driver import get_driver
|
||||
from pgadmin.tools.schema_diff.node_registry import SchemaDiffRegistry
|
||||
from pgadmin.tools.schema_diff.compare import SchemaDiffObjectCompare
|
||||
from pgadmin.utils.constants import DATA_TYPE_WITH_LENGTH
|
||||
|
||||
|
||||
class TypeModule(SchemaChildModule):
|
||||
@ -436,7 +437,8 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare):
|
||||
properties_list.append(typelist)
|
||||
|
||||
is_tlength, is_precision, _ = \
|
||||
self.get_length_precision(row.get('elemoid', None))
|
||||
self.get_length_precision(row.get('elemoid', None),
|
||||
row.get('typname', None))
|
||||
|
||||
# Split length, precision from type name for grid
|
||||
t_len, t_prec = DataTypeReader.parse_length_precision(
|
||||
@ -469,7 +471,8 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare):
|
||||
:return: formatted response
|
||||
"""
|
||||
is_tlength, is_precision, _ = \
|
||||
self.get_length_precision(data.get('elemoid', None))
|
||||
self.get_length_precision(data.get('elemoid', None),
|
||||
data.get('typname', None))
|
||||
|
||||
# Split length, precision from type name for grid
|
||||
t_len, t_prec = DataTypeReader.parse_length_precision(
|
||||
@ -676,8 +679,8 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare):
|
||||
for row in rset['rows']:
|
||||
# Check against PGOID for specific type
|
||||
if row['elemoid']:
|
||||
if row['elemoid'] in (1560, 1561, 1562, 1563, 1042, 1043,
|
||||
1014, 1015):
|
||||
if row['elemoid'] in DATA_TYPE_WITH_LENGTH or \
|
||||
row['typname'] in DATA_TYPE_WITH_LENGTH:
|
||||
typeval = 'L'
|
||||
elif row['elemoid'] in (1083, 1114, 1115, 1183, 1184, 1185,
|
||||
1186, 1187, 1266, 1270):
|
||||
|
@ -22,7 +22,8 @@ from config import PG_DEFAULT_DRIVER
|
||||
from pgadmin.utils.constants import DATATYPE_TIME_WITH_TIMEZONE,\
|
||||
DATATYPE_TIME_WITHOUT_TIMEZONE,\
|
||||
DATATYPE_TIMESTAMP_WITH_TIMEZONE,\
|
||||
DATATYPE_TIMESTAMP_WITHOUT_TIMEZONE
|
||||
DATATYPE_TIMESTAMP_WITHOUT_TIMEZONE,\
|
||||
DATA_TYPE_WITH_LENGTH
|
||||
|
||||
|
||||
class SchemaChildModule(CollectionNodeModule):
|
||||
@ -173,7 +174,7 @@ class DataTypeReader:
|
||||
# Check if the type will have length and precision or not
|
||||
if row['elemoid']:
|
||||
length, precision, typeval = self.get_length_precision(
|
||||
row['elemoid'])
|
||||
row['elemoid'], row['typname'])
|
||||
|
||||
min_val, max_val = DataTypeReader._types_length_checks(
|
||||
length, typeval, precision)
|
||||
@ -192,21 +193,16 @@ class DataTypeReader:
|
||||
return True, res
|
||||
|
||||
@staticmethod
|
||||
def get_length_precision(elemoid_or_name):
|
||||
def get_length_precision(elemoid_or_name, typname=None):
|
||||
precision = False
|
||||
length = False
|
||||
typeval = ''
|
||||
|
||||
# Check against PGOID/typename for specific type
|
||||
if elemoid_or_name:
|
||||
if elemoid_or_name in (1560, 'bit',
|
||||
1561, 'bit[]',
|
||||
1562, 'varbit', 'bit varying',
|
||||
1563, 'varbit[]', 'bit varying[]',
|
||||
1042, 'bpchar', 'character',
|
||||
1043, 'varchar', 'character varying',
|
||||
1014, 'bpchar[]', 'character[]',
|
||||
1015, 'varchar[]', 'character varying[]'):
|
||||
if (elemoid_or_name in DATA_TYPE_WITH_LENGTH or
|
||||
typname is not None and
|
||||
typname in DATA_TYPE_WITH_LENGTH):
|
||||
typeval = 'L'
|
||||
elif elemoid_or_name in (1083, 'time',
|
||||
DATATYPE_TIME_WITHOUT_TIMEZONE,
|
||||
@ -267,7 +263,8 @@ class DataTypeReader:
|
||||
name == DATATYPE_TIMESTAMP_WITH_TIMEZONE or
|
||||
name == 'bit' or
|
||||
name == 'bit varying' or
|
||||
name == 'varbit'
|
||||
name == 'varbit' or name == 'vector' or name == 'halfvec' or
|
||||
name == 'sparsevec'
|
||||
):
|
||||
_prec = 0
|
||||
_len = typmod
|
||||
|
@ -127,7 +127,6 @@ ACCESS_DENIED_MESSAGE = gettext(
|
||||
"Access denied: You’re having limited access. You’re not allowed to "
|
||||
"Rename, Delete or Create any files/folders")
|
||||
|
||||
|
||||
KEY_RING_SERVICE_NAME = 'pgAdmin4'
|
||||
KEY_RING_USER_NAME = 'pgadmin4-master-password'
|
||||
KEY_RING_USERNAME_FORMAT = KEY_RING_SERVICE_NAME + '-{0}-{1}'
|
||||
@ -150,3 +149,13 @@ IP_ADDRESS_STRING = '{}/{}'
|
||||
TWO_PARAM_STRING = '{0}/{1}'
|
||||
SERVER_NOT_FOUND = gettext("Could not find the specified server.")
|
||||
SSL_MODES = ['prefer', 'require', 'verify-ca', 'verify-full']
|
||||
|
||||
DATA_TYPE_WITH_LENGTH = [1560, 'bit', 1561, 'bit[]',
|
||||
1562, 'varbit', 'bit varying',
|
||||
1563, 'varbit[]', 'bit varying[]',
|
||||
1042, 'bpchar', 'character',
|
||||
1043, 'varchar', 'character varying',
|
||||
1014, 'bpchar[]', 'character[]',
|
||||
1015, 'varchar[]', 'character varying[]',
|
||||
'vector', 'vector[]', 'halfvec', 'halfvec[]',
|
||||
'sparsevec', 'sparsevec[]']
|
||||
|
Loading…
Reference in New Issue
Block a user