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

pull/92470/head
Ryan McKinley 9 months ago committed by GitHub
parent 437747f250
commit 5a30e12a10
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      pkg/registry/apis/dashboard/legacy/queries_test.go
  2. 8
      pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-dashboard.sql
  3. 8
      pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-dashboard_next_page.sql
  4. 8
      pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-history_uid.sql
  5. 10
      pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-history_uid_at_version.sql
  6. 8
      pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-history_uid_second_page.sql
  7. 6
      pkg/registry/apis/dashboard/legacy/testdata/mysql--query_panels-get_uid.sql
  8. 6
      pkg/registry/apis/dashboard/legacy/testdata/mysql--query_panels-list.sql
  9. 6
      pkg/registry/apis/dashboard/legacy/testdata/mysql--query_panels-list_page_two.sql
  10. 8
      pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-dashboard.sql
  11. 8
      pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-dashboard_next_page.sql
  12. 8
      pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-history_uid.sql
  13. 10
      pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-history_uid_at_version.sql
  14. 8
      pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-history_uid_second_page.sql
  15. 6
      pkg/registry/apis/dashboard/legacy/testdata/postgres--query_panels-get_uid.sql
  16. 6
      pkg/registry/apis/dashboard/legacy/testdata/postgres--query_panels-list.sql
  17. 6
      pkg/registry/apis/dashboard/legacy/testdata/postgres--query_panels-list_page_two.sql
  18. 8
      pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-dashboard.sql
  19. 8
      pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-dashboard_next_page.sql
  20. 8
      pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-history_uid.sql
  21. 10
      pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-history_uid_at_version.sql
  22. 8
      pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-history_uid_second_page.sql
  23. 6
      pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_panels-get_uid.sql
  24. 6
      pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_panels-list.sql
  25. 6
      pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_panels-list_page_two.sql
  26. 2
      pkg/registry/apis/identity/legacy/queries_test.go
  27. 2
      pkg/registry/apis/identity/legacy/testdata/mysql--query_display-display_ids.sql
  28. 2
      pkg/registry/apis/identity/legacy/testdata/mysql--query_display-display_ids_uids.sql
  29. 2
      pkg/registry/apis/identity/legacy/testdata/mysql--query_display-display_uids.sql
  30. 6
      pkg/registry/apis/identity/legacy/testdata/mysql--query_team_bindings-team_1_bindings.sql
  31. 8
      pkg/registry/apis/identity/legacy/testdata/mysql--query_team_bindings-team_bindings_page_1.sql
  32. 8
      pkg/registry/apis/identity/legacy/testdata/mysql--query_team_bindings-team_bindings_page_2.sql
  33. 2
      pkg/registry/apis/identity/legacy/testdata/mysql--query_teams-teams_page_1.sql
  34. 2
      pkg/registry/apis/identity/legacy/testdata/mysql--query_teams-teams_page_2.sql
  35. 2
      pkg/registry/apis/identity/legacy/testdata/mysql--query_teams-teams_uid.sql
  36. 2
      pkg/registry/apis/identity/legacy/testdata/mysql--query_users-users_page_1.sql
  37. 2
      pkg/registry/apis/identity/legacy/testdata/mysql--query_users-users_page_2.sql
  38. 2
      pkg/registry/apis/identity/legacy/testdata/mysql--query_users-users_uid.sql
  39. 2
      pkg/registry/apis/identity/legacy/testdata/postgres--query_display-display_ids.sql
  40. 2
      pkg/registry/apis/identity/legacy/testdata/postgres--query_display-display_ids_uids.sql
  41. 2
      pkg/registry/apis/identity/legacy/testdata/postgres--query_display-display_uids.sql
  42. 6
      pkg/registry/apis/identity/legacy/testdata/postgres--query_team_bindings-team_1_bindings.sql
  43. 8
      pkg/registry/apis/identity/legacy/testdata/postgres--query_team_bindings-team_bindings_page_1.sql
  44. 8
      pkg/registry/apis/identity/legacy/testdata/postgres--query_team_bindings-team_bindings_page_2.sql
  45. 2
      pkg/registry/apis/identity/legacy/testdata/postgres--query_teams-teams_page_1.sql
  46. 2
      pkg/registry/apis/identity/legacy/testdata/postgres--query_teams-teams_page_2.sql
  47. 2
      pkg/registry/apis/identity/legacy/testdata/postgres--query_teams-teams_uid.sql
  48. 2
      pkg/registry/apis/identity/legacy/testdata/postgres--query_users-users_page_1.sql
  49. 2
      pkg/registry/apis/identity/legacy/testdata/postgres--query_users-users_page_2.sql
  50. 2
      pkg/registry/apis/identity/legacy/testdata/postgres--query_users-users_uid.sql
  51. 2
      pkg/registry/apis/identity/legacy/testdata/sqlite--query_display-display_ids.sql
  52. 2
      pkg/registry/apis/identity/legacy/testdata/sqlite--query_display-display_ids_uids.sql
  53. 2
      pkg/registry/apis/identity/legacy/testdata/sqlite--query_display-display_uids.sql
  54. 6
      pkg/registry/apis/identity/legacy/testdata/sqlite--query_team_bindings-team_1_bindings.sql
  55. 8
      pkg/registry/apis/identity/legacy/testdata/sqlite--query_team_bindings-team_bindings_page_1.sql
  56. 8
      pkg/registry/apis/identity/legacy/testdata/sqlite--query_team_bindings-team_bindings_page_2.sql
  57. 2
      pkg/registry/apis/identity/legacy/testdata/sqlite--query_teams-teams_page_1.sql
  58. 2
      pkg/registry/apis/identity/legacy/testdata/sqlite--query_teams-teams_page_2.sql
  59. 2
      pkg/registry/apis/identity/legacy/testdata/sqlite--query_teams-teams_uid.sql
  60. 2
      pkg/registry/apis/identity/legacy/testdata/sqlite--query_users-users_page_1.sql
  61. 2
      pkg/registry/apis/identity/legacy/testdata/sqlite--query_users-users_page_2.sql
  62. 2
      pkg/registry/apis/identity/legacy/testdata/sqlite--query_users-users_uid.sql
  63. 2
      pkg/storage/unified/sql/queries_test.go
  64. 32
      pkg/storage/unified/sql/sqltemplate/dialect.go
  65. 29
      pkg/storage/unified/sql/sqltemplate/dialect_mysql.go
  66. 2
      pkg/storage/unified/sql/sqltemplate/example_test.go
  67. 10
      pkg/storage/unified/sql/testdata/mysql--resource_delete-simple.sql
  68. 16
      pkg/storage/unified/sql/testdata/mysql--resource_history_insert-insert into resource_history.sql
  69. 36
      pkg/storage/unified/sql/testdata/mysql--resource_history_list-single path.sql
  70. 18
      pkg/storage/unified/sql/testdata/mysql--resource_history_read-single path.sql
  71. 6
      pkg/storage/unified/sql/testdata/mysql--resource_history_update_rv-single path.sql
  72. 16
      pkg/storage/unified/sql/testdata/mysql--resource_insert-simple.sql
  73. 14
      pkg/storage/unified/sql/testdata/mysql--resource_list-filter_on_namespace.sql
  74. 14
      pkg/storage/unified/sql/testdata/mysql--resource_read-without_resource_version.sql
  75. 16
      pkg/storage/unified/sql/testdata/mysql--resource_update-single path.sql
  76. 6
      pkg/storage/unified/sql/testdata/mysql--resource_update_rv-single path.sql
  77. 8
      pkg/storage/unified/sql/testdata/mysql--resource_version_get-single path.sql
  78. 8
      pkg/storage/unified/sql/testdata/mysql--resource_version_inc-increment resource version.sql
  79. 8
      pkg/storage/unified/sql/testdata/mysql--resource_version_insert-single path.sql

@ -9,7 +9,7 @@ import (
"github.com/grafana/grafana/pkg/storage/unified/sql/sqltemplate/mocks"
)
func TestQueries(t *testing.T) {
func TestDashboardQueries(t *testing.T) {
// prefix tables with grafana
nodb := &legacysql.LegacyDatabaseHelper{
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.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
FROM `grafana`.`dashboard` as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false
AND dashboard.org_id = 2
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.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
FROM `grafana`.`dashboard` as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false
AND dashboard.org_id = 2
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.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
FROM `grafana`.`dashboard` as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false
AND dashboard.org_id = 2
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_version.created, updated_user.uid as updated_by,updated_user.id as created_by_id,
dashboard_version.version, dashboard_version.message, dashboard_version.data
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_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 updated_user ON dashboard.updated_by = updated_user.id
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_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 updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false
AND dashboard.org_id = 2
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.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
FROM `grafana`.`dashboard` as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false
AND dashboard.org_id = 2
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.updated, updated_user.uid as updated_by,
p.name, p.type, p.description, p.model
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 updated_user ON p.updated_by = updated_user.id
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 updated_user ON p.updated_by = updated_user.id
WHERE p.org_id = 1
AND p.uid = 'xyz'
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.updated, updated_user.uid as updated_by,
p.name, p.type, p.description, p.model
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 updated_user ON p.updated_by = updated_user.id
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 updated_user ON p.updated_by = updated_user.id
WHERE p.org_id = 1
ORDER BY p.id DESC
LIMIT 5

@ -2,9 +2,9 @@ SELECT p.id, p.uid, p.folder_uid,
p.created, created_user.uid as created_by,
p.updated, updated_user.uid as updated_by,
p.name, p.type, p.description, p.model
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 updated_user ON p.updated_by = updated_user.id
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 updated_user ON p.updated_by = updated_user.id
WHERE p.org_id = 1
AND p.id > 4
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.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
FROM "grafana"."dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false
AND dashboard.org_id = 2
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.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
FROM "grafana"."dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false
AND dashboard.org_id = 2
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.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
FROM "grafana"."dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false
AND dashboard.org_id = 2
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_version.created, updated_user.uid as updated_by,updated_user.id as created_by_id,
dashboard_version.version, dashboard_version.message, dashboard_version.data
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_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 updated_user ON dashboard.updated_by = updated_user.id
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_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 updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false
AND dashboard.org_id = 2
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.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
FROM "grafana"."dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false
AND dashboard.org_id = 2
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.updated, updated_user.uid as updated_by,
p.name, p.type, p.description, p.model
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 updated_user ON p.updated_by = updated_user.id
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 updated_user ON p.updated_by = updated_user.id
WHERE p.org_id = 1
AND p.uid = 'xyz'
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.updated, updated_user.uid as updated_by,
p.name, p.type, p.description, p.model
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 updated_user ON p.updated_by = updated_user.id
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 updated_user ON p.updated_by = updated_user.id
WHERE p.org_id = 1
ORDER BY p.id DESC
LIMIT 5

@ -2,9 +2,9 @@ SELECT p.id, p.uid, p.folder_uid,
p.created, created_user.uid as created_by,
p.updated, updated_user.uid as updated_by,
p.name, p.type, p.description, p.model
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 updated_user ON p.updated_by = updated_user.id
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 updated_user ON p.updated_by = updated_user.id
WHERE p.org_id = 1
AND p.id > 4
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.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
FROM "grafana"."dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false
AND dashboard.org_id = 2
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.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
FROM "grafana"."dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false
AND dashboard.org_id = 2
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.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
FROM "grafana"."dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false
AND dashboard.org_id = 2
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_version.created, updated_user.uid as updated_by,updated_user.id as created_by_id,
dashboard_version.version, dashboard_version.message, dashboard_version.data
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_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 updated_user ON dashboard.updated_by = updated_user.id
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_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 updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false
AND dashboard.org_id = 2
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.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id,
dashboard.version, '' as message, dashboard.data
FROM "grafana.dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
FROM "grafana"."dashboard" as dashboard
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 updated_user ON dashboard.updated_by = updated_user.id
WHERE dashboard.is_folder = false
AND dashboard.org_id = 2
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.updated, updated_user.uid as updated_by,
p.name, p.type, p.description, p.model
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 updated_user ON p.updated_by = updated_user.id
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 updated_user ON p.updated_by = updated_user.id
WHERE p.org_id = 1
AND p.uid = 'xyz'
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.updated, updated_user.uid as updated_by,
p.name, p.type, p.description, p.model
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 updated_user ON p.updated_by = updated_user.id
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 updated_user ON p.updated_by = updated_user.id
WHERE p.org_id = 1
ORDER BY p.id DESC
LIMIT 5

@ -2,9 +2,9 @@ SELECT p.id, p.uid, p.folder_uid,
p.created, created_user.uid as created_by,
p.updated, updated_user.uid as updated_by,
p.name, p.type, p.description, p.model
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 updated_user ON p.updated_by = updated_user.id
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 updated_user ON p.updated_by = updated_user.id
WHERE p.org_id = 1
AND p.id > 4
ORDER BY p.id DESC

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

@ -1,6 +1,6 @@
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
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
OR u.id IN (1, 2)
)

@ -1,6 +1,6 @@
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
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
OR uid IN ('a', 'b')
OR u.id IN (1, 2)

@ -1,6 +1,6 @@
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
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
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
INNER JOIN "grafana.team" t ON tm.team_id = t.id
INNER JOIN "grafana.user" u ON tm.user_id = u.id
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`.`user` u ON tm.user_id = u.id
WHERE
t.uid = 'team-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
INNER JOIN "grafana.team" t ON tm.team_id = t.id
INNER JOIN "grafana.user" u ON tm.user_id = u.id
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`.`user` u ON tm.user_id = u.id
WHERE
t.uid IN(
SELECT uid
FROM "grafana.team" t
FROM `grafana`.`team` t
ORDER BY t.id ASC LIMIT 5
)
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
INNER JOIN "grafana.team" t ON tm.team_id = t.id
INNER JOIN "grafana.user" u ON tm.user_id = u.id
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`.`user` u ON tm.user_id = u.id
WHERE
t.uid IN(
SELECT uid
FROM "grafana.team" t
FROM `grafana`.`team` t
WHERE t.id >= 5
ORDER BY t.id ASC LIMIT 5
)

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

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

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

@ -1,6 +1,6 @@
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
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
AND u.is_service_account = FALSE
ORDER BY u.id asc

@ -1,6 +1,6 @@
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
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
AND u.is_service_account = FALSE
AND id > 1

@ -1,6 +1,6 @@
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
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
AND u.is_service_account = FALSE
AND uid = 'abc'

@ -1,6 +1,6 @@
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
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
OR u.id IN (1, 2)
)

@ -1,6 +1,6 @@
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
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
OR uid IN ('a', 'b')
OR u.id IN (1, 2)

@ -1,6 +1,6 @@
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
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
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
INNER JOIN "grafana.team" t ON tm.team_id = t.id
INNER JOIN "grafana.user" u ON tm.user_id = u.id
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"."user" u ON tm.user_id = u.id
WHERE
t.uid = 'team-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
INNER JOIN "grafana.team" t ON tm.team_id = t.id
INNER JOIN "grafana.user" u ON tm.user_id = u.id
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"."user" u ON tm.user_id = u.id
WHERE
t.uid IN(
SELECT uid
FROM "grafana.team" t
FROM "grafana"."team" t
ORDER BY t.id ASC LIMIT 5
)
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
INNER JOIN "grafana.team" t ON tm.team_id = t.id
INNER JOIN "grafana.user" u ON tm.user_id = u.id
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"."user" u ON tm.user_id = u.id
WHERE
t.uid IN(
SELECT uid
FROM "grafana.team" t
FROM "grafana"."team" t
WHERE t.id >= 5
ORDER BY t.id ASC LIMIT 5
)

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

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

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

@ -1,6 +1,6 @@
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
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
AND u.is_service_account = FALSE
ORDER BY u.id asc

@ -1,6 +1,6 @@
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
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
AND u.is_service_account = FALSE
AND id > 1

@ -1,6 +1,6 @@
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
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
AND u.is_service_account = FALSE
AND uid = 'abc'

@ -1,6 +1,6 @@
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
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
OR u.id IN (1, 2)
)

@ -1,6 +1,6 @@
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
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
OR uid IN ('a', 'b')
OR u.id IN (1, 2)

@ -1,6 +1,6 @@
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
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
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
INNER JOIN "grafana.team" t ON tm.team_id = t.id
INNER JOIN "grafana.user" u ON tm.user_id = u.id
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"."user" u ON tm.user_id = u.id
WHERE
t.uid = 'team-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
INNER JOIN "grafana.team" t ON tm.team_id = t.id
INNER JOIN "grafana.user" u ON tm.user_id = u.id
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"."user" u ON tm.user_id = u.id
WHERE
t.uid IN(
SELECT uid
FROM "grafana.team" t
FROM "grafana"."team" t
ORDER BY t.id ASC LIMIT 5
)
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
INNER JOIN "grafana.team" t ON tm.team_id = t.id
INNER JOIN "grafana.user" u ON tm.user_id = u.id
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"."user" u ON tm.user_id = u.id
WHERE
t.uid IN(
SELECT uid
FROM "grafana.team" t
FROM "grafana"."team" t
WHERE t.id >= 5
ORDER BY t.id ASC LIMIT 5
)

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

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

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

@ -1,6 +1,6 @@
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
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
AND u.is_service_account = FALSE
ORDER BY u.id asc

@ -1,6 +1,6 @@
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
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
AND u.is_service_account = FALSE
AND id > 1

@ -1,6 +1,6 @@
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
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
AND u.is_service_account = FALSE
AND uid = 'abc'

@ -8,7 +8,7 @@ import (
"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{
RootDir: "testdata",
Templates: map[*template.Template][]mocks.TemplateTestCase{

@ -1,6 +1,7 @@
package sqltemplate
import (
"bytes"
"errors"
"strconv"
"strings"
@ -9,6 +10,7 @@ import (
// Dialect-agnostic errors.
var (
ErrEmptyIdent = errors.New("empty identifier")
ErrInvalidIdentInput = errors.New("identifier contains invalid characters")
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
// 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)
// 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.
type standardIdent struct{}
func (standardIdent) Ident(s string) (string, error) {
func escapeIdentity(s string, quote rune, clean func(string) string) (string, error) {
if s == "" {
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

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

@ -152,5 +152,5 @@ func Example() {
fmt.Println(query)
// 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
AND "namespace" = 'nn'
AND "group" = 'gg'
AND "resource" = 'rr'
AND "name" = 'name'
AND `namespace` = 'nn'
AND `group` = 'gg'
AND `resource` = 'rr'
AND `name` = 'name'
;

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

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

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

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

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

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

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

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

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

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

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

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

Loading…
Cancel
Save