提交 759158df 编写于 作者: V Vlad Ilyushchenko

MISC: removed unused "id" field from TimezoneRule

GRIFFIN: timestamp_sequence() increment argument can be a function.
上级 82bc4287
......@@ -38,34 +38,28 @@ import io.questdb.std.ObjList;
public class TimestampSequenceFunctionFactory implements FunctionFactory {
@Override
public String getSignature() {
return "timestamp_sequence(nl)";
return "timestamp_sequence(nL)";
}
@Override
public Function newInstance(ObjList<Function> args, int position, CairoConfiguration configuration) throws SqlException {
final long start = args.getQuick(0).getTimestamp(null);
final long increment = args.getQuick(1).getLong(null);
if (increment < 0) {
throw SqlException.$(args.getQuick(1).getPosition(), "positive increment expected");
}
if (start == Numbers.LONG_NaN) {
return new TimestampConstant(args.getQuick(0).getPosition(), Numbers.LONG_NaN);
}
return new Func(position, start, increment);
return new TimestampSequenceFunction(position, start, args.getQuick(1));
}
private static final class Func extends TimestampFunction {
private final long increment;
private static final class TimestampSequenceFunction extends TimestampFunction {
private final Function longIncrement;
private final long start;
private long next;
public Func(int position, long start, long increment) {
public TimestampSequenceFunction(int position, long start, Function longIncrement) {
super(position);
this.start = start;
this.next = start;
this.increment = increment;
this.longIncrement = longIncrement;
}
@Override
......@@ -75,7 +69,7 @@ public class TimestampSequenceFunctionFactory implements FunctionFactory {
@Override
public long getTimestamp(Record rec) {
final long result = next;
next += increment;
next += longIncrement.getLong(rec);
return result;
}
......
......@@ -25,18 +25,11 @@ package io.questdb.std.microtime;
public class FixedTimeZoneRule implements TimeZoneRules {
private final long offset;
private final String id;
public FixedTimeZoneRule(String id, long offset) {
this.id = id;
public FixedTimeZoneRule(long offset) {
this.offset = offset;
}
@Override
public String getId() {
return id;
}
@Override
public long getOffset(long millis, int year, boolean leap) {
return offset;
......
......@@ -40,7 +40,7 @@ public class TimeZoneRuleFactory {
public TimeZoneRuleFactory() {
int index = 0;
for (String z : ZoneId.getAvailableZoneIds()) {
ruleList.add(new TimeZoneRulesImpl(z, ZoneId.of(z).getRules()));
ruleList.add(new TimeZoneRulesImpl(ZoneId.of(z).getRules()));
ruleMap.put(z, index++);
}
......@@ -57,7 +57,7 @@ public class TimeZoneRuleFactory {
// this could be fixed offset, try parsing value as one
long offset = Timestamps.parseOffset(alias, 0, alias.length());
if (offset != Long.MIN_VALUE) {
ruleList.add(new FixedTimeZoneRule(alias, Numbers.decodeLowInt(offset) * Timestamps.MILLI_MICROS));
ruleList.add(new FixedTimeZoneRule(Numbers.decodeLowInt(offset) * Timestamps.MILLI_MICROS));
ruleMap.put(key, index++);
}
} else {
......
......@@ -24,8 +24,6 @@
package io.questdb.std.microtime;
public interface TimeZoneRules {
String getId();
long getOffset(long millis, int year, boolean leap);
long getOffset(long millis);
......
......@@ -46,11 +46,9 @@ public class TimeZoneRulesImpl implements TimeZoneRules {
private final long firstWall;
private final long lastWall;
private final int historyOverlapCheckCutoff;
private final String id;
private final long standardOffset;
public TimeZoneRulesImpl(String id, ZoneRules rules) {
this.id = id;
public TimeZoneRulesImpl(ZoneRules rules) {
final long[] savingsInstantTransition = (long[]) Unsafe.getUnsafe().getObject(rules, SAVING_INSTANT_TRANSITION);
if (savingsInstantTransition.length == 0) {
......@@ -111,11 +109,6 @@ public class TimeZoneRulesImpl implements TimeZoneRules {
this.lastWall = this.wallOffsets[wallOffsets.length - 1] * Timestamps.SECOND_MICROS;
}
@Override
public String getId() {
return id;
}
@Override
public long getOffset(long micros, int year, boolean leap) {
if (standardOffset != Long.MIN_VALUE) {
......
......@@ -25,18 +25,11 @@ package io.questdb.std.time;
public class FixedTimeZoneRule implements TimeZoneRules {
private final long offset;
private final String id;
public FixedTimeZoneRule(String id, long offset) {
this.id = id;
public FixedTimeZoneRule(long offset) {
this.offset = offset;
}
@Override
public String getId() {
return id;
}
@Override
public long getOffset(long millis, int year, boolean leap) {
return offset;
......
......@@ -40,7 +40,7 @@ public class TimeZoneRuleFactory {
public TimeZoneRuleFactory() {
int index = 0;
for (String z : ZoneId.getAvailableZoneIds()) {
ruleList.add(new TimeZoneRulesImpl(z, ZoneId.of(z).getRules()));
ruleList.add(new TimeZoneRulesImpl(ZoneId.of(z).getRules()));
ruleMap.put(z, index++);
}
......@@ -57,7 +57,7 @@ public class TimeZoneRuleFactory {
// this could be fixed offset, try parsing value as one
long offset = Dates.parseOffset(alias, 0, alias.length());
if (offset != Long.MIN_VALUE) {
ruleList.add(new FixedTimeZoneRule(alias, Numbers.decodeLowInt(offset) * Dates.MINUTE_MILLIS));
ruleList.add(new FixedTimeZoneRule(Numbers.decodeLowInt(offset) * Dates.MINUTE_MILLIS));
ruleMap.put(key, index++);
}
} else {
......
......@@ -24,8 +24,6 @@
package io.questdb.std.time;
public interface TimeZoneRules {
String getId();
long getOffset(long millis, int year, boolean leap);
long getOffset(long millis);
......
......@@ -46,11 +46,9 @@ public class TimeZoneRulesImpl implements TimeZoneRules {
private final long firstWall;
private final long lastWall;
private final int historyOverlapCheckCutoff;
private final String id;
private final long standardOffset;
public TimeZoneRulesImpl(String id, ZoneRules rules) {
this.id = id;
public TimeZoneRulesImpl(ZoneRules rules) {
final long[] savingsInstantTransition = (long[]) Unsafe.getUnsafe().getObject(rules, SAVING_INSTANT_TRANSITION);
if (savingsInstantTransition.length == 0) {
......@@ -111,11 +109,6 @@ public class TimeZoneRulesImpl implements TimeZoneRules {
this.lastWall = this.wallOffsets[wallOffsets.length - 1] * Dates.SECOND_MILLIS;
}
@Override
public String getId() {
return id;
}
@Override
public long getOffset(long millis, int year, boolean leap) {
if (standardOffset != Long.MIN_VALUE) {
......
......@@ -34,11 +34,6 @@ import org.junit.Test;
public class TimestampSequenceFunctionFactoryTest extends AbstractFunctionFactoryTest {
@Test
public void testIncrement1() throws SqlException {
assertFunction(call(0L, 1000L).getFunction1());
}
@Test
public void testIncrement2() throws SqlException {
assertFunction(call(0L, 1000L).getFunction2());
......@@ -49,11 +44,6 @@ public class TimestampSequenceFunctionFactoryTest extends AbstractFunctionFactor
call(Numbers.LONG_NaN, 1000L).andAssertTimestamp(Numbers.LONG_NaN);
}
@Test
public void testNegativeIncrement() {
assertFailure(35, "positive increment expected", 0L, -100L);
}
@Override
protected void addExtraFunctions() {
functions.add(new NegIntFunctionFactory());
......
......@@ -47,7 +47,7 @@ public class TimeZoneRulesImplTest {
for (String z : zoneList) {
ZoneId zone = ZoneId.of(z);
zones.add(zone);
zoneRules.add(new TimeZoneRulesImpl(z, zone.getRules()));
zoneRules.add(new TimeZoneRulesImpl(zone.getRules()));
}
long micros = Timestamps.toMicros(1900, 1, 1, 0, 0);
......@@ -100,7 +100,7 @@ public class TimeZoneRulesImplTest {
for (String z : zoneList) {
ZoneId zone = ZoneId.of(z);
zones.add(zone);
zoneRules.add(new TimeZoneRulesImpl(z, zone.getRules()));
zoneRules.add(new TimeZoneRulesImpl(zone.getRules()));
}
long millis = Timestamps.toMicros(1900, 1, 1, 0, 0);
......@@ -117,7 +117,7 @@ public class TimeZoneRulesImplTest {
@Test
public void testSingle() {
ZoneId zone = ZoneId.of("GMT");
TimeZoneRulesImpl rules = new TimeZoneRulesImpl("GMT", zone.getRules());
TimeZoneRulesImpl rules = new TimeZoneRulesImpl(zone.getRules());
int y = 2017;
int m = 3;
......
......@@ -47,7 +47,7 @@ public class TimeZoneRulesImplTest {
for (String z : zoneList) {
ZoneId zone = ZoneId.of(z);
zones.add(zone);
zoneRules.add(new TimeZoneRulesImpl(z, zone.getRules()));
zoneRules.add(new TimeZoneRulesImpl(zone.getRules()));
}
long micros = Dates.toMillis(1900, 1, 1, 0, 0);
......@@ -100,7 +100,7 @@ public class TimeZoneRulesImplTest {
for (String z : zoneList) {
ZoneId zone = ZoneId.of(z);
zones.add(zone);
zoneRules.add(new TimeZoneRulesImpl(z, zone.getRules()));
zoneRules.add(new TimeZoneRulesImpl(zone.getRules()));
}
long millis = Dates.toMillis(1900, 1, 1, 0, 0);
......@@ -117,7 +117,7 @@ public class TimeZoneRulesImplTest {
@Test
public void testSingle() {
ZoneId zone = ZoneId.of("GMT");
TimeZoneRulesImpl rules = new TimeZoneRulesImpl("GMT", zone.getRules());
TimeZoneRulesImpl rules = new TimeZoneRulesImpl(zone.getRules());
int y = 2017;
int m = 3;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册