mirror of
https://github.com/grafana/grafana.git
synced 2025-02-03 12:11:09 -06:00
217 lines
4.2 KiB
Go
217 lines
4.2 KiB
Go
package sql
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestParse(t *testing.T) {
|
|
t.Skip()
|
|
sql := "select * from foo"
|
|
tables, err := TablesList((sql))
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, "foo", tables[0])
|
|
}
|
|
|
|
func TestParseWithComma(t *testing.T) {
|
|
t.Skip()
|
|
sql := "select * from foo,bar"
|
|
tables, err := TablesList((sql))
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, "bar", tables[0])
|
|
assert.Equal(t, "foo", tables[1])
|
|
}
|
|
|
|
func TestParseWithCommas(t *testing.T) {
|
|
t.Skip()
|
|
sql := "select * from foo,bar,baz"
|
|
tables, err := TablesList((sql))
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, "bar", tables[0])
|
|
assert.Equal(t, "baz", tables[1])
|
|
assert.Equal(t, "foo", tables[2])
|
|
}
|
|
|
|
func TestArray(t *testing.T) {
|
|
t.Skip()
|
|
sql := "SELECT array_value(1, 2, 3)"
|
|
tables, err := TablesList((sql))
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, 0, len(tables))
|
|
}
|
|
|
|
func TestArray2(t *testing.T) {
|
|
t.Skip()
|
|
sql := "SELECT array_value(1, 2, 3)[2]"
|
|
tables, err := TablesList((sql))
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, 0, len(tables))
|
|
}
|
|
|
|
func TestXxx(t *testing.T) {
|
|
t.Skip()
|
|
sql := "SELECT [3, 2, 1]::INT[3];"
|
|
tables, err := TablesList((sql))
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, 0, len(tables))
|
|
}
|
|
|
|
func TestParseSubquery(t *testing.T) {
|
|
t.Skip()
|
|
sql := "select * from (select * from people limit 1)"
|
|
tables, err := TablesList((sql))
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, 1, len(tables))
|
|
assert.Equal(t, "people", tables[0])
|
|
}
|
|
|
|
func TestJoin(t *testing.T) {
|
|
t.Skip()
|
|
sql := `select * from A
|
|
JOIN B ON A.name = B.name
|
|
LIMIT 10`
|
|
tables, err := TablesList((sql))
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, 2, len(tables))
|
|
assert.Equal(t, "A", tables[0])
|
|
assert.Equal(t, "B", tables[1])
|
|
}
|
|
|
|
func TestRightJoin(t *testing.T) {
|
|
t.Skip()
|
|
sql := `select * from A
|
|
RIGHT JOIN B ON A.name = B.name
|
|
LIMIT 10`
|
|
tables, err := TablesList((sql))
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, 2, len(tables))
|
|
assert.Equal(t, "A", tables[0])
|
|
assert.Equal(t, "B", tables[1])
|
|
}
|
|
|
|
func TestAliasWithJoin(t *testing.T) {
|
|
t.Skip()
|
|
sql := `select * from A as X
|
|
RIGHT JOIN B ON A.name = X.name
|
|
LIMIT 10`
|
|
tables, err := TablesList((sql))
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, 2, len(tables))
|
|
assert.Equal(t, "A", tables[0])
|
|
assert.Equal(t, "B", tables[1])
|
|
}
|
|
|
|
func TestAlias(t *testing.T) {
|
|
t.Skip()
|
|
sql := `select * from A as X LIMIT 10`
|
|
tables, err := TablesList((sql))
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, 1, len(tables))
|
|
assert.Equal(t, "A", tables[0])
|
|
}
|
|
|
|
func TestError(t *testing.T) {
|
|
t.Skip()
|
|
sql := `select * from zzz aaa zzz`
|
|
_, err := TablesList((sql))
|
|
assert.NotNil(t, err)
|
|
}
|
|
|
|
func TestParens(t *testing.T) {
|
|
t.Skip()
|
|
sql := `SELECT t1.Col1,
|
|
t2.Col1,
|
|
t3.Col1
|
|
FROM table1 AS t1
|
|
LEFT JOIN (
|
|
table2 AS t2
|
|
INNER JOIN table3 AS t3 ON t3.Col1 = t2.Col1
|
|
) ON t2.Col1 = t1.Col1;`
|
|
tables, err := TablesList((sql))
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, 3, len(tables))
|
|
assert.Equal(t, "table1", tables[0])
|
|
assert.Equal(t, "table2", tables[1])
|
|
assert.Equal(t, "table3", tables[2])
|
|
}
|
|
|
|
func TestWith(t *testing.T) {
|
|
t.Skip()
|
|
sql := `WITH
|
|
|
|
current_month AS (
|
|
select
|
|
distinct "Month(ISO)" as mth
|
|
from A
|
|
ORDER BY mth DESC
|
|
LIMIT 1
|
|
),
|
|
|
|
last_month_bill AS (
|
|
select
|
|
CAST (
|
|
sum(
|
|
CAST(BillableSeries AS INTEGER)
|
|
) AS INTEGER
|
|
) AS BillableSeries,
|
|
"Month(ISO)",
|
|
label_namespace
|
|
-- , B.activeseries_count
|
|
from A
|
|
JOIN current_month
|
|
ON current_month.mth = A."Month(ISO)"
|
|
JOIN B
|
|
ON B.namespace = A.label_namespace
|
|
GROUP BY
|
|
label_namespace,
|
|
"Month(ISO)"
|
|
ORDER BY BillableSeries DESC
|
|
)
|
|
|
|
SELECT
|
|
last_month_bill.*,
|
|
BEE.activeseries_count
|
|
FROM last_month_bill
|
|
JOIN BEE
|
|
ON BEE.namespace = last_month_bill.label_namespace`
|
|
|
|
tables, err := TablesList((sql))
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, 5, len(tables))
|
|
assert.Equal(t, "A", tables[0])
|
|
assert.Equal(t, "B", tables[1])
|
|
assert.Equal(t, "BEE", tables[2])
|
|
}
|
|
|
|
func TestWithQuote(t *testing.T) {
|
|
t.Skip()
|
|
sql := "select *,'junk' from foo"
|
|
tables, err := TablesList((sql))
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, "foo", tables[0])
|
|
}
|
|
|
|
func TestWithQuote2(t *testing.T) {
|
|
t.Skip()
|
|
sql := "SELECT json_serialize_sql('SELECT 1')"
|
|
tables, err := TablesList((sql))
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, 0, len(tables))
|
|
}
|