Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Selector concat 时,需要妥善处理 where 字段为空的 query 的等价验证 #93

Open
chuan6 opened this issue Jul 14, 2017 · 1 comment
Assignees
Labels

Comments

@chuan6
Copy link
Contributor

chuan6 commented Jul 14, 2017

当前在 Selector concat 时,我们会验证两个 query 里的 PredicateProvider (由输入的 where 字段生成) 是否等价。办法是调用各自 PredicateProvider 的 toString 方法,看生成的字符串是否一样。

@Miloas 之前在应用开发中遇到了报错“没有 toString 方法”的情况。此例中,输入的 query 没有 where 字段,故生成的 PredicateProvider 是 null,不能在其上直接调用 toString。不带 where 的 query 是完全合理的,我们不应该报错。

@chuan6 chuan6 added the bug label Jul 14, 2017
@chuan6 chuan6 self-assigned this Jul 14, 2017
@chuan6
Copy link
Contributor Author

chuan6 commented Jul 14, 2017

记录一下自己对外部传入 query 的 where 字段为空这个情况的看法:

传入 query 的 where 字段为空的话,处理上是不应该遇到任何阻碍的。也就是说,代码中,整个路径上,不应该假设需要这个字段。...直至 where 被转换成 PredicateProvider。

现在一个需要明确的问题是,下面两种情况,在语义上的区别:

  • 传给 Selector 构造函数的 predicateProvider 参数为空
  • predicateProvider.getPredicate() 得空

根据目前的实现,和我自己的理解,前者应该代表传入 query 不带 where 字段,而后者代表传入 query 所带 where 字段解析出错。

chuan6 added a commit that referenced this issue Jul 14, 2017
...并在 concat selector 时进行的查询信息等价比较上,妥善处理
predicateProvider 为空而导致没有 toString 方法可调用,throw 的情况。

...resolves #93
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
1 participant