mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54:59 +00:00
Merge branch 'master' into docs-console
This commit is contained in:
commit
3cd3cc050b
4 changed files with 35 additions and 4 deletions
2
Makefile
2
Makefile
|
|
@ -25,7 +25,7 @@ clean:
|
|||
# Set up vendor directory using `dep`
|
||||
vendor: Gopkg.toml
|
||||
$(MAKE) require-dep
|
||||
dep ensure
|
||||
dep ensure -vendor-only
|
||||
touch vendor
|
||||
|
||||
# Run test suite
|
||||
|
|
|
|||
|
|
@ -1279,7 +1279,7 @@ func TestExecutor_Time_Clear_Quantums(t *testing.T) {
|
|||
expected []uint64
|
||||
}{
|
||||
{quantum: "Y", expected: []uint64{3, 4, 5, 6}},
|
||||
{quantum: "M", expected: []uint64{3, 4, 6}},
|
||||
{quantum: "M", expected: []uint64{3, 4, 5, 6}},
|
||||
{quantum: "D", expected: []uint64{3, 4, 5, 6}},
|
||||
{quantum: "H", expected: []uint64{3, 4, 5, 6, 7}},
|
||||
{quantum: "YM", expected: []uint64{3, 4, 5, 6}},
|
||||
|
|
|
|||
17
time.go
17
time.go
|
|
@ -140,7 +140,7 @@ func viewsByTimeRange(name string, start, end time.Time, q TimeQuantum) []string
|
|||
break
|
||||
} else if t.Month() != 1 {
|
||||
results = append(results, viewByTimeUnit(name, t, 'M'))
|
||||
t = t.AddDate(0, 1, 0)
|
||||
t = addMonth(t)
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
|
@ -159,7 +159,7 @@ func viewsByTimeRange(name string, start, end time.Time, q TimeQuantum) []string
|
|||
t = t.AddDate(1, 0, 0)
|
||||
} else if hasMonth && nextMonthGTE(t, end) {
|
||||
results = append(results, viewByTimeUnit(name, t, 'M'))
|
||||
t = t.AddDate(0, 1, 0)
|
||||
t = addMonth(t)
|
||||
} else if hasDay && nextDayGTE(t, end) {
|
||||
results = append(results, viewByTimeUnit(name, t, 'D'))
|
||||
t = t.AddDate(0, 0, 1)
|
||||
|
|
@ -174,6 +174,19 @@ func viewsByTimeRange(name string, start, end time.Time, q TimeQuantum) []string
|
|||
return results
|
||||
}
|
||||
|
||||
// addMonth adds a month similar to time.AddDate(0, 1, 0), but
|
||||
// in certain edge cases it doesn't normalize for days late in the month.
|
||||
// In the "YM" case where t.Day is greater than 28, there are
|
||||
// edge cases where using time.AddDate() to add a month will result
|
||||
// in two "months" being added (Jan 31 + 1mo = March 2).
|
||||
func addMonth(t time.Time) time.Time {
|
||||
if t.Day() > 28 {
|
||||
t = time.Date(t.Year(), t.Month(), 1, t.Hour(), 0, 0, 0, t.Location())
|
||||
}
|
||||
t = t.AddDate(0, 1, 0)
|
||||
return t
|
||||
}
|
||||
|
||||
func nextYearGTE(t time.Time, end time.Time) bool {
|
||||
next := t.AddDate(1, 0, 0)
|
||||
if next.Year() == end.Year() {
|
||||
|
|
|
|||
|
|
@ -97,6 +97,24 @@ func TestViewsByTimeRange(t *testing.T) {
|
|||
t.Fatalf("unexpected fields: %#v", a)
|
||||
}
|
||||
})
|
||||
t.Run("YM31up", func(t *testing.T) {
|
||||
a := viewsByTimeRange("F", mustParseTime("2001-10-31 00:00"), mustParseTime("2003-04-01 00:00"), mustParseTimeQuantum("YM"))
|
||||
if !reflect.DeepEqual(a, []string{"F_200110", "F_200111", "F_200112", "F_2002", "F_200301", "F_200302", "F_200303"}) {
|
||||
t.Fatalf("unexpected fields: %#v", a)
|
||||
}
|
||||
})
|
||||
t.Run("YM31mid", func(t *testing.T) {
|
||||
a := viewsByTimeRange("F", mustParseTime("1999-12-31 00:00"), mustParseTime("2000-04-01 00:00"), mustParseTimeQuantum("YM"))
|
||||
if !reflect.DeepEqual(a, []string{"F_199912", "F_200001", "F_200002", "F_200003"}) {
|
||||
t.Fatalf("unexpected fields: %#v", a)
|
||||
}
|
||||
})
|
||||
t.Run("YM31down", func(t *testing.T) {
|
||||
a := viewsByTimeRange("F", mustParseTime("2000-01-31 00:00"), mustParseTime("2001-04-01 00:00"), mustParseTimeQuantum("YM"))
|
||||
if !reflect.DeepEqual(a, []string{"F_2000", "F_200101", "F_200102", "F_200103"}) {
|
||||
t.Fatalf("unexpected fields: %#v", a)
|
||||
}
|
||||
})
|
||||
t.Run("YMD", func(t *testing.T) {
|
||||
a := viewsByTimeRange("F", mustParseTime("2000-11-28 00:00"), mustParseTime("2003-03-02 00:00"), mustParseTimeQuantum("YMD"))
|
||||
if !reflect.DeepEqual(a, []string{"F_20001128", "F_20001129", "F_20001130", "F_200012", "F_2001", "F_2002", "F_200301", "F_200302", "F_20030301"}) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue