Hi, ALL, Following code: int PostgresDatabase::GetTableOwner (const std::wstring &schemaName, const std::wstring &tableName, std::wstring &owner, std::vector<std::wstring> &errorMsg) { int result = 0; std::wstring query = L"SELECT u.usename FROM pg_class c, pg_user u, pg_namespace n WHERE n.oid = c.relnamespace AND u.usesysid = c.relowner AND n.nspname = $1 AND relname = $2"; char *values[2]; values[0] = NULL, values[1] = NULL; values[0] = new char[schemaName.length() + 1]; values[1] = new char[tableName.length() + 1]; memset( values[0], '\0', schemaName.length() + 1 ); memset( values[1], '\0', tableName.length() + 1 ); strcpy( values[0], m_pimpl->m_myconv.to_bytes( schemaName.c_str() ).c_str() ); strcpy( values[1], m_pimpl->m_myconv.to_bytes( tableName.c_str() ).c_str() ); int len1 = (int) schemaName.length(); int len2 = (int) tableName.length(); int length[2] = { len1, len2 }; int formats[2] = { 1, 1 }; PGresult *res = PQexecParams( m_db, m_pimpl->m_myconv.to_bytes( query.c_str() ).c_str(), 2, NULL, values, length, formats, 1 ); ExecStatusType status = PQresultStatus( res ); if( status != PGRES_COMMAND_OK && status != PGRES_TUPLES_OK ) { result = 1; std::wstring err = m_pimpl->m_myconv.from_bytes( PQerrorMessage( m_db ) ); errorMsg.push_back( L"Error executing query: " + err ); PQclear( res ); } else { owner = m_pimpl->m_myconv.from_bytes( PQgetvalue( res, 0, 0 ) ); } return result; }
when ran with the call of GetTableOwner( "public", "abcĂ", owner, errorMsg ); returns: ERROR: Invalid byte sequence for encoding UTF8. Does this mean I found the bug in the library? Any idea what I can do? Thank you.