sql-error-categorizer 0.2.0__tar.gz → 0.2.2__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.
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/PKG-INFO +2 -1
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/pyproject.toml +2 -1
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/requirements.txt +1 -2
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/src/sql_error_categorizer/detectors/complications.py +1 -1
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/src/sql_error_categorizer/detectors/syntax.py +1 -1
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/.gitignore +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/.readthedocs.yaml +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/LICENSE +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/Makefile +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/README.md +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/datasets/catalogs/constraints.json +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/datasets/catalogs/miedema.json +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/datasets/sql/constraints.sql +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/datasets/sql/miedema.sql +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/docs/Makefile +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/docs/conf.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/docs/index.rst +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/docs/make.bat +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/docs/requirements.txt +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/src/sql_error_categorizer/__init__.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/src/sql_error_categorizer/detectors/__init__.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/src/sql_error_categorizer/detectors/base.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/src/sql_error_categorizer/detectors/logical.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/src/sql_error_categorizer/detectors/semantic.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/test_detector.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_002_ambiguous_column.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_004_undefined_column.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_005_undefined_function.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_006_undefined_parameter.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_007_undefined_tables.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_008_invalid_schema_names.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_009_misspellings.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_013_data_type_mismatch.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_014_aggregate_function_outside_select_or_having.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_015_nested_aggregate_functions.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_016_extraneous_omitted_grouping_column.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_017_having_without_group_by.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_019_using_where_twice.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_020_missing_from.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_021_comparison_with_null.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_022_038_additional_omitted_semicolons.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_024_duplicate_clause.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_026_too_many_columns_in_subquery.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_030_keywords_order.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_034_curly_square_or_unmatched_brackets.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_035_is_where_not_applicable.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_037_nonstandard_operators.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/2_sem/test_040_tautological_inconsistent_expressions.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/2_sem/test_041_distinct_sum_avg.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/2_sem/test_043_wildcards_without_like.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/2_sem/test_044_incorrect_wildcards.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/3_log/test_058_join_on_incorrect_table.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/3_log/test_059_join_when_join_needs_to_be_omitted.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/3_log/test_062_missing_join.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/3_log/test_070_extraneous_column_in_select.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/3_log/test_071_missing_column_from_select.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/3_log/test_072_missing_distinct_from_select.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/3_log/test_073_missing_as_from_select.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/4_com/test_083_unnecessary_distinct_in_select.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/4_com/test_088_like_no_wildcards.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/4_com/test_092_unnecessary_distinct_in_aggregate_function.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/4_com/test_095_group_by_with_singleton_groups.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/4_com/test_097_group_by_can_be_replaced_by_distinct.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/4_com/test_100_order_by_in_subquery.py +0 -0
- {sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sql_error_categorizer
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: This project analyses SQL statements and labels possible errors or complications.
|
|
5
5
|
Project-URL: Repository, https://github.com/DavidePonzini/sql_error_categorizer
|
|
6
6
|
Project-URL: Documentation, https://sql-error-categorizer.readthedocs.io/en/latest/index.html
|
|
@@ -17,6 +17,7 @@ Requires-Dist: pyyaml
|
|
|
17
17
|
Requires-Dist: sql-error-taxonomy
|
|
18
18
|
Requires-Dist: sqlglot
|
|
19
19
|
Requires-Dist: sqlparse
|
|
20
|
+
Requires-Dist: sqlscope
|
|
20
21
|
Requires-Dist: z3-solver
|
|
21
22
|
Description-Content-Type: text/markdown
|
|
22
23
|
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "sql_error_categorizer"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.2"
|
|
8
8
|
authors = [
|
|
9
9
|
{ name="Davide Ponzini", email="davide.ponzini95@gmail.com" },
|
|
10
10
|
]
|
|
@@ -21,6 +21,7 @@ dependencies = [
|
|
|
21
21
|
"pyyaml",
|
|
22
22
|
"sqlparse",
|
|
23
23
|
"sqlglot",
|
|
24
|
+
"sqlscope",
|
|
24
25
|
"sql_error_taxonomy",
|
|
25
26
|
"z3-solver",
|
|
26
27
|
"python-dateutil",
|
|
@@ -342,7 +342,7 @@ class ComplicationDetector(BaseDetector):
|
|
|
342
342
|
checked_subqueries: set[str] = set()
|
|
343
343
|
|
|
344
344
|
for select in self.query.selects:
|
|
345
|
-
for subquery, clause in select.subqueries:
|
|
345
|
+
for subquery, clause, depth in select.subqueries:
|
|
346
346
|
if subquery.sql in checked_subqueries:
|
|
347
347
|
continue
|
|
348
348
|
|
|
@@ -967,7 +967,7 @@ class SyntaxErrorDetector(BaseDetector):
|
|
|
967
967
|
results: list[DetectedError] = []
|
|
968
968
|
|
|
969
969
|
for select in self.query.selects:
|
|
970
|
-
for subquery, clause in select.subqueries:
|
|
970
|
+
for subquery, clause, depth in select.subqueries:
|
|
971
971
|
if clause in ('FROM', 'EXISTS'):
|
|
972
972
|
continue # FROM/EXISTS subqueries can have any number of columns
|
|
973
973
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/datasets/catalogs/constraints.json
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
|
{sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/src/sql_error_categorizer/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_002_ambiguous_column.py
RENAMED
|
File without changes
|
{sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_004_undefined_column.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_007_undefined_tables.py
RENAMED
|
File without changes
|
|
File without changes
|
{sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_009_misspellings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_020_missing_from.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_024_duplicate_clause.py
RENAMED
|
File without changes
|
|
File without changes
|
{sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/1_syn/test_030_keywords_order.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/2_sem/test_041_distinct_sum_avg.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sql_error_categorizer-0.2.0 → sql_error_categorizer-0.2.2}/tests/3_log/test_062_missing_join.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
|