protected override string GetFieldFunction(Irowsource qualifier, selectfield f, bool aliasthis)
        {
            string sx;

            switch (f.Function.func)
            {
            case selectfunctiondef.lpad:
                // LPad(field,length,'0')
                sx = String.Format("LPAD({0},{1},'{2}')", GetQualifiedFieldname(qualifier, f, true), f.PaddingLength, f.PaddingChar);
                break;

            case selectfunctiondef.ft_rownumber:
                /* introduced [dlatikay 20110922] for fulltext search */
                sx = String.Format("MATCH(Chunk) AGAINST (?token)");
                break;

            default:
                return(base.GetFieldFunction(qualifier, f, aliasthis));
            }
            /* finalize */
            if (f.AsName != null && f.AsName.Length > 0)
            {
                return(sx + " AS " + QuoteFieldname(f.AsName));
            }
            else if (aliasthis)
            {
                return(sx + " AS " + QuoteFieldname(f.Fieldname));
            }
            else
            {
                return(sx);
            }
        }
Beispiel #2
0
 public void defaultqualifier_r(Irowsource q)
 {
     if (qualifier_r == null)
     {
         qualifier_r = q;
     }
 }
Beispiel #3
0
        public string RegisterTable(Irowsource tableobject)
        {
            string alias;

            if (tableobject.subquery == null)
            {
                if (parent == null || (parent.TypeOfCommand != typeof(selectstatement) && parent.TypeOfCommand != typeof(insertselect)))
                {
                    /* aliasing for tables/views */
                    alias = GetNextAlias(tableobject.Tablename, tableobject);
                }
                else
                {
                    /* aliasing for subqueries */
                    alias = GetNextAlias("X", tableobject);
                }
            }
            else
            {
                /* aliasing for anonymous row sources (ad-hoc table expressions) */
                alias = GetNextAlias("S", tableobject);
            }
            /* complete */
            tableobject.AssignAlias(alias);
            return(alias);
        }
Beispiel #4
0
        protected override string GetFieldFunction(Irowsource qualifier, selectfield f, bool aliasthis)
        {
            string sx;

            switch (f.Function.func)
            {
            case selectfunctiondef.lpad:
                // RIGHT(REPLICATE(N'0',18)+field1,18)
                sx = String.Format("RIGHT(REPLICATE(N'{1}',{0})+{2},{3})", f.PaddingLength, f.PaddingChar, GetQualifiedFieldname(qualifier, f, true), f.PaddingLength);
                break;

            case selectfunctiondef.month:
                /* [dlatikay 20110613] */
                sx = String.Format("DATEPART(month,{0})", GetQualifiedFieldname(qualifier, f, true));
                break;

            case selectfunctiondef.year:
                /* [dlatikay 20161021] */
                sx = String.Format("DATEPART(year,{0})", GetQualifiedFieldname(qualifier, f, true));
                break;

            case selectfunctiondef.hour:
                /* [dlatikay 20110613] */
                sx = String.Format("DATEPART(hour,{0})", GetQualifiedFieldname(qualifier, f, true));
                break;

            case selectfunctiondef.quarter:
                /* [dlatikay 20110613] */
                sx = String.Format("DATEPART(quarter,{0})", GetQualifiedFieldname(qualifier, f, true));
                break;

            case selectfunctiondef.dayofweek:
                /* [dlatikay 20110613] */
                sx = String.Format("DATEPART(dw,{0})", GetQualifiedFieldname(qualifier, f, true));     /* ranging 1-7 */
                break;

            case selectfunctiondef.ft_rownumber:
                /* introduced [dlatikay 20110922] for fulltext search */
                sx = String.Format("ROW_NUMBER() OVER (ORDER BY F1.RANK DESC)");                              /* DL90384902390423942HJHJ394839 */
                RegisterParameter(new selectparam(db.MakeParamName("Token"), DbType.StringFixedLength, 255)); /* DL9284293042JJHJJ9899 for reason why this is here */
                break;

            default:
                return(base.GetFieldFunction(qualifier, f, aliasthis));
            }
            /* qualifier/asname logic */
            if (f.AsName != null && f.AsName.Length > 0)
            {
                return(sx + " AS " + QuoteFieldname(f.AsName));
            }
            else if (aliasthis)
            {
                return(sx + " AS " + QuoteFieldname(f.Fieldname));
            }
            else
            {
                return(sx);
            }
        }
Beispiel #5
0
 public void defaultqualifiers(Irowsource q)
 {
     defaultqualifier_l(q);
     if (is_binary)
     {
         defaultqualifier_r(q);
     }
 }
Beispiel #6
0
        private string GetNextAlias(string name, Irowsource tableobject)
        {
            int i = -1;

            while (RowsourceAliases.ContainsKey(GetAlias(name, ++i)))
            {
            }
            ;
            string alias = GetAlias(name, i);

            RowsourceAliases.Add(alias, tableobject);
            /* got unique now */
            return(alias);
        }
Beispiel #7
0
        protected override string GetFieldFunction(Irowsource qualifier, selectfield f, bool aliasthis)
        {
            string sx;

            switch (f.Function.func)
            {
            case selectfunctiondef.lpad:
                // LPad(field,length,'0')
                sx = String.Format("LPad({0},{1},'{2}')", GetQualifiedFieldname(qualifier, f, true), f.PaddingLength, f.PaddingChar);
                break;

            case selectfunctiondef.sp_hoursworked1:
                /* added [dlatikay 20101124]:
                 * cast(sum(hw.hoursworked/(to_date('01/'|| to_char(hw.calendarmonth+1) ||'/' || hw.calendaryear,'dd/mm/yyyy')-to_date('01/'|| hw.calendarmonth ||'/' || hw.calendaryear,'dd/mm/yyyy'))) as number(9,0))
                 * cast(sum({0}/(to_char(LAST_DAY(to_date('01/'|| CalendarMonth ||'/' || CalendarYear,'dd/mm/yyyy')),'DD'))) as number(9,0)) AS HoursWorked */
                sx = String.Format("cast(sum({0}/(to_char(LAST_DAY(to_date('01/'|| CalendarMonth ||'/' || CalendarYear,'dd/mm/yyyy')),'DD'))) as number(9,0))",
                                   GetQualifiedFieldname(qualifier, f, true)
                                   );
                break;

            case selectfunctiondef.month:
                /* [dlatikay 20110613] */
                sx = String.Format("to_number(to_char({0},'MM'))", GetQualifiedFieldname(qualifier, f, true));     /* ranging 1-12 */
                break;

            case selectfunctiondef.year:
                /* [dlatikay 20161021] */
                sx = String.Format("to_number(to_char({0},'YYYY'))", GetQualifiedFieldname(qualifier, f, true));     /* ranging 0000-9999 */
                break;

            case selectfunctiondef.hour:
                /* [dlatikay 20110613] */
                sx = String.Format("to_number(to_char({0},'HH24'))", GetQualifiedFieldname(qualifier, f, true));     /* ranging 0-23 */
                break;

            case selectfunctiondef.quarter:
                /* [dlatikay 20110613] */
                sx = String.Format("to_number(to_char({0},'Q'))", GetQualifiedFieldname(qualifier, f, true));     /* ranging 1-4 */
                break;

            case selectfunctiondef.dayofweek:
                /* [dlatikay 20110613] */
                sx = String.Format("to_number(to_char({0},'D'))", GetQualifiedFieldname(qualifier, f, true));     /* ranging 1-7, as opposed to "W"! */
                break;

            default:
                return(base.GetFieldFunction(qualifier, f, aliasthis));
            }
            /* finalize */
            if (f.AsName != null && f.AsName.Length > 0)
            {
                return(sx + " AS " + QuoteFieldname(f.AsName));
            }
            else if (aliasthis)
            {
                return(sx + " AS " + QuoteFieldname(f.Fieldname));
            }
            else
            {
                return(sx);
            }
        }