pike.git / lib / modules / Sql.pmod / pgsql_util.pmod

version» Context lines:

pike.git/lib/modules/Sql.pmod/pgsql_util.pmod:1339:    }    }    plugbuffer->add_hstring(value, 4);    break;    }    default: {    if (!value) {    plugbuffer->add_int32(-1);    break;    } -  if (!objectp(value) || typeof(value) != typeof(Stdio.Buffer())); +  if (!objectp(value) || typeof(value) != typeof(Stdio.Buffer()))    /*    * Like Oracle and SQLite, we accept literal binary values    * from single-valued multisets.    */    if (multisetp(value) && sizeof(value) == 1)    value = indices(value)[0];    else {    value = (string)value; -  if (String.width(value) > 8) -  if (dtoid[i] == BYTEAOID) +  if (cenc == UTF8CHARSET +  && (dtoid[i] != BYTEAOID || String.width(value) > 8))    /* -  * FIXME We should throw an error here, it would -  * have been correct, but for historical reasons and -  * as a DWIM convenience we autoconvert to UTF8 here. +  * FIXME For BYTEAOID and wide strings we should +  * throw an error here, but for historical reasons and +  * as a DWIM convenience we autoconvert to UTF8 anyway.    */    value = string_to_utf8(value); -  else { +  else if (String.width(value) > 8) {    SUSERERROR(    "Wide string %O not supported for type OID %d\n",    value, dtoid[i]);    value = "";    }    }    plugbuffer->add_hstring(value, 4);    break;    }    case BOOLOID: