velocity-python 0.0.142__tar.gz → 0.0.144__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of velocity-python might be problematic. Click here for more details.
- {velocity_python-0.0.142 → velocity_python-0.0.144}/PKG-INFO +1 -1
- {velocity_python-0.0.142 → velocity_python-0.0.144}/pyproject.toml +1 -1
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/__init__.py +1 -1
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/postgres/sql.py +32 -48
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/sqlserver/sql.py +9 -4
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity_python.egg-info/PKG-INFO +1 -1
- {velocity_python-0.0.142 → velocity_python-0.0.144}/tests/test_where_clause_validation.py +0 -4
- {velocity_python-0.0.142 → velocity_python-0.0.144}/LICENSE +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/README.md +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/setup.cfg +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/app/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/app/invoices.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/app/orders.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/app/payments.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/app/purchase_orders.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/app/tests/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/app/tests/test_email_processing.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/app/tests/test_payment_profile_sorting.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/app/tests/test_spreadsheet_functions.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/amplify.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/handlers/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/handlers/base_handler.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/handlers/context.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/handlers/exceptions.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/handlers/lambda_handler.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/handlers/mixins/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/handlers/mixins/activity_tracker.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/handlers/mixins/error_handler.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/handlers/mixins/legacy_mixin.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/handlers/mixins/standard_mixin.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/handlers/response.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/handlers/sqs_handler.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/tests/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/tests/test_lambda_handler_json_serialization.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/tests/test_response.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/core/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/core/column.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/core/database.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/core/decorators.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/core/engine.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/core/result.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/core/row.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/core/sequence.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/core/table.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/core/transaction.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/exceptions.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/base/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/base/initializer.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/base/operators.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/base/sql.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/base/types.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/mysql/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/mysql/operators.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/mysql/reserved.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/mysql/sql.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/mysql/types.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/postgres/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/postgres/operators.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/postgres/reserved.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/postgres/types.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/sqlite/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/sqlite/operators.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/sqlite/reserved.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/sqlite/sql.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/sqlite/types.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/sqlserver/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/sqlserver/operators.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/sqlserver/reserved.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/sqlserver/types.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/tablehelper.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/common_db_test.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/common.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_column.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_connections.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_database.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_engine.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_general_usage.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_imports.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_result.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_row.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_row_comprehensive.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_schema_locking.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_schema_locking_unit.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_sequence.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_sql_comprehensive.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_table.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_table_comprehensive.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_transaction.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/sql/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/sql/common.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/sql/test_postgres_select_advanced.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/sql/test_postgres_select_variances.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/test_cursor_rowcount_fix.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/test_db_utils.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/test_postgres.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/test_postgres_unchanged.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/test_process_error_robustness.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/test_result_caching.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/test_result_sql_aware.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/test_row_get_missing_column.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/test_schema_locking_initializers.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/test_schema_locking_simple.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/test_sql_builder.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/test_tablehelper.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/utils.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/conv/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/conv/iconv.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/conv/oconv.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/db.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/export.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/format.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/mail.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/merge.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/tests/__init__.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/tests/test_db.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/tests/test_fix.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/tests/test_format.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/tests/test_iconv.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/tests/test_merge.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/tests/test_oconv.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/tests/test_original_error.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/tests/test_timer.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/timer.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/tools.py +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity_python.egg-info/SOURCES.txt +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity_python.egg-info/dependency_links.txt +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity_python.egg-info/requires.txt +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity_python.egg-info/top_level.txt +0 -0
- {velocity_python-0.0.142 → velocity_python-0.0.144}/tests/test_sys_modified_count_postgres_demo.py +0 -0
|
@@ -18,39 +18,6 @@ TableHelper.reserved = reserved_words
|
|
|
18
18
|
TableHelper.operators = OPERATORS
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
def _get_table_helper(tx, table):
|
|
22
|
-
"""
|
|
23
|
-
Utility function to create a TableHelper instance.
|
|
24
|
-
Ensures consistent configuration across all SQL methods.
|
|
25
|
-
"""
|
|
26
|
-
return TableHelper(tx, table)
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
def _validate_table_name(table):
|
|
30
|
-
"""Validate table name format."""
|
|
31
|
-
if not table or not isinstance(table, str):
|
|
32
|
-
raise ValueError("Table name must be a non-empty string")
|
|
33
|
-
# Add more validation as needed
|
|
34
|
-
return table.strip()
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def _handle_predicate_errors(predicates, operation="WHERE"):
|
|
38
|
-
"""Process a list of predicates with error handling."""
|
|
39
|
-
sql_parts = []
|
|
40
|
-
vals = []
|
|
41
|
-
|
|
42
|
-
for pred, val in predicates:
|
|
43
|
-
sql_parts.append(pred)
|
|
44
|
-
if val is None:
|
|
45
|
-
pass
|
|
46
|
-
elif isinstance(val, tuple):
|
|
47
|
-
vals.extend(val)
|
|
48
|
-
else:
|
|
49
|
-
vals.append(val)
|
|
50
|
-
|
|
51
|
-
return sql_parts, vals
|
|
52
|
-
|
|
53
|
-
|
|
54
21
|
system_fields = [
|
|
55
22
|
"sys_id",
|
|
56
23
|
"sys_created",
|
|
@@ -143,7 +110,7 @@ class SQL(BaseSQLDialect):
|
|
|
143
110
|
vals = []
|
|
144
111
|
|
|
145
112
|
# Create table helper instance
|
|
146
|
-
th =
|
|
113
|
+
th = TableHelper(tx, table)
|
|
147
114
|
|
|
148
115
|
# Handle columns and DISTINCT before aliasing
|
|
149
116
|
if columns is None:
|
|
@@ -447,7 +414,7 @@ class SQL(BaseSQLDialect):
|
|
|
447
414
|
if not isinstance(data, Mapping) or not data:
|
|
448
415
|
raise ValueError("data must be a non-empty mapping of column-value pairs.")
|
|
449
416
|
|
|
450
|
-
th =
|
|
417
|
+
th = TableHelper(tx, table)
|
|
451
418
|
set_clauses = []
|
|
452
419
|
vals = []
|
|
453
420
|
|
|
@@ -794,21 +761,36 @@ class SQL(BaseSQLDialect):
|
|
|
794
761
|
return sql, tuple()
|
|
795
762
|
|
|
796
763
|
@classmethod
|
|
797
|
-
def ensure_sys_modified_count(cls, name):
|
|
764
|
+
def ensure_sys_modified_count(cls, name, has_column=False):
|
|
798
765
|
"""Return SQL to backfill sys_modified_count and refresh the on_sys_modified trigger."""
|
|
799
766
|
if "." in name:
|
|
800
|
-
|
|
767
|
+
schema_name, table_name = name.split(".", 1)
|
|
801
768
|
else:
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
769
|
+
schema_name = cls.default_schema
|
|
770
|
+
table_name = name
|
|
771
|
+
|
|
772
|
+
schema_identifier = TableHelper.quote(schema_name)
|
|
773
|
+
table_identifier = TableHelper.quote(table_name)
|
|
774
|
+
fqtn = f"{schema_identifier}.{table_identifier}"
|
|
775
|
+
|
|
776
|
+
trigger_name = (
|
|
777
|
+
f"on_update_row_{schema_name}_{table_name}"
|
|
778
|
+
.replace(".", "_")
|
|
779
|
+
.replace('"', "")
|
|
780
|
+
)
|
|
781
|
+
trigger_identifier = TableHelper.quote(trigger_name)
|
|
805
782
|
column_name = TableHelper.quote("sys_modified_count")
|
|
806
783
|
|
|
807
|
-
|
|
808
|
-
|
|
784
|
+
statements = []
|
|
785
|
+
if not has_column:
|
|
786
|
+
statements.append(
|
|
787
|
+
f"ALTER TABLE {fqtn} ADD COLUMN {column_name} INTEGER NOT NULL DEFAULT 0;"
|
|
788
|
+
)
|
|
789
|
+
|
|
790
|
+
statements.extend([
|
|
809
791
|
f"UPDATE {fqtn} SET {column_name} = 0 WHERE {column_name} IS NULL;",
|
|
810
792
|
f"""
|
|
811
|
-
CREATE OR REPLACE FUNCTION {
|
|
793
|
+
CREATE OR REPLACE FUNCTION {schema_identifier}.on_sys_modified()
|
|
812
794
|
RETURNS TRIGGER AS
|
|
813
795
|
$BODY$
|
|
814
796
|
BEGIN
|
|
@@ -837,15 +819,17 @@ class SQL(BaseSQLDialect):
|
|
|
837
819
|
LANGUAGE plpgsql VOLATILE
|
|
838
820
|
COST 100;
|
|
839
821
|
""",
|
|
840
|
-
f"DROP TRIGGER IF EXISTS {
|
|
822
|
+
f"DROP TRIGGER IF EXISTS {trigger_identifier} ON {fqtn};",
|
|
841
823
|
f"""
|
|
842
|
-
CREATE TRIGGER {
|
|
824
|
+
CREATE TRIGGER {trigger_identifier}
|
|
843
825
|
BEFORE INSERT OR UPDATE ON {fqtn}
|
|
844
|
-
FOR EACH ROW EXECUTE PROCEDURE {
|
|
826
|
+
FOR EACH ROW EXECUTE PROCEDURE {schema_identifier}.on_sys_modified();
|
|
845
827
|
""",
|
|
846
|
-
|
|
828
|
+
])
|
|
847
829
|
|
|
848
|
-
sql = sqlparse.format(
|
|
830
|
+
sql = sqlparse.format(
|
|
831
|
+
" ".join(statements), reindent=True, keyword_case="upper"
|
|
832
|
+
)
|
|
849
833
|
return sql, tuple()
|
|
850
834
|
|
|
851
835
|
@classmethod
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/sqlserver/sql.py
RENAMED
|
@@ -485,7 +485,7 @@ END;
|
|
|
485
485
|
return "\n".join(statements), tuple()
|
|
486
486
|
|
|
487
487
|
@classmethod
|
|
488
|
-
def ensure_sys_modified_count(cls, name):
|
|
488
|
+
def ensure_sys_modified_count(cls, name, has_column=False):
|
|
489
489
|
"""Ensure sys_modified_count exists for SQL Server tables along with maintenance triggers."""
|
|
490
490
|
if "." in name:
|
|
491
491
|
schema, table_name = name.split(".", 1)
|
|
@@ -499,8 +499,13 @@ END;
|
|
|
499
499
|
table_name_sql = table_name.replace("'", "''")
|
|
500
500
|
trigger_prefix = re.sub(r"[^0-9A-Za-z_]+", "_", f"CC_SYS_MOD_{table_name}")
|
|
501
501
|
|
|
502
|
-
statements = [
|
|
503
|
-
|
|
502
|
+
statements = []
|
|
503
|
+
if not has_column:
|
|
504
|
+
statements.append(
|
|
505
|
+
f"IF COL_LENGTH(N'{object_name}', 'sys_modified_count') IS NULL BEGIN ALTER TABLE {table_identifier} ADD sys_modified_count INT NOT NULL CONSTRAINT DF_{trigger_prefix}_COUNT DEFAULT (0); END;"
|
|
506
|
+
)
|
|
507
|
+
|
|
508
|
+
statements.extend([
|
|
504
509
|
f"UPDATE {table_identifier} SET sys_modified_count = 0 WHERE sys_modified_count IS NULL;",
|
|
505
510
|
f"IF OBJECT_ID(N'{schema_identifier}.{trigger_prefix}_insert', N'TR') IS NOT NULL DROP TRIGGER {schema_identifier}.{trigger_prefix}_insert;",
|
|
506
511
|
f"IF OBJECT_ID(N'{schema_identifier}.{trigger_prefix}_update', N'TR') IS NOT NULL DROP TRIGGER {schema_identifier}.{trigger_prefix}_update;",
|
|
@@ -539,7 +544,7 @@ BEGIN
|
|
|
539
544
|
INNER JOIN deleted AS d ON d.sys_id = i.sys_id;
|
|
540
545
|
END;
|
|
541
546
|
""".strip(),
|
|
542
|
-
]
|
|
547
|
+
])
|
|
543
548
|
|
|
544
549
|
return "\n".join(statements), tuple()
|
|
545
550
|
|
|
@@ -25,10 +25,6 @@ class TestWhereClauseValidation(unittest.TestCase):
|
|
|
25
25
|
self.mock_helper.get_table_alias.return_value = "t1"
|
|
26
26
|
self.mock_helper.foreign_keys = {}
|
|
27
27
|
self.mock_helper.split_columns.return_value = ["column1", "column2"]
|
|
28
|
-
|
|
29
|
-
# Patch TableHelper creation
|
|
30
|
-
import velocity.db.servers.postgres.sql as sql_module
|
|
31
|
-
sql_module._get_table_helper = Mock(return_value=self.mock_helper)
|
|
32
28
|
|
|
33
29
|
def test_invalid_where_bare_integer(self):
|
|
34
30
|
"""Test that bare integers in WHERE clauses are rejected with helpful error."""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/app/tests/test_email_processing.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/handlers/base_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/handlers/lambda_handler.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/handlers/mixins/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/handlers/mixins/legacy_mixin.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/aws/handlers/sqs_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/base/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/base/initializer.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/base/operators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/mysql/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/mysql/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/mysql/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/postgres/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/postgres/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/postgres/reserved.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/postgres/types.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/sqlite/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/sqlite/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/sqlite/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/sqlserver/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/sqlserver/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/sqlserver/reserved.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/servers/sqlserver/types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/common.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_column.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_database.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_engine.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_imports.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_result.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_row.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_sequence.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/postgres/test_table.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/test_postgres_unchanged.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/test_result_caching.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/test_result_sql_aware.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/test_sql_builder.py
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/db/tests/test_tablehelper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity/misc/tests/test_original_error.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity_python.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity_python.egg-info/requires.txt
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/src/velocity_python.egg-info/top_level.txt
RENAMED
|
File without changes
|
{velocity_python-0.0.142 → velocity_python-0.0.144}/tests/test_sys_modified_count_postgres_demo.py
RENAMED
|
File without changes
|