@@ -55,6 +55,20 @@ static ValueExprNode* resolveUsingField(DsqlCompilerScratch* dsqlScratch, const
5555
5656namespace
5757{
58+ void appendContextAlias (DsqlCompilerScratch* dsqlScratch, const string& alias)
59+ {
60+ const auto len = alias.length ();
61+ if (len <= MAX_UCHAR)
62+ dsqlScratch->appendMetaString (alias.c_str ());
63+ else
64+ {
65+ string truncatedAlias (alias);
66+ truncatedAlias.resize (MAX_UCHAR - 3 );
67+ truncatedAlias += " ..." ;
68+ dsqlScratch->appendMetaString (truncatedAlias.c_str ());
69+ }
70+ }
71+
5872 // Search through the list of ANDed booleans to find comparisons
5973 // referring streams of parent select expressions.
6074 // Extract those booleans and return them to the caller.
@@ -677,7 +691,7 @@ void LocalTableSourceNode::genBlr(DsqlCompilerScratch* dsqlScratch)
677691{
678692 dsqlScratch->appendUChar (blr_local_table_id);
679693 dsqlScratch->appendUShort (tableNumber);
680- dsqlScratch-> appendMetaString ( alias. c_str ()); // dsqlContext->ctx_alias?
694+ appendContextAlias (dsqlScratch, alias); // dsqlContext->ctx_alias?
681695
682696 GEN_stuff_context (dsqlScratch, dsqlContext);
683697}
@@ -893,7 +907,7 @@ void RelationSourceNode::genBlr(DsqlCompilerScratch* dsqlScratch)
893907 if (dsqlContext->ctx_alias .hasData ())
894908 {
895909 const auto & contextAliases = dsqlContext->getConcatenatedAlias ();
896- dsqlScratch-> appendMetaString ( contextAliases. c_str () );
910+ appendContextAlias (dsqlScratch, contextAliases);
897911 }
898912
899913 GEN_stuff_context (dsqlScratch, dsqlContext);
@@ -1546,7 +1560,7 @@ void ProcedureSourceNode::genBlr(DsqlCompilerScratch* dsqlScratch)
15461560 dsqlScratch->appendUChar (blr_invsel_procedure_alias);
15471561
15481562 const auto & contextAliases = dsqlContext->getConcatenatedAlias ();
1549- dsqlScratch-> appendMetaString ( contextAliases. c_str () );
1563+ appendContextAlias (dsqlScratch, contextAliases);
15501564 }
15511565
15521566 dsqlScratch->appendUChar (blr_end);
@@ -1560,7 +1574,7 @@ void ProcedureSourceNode::genBlr(DsqlCompilerScratch* dsqlScratch)
15601574 dsqlScratch->appendMetaString (dsqlProcedure->prc_name .object .c_str ());
15611575
15621576 const auto & contextAliases = dsqlContext->getConcatenatedAlias ();
1563- dsqlScratch-> appendMetaString ( contextAliases. c_str () );
1577+ appendContextAlias (dsqlScratch, contextAliases);
15641578 }
15651579 else
15661580 {
@@ -1589,7 +1603,7 @@ void ProcedureSourceNode::genBlr(DsqlCompilerScratch* dsqlScratch)
15891603 if (dsqlContext->ctx_alias .hasData ())
15901604 {
15911605 const auto & contextAliases = dsqlContext->getConcatenatedAlias ();
1592- dsqlScratch-> appendMetaString ( contextAliases. c_str () );
1606+ appendContextAlias (dsqlScratch, contextAliases);
15931607 }
15941608 }
15951609
@@ -4150,11 +4164,8 @@ void TableValueFunctionSourceNode::genBlr(DsqlCompilerScratch* dsqlScratch)
41504164
41514165 GEN_stuff_context (dsqlScratch, dsqlContext);
41524166
4153- if (dsqlContext->ctx_alias .hasData ())
4154- {
4155- const auto & contextAliases = dsqlContext->getConcatenatedAlias ();
4156- dsqlScratch->appendMetaString (contextAliases.c_str ());
4157- }
4167+ const auto & contextAliases = dsqlContext->getConcatenatedAlias ();
4168+ appendContextAlias (dsqlScratch, contextAliases);
41584169
41594170 dsqlScratch->appendUShort (dsqlContext->ctx_proc_inputs ->items .getCount ());
41604171 for (auto & arg : dsqlContext->ctx_proc_inputs ->items )
0 commit comments