diff --git a/presto-common/src/main/java/com/facebook/presto/common/function/SqlFunctionProperties.java b/presto-common/src/main/java/com/facebook/presto/common/function/SqlFunctionProperties.java index 87d98fac048af..bcaff7456dfa3 100644 --- a/presto-common/src/main/java/com/facebook/presto/common/function/SqlFunctionProperties.java +++ b/presto-common/src/main/java/com/facebook/presto/common/function/SqlFunctionProperties.java @@ -16,8 +16,11 @@ import com.facebook.presto.common.type.TimeZoneKey; import java.util.Locale; +import java.util.Map; import java.util.Objects; +import static java.util.Collections.emptyMap; +import static java.util.Collections.unmodifiableMap; import static java.util.Objects.requireNonNull; public class SqlFunctionProperties @@ -31,6 +34,7 @@ public class SqlFunctionProperties private final long sessionStartTime; private final Locale sessionLocale; private final String sessionUser; + private final Map extraCredentials; private SqlFunctionProperties( boolean parseDecimalLiteralAsDouble, @@ -41,7 +45,8 @@ private SqlFunctionProperties( boolean legacyMapSubscript, long sessionStartTime, Locale sessionLocale, - String sessionUser) + String sessionUser, + Map extraCredentials) { this.parseDecimalLiteralAsDouble = parseDecimalLiteralAsDouble; this.legacyRowFieldOrdinalAccessEnabled = legacyRowFieldOrdinalAccessEnabled; @@ -52,6 +57,7 @@ private SqlFunctionProperties( this.sessionStartTime = sessionStartTime; this.sessionLocale = requireNonNull(sessionLocale, "sessionLocale is null"); this.sessionUser = requireNonNull(sessionUser, "sessionUser is null"); + this.extraCredentials = requireNonNull(extraCredentials, "extraCredentials is null"); } public boolean isParseDecimalLiteralAsDouble() @@ -100,6 +106,11 @@ public String getSessionUser() return sessionUser; } + public Map getExtraCredentials() + { + return extraCredentials; + } + @Override public boolean equals(Object o) { @@ -114,13 +125,17 @@ public boolean equals(Object o) Objects.equals(legacyRowFieldOrdinalAccessEnabled, that.legacyRowFieldOrdinalAccessEnabled) && Objects.equals(timeZoneKey, that.timeZoneKey) && Objects.equals(legacyTimestamp, that.legacyTimestamp) && - Objects.equals(legacyMapSubscript, that.legacyMapSubscript); + Objects.equals(legacyMapSubscript, that.legacyMapSubscript) && + Objects.equals(sessionStartTime, that.sessionStartTime) && + Objects.equals(sessionLocale, that.sessionLocale) && + Objects.equals(sessionUser, that.sessionUser) && + Objects.equals(extraCredentials, that.extraCredentials); } @Override public int hashCode() { - return Objects.hash(parseDecimalLiteralAsDouble, legacyRowFieldOrdinalAccessEnabled, timeZoneKey, legacyTimestamp, legacyMapSubscript); + return Objects.hash(parseDecimalLiteralAsDouble, legacyRowFieldOrdinalAccessEnabled, timeZoneKey, legacyTimestamp, legacyMapSubscript, sessionStartTime, sessionLocale, sessionUser, extraCredentials); } public static Builder builder() @@ -139,6 +154,7 @@ public static class Builder private long sessionStartTime; private Locale sessionLocale; private String sessionUser; + private Map extraCredentials = emptyMap(); private Builder() {} @@ -196,9 +212,15 @@ public Builder setSessionUser(String sessionUser) return this; } + public Builder setExtraCredentials(Map extraCredentials) + { + this.extraCredentials = unmodifiableMap(extraCredentials); + return this; + } + public SqlFunctionProperties build() { - return new SqlFunctionProperties(parseDecimalLiteralAsDouble, legacyRowFieldOrdinalAccessEnabled, legacyTypeCoercionWarningEnabled, timeZoneKey, legacyTimestamp, legacyMapSubscript, sessionStartTime, sessionLocale, sessionUser); + return new SqlFunctionProperties(parseDecimalLiteralAsDouble, legacyRowFieldOrdinalAccessEnabled, legacyTypeCoercionWarningEnabled, timeZoneKey, legacyTimestamp, legacyMapSubscript, sessionStartTime, sessionLocale, sessionUser, extraCredentials); } } } diff --git a/presto-main/src/main/java/com/facebook/presto/Session.java b/presto-main/src/main/java/com/facebook/presto/Session.java index 6df607e2e528a..b6ec26c1f5150 100644 --- a/presto-main/src/main/java/com/facebook/presto/Session.java +++ b/presto-main/src/main/java/com/facebook/presto/Session.java @@ -475,6 +475,7 @@ public SqlFunctionProperties getSqlFunctionProperties() .setSessionStartTime(getStartTime()) .setSessionLocale(getLocale()) .setSessionUser(getUser()) + .setExtraCredentials(identity.getExtraCredentials()) .build(); }