apache / datafusion

Apache DataFusion SQL Query Engine
https://datafusion.apache.org/
Apache License 2.0
5.78k stars 1.09k forks source link

Enforce the uniqueness of map key name for the map/make_map function #11437

Open goldmedal opened 1 month ago

goldmedal commented 1 month ago

Is your feature request related to a problem or challenge?

In most databases, the map type only allows unique keys. Refer to the behavior of DuckDB:

D select map {'1':1, '1':2};
Invalid Input Error: Map keys must be unique.

However, the specification of MapArray states:

/// In this layout, the keys and values are each respectively contiguous. We do
/// not constrain the key and value types, so the application is responsible
/// for ensuring that the keys are hashable and unique. Whether the keys are sorted
/// may be set in the metadata for this field.

MapArray is not responsible for ensuring the uniqueness of keys. Therefore, we should ensure the keys are unique on the application side (DataFusion).

Describe the solution you'd like

We can check the keys are distinct when invoking the map and make_map functions.

Describe alternatives you've considered

No response

Additional context

No response

dharanad commented 1 month ago

take