If you’re getting an error that reads “could not determine polymorphic type because input has type unknown” when using the array_shuffle()
function in PostgreSQL, it’s probably because your argument is of the wrong type.
The array_shuffle()
function requires an array as its argument. Passing a non-array value will result in an error. The actual error can vary, depending on the argument you pass, but either way, the error is usually due to a non-array argument being passed.
To fix this error, be sure to pass an array as the argument when calling the array_shuffle()
function.
Example of Error
Here’s an example of code that produces the error:
SELECT array_shuffle( 'Cat' );
Result:
ERROR: could not determine polymorphic type because input has type unknown
I got the error because my argument wasn’t an array. The “polymorphic type” part refers to the fact that the array_shuffle()
function is a polymorphic function. That is, it accepts a polymorphic type as an argument. In this case the argument can be any array type.
Polymorphic types enable a single function definition to operate on many different data types, with the specific data type(s) being determined by the data types actually passed to it in a particular call.
Solution
We can fix the problem by passing an array to the function:
SELECT array_shuffle( ARRAY[ 'Cat', 'Dog', 'Bird', 'Fox' ] );
Result:
array_shuffle
--------------------
{Bird,Cat,Fox,Dog}
This time the function worked without error. That’s because we passed an array this time.