SqlParserSelectFieldTest.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package org.elasticsearch;
  2. import org.apache.commons.collections.CollectionUtils;
  3. import org.elasticsearch.dsl.parser.ElasticSql2DslParser;
  4. import org.elasticsearch.dsl.bean.ElasticSqlParseResult;
  5. import org.junit.Assert;
  6. import org.junit.Test;
  7. public class SqlParserSelectFieldTest {
  8. @Test
  9. public void testParseFromSource() {
  10. String sql = "select id,status from index.order t";
  11. ElasticSql2DslParser sql2DslParser = new ElasticSql2DslParser();
  12. ElasticSqlParseResult parseResult = sql2DslParser.parse(sql);
  13. Assert.assertEquals(parseResult.getIndices().get(0), "index");
  14. Assert.assertEquals(parseResult.getType(), "order");
  15. Assert.assertEquals(parseResult.getQueryAs(), "t");
  16. System.out.println(parseResult.toDsl());
  17. }
  18. @Test
  19. public void testParseDefaultLimit() {
  20. String sql = "select id,status from index.order";
  21. ElasticSql2DslParser sql2DslParser = new ElasticSql2DslParser();
  22. ElasticSqlParseResult parseResult = sql2DslParser.parse(sql);
  23. Assert.assertEquals(parseResult.getFrom(), 0);
  24. Assert.assertEquals(parseResult.getSize(), 15);
  25. System.out.println(parseResult.toDsl());
  26. }
  27. @Test
  28. public void testParseOriSelectField() {
  29. String sql = "select id,status from index.order t";
  30. ElasticSql2DslParser sql2DslParser = new ElasticSql2DslParser();
  31. ElasticSqlParseResult parseResult = sql2DslParser.parse(sql);
  32. Assert.assertTrue(parseResult.getQueryFieldList().size() == 2);
  33. Assert.assertEquals(parseResult.getQueryFieldList().get(0), "id");
  34. Assert.assertEquals(parseResult.getQueryFieldList().get(1), "status");
  35. System.out.println(parseResult.toDsl());
  36. }
  37. @Test
  38. public void testSelectAllField() {
  39. String sql = "select * from index.order order by id asc routing by 'A','B','C' limit 1,2";
  40. ElasticSql2DslParser sql2DslParser = new ElasticSql2DslParser();
  41. ElasticSqlParseResult parseResult = sql2DslParser.parse(sql);
  42. Assert.assertTrue(CollectionUtils.isEmpty(parseResult.getQueryFieldList()));
  43. System.out.println(parseResult.toDsl());
  44. }
  45. @Test
  46. public void testInnerDocField() {
  47. String sql = "select id,product.status from index.order";
  48. ElasticSql2DslParser sql2DslParser = new ElasticSql2DslParser();
  49. ElasticSqlParseResult parseResult = sql2DslParser.parse(sql);
  50. Assert.assertEquals(parseResult.getQueryFieldList().get(0), "id");
  51. Assert.assertEquals(parseResult.getQueryFieldList().get(1), "product.status");
  52. System.out.println(parseResult.toDsl());
  53. sql = "select id,product.status from index.order t";
  54. parseResult = sql2DslParser.parse(sql);
  55. Assert.assertEquals(parseResult.getQueryFieldList().get(1), "product.status");
  56. System.out.println(parseResult.toDsl());
  57. sql = "select tmp.product.status from index.order t";
  58. parseResult = sql2DslParser.parse(sql);
  59. Assert.assertEquals(parseResult.getQueryFieldList().get(0), "tmp.product.status");
  60. System.out.println(parseResult.toDsl());
  61. sql = "select product.status from index.order t";
  62. parseResult = sql2DslParser.parse(sql);
  63. Assert.assertEquals(parseResult.getQueryFieldList().get(0), "product.status");
  64. System.out.println(parseResult.toDsl());
  65. sql = "select id,product.* from index.order t";
  66. parseResult = sql2DslParser.parse(sql);
  67. Assert.assertEquals(parseResult.getQueryFieldList().get(0), "id");
  68. Assert.assertEquals(parseResult.getQueryFieldList().get(1), "product.*");
  69. System.out.println(parseResult.toDsl());
  70. }
  71. @Test
  72. public void testNestedDocField() {
  73. String sql = "select id,$product.status from index.order";
  74. ElasticSql2DslParser sql2DslParser = new ElasticSql2DslParser();
  75. ElasticSqlParseResult parseResult = sql2DslParser.parse(sql);
  76. Assert.assertEquals(parseResult.getQueryFieldList().get(0), "id");
  77. Assert.assertEquals(parseResult.getQueryFieldList().get(1), "product.status");
  78. System.out.println(parseResult.toDsl());
  79. sql = "select t.$product.status from index.order t";
  80. parseResult = sql2DslParser.parse(sql);
  81. Assert.assertEquals(parseResult.getQueryFieldList().get(0), "product.status");
  82. System.out.println(parseResult.toDsl());
  83. sql = "select $tmp.product.status from index.order t";
  84. parseResult = sql2DslParser.parse(sql);
  85. Assert.assertEquals(parseResult.getQueryFieldList().get(0), "tmp.product.status");
  86. System.out.println(parseResult.toDsl());
  87. sql = "select product.status from index.order t";
  88. parseResult = sql2DslParser.parse(sql);
  89. Assert.assertEquals(parseResult.getQueryFieldList().get(0), "product.status");
  90. System.out.println(parseResult.toDsl());
  91. sql = "select id,product.* from index.order t";
  92. parseResult = sql2DslParser.parse(sql);
  93. Assert.assertEquals(parseResult.getQueryFieldList().get(0), "id");
  94. Assert.assertEquals(parseResult.getQueryFieldList().get(1), "product.*");
  95. System.out.println(parseResult.toDsl());
  96. }
  97. }