SQLTemplate: Make Ident only work for identifiers (not any string) (#92387)

This commit is contained in:
Ryan McKinley 2024-08-27 13:22:40 +03:00 committed by GitHub
parent 437747f250
commit 5a30e12a10
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
79 changed files with 284 additions and 261 deletions

View File

@ -9,7 +9,7 @@ import (
"github.com/grafana/grafana/pkg/storage/unified/sql/sqltemplate/mocks" "github.com/grafana/grafana/pkg/storage/unified/sql/sqltemplate/mocks"
) )
func TestQueries(t *testing.T) { func TestDashboardQueries(t *testing.T) {
// prefix tables with grafana // prefix tables with grafana
nodb := &legacysql.LegacyDatabaseHelper{ nodb := &legacysql.LegacyDatabaseHelper{
Table: func(n string) string { Table: func(n string) string {

View File

@ -9,10 +9,10 @@ SELECT
dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id,
dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard FROM `grafana`.`dashboard` as dashboard
LEFT OUTER JOIN "grafana.dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id LEFT OUTER JOIN `grafana`.`dashboard_provisioning` as provisioning ON dashboard.id = provisioning.dashboard_id
LEFT OUTER JOIN "grafana.user" as created_user ON dashboard.created_by = created_user.id LEFT OUTER JOIN `grafana`.`user` as created_user ON dashboard.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" as updated_user ON dashboard.updated_by = updated_user.id LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false WHERE dashboard.is_folder = false
AND dashboard.org_id = 2 AND dashboard.org_id = 2
ORDER BY dashboard.id DESC ORDER BY dashboard.id DESC

View File

@ -9,10 +9,10 @@ SELECT
dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id,
dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard FROM `grafana`.`dashboard` as dashboard
LEFT OUTER JOIN "grafana.dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id LEFT OUTER JOIN `grafana`.`dashboard_provisioning` as provisioning ON dashboard.id = provisioning.dashboard_id
LEFT OUTER JOIN "grafana.user" as created_user ON dashboard.created_by = created_user.id LEFT OUTER JOIN `grafana`.`user` as created_user ON dashboard.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" as updated_user ON dashboard.updated_by = updated_user.id LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false WHERE dashboard.is_folder = false
AND dashboard.org_id = 2 AND dashboard.org_id = 2
AND dashboard.id > 22 AND dashboard.id > 22

View File

@ -9,10 +9,10 @@ SELECT
dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id,
dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard FROM `grafana`.`dashboard` as dashboard
LEFT OUTER JOIN "grafana.dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id LEFT OUTER JOIN `grafana`.`dashboard_provisioning` as provisioning ON dashboard.id = provisioning.dashboard_id
LEFT OUTER JOIN "grafana.user" as created_user ON dashboard.created_by = created_user.id LEFT OUTER JOIN `grafana`.`user` as created_user ON dashboard.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" as updated_user ON dashboard.updated_by = updated_user.id LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false WHERE dashboard.is_folder = false
AND dashboard.org_id = 2 AND dashboard.org_id = 2
AND dashboard.uid = 'UUU' AND dashboard.uid = 'UUU'

View File

@ -9,11 +9,11 @@ SELECT
dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id,
dashboard_version.created, updated_user.uid as updated_by,updated_user.id as created_by_id, dashboard_version.created, updated_user.uid as updated_by,updated_user.id as created_by_id,
dashboard_version.version, dashboard_version.message, dashboard_version.data dashboard_version.version, dashboard_version.message, dashboard_version.data
FROM "grafana.dashboard" as dashboard FROM `grafana`.`dashboard` as dashboard
LEFT OUTER JOIN "grafana.dashboard_version" as dashboard_version ON dashboard.id = dashboard_version.dashboard_id LEFT OUTER JOIN `grafana`.`dashboard_version` as dashboard_version ON dashboard.id = dashboard_version.dashboard_id
LEFT OUTER JOIN "grafana.dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id LEFT OUTER JOIN `grafana`.`dashboard_provisioning` as provisioning ON dashboard.id = provisioning.dashboard_id
LEFT OUTER JOIN "grafana.user" as created_user ON dashboard.created_by = created_user.id LEFT OUTER JOIN `grafana`.`user` as created_user ON dashboard.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" as updated_user ON dashboard.updated_by = updated_user.id LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false WHERE dashboard.is_folder = false
AND dashboard.org_id = 2 AND dashboard.org_id = 2
AND dashboard_version.version = 3 AND dashboard_version.version = 3

View File

@ -9,10 +9,10 @@ SELECT
dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id,
dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard FROM `grafana`.`dashboard` as dashboard
LEFT OUTER JOIN "grafana.dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id LEFT OUTER JOIN `grafana`.`dashboard_provisioning` as provisioning ON dashboard.id = provisioning.dashboard_id
LEFT OUTER JOIN "grafana.user" as created_user ON dashboard.created_by = created_user.id LEFT OUTER JOIN `grafana`.`user` as created_user ON dashboard.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" as updated_user ON dashboard.updated_by = updated_user.id LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false WHERE dashboard.is_folder = false
AND dashboard.org_id = 2 AND dashboard.org_id = 2
AND dashboard.uid = 'UUU' AND dashboard.uid = 'UUU'

View File

@ -2,9 +2,9 @@ SELECT p.id, p.uid, p.folder_uid,
p.created, created_user.uid as created_by, p.created, created_user.uid as created_by,
p.updated, updated_user.uid as updated_by, p.updated, updated_user.uid as updated_by,
p.name, p.type, p.description, p.model p.name, p.type, p.description, p.model
FROM "grafana.library_element" as p FROM `grafana`.`library_element` as p
LEFT OUTER JOIN "grafana.user" AS created_user ON p.created_by = created_user.id LEFT OUTER JOIN `grafana`.`user` AS created_user ON p.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" AS updated_user ON p.updated_by = updated_user.id LEFT OUTER JOIN `grafana`.`user` AS updated_user ON p.updated_by = updated_user.id
WHERE p.org_id = 1 WHERE p.org_id = 1
AND p.uid = 'xyz' AND p.uid = 'xyz'
ORDER BY p.id DESC ORDER BY p.id DESC

View File

@ -2,9 +2,9 @@ SELECT p.id, p.uid, p.folder_uid,
p.created, created_user.uid as created_by, p.created, created_user.uid as created_by,
p.updated, updated_user.uid as updated_by, p.updated, updated_user.uid as updated_by,
p.name, p.type, p.description, p.model p.name, p.type, p.description, p.model
FROM "grafana.library_element" as p FROM `grafana`.`library_element` as p
LEFT OUTER JOIN "grafana.user" AS created_user ON p.created_by = created_user.id LEFT OUTER JOIN `grafana`.`user` AS created_user ON p.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" AS updated_user ON p.updated_by = updated_user.id LEFT OUTER JOIN `grafana`.`user` AS updated_user ON p.updated_by = updated_user.id
WHERE p.org_id = 1 WHERE p.org_id = 1
ORDER BY p.id DESC ORDER BY p.id DESC
LIMIT 5 LIMIT 5

View File

@ -2,9 +2,9 @@ SELECT p.id, p.uid, p.folder_uid,
p.created, created_user.uid as created_by, p.created, created_user.uid as created_by,
p.updated, updated_user.uid as updated_by, p.updated, updated_user.uid as updated_by,
p.name, p.type, p.description, p.model p.name, p.type, p.description, p.model
FROM "grafana.library_element" as p FROM `grafana`.`library_element` as p
LEFT OUTER JOIN "grafana.user" AS created_user ON p.created_by = created_user.id LEFT OUTER JOIN `grafana`.`user` AS created_user ON p.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" AS updated_user ON p.updated_by = updated_user.id LEFT OUTER JOIN `grafana`.`user` AS updated_user ON p.updated_by = updated_user.id
WHERE p.org_id = 1 WHERE p.org_id = 1
AND p.id > 4 AND p.id > 4
ORDER BY p.id DESC ORDER BY p.id DESC

View File

@ -9,10 +9,10 @@ SELECT
dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id,
dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard FROM "grafana"."dashboard" as dashboard
LEFT OUTER JOIN "grafana.dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id
LEFT OUTER JOIN "grafana.user" as created_user ON dashboard.created_by = created_user.id LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" as updated_user ON dashboard.updated_by = updated_user.id LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false WHERE dashboard.is_folder = false
AND dashboard.org_id = 2 AND dashboard.org_id = 2
ORDER BY dashboard.id DESC ORDER BY dashboard.id DESC

View File

@ -9,10 +9,10 @@ SELECT
dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id,
dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard FROM "grafana"."dashboard" as dashboard
LEFT OUTER JOIN "grafana.dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id
LEFT OUTER JOIN "grafana.user" as created_user ON dashboard.created_by = created_user.id LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" as updated_user ON dashboard.updated_by = updated_user.id LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false WHERE dashboard.is_folder = false
AND dashboard.org_id = 2 AND dashboard.org_id = 2
AND dashboard.id > 22 AND dashboard.id > 22

View File

@ -9,10 +9,10 @@ SELECT
dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id,
dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard FROM "grafana"."dashboard" as dashboard
LEFT OUTER JOIN "grafana.dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id
LEFT OUTER JOIN "grafana.user" as created_user ON dashboard.created_by = created_user.id LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" as updated_user ON dashboard.updated_by = updated_user.id LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false WHERE dashboard.is_folder = false
AND dashboard.org_id = 2 AND dashboard.org_id = 2
AND dashboard.uid = 'UUU' AND dashboard.uid = 'UUU'

View File

@ -9,11 +9,11 @@ SELECT
dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id,
dashboard_version.created, updated_user.uid as updated_by,updated_user.id as created_by_id, dashboard_version.created, updated_user.uid as updated_by,updated_user.id as created_by_id,
dashboard_version.version, dashboard_version.message, dashboard_version.data dashboard_version.version, dashboard_version.message, dashboard_version.data
FROM "grafana.dashboard" as dashboard FROM "grafana"."dashboard" as dashboard
LEFT OUTER JOIN "grafana.dashboard_version" as dashboard_version ON dashboard.id = dashboard_version.dashboard_id LEFT OUTER JOIN "grafana"."dashboard_version" as dashboard_version ON dashboard.id = dashboard_version.dashboard_id
LEFT OUTER JOIN "grafana.dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id
LEFT OUTER JOIN "grafana.user" as created_user ON dashboard.created_by = created_user.id LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" as updated_user ON dashboard.updated_by = updated_user.id LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false WHERE dashboard.is_folder = false
AND dashboard.org_id = 2 AND dashboard.org_id = 2
AND dashboard_version.version = 3 AND dashboard_version.version = 3

View File

@ -9,10 +9,10 @@ SELECT
dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id,
dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard FROM "grafana"."dashboard" as dashboard
LEFT OUTER JOIN "grafana.dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id
LEFT OUTER JOIN "grafana.user" as created_user ON dashboard.created_by = created_user.id LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" as updated_user ON dashboard.updated_by = updated_user.id LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false WHERE dashboard.is_folder = false
AND dashboard.org_id = 2 AND dashboard.org_id = 2
AND dashboard.uid = 'UUU' AND dashboard.uid = 'UUU'

View File

@ -2,9 +2,9 @@ SELECT p.id, p.uid, p.folder_uid,
p.created, created_user.uid as created_by, p.created, created_user.uid as created_by,
p.updated, updated_user.uid as updated_by, p.updated, updated_user.uid as updated_by,
p.name, p.type, p.description, p.model p.name, p.type, p.description, p.model
FROM "grafana.library_element" as p FROM "grafana"."library_element" as p
LEFT OUTER JOIN "grafana.user" AS created_user ON p.created_by = created_user.id LEFT OUTER JOIN "grafana"."user" AS created_user ON p.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" AS updated_user ON p.updated_by = updated_user.id LEFT OUTER JOIN "grafana"."user" AS updated_user ON p.updated_by = updated_user.id
WHERE p.org_id = 1 WHERE p.org_id = 1
AND p.uid = 'xyz' AND p.uid = 'xyz'
ORDER BY p.id DESC ORDER BY p.id DESC

View File

@ -2,9 +2,9 @@ SELECT p.id, p.uid, p.folder_uid,
p.created, created_user.uid as created_by, p.created, created_user.uid as created_by,
p.updated, updated_user.uid as updated_by, p.updated, updated_user.uid as updated_by,
p.name, p.type, p.description, p.model p.name, p.type, p.description, p.model
FROM "grafana.library_element" as p FROM "grafana"."library_element" as p
LEFT OUTER JOIN "grafana.user" AS created_user ON p.created_by = created_user.id LEFT OUTER JOIN "grafana"."user" AS created_user ON p.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" AS updated_user ON p.updated_by = updated_user.id LEFT OUTER JOIN "grafana"."user" AS updated_user ON p.updated_by = updated_user.id
WHERE p.org_id = 1 WHERE p.org_id = 1
ORDER BY p.id DESC ORDER BY p.id DESC
LIMIT 5 LIMIT 5

View File

@ -2,9 +2,9 @@ SELECT p.id, p.uid, p.folder_uid,
p.created, created_user.uid as created_by, p.created, created_user.uid as created_by,
p.updated, updated_user.uid as updated_by, p.updated, updated_user.uid as updated_by,
p.name, p.type, p.description, p.model p.name, p.type, p.description, p.model
FROM "grafana.library_element" as p FROM "grafana"."library_element" as p
LEFT OUTER JOIN "grafana.user" AS created_user ON p.created_by = created_user.id LEFT OUTER JOIN "grafana"."user" AS created_user ON p.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" AS updated_user ON p.updated_by = updated_user.id LEFT OUTER JOIN "grafana"."user" AS updated_user ON p.updated_by = updated_user.id
WHERE p.org_id = 1 WHERE p.org_id = 1
AND p.id > 4 AND p.id > 4
ORDER BY p.id DESC ORDER BY p.id DESC

View File

@ -9,10 +9,10 @@ SELECT
dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id,
dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard FROM "grafana"."dashboard" as dashboard
LEFT OUTER JOIN "grafana.dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id
LEFT OUTER JOIN "grafana.user" as created_user ON dashboard.created_by = created_user.id LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" as updated_user ON dashboard.updated_by = updated_user.id LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false WHERE dashboard.is_folder = false
AND dashboard.org_id = 2 AND dashboard.org_id = 2
ORDER BY dashboard.id DESC ORDER BY dashboard.id DESC

View File

@ -9,10 +9,10 @@ SELECT
dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id,
dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard FROM "grafana"."dashboard" as dashboard
LEFT OUTER JOIN "grafana.dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id
LEFT OUTER JOIN "grafana.user" as created_user ON dashboard.created_by = created_user.id LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" as updated_user ON dashboard.updated_by = updated_user.id LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false WHERE dashboard.is_folder = false
AND dashboard.org_id = 2 AND dashboard.org_id = 2
AND dashboard.id > 22 AND dashboard.id > 22

View File

@ -9,10 +9,10 @@ SELECT
dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id,
dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard FROM "grafana"."dashboard" as dashboard
LEFT OUTER JOIN "grafana.dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id
LEFT OUTER JOIN "grafana.user" as created_user ON dashboard.created_by = created_user.id LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" as updated_user ON dashboard.updated_by = updated_user.id LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false WHERE dashboard.is_folder = false
AND dashboard.org_id = 2 AND dashboard.org_id = 2
AND dashboard.uid = 'UUU' AND dashboard.uid = 'UUU'

View File

@ -9,11 +9,11 @@ SELECT
dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id,
dashboard_version.created, updated_user.uid as updated_by,updated_user.id as created_by_id, dashboard_version.created, updated_user.uid as updated_by,updated_user.id as created_by_id,
dashboard_version.version, dashboard_version.message, dashboard_version.data dashboard_version.version, dashboard_version.message, dashboard_version.data
FROM "grafana.dashboard" as dashboard FROM "grafana"."dashboard" as dashboard
LEFT OUTER JOIN "grafana.dashboard_version" as dashboard_version ON dashboard.id = dashboard_version.dashboard_id LEFT OUTER JOIN "grafana"."dashboard_version" as dashboard_version ON dashboard.id = dashboard_version.dashboard_id
LEFT OUTER JOIN "grafana.dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id
LEFT OUTER JOIN "grafana.user" as created_user ON dashboard.created_by = created_user.id LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" as updated_user ON dashboard.updated_by = updated_user.id LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false WHERE dashboard.is_folder = false
AND dashboard.org_id = 2 AND dashboard.org_id = 2
AND dashboard_version.version = 3 AND dashboard_version.version = 3

View File

@ -9,10 +9,10 @@ SELECT
dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id,
dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard FROM "grafana"."dashboard" as dashboard
LEFT OUTER JOIN "grafana.dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id
LEFT OUTER JOIN "grafana.user" as created_user ON dashboard.created_by = created_user.id LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" as updated_user ON dashboard.updated_by = updated_user.id LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false WHERE dashboard.is_folder = false
AND dashboard.org_id = 2 AND dashboard.org_id = 2
AND dashboard.uid = 'UUU' AND dashboard.uid = 'UUU'

View File

@ -2,9 +2,9 @@ SELECT p.id, p.uid, p.folder_uid,
p.created, created_user.uid as created_by, p.created, created_user.uid as created_by,
p.updated, updated_user.uid as updated_by, p.updated, updated_user.uid as updated_by,
p.name, p.type, p.description, p.model p.name, p.type, p.description, p.model
FROM "grafana.library_element" as p FROM "grafana"."library_element" as p
LEFT OUTER JOIN "grafana.user" AS created_user ON p.created_by = created_user.id LEFT OUTER JOIN "grafana"."user" AS created_user ON p.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" AS updated_user ON p.updated_by = updated_user.id LEFT OUTER JOIN "grafana"."user" AS updated_user ON p.updated_by = updated_user.id
WHERE p.org_id = 1 WHERE p.org_id = 1
AND p.uid = 'xyz' AND p.uid = 'xyz'
ORDER BY p.id DESC ORDER BY p.id DESC

View File

@ -2,9 +2,9 @@ SELECT p.id, p.uid, p.folder_uid,
p.created, created_user.uid as created_by, p.created, created_user.uid as created_by,
p.updated, updated_user.uid as updated_by, p.updated, updated_user.uid as updated_by,
p.name, p.type, p.description, p.model p.name, p.type, p.description, p.model
FROM "grafana.library_element" as p FROM "grafana"."library_element" as p
LEFT OUTER JOIN "grafana.user" AS created_user ON p.created_by = created_user.id LEFT OUTER JOIN "grafana"."user" AS created_user ON p.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" AS updated_user ON p.updated_by = updated_user.id LEFT OUTER JOIN "grafana"."user" AS updated_user ON p.updated_by = updated_user.id
WHERE p.org_id = 1 WHERE p.org_id = 1
ORDER BY p.id DESC ORDER BY p.id DESC
LIMIT 5 LIMIT 5

View File

@ -2,9 +2,9 @@ SELECT p.id, p.uid, p.folder_uid,
p.created, created_user.uid as created_by, p.created, created_user.uid as created_by,
p.updated, updated_user.uid as updated_by, p.updated, updated_user.uid as updated_by,
p.name, p.type, p.description, p.model p.name, p.type, p.description, p.model
FROM "grafana.library_element" as p FROM "grafana"."library_element" as p
LEFT OUTER JOIN "grafana.user" AS created_user ON p.created_by = created_user.id LEFT OUTER JOIN "grafana"."user" AS created_user ON p.created_by = created_user.id
LEFT OUTER JOIN "grafana.user" AS updated_user ON p.updated_by = updated_user.id LEFT OUTER JOIN "grafana"."user" AS updated_user ON p.updated_by = updated_user.id
WHERE p.org_id = 1 WHERE p.org_id = 1
AND p.id > 4 AND p.id > 4
ORDER BY p.id DESC ORDER BY p.id DESC

View File

@ -9,7 +9,7 @@ import (
"github.com/grafana/grafana/pkg/storage/unified/sql/sqltemplate/mocks" "github.com/grafana/grafana/pkg/storage/unified/sql/sqltemplate/mocks"
) )
func TestQueries(t *testing.T) { func TestIdentityQueries(t *testing.T) {
// prefix tables with grafana // prefix tables with grafana
nodb := &legacysql.LegacyDatabaseHelper{ nodb := &legacysql.LegacyDatabaseHelper{
Table: func(n string) string { Table: func(n string) string {

View File

@ -1,6 +1,6 @@
SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name, SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name,
u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin
FROM "grafana.user" as u JOIN "grafana.org_user" as o ON u.id = o.user_id FROM `grafana`.`user` as u JOIN `grafana`.`org_user` as o ON u.id = o.user_id
WHERE o.org_id = 2 AND ( 1=2 WHERE o.org_id = 2 AND ( 1=2
OR u.id IN (1, 2) OR u.id IN (1, 2)
) )

View File

@ -1,6 +1,6 @@
SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name, SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name,
u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin
FROM "grafana.user" as u JOIN "grafana.org_user" as o ON u.id = o.user_id FROM `grafana`.`user` as u JOIN `grafana`.`org_user` as o ON u.id = o.user_id
WHERE o.org_id = 2 AND ( 1=2 WHERE o.org_id = 2 AND ( 1=2
OR uid IN ('a', 'b') OR uid IN ('a', 'b')
OR u.id IN (1, 2) OR u.id IN (1, 2)

View File

@ -1,6 +1,6 @@
SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name, SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name,
u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin
FROM "grafana.user" as u JOIN "grafana.org_user" as o ON u.id = o.user_id FROM `grafana`.`user` as u JOIN `grafana`.`org_user` as o ON u.id = o.user_id
WHERE o.org_id = 2 AND ( 1=2 WHERE o.org_id = 2 AND ( 1=2
OR uid IN ('a', 'b') OR uid IN ('a', 'b')
) )

View File

@ -1,6 +1,6 @@
SELECT tm.id as id, t.uid as team_uid, t.id as team_id, u.uid as user_uid, tm.created, tm.updated, tm.permission FROM "grafana.team_member" tm SELECT tm.id as id, t.uid as team_uid, t.id as team_id, u.uid as user_uid, tm.created, tm.updated, tm.permission FROM `grafana`.`team_member` tm
INNER JOIN "grafana.team" t ON tm.team_id = t.id INNER JOIN `grafana`.`team` t ON tm.team_id = t.id
INNER JOIN "grafana.user" u ON tm.user_id = u.id INNER JOIN `grafana`.`user` u ON tm.user_id = u.id
WHERE WHERE
t.uid = 'team-1' t.uid = 'team-1'
AND tm.org_id = 1 AND tm.org_id = 1

View File

@ -1,10 +1,10 @@
SELECT tm.id as id, t.uid as team_uid, t.id as team_id, u.uid as user_uid, tm.created, tm.updated, tm.permission FROM "grafana.team_member" tm SELECT tm.id as id, t.uid as team_uid, t.id as team_id, u.uid as user_uid, tm.created, tm.updated, tm.permission FROM `grafana`.`team_member` tm
INNER JOIN "grafana.team" t ON tm.team_id = t.id INNER JOIN `grafana`.`team` t ON tm.team_id = t.id
INNER JOIN "grafana.user" u ON tm.user_id = u.id INNER JOIN `grafana`.`user` u ON tm.user_id = u.id
WHERE WHERE
t.uid IN( t.uid IN(
SELECT uid SELECT uid
FROM "grafana.team" t FROM `grafana`.`team` t
ORDER BY t.id ASC LIMIT 5 ORDER BY t.id ASC LIMIT 5
) )
AND tm.org_id = 1 AND tm.org_id = 1

View File

@ -1,10 +1,10 @@
SELECT tm.id as id, t.uid as team_uid, t.id as team_id, u.uid as user_uid, tm.created, tm.updated, tm.permission FROM "grafana.team_member" tm SELECT tm.id as id, t.uid as team_uid, t.id as team_id, u.uid as user_uid, tm.created, tm.updated, tm.permission FROM `grafana`.`team_member` tm
INNER JOIN "grafana.team" t ON tm.team_id = t.id INNER JOIN `grafana`.`team` t ON tm.team_id = t.id
INNER JOIN "grafana.user" u ON tm.user_id = u.id INNER JOIN `grafana`.`user` u ON tm.user_id = u.id
WHERE WHERE
t.uid IN( t.uid IN(
SELECT uid SELECT uid
FROM "grafana.team" t FROM `grafana`.`team` t
WHERE t.id >= 5 WHERE t.id >= 5
ORDER BY t.id ASC LIMIT 5 ORDER BY t.id ASC LIMIT 5
) )

View File

@ -1,5 +1,5 @@
SELECT id, uid, name, email, created, updated SELECT id, uid, name, email, created, updated
FROM "grafana.team" FROM `grafana`.`team`
WHERE org_id = 0 WHERE org_id = 0
ORDER BY id asc ORDER BY id asc
LIMIT 5 LIMIT 5

View File

@ -1,5 +1,5 @@
SELECT id, uid, name, email, created, updated SELECT id, uid, name, email, created, updated
FROM "grafana.team" FROM `grafana`.`team`
WHERE org_id = 0 WHERE org_id = 0
AND id > 1 AND id > 1
ORDER BY id asc ORDER BY id asc

View File

@ -1,5 +1,5 @@
SELECT id, uid, name, email, created, updated SELECT id, uid, name, email, created, updated
FROM "grafana.team" FROM `grafana`.`team`
WHERE org_id = 0 WHERE org_id = 0
AND uid = 'abc' AND uid = 'abc'
ORDER BY id asc ORDER BY id asc

View File

@ -1,6 +1,6 @@
SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name, SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name,
u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin
FROM "grafana.user" as u JOIN "grafana.org_user" as o ON u.id = o.user_id FROM `grafana`.`user` as u JOIN `grafana`.`org_user` as o ON u.id = o.user_id
WHERE o.org_id = 0 WHERE o.org_id = 0
AND u.is_service_account = FALSE AND u.is_service_account = FALSE
ORDER BY u.id asc ORDER BY u.id asc

View File

@ -1,6 +1,6 @@
SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name, SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name,
u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin
FROM "grafana.user" as u JOIN "grafana.org_user" as o ON u.id = o.user_id FROM `grafana`.`user` as u JOIN `grafana`.`org_user` as o ON u.id = o.user_id
WHERE o.org_id = 0 WHERE o.org_id = 0
AND u.is_service_account = FALSE AND u.is_service_account = FALSE
AND id > 1 AND id > 1

View File

@ -1,6 +1,6 @@
SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name, SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name,
u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin
FROM "grafana.user" as u JOIN "grafana.org_user" as o ON u.id = o.user_id FROM `grafana`.`user` as u JOIN `grafana`.`org_user` as o ON u.id = o.user_id
WHERE o.org_id = 0 WHERE o.org_id = 0
AND u.is_service_account = FALSE AND u.is_service_account = FALSE
AND uid = 'abc' AND uid = 'abc'

View File

@ -1,6 +1,6 @@
SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name, SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name,
u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin
FROM "grafana.user" as u JOIN "grafana.org_user" as o ON u.id = o.user_id FROM "grafana"."user" as u JOIN "grafana"."org_user" as o ON u.id = o.user_id
WHERE o.org_id = 2 AND ( 1=2 WHERE o.org_id = 2 AND ( 1=2
OR u.id IN (1, 2) OR u.id IN (1, 2)
) )

View File

@ -1,6 +1,6 @@
SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name, SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name,
u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin
FROM "grafana.user" as u JOIN "grafana.org_user" as o ON u.id = o.user_id FROM "grafana"."user" as u JOIN "grafana"."org_user" as o ON u.id = o.user_id
WHERE o.org_id = 2 AND ( 1=2 WHERE o.org_id = 2 AND ( 1=2
OR uid IN ('a', 'b') OR uid IN ('a', 'b')
OR u.id IN (1, 2) OR u.id IN (1, 2)

View File

@ -1,6 +1,6 @@
SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name, SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name,
u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin
FROM "grafana.user" as u JOIN "grafana.org_user" as o ON u.id = o.user_id FROM "grafana"."user" as u JOIN "grafana"."org_user" as o ON u.id = o.user_id
WHERE o.org_id = 2 AND ( 1=2 WHERE o.org_id = 2 AND ( 1=2
OR uid IN ('a', 'b') OR uid IN ('a', 'b')
) )

View File

@ -1,6 +1,6 @@
SELECT tm.id as id, t.uid as team_uid, t.id as team_id, u.uid as user_uid, tm.created, tm.updated, tm.permission FROM "grafana.team_member" tm SELECT tm.id as id, t.uid as team_uid, t.id as team_id, u.uid as user_uid, tm.created, tm.updated, tm.permission FROM "grafana"."team_member" tm
INNER JOIN "grafana.team" t ON tm.team_id = t.id INNER JOIN "grafana"."team" t ON tm.team_id = t.id
INNER JOIN "grafana.user" u ON tm.user_id = u.id INNER JOIN "grafana"."user" u ON tm.user_id = u.id
WHERE WHERE
t.uid = 'team-1' t.uid = 'team-1'
AND tm.org_id = 1 AND tm.org_id = 1

View File

@ -1,10 +1,10 @@
SELECT tm.id as id, t.uid as team_uid, t.id as team_id, u.uid as user_uid, tm.created, tm.updated, tm.permission FROM "grafana.team_member" tm SELECT tm.id as id, t.uid as team_uid, t.id as team_id, u.uid as user_uid, tm.created, tm.updated, tm.permission FROM "grafana"."team_member" tm
INNER JOIN "grafana.team" t ON tm.team_id = t.id INNER JOIN "grafana"."team" t ON tm.team_id = t.id
INNER JOIN "grafana.user" u ON tm.user_id = u.id INNER JOIN "grafana"."user" u ON tm.user_id = u.id
WHERE WHERE
t.uid IN( t.uid IN(
SELECT uid SELECT uid
FROM "grafana.team" t FROM "grafana"."team" t
ORDER BY t.id ASC LIMIT 5 ORDER BY t.id ASC LIMIT 5
) )
AND tm.org_id = 1 AND tm.org_id = 1

View File

@ -1,10 +1,10 @@
SELECT tm.id as id, t.uid as team_uid, t.id as team_id, u.uid as user_uid, tm.created, tm.updated, tm.permission FROM "grafana.team_member" tm SELECT tm.id as id, t.uid as team_uid, t.id as team_id, u.uid as user_uid, tm.created, tm.updated, tm.permission FROM "grafana"."team_member" tm
INNER JOIN "grafana.team" t ON tm.team_id = t.id INNER JOIN "grafana"."team" t ON tm.team_id = t.id
INNER JOIN "grafana.user" u ON tm.user_id = u.id INNER JOIN "grafana"."user" u ON tm.user_id = u.id
WHERE WHERE
t.uid IN( t.uid IN(
SELECT uid SELECT uid
FROM "grafana.team" t FROM "grafana"."team" t
WHERE t.id >= 5 WHERE t.id >= 5
ORDER BY t.id ASC LIMIT 5 ORDER BY t.id ASC LIMIT 5
) )

View File

@ -1,5 +1,5 @@
SELECT id, uid, name, email, created, updated SELECT id, uid, name, email, created, updated
FROM "grafana.team" FROM "grafana"."team"
WHERE org_id = 0 WHERE org_id = 0
ORDER BY id asc ORDER BY id asc
LIMIT 5 LIMIT 5

View File

@ -1,5 +1,5 @@
SELECT id, uid, name, email, created, updated SELECT id, uid, name, email, created, updated
FROM "grafana.team" FROM "grafana"."team"
WHERE org_id = 0 WHERE org_id = 0
AND id > 1 AND id > 1
ORDER BY id asc ORDER BY id asc

View File

@ -1,5 +1,5 @@
SELECT id, uid, name, email, created, updated SELECT id, uid, name, email, created, updated
FROM "grafana.team" FROM "grafana"."team"
WHERE org_id = 0 WHERE org_id = 0
AND uid = 'abc' AND uid = 'abc'
ORDER BY id asc ORDER BY id asc

View File

@ -1,6 +1,6 @@
SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name, SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name,
u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin
FROM "grafana.user" as u JOIN "grafana.org_user" as o ON u.id = o.user_id FROM "grafana"."user" as u JOIN "grafana"."org_user" as o ON u.id = o.user_id
WHERE o.org_id = 0 WHERE o.org_id = 0
AND u.is_service_account = FALSE AND u.is_service_account = FALSE
ORDER BY u.id asc ORDER BY u.id asc

View File

@ -1,6 +1,6 @@
SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name, SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name,
u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin
FROM "grafana.user" as u JOIN "grafana.org_user" as o ON u.id = o.user_id FROM "grafana"."user" as u JOIN "grafana"."org_user" as o ON u.id = o.user_id
WHERE o.org_id = 0 WHERE o.org_id = 0
AND u.is_service_account = FALSE AND u.is_service_account = FALSE
AND id > 1 AND id > 1

View File

@ -1,6 +1,6 @@
SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name, SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name,
u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin
FROM "grafana.user" as u JOIN "grafana.org_user" as o ON u.id = o.user_id FROM "grafana"."user" as u JOIN "grafana"."org_user" as o ON u.id = o.user_id
WHERE o.org_id = 0 WHERE o.org_id = 0
AND u.is_service_account = FALSE AND u.is_service_account = FALSE
AND uid = 'abc' AND uid = 'abc'

View File

@ -1,6 +1,6 @@
SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name, SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name,
u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin
FROM "grafana.user" as u JOIN "grafana.org_user" as o ON u.id = o.user_id FROM "grafana"."user" as u JOIN "grafana"."org_user" as o ON u.id = o.user_id
WHERE o.org_id = 2 AND ( 1=2 WHERE o.org_id = 2 AND ( 1=2
OR u.id IN (1, 2) OR u.id IN (1, 2)
) )

View File

@ -1,6 +1,6 @@
SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name, SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name,
u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin
FROM "grafana.user" as u JOIN "grafana.org_user" as o ON u.id = o.user_id FROM "grafana"."user" as u JOIN "grafana"."org_user" as o ON u.id = o.user_id
WHERE o.org_id = 2 AND ( 1=2 WHERE o.org_id = 2 AND ( 1=2
OR uid IN ('a', 'b') OR uid IN ('a', 'b')
OR u.id IN (1, 2) OR u.id IN (1, 2)

View File

@ -1,6 +1,6 @@
SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name, SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name,
u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin
FROM "grafana.user" as u JOIN "grafana.org_user" as o ON u.id = o.user_id FROM "grafana"."user" as u JOIN "grafana"."org_user" as o ON u.id = o.user_id
WHERE o.org_id = 2 AND ( 1=2 WHERE o.org_id = 2 AND ( 1=2
OR uid IN ('a', 'b') OR uid IN ('a', 'b')
) )

View File

@ -1,6 +1,6 @@
SELECT tm.id as id, t.uid as team_uid, t.id as team_id, u.uid as user_uid, tm.created, tm.updated, tm.permission FROM "grafana.team_member" tm SELECT tm.id as id, t.uid as team_uid, t.id as team_id, u.uid as user_uid, tm.created, tm.updated, tm.permission FROM "grafana"."team_member" tm
INNER JOIN "grafana.team" t ON tm.team_id = t.id INNER JOIN "grafana"."team" t ON tm.team_id = t.id
INNER JOIN "grafana.user" u ON tm.user_id = u.id INNER JOIN "grafana"."user" u ON tm.user_id = u.id
WHERE WHERE
t.uid = 'team-1' t.uid = 'team-1'
AND tm.org_id = 1 AND tm.org_id = 1

View File

@ -1,10 +1,10 @@
SELECT tm.id as id, t.uid as team_uid, t.id as team_id, u.uid as user_uid, tm.created, tm.updated, tm.permission FROM "grafana.team_member" tm SELECT tm.id as id, t.uid as team_uid, t.id as team_id, u.uid as user_uid, tm.created, tm.updated, tm.permission FROM "grafana"."team_member" tm
INNER JOIN "grafana.team" t ON tm.team_id = t.id INNER JOIN "grafana"."team" t ON tm.team_id = t.id
INNER JOIN "grafana.user" u ON tm.user_id = u.id INNER JOIN "grafana"."user" u ON tm.user_id = u.id
WHERE WHERE
t.uid IN( t.uid IN(
SELECT uid SELECT uid
FROM "grafana.team" t FROM "grafana"."team" t
ORDER BY t.id ASC LIMIT 5 ORDER BY t.id ASC LIMIT 5
) )
AND tm.org_id = 1 AND tm.org_id = 1

View File

@ -1,10 +1,10 @@
SELECT tm.id as id, t.uid as team_uid, t.id as team_id, u.uid as user_uid, tm.created, tm.updated, tm.permission FROM "grafana.team_member" tm SELECT tm.id as id, t.uid as team_uid, t.id as team_id, u.uid as user_uid, tm.created, tm.updated, tm.permission FROM "grafana"."team_member" tm
INNER JOIN "grafana.team" t ON tm.team_id = t.id INNER JOIN "grafana"."team" t ON tm.team_id = t.id
INNER JOIN "grafana.user" u ON tm.user_id = u.id INNER JOIN "grafana"."user" u ON tm.user_id = u.id
WHERE WHERE
t.uid IN( t.uid IN(
SELECT uid SELECT uid
FROM "grafana.team" t FROM "grafana"."team" t
WHERE t.id >= 5 WHERE t.id >= 5
ORDER BY t.id ASC LIMIT 5 ORDER BY t.id ASC LIMIT 5
) )

View File

@ -1,5 +1,5 @@
SELECT id, uid, name, email, created, updated SELECT id, uid, name, email, created, updated
FROM "grafana.team" FROM "grafana"."team"
WHERE org_id = 0 WHERE org_id = 0
ORDER BY id asc ORDER BY id asc
LIMIT 5 LIMIT 5

View File

@ -1,5 +1,5 @@
SELECT id, uid, name, email, created, updated SELECT id, uid, name, email, created, updated
FROM "grafana.team" FROM "grafana"."team"
WHERE org_id = 0 WHERE org_id = 0
AND id > 1 AND id > 1
ORDER BY id asc ORDER BY id asc

View File

@ -1,5 +1,5 @@
SELECT id, uid, name, email, created, updated SELECT id, uid, name, email, created, updated
FROM "grafana.team" FROM "grafana"."team"
WHERE org_id = 0 WHERE org_id = 0
AND uid = 'abc' AND uid = 'abc'
ORDER BY id asc ORDER BY id asc

View File

@ -1,6 +1,6 @@
SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name, SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name,
u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin
FROM "grafana.user" as u JOIN "grafana.org_user" as o ON u.id = o.user_id FROM "grafana"."user" as u JOIN "grafana"."org_user" as o ON u.id = o.user_id
WHERE o.org_id = 0 WHERE o.org_id = 0
AND u.is_service_account = FALSE AND u.is_service_account = FALSE
ORDER BY u.id asc ORDER BY u.id asc

View File

@ -1,6 +1,6 @@
SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name, SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name,
u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin
FROM "grafana.user" as u JOIN "grafana.org_user" as o ON u.id = o.user_id FROM "grafana"."user" as u JOIN "grafana"."org_user" as o ON u.id = o.user_id
WHERE o.org_id = 0 WHERE o.org_id = 0
AND u.is_service_account = FALSE AND u.is_service_account = FALSE
AND id > 1 AND id > 1

View File

@ -1,6 +1,6 @@
SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name, SELECT o.org_id, u.id, u.uid, u.login, u.email, u.name,
u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin u.created, u.updated, u.is_service_account, u.is_disabled, u.is_admin
FROM "grafana.user" as u JOIN "grafana.org_user" as o ON u.id = o.user_id FROM "grafana"."user" as u JOIN "grafana"."org_user" as o ON u.id = o.user_id
WHERE o.org_id = 0 WHERE o.org_id = 0
AND u.is_service_account = FALSE AND u.is_service_account = FALSE
AND uid = 'abc' AND uid = 'abc'

View File

@ -8,7 +8,7 @@ import (
"github.com/grafana/grafana/pkg/storage/unified/sql/sqltemplate/mocks" "github.com/grafana/grafana/pkg/storage/unified/sql/sqltemplate/mocks"
) )
func TestQueries(t *testing.T) { func TestUnifiedStorageQueries(t *testing.T) {
mocks.CheckQuerySnapshots(t, mocks.TemplateTestSetup{ mocks.CheckQuerySnapshots(t, mocks.TemplateTestSetup{
RootDir: "testdata", RootDir: "testdata",
Templates: map[*template.Template][]mocks.TemplateTestCase{ Templates: map[*template.Template][]mocks.TemplateTestCase{

View File

@ -1,6 +1,7 @@
package sqltemplate package sqltemplate
import ( import (
"bytes"
"errors" "errors"
"strconv" "strconv"
"strings" "strings"
@ -9,6 +10,7 @@ import (
// Dialect-agnostic errors. // Dialect-agnostic errors.
var ( var (
ErrEmptyIdent = errors.New("empty identifier") ErrEmptyIdent = errors.New("empty identifier")
ErrInvalidIdentInput = errors.New("identifier contains invalid characters")
ErrInvalidRowLockingClause = errors.New("invalid row-locking clause") ErrInvalidRowLockingClause = errors.New("invalid row-locking clause")
) )
@ -40,7 +42,8 @@ type Dialect interface {
// Ident returns the given string quoted in a way that is suitable to be // Ident returns the given string quoted in a way that is suitable to be
// used as an identifier. Database names, schema names, table names, column // used as an identifier. Database names, schema names, table names, column
// names are all examples of identifiers. // names are all examples of identifiers. When the value includes a "."
// each part side of the separator will be escaped: (eg: `db`.`table`)
Ident(string) (string, error) Ident(string) (string, error)
// ArgPlaceholder returns a safe argument suitable to be used in a SQL // ArgPlaceholder returns a safe argument suitable to be used in a SQL
@ -126,11 +129,34 @@ var rowLockingClauseAll = rowLockingClauseMap{
// standardIdent provides standard SQL escaping of identifiers. // standardIdent provides standard SQL escaping of identifiers.
type standardIdent struct{} type standardIdent struct{}
func (standardIdent) Ident(s string) (string, error) { func escapeIdentity(s string, quote rune, clean func(string) string) (string, error) {
if s == "" { if s == "" {
return "", ErrEmptyIdent return "", ErrEmptyIdent
} }
return `"` + strings.ReplaceAll(s, `"`, `""`) + `"`, nil var buffer bytes.Buffer
for i, part := range strings.Split(s, ".") {
// We may want to check that the identifier is simple alphanumeric
// var alphanumeric = regexp.MustCompile("^[a-zA-Z0-9_]*$")
if i > 1 {
return "", ErrInvalidIdentInput
}
if i > 0 {
_, _ = buffer.WriteRune('.')
}
_, _ = buffer.WriteRune(quote)
_, _ = buffer.WriteString(clean(part))
_, _ = buffer.WriteRune(quote)
}
return buffer.String(), nil
}
func (standardIdent) Ident(s string) (string, error) {
return escapeIdentity(s, '"', func(s string) string {
// not sure we should support escaping quotes in table/column names,
// but it is valid so we will support it for now
return strings.ReplaceAll(s, `"`, `""`)
})
} }
type argPlaceholderFunc func(int) string type argPlaceholderFunc func(int) string

View File

@ -1,10 +1,11 @@
package sqltemplate package sqltemplate
// MySQL is the default implementation of Dialect for the MySQL DMBS, currently import (
// supporting MySQL-8.x. It relies on having ANSI_QUOTES SQL Mode enabled. For "strings"
// more information about ANSI_QUOTES and SQL Modes see: )
//
// https://dev.mysql.com/doc/refman/8.4/en/sql-mode.html#sqlmode_ansi_quotes // MySQL is the default implementation of Dialect for the MySQL DMBS,
// currently supporting MySQL-8.x.
var MySQL = mysql{ var MySQL = mysql{
rowLockingClauseMap: rowLockingClauseAll, rowLockingClauseMap: rowLockingClauseAll,
argPlaceholderFunc: argFmtSQL92, argPlaceholderFunc: argFmtSQL92,
@ -20,19 +21,15 @@ type mysql struct {
name name
} }
// standardIdent provides standard SQL escaping of identifiers. // MySQL always supports backticks for identifiers
// https://dev.mysql.com/doc/refman/8.4/en/identifiers.html
type backtickIdent struct{} type backtickIdent struct{}
var standardFallback = standardIdent{}
func (backtickIdent) Ident(s string) (string, error) { func (backtickIdent) Ident(s string) (string, error) {
switch s { if strings.ContainsRune(s, '`') {
// Internal identifiers require backticks to work properly return "", ErrInvalidIdentInput
case "user":
return "`" + s + "`", nil
case "":
return "", ErrEmptyIdent
} }
// standard return escapeIdentity(s, '`', func(s string) string {
return standardFallback.Ident(s) return s
})
} }

View File

@ -152,5 +152,5 @@ func Example() {
fmt.Println(query) fmt.Println(query)
// Output: // Output:
// SELECT "id", "type", "name" FROM "users" WHERE "id" = ?; // SELECT `id`, `type`, `name` FROM `users` WHERE `id` = ?;
} }

View File

@ -1,7 +1,7 @@
DELETE FROM "resource" DELETE FROM `resource`
WHERE 1 = 1 WHERE 1 = 1
AND "namespace" = 'nn' AND `namespace` = 'nn'
AND "group" = 'gg' AND `group` = 'gg'
AND "resource" = 'rr' AND `resource` = 'rr'
AND "name" = 'name' AND `name` = 'name'
; ;

View File

@ -1,12 +1,12 @@
INSERT INTO "resource_history" INSERT INTO `resource_history`
( (
"guid", `guid`,
"group", `group`,
"resource", `resource`,
"namespace", `namespace`,
"name", `name`,
"value", `value`,
"action" `action`
) )
VALUES ( VALUES (
'', '',

View File

@ -1,25 +1,25 @@
SELECT SELECT
kv."resource_version", kv.`resource_version`,
kv."namespace", kv.`namespace`,
kv."name", kv.`name`,
kv."value" kv.`value`
FROM "resource_history" as kv FROM `resource_history` as kv
INNER JOIN ( INNER JOIN (
SELECT "namespace", "group", "resource", "name", max("resource_version") AS "resource_version" SELECT `namespace`, `group`, `resource`, `name`, max(`resource_version`) AS `resource_version`
FROM "resource_history" AS mkv FROM `resource_history` AS mkv
WHERE 1 = 1 WHERE 1 = 1
AND "resource_version" <= 0 AND `resource_version` <= 0
AND "namespace" = 'ns' AND `namespace` = 'ns'
GROUP BY mkv."namespace", mkv."group", mkv."resource", mkv."name" GROUP BY mkv.`namespace`, mkv.`group`, mkv.`resource`, mkv.`name`
) AS maxkv ) AS maxkv
ON ON
maxkv."resource_version" = kv."resource_version" maxkv.`resource_version` = kv.`resource_version`
AND maxkv."namespace" = kv."namespace" AND maxkv.`namespace` = kv.`namespace`
AND maxkv."group" = kv."group" AND maxkv.`group` = kv.`group`
AND maxkv."resource" = kv."resource" AND maxkv.`resource` = kv.`resource`
AND maxkv."name" = kv."name" AND maxkv.`name` = kv.`name`
WHERE kv."action" != 3 WHERE kv.`action` != 3
AND kv."namespace" = 'ns' AND kv.`namespace` = 'ns'
ORDER BY kv."namespace" ASC, kv."name" ASC ORDER BY kv.`namespace` ASC, kv.`name` ASC
LIMIT 10 OFFSET 0 LIMIT 10 OFFSET 0
; ;

View File

@ -1,13 +1,13 @@
SELECT SELECT
"resource_version", `resource_version`,
"value" `value`
FROM "resource_history" FROM `resource_history`
WHERE 1 = 1 WHERE 1 = 1
AND "namespace" = '' AND `namespace` = ''
AND "group" = '' AND `group` = ''
AND "resource" = '' AND `resource` = ''
AND "name" = '' AND `name` = ''
AND "resource_version" <= 123 AND `resource_version` <= 123
ORDER BY "resource_version" DESC ORDER BY `resource_version` DESC
LIMIT 1 LIMIT 1
; ;

View File

@ -1,4 +1,4 @@
UPDATE "resource_history" UPDATE `resource_history`
SET "resource_version" = 0 SET `resource_version` = 0
WHERE "guid" = '' WHERE `guid` = ''
; ;

View File

@ -1,12 +1,12 @@
INSERT INTO "resource" INSERT INTO `resource`
( (
"guid", `guid`,
"group", `group`,
"resource", `resource`,
"namespace", `namespace`,
"name", `name`,
"value", `value`,
"action" `action`
) )
VALUES ( VALUES (
'', '',

View File

@ -1,10 +1,10 @@
SELECT SELECT
"resource_version", `resource_version`,
"namespace", `namespace`,
"name", `name`,
"value" `value`
FROM "resource" FROM `resource`
WHERE 1 = 1 WHERE 1 = 1
AND "namespace" = 'ns' AND `namespace` = 'ns'
ORDER BY "namespace" ASC, "name" ASC ORDER BY `namespace` ASC, `name` ASC
; ;

View File

@ -1,10 +1,10 @@
SELECT SELECT
"resource_version", `resource_version`,
"value" `value`
FROM "resource" FROM `resource`
WHERE 1 = 1 WHERE 1 = 1
AND "namespace" = '' AND `namespace` = ''
AND "group" = '' AND `group` = ''
AND "resource" = '' AND `resource` = ''
AND "name" = '' AND `name` = ''
; ;

View File

@ -1,11 +1,11 @@
UPDATE "resource" UPDATE `resource`
SET SET
"guid" = '', `guid` = '',
"value" = '[]', `value` = '[]',
"action" = 'UNKNOWN' `action` = 'UNKNOWN'
WHERE 1 = 1 WHERE 1 = 1
AND "group" = '' AND `group` = ''
AND "resource" = '' AND `resource` = ''
AND "namespace" = '' AND `namespace` = ''
AND "name" = '' AND `name` = ''
; ;

View File

@ -1,4 +1,4 @@
UPDATE "resource" UPDATE `resource`
SET "resource_version" = 0 SET `resource_version` = 0
WHERE "guid" = '' WHERE `guid` = ''
; ;

View File

@ -1,8 +1,8 @@
SELECT SELECT
"resource_version" `resource_version`
FROM "resource_version" FROM `resource_version`
WHERE 1 = 1 WHERE 1 = 1
AND "group" = '' AND `group` = ''
AND "resource" = '' AND `resource` = ''
FOR UPDATE FOR UPDATE
; ;

View File

@ -1,7 +1,7 @@
UPDATE "resource_version" UPDATE `resource_version`
SET SET
"resource_version" = 123 `resource_version` = 123
WHERE 1 = 1 WHERE 1 = 1
AND "group" = '' AND `group` = ''
AND "resource" = '' AND `resource` = ''
; ;

View File

@ -1,8 +1,8 @@
INSERT INTO "resource_version" INSERT INTO `resource_version`
( (
"group", `group`,
"resource", `resource`,
"resource_version" `resource_version`
) )
VALUES ( VALUES (
'', '',