1.0.24 - Packaging/security fixes for the QGIS Plugin Repository
validation scan: annotate two best-effort cleanup try/except blocks
(the
Buffer algorithm's temp-table teardown and the feature iterator's
cursor
close) with documented bandit B110 suppressions, matching the
convention
already used elsewhere, and remove the Sphinx help/make.bat Windows
helper
so it no longer trips the suspicious-file check. No user-visible
behaviour
change.
1.0.23 - Fix plugin load failure ("AttributeError: module 'lib'
has no attribute 'GEN_EMAIL'"): this is a cryptography/pyOpenSSL
version
mismatch in the QGIS Python environment (cryptography 49+ removed
OpenSSL
bindings that older pyOpenSSL still references), not a QGIS version
issue.
classFactory now catches any load-time exception (not just
ImportError) so
the plugin degrades to a no-op stub with an actionable message instead
of a
raw traceback dialog, and logs the resolved versions and paths of
snowflake-connector-python, cryptography and pyOpenSSL to help
diagnose
per-user site-packages shadowing.
1.0.22 - Fix from end-to-end feature testing: editing a feature on a
Snowflake layer crashed with "TypeError: list indices must be integers
or
slices, not str" because FilterFid/FilterFids requests were pushed
down to SQL
using a column name as a list index. Feature ids are fetch-order
positions, not
primary keys, so these requests are now resolved from the in-memory
feature
cache instead, fixing the identify/attribute-table edit workflow.
1.0.21 - Fix from end-to-end feature testing: the custom Snowflake
expression functions (sf_h3_resolution, sf_h3_is_valid,
sf_h3_to_string) were
declared with an extra "node" parameter that QGIS never injects, so
every call
raised a TypeError and returned NULL in the field calculator,
labeling, and
symbology. The unused parameter was removed so the functions evaluate
correctly.
1.0.20 - Fix from end-to-end processing testing: Import from
Snowflake now stores TIMESTAMP/DATE/TIME columns correctly instead of
silently dropping every feature. Snowflake returns temporal values as
Python datetime objects, which the memory/OGR sink cannot store
directly;
they are now coerced to QDateTime/QDate/QTime, mirroring the existing
NUMBER (Decimal) handling.
1.0.19 - Fixes from end-to-end processing testing:
* Buffer (server-side) on GEOGRAPHY no longer freezes QGIS.
Snowflake's
optimizer produced a never-returning plan when ST_TRANSFORM and
ST_BUFFER
were fused in one expression; the reproject/buffer/reproject steps are
now
materialized into separate temporary tables.
* Import from Snowflake now stores numeric (NUMBER) values correctly
instead
of silently dropping every feature (Decimal values are coerced to
float).
* Connections set a bounded STATEMENT_TIMEOUT_IN_SECONDS so a stuck
query can
no longer block the UI indefinitely.
1.0.18 - Processing algorithms (Buffer, H3 index, Spatial join,
Execute SQL) now reuse the existing Snowflake connection instead of
force-closing and rebuilding it, fixing a UI freeze and the disruption
of
already-loaded layers when running an algorithm.
1.0.17 - Correctness and performance fixes from end-to-end testing:
integer/NUMBER columns (including primary keys) now display as
integers instead
of decimals; table layers reference their fully-qualified
database.schema.table
so counts/extent/queries no longer depend on the session's current
schema;
single-geometry layers use a cheaper feature count; field type names
now show
the Snowflake source type; and custom SQL-query layers no longer log a
misleading "primary key not verified" read-only reason.
1.0.16 - Packaging/metadata cleanup for the QGIS plugin repository:
remove the deprecated supportsQt6 flag (QGIS 4 compatibility is set
via
qgisMaximumVersion) and exclude the Sphinx help/make.bat from the
package so
it no longer trips the repository's suspicious-file scan.
1.0.15 - Fix layer load/rendering error at its root: remove a stray
sys.path entry that let the plugin modules import under two names,
causing a
ModuleNotFoundError in SFFeatureSource. Restores the canonical package
folder
name for the QGIS plugin repository.
1.0.14 - Packaging change (superseded by 1.0.15).
1.0.13 - Fix SNOW-3712094 auth-config reuse: load the stored config
with full=True so the connection alias is matched and the existing
authcfg id
is reused, instead of leaking a new QGIS auth config on every layer
creation.
1.0.12 - Fix plugin load failure ("cannot import name
'QgsSqlExpressionCompiler' from 'qgis.core'"): reimplement the
filter/subset
expression compiler as a pure-Python QgsExpression AST walker, since
QgsSqlExpressionCompiler is not exposed in the PyQGIS bindings.
Injection
protection and fail-safe fallback behaviour are preserved.
1.0.11 - Security hardening for QGIS plugin portal scan:
route all remaining raw identifier interpolation in
helpers/layer_creation.py
and tasks/sf_connect_task.py through quote_identifier / quote_literal
/
qualified_table_name; validate URL scheme and host before the GitHub
update
check in qgis_snowflake_connector.py; replace silent exception
swallowing in
the feature iterator and export algorithm with QgsMessageLog
diagnostics;
annotate already-sanitized SQL construction sites with documented
bandit
suppressions. No user-visible behaviour change.
1.0.10 - Refresh attribute table after edits without reopening the
layer;
advertise auto-increment default for numeric primary keys via
defaultValueClause();
add "Load all rows" option for tables exceeding the 50,000-row
visualization limit.
yes
snow
2026-08-31T14:26:21.395770+00:00
3.34.1
4.99.0
no
Plugin Tags