Get string query back from a parsed ASTNode tree use HiveParser










0















My case is :

1. Use HiveParser to parse a string sql query:
SELECT pageid, adid FROM pageAds LATERAL VIEW explode(adid_list) adTable AS adid

2. After parsed, I got a ASTNode tree like this :



nil
TOK_QUERY
TOK_FROM
TOK_LATERAL_VIEW
TOK_SELECT
TOK_SELEXPR
TOK_FUNCTION
explode
TOK_TABLE_OR_COL
adid_list
adid
TOK_TABALIAS
adTable
TOK_TABREF
TOK_TABNAME
pageAds
TOK_INSERT
TOK_DESTINATION
TOK_DIR
TOK_TMP_FILE
TOK_SELECT
TOK_SELEXPR
TOK_TABLE_OR_COL
pageid
TOK_SELEXPR
TOK_TABLE_OR_COL
adid
<EOF>


3. Then I need to change the tableName from pageAds to pageAds_uniqueSuffix.

4. At last, I should deparse this ASTNode tree to a string query again, and it should looks like :
SELECT pageid, adid FROM pageAds_uniqueSuffix LATERAL VIEW explode(adid_list) adTable AS adid



====================================

I managed first 2 steps but really stuck at step 4.

Simply string replacement won't help because there are many situations that wouldn't work










share|improve this question




























    0















    My case is :

    1. Use HiveParser to parse a string sql query:
    SELECT pageid, adid FROM pageAds LATERAL VIEW explode(adid_list) adTable AS adid

    2. After parsed, I got a ASTNode tree like this :



    nil
    TOK_QUERY
    TOK_FROM
    TOK_LATERAL_VIEW
    TOK_SELECT
    TOK_SELEXPR
    TOK_FUNCTION
    explode
    TOK_TABLE_OR_COL
    adid_list
    adid
    TOK_TABALIAS
    adTable
    TOK_TABREF
    TOK_TABNAME
    pageAds
    TOK_INSERT
    TOK_DESTINATION
    TOK_DIR
    TOK_TMP_FILE
    TOK_SELECT
    TOK_SELEXPR
    TOK_TABLE_OR_COL
    pageid
    TOK_SELEXPR
    TOK_TABLE_OR_COL
    adid
    <EOF>


    3. Then I need to change the tableName from pageAds to pageAds_uniqueSuffix.

    4. At last, I should deparse this ASTNode tree to a string query again, and it should looks like :
    SELECT pageid, adid FROM pageAds_uniqueSuffix LATERAL VIEW explode(adid_list) adTable AS adid



    ====================================

    I managed first 2 steps but really stuck at step 4.

    Simply string replacement won't help because there are many situations that wouldn't work










    share|improve this question


























      0












      0








      0








      My case is :

      1. Use HiveParser to parse a string sql query:
      SELECT pageid, adid FROM pageAds LATERAL VIEW explode(adid_list) adTable AS adid

      2. After parsed, I got a ASTNode tree like this :



      nil
      TOK_QUERY
      TOK_FROM
      TOK_LATERAL_VIEW
      TOK_SELECT
      TOK_SELEXPR
      TOK_FUNCTION
      explode
      TOK_TABLE_OR_COL
      adid_list
      adid
      TOK_TABALIAS
      adTable
      TOK_TABREF
      TOK_TABNAME
      pageAds
      TOK_INSERT
      TOK_DESTINATION
      TOK_DIR
      TOK_TMP_FILE
      TOK_SELECT
      TOK_SELEXPR
      TOK_TABLE_OR_COL
      pageid
      TOK_SELEXPR
      TOK_TABLE_OR_COL
      adid
      <EOF>


      3. Then I need to change the tableName from pageAds to pageAds_uniqueSuffix.

      4. At last, I should deparse this ASTNode tree to a string query again, and it should looks like :
      SELECT pageid, adid FROM pageAds_uniqueSuffix LATERAL VIEW explode(adid_list) adTable AS adid



      ====================================

      I managed first 2 steps but really stuck at step 4.

      Simply string replacement won't help because there are many situations that wouldn't work










      share|improve this question
















      My case is :

      1. Use HiveParser to parse a string sql query:
      SELECT pageid, adid FROM pageAds LATERAL VIEW explode(adid_list) adTable AS adid

      2. After parsed, I got a ASTNode tree like this :



      nil
      TOK_QUERY
      TOK_FROM
      TOK_LATERAL_VIEW
      TOK_SELECT
      TOK_SELEXPR
      TOK_FUNCTION
      explode
      TOK_TABLE_OR_COL
      adid_list
      adid
      TOK_TABALIAS
      adTable
      TOK_TABREF
      TOK_TABNAME
      pageAds
      TOK_INSERT
      TOK_DESTINATION
      TOK_DIR
      TOK_TMP_FILE
      TOK_SELECT
      TOK_SELEXPR
      TOK_TABLE_OR_COL
      pageid
      TOK_SELEXPR
      TOK_TABLE_OR_COL
      adid
      <EOF>


      3. Then I need to change the tableName from pageAds to pageAds_uniqueSuffix.

      4. At last, I should deparse this ASTNode tree to a string query again, and it should looks like :
      SELECT pageid, adid FROM pageAds_uniqueSuffix LATERAL VIEW explode(adid_list) adTable AS adid



      ====================================

      I managed first 2 steps but really stuck at step 4.

      Simply string replacement won't help because there are many situations that wouldn't work







      sql hive hiveql abstract-syntax-tree sql-parser






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 14 '18 at 4:40







      AI Joes

















      asked Nov 14 '18 at 2:47









      AI JoesAI Joes

      297




      297






















          0






          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53292467%2fget-string-query-back-from-a-parsed-astnode-tree-use-hiveparser%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53292467%2fget-string-query-back-from-a-parsed-astnode-tree-use-hiveparser%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Use pre created SQLite database for Android project in kotlin

          Darth Vader #20

          Ondo