Tweaks to expr handlers

This commit is contained in:
Tomaž Jerman
2021-08-16 09:24:47 +02:00
parent efb94908f2
commit 3e6fd1e47c
2 changed files with 31 additions and 2 deletions
+7 -2
View File
@@ -176,6 +176,11 @@ var (
Result: wrapRes("Number"),
Handler: makeGenericFilterFncHandler("YEAR"),
},
"month": {
Args: collectParams(true, "DateTime"),
Result: wrapRes("Number"),
Handler: makeGenericFilterFncHandler("MONTH"),
},
"date": {
Args: collectParams(true, "DateTime"),
Result: wrapRes("Number"),
@@ -194,12 +199,12 @@ var (
"float": {
Args: collectParams(true, "Any"),
Result: wrapRes("Float"),
Handler: makeGenericTypecastHandler("FLOAT"),
Handler: makeGenericTypecastHandler("DECIMAL"),
},
"int": {
Args: collectParams(true, "Any"),
Result: wrapRes("Float"),
Handler: makeGenericTypecastHandler("INT"),
Handler: makeGenericTypecastHandler("SIGNED"),
},
}
)
+24
View File
@@ -42,6 +42,16 @@ var (
args = aa[0].Args
return
},
"month": func(aa ...rdbms.FormattedASTArgs) (out string, args []interface{}, selfEnclosed bool, err error) {
if len(aa) != 1 {
err = fmt.Errorf("expecting 1 arguments, got %d", len(aa))
return
}
out = fmt.Sprintf("STRFTIME('%%m', %s)", aa[0].S)
args = aa[0].Args
return
},
"date": func(aa ...rdbms.FormattedASTArgs) (out string, args []interface{}, selfEnclosed bool, err error) {
if len(aa) != 1 {
err = fmt.Errorf("expecting 1 arguments, got %d", len(aa))
@@ -52,6 +62,20 @@ var (
args = aa[0].Args
return
},
// - typecast
"float": func(aa ...rdbms.FormattedASTArgs) (out string, args []interface{}, selfEnclosed bool, err error) {
selfEnclosed = true
if len(aa) != 1 {
err = fmt.Errorf("expecting 1 argument, got %d", len(aa))
return
}
out = fmt.Sprintf("CAST(%s AS FLOAT)", aa[0].S)
args = aa[0].Args
return
},
}
)