From: <hv...@us...> - 2011-01-21 10:03:23
|
Revision: 52172 http://firebird.svn.sourceforge.net/firebird/?rev=52172&view=rev Author: hvlad Date: 2011-01-21 10:03:17 +0000 (Fri, 21 Jan 2011) Log Message: ----------- Front ported fix for bug CORE-3282 : EXECUTE STATEMENT parses the SQL text using wrong charset Modified Paths: -------------- firebird/trunk/src/dsql/StmtNodes.cpp firebird/trunk/src/dsql/StmtNodes.h Modified: firebird/trunk/src/dsql/StmtNodes.cpp =================================================================== --- firebird/trunk/src/dsql/StmtNodes.cpp 2011-01-21 03:49:47 UTC (rev 52171) +++ firebird/trunk/src/dsql/StmtNodes.cpp 2011-01-21 10:03:17 UTC (rev 52172) @@ -2274,7 +2274,7 @@ fb_assert(!*stmtPtr); string sSql; - getString(tdbb, request, sql, sSql); + getString(tdbb, request, sql, sSql, true); string sDataSrc; getString(tdbb, request, dataSource, sDataSrc); @@ -2344,7 +2344,7 @@ } void ExecStatementNode::getString(thread_db* tdbb, jrd_req* request, const ValueExprNode* node, - string& str) const + string& str, bool useAttCS) const { MoveBuffer buffer; UCHAR* p = NULL; @@ -2352,7 +2352,10 @@ const dsc* dsc = node ? EVL_expr(tdbb, request, node) : NULL; if (dsc && !(request->req_flags & req_null)) - len = MOV_make_string2(tdbb, dsc, dsc->getTextType(), &p, buffer); + { + const Jrd::Attachment* att = tdbb->getAttachment(); + len = MOV_make_string2(tdbb, dsc, useAttCS ? att->att_charset : dsc->getTextType(), &p, buffer); + } str = string((char*) p, len); str.trim(); Modified: firebird/trunk/src/dsql/StmtNodes.h =================================================================== --- firebird/trunk/src/dsql/StmtNodes.h 2011-01-21 03:49:47 UTC (rev 52171) +++ firebird/trunk/src/dsql/StmtNodes.h 2011-01-21 10:03:17 UTC (rev 52172) @@ -412,7 +412,7 @@ static void genOptionalExpr(DsqlCompilerScratch* dsqlScratch, const UCHAR code, dsql_nod* node); void getString(thread_db* tdbb, jrd_req* request, const ValueExprNode* node, - Firebird::string& str) const; + Firebird::string& str, bool useAttCS = false) const; public: dsql_nod* dsqlSql; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |