@@ -879,7 +879,19 @@ private class TypedConfigBuilder[T](
879879 */
880880 def createWithEnvVarOrDefault (envVar : String , default : T ): ConfigEntry [T ] = {
881881 val defaultValue = sys.env.get(envVar).map(converter).getOrElse(default)
882- createWithDefault(defaultValue)
882+ val transformedDefault = converter(stringConverter(defaultValue))
883+ val conf = new ConfigEntryWithDefault [T ](
884+ parent.key,
885+ transformedDefault,
886+ converter,
887+ stringConverter,
888+ parent._doc,
889+ parent._category,
890+ parent._public,
891+ parent._version,
892+ Some (envVar))
893+ CometConf .register(conf)
894+ conf
883895 }
884896}
885897
@@ -908,6 +920,11 @@ private[comet] abstract class ConfigEntry[T](
908920
909921 def defaultValueString : String
910922
923+ /**
924+ * The environment variable name that can override this config's default value, if applicable.
925+ */
926+ def envVar : Option [String ] = None
927+
911928 override def toString : String = {
912929 s " ConfigEntry(key= $key, defaultValue= $defaultValueString, doc= $doc, " +
913930 s " public= $isPublic, version= $version) "
@@ -922,12 +939,15 @@ private[comet] class ConfigEntryWithDefault[T](
922939 doc : String ,
923940 category : String ,
924941 isPublic : Boolean ,
925- version : String )
942+ version : String ,
943+ _envVar : Option [String ] = None )
926944 extends ConfigEntry (key, valueConverter, stringConverter, doc, category, isPublic, version) {
927945 override def defaultValue : Option [T ] = Some (_defaultValue)
928946
929947 override def defaultValueString : String = stringConverter(_defaultValue)
930948
949+ override def envVar : Option [String ] = _envVar
950+
931951 def get (conf : SQLConf ): T = {
932952 val tmp = conf.getConfString(key, null )
933953 if (tmp == null ) {
0 commit comments