public void eval() { byte[] buf = new byte[in.end - in.start]; in.buffer.getBytes(in.start, buf, 0, in.end - in.start); String input = new String(buf, com.google.common.base.Charsets.UTF_8); try { org.joda.time.format.DateTimeFormatter f = org.apache.arrow.vector.util.DateUtility.getDateTimeFormatter(); out.value = com.dremio.common.util.DateTimes.toMillis(org.joda.time.LocalDateTime.parse(input, f)); } catch (RuntimeException e) { throw errCtx.error(e) .build(); } } }
public void eval() { byte[] buf = new byte[in.end - in.start]; in.buffer.getBytes(in.start, buf, 0, in.end - in.start); String input = new String(buf, com.google.common.base.Charsets.UTF_8); try { org.joda.time.format.DateTimeFormatter f = org.apache.arrow.vector.util.DateUtility.getTimeFormatter(); out.value = (int) com.dremio.common.util.DateTimes.toMillis((f.parseLocalDateTime(input))); } catch (RuntimeException e) { throw errCtx.error(e) .build(); } } }
/** * Formats a period similar to Oracle INTERVAL DAY TO SECOND data type.<br> * For example, the string "-001 18:25:16.766" defines an interval of - 1 day 18 hours 25 minutes 16 seconds and 766 milliseconds */ public static String formatIntervalDay(final Period p) { long millis = p.getDays() * (long) DateUtility.daysToStandardMillis + DateUtility.millisFromPeriod(p); boolean neg = false; if (millis < 0) { millis = -millis; neg = true; } final int days = (int) (millis / DateUtility.daysToStandardMillis); millis = millis % DateUtility.daysToStandardMillis; final int hours = (int) (millis / DateUtility.hoursToMillis); millis = millis % DateUtility.hoursToMillis; final int minutes = (int) (millis / DateUtility.minutesToMillis); millis = millis % DateUtility.minutesToMillis; final int seconds = (int) (millis / DateUtility.secondsToMillis); millis = millis % DateUtility.secondsToMillis; return String.format("%c%03d %02d:%02d:%02d.%03d", neg ? '-':'+', days, hours, minutes, seconds, millis); }
@Override public void setup() { int timeZoneIndex = contextInfo.getRootFragmentTimeZone(); org.joda.time.DateTimeZone timeZone = org.joda.time.DateTimeZone.forID(org.apache.arrow.vector.util.DateUtility.getTimeZone(timeZoneIndex)); org.joda.time.LocalDateTime now = new org.joda.time.LocalDateTime(contextInfo.getQueryStartTime(), timeZone); queryStartTime= (now.getHourOfDay() * org.apache.arrow.vector.util.DateUtility.hoursToMillis) + (now.getMinuteOfHour() * org.apache.arrow.vector.util.DateUtility.minutesToMillis) + (now.getSecondOfMinute() * org.apache.arrow.vector.util.DateUtility.secondsToMillis) + (now.getMillisOfSecond()); }
/** * Create QueryContextInformation with given <i>defaultSchemaName</i>. Rest of the members of the * QueryContextInformation is derived from the current state of the process. * * @param defaultSchemaName * @return */ public static QueryContextInformation createQueryContextInfo(final String defaultSchemaName, QueryPriority priority, long maxAllocation) { final long queryStartTime = System.currentTimeMillis(); final int timeZone = DateUtility.getIndex(System.getProperty("user.timezone")); FragmentPriority.Builder priorityBuilder = FragmentPriority.newBuilder(); if(priority != null){ priorityBuilder.setWorkloadClass(priority.getWorkloadClass()); } else { priorityBuilder.setWorkloadClass(WorkloadClass.GENERAL); } return QueryContextInformation.newBuilder() .setDefaultSchemaName(defaultSchemaName) .setQueryStartTime(queryStartTime) .setTimeZone(timeZone) .setPriority(priorityBuilder) .setQueryMaxAllocation(maxAllocation) .build(); }
@Override public void setup() { int timeZoneIndex = contextInfo.getRootFragmentTimeZone(); org.joda.time.DateTimeZone timeZone = org.joda.time.DateTimeZone.forID(org.apache.arrow.vector.util.DateUtility.getTimeZone(timeZoneIndex)); org.joda.time.LocalDateTime now = new org.joda.time.LocalDateTime(contextInfo.getQueryStartTime(), timeZone); queryStartDate = (new org.joda.time.DateMidnight(now.getYear(), now.getMonthOfYear(), now.getDayOfMonth(), timeZone)). withZoneRetainFields(org.joda.time.DateTimeZone.UTC).getMillis(); }
@Override public RexNode convertCall(SqlRexContext cx, SqlCall call) { final int timeZoneIndex = getContextInformation().getRootFragmentTimeZone(); final DateTimeZone timeZone = DateTimeZone.forID(DateUtility.getTimeZone(timeZoneIndex)); final LocalDateTime dateTime = new LocalDateTime(getContextInformation().getQueryStartTime(), timeZone); final long queryStartTime = (dateTime.getHourOfDay() * DateUtility.hoursToMillis) + (dateTime.getMinuteOfHour() * DateUtility.minutesToMillis) + (dateTime.getSecondOfMinute() * DateUtility.secondsToMillis) + (dateTime.getMillisOfSecond()); return cx.getRexBuilder() .makeTimeLiteral( DateTimes.toDateTime(new LocalDateTime(queryStartTime, DateTimeZone.UTC)) .toCalendar(null), // null sets locale to default locale getReturnTypePrecision(cx, call)); } }
public void eval() { byte[] buf = new byte[in.end - in.start]; in.buffer.getBytes(in.start, buf, 0, in.end - in.start); String input = new String(buf, com.google.common.base.Charsets.UTF_8); try { org.joda.time.format.DateTimeFormatter f = org.apache.arrow.vector.util.DateUtility.getDateTimeFormatter(); out.value = com.dremio.common.util.DateTimes.toMillis(org.joda.time.LocalDateTime.parse(input, f)); } catch (RuntimeException e) { throw errCtx.error(e) .build(); } } }
public void eval() { byte[] buf = new byte[in.end - in.start]; in.buffer.getBytes(in.start, buf, 0, in.end - in.start); String input = new String(buf, com.google.common.base.Charsets.UTF_8); try { org.joda.time.format.DateTimeFormatter f = org.apache.arrow.vector.util.DateUtility.getTimeFormatter(); out.value = (int) com.dremio.common.util.DateTimes.toMillis((f.parseLocalDateTime(input))); } catch (RuntimeException e) { throw errCtx.error(e) .build(); } } }
@Override public RexNode convertCall(SqlRexContext cx, SqlCall call) { final int timeZoneIndex = getContextInformation().getRootFragmentTimeZone(); final DateTimeZone timeZone = DateTimeZone.forID(DateUtility.getTimeZone(timeZoneIndex)); final LocalDateTime dateTime = new LocalDateTime(getContextInformation().getQueryStartTime(), timeZone); final long midNightAsMillis = new DateMidnight(dateTime.getYear(), dateTime.getMonthOfYear(), dateTime.getDayOfMonth(), timeZone) .withZoneRetainFields(DateTimeZone.UTC) .getMillis(); return cx.getRexBuilder() .makeDateLiteral(DateTimes.toDateTime( new LocalDateTime(midNightAsMillis, DateTimeZone.UTC)) .toCalendar(null)); // null sets locale to default locale } }