You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hawq.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2016/06/27 02:58:52 UTC

[jira] [Commented] (HAWQ-835) Cannot retrieve tuple from temp table created in function

    [ https://issues.apache.org/jira/browse/HAWQ-835?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15350373#comment-15350373 ] 

ASF GitHub Bot commented on HAWQ-835:
-------------------------------------

GitHub user huor opened a pull request:

    https://github.com/apache/incubator-hawq/pull/750

    HAWQ-835. Fix cannot retrieve tuple from temp table created in function

    

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/huor/incubator-hawq huor_select

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/incubator-hawq/pull/750.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #750
    
----
commit 6fc09d070a9ac5c447fdfd0c9f082385a6099023
Author: Ruilong Huo <rh...@pivotal.io>
Date:   2016-06-27T03:00:16Z

    HAWQ-835. Fix cannot retrieve tuple from temp table created in function

----


> Cannot retrieve tuple from temp table created in function
> ---------------------------------------------------------
>
>                 Key: HAWQ-835
>                 URL: https://issues.apache.org/jira/browse/HAWQ-835
>             Project: Apache HAWQ
>          Issue Type: Bug
>          Components: Core, Query Execution
>            Reporter: Ruilong Huo
>            Assignee: Ruilong Huo
>
> With function which create temp table and insert tuple into it, if the function is run multiple times, it might cannot retrieve tuple from the temp table in the second run of the function and so on.
> Here are the steps to reproduce:
> Step 1: prepare schema and data
> {noformat}
> CREATE TABLE t(pid int, points double precision[]);
> COPY t (pid, points) FROM stdin DELIMITER '|';
> 1 | {14.23, 1.71, 2.43, 15.6, 127, 2.8, 3.0600, 0.2800, 2.29, 5.64, 1.04, 3.92, 1065}
> 2 | {13.2, 1.78, 2.14, 11.2, 1, 2.65, 2.76, 0.26, 1.28, 4.38, 1.05, 3.49, 1050}
> 3 | {13.16, 2.36,  2.67, 18.6, 101, 2.8,  3.24, 0.3, 2.81, 5.6799, 1.03, 3.17, 1185}
> 4 | {14.37, 1.95, 2.5, 16.8, 113, 3.85, 3.49, 0.24, 2.18, 7.8, 0.86, 3.45, 1480}
> 5 | {13.24, 2.59, 2.87, 21, 118, 2.8, 2.69, 0.39, 1.82, 4.32, 1.04, 2.93, 735}
> 6 | {14.2, 1.76, 2.45, 15.2, 112, 3.27, 3.39, 0.34, 1.97, 6.75, 1.05, 2.85, 1450}
> \.
> {noformat}
> Step 2: run kmeans
> {noformat}
> with q as
>     (
>         select
>             1 as num_clusters,
>                *
>         from        
>             madlib.kmeanspp(
>                  't',
>                  'points',
>                  3,
>                  'madlib.squared_dist_norm2',
>                  'madlib.avg',
>                  30,
>                  0.001,
>                  1.0
>              )
>     )
> select q1.*
> from q as q1, (select * from q) as q2
> where q1.num_clusters = q2.num_clusters;
> ERROR:  Kmeans error: No valid initial centroids given.
> CONTEXT:  SQL statement "SELECT  madlib.kmeans(  $1 ,  $2 , madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 ),  $4 ,  $6 ,  $7 ,  $8 )"
> PL/pgSQL function "kmeanspp" line 4 at assignment
> {noformat}
> Step 3: further investigation shows that it cannot retrieve tuple from temp table
> {noformat}
> with q as
>     (
>         select
>             1 as num_clusters,
>                *
>         from        
>             madlib.kmeanspp(
>                  't',
>                  'points',
>                  3,
>                  'madlib.squared_dist_norm2',
>                  'madlib.avg',
>                  30,
>                  0.001,
>                  1.0
>              )
>     )
> select q1.*
> from q as q1, (select * from q) as q2
> where q1.num_clusters = q2.num_clusters;
> WARNING:  --- kmeanspp debug begin ---
> WARNING:  --- kmeanspp seeding begin ---
> WARNING:  --- kmeanspp seed summary ---
> WARNING:  ### kmeanspp_seeding: 1. use all source data
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: 2. create temp schema
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: temp schema id = 0 before create tmp schema
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: temp schema id = 140497 after create tmp schema
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: 3. generate centroids
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: 3. generate centroids
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: temp schema id = 140497 after create tmp table
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: pg_temp._madlib_kmeanspp_args has 1 record XXX
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: pg_temp._madlib_kmeanspp_args table begin 1
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: k, fn_dist, initial_centroids, fn_dist_name
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: k="3", items.fn_dist, items.initial_centroids, fn_dist_name="madlib.squared_dist_norm2"
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: pg_temp._madlib_kmeanspp_args table end 1
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: pg_temp._madlib_kmeanspp_args table metadata begin
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: oid, schemaname, tablename
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: pg_temp._madlib_kmeanspp_args has 1 record YYY
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: "140501", pg_temp_359 _madlib_kmeanspp_args
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: pg_temp._madlib_kmeanspp_args table metadata end
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: pg_temp._madlib_kmeanspp_args table begin 2
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: k, fn_dist, initial_centroids, fn_dist_name
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: k="3", items.fn_dist, items.initial_centroids, fn_dist_name="madlib.squared_dist_norm2"
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: pg_temp._madlib_kmeanspp_args table end 2
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: 4. compute centroids
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  theIteration = 2
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: 5. retrieve centroids
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  theResult= {{13.2,1.78,2.14,11.2,1,2.65,2.76,0.26,1.28,4.38,1.05,3.49,1050},{14.37,1.95,2.5,16.8,113,3.85,3.49,0.24,2.18,7.8,0.86,3.45,1480},{13.24,2.59,2.87,21,118,2.8,2.69,0.39,1.82,4.32,1.04,2.93,735}}
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  D1 = 3, D2 = 13
> WARNING:  --- kmeanspp seed detail begin  ---
> WARNING:  13.2
> WARNING:  1.78
> WARNING:  2.14
> WARNING:  11.2
> WARNING:  1
> WARNING:  2.65
> WARNING:  2.76
> WARNING:  0.26
> WARNING:  1.28
> WARNING:  4.38
> WARNING:  1.05
> WARNING:  3.49
> WARNING:  1050
> WARNING:  14.37
> WARNING:  1.95
> WARNING:  2.5
> WARNING:  16.8
> WARNING:  113
> WARNING:  3.85
> WARNING:  3.49
> WARNING:  0.24
> WARNING:  2.18
> WARNING:  7.8
> WARNING:  0.86
> WARNING:  3.45
> WARNING:  1480
> WARNING:  13.24
> WARNING:  2.59
> WARNING:  2.87
> WARNING:  21
> WARNING:  118
> WARNING:  2.8
> WARNING:  2.69
> WARNING:  0.39
> WARNING:  1.82
> WARNING:  4.32
> WARNING:  1.04
> WARNING:  2.93
> WARNING:  735
> WARNING:  --- kmeanspp seed detail end ---
> WARNING:  --- kmeanspp seeding end ---
> WARNING:  --- kmeanspp clustering begin ---
> WARNING:  --- kmeanspp clustering end ---
> WARNING:  --- kmeanspp debug end ---
> WARNING:  --- kmeanspp debug begin ---
> WARNING:  --- kmeanspp seeding begin ---
> WARNING:  --- kmeanspp seed summary ---
> WARNING:  ### kmeanspp_seeding: 1. use all source data
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: 2. create temp schema
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: temp schema id = 140497 before create tmp schema
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: temp schema id = 140497 after create tmp schema
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: 3. generate centroids
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: 3. generate centroids
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: temp schema id = 140497 after create tmp table
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: pg_temp._madlib_kmeanspp_args has 1 record XXX
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: pg_temp._madlib_kmeanspp_args table begin 1
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: k, fn_dist, initial_centroids, fn_dist_name
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: pg_temp._madlib_kmeanspp_args table end 1
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: pg_temp._madlib_kmeanspp_args table metadata begin
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: oid, schemaname, tablename
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: pg_temp._madlib_kmeanspp_args has 1 record YYY
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: "140567", pg_temp_359 _madlib_kmeanspp_args
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: pg_temp._madlib_kmeanspp_args table metadata end
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: pg_temp._madlib_kmeanspp_args table begin 2
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: k, fn_dist, initial_centroids, fn_dist_name
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: pg_temp._madlib_kmeanspp_args table end 2
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: 4. compute centroids
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  theIteration = 0
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  ### kmeanspp_seeding: 5. retrieve centroids
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  theResult= <NULL>
> CONTEXT:  SQL statement "SELECT madlib.kmeanspp_seeding( $1 ,  $2 ,  $3 ,  $4 , NULL,  $5 )"
> PL/pgSQL function "kmeanspp" line 10 at SQL statement
> WARNING:  D1 = <NULL>, D2 = <NULL>
> WARNING:  --- kmeanspp seed detail begin  ---
> ERROR:  upper bound of FOR loop cannot be NULL
> CONTEXT:  PL/pgSQL function "kmeanspp" line 15 at for with integer loopvar
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)