Issues with ets:match_delete

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Issues with ets:match_delete

Code Wiget
Hey everyone,

Lets say you have an ets table with entries as shown below:

{table_name, key, {A, [B]}. 

I am trying to delete all table entries matching A. I can create a match like so:

ets:match(table_name, {'_', '_', {Node, '$1'}}) 

and it returns the values for B. But when I run match_delete or select_delete, I get a badarg error…:

ets:match_delete(table_name, {'_', '_', {Node, '$1'}}).
** exception error: bad argument
     in function  ets:select_delete/2
        called as ets:select_delete(table_name,
                                    [{{'_','_',{{{192,168,1,104},9042},'$1'}},[],[true]}])
     in call from ets:match_delete/2 (ets.erl, line 726)
(NODE)16> ets:select_delete(table_name, {'_', '_', {Node, '$1'}}).
** exception error: bad argument
     in function  ets:select_delete/2
        called as ets:select_delete(table_name,{'_','_',{{{192,168,1,104},9042},'$1'}})

So I tried to match and object and delete it...

(NODE)17> ets:match_object(table_name, {'_', '_', {Node, '$1'}}). 
[{table_name,'$primary_cluster',
                Info…]


(NODE)25> ets:delete_object(table_name, Info).                                                        
** exception error: bad argument
     in function  ets:delete_object/2
        called as ets:delete_object(table_name, …. )

I would like to avoid re-creating the table structure, as it is not from a project that I created and would take some time to fix all the code. How do I delete something from this table?

Thanks!



_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|

Re: Issues with ets:match_delete

Sverker Eriksson-4
Your ets:match_delete looks fine.
Are you sure the table is still alive? Try ets:info(table_name).

When you get an exception in the Erlang shell, the shell process will terminate and be restarted
losing all process specific resources such as ets tables.


/Sverker, Erlang/OTP


On tor, 2018-07-12 at 16:35 -0400, Code Wiget wrote:
Hey everyone,

Lets say you have an ets table with entries as shown below:

{table_name, key, {A, [B]}. 

I am trying to delete all table entries matching A. I can create a match like so:

ets:match(table_name, {'_', '_', {Node, '$1'}}) 

and it returns the values for B. But when I run match_delete or select_delete, I get a badarg error…:

ets:match_delete(table_name, {'_', '_', {Node, '$1'}}).
** exception error: bad argument
     in function  ets:select_delete/2
        called as ets:select_delete(table_name,
                                    [{{'_','_',{{{192,168,1,104},9042},'$1'}},[],[true]}])
     in call from ets:match_delete/2 (ets.erl, line 726)
(NODE)16> ets:select_delete(table_name, {'_', '_', {Node, '$1'}}).
** exception error: bad argument
     in function  ets:select_delete/2
        called as ets:select_delete(table_name,{'_','_',{{{192,168,1,104},9042},'$1'}})

So I tried to match and object and delete it...

(NODE)17> ets:match_object(table_name, {'_', '_', {Node, '$1'}}). 
[{table_name,'$primary_cluster',
                Info…]


(NODE)25> ets:delete_object(table_name, Info).                                                        
** exception error: bad argument
     in function  ets:delete_object/2
        called as ets:delete_object(table_name, …. )

I would like to avoid re-creating the table structure, as it is not from a project that I created and would take some time to fix all the code. How do I delete something from this table?

Thanks!


_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions

_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|

Re: Issues with ets:match_delete

Code Wiget
Here, it seems alive

(NODE13> ets:info(table_name).
[{read_concurrency,true},
 {write_concurrency,false},
 {compressed,false},
 {memory,422},
 {owner,<0.1064.0>},
 {heir,none},
 {name,cqerl_clusters},
 {size,2},
 {node,’NODE'},
 {named_table,true},
 {type,bag},
 {keypos,2},
 {protection,protected}]


On Jul 13, 2018, 7:24 AM -0400, Sverker Eriksson <[hidden email]>, wrote:
Your ets:match_delete looks fine.
Are you sure the table is still alive? Try ets:info(table_name).

When you get an exception in the Erlang shell, the shell process will terminate and be restarted
losing all process specific resources such as ets tables.


/Sverker, Erlang/OTP


On tor, 2018-07-12 at 16:35 -0400, Code Wiget wrote:
Hey everyone,

Lets say you have an ets table with entries as shown below:

{table_name, key, {A, [B]}. 

I am trying to delete all table entries matching A. I can create a match like so:

ets:match(table_name, {'_', '_', {Node, '$1'}}) 

and it returns the values for B. But when I run match_delete or select_delete, I get a badarg error…:

ets:match_delete(table_name, {'_', '_', {Node, '$1'}}).
** exception error: bad argument
     in function  ets:select_delete/2
        called as ets:select_delete(table_name,
                                    [{{'_','_',{{{192,168,1,104},9042},'$1'}},[],[true]}])
     in call from ets:match_delete/2 (ets.erl, line 726)
(NODE)16> ets:select_delete(table_name, {'_', '_', {Node, '$1'}}).
** exception error: bad argument
     in function  ets:select_delete/2
        called as ets:select_delete(table_name,{'_','_',{{{192,168,1,104},9042},'$1'}})

So I tried to match and object and delete it...

(NODE)17> ets:match_object(table_name, {'_', '_', {Node, '$1'}}). 
[{table_name,'$primary_cluster',
                Info…]


(NODE)25> ets:delete_object(table_name, Info).                                                        
** exception error: bad argument
     in function  ets:delete_object/2
        called as ets:delete_object(table_name, …. )

I would like to avoid re-creating the table structure, as it is not from a project that I created and would take some time to fix all the code. How do I delete something from this table?

Thanks!


_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions

_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|

Re: Issues with ets:match_delete

Code Wiget
Here is a full run of it. I am working on the open source project cqerl:

(NODE)19> [Test] = ets:match_object(cqerl_clusters, {'_', '_', {Node, '$1'}}).
[{cluster_table,'$primary_cluster',
                {{{192,168,1,104},9042},
                 [{cassandra_nodes,[{<<"192.168.1.107">>,9042},
                                    {<<"192.168.1.104">>,9042}]},
                  {keyspace,devices},
                  {included_applications,[]},
                  {reconnect_interval,12}]}}]
(NODE)20> ets:delete_object(cqerl_clusters, Test).                            
** exception error: bad argument
     in function  ets:delete_object/2
        called as ets:delete_object(cqerl_clusters,
                                    {cluster_table,'$primary_cluster',
                                                   {{{192,168,1,104},9042},
                                                    [{cassandra_nodes,[{<<"192.168.1.107">>,9042},
                                                                       {<<"192.168.1.104">>,9042}]},
                                                     {keyspace,devices},
                                                     {included_applications,[]},
                                                     {reconnect_interval,12}]}})
(NODE)21> ets:delete_object(cqerl_clusters, [Test]).
** exception error: bad argument
     in function  ets:delete_object/2
        called as ets:delete_object(cqerl_clusters,
                                    [{cluster_table,'$primary_cluster',
                                                    {{{192,168,1,104},9042},
                                                     [{cassandra_nodes,[{<<"192.168.1.107">>,9042},
                                                                        {<<"192.168.1.104">>,9042}]},
                                                      {keyspace,devices},
                                                      {included_applications,[]},
                                                      {reconnect_interval,12}]}}])

Cant figure why the match is working but not the delete..

On Jul 13, 2018, 11:01 AM -0400, Code Wiget <[hidden email]>, wrote:
Here, it seems alive

(NODE13> ets:info(table_name).
[{read_concurrency,true},
 {write_concurrency,false},
 {compressed,false},
 {memory,422},
 {owner,<0.1064.0>},
 {heir,none},
 {name,cqerl_clusters},
 {size,2},
 {node,’NODE'},
 {named_table,true},
 {type,bag},
 {keypos,2},
 {protection,protected}]


On Jul 13, 2018, 7:24 AM -0400, Sverker Eriksson <[hidden email]>, wrote:
Your ets:match_delete looks fine.
Are you sure the table is still alive? Try ets:info(table_name).

When you get an exception in the Erlang shell, the shell process will terminate and be restarted
losing all process specific resources such as ets tables.


/Sverker, Erlang/OTP


On tor, 2018-07-12 at 16:35 -0400, Code Wiget wrote:
Hey everyone,

Lets say you have an ets table with entries as shown below:

{table_name, key, {A, [B]}. 

I am trying to delete all table entries matching A. I can create a match like so:

ets:match(table_name, {'_', '_', {Node, '$1'}}) 

and it returns the values for B. But when I run match_delete or select_delete, I get a badarg error…:

ets:match_delete(table_name, {'_', '_', {Node, '$1'}}).
** exception error: bad argument
     in function  ets:select_delete/2
        called as ets:select_delete(table_name,
                                    [{{'_','_',{{{192,168,1,104},9042},'$1'}},[],[true]}])
     in call from ets:match_delete/2 (ets.erl, line 726)
(NODE)16> ets:select_delete(table_name, {'_', '_', {Node, '$1'}}).
** exception error: bad argument
     in function  ets:select_delete/2
        called as ets:select_delete(table_name,{'_','_',{{{192,168,1,104},9042},'$1'}})

So I tried to match and object and delete it...

(NODE)17> ets:match_object(table_name, {'_', '_', {Node, '$1'}}). 
[{table_name,'$primary_cluster',
                Info…]


(NODE)25> ets:delete_object(table_name, Info).                                                        
** exception error: bad argument
     in function  ets:delete_object/2
        called as ets:delete_object(table_name, …. )

I would like to avoid re-creating the table structure, as it is not from a project that I created and would take some time to fix all the code. How do I delete something from this table?

Thanks!


_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions

_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|

Re: Issues with ets:match_delete

Sverker Eriksson-5
The table is 'protected', meaning only the owner <0.1064.0> can write to it.

/Sverker


On fre, 2018-07-13 at 11:05 -0400, Code Wiget wrote:
Here is a full run of it. I am working on the open source project cqerl:

(NODE)19> [Test] = ets:match_object(cqerl_clusters, {'_', '_', {Node, '$1'}}).
[{cluster_table,'$primary_cluster',
                {{{192,168,1,104},9042},
                 [{cassandra_nodes,[{<<"192.168.1.107">>,9042},
                                    {<<"192.168.1.104">>,9042}]},
                  {keyspace,devices},
                  {included_applications,[]},
                  {reconnect_interval,12}]}}]
(NODE)20> ets:delete_object(cqerl_clusters, Test).                            
** exception error: bad argument
     in function  ets:delete_object/2
        called as ets:delete_object(cqerl_clusters,
                                    {cluster_table,'$primary_cluster',
                                                   {{{192,168,1,104},9042},
                                                    [{cassandra_nodes,[{<<"192.168.1.107">>,9042},
                                                                       {<<"192.168.1.104">>,9042}]},
                                                     {keyspace,devices},
                                                     {included_applications,[]},
                                                     {reconnect_interval,12}]}})
(NODE)21> ets:delete_object(cqerl_clusters, [Test]).
** exception error: bad argument
     in function  ets:delete_object/2
        called as ets:delete_object(cqerl_clusters,
                                    [{cluster_table,'$primary_cluster',
                                                    {{{192,168,1,104},9042},
                                                     [{cassandra_nodes,[{<<"192.168.1.107">>,9042},
                                                                        {<<"192.168.1.104">>,9042}]},
                                                      {keyspace,devices},
                                                      {included_applications,[]},
                                                      {reconnect_interval,12}]}}])

Cant figure why the match is working but not the delete..

On Jul 13, 2018, 11:01 AM -0400, Code Wiget <[hidden email]>, wrote:
Here, it seems alive

(NODE13> ets:info(table_name).
[{read_concurrency,true},
 {write_concurrency,false},
 {compressed,false},
 {memory,422},
 {owner,<0.1064.0>},
 {heir,none},
 {name,cqerl_clusters},
 {size,2},
 {node,’NODE'},
 {named_table,true},
 {type,bag},
 {keypos,2},
 {protection,protected}]


On Jul 13, 2018, 7:24 AM -0400, Sverker Eriksson <[hidden email]>, wrote:
Your ets:match_delete looks fine.
Are you sure the table is still alive? Try ets:info(table_name).

When you get an exception in the Erlang shell, the shell process will terminate and be restarted
losing all process specific resources such as ets tables.


/Sverker, Erlang/OTP


On tor, 2018-07-12 at 16:35 -0400, Code Wiget wrote:
Hey everyone,

Lets say you have an ets table with entries as shown below:

{table_name, key, {A, [B]}. 

I am trying to delete all table entries matching A. I can create a match like so:

ets:match(table_name, {'_', '_', {Node, '$1'}}) 

and it returns the values for B. But when I run match_delete or select_delete, I get a badarg error…:

ets:match_delete(table_name, {'_', '_', {Node, '$1'}}).
** exception error: bad argument
     in function  ets:select_delete/2
        called as ets:select_delete(table_name,
                                    [{{'_','_',{{{192,168,1,104},9042},'$1'}},[],[true]}])
     in call from ets:match_delete/2 (ets.erl, line 726)
(NODE)16> ets:select_delete(table_name, {'_', '_', {Node, '$1'}}).
** exception error: bad argument
     in function  ets:select_delete/2
        called as ets:select_delete(table_name,{'_','_',{{{192,168,1,104},9042},'$1'}})

So I tried to match and object and delete it...

(NODE)17> ets:match_object(table_name, {'_', '_', {Node, '$1'}}). 
[{table_name,'$primary_cluster',
                Info…]


(NODE)25> ets:delete_object(table_name, Info).                                                        
** exception error: bad argument
     in function  ets:delete_object/2
        called as ets:delete_object(table_name, …. )

I would like to avoid re-creating the table structure, as it is not from a project that I created and would take some time to fix all the code. How do I delete something from this table?

Thanks!


_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions

_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|

Re: Issues with ets:match_delete

Code Wiget
Yes.. that was it, thank you!



On Jul 13, 2018, 11:44 AM -0400, Sverker Eriksson <[hidden email]>, wrote:
The table is 'protected', meaning only the owner <0.1064.0> can write to it.

/Sverker


On fre, 2018-07-13 at 11:05 -0400, Code Wiget wrote:
Here is a full run of it. I am working on the open source project cqerl:

(NODE)19> [Test] = ets:match_object(cqerl_clusters, {'_', '_', {Node, '$1'}}).
[{cluster_table,'$primary_cluster',
                {{{192,168,1,104},9042},
                 [{cassandra_nodes,[{<<"192.168.1.107">>,9042},
                                    {<<"192.168.1.104">>,9042}]},
                  {keyspace,devices},
                  {included_applications,[]},
                  {reconnect_interval,12}]}}]
(NODE)20> ets:delete_object(cqerl_clusters, Test).                            
** exception error: bad argument
     in function  ets:delete_object/2
        called as ets:delete_object(cqerl_clusters,
                                    {cluster_table,'$primary_cluster',
                                                   {{{192,168,1,104},9042},
                                                    [{cassandra_nodes,[{<<"192.168.1.107">>,9042},
                                                                       {<<"192.168.1.104">>,9042}]},
                                                     {keyspace,devices},
                                                     {included_applications,[]},
                                                     {reconnect_interval,12}]}})
(NODE)21> ets:delete_object(cqerl_clusters, [Test]).
** exception error: bad argument
     in function  ets:delete_object/2
        called as ets:delete_object(cqerl_clusters,
                                    [{cluster_table,'$primary_cluster',
                                                    {{{192,168,1,104},9042},
                                                     [{cassandra_nodes,[{<<"192.168.1.107">>,9042},
                                                                        {<<"192.168.1.104">>,9042}]},
                                                      {keyspace,devices},
                                                      {included_applications,[]},
                                                      {reconnect_interval,12}]}}])

Cant figure why the match is working but not the delete..

On Jul 13, 2018, 11:01 AM -0400, Code Wiget <[hidden email]>, wrote:
Here, it seems alive

(NODE13> ets:info(table_name).
[{read_concurrency,true},
 {write_concurrency,false},
 {compressed,false},
 {memory,422},
 {owner,<0.1064.0>},
 {heir,none},
 {name,cqerl_clusters},
 {size,2},
 {node,’NODE'},
 {named_table,true},
 {type,bag},
 {keypos,2},
 {protection,protected}]


On Jul 13, 2018, 7:24 AM -0400, Sverker Eriksson <[hidden email]>, wrote:
Your ets:match_delete looks fine.
Are you sure the table is still alive? Try ets:info(table_name).

When you get an exception in the Erlang shell, the shell process will terminate and be restarted
losing all process specific resources such as ets tables.


/Sverker, Erlang/OTP


On tor, 2018-07-12 at 16:35 -0400, Code Wiget wrote:
Hey everyone,

Lets say you have an ets table with entries as shown below:

{table_name, key, {A, [B]}. 

I am trying to delete all table entries matching A. I can create a match like so:

ets:match(table_name, {'_', '_', {Node, '$1'}}) 

and it returns the values for B. But when I run match_delete or select_delete, I get a badarg error…:

ets:match_delete(table_name, {'_', '_', {Node, '$1'}}).
** exception error: bad argument
     in function  ets:select_delete/2
        called as ets:select_delete(table_name,
                                    [{{'_','_',{{{192,168,1,104},9042},'$1'}},[],[true]}])
     in call from ets:match_delete/2 (ets.erl, line 726)
(NODE)16> ets:select_delete(table_name, {'_', '_', {Node, '$1'}}).
** exception error: bad argument
     in function  ets:select_delete/2
        called as ets:select_delete(table_name,{'_','_',{{{192,168,1,104},9042},'$1'}})

So I tried to match and object and delete it...

(NODE)17> ets:match_object(table_name, {'_', '_', {Node, '$1'}}). 
[{table_name,'$primary_cluster',
                Info…]


(NODE)25> ets:delete_object(table_name, Info).                                                        
** exception error: bad argument
     in function  ets:delete_object/2
        called as ets:delete_object(table_name, …. )

I would like to avoid re-creating the table structure, as it is not from a project that I created and would take some time to fix all the code. How do I delete something from this table?

Thanks!


_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions

_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions