Why do we need any precedence information for implementing new specific type functions?
-- Jacques Nadeau CTO and Co-Founder, Dremio On Thu, Jun 2, 2016 at 9:34 AM, Vitalii Diravka <[email protected]> wrote: > Thank's for reply. > > It is necessary for implementing count function on complex datatypes. > That's why I'm interested only in "precedenceMap" now. > I'm going to add simple cast rules for Map and List: > rules.put(MinorType.MAP, Sets.newHashSet(MinorType.MAP)); > rules.put(MinorType.LIST, Sets.newHashSet(MinorType.LIST)); > since cast from any other type isn't supported now. > > I am agree with placing of Map and List in the end of "precedenceMap" and > before Union type. > Does it matter the first will be Map or List on that place? > > > > Kind regards > Vitalii > > 2016-06-01 17:57 GMT+00:00 Aman Sinha <[email protected]>: > > > What are the implicit casting rules for promoting a data type to a List > or > > Map ? It seems to me the reverse mapping is more useful: casting a List > > or Map to a VARCHAR is possible, so for instance I can do a join between > a > > Map containing {x: 1, y: 2} and a Varchar containing the exact same > > string. To handle this you would add the mapping to the > > ResolverTypePrecedence.secondaryImplicitCastRules. > > > > If there is a valid promotion to List or Map in the precedenceMap, since > > these are complex types I would think it belongs to the end just before > the > > UNION type (since Union is the superset). > > > > On Wed, Jun 1, 2016 at 9:24 AM, Vitalii Diravka < > [email protected] > > > > > wrote: > > > > > Hi all! > > > > > > I need to add List and Map data types into "precedenceMap" in the > > > "ResolverTypePrecedence" class. > > > And I am interested in precedence value of these data types. > > > What are your thoughts about it? > > > > > > > > > You can see all current precedence map below. > > > > > > > > > > precedenceMap = new HashMap<MinorType, Integer>(); > > > > precedenceMap.put(MinorType.NULL, i += 2); // NULL is legal to > > > > implicitly be promoted to any other type > > > > precedenceMap.put(MinorType.FIXEDBINARY, i += 2); // Fixed-length is > > > > promoted to var length > > > > precedenceMap.put(MinorType.VARBINARY, i += 2); > > > > precedenceMap.put(MinorType.FIXEDCHAR, i += 2); > > > > precedenceMap.put(MinorType.VARCHAR, i += 2); > > > > precedenceMap.put(MinorType.FIXED16CHAR, i += 2); > > > > precedenceMap.put(MinorType.VAR16CHAR, i += 2); > > > > precedenceMap.put(MinorType.BIT, i += 2); > > > > precedenceMap.put(MinorType.TINYINT, i += 2); //type with few bytes > > is > > > > promoted to type with more bytes ==> no data loss. > > > > precedenceMap.put(MinorType.UINT1, i += 2); //signed is legal to > > > > implicitly be promoted to unsigned. > > > > precedenceMap.put(MinorType.SMALLINT, i += 2); > > > > precedenceMap.put(MinorType.UINT2, i += 2); > > > > precedenceMap.put(MinorType.INT, i += 2); > > > > precedenceMap.put(MinorType.UINT4, i += 2); > > > > precedenceMap.put(MinorType.BIGINT, i += 2); > > > > precedenceMap.put(MinorType.UINT8, i += 2); > > > > precedenceMap.put(MinorType.MONEY, i += 2); > > > > precedenceMap.put(MinorType.FLOAT4, i += 2); > > > > precedenceMap.put(MinorType.DECIMAL9, i += 2); > > > > precedenceMap.put(MinorType.DECIMAL18, i += 2); > > > > precedenceMap.put(MinorType.DECIMAL28DENSE, i += 2); > > > > precedenceMap.put(MinorType.DECIMAL28SPARSE, i += 2); > > > > precedenceMap.put(MinorType.DECIMAL38DENSE, i += 2); > > > > precedenceMap.put(MinorType.DECIMAL38SPARSE, i += 2); > > > > precedenceMap.put(MinorType.FLOAT8, i += 2); > > > > precedenceMap.put(MinorType.DATE, i += 2); > > > > precedenceMap.put(MinorType.TIMESTAMP, i += 2); > > > > precedenceMap.put(MinorType.TIMETZ, i += 2); > > > > precedenceMap.put(MinorType.TIMESTAMPTZ, i += 2); > > > > precedenceMap.put(MinorType.TIME, i += 2); > > > > precedenceMap.put(MinorType.INTERVALDAY, i+= 2); > > > > precedenceMap.put(MinorType.INTERVALYEAR, i+= 2); > > > > precedenceMap.put(MinorType.INTERVAL, i+= 2); > > > > precedenceMap.put(MinorType.UNION, i += 2); > > > > > > > > > > > > Kind regards > > > Vitalii > > > > > >
