Skip to content

Commit

Permalink
[mssql] Fix style methods when connection name is used instead of dat…
Browse files Browse the repository at this point in the history
…abase name
  • Loading branch information
nyalldawson committed Feb 20, 2025
1 parent 0bd5a3a commit eee9e60
Showing 1 changed file with 23 additions and 14 deletions.
37 changes: 23 additions & 14 deletions src/providers/mssql/qgsmssqlprovider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2514,6 +2514,13 @@ Qgis::VectorExportResult QgsMssqlProviderMetadata::createEmptyLayer( const QStri
);
}


QString buildfTableCatalogClause( const QgsDataSourceUri &dsUri )
{
return QStringLiteral( "f_table_catalog%1" ).arg( dsUri.database().isEmpty() ? QStringLiteral( " IS NULL" ) : QStringLiteral( "=%1" ).arg( QgsMssqlProvider::quotedValue( dsUri.database() ) ) );
}


bool QgsMssqlProviderMetadata::styleExists( const QString &uri, const QString &styleId, QString &errorCause )
{
errorCause.clear();
Expand Down Expand Up @@ -2547,12 +2554,12 @@ bool QgsMssqlProviderMetadata::styleExists( const QString &uri, const QString &s
query.setForwardOnly( true );
const QString checkQuery = QString( "SELECT styleName"
" FROM layer_styles"
" WHERE f_table_catalog=%1"
" WHERE %1"
" AND f_table_schema=%2"
" AND f_table_name=%3"
" AND f_geometry_column=%4"
" AND styleName=%5" )
.arg( QgsMssqlProvider::quotedValue( dsUri.database() ) )
.arg( buildfTableCatalogClause( dsUri ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.schema() ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.table() ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.geometryColumn() ) )
Expand Down Expand Up @@ -2662,12 +2669,12 @@ bool QgsMssqlProviderMetadata::saveStyle( const QString &uri, const QString &qml

const QString checkQuery = QStringLiteral( "SELECT styleName"
" FROM layer_styles"
" WHERE f_table_catalog=%1"
" WHERE %1"
" AND f_table_schema=%2"
" AND f_table_name=%3"
" AND f_geometry_column=%4"
" AND styleName=%5" )
.arg( QgsMssqlProvider::quotedValue( dsUri.database() ) )
.arg( buildfTableCatalogClause( dsUri ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.schema() ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.table() ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.geometryColumn() ) )
Expand All @@ -2688,7 +2695,7 @@ bool QgsMssqlProviderMetadata::saveStyle( const QString &uri, const QString &qml
",styleSLD=%3"
",description=%4"
",owner=%5"
" WHERE f_table_catalog=%6"
" WHERE %6"
" AND f_table_schema=%7"
" AND f_table_name=%8"
" AND f_geometry_column=%9"
Expand All @@ -2698,7 +2705,7 @@ bool QgsMssqlProviderMetadata::saveStyle( const QString &uri, const QString &qml
.arg( QgsMssqlProvider::quotedValue( sldStyle ) )
.arg( QgsMssqlProvider::quotedValue( styleDescription.isEmpty() ? QDateTime::currentDateTime().toString() : styleDescription ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.username() ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.database() ) )
.arg( buildfTableCatalogClause( dsUri ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.schema() ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.table() ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.geometryColumn() ) )
Expand All @@ -2708,11 +2715,11 @@ bool QgsMssqlProviderMetadata::saveStyle( const QString &uri, const QString &qml
{
const QString removeDefaultSql = QString( "UPDATE layer_styles "
" SET useAsDefault=0"
" WHERE f_table_catalog=%1"
" WHERE %1"
" AND f_table_schema=%2"
" AND f_table_name=%3"
" AND f_geometry_column=%4" )
.arg( QgsMssqlProvider::quotedValue( dsUri.database() ) )
.arg( buildfTableCatalogClause( dsUri ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.schema() ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.table() ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.geometryColumn() ) );
Expand Down Expand Up @@ -2776,12 +2783,12 @@ QString QgsMssqlProviderMetadata::loadStoredStyle( const QString &uri, QString &

const QString selectQmlQuery = QString( "SELECT top 1 styleName, styleQML"
" FROM layer_styles"
" WHERE f_table_catalog=%1"
" WHERE %1"
" AND f_table_schema=%2"
" AND f_table_name=%3"
" AND f_geometry_column=%4"
" ORDER BY useAsDefault desc" )
.arg( QgsMssqlProvider::quotedValue( dsUri.database() ) )
.arg( buildfTableCatalogClause( dsUri ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.schema() ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.table() ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.geometryColumn() ) );
Expand Down Expand Up @@ -2835,14 +2842,16 @@ int QgsMssqlProviderMetadata::listStyles( const QString &uri, QStringList &ids,
return -1;
}

const QString fTableCatalogClause = buildfTableCatalogClause( dsUri );

const QString selectRelatedQuery = QString( "SELECT id,styleName,description"
" FROM layer_styles "
" WHERE f_table_catalog=%1"
" WHERE %1"
" AND f_table_schema=%2"
" AND f_table_name=%3"
" AND f_geometry_column=%4"
" ORDER BY useasdefault DESC, update_time DESC" )
.arg( QgsMssqlProvider::quotedValue( dsUri.database() ) )
.arg( fTableCatalogClause )
.arg( QgsMssqlProvider::quotedValue( dsUri.schema() ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.table() ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.geometryColumn() ) );
Expand All @@ -2865,9 +2874,9 @@ int QgsMssqlProviderMetadata::listStyles( const QString &uri, QStringList &ids,
}
const QString selectOthersQuery = QString( "SELECT id,styleName,description"
" FROM layer_styles "
" WHERE NOT (f_table_catalog=%1 AND f_table_schema=%2 AND f_table_name=%3 AND f_geometry_column=%4)"
" WHERE NOT (%1 AND f_table_schema=%2 AND f_table_name=%3 AND f_geometry_column=%4)"
" ORDER BY update_time DESC" )
.arg( QgsMssqlProvider::quotedValue( dsUri.database() ) )
.arg( fTableCatalogClause )
.arg( QgsMssqlProvider::quotedValue( dsUri.schema() ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.table() ) )
.arg( QgsMssqlProvider::quotedValue( dsUri.geometryColumn() ) );
Expand Down

0 comments on commit eee9e60

Please sign in to comment.