Просмотр исходного кода

HPCC-12714 Support EMBEDDED DATASET syntax (currently ignored)

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Gavin Halliday 10 лет назад
Родитель
Сommit
62be8346d2
3 измененных файлов с 18 добавлено и 2 удалено
  1. 16 0
      ecl/hql/hqlthql.cpp
  2. 1 1
      ecl/hqlcpp/hqlttcpp.cpp
  3. 1 1
      ecl/regress/aggregate6b.ecl

+ 16 - 0
ecl/hql/hqlthql.cpp

@@ -2760,6 +2760,22 @@ void HqltHql::sortlistToEcl(IHqlExpression *expr, StringBuffer &s, bool addCurle
 StringBuffer &HqltHql::getFieldTypeString(IHqlExpression * e, StringBuffer &s)
 {
     ITypeInfo * type = e->queryType();
+    ITypeInfo * cur = type;
+    for(;;)
+    {
+        typemod_t mod = cur->queryModifier();
+        if (mod == typemod_none)
+            break;
+        if (mod == typemod_attr)
+        {
+            IHqlExpression * attr = (IHqlExpression *)cur->queryModifierExtra();
+            if (!isInternalAttribute(attr))
+                s.append(attr->queryName()).append(" ");
+        }
+
+        cur = cur->queryTypeBase();
+    }
+
     switch (type->getTypeCode())
     {
     case type_groupedtable:

+ 1 - 1
ecl/hqlcpp/hqlttcpp.cpp

@@ -8950,7 +8950,7 @@ IHqlExpression * HqlLinkedChildRowTransformer::createTransformedBody(IHqlExpress
                     OwnedHqlExpr transformed = QuickHqlTransformer::createTransformedBody(expr);
                     return removeAttribute(transformed, embeddedAtom);
                 }
-                if (implicitLinkedChildRows && !expr->hasAttribute(_linkCounted_Atom))
+                if (implicitLinkedChildRows && !expr->hasAttribute(_linkCounted_Atom) && !queryAttribute(type, embeddedAtom))
                 {
                     //Don't use link counted rows for weird HOLe style dataset attributes
                     if (expr->hasAttribute(countAtom) || expr->hasAttribute(sizeofAtom))

+ 1 - 1
ecl/regress/aggregate6b.ecl

@@ -40,7 +40,7 @@ string          text{maxlength(10)};
 
 outRecord := RECORD
 unsigned        box;
-dataset(itemRecord) items{embedded};
+embedded dataset(itemRecord) items;
              END;
 
 outRecord t1(inRecord l, outRecord r) := TRANSFORM