postgres prest windows下的sql脚本问题

折腾了半天在网上搜索,关于prest的内容还是较少,最后还是决定查看源码。

根据https://postgres.rest/executing-sql-scripts/中的 执行sql脚本部分进行配置,其中

[queries] location = /path/to/queries/

部分在windows下需要改为 [queries] location = “./queries/”,引号内的文件夹地址根据自己实际地址修改。

SELECT * FROM table WHERE name = "{{.field1}}" OR name = "{{.field2}}";

这边需要注意,如果查询的where后面字段为 int类型,不需要“”,或者全部使用‘’。且最后的;是不需要的,因为在prest里面最终会拼出SELECT json_agg(s) FROM (select * from logs where id = '1')这样的sql语句进行执行,;会导致错误。

另外在windows下sql.go下ExecuteScriptQuery,中2个函数需要注意 

config.PrestConf.Adapter.GetScript 这个函数中会调用queries.go文件中的 GetScript函数,其中调用了filepath.join函数,但其中join使用的是os.Separator在windows下 是“\\”

config.PrestConf.Adapter.ParseScript这个函数中则会调用queries.go文件中的ParseScript函数,其中调用了path.Split函数,但此函数中strings.LastIndex(path, "/") 使用的为“/” 会导致split不成功,后面出错,执行sql模板不成功。

根本原因为filepath中使用的os.Separator最终会指向GO/Root目录下src/os/path_unix.go 或src/os/path_windows.go,这2个文件中

os.Separator是有区别的。

刚开始研究prest,不知道对不对,欢迎大牛指证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值