mirror of
https://github.com/SigNoz/signoz.git
synced 2026-07-18 12:20:32 +01:00
Some checks failed
build-staging / js-build (push) Has been cancelled
build-staging / go-build (push) Has been cancelled
build-staging / prepare (push) Has been cancelled
build-staging / staging (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
* feat: add functional unique index * chore: add tag migration * chore: add failing scratch test (to discuss) * chore: fetch expressions as well in getindices call * fix: remove tag unique index (will be added in a separate PR) * fix: remove tag unique index (will be added in a separate PR) * chore: remove temporary tests * fix: go lint fix * chore: better comment for unique index * test: add test for case insensitive expression equality * test: add equality test for columns with quotes and capital letters * chore: add separate type for unique indices with expressions * test: add test for postgres provider
63 lines
1.6 KiB
Go
63 lines
1.6 KiB
Go
package sqlschema
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestExpressionNormalizerNormalize(t *testing.T) {
|
|
testCases := []struct {
|
|
name string
|
|
input string
|
|
output string
|
|
}{
|
|
{
|
|
name: "BooleanComparison",
|
|
input: `"active" = true`,
|
|
output: `active = true`,
|
|
},
|
|
{
|
|
name: "QuotedStringLiteralPreserved",
|
|
input: `status = 'somewhere'`,
|
|
output: `status = 'somewhere'`,
|
|
},
|
|
{
|
|
name: "EscapedStringLiteralPreserved",
|
|
input: `status = 'it''s active'`,
|
|
output: `status = 'it''s active'`,
|
|
},
|
|
{
|
|
name: "OuterParenthesesRemoved",
|
|
input: `(("deleted_at" IS NULL))`,
|
|
output: `deleted_at IS NULL`,
|
|
},
|
|
{
|
|
name: "InnerParenthesesPreserved",
|
|
input: `("deleted_at" IS NULL OR ("active" = true AND "status" = 'open'))`,
|
|
output: `deleted_at IS NULL OR (active = true AND status = 'open')`,
|
|
},
|
|
{
|
|
name: "MultipleClausesWhitespaceCollapsed",
|
|
input: " ( \"deleted_at\" IS NULL \n AND\t\"active\" = true AND status = 'open' ) ",
|
|
output: `deleted_at IS NULL AND active = true AND status = 'open'`,
|
|
},
|
|
{
|
|
name: "ComplexBooleanClauses",
|
|
input: `NOT ("deleted_at" IS NOT NULL AND ("active" = false OR "status" = 'archived'))`,
|
|
output: `NOT (deleted_at IS NOT NULL AND (active = false OR status = 'archived'))`,
|
|
},
|
|
{
|
|
name: "CaseNotFoldedWithoutFlag",
|
|
input: `LOWER("email") IS NOT NULL`,
|
|
output: `LOWER(email) IS NOT NULL`,
|
|
},
|
|
}
|
|
|
|
for _, testCase := range testCases {
|
|
t.Run(testCase.name, func(t *testing.T) {
|
|
assert.Equal(t, testCase.output, (&expressionNormalizer{input: testCase.input}).normalize())
|
|
})
|
|
}
|
|
}
|