Exemple #1
0
 private void parseSubQueryColumnDefinition(TCreateViewSqlStatement createView, TSelectSqlStatement stmt, TableMetaData viewMetaData, ColumnImpactModel columnImpactModel)
 {
     if (stmt.SetOperatorType != ESetOperatorType.none)
     {
         parseSubQueryColumnDefinition(createView, stmt.LeftStmt, viewMetaData, columnImpactModel);
         parseSubQueryColumnDefinition(createView, stmt.RightStmt, viewMetaData, columnImpactModel);
     }
     else
     {
         int      columnCount = stmt.ResultColumnList.size();
         string[] aliasNames  = new string[columnCount];
         if (createView.ViewAliasClause != null)
         {
             columnCount = createView.ViewAliasClause.ViewAliasItemList.size();
             aliasNames  = new string[columnCount];
             TViewAliasItemList items = createView.ViewAliasClause.ViewAliasItemList;
             for (int i = 0; i < items.size(); i++)
             {
                 aliasNames[i] = items.getViewAliasItem(i).Alias.ToString();
             }
         }
         for (int i = 0; i < columnCount; i++)
         {
             TResultColumn resultColumn = stmt.ResultColumnList.getResultColumn(i);
             parseColumnDefinition(resultColumn, viewMetaData, columnImpactModel, aliasNames[i]);
         }
     }
 }
Exemple #2
0
        public View(TCreateViewSqlStatement view)
        {
            if (view == null)
            {
                throw new System.ArgumentException("Table arguments can't be null.");
            }

            id = ++Table.TABLE_ID;

            this.viewObject = view;

            TSourceToken startToken = viewObject.startToken;
            TSourceToken endToken   = viewObject.endToken;

            if (viewObject.ViewName != null)
            {
                startToken = viewObject.ViewName.startToken;
                endToken   = viewObject.ViewName.endToken;
                this.name  = viewObject.ViewName.ToString();
            }
            else
            {
                this.name = "";
                Console.Error.WriteLine();
                Console.Error.WriteLine("Can't get view name. View is ");
                Console.Error.WriteLine(view.ToString());
            }

            this.startPosition = new Tuple <long, long>(startToken.lineNo, startToken.columnNo);
            this.endPosition   = new Tuple <long, long>(endToken.lineNo, endToken.columnNo + endToken.astext.Length);
        }
 private void parseStatement(TCustomSqlStatement stmt)
 {
     if (!stmtList.Contains(stmt.ToString()))
     {
         stmtList.Add(stmt.ToString());
     }
     else
     {
         return;
     }
     if (stmt is TCreateViewSqlStatement)
     {
         TCreateViewSqlStatement createView = ((TCreateViewSqlStatement)stmt);
         parseCreateView(createView);
     }
     else if (stmt is TCreateTableSqlStatement && ((TCreateTableSqlStatement)stmt).SubQuery != null)
     {
         TCreateTableSqlStatement createTable = ((TCreateTableSqlStatement)stmt);
         parseCreateTable(createTable);
     }
     else if (stmt is TInsertSqlStatement && ((TInsertSqlStatement)stmt).SubQuery != null)
     {
         TInsertSqlStatement insert = ((TInsertSqlStatement)stmt);
         parseInsertStmt(insert);
     }
     if (stmt is TUseDatabase)
     {
         TUseDatabase use = (TUseDatabase)stmt;
         database = use.DatabaseName.ToString();
     }
 }
        public virtual void testWithCheckOption()
        {
            TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvdb2);

            sqlparser.sqltext = "CREATE VIEW V2 AS SELECT COL1 FROM V1 WITH check option";
            Assert.IsTrue(sqlparser.parse() == 0);
            TCreateViewSqlStatement createView        = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0);
            TRestrictionClause      restrictionClause = createView.RestrictionClause;

            Assert.IsTrue(restrictionClause.Type == TRestrictionClause.with_check_option);
        }
Exemple #5
0
        public void testCTEInCreateView()
        {
            TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza);

            sqlparser.sqltext = "CREATE OR REPLACE VIEW FCT_PI_CLAIM_EVENTS_IMPACT_SUMMARY_INSIGHT AS \n" + "\n" + "WITH CLAIM_LODGEMENT AS (\n" + "\n" + "     SELECT  CLAIM_ID\n" + "\t       , EVENT_TS                AS LODGEMENT_TIMESTAMP\n" + "     FROM (\t\n" + "\t \n" + "     SELECT       \n" + "       CCR_CC_HISTORY.CLAIMID        AS CLAIM_ID\n" + "     , CCR_CC_HISTORY.EVENTTIMESTAMP AS EVENT_TS \n" + "\t , ROW_NUMBER() OVER (PARTITION BY CLAIMID \n" + "\t                          ORDER BY CCR_CC_HISTORY.EVENTTIMESTAMP DESC\n" + "\t\t\t\t\t\t\t         , CCR_CC_HISTORY.ID DESC)\n" + "\t\t\t\t\t\t\t         AS OPEN_EVENT_DESC_SEQ\t         \n" + "       FROM CCR_CC_HISTORY CCR_CC_HISTORY\n" + "  \n" + "  LEFT JOIN (\n" + "    \tSELECT CCR_CC_TRANSACTION.CLAIMID                                     AS CLAIM_ID\n" + "             , MIN(CCR_CC_TRANSACTION.CREATETIME)                             AS ACTIVATION_DATETIME\n" + "          FROM CCR_CC_TRANSACTION CCR_CC_TRANSACTION   \n" + "      GROUP BY CCR_CC_TRANSACTION.CLAIMID \t\t\t\t\t  \n" + "\t      ) CLAIM_ACTIVATION\n" + "\t\t  \n" + "         ON CLAIM_ACTIVATION.CLAIM_ID\t  = CCR_CC_HISTORY.CLAIMID\n" + "  \n" + "       JOIN CCR_CCTL_HISTORYTYPE CCR_CCTL_HISTORYTYPE\n" + "         ON CCR_CCTL_HISTORYTYPE.ID    =  CCR_CC_HISTORY.\"xxxx\"\n" + "        AND CCR_CCTL_HISTORYTYPE.NAME IN ('xxxx', 'xxxx') \n" + "        AND CCR_CC_HISTORY.EXPOSUREID IS NULL   \n" + "\n" + "      WHERE CCR_CC_HISTORY.EVENTTIMESTAMP <= COALESCE(ACTIVATION_DATETIME, CCR_CC_HISTORY.EVENTTIMESTAMP)   \n" + "\t  \n" + ") AS OPEN_REOPEN_DATES\n" + "\n" + "      WHERE OPEN_EVENT_DESC_SEQ = 1\n" + "\n" + ")\n" + ", TRANSACTION_SUMMARY AS (\n" + "\n" + "SELECT *\n" + "FROM   INT_PI_CLAIM_FINANCIALS_LIVE\n" + "\n" + ")\n" + "   SELECT \n" + "          CCR_CC_CLAIM.ID                                  AS CLAIM_ID\n" + "\t\t, CCR_CC_CLAIM.CLAIMNUMBER                         AS CLAIM_NUMBER\n" + "\t\t, CCR_CC_POLICY.POLICYNUMBER                       AS POLICY_NUMBER\n" + "\t\t\n" + "\t\t \n" + "\t\t, CCR_CCTL_SC_BRAND.NAME                           AS BRAND\n" + "\t\t, CCR_CC_CATASTROPHE.NAME                          AS CATASTROPHE_NAME   \n" + "        , CCR_CC_CATASTROPHE.CATASTROPHENUMBER             AS CATASTROPHE_CODE\n" + "\t    , CCR_CCTL_SC_CLAIMTYPE.NAME                       AS CLAIM_TYPE\t\n" + "\t\t, DATE(CCR_CC_CLAIM.CLOSEDATE)                     AS CLOSED_DATE\t  \n" + "\t\t, INT_PI_CLAIM_EVENT.EVENT_NAME                    AS EVENT_NAME\n" + "\t    , CCR_CCTL_SC_CLAIMPRIORITY.NAME                   AS HOME_CLAIM_CATEGORY\n" + "        , DATE(CLAIM_LODGEMENT.LODGEMENT_TIMESTAMP)        AS LODGEMENT_DATE\n" + "\t\t, DATE(CLAIM_LODGEMENT.LODGEMENT_TIMESTAMP)        AS LODGEMENT_TIME\t\t\n" + "\t\t, COALESCE(CCR_CCTL_SC_LOSSCAUSE.NAME, CCR_CCTL_LOSSCAUSE.NAME)\n" + "\t\t                                                   AS LOSS_CAUSE\t\t\n" + "\t\t, DATE(CCR_CC_CLAIM.LOSSDATE)                      AS LOSS_DATE\n" + "\n" + "\t    , CCR_CC_ADDRESS_LOSS.POSTALCODE                   AS LOSS_POSTCODE\n" + "\t    , CCR_CCX_SC_PAFPOSTCODES.LOCALITY                 AS LOSS_POSTCODE_LABEL\t  \n" + "\t    , UPPER(CCR_CC_ADDRESS_LOSS.CITY)                  AS LOSS_SUBURB\n" + "\t    , CCR_CCTL_STATE_LOSS.NAME                         AS LOSS_STATE\n" + "\t    , CASE WHEN CCR_CCTL_LOSSTYPE.NAME = 'xxxx' \n" + "\t\t       THEN 'Home' \n" + "\t\t\t   ELSE  CCR_CCTL_LOSSTYPE.NAME \n" + "\t\t   END                                             AS LOSS_TYPE\n" + "\t    , CAST(CASE WHEN CCR_CCTL_LOSSTYPE.TYPECODE = 'xxxx' \n" + "\t                 AND CCR_CCTL_SC_BRAND.TYPECODE = 'xxxx' \n" + "\t\t  \t        THEN 'xxxx'\n" + "\t                WHEN CCR_CCTL_LOSSTYPE.TYPECODE = 'xxxx' \n" + "\t\t\t         AND CCR_CCTL_VEHICLESTYLE.TYPECODE IN ('xxxx','xxxx','xxxx','xxxx') \n" + "\t\t\t        THEN 'xxxx'\n" + "\t\t\t        ELSE 'xxxx'\n" + "\t           END AS CHAR(1))                             AS SPECIALIST_CLAIM_FLAG\t\n" + "\t   , CAST(CASE WHEN CCR_CC_INCIDENT.VEHICLEOPERABLE = 0 \n" + "\t              THEN 'xxxx' \n" + "\t\t\t      ELSE 'xxxx' \n" + "\t\t      END AS CHAR(1))                              AS VEHICLE_DRIVABLE_FLAG\n" + "\t   \t\t  \n" + "\n" + "       \n" + "\t  , CAST(1 AS INTEGER)                                 AS CLAIM_VOLUME\n" + "\t  , TRANSACTION_SUMMARY.NET_INCURRED_EX_GST          \n" + "\t  , TRANSACTION_SUMMARY.NET_INCURRED                   AS SYSTEM_COST\t\t\n" + "\t  \n" + "\t   \n" + "\t  , CCR_CC_CLAIM_MAXTS.MAX_COMMIT_TIMESTAMP\n" + "                                \n" + "     FROM  CCR_CC_CLAIM CCR_CC_CLAIM\n" + "\t \n" + "\t JOIN  TRANSACTION_SUMMARY TRANSACTION_SUMMARY\n" + "\t   ON  TRANSACTION_SUMMARY.CLAIM_ID                    = CCR_CC_CLAIM.ID\n" + "\t\t \n" + "     JOIN  CCR_CC_POLICY CCR_CC_POLICY\n" + "       ON  CCR_CC_CLAIM.POLICYID                           = CCR_CC_POLICY.ID\n" + "       \n" + "     JOIN  CCR_CCTL_SC_BRAND CCR_CCTL_SC_BRAND\n" + "       ON  CCR_CCTL_SC_BRAND.ID                            = CCR_CC_POLICY.SC_BRAND  \t   \n" + "\t   \n" + "     JOIN  CCR_CCTL_LOSSTYPE CCR_CCTL_LOSSTYPE\n" + "       ON  CCR_CC_CLAIM.LOSSTYPE                           = CCR_CCTL_LOSSTYPE.ID\t \n" + "\t   \n" + "     JOIN  CCR_CC_ADDRESS CCR_CC_ADDRESS_LOSS\n" + "       ON  CCR_CC_ADDRESS_LOSS.ID                          = CCR_CC_CLAIM.LOSSLOCATIONID \n" + "\t   \n" + "     JOIN  CCR_CCTL_STATE CCR_CCTL_STATE_LOSS\n" + "       ON  CCR_CC_ADDRESS_LOSS.STATE                       = CCR_CCTL_STATE_LOSS.ID\t  \n" + "\t   \n" + "\t     \n" + "     JOIN  (\n" + "\t      SELECT POSTCODE\n" + "\t\t       , LOCALITY\n" + "\t\t\t   , ROW_NUMBER() OVER (PARTITION BY POSTCODE \n" + "\t\t\t                            ORDER BY LOCALITY) \n" + "\t\t\t\t\t\t\t\t\t\t          AS ALPHA_ORDER \n" + "\t        FROM CCR_CCX_SC_PAFPOSTCODES\n" + "\t\t   ) CCR_CCX_SC_PAFPOSTCODES\n" + "\t\t   \n" + "       ON CCR_CCX_SC_PAFPOSTCODES.POSTCODE                 = CCR_CC_ADDRESS_LOSS.POSTALCODE\n" + "      AND CCR_CCX_SC_PAFPOSTCODES.ALPHA_ORDER              = 1 \t   \n" + "\t  \n" + "     JOIN  (SELECT MAX(COMMIT_TIMESTAMP) AS MAX_COMMIT_TIMESTAMP FROM CCR_CC_CLAIM) CCR_CC_CLAIM_MAXTS\n" + "\t   ON  1=1\n" + "\t   \n" + "LEFT JOIN  CCR_CCTL_LOSSCAUSE CCR_CCTL_SC_LOSSCAUSE\n" + "       ON  CCR_CCTL_SC_LOSSCAUSE.ID                        = CCR_CC_CLAIM.SC_LOSSCAUSE  \n" + "\t   \n" + "LEFT JOIN  CCR_CCTL_LOSSCAUSE CCR_CCTL_LOSSCAUSE\n" + "       ON  CCR_CCTL_LOSSCAUSE.ID                           = CCR_CC_CLAIM.LOSSCAUSE    \n" + "  \n" + "LEFT JOIN  CCR_CCTL_SC_YESNOONLY CCR_CCTL_SC_YESNOONLY\n" + "       ON CCR_CCTL_SC_YESNOONLY.ID                         = CCR_CC_CLAIM.SC_INCIDENTREPORT\n" + "\t \n" + "LEFT JOIN CLAIM_LODGEMENT CLAIM_LODGEMENT\t\t  \n" + "       ON CLAIM_LODGEMENT.CLAIM_ID                         = CCR_CC_CLAIM.ID\n" + "\t\t\n" + "LEFT JOIN  CCR_CC_CATASTROPHE CCR_CC_CATASTROPHE\n" + "       ON  CCR_CC_CATASTROPHE.ID                           = CCR_CC_CLAIM.CATASTROPHEID \t\n" + "\t   \n" + "LEFT JOIN  INT_PI_CLAIM_EVENT INT_PI_CLAIM_EVENT\n" + "       ON  INT_PI_CLAIM_EVENT.CLAIM_ID                     = CCR_CC_CLAIM.ID\n" + "\t   \n" + "LEFT JOIN  CCR_CC_INCIDENT CCR_CC_INCIDENT\n" + "       ON  CCR_CC_INCIDENT.CLAIMID                         = CCR_CC_CLAIM.ID\n" + "\n" + "LEFT JOIN  CCR_CCTL_LOSSPARTYTYPE CCR_CCTL_LOSSPARTYTYPE_PR\n" + "       ON  CCR_CCTL_LOSSPARTYTYPE_PR.ID                    = CCR_CC_INCIDENT.SC_LOSSPARTY\n" + "\t   \n" + "LEFT JOIN  CCR_CCTL_LOSSPARTYTYPE CCR_CCTL_LOSSPARTYTYPE_AUTO\n" + "       ON  CCR_CCTL_LOSSPARTYTYPE_AUTO.ID                  = CCR_CC_INCIDENT.VEHICLELOSSPARTY\t   \n" + "\t   \n" + "LEFT JOIN  CCR_CC_VEHICLE CCR_CC_VEHICLE\n" + "       ON  CCR_CC_VEHICLE.ID                               = CCR_CC_INCIDENT.VEHICLEID\n" + "\t   \n" + "LEFT JOIN  CCR_CCTL_VEHICLESTYLE CCR_CCTL_VEHICLESTYLE\n" + "       ON  CCR_CCTL_VEHICLESTYLE.ID                        = CCR_CC_VEHICLE.STYLE  \t  \n" + "\t   \n" + "LEFT JOIN  CCR_CCTL_SC_CLAIMPRIORITY CCR_CCTL_SC_CLAIMPRIORITY\n" + "       ON  CCR_CCTL_SC_CLAIMPRIORITY.ID                    = CCR_CC_CLAIM.SC_USERCLAIMPRIORITY\n" + "\n" + "LEFT JOIN  CCR_CCTL_SC_CLAIMTYPE CCR_CCTL_SC_CLAIMTYPE\n" + "       ON  CCR_CCTL_SC_CLAIMTYPE.ID\t                       = CCR_CC_CLAIM.SC_CLAIMTYPE  \t  \t   \n" + "\n" + "    WHERE CCR_CC_CLAIM.RETIRED                             = 0\n" + "      AND CCR_CC_POLICY.RETIRED                            = 0\n" + "\t     \n" + "\t  AND  COALESCE(CCR_CCTL_SC_YESNOONLY.NAME,'xxxx')      <> 'xxxx'\n" + "\t     \n" + "\t  AND (   CCR_CCTL_LOSSTYPE.TYPECODE                   = 'xxxx' \n" + "\t     OR ( CCR_CCTL_LOSSPARTYTYPE_AUTO.TYPECODE         = 'xxxx' AND CCR_CCTL_LOSSTYPE.TYPECODE = 'xxxx')\n" + "\t\t  )\n" + "\t\t \t                                     \n" + ";";
            Assert.IsTrue(sqlparser.parse() == 0);
            TCreateViewSqlStatement viewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0);

            Assert.IsTrue(viewSqlStatement.ViewName.ToString().Equals("FCT_PI_CLAIM_EVENTS_IMPACT_SUMMARY_INSIGHT", StringComparison.CurrentCultureIgnoreCase));
            TSelectSqlStatement select = viewSqlStatement.Subquery;

            Console.WriteLine(select.CteList.size());
        }
Exemple #6
0
        public void testViewAlias()
        {
            TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle);

            sqlparser.sqltext = "CREATE OR REPLACE FORCE VIEW \"DEV_602_MEDIUM_TC\".\"AP20_INVOICE_DISTRIBUTIONS\" (\"A$ACCRUAL_POSTED_FLAG\", \"A$DISTR$ACCOUNT\", \"A$DISTR$COMPANY\", \"A$DISTR$DEPARTMENT\", \"A$DISTR$PRODUCT\", \"A$DISTR$SUB_ACCOUNT\", \"A$EXPENDITURE_ORGANIZATION_NAM\", \"A$GL_DATE\", \"A$INVOICE_DATE\", \"A$INVOICE_NUMBER\", \"A$POSTED_FLAG\", \"A$PROJECT_NAME\", \"A$PROJECT_NUMBER\", \"A$VENDOR_NAME\", \"A$VENDOR_SITE_CODE\", \"A$ZZ__________________________\", \"APLIAB$OPERATIONS_ACCOUNTING_F\", \"ACCRUAL_POSTED_FLAG\", \"AMOUNT\", \"AMOUNT_BASE\", \"ASSETS_ADDITION_CODE\", \"ASSETS_TRACKING_FLAG\", \"BASE_AMOUNT\", \"BASE_CURRENCY_CODE\", \"BASE_INVOICE_PRICE_VARIANCE\", \"BASE_QUANTITY_VARIANCE\", \"DESCRIPTION\", \"DISTR$ACCOUNT\", \"DISTR$COMPANY\", \"DISTR$DEPARTMENT\", \"DISTR$OPERATIONS_ACCOUNTING_FL\", \"DISTR$PRODUCT\", \"DISTR$SUB_ACCOUNT\", \"DISTRIBUTION_CREATION_DATE\", \"DISTRIBUTION_LINE_NUMBER\", \"EARLIEST_SETTLEMENT_DATE\", \"EXCHANGE_DATE\", \"EXCHANGE_RATE\", \"EXCHANGE_RATE_TYPE\", \"EXCHANGE_RATE_VARIANCE\", \"EXPENDITURE_ITEM_DATE\", \"EXPENDITURE_ORGANIZATION_NAME\", \"EXPENDITURE_TYPE\", \"EXPENSE_JUSTIFICATION\", \"FINAL_MATCH_FLAG\", \"GL_DATE\", \"HOLD_MATCH_STATUS\", \"INV$ATTRIBUTE_CATEGORY\", \"INV$MISC_VENDOR_ADDRESS\", \"INV$MISC_VENDOR_CITY\", \"INV$MISC_VENDOR_NAME\", \"INV$MISC_VENDOR_STATE\", \"INV$MISC_VENDOR_ZIP\", \"INCOME_TAX_REGION\", \"INCOME_TAX_TYPE\", \"INVOICE_CURRENCY_CODE\", \"INVOICE_DATE\", \"INVOICE_NUMBER\", \"INVOICE_PAYMENT_STATUS\", \"INVOICE_PRICE_VARIANCE\", \"INVOICE_PRICE_VARIANCE_BASE\", \"INVOICE_SOURCE\", \"INVOICE_TYPE_LOOKUP_CODE\", \"JOURNAL_BATCH_DESCRIPTION\", \"JOURNAL_BATCH_NAME\", \"JOURNAL_BATCH_POSTED_DATE\", \"JOURNAL_BATCH_STATUS\", \"LINE_TYPE_LOOKUP_CODE\", \"PA_ADDITION_FLAG\", \"PA_QUANTITY\", \"PERIOD_NAME\", \"POSTED_AMOUNT\", \"POSTED_AMOUNT_BASE\", \"POSTED_BASE_AMOUNT\", \"POSTED_FLAG\", \"PREPAY_AMOUNT_REMAINING\", \"PREPAY_AMOUNT_REMAINING_BASE\", \"PRICE_VAR$OPERATIONS_ACCOUNTIN\", \"PROJECT_NAME\", \"PROJECT_NUMBER\", \"QUANTITY_INVOICED\", \"QUANTITY_VARIANCE\", \"REVERSAL_FLAG\", \"STAT_AMOUNT\", \"TASK_NAME\", \"TASK_NUMBER\", \"UNIT_PRICE\", \"UNIT_PRICE_BASE\", \"VAT_CODE\", \"VENDOR_EXCHANGE_DATE\", \"VENDOR_EXCHANGE_RATE\", \"VENDOR_EXCHANGE_RATE_TYPE\", \"VENDOR_NAME\", \"VENDOR_PREPAY_AMOUNT\", \"VENDOR_PREPAY_AMOUNT_BASE\", \"VENDOR_SITE_CODE\", \"Z$$_________________________\", \"Z$AP20_INVOICE_DISTRIBUTIONS\", \"Z$AP20_INVOICES\", \"Z$GL_CHART_OF_ACCOUNTS\") AS\n" + "  SELECT\n" + "/*+ RULE */\n" + "   IDSTR.ACCRUAL_POSTED_FLAG A$Accrual_Posted_Flag,\n" + "   Distr.SEGMENT3 A$Distr$Account,\n" + "   Distr.SEGMENT1 A$Distr$Company,\n" + "   Distr.SEGMENT2 A$Distr$Department,\n" + "   Distr.SEGMENT5 A$Distr$Product,\n" + "   Distr.SEGMENT4 A$Distr$Sub_Account,\n" + "   Expenditure_Organization_Name.NAME A$Expenditure_Organization_Nam,\n" + "   IDSTR.ACCOUNTING_DATE A$Gl_Date,\n" + "   INV.INVOICE_DATE A$Invoice_Date,\n" + "   INV.INVOICE_NUM A$Invoice_Number,\n" + "   IDSTR.POSTED_FLAG A$Posted_Flag,\n" + "   PROJ.NAME A$Project_Name,\n" + "   PROJ.SEGMENT1 A$Project_Number,\n" + "   VEND.VENDOR_NAME A$Vendor_Name,\n" + "   VCODE.VENDOR_SITE_CODE A$Vendor_Site_Code,\n" + "   'A$ZZ__________________________Copyright Noetix Corporation 1992-2009'\n" + "A$ZZ__________________________,\n" + "   APLiab.SEGMENT1 ||'-'||APLiab.SEGMENT2 ||'-'||APLiab.SEGMENT3\n" + "||'-'||APLiab.SEGMENT4 ||'-'||APLiab.SEGMENT5 APLiab$Operations_Accounting_F,\n" + "   IDSTR.ACCRUAL_POSTED_FLAG Accrual_Posted_Flag,\n" + "   NVL(IDSTR.AMOUNT,0) Amount,\n" + "   NVL(IDSTR.BASE_AMOUNT,DECODE(INV.INVOICE_CURRENCY_CODE,\n" + "BOOK.CURRENCY_CODE,NVL(IDSTR.AMOUNT,0),NULL)) Amount_Base,\n" + "   NVL(IDSTR.ASSETS_ADDITION_FLAG,'N') Assets_Addition_Code,\n" + "   IDSTR.ASSETS_TRACKING_FLAG Assets_Tracking_Flag,\n" + "   NVL(IDSTR.BASE_AMOUNT,DECODE(INV.INVOICE_CURRENCY_CODE,\n" + "BOOK.CURRENCY_CODE,NVL(IDSTR.AMOUNT,0),NULL)) Base_Amount,\n" + "   BOOK.CURRENCY_CODE Base_Currency_Code,\n" + "   IDSTR.BASE_INVOICE_PRICE_VARIANCE Base_Invoice_Price_Variance,\n" + "   IDSTR.BASE_QUANTITY_VARIANCE Base_Quantity_Variance,\n" + "   IDSTR.DESCRIPTION Description,\n" + "   Distr.SEGMENT3 Distr$Account,\n" + "   Distr.SEGMENT1 Distr$Company,\n" + "   Distr.SEGMENT2 Distr$Department,\n" + "   Distr.SEGMENT1 ||'-'||Distr.SEGMENT2 ||'-'||Distr.SEGMENT3\n" + "||'-'||Distr.SEGMENT4 ||'-'||Distr.SEGMENT5 Distr$Operations_Accounting_Fl,\n" + "   Distr.SEGMENT5 Distr$Product,\n" + "   Distr.SEGMENT4 Distr$Sub_Account,\n" + "   IDSTR.CREATION_DATE Distribution_Creation_Date,\n" + "   IDSTR.DISTRIBUTION_LINE_NUMBER Distribution_Line_Number,\n" + "   INV.EARLIEST_SETTLEMENT_DATE Earliest_Settlement_Date,\n" + "   IDSTR.EXCHANGE_DATE Exchange_Date,\n" + "   IDSTR.EXCHANGE_RATE Exchange_Rate,\n" + "   IDSTR.EXCHANGE_RATE_TYPE Exchange_Rate_Type,\n" + "   IDSTR.EXCHANGE_RATE_VARIANCE Exchange_Rate_Variance,\n" + "   IDSTR.EXPENDITURE_ITEM_DATE Expenditure_Item_Date,\n" + "   Expenditure_Organization_Name.NAME Expenditure_Organization_Name,\n" + "   IDSTR.EXPENDITURE_TYPE Expenditure_Type,\n" + "   IDSTR.JUSTIFICATION Expense_Justification,\n" + "   NVL(IDSTR.FINAL_MATCH_FLAG,'N') Final_Match_Flag,\n" + "   IDSTR.ACCOUNTING_DATE Gl_Date,\n" + "   SUBSTR (DECODE (IDSTR.MATCH_STATUS_FLAG, 'N', 'Not Tested for Approval',\n" + "'T', 'Failed Approval Testing', 'A', 'Approved', NULL,\n" + "'Not Tested for Approval'\n" + ", 'Undefined Value: ' || IDSTR.MATCH_STATUS_FLAG), 1, 23) Hold_Match_Status,\n" + "   INV.ATTRIBUTE_CATEGORY INV$ATTRIBUTE_CATEGORY,\n" + "   decode(INV.ATTRIBUTE_CATEGORY,\n" + "'One-Time',INV.ATTRIBUTE4,null) INV$Misc_Vendor_Address,\n" + "   decode(\n" + "INV.ATTRIBUTE_CATEGORY,'One-Time',INV.ATTRIBUTE5,null) INV$Misc_Vendor_City,\n" + "   decode(\n" + "INV.ATTRIBUTE_CATEGORY,'One-Time',INV.ATTRIBUTE3,null) INV$Misc_Vendor_Name,\n" + "   decode(\n" + "INV.ATTRIBUTE_CATEGORY,'One-Time',INV.ATTRIBUTE6,null) INV$Misc_Vendor_State,\n" + "   decode(\n" + "INV.ATTRIBUTE_CATEGORY,'One-Time',INV.ATTRIBUTE7,null) INV$Misc_Vendor_Zip,\n" + "   IDSTR.INCOME_TAX_REGION Income_Tax_Region,\n" + "   IDSTR.TYPE_1099 Income_Tax_Type,\n" + "   INV.INVOICE_CURRENCY_CODE Invoice_Currency_Code,\n" + "   INV.INVOICE_DATE Invoice_Date,\n" + "   INV.INVOICE_NUM Invoice_Number,\n" + "   DECODE(INV.PAYMENT_STATUS_FLAG,'N'\n" + ",'No','Y','Yes','P','Partial',INV.PAYMENT_STATUS_FLAG) Invoice_Payment_Status,\n" + "   IDSTR.INVOICE_PRICE_VARIANCE Invoice_Price_Variance,\n" + "   NVL(IDSTR.BASE_INVOICE_PRICE_VARIANCE,DECODE(INV.INVOICE_CURRENCY_CODE,\n" + "BOOK.CURRENCY_CODE,\n" + "IDSTR.INVOICE_PRICE_VARIANCE,NULL)) Invoice_Price_Variance_Base,\n" + "   INV.SOURCE Invoice_Source,\n" + "   INV.INVOICE_TYPE_LOOKUP_CODE Invoice_Type_Lookup_Code,\n" + "   GLBTC.DESCRIPTION Journal_Batch_Description,\n" + "   GLBTC.NAME Journal_Batch_Name,\n" + "   GLBTC.POSTED_DATE Journal_Batch_Posted_Date,\n" + "   GLBTC.STATUS Journal_Batch_Status,\n" + "   IDSTR.LINE_TYPE_LOOKUP_CODE Line_Type_Lookup_Code,\n" + "   NVL(IDSTR.PA_ADDITION_FLAG,'Y') Pa_Addition_Flag,\n" + "   NVL(IDSTR.PA_QUANTITY,0) Pa_Quantity,\n" + "   IDSTR.PERIOD_NAME Period_Name,\n" + "   NVL(IDSTR.POSTED_AMOUNT,0) Posted_Amount,\n" + "   NVL(IDSTR.POSTED_BASE_AMOUNT,DECODE(INV.INVOICE_CURRENCY_CODE,\n" + "BOOK.CURRENCY_CODE,NVL(IDSTR.POSTED_AMOUNT,0),NULL)) Posted_Amount_Base,\n" + "   NVL(IDSTR.POSTED_BASE_AMOUNT,DECODE(INV.INVOICE_CURRENCY_CODE,\n" + "BOOK.CURRENCY_CODE,NVL(IDSTR.POSTED_AMOUNT,0),NULL)) Posted_Base_Amount,\n" + "   IDSTR.POSTED_FLAG Posted_Flag,\n" + "   NVL (IDSTR.PREPAY_AMOUNT_REMAINING, DECODE (INV.INVOICE_TYPE_LOOKUP_CODE,\n" + "'PREPAYMENT',  DECODE(INV.PAYMENT_STATUS_FLAG,'Y',  DECODE(\n" + "IDSTR.LINE_TYPE_LOOKUP_CODE,\n" + "'ITEM', IDSTR.AMOUNT,0), 0), 0)) Prepay_Amount_Remaining,\n" + "   (NVL (IDSTR.PREPAY_AMOUNT_REMAINING, DECODE(INV.INVOICE_TYPE_LOOKUP_CODE,\n" + "'PREPAYMENT',  DECODE(INV.PAYMENT_STATUS_FLAG,'Y',  DECODE(\n" + "IDSTR.LINE_TYPE_LOOKUP_CODE,'ITEM', IDSTR.AMOUNT,0), 0), 0)) * NVL (\n" + "IDSTR.EXCHANGE_RATE, DECODE (INV.INVOICE_CURRENCY_CODE,\n" + "BOOK.CURRENCY_CODE, 1,NULL))) Prepay_Amount_Remaining_Base,\n" + "   Price_Var.SEGMENT1 ||'-'||Price_Var.SEGMENT2 ||'-'||Price_Var.SEGMENT3 ||\n" + "'-'\n" + "||Price_Var.SEGMENT4 ||'-'||Price_Var.SEGMENT5 Price_Var$Operations_Accountin,\n" + "   PROJ.NAME Project_Name,\n" + "   PROJ.SEGMENT1 Project_Number,\n" + "   NVL(IDSTR.QUANTITY_INVOICED,0) Quantity_Invoiced,\n" + "   IDSTR.QUANTITY_VARIANCE Quantity_Variance,\n" + "   NVL(IDSTR.REVERSAL_FLAG,'N') Reversal_Flag,\n" + "   IDSTR.STAT_AMOUNT Stat_Amount,\n" + "   TASK.TASK_NAME Task_Name,\n" + "   TASK.TASK_NUMBER Task_Number,\n" + "   IDSTR.UNIT_PRICE Unit_Price,\n" + "   (IDSTR.UNIT_PRICE)*NVL(IDSTR.EXCHANGE_RATE,\n" + "DECODE(INV.INVOICE_CURRENCY_CODE,BOOK.CURRENCY_CODE,1,NULL)) Unit_Price_Base,\n" + "   APTXC.NAME Vat_Code,\n" + "   INV.EXCHANGE_DATE Vendor_Exchange_Date,\n" + "   INV.EXCHANGE_RATE Vendor_Exchange_Rate,\n" + "   INV.EXCHANGE_RATE_TYPE Vendor_Exchange_Rate_Type,\n" + "   VEND.VENDOR_NAME Vendor_Name,\n" + "   CASE WHEN IDSTR.LINE_TYPE_LOOKUP_CODE ='PREPAY'          OR (\n" + "IDSTR.LINE_TYPE_LOOKUP_CODE = 'TAX'              AND\n" + "IDSTR.PREPAY_TAX_PARENT_ID\n" + "IS NOT NULL)      THEN IDSTR.AMOUNT      ELSE NULL END Vendor_Prepay_Amount,\n" + "   CASE WHEN IDSTR.LINE_TYPE_LOOKUP_CODE ='PREPAY'          OR (\n" + "IDSTR.LINE_TYPE_LOOKUP_CODE = 'TAX'              AND\n" + "IDSTR.PREPAY_TAX_PARENT_ID IS NOT NULL)      THEN NVL(IDSTR.BASE_AMOUNT,\n" + "DECODE(INV.INVOICE_CURRENCY_CODE,BOOK.CURRENCY_CODE,\n" + "NVL(IDSTR.AMOUNT,0),NULL))      ELSE NULL END Vendor_Prepay_Amount_Base,\n" + "   VCODE.VENDOR_SITE_CODE Vendor_Site_Code,\n" + "   'Z$$_________________________' Z$$_________________________,\n" + "   IDSTR.rowid Z$AP20_Invoice_Distributions,\n" + "   INV.rowid Z$AP20_Invoices,\n" + "   Distr.rowid Z$GL_Chart_Of_Accounts\n" + "  FROM\n" + "       HR.HR_ALL_ORGANIZATION_UNITS_TL Expenditure_Organization_Name,\n" + "       GL.GL_CODE_COMBINATIONS Price_Var,\n" + "       GL.GL_CODE_COMBINATIONS Distr,\n" + "       GL.GL_CODE_COMBINATIONS APLiab,\n" + "       PO.PO_VENDORS VEND,\n" + "       PO.PO_VENDOR_SITES_ALL VCODE,\n" + "       PA.PA_TASKS TASK,\n" + "       PA.PA_PROJECTS_ALL PROJ,\n" + "       AP.AP_TAX_CODES_ALL APTXC,\n" + "       GL.GL_SETS_OF_BOOKS BOOK,\n" + "       GL.GL_JE_BATCHES GLBTC,\n" + "       GL.GL_JE_HEADERS GLHDR,\n" + "       GL.GL_JE_LINES GLLIN,\n" + "       GL.GL_IMPORT_REFERENCES GLREF,\n" + "       AP.AP_ACCOUNTING_EVENTS_ALL AE,\n" + "       AP.AP_AE_HEADERS_ALL AEH,\n" + "       AP.AP_AE_LINES_ALL AEL,\n" + "       AP.AP_INVOICES_ALL INV,\n" + "       DEV_586_SMALL_DE.AP20_OU_ACL_Map_Base XMAP,\n" + "       AP.AP_INVOICE_DISTRIBUTIONS_ALL IDSTR\n" + "WHERE 'Copyright Noetix Corporation 1992-2009' is not null\n" + "   AND IDSTR.INVOICE_ID                    = INV.INVOICE_ID\n" + "   AND NVL (IDSTR.ORG_ID, -9999) = XMAP.ORG_ID\n" + "   AND XMAP.APPLICATION_INSTANCE = '45'\n" + "   /*** SET_OF_BOOKS_ID      => 1 ***/\n" + "   /*** CHART_OF_ACCOUNTS_ID => 101 ***/\n" + "   /*** ORG_ID      => 204 ***/\n" + "   AND IDSTR.SET_OF_BOOKS_ID = XMAP.SET_OF_BOOKS_ID\n" + "   AND IDSTR.ACCOUNTING_EVENT_ID = AE.ACCOUNTING_EVENT_ID (+)\n" + "   AND AE.SOURCE_TABLE (+)= 'AP_INVOICES'\n" + "   AND (AE.SOURCE_ID IS NULL OR\n" + "        AE.SOURCE_ID = INV.INVOICE_ID)\n" + "   AND AE.ACCOUNTING_EVENT_ID = AEH.ACCOUNTING_EVENT_ID (+)\n" + "   AND IDSTR.INVOICE_DISTRIBUTION_ID = AEL.SOURCE_ID (+)\n" + "   AND IDSTR.DIST_CODE_COMBINATION_ID = AEL.CODE_COMBINATION_ID (+)\n" + "   AND AEL.SOURCE_TABLE (+) = 'AP_INVOICE_DISTRIBUTIONS'\n" + "   AND ( ( AEL.SOURCE_ID IS NULL) OR\n" + "         ( AEL.AE_LINE_ID = ( SELECT MIN(AEL1.AE_LINE_ID)\n" + "                                FROM AP.AP_AE_LINES_ALL AEL1\n" + "                               WHERE AEL1.AE_HEADER_ID = AEL.AE_HEADER_ID\n" + "                            AND AEL1.SOURCE_TABLE = 'AP_INVOICE_DISTRIBUTIONS'\n" + "                               AND AEL1.SOURCE_ID = AEL.SOURCE_ID\n" + "                    AND AEL1.CODE_COMBINATION_ID = AEL.CODE_COMBINATION_ID)) )\n" + "   AND ((AEL.AE_HEADER_ID IS NULL OR AEH.AE_HEADER_ID IS NULL) OR\n" + "         AEL.AE_HEADER_ID = AEH.AE_HEADER_ID)\n" + "   AND (AEH.AE_HEADER_ID IS NULL OR\n" + "        AEH.SET_OF_BOOKS_ID = IDSTR.SET_OF_BOOKS_ID)\n" + "   AND AEL.GL_SL_LINK_ID = GLREF.GL_SL_LINK_ID (+)\n" + "   AND GLREF.GL_SL_LINK_TABLE (+) = 'APECL'\n" + "   AND GLREF.JE_HEADER_ID  =  GLLIN.JE_HEADER_ID (+)\n" + "   AND GLREF.JE_LINE_NUM   =  GLLIN.JE_LINE_NUM (+)\n" + "   AND GLLIN.JE_HEADER_ID = GLHDR.JE_HEADER_ID (+)\n" + "   AND GLHDR.JE_BATCH_ID  = GLBTC.JE_BATCH_ID (+)\n" + "   AND IDSTR.TAX_CODE_ID = APTXC.TAX_ID  (+)\n" + "   AND BOOK.SET_OF_BOOKS_ID = XMAP.SET_OF_BOOKS_ID\n" + "   AND BOOK.SET_OF_BOOKS_ID +0  = IDSTR.SET_OF_BOOKS_ID\n" + "   AND NVL (AE.ORG_ID(+), IDSTR.ORG_ID) = IDSTR.ORG_ID\n" + "   AND NVL (AEH.ORG_ID, XMAP.ORG_ID) =XMAP.ORG_ID\n" + "   AND NVL (AEL.ORG_ID, XMAP.ORG_ID) =XMAP.ORG_ID\n" + "   AND NVL (APTXC.ORG_ID, XMAP.ORG_ID) =XMAP.ORG_ID\n" + "   AND NVL (INV.ORG_ID, -9999) =XMAP.ORG_ID\n" + "   AND PROJ.PROJECT_ID(+) = IDSTR.PROJECT_ID\n" + "   AND TASK.TASK_ID(+) = IDSTR.TASK_ID\n" + "   AND INV.VENDOR_SITE_ID = VCODE.VENDOR_SITE_ID(+)\n" + "   AND NVL (VCODE.ORG_ID, XMAP.ORG_ID ) = XMAP.ORG_ID\n" + "   AND VEND.VENDOR_ID +0 = INV.VENDOR_ID\n" + "   AND IDSTR.ACCTS_PAY_CODE_COMBINATION_ID = APLiab.CODE_COMBINATION_ID(+)\n" + "   AND IDSTR.DIST_CODE_COMBINATION_ID = Distr.CODE_COMBINATION_ID\n" + "   AND IDSTR.PRICE_VAR_CODE_COMBINATION_ID = Price_Var.CODE_COMBINATION_ID(+)\n" + "   AND IDSTR.EXPENDITURE_ORGANIZATION_ID\n" + "= Expenditure_Organization_Name.ORGANIZATION_ID(+)\n" + "   AND Expenditure_Organization_Name.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE";

            Assert.IsTrue(sqlparser.parse() == 0);
            TCreateViewSqlStatement createView = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0);
            TViewAliasClause        va         = createView.ViewAliasClause;
            TObjectName             o          = va.ViewAliasItemList.getViewAliasItem(0).Alias;

            Assert.IsTrue(o.ToString().Equals("\"A$ACCRUAL_POSTED_FLAG\"", StringComparison.CurrentCultureIgnoreCase));
        }
Exemple #7
0
        private static void AnalyzeCreateViewStmt(TCreateViewSqlStatement stmt)
        {
            TCreateViewSqlStatement createView = stmt;

            Console.WriteLine("View name: {0}", createView.ViewName.ToString());
            TViewAliasClause aliasClause = createView.ViewAliasClause;

            if (aliasClause != null)
            {
                for (int i = 0; i < aliasClause.ViewAliasItemList.Count; i++)
                {
                    Console.WriteLine("View alias: {0}", aliasClause.ViewAliasItemList.getViewAliasItem(i).ToString());
                }
            }
            Console.WriteLine("View subquery: {0}", createView.Subquery.ToString());
            AnalyzeStmt(createView.Subquery);
        }
Exemple #8
0
 private void parseCreateView(TCreateViewSqlStatement createView)
 {
     if (createView.ViewName != null)
     {
         string        tableName    = createView.ViewName.TableString;
         string        tableSchema  = createView.ViewName.SchemaString;
         string        databaseName = createView.ViewName.DatabaseString;
         TableMetaData viewMetaData = new TableMetaData(vendor, strict);
         viewMetaData.Name       = tableName;
         viewMetaData.SchemaName = tableSchema;
         if (isNotEmpty(databaseName))
         {
             viewMetaData.CatalogName = databaseName;
         }
         else
         {
             viewMetaData.CatalogName = database;
         }
         viewMetaData.View = true;
         if (!tableColumns.ContainsKey(viewMetaData))
         {
             tableColumns[viewMetaData] = new List <ColumnMetaData>();
         }
         else
         {
             IList <TableMetaData> tables = new List <TableMetaData>(tableColumns.Keys);
             viewMetaData      = (TableMetaData)tables[tables.IndexOf(viewMetaData)];
             viewMetaData.View = true;
         }
         if (createView.Subquery != null)
         {
             ColumnImpact impact = new ColumnImpact(createView.Subquery.ToString(), createView.dbvendor, tableColumns, strict);
             impact.ignoreTopSelect(true);
             impact.Debug             = false;
             impact.ShowUIInfo        = true;
             impact.TraceErrorMessage = false;
             impact.impactSQL();
             ColumnImpactModel columnImpactModel = impact.generateModel();
             parseSubQueryColumnDefinition(createView, createView.Subquery, viewMetaData, columnImpactModel);
         }
     }
 }