[ https://issues.apache.org/jira/browse/TRAFODION-2038?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15320246#comment-15320246 ]
ASF GitHub Bot commented on TRAFODION-2038: ------------------------------------------- GitHub user HowardQin opened a pull request: https://github.com/apache/incubator-trafodion/pull/529 Fix webroot reported assertion failure JIRA TRAFODION-2038 Webroot reported: ERROR[2006] Internal error:assertion failure ((Int32)outputDataLen >= 0) during compile, which is the same issue as mantis-262, mantis-134, cherry pick from Adv2.1 Changes: In QCache: //backpatch for HQC queries NABoolean CacheData::backpatchParams() //convDoIt sourceType->getPrecision() ==> sourceType->getPrecisionOrMaxNumChars() You can merge this pull request into a Git repository by running: $ git pull https://github.com/HowardQin/incubator-trafodion patch-incubator Alternatively you can review and apply these changes as the patch at: https://github.com/apache/incubator-trafodion/pull/529.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #529 ---- commit 914e42d4b3f1730561949f8df28d3cccd6d68ad1 Author: Howard Qin <hao....@esgyn.cn> Date: 2016-06-08T03:56:36Z Fix webroot reported assertion failure JIRA TRAFODION-2038 Webroot reported: ERROR[2006] Internal error:assertion failure ((Int32)outputDataLen >= 0) during compile, which is the same issue as mantis-262, mantis-134, cherry pick from Adv2.1 Changes: In QCache: //backpatch for HQC queries NABoolean CacheData::backpatchParams() //convDoIt sourceType->getPrecision() ==> sourceType->getPrecisionOrMaxNumChars() ---- > ERROR[2006] Internal error: assertion failure ((Int32)outputDataLen >= 0) > during compile > ----------------------------------------------------------------------------------------- > > Key: TRAFODION-2038 > URL: https://issues.apache.org/jira/browse/TRAFODION-2038 > Project: Apache Trafodion > Issue Type: Bug > Components: sql-cmp > Affects Versions: 1.3-incubating > Reporter: Suresh Subbiah > Assignee: Howard Qin > > When certain query with a long varchar column in a predicate are compiled we > get the following error intermittently > *** ERROR[2006] Internal error: assertion failure ((Int32)outputDataLen >= 0) > in file ../exp/exp_conv.cpp at line 4557. > Problem occurs when a SQL compiler gets a query that is similar to what it > has seen before and can can therefore give a cached plan. The problem occurs > when the plan is backpatched to account for differences (i.e. does not show > on initial compile, or when query gets an identical text cache hit). > It can be worked around with any one of these cqds, each one being more > specific than previous one. > cqd query_cache '0'; > cqd hybrid_query_cache 'off' ; > cqd QUERY_CACHE_USE_CONVDOIT_FOR_BACKPATCH 'off' ; > Analysis by Sandhya and Arvind is below. > (0000897) > ssubbiah (developer) > 2016-06-06 14:14 > This issue needs another round of debugging but from the Qcache point of > view. Here is what we found . The assertion failure happens at this point > (highlightedin the expressions code exp/exp_conv.cpp. > if (rc || (targetPrecision && targetPrecision < (Lng32) translatedCharCnt)) > { > Lng32 canIgnoreOverflowChars = FALSE; > Lng32 remainingScanStringLen = 0; > > if (rc == 0) > { > // We failed because the target has too many characters. Find > // the first offending character. > input_to_scan = utf8Tgt; > input_length = outputDataLen; > outputDataLen = lightValidateUTF8Str(utf8Tgt, > (Int32)outputDataLen, > (Int32)targetPrecision, > > ignoreTrailingBlanksInSource); > assert((Int32)outputDataLen >= 0); //LCOV_EXCL_LINE : rfi > > > The following is the stack trace when query cache is on : > > #0 convCharToChar (source=0x7fd270730d50 "reason 25", sourceLen=9, > sourceType=0, sourcePrecision=-1, sourceScale=1, > target=0x7fd269d7231a "reason 25", targetLen=31999, targetType=64, > targetPrecision=-1, targetScale=15, heap=0x0, diagsArea=0x0, > dataConversionErrorFlag=0x7fd286fa9fc8, actualTargetLen=0x7fd286fa9cb8, > blankPadResult=0, ignoreTrailingBlanksInSource=1, allowInvalidCodePoint=0) > at ../exp/exp_conv.cpp:4524 > 0000001 0x00007fd29657a34f in convDoIt (source=0x7fd270730d50 "reason 25", > sourceLen=9, sourceType=0, sourcePrecision=-1, sourceScale=1, > target=0x7fd269d7231a "reason 25", targetLen=31999, targetType=64, > targetPrecision=-1, targetScale=15, varCharLen=0x7fd269d72318 "\t", > varCharLenSize=2, heap=0x0, diagsArea=0x0, index=CONV_ASCII_F_V, > dataConversionErrorFlag=0x7fd286fa9fc8, flags=0) > at ../exp/exp_conv.cpp:9272 > 0000002 0x00007fd29432b74f in CacheData::backpatchParams > (this=0x7fd2ffffffff, > listOfConstantParameters=..., > listOfDynamicParameters=<value optimized out>, bindWA=..., > params=@0x7fd286faa0d8, parameterBufferSize=@0x7fd286faa0f8) > at ../sqlcomp/QCache.cpp:1454 > 0000003 0x00007fd2941d216f in CmpMain::compileFromCache (this=0x7fd286fad8e0, > sText=0x7fd270714da8 " SELECT SS_CUSTOMER_SK\n ,SUM(ACT_SALES) SUMSALES\n > FROM (SELECT SS_ITEM_SK\n ,SS_TICKET_NUMBER\n ,SS_CUSTOMER_SK\n ,CASE WHEN > SR_RETURN_QUANTITY IS NOT NULL THEN > (SS_QUANTITY-SR_RETURN_QUANTITY)*SS_SALES_"..., > ---Type <return> to continue, or q <return> to quit--- > charset=15, queryExpr=<value optimized out>, bindWA=..., cachewa=..., > plan=0x7fd26c680a68, pLen=0x7fd26c680a60, heap=0x7fd285ad9440, op=3004, > bPatchOK=@0x7fd286faca8c, begTime=...) at ../sqlcomp/CmpMain.cpp:1545 > 0000004 0x00007fd2941d7169 in CmpMain::compile (this=0x7fd286fad8e0, > input_str=0x7fd270714da8 " SELECT SS_CUSTOMER_SK\n ,SUM(ACT_SALES) > SUMSALES\n FROM (SELECT SS_ITEM_SK\n ,SS_TICKET_NUMBER\n ,SS_CUSTOMER_SK\n > ,CASE WHEN SR_RETURN_QUANTITY IS NOT NULL THEN > (SS_QUANTITY-SR_RETURN_QUANTITY)*SS_SALES_"..., charset=15, > queryExpr=@0x7fd286fad818, gen_code=0x7fd26c680a68, > gen_code_len=0x7fd26c680a60, heap=0x7fd285ad9440, phase=CmpMain::END, > fragmentDir=0x7fd286fada38, op=3004, useQueryCache=1, > cacheable=0x7fd286fad828, begTime=0x7fd286fad800, shouldLog=0) > at ../sqlcomp/CmpMain.cpp:1883 > 0000005 0x00007fd2941d9a4c in CmpMain::sqlcomp (this=0x7fd286fad8e0, > input_str=0x7fd270714da8 " SELECT SS_CUSTOMER_SK\n ,SUM(ACT_SALES) > SUMSALES\n FROM (SELECT SS_ITEM_SK\n ,SS_TICKET_NUMBER\n ,SS_CUSTOMER_SK\n > ,CASE WHEN SR_RETURN_QUANTITY IS NOT NULL THEN > (SS_QUANTITY-SR_RETURN_QUANTITY)*SS_SALES_"..., charset=15, > queryExpr=@0x7fd286fad818, gen_code=0x7fd26c680a68, > gen_code_len=0x7fd26c680a60, heap=0x7fd285ad9440, phase=CmpMain::END, > fragmentDir=0x7fd286fada38, op=3004, useQueryCache=1, > cacheable=0x7fd286fad828, begTime > > > > See how targetPrecision is -1 in this case ? The targetType is coming from a > list of parameters stored in the cache and our guess was something isn’t > setup right for columns/datatypes in NABoolean CacheData::backpatchParams. > Both explain of this query and the prepare of this query fail the same way. > A couple of things is that the cource has a space > targetLen is 31999. > targetPrecision = -1 > targetType=64 > VC Indicator Len is 2 bytes -- This message was sent by Atlassian JIRA (v6.3.4#6332)