diff --git a/server/pkg/dal/runner_gval.go b/server/pkg/dal/runner_gval.go index 683dff7de..ffef813e6 100644 --- a/server/pkg/dal/runner_gval.go +++ b/server/pkg/dal/runner_gval.go @@ -149,6 +149,12 @@ var ( }, OutType: &TypeText{}, }, + "instr": { + Handler: func(args ...string) string { + return fmt.Sprintf("instr(%s, %s)", args[0], args[1]) + }, + OutType: &TypeNumber{}, + }, // @todo implement; the commented versions are not good enough // "like": { diff --git a/server/store/adapters/rdbms/drivers/postgres/ql.go b/server/store/adapters/rdbms/drivers/postgres/ql.go index b27ee14fd..9f2abd6e7 100644 --- a/server/store/adapters/rdbms/drivers/postgres/ql.go +++ b/server/store/adapters/rdbms/drivers/postgres/ql.go @@ -21,6 +21,17 @@ var ( return exp.NewSQLFunctionExpression("CONCAT", aa...) }, }, + "instr": { + Handler: func(args ...exp.Expression) exp.Expression { + // need to force text type on all arguments + aa := make([]any, len(args)) + for a := range args { + aa[a] = exp.NewCastExpression(exp.NewLiteralExpression("?", args[a]), "TEXT") + } + + return exp.NewSQLFunctionExpression("INSTR", args[0], args[1]) + }, + }, // filtering "now": {