小编bos*_*cko的帖子

无法在Postgres交叉表查询中使用公用表表达式

我正在尝试使用Postgres的tablefunc扩展CROSSTAB功能对某些数据执行数据透视操作.数据需要首先进行一些转换,我在一些常见的表表达式中执行.

但是,它似乎CROSSTAB无法看到那些表达式的结果.

例如,从临时表中获取数据的查询工作正常:

CREATE TEMPORARY TABLE
  temporary_table
    (name, category, category_value)
ON COMMIT DROP
AS (
  VALUES
    ('A',  'foo',    1             ),
    ('A',  'bar',    2             ),
    ('B',  'foo',    3             ),
    ('B',  'bar',    4             )
);

SELECT * FROM
  CROSSTAB(
    'SELECT * FROM temporary_table',
    $$
      VALUES
        ('foo'),
        ('bar')
    $$
  ) AS (
    name TEXT,
    foo  INT,
    bar  INT
  );
Run Code Online (Sandbox Code Playgroud)

并且,如预期的那样,产生以下输出:

name | foo     | bar
text | integer | integer
---- | ------- …
Run Code Online (Sandbox Code Playgroud)

sql postgresql pivot temp-tables crosstab

7
推荐指数
1
解决办法
1492
查看次数

tmux 在 OS X 上的哪里保存日志

tmux 最近经常崩溃,我不知道为什么。我想进一步研究它,但我不知道在哪里可以找到任何类型的日志或错误消息。到目前为止,我在谷歌上搜索“tmux log location”之类的内容都是空的。

我正在运行 OS X,并通过 Homebrew 安装了 tmux。

crash macos terminal tmux tmuxinator

5
推荐指数
1
解决办法
3529
查看次数

实现永不过期的 OAuth 刷新令牌

在 OAuth 2 的背景下,如何处理refresh_token过期或缺失问题?

我使用 JSON Web Tokens (JWT) 作为access_tokens,其生命周期较短(20 分钟后过期)。据我了解,这意味着我不必存储access_token,而只需验证它(并使用内部的可信信息,例如范围)。

不过,我想知道如何实现refresh_tokens. 在我的研究中,我发现谷歌和其他公司的refresh_token协议永远有效,除非它们因各种原因被撤销。我认为这意味着系统必须存储所有发出的刷新令牌,这样它们就可以被标记为已撤销。

当涉及到代币的存储时,这是一个问题吗?似乎您有一组潜在的无限令牌需要永久存储和访问。

我错过了什么吗?是否有实施刷新令牌的最佳实践?它们应该是(还是不是)JWT?即使使用 JWT,是否也应该存储 access_token?如果是这样,是否有任何理由让它们超过有效期?JWT 秘密会随着时间的推移而变化吗?

storage authorization access-token oauth-2.0 jwt

5
推荐指数
1
解决办法
5602
查看次数

Rails exec_query绑定被忽略

我正在尝试使用exec_query通过绑定引入的值来运行任意查询,并且遇到了意外错误。

在控制台中运行

sql = 'SELECT * FROM foobars WHERE id IN (?)' name = 'query_name_placeholder' binds = [FooBar.first] ActiveRecord::Base.connection.exec_query sql, name, binds

产生此错误:

Account Load (7.9ms) SELECT "foobars".* FROM "foobars" ORDER BY "foobars"."id" ASC LIMIT 1 PG::SyntaxError: ERROR: syntax error at or near ")" LINE 1: SELECT * FROM foobars WHERE id IN (?) ^ : SELECT * FROM foobars WHERE id IN (?) ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: syntax error at or near ")" LINE 1: SELECT * FROM …

ruby postgresql activerecord ruby-on-rails rails-activerecord

4
推荐指数
1
解决办法
1485
查看次数

Jackson JSON Streaming API:将整个对象直接读取到字符串

我正在尝试逐个对象地流式传输 JSON 数组,但我需要将其作为原始 JSON 字符串导入。

给定一个输入数组,如下所示:

[
 {"object":1},
 {"object":2},
 ...
 {"object":n}
]
Run Code Online (Sandbox Code Playgroud)

我正在尝试遍历字符串:

{"object":1}
{"object":2}
...
{"object":n}
Run Code Online (Sandbox Code Playgroud)

我可以使用流 API 导航结构来验证我是否遇到了一个对象,等等,但我认为我取回字符串的方式是理想的。

现在:

//[...]
//we have read a START_OBJECT token
JsonNode node = parser.readValueAsTree();
String jsonString = anObjectMapper.writeValueAsString(node);
//as opposed to  String jsonString = node.toString() ;
//[...]
Run Code Online (Sandbox Code Playgroud)

我想整个 JsonNode 结构的构建涉及大量开销,如果我只是重新序列化,这是毫无意义的,所以我正在寻找更好的解决方案。类似这样的事情将是理想的:

//[...]
//we have read a START_OBJECT token
String jsonString = parser.readValueAsString()
//or parser.skipChildrenAsString()
//[...]
Run Code Online (Sandbox Code Playgroud)

物体显然不那么简单

{"object":1}
Run Code Online (Sandbox Code Playgroud)

这就是为什么我希望不要浪费时间进行毫无意义的节点构建。可能有一些理想的方法,包括将内容映射到对象并使用它,但我无法做到这一点。我需要原始 JSON 字符串(一次一个对象)来处理现有代码。

如有任何建议或意见,我们将不胜感激。谢谢!

编辑: parser.getText() 以文本形式返回当前标记(例如 START_OBJECT -> “{”),但不返回对象的其余部分。

Edit2 :使用 Streaming API 的动机是一一缓冲对象。实际的json文件可能相当大,并且每个对象在使用后都可以被丢弃,所以我只需要迭代即可。

java string streaming json jackson

2
推荐指数
1
解决办法
4139
查看次数

“英语”全局变量在Rails中不起作用

我正在尝试在Rails中使用英语gem,因此我可以访问$LAST_MATCH_INFO的隐秘版本$~。但是,尽管需要英语,但$LAST_MATCH_INFO始终是nil,尽管$~仍然有效。

这是我的预期行为irb

'foo' =~ /o/           # => 1
$~                     # => #<MatchData "o">
$LAST_MATCH_INFO       # => nil

require 'english'      # => true
$LAST_MATCH_INFO       # => #<MatchData "o">
$LAST_MATCH_INFO == $~ # => true
Run Code Online (Sandbox Code Playgroud)

这是来自的损坏行为rails console

'foo' =~ /o/           # => 1
$~                     # => #<MatchData "o">
$LAST_MATCH_INFO       # => nil

require 'english'      # => false
                       # (Means it's already been required)
$LAST_MATCH_INFO       # => nil
$LAST_MATCH_INFO …
Run Code Online (Sandbox Code Playgroud)

ruby regex gem ruby-on-rails global-variables

2
推荐指数
1
解决办法
279
查看次数