Matrix: Catch error with different-sized input arrays
diff --git a/src/ports/postgres/modules/linalg/matrix_ops.py_in b/src/ports/postgres/modules/linalg/matrix_ops.py_in
index 9f3215c..4fc9a15 100644
--- a/src/ports/postgres/modules/linalg/matrix_ops.py_in
+++ b/src/ports/postgres/modules/linalg/matrix_ops.py_in
@@ -227,7 +227,6 @@
def get_dims(matrix, matrix_args, is_block=False):
-
if is_block:
block_dim = plpy.execute("""
SELECT
@@ -287,12 +286,15 @@
if row_dim != 0:
rv = plpy.execute("""
SELECT
- (array_upper({matrix_args[val]}::float8[], 1) -
- array_lower({matrix_args[val]}::float8[], 1) + 1)
+ DISTINCT(array_upper({matrix_args[val]}::float8[], 1) -
+ array_lower({matrix_args[val]}::float8[], 1) + 1)
AS col_dim
FROM
{matrix}
""".format(matrix=matrix, matrix_args=matrix_args))
+ _assert(rv and len(rv) == 1,
+ "dimensions mismatch: row_array.size() != vec.size(). "
+ "Data contains different sized arrays")
col_dim = rv[0]['col_dim']
else:
col_dim = 0