Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
canifa_note
Commits
3cc0e255
Commit
3cc0e255
authored
Apr 08, 2025
by
Johnny
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: memo filter for postgres
parent
f5d5ebea
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
7 additions
and
7 deletions
+7
-7
memo_filter.go
store/db/postgres/memo_filter.go
+1
-1
memo_filter_test.go
store/db/postgres/memo_filter_test.go
+6
-6
No files found.
store/db/postgres/memo_filter.go
View file @
3cc0e255
...
...
@@ -160,7 +160,7 @@ func (d *DB) ConvertExprToSQL(ctx *filter.ConvertContext, expr *exprv1.Expr) err
subcodition
:=
[]
string
{}
args
:=
[]
any
{}
for
_
,
v
:=
range
values
{
subcodition
,
args
=
append
(
subcodition
,
fmt
.
Sprintf
(
`memo.payload->'tags' @>
%s::jsonb`
,
placeholder
(
len
(
ctx
.
Args
)
+
ctx
.
ArgsOffset
+
len
(
args
)
+
1
))),
append
(
args
,
[]
any
{
v
}
)
subcodition
,
args
=
append
(
subcodition
,
fmt
.
Sprintf
(
`memo.payload->'tags' @>
jsonb_build_array(%s)`
,
placeholder
(
len
(
ctx
.
Args
)
+
ctx
.
ArgsOffset
+
len
(
args
)
+
1
))),
append
(
args
,
v
)
}
if
len
(
subcodition
)
==
1
{
if
_
,
err
:=
ctx
.
Buffer
.
WriteString
(
subcodition
[
0
]);
err
!=
nil
{
...
...
store/db/postgres/memo_filter_test.go
View file @
3cc0e255
...
...
@@ -16,13 +16,13 @@ func TestRestoreExprToSQL(t *testing.T) {
}{
{
filter
:
`tag in ["tag1", "tag2"]`
,
want
:
"(memo.payload->'tags' @>
$1::jsonb OR memo.payload->'tags' @> $2::jsonb
)"
,
args
:
[]
any
{
[]
any
{
"tag1"
},
[]
any
{
"tag2"
}
},
want
:
"(memo.payload->'tags' @>
jsonb_build_array($1) OR memo.payload->'tags' @> jsonb_build_array($2)
)"
,
args
:
[]
any
{
"tag1"
,
"tag2"
},
},
{
filter
:
`!(tag in ["tag1", "tag2"])`
,
want
:
`NOT ((memo.payload->'tags' @>
$1::jsonb OR memo.payload->'tags' @> $2::jsonb
))`
,
args
:
[]
any
{
[]
any
{
"tag1"
},
[]
any
{
"tag2"
}
},
want
:
`NOT ((memo.payload->'tags' @>
jsonb_build_array($1) OR memo.payload->'tags' @> jsonb_build_array($2)
))`
,
args
:
[]
any
{
"tag1"
,
"tag2"
},
},
{
filter
:
`content.contains("memos")`
,
...
...
@@ -46,8 +46,8 @@ func TestRestoreExprToSQL(t *testing.T) {
},
{
filter
:
`tag in ['tag1'] || content.contains('hello')`
,
want
:
"(memo.payload->'tags' @>
$1::jsonb
OR memo.content ILIKE $2)"
,
args
:
[]
any
{
[]
any
{
"tag1"
}
,
"%hello%"
},
want
:
"(memo.payload->'tags' @>
jsonb_build_array($1)
OR memo.content ILIKE $2)"
,
args
:
[]
any
{
"tag1"
,
"%hello%"
},
},
{
filter
:
`1`
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment