rsi->returnMode = SFRM_Materialize;
 
-       (void) get_call_result_type(fcinfo, NULL, &tupdesc);
+       if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)
+               ereport(ERROR,
+                               (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+                                errmsg("function returning record called in context "
+                                               "that cannot accept type record")));
 
        /* make these in a sufficiently long-lived memory context */
        old_cxt = MemoryContextSwitchTo(rsi->econtext->ecxt_per_query_memory);
 
                json = PG_GETARG_TEXT_P(0);
 
-               get_call_result_type(fcinfo, NULL, &tupdesc);
+               if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)
+                       ereport(ERROR,
+                                       (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+                                        errmsg("function returning record called in context "
+                                                       "that cannot accept type record"),
+                                        errhint("Try calling the function in the FROM clause "
+                                                        "using a column definition list.")));
        }
 
        json_hash = get_json_object_as_hash(json, "json_populate_record",
         * get the tupdesc from the result set info - it must be a record type
         * because we already checked that arg1 is a record type.
         */
-       (void) get_call_result_type(fcinfo, NULL, &tupdesc);
+       if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)
+               ereport(ERROR,
+                               (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+                                errmsg("function returning record called in context "
+                                               "that cannot accept type record")));
 
        state = palloc0(sizeof(PopulateRecordsetState));
        sem = palloc0(sizeof(JsonSemAction));