Fix “could not determine polymorphic type because input has type unknown” Error When using array_sample() in PostgreSQL

If you’re getting an error that reads “could not determine polymorphic type because input has type unknown” when using the array_sample() function in PostgreSQL, it’s probably because your first argument is of the wrong type.

The array_sample() function requires an array as its first 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 being passed.

To fix this error, be sure to pass an array as the first argument when calling the array_sample() function.

Example of Error

Here’s an example of code that produces the error:

SELECT array_sample( 'Oops!', 2 );

Result:

ERROR:  could not determine polymorphic type because input has type unknown

I got the error because my first argument wasn’t an array. The “polymorphic type” part refers to the fact that array_sample() is a polymorphic function – it accepts at least one polymorphic type as an argument. In this case, the first argument is a polymorphic type – it 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_sample( ARRAY[ 'Cat', 'Dog', 'Bird', 'Fox' ], 2 );

Result:

 array_sample 
--------------
{Fox,Cat}

This time the function worked without error. That’s because we changed the first argument to an array.