@@ -634,4 +634,198 @@ var AggregationTestsWithDates = []AggregationTestCase{
634634 ("@timestamp", 'Europe/Warsaw'))*1000) / 86400000) AS "aggr__0__key_0"
635635 ORDER BY "aggr__0__key_0" ASC` ,
636636 },
637+ { // [4]
638+ TestName : "date_histogram add in-between rows, calendar_interval: >= month (regression test)" ,
639+ QueryRequestJson : `
640+ {
641+ "size": 0,
642+ "aggs": {
643+ "sales_per_month": {
644+ "date_histogram": {
645+ "field": "date",
646+ "calendar_interval": "month"
647+ }
648+ }
649+ }
650+ }` ,
651+ ExpectedResponse : `
652+ {
653+ "aggregations": {
654+ "sales_per_month": {
655+ "buckets": [
656+ {
657+ "key_as_string": "2015-01-01T00:00:00.000",
658+ "key": 1420070400000,
659+ "doc_count": 3
660+ },
661+ {
662+ "key_as_string": "2015-02-01T00:00:00.000",
663+ "key": 1422748800000,
664+ "doc_count": 0
665+ },
666+ {
667+ "key_as_string": "2015-03-01T00:00:00.000",
668+ "key": 1425168000000,
669+ "doc_count": 0
670+ },
671+ {
672+ "key_as_string": "2015-04-01T00:00:00.000",
673+ "key": 1427846400000,
674+ "doc_count": 0
675+ },
676+ {
677+ "key_as_string": "2015-05-01T00:00:00.000",
678+ "key": 1430438400000,
679+ "doc_count": 0
680+ },
681+ {
682+ "key_as_string": "2015-06-01T00:00:00.000",
683+ "key": 1433116800000,
684+ "doc_count": 0
685+ },
686+ {
687+ "key_as_string": "2015-07-01T00:00:00.000",
688+ "key": 1435708800000,
689+ "doc_count": 2
690+ }
691+ ]
692+ }
693+ }
694+ }` ,
695+ ExpectedPancakeResults : []model.QueryResultRow {
696+ {Cols : []model.QueryResultCol {
697+ model .NewQueryResultCol ("aggr__sales_per_month__key_0" , int64 (1420070400000 )),
698+ model .NewQueryResultCol ("aggr__sales_per_month__count" , int64 (3 )),
699+ }},
700+ {Cols : []model.QueryResultCol {
701+ model .NewQueryResultCol ("aggr__sales_per_month__key_0" , int64 (1422748800000 )),
702+ model .NewQueryResultCol ("aggr__sales_per_month__count" , int64 (0 )),
703+ }},
704+ {Cols : []model.QueryResultCol {
705+ model .NewQueryResultCol ("aggr__sales_per_month__key_0" , int64 (1435708800000 )),
706+ model .NewQueryResultCol ("aggr__sales_per_month__count" , int64 (2 )),
707+ }},
708+ },
709+ ExpectedPancakeSQL : `
710+ SELECT toInt64(toUnixTimestamp(toStartOfMonth(toTimezone("date", 'UTC'))))*1000
711+ AS "aggr__sales_per_month__key_0", count(*) AS "aggr__sales_per_month__count"
712+ FROM __quesma_table_name
713+ GROUP BY toInt64(toUnixTimestamp(toStartOfMonth(toTimezone("date", 'UTC'))))*
714+ 1000 AS "aggr__sales_per_month__key_0"
715+ ORDER BY "aggr__sales_per_month__key_0" ASC` ,
716+ },
717+ { // [5]
718+ TestName : "date_histogram add in-between rows, calendar_interval: >= month (regression test)" ,
719+ QueryRequestJson : `
720+ {
721+ "size": 0,
722+ "aggs": {
723+ "sales_per_quarter": {
724+ "date_histogram": {
725+ "field": "date",
726+ "calendar_interval": "quarter"
727+ }
728+ }
729+ }
730+ }` ,
731+ ExpectedResponse : `
732+ {
733+ "aggregations": {
734+ "sales_per_quarter": {
735+ "buckets": [
736+ {
737+ "key_as_string": "2015-01-01T00:00:00.000",
738+ "key": 1420070400000,
739+ "doc_count": 3
740+ },
741+ {
742+ "key_as_string": "2015-04-01T00:00:00.000",
743+ "key": 1427846400000,
744+ "doc_count": 0
745+ },
746+ {
747+ "key_as_string": "2015-07-01T00:00:00.000",
748+ "key": 1435708800000,
749+ "doc_count": 2
750+ }
751+ ]
752+ }
753+ }
754+ }` ,
755+ ExpectedPancakeResults : []model.QueryResultRow {
756+ {Cols : []model.QueryResultCol {
757+ model .NewQueryResultCol ("aggr__sales_per_quarter__key_0" , int64 (1420070400000 )),
758+ model .NewQueryResultCol ("aggr__sales_per_quarter__count" , int64 (3 )),
759+ }},
760+ {Cols : []model.QueryResultCol {
761+ model .NewQueryResultCol ("aggr__sales_per_quarter__key_0" , int64 (1435708800000 )),
762+ model .NewQueryResultCol ("aggr__sales_per_quarter__count" , int64 (2 )),
763+ }},
764+ },
765+ ExpectedPancakeSQL : `
766+ SELECT toInt64(toUnixTimestamp(toStartOfQuarter(toTimezone("date", 'UTC'))))*
767+ 1000 AS "aggr__sales_per_quarter__key_0",
768+ count(*) AS "aggr__sales_per_quarter__count"
769+ FROM __quesma_table_name
770+ GROUP BY toInt64(toUnixTimestamp(toStartOfQuarter(toTimezone("date", 'UTC'))))*
771+ 1000 AS "aggr__sales_per_quarter__key_0"
772+ ORDER BY "aggr__sales_per_quarter__key_0" ASC` ,
773+ },
774+ { // [6]
775+ TestName : "date_histogram add in-between rows, calendar_interval: >= month (regression test)" ,
776+ QueryRequestJson : `
777+ {
778+ "size": 0,
779+ "aggs": {
780+ "sales_per_year": {
781+ "date_histogram": {
782+ "field": "date",
783+ "calendar_interval": "year"
784+ }
785+ }
786+ }
787+ }` ,
788+ ExpectedResponse : `
789+ {
790+ "aggregations": {
791+ "sales_per_year": {
792+ "buckets": [
793+ {
794+ "key_as_string": "2015-01-01T00:00:00.000",
795+ "key": 1420070400000,
796+ "doc_count": 3
797+ },
798+ {
799+ "key_as_string": "2016-01-01T00:00:00.000",
800+ "key": 1451606400000,
801+ "doc_count": 0
802+ },
803+ {
804+ "key_as_string": "2017-01-01T00:00:00.000",
805+ "key": 1483228800000,
806+ "doc_count": 2
807+ }
808+ ]
809+ }
810+ }
811+ }` ,
812+ ExpectedPancakeResults : []model.QueryResultRow {
813+ {Cols : []model.QueryResultCol {
814+ model .NewQueryResultCol ("aggr__sales_per_year__key_0" , int64 (1420070400000 )),
815+ model .NewQueryResultCol ("aggr__sales_per_year__count" , int64 (3 )),
816+ }},
817+ {Cols : []model.QueryResultCol {
818+ model .NewQueryResultCol ("aggr__sales_per_year__key_0" , int64 (1483228800000 )),
819+ model .NewQueryResultCol ("aggr__sales_per_year__count" , int64 (2 )),
820+ }},
821+ },
822+ ExpectedPancakeSQL : `
823+ SELECT toInt64(toUnixTimestamp(toStartOfYear(toTimezone("date", 'UTC'))))*1000
824+ AS "aggr__sales_per_year__key_0",
825+ count(*) AS "aggr__sales_per_year__count"
826+ FROM __quesma_table_name
827+ GROUP BY toInt64(toUnixTimestamp(toStartOfYear(toTimezone("date", 'UTC'))))*1000
828+ AS "aggr__sales_per_year__key_0"
829+ ORDER BY "aggr__sales_per_year__key_0" ASC` ,
830+ },
637831}
0 commit comments