You can subscribe to this list here.
2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
(5) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(9) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2011 |
Jan
(5) |
Feb
(11) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
From: SourceForge.net <no...@so...> - 2011-11-02 02:38:06
|
The following forum message was posted by bwford at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4789257: I noticed foreign key's aren't supported using global tables in cubrid cluster. Is there a recommended strategy to maintain referential integrity across global tables ? |
From: SourceForge.net <no...@so...> - 2011-02-16 01:26:39
|
The following forum message was posted by piaosongmei at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4345826: yes, we did it like your description. if p0 is local and p1 is remote, after executed [code]SELECT grade FROM table_p_p0 WHERE grade > 4[/code], master node send [code]SELECT grade FROM table_p_p1 WHERE grade > 4[/code] to remote server to scan out related tuples and return to master node. after all tuple's ready, master node start to calculate STDDEV(grade). thanks |
From: SourceForge.net <no...@so...> - 2011-02-16 01:06:27
|
The following forum message was posted by iamyaw at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4345826: I have a question. Would you tell me whether the STDDEV() query, you've mentioned, runs correctly as local query? I mean, not in Cluster? If the query returns correct results, then do you know what happens to the query in terms of "partition pruning"? In my thought, to get the correct result, the query should be transformed to the plan of [code]SELECT STDDEV(grade) FROM (SELECT grade FROM table_p_p0 WHERE grade > 4 UNION ALL SELECT grade FROM table_p_p1 WHERE grade > 4)[/code] The above query is equivalent with (in terms of class hierarchy or in terms of query plan) [code]SELECT STDDEV(grade) FROM ALL table WHERE grade > 4[/code] Anyway, I'm not sure one hundred percent on my thought. It is necessary to do more investigation.... Thanks. |
From: SourceForge.net <no...@so...> - 2011-02-15 07:56:25
|
The following forum message was posted by dong1 at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4345826: yes, some functions such as STDDEV() is hard to deal with if put it into remote scan. so, currently the remote scan does care to fetch correct data back. such as : satisify where prediction (where grade > 4). For parallel execution, I think we need some time to think about it and maybe discuss it in M3 later. Thanks, Thanks, |
From: SourceForge.net <no...@so...> - 2011-02-15 05:43:28
|
The following forum message was posted by piaosongmei at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4345826: yes, you're right. your solution is parallel solution. but our current code did not executed parallelly but sequential. in the first of M2, we had such as parrallel solution. but the difficulty is that if the statement is: [code]select STDDEV(grade) from table where grade > 4;[/code] such as this statement can not change to: [code]select STDDEV(grade) from table_p_p1 where grade > 4;[/code] and send to remote server. so our solution to such as select statement is the remote server just scan out the basic value list and local server deal with this data. so accordint to above solution, we can just select transform out put list for remote server. and in M3, think about parallel execution, we need adjust solution as your suggestion. |
From: SourceForge.net <no...@so...> - 2011-02-15 04:56:45
|
The following forum message was posted by iamyaw at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4345826: Thank you for your explanation, Wang Dong. I'd like to ask a short question. Is it not possible to execute the remote scan like, "select id,CHAR_LENGTH(name), name, pow(grade,id) from GT1__p__p1"? I mean that "select id,CHAR_LENGTH(name), name, pow(grade,id) from GT1;" would be same with "select id,CHAR_LENGTH(name), name, pow(grade,id) from GT1__p__p0 UNION select id,CHAR_LENGTH(name), name, pow(grade,id) from GT1__p__p0". If it is, the output list of "a part of XASL" could be same with the one of "whole XASL". I don't know exactly how the current code is running, so If I am wrong, please let me know it. Thanks. |
From: SourceForge.net <no...@so...> - 2011-02-15 03:23:40
|
The following forum message was posted by dong1 at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4345826: Thank you for your reply, Park. I will explain more clearly. When cub_cas connect node1, we create a global hash partitioned table GT1 as below: [code]create global table GT1 (id int, name varchar(16), grade int) partition by hash(grade) partitions 2 on node 'node1','node2';[/code] The GT1 has 2 partitions, partition p0 stored in node1 and partition p1 stored in node2. SQL1: [code]select id, name from GT1;[/code] When we execute SQL1, the spec list pointer in XASL(we call it as the "Whole XASL") will include 3 specs: GT1__p__p0, GT1__p__p1, GT1 (no data in GT1, it will be skipped). In current execution mode, We will do local scan GT1__p__p0 on node1, and do remote scan GT1__p__p1 on node2. To do remote scan GT1__p__p1, we need prepare a XASL(we can it as "a part of XASL") for GT1__p__p1. This "a part of XASL" only includes the info about GT1__p__p1. it does not include info about GT1__p__p0. This "a part of XASL" can use the same outptr_list as the "Whole XASL". It can work well. SQL2: [code]select id,CHAR_LENGTH(name), name, pow(grade,id) from GT1;[/code] When we execute SQL2, we also need do remote scan GT1__p__p1 and prepare "a part of XASL" for it. In this case, we can not use the outptr list pointer of the "Whole XASL" directly. Because the outptr list of "Whold XASL" is for {id, CHAR_LENGTH(name), name, pow(grade,id)}. We hope do remote scan of GT1__p__p1. just like to do: select id, name, grade from GT1__p__p1. we need generate a outptr list for the "a part of XASL". This outptr list is for {id, name, grade}. the calculation functions(such as CHAR_LENGTH ) will be done in local side (just like order by clause). The remote scan only care to scan perper data back. This outptr list we call it "remote outptr list". So, I suggestion generate a remote_outptr_list in cas side and store in xasl. if local query, the remote_outptr_list is null. It will not influnce local table query. Thanks, |
From: SourceForge.net <no...@so...> - 2011-02-15 03:22:36
|
The following forum message was posted by dong1 at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4345826: Thank you for your reply, Park. I will explain more clearly. When cub_cas connect node1, we create a global hash partitioned table GT1 as below: [code]create global table GT1 (id int, name varchar(16), grade int) partition by hash(grade) partitions 2 on node 'node1','node2';[/code] The GT1 has 2 partitions, partition p0 stored in node1 and partition p1 stored in node2. SQL1: [code]select id, name from GT1;[/code] When we execute SQL1, the spec list pointer in XASL(we call it as the "Whole XASL") will include 3 specs: GT1__p__p0, GT1__p__p1, GT1. In current execution mode, We will local scan GT1__p__p0 on node1, and we will do remote scan GT1__p__p1 on node2. To do remote scan GT1__p__p1, we need prepare a XASL(we can it as "a part of XASL") for GT1__p__p1. This "a part of XASL" only include info about GT1__p__p1. it didnot include info about GT1__p__p0. This "a part of XASL" can use the same outptr_list as the "Whole XASL". It can work well. SQL2: [code]select id,CHAR_LENGTH(name), name, pow(grade,id) from GT1;[/code] When we execute SQL2, we also need do remote scan GT1__p__p1 and prepare "a part of XASL" for it. In this case, we can not use the outptr list pointer of the "Whole XASL". Because the outptr list of "Whold XASL" is for {id,CHAR_LENGTH(name), name, pow(grade,id)}. On the other hand, we hope do remote scan of GT1__p__p1. just like to do: select id, name, grade from GT1__p__p1. we need generate a outptr list for the "a part of XASL". This outptr list is for {id, name, grade}. the calculation functions(such as CHAR_LENGTH, pow) will be done in local side (just like order by). The remote scan only care to scan perper data back. This outptr list we call it "remote outptr list". So, I said "I suggestion generate a remote_outptr_list in cas side and store in xasl. if local query, the remote_outptr_list is null. It will not influnce local table query. ". Thanks, |
From: SourceForge.net <no...@so...> - 2011-02-15 03:08:13
|
The following forum message was posted by piaosongmei at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4362052: [b]case:[/b] [code]CREATE GLOBAL TABLE wish_5( host_year INT, nation CHAR(3000), gold INT, silver INT, bronze INT) PARTITION BY HASH ( host_year) PARTITIONS 4 ON NODE 'node1','node2'; INSERT INTO wish_5 VALUES (1988, 'NZL', 3, 2, 8); INSERT INTO wish_5 VALUES (1992, 'CAN', 3, 2, 5); INSERT INTO wish_5 VALUES (1996, 'KOR', 7, 15, 5); INSERT INTO wish_5 VALUES (2000, 'RUS', 32, 28, 28); INSERT INTO wish_5 VALUES (2004, 'JPN', 16, 9, 12); INSERT INTO wish_5 VALUES (2008, 'US', 32, 28, 28); INSERT INTO wish_5 VALUES (2012, 'JPN', 16, 9, 12); INSERT INTO wish_5 VALUES (1988, 'NZL', 3, 2, 8); INSERT INTO wish_5 VALUES (1992, 'CAN', 3, 2, 5); INSERT INTO wish_5 VALUES (1996, 'KOR', 7, 15, 5); INSERT INTO wish_5 VALUES (2000, 'RUS', 32, 28, 28); INSERT INTO wish_5 VALUES (2004, 'JPN', 16, 9, 12); INSERT INTO wish_5 VALUES (2008, 'US', 32, 28, 28); INSERT INTO wish_5 VALUES (2012, 'JPN', 16, 9, 12); INSERT INTO wish_5 VALUES (1988, 'NZL', 3, 2, 8); INSERT INTO wish_5 VALUES (1992, 'CAN', 3, 2, 5); INSERT INTO wish_5 VALUES (1996, 'KOR', 7, 15, 5); INSERT INTO wish_5 VALUES (2000, 'RUS', 32, 28, 28); INSERT INTO wish_5 VALUES (2004, 'JPN', 16, 9, 12); INSERT INTO wish_5 VALUES (2008, 'US', 32, 28, 28); INSERT INTO wish_5 VALUES (2012, 'JPN', 16, 9, 12); INSERT INTO wish_5 VALUES (1988, 'NZL', 3, 2, 8); INSERT INTO wish_5 VALUES (1992, 'CAN', 3, 2, 5); INSERT INTO wish_5 VALUES (1996, 'KOR', 7, 15, 5); INSERT INTO wish_5 VALUES (2000, 'RUS', 32, 28, 28); INSERT INTO wish_5 VALUES (2004, 'JPN', 16, 9, 12); INSERT INTO wish_5 VALUES (2008, 'US', 32, 28, 28); INSERT INTO wish_5 VALUES (2012, 'JPN', 16, 9, 12); INSERT INTO wish_5 VALUES (1988, 'NZL', 3, 2, 8); INSERT INTO wish_5 VALUES (1992, 'CAN', 3, 2, 5); INSERT INTO wish_5 VALUES (1996, 'KOR', 7, 15, 5); INSERT INTO wish_5 VALUES (2000, 'RUS', 32, 28, 28); INSERT INTO wish_5 VALUES (2004, 'JPN', 16, 9, 12); INSERT INTO wish_5 VALUES (2008, 'US', 32, 28, 28); INSERT INTO wish_5 VALUES (2012, 'JPN', 16, 9, 12); INSERT INTO wish_5 VALUES (1988, 'NZL', 3, 2, 8); INSERT INTO wish_5 VALUES (1992, 'CAN', 3, 2, 5); INSERT INTO wish_5 VALUES (1996, 'KOR', 7, 15, 5); INSERT INTO wish_5 VALUES (2000, 'RUS', 32, 28, 28); INSERT INTO wish_5 VALUES (2004, 'JPN', 16, 9, 12); select * from wish_5;[/code] [b]analyze:[/b] [i]first time:[/i] totle cost: 4.390 second, count of total rows : 40 detail: 1. server execution start @ 58.203s 2. scan start @ 58.250s 1. remote scan @ 58.250s ~ 58.250s --> 0s 2. local scan @ 58.250s ~ 58.265s --> 15ms 3. remote scan @ 58.265s ~ 00.531s --> 2.266s 4. get remote page @ 00.531s ~ 00.546s --> 15ms @ 00.546s ~ 00.562s --> 16ms 5. local scan @ 00.562s ~ 00.562s --> 0s 3. scan end @ 00.562s 4. server execution end @ 00.562s totle server cost: 2.359s so the cas cost: 2.031s [i]second time:[/i] totle cost: 0.078 second , count of total rows : 40 detail: 1. server execution start @ 18.406s 2. scan start @ 18.406s 1. remote scan @ 18.406s ~ 18.406s --> 0s 2. local scan @ 18.406s ~ 18.406s --> 0s 3. remote scan @ 18.406s ~ 18.406s --> 0s 4. get remote page @ 18.406s ~ 18.421s --> 15ms @ 18.421s ~ 18.437s --> 16ms 5. local scan @ 18.437s ~ 18.437s --> 0s 3. scan end @ 18.437s 4. server execution end @ 18.437s totle server cost: 31ms so the cas cost: 47ms |
From: SourceForge.net <no...@so...> - 2011-02-15 00:18:38
|
The following forum message was posted by iamyaw at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4345826: dong1's idea looks good at first thought. I didn't understand fully about this problem and relevant solutions. So, my opinion is not important. Thanks. |
From: SourceForge.net <no...@so...> - 2011-02-14 10:28:42
|
The following forum message was posted by dong1 at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4345826: To send a part of xasl to server side for remote scan, we need prepare the relative val list and outptr list. In the above cases, the real out put list is not the same as the scan outptr_list. I agree with songmei. After investigation, the outptr_list is generated from function as pt_to_outlist() it will call pt_to_regu_variable(). The pt_to_regu_variable() is a big functions. it is very hard to generate these outptr_list in server side. so, I suggestion generate a remote_outptr_list in cas side and store in xasl. if local query, the remote_outptr_list is null. It will not influnce local table query. The remote_outptr_list generation is like outptr_list. the difference is remote_outptr_list is for remote scan. Thanks, |
From: SourceForge.net <no...@so...> - 2011-02-14 09:55:55
|
The following forum message was posted by piaosongmei at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4345826: [b]bug reproduce:[/b] [i]step1:[/i] create global table at_cluster_class3 (id int, name varchar(16), grade int) partition by hash(grade) partitions 6 on node 'node1','node2'; create global table at_cluster_grade3 (gid int, gname varchar(16)) on node 'node2'; [i]step2:[/i] insert into at_cluster_class3 values (1,'Alpher',1); insert into at_cluster_class3 values (2,'Berry',2); insert into at_cluster_class3 values (3,'Candy',3); insert into at_cluster_class3 values (4,'Danny',4); insert into at_cluster_class3 values (5,'Frank',5); insert into at_cluster_class3 values (6,'Goerge',6); insert into at_cluster_grade3 values (1,'G1'); insert into at_cluster_grade3 values (2,'G2'); insert into at_cluster_grade3 values (3,'G3'); insert into at_cluster_grade3 values (4,'G4'); insert into at_cluster_grade3 values (5,'G5'); insert into at_cluster_grade3 values (6,'G6'); [i]step3:[/i] select id,CHAR_LENGTH(name),name,pow(grade,id) from at_cluster_class3 where id <10 order by id desc; select gid,upper(gname),gname from at_cluster_grade3 order by 1,2; select min(gid) from at_cluster_grade3; select count(gname) from at_cluster_grade3; drop global table at_cluster_class3; drop global table at_cluster_grade3; bug description: when execute step3's first select, the server will crush. [b]reason:[/b] select id,CHAR_LENGTH(name),name,pow(grade,id) from at_cluster_class3 where id <10 order by id desc; This statement will generate 3 value list and 4 output list in XASL. In XASL, value list is the scanned out columns from record heap file and output list is the tuple which will be sent to client after edit. This case will generate val_list{id, name, grade}. And in remote scan, this XASL should be re-generated as Select id, name, grade from at_cluster_class3 where id<10; To scan out records for filling to value list. In current reversion, this XASL re-generated as bellow: Select id,CHAR_LENGTH(name),name,pow(grade,id) from at_cluster_class3 where id <10 So after remote scan, local server received 4 column but local value list just has 3 columns. So this is crush reason. [b]solution:[/b] re-generate output_list according to val_list and attribute list at compile step. if server re-generate output_list, we need to porting cas functions. otherwise, if cas re-generate output_list, it will be easier. cas need to add a pointer to XASL root for the original output_list which made from val_list and attribute list. my suggestion is cas re-generate output_list and send it to server. |
From: SourceForge.net <no...@so...> - 2011-01-31 02:46:00
|
The following forum message was posted by tzliang at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4082156: My pre account liangtiqanzhu can't reset the password, I don't know why. :( So I register a new one... |
From: SourceForge.net <no...@so...> - 2011-01-24 06:37:44
|
The following forum message was posted by piaosongmei at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4068037: for example, there's a table R. B(R)(block count)=1000, T(R)(tuple count)=20000, and there's index on attribute a. then, how about the I/O cost for [code]select * from R where a=0[/code] case1: table R is not clustered and do not use index case2: V(R,a)=10 and index is not clustered. my answer VS. book: case1: I/O=1000 VS. I/O=20000 case2: I/O=1000 VS. I/O=2000 how about you? |
From: SourceForge.net <no...@so...> - 2011-01-12 09:15:20
|
The following forum message was posted by iamyaw at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4049458: Ok. I have understood what you are saying. I'll look into source code to find out what's the problem and the reason. BTW, if I do instantly replying, frankly speaking, the existing implementation of partition feature is a little bit dumb. |
From: SourceForge.net <no...@so...> - 2011-01-12 05:54:21
|
The following forum message was posted by dong1 at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4049458: Let me explain more about our question. for sql query as: [code]select count(*) from t1[/code] we observed that, if t1 is non-partition table, current CUBRID code just get stats info about the count number for optimization. like case1 and case 2. if t1 is partition table ,current CUBRID code do scan , do not get stats info. like case 3 and case 4. When we implement for global table, I think we should follow the same behavior just like current CUBRID code. But We think non-partition table and partition table should have the same behavior. That means, if non-partition table can get stats info, why partition table can not? so, our questions are: 1 why partition table have to do scan, do not like non-partition table , which get stats info directly? 2 if we implement global partition table, can we get stats info from servers , just like local non-partitiont table? Hi, Park, This it the question That I have metioned to you in monday's VTC meeting, How do you think? Thanks a lot! |
From: SourceForge.net <no...@so...> - 2011-01-12 02:54:09
|
The following forum message was posted by piaosongmei at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4049458: as i've described at #305, for [code]select count(*) from table[/code] there're as bellow process: 1. non-partition no-index table: [code]xasl->proc.buildvalue->agg_list->flag_agg_optimize[/code] is set as 1. So it not scan out tuple but just read stats info of heap file (get heap header to read heap_hdr->estimates.num_pages and heap_hdr->estimates.num_recs). So out solution is if the heap file is belong to remote host, then send command NET_SERVER_HEAP_GET_CLASS_NOBJS_AND_NPAGES to remote server to get objects count. 2. non-partition index table: the same as case 1. 3. partition no-index table: [code]xasl->proc.buildvalue->agg_list->flag_agg_optimize[/code] is set as 0. So, it will scan out each record to increase [code]xasl->proc.buildvalue.agg_list.curr_cnt[/code]. So out solution is: if this table is belong to remote server, send XASL about [code]select * from table[/code] to remote server to fetch records(it's just temporary solution. it need to improve performance at M3). 4. partition index table: same as case 3. my doubt is: why partition table do not read stats info same as non-partition table? can we just read each partition stats info and summarize them? |
From: SourceForge.net <no...@so...> - 2010-12-29 01:54:33
|
The following forum message was posted by piaosongmei at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4029145: thank you |
From: SourceForge.net <no...@so...> - 2010-12-29 01:11:05
|
The following forum message was posted by iamyaw at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4029145: Yes. You're right. "locator_attribute_info_force()" is called also during server-side insert. I'm confused with somewhat. Thanks. |
From: SourceForge.net <no...@so...> - 2010-12-28 08:29:35
|
The following forum message was posted by piaosongmei at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4029145: oops, my mistake. thank you for your explain. and for client side insert / server side insert: in case of server side insert, it's also called locator_insert_force(). the stack is as bellow: qexec_execute_insert() --> locator_attribute_info_force() --> locator_insert_force() in case of client side insert, the stack is: xlocator_force() --> locator_insert_force() in server side insert, it's also prepared copy area and flushed to server. |
From: SourceForge.net <no...@so...> - 2010-12-28 08:14:45
|
The following forum message was posted by iamyaw at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4029145: One more thing. Actually, those code is not related with "server-side insert" feature. They are related with "client-side insert". As the CuBRID's terminology, "server-side insert" means that INSERT_PROC XASL. "Client-side insert" means that calling locator_force() to flush out the object to the server. |
From: SourceForge.net <no...@so...> - 2010-12-28 08:07:24
|
The following forum message was posted by iamyaw at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4029145: You can see that there is no "break" statement in the end of the first "case LC_FLUSH_UPDATE" block. See the comment there... /* Fall through */ Thanks. |
From: SourceForge.net <no...@so...> - 2010-12-28 07:28:26
|
The following forum message was posted by piaosongmei at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4029145: about server side insert, at function of locator_attribute_info_force() there're following codes: [code]locator_attribute_info_force() { ...... switch (operation) { case LC_FLUSH_UPDATE: ... break; case LC_FLUSH_INSERT: ... if (operation == LC_FLUSH_INSERT) { ... } else { assert (operation == LC_FLUSH_UPDATE) ... } } }[/code] in case of LC_FLUSH_INSERT why judged again operation? |
From: SourceForge.net <no...@so...> - 2010-12-22 08:52:43
|
The following forum message was posted by iamyaw at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4022217: I didn't yet know your comment is good or not. It looks worthy to look into. |
From: SourceForge.net <no...@so...> - 2010-12-21 12:49:17
|
The following forum message was posted by wzcsoft at http://sourceforge.net/projects/cubridcluster/forums/forum/1129809/topic/4022217: hmm, change "If the total space is 64 in spage_check_space()" to "If the total space is 100 in spage_check_space()" It's my spelling mistake. |