mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
SQLTemplate: Make Ident only work for identifiers (not any string) (#92387)
This commit is contained in:
parent
437747f250
commit
5a30e12a10
@ -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 {
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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'
|
||||||
|
@ -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
|
||||||
|
@ -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'
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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'
|
||||||
|
@ -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
|
||||||
|
@ -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'
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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'
|
||||||
|
@ -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
|
||||||
|
@ -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'
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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 {
|
||||||
|
@ -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)
|
||||||
)
|
)
|
||||||
|
@ -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)
|
||||||
|
@ -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')
|
||||||
)
|
)
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
)
|
)
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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'
|
||||||
|
@ -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)
|
||||||
)
|
)
|
||||||
|
@ -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)
|
||||||
|
@ -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')
|
||||||
)
|
)
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
)
|
)
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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'
|
||||||
|
@ -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)
|
||||||
)
|
)
|
||||||
|
@ -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)
|
||||||
|
@ -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')
|
||||||
)
|
)
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
)
|
)
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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'
|
||||||
|
@ -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{
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
@ -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` = ?;
|
||||||
}
|
}
|
||||||
|
@ -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'
|
||||||
;
|
;
|
||||||
|
@ -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 (
|
||||||
'',
|
'',
|
||||||
|
@ -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
|
||||||
;
|
;
|
||||||
|
@ -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
|
||||||
;
|
;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
UPDATE "resource_history"
|
UPDATE `resource_history`
|
||||||
SET "resource_version" = 0
|
SET `resource_version` = 0
|
||||||
WHERE "guid" = ''
|
WHERE `guid` = ''
|
||||||
;
|
;
|
||||||
|
@ -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 (
|
||||||
'',
|
'',
|
||||||
|
@ -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
|
||||||
;
|
;
|
||||||
|
@ -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` = ''
|
||||||
;
|
;
|
||||||
|
@ -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` = ''
|
||||||
;
|
;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
UPDATE "resource"
|
UPDATE `resource`
|
||||||
SET "resource_version" = 0
|
SET `resource_version` = 0
|
||||||
WHERE "guid" = ''
|
WHERE `guid` = ''
|
||||||
;
|
;
|
||||||
|
@ -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
|
||||||
;
|
;
|
||||||
|
@ -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` = ''
|
||||||
;
|
;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
INSERT INTO "resource_version"
|
INSERT INTO `resource_version`
|
||||||
(
|
(
|
||||||
"group",
|
`group`,
|
||||||
"resource",
|
`resource`,
|
||||||
"resource_version"
|
`resource_version`
|
||||||
)
|
)
|
||||||
VALUES (
|
VALUES (
|
||||||
'',
|
'',
|
||||||
|
Loading…
Reference in New Issue
Block a user