You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Pavel Tupitsyn (JIRA)" <ji...@apache.org> on 2016/08/05 09:58:20 UTC

[jira] [Updated] (IGNITE-3630) .NET: Add pure binary mode example with SQL

     [ https://issues.apache.org/jira/browse/IGNITE-3630?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Pavel Tupitsyn updated IGNITE-3630:
-----------------------------------
    Description: 
This is an important Ignite use case: having no classes at all, working with cache in binary mode and running SQL queries.

We should have a dedicated example for this (regular one and for LINQPad).

Below is a piece of code that I used for Gitter user question:
{code}
using (var ignite = Ignition.Start())
{
	// Configure queries for Person object with FirstName, LastName fields
	var cacheConfig = new CacheConfiguration
	{
		Name = "persons",  // can be anything
		QueryEntities = new[]
		{
			new QueryEntity
			{
				KeyType = typeof(int),
				ValueTypeName = "Person",  // name of the dynamically created type
				Fields = new[]  // define fields to be available in queries
				{
					new QueryField("FirstName", typeof(string)),
					new QueryField("LastName", typeof(string))
				}
			}
		}
	};
	
    // Create new cache, switch to binary mode
    var cache = ignite.CreateCache<int, object>(cacheConfig).WithKeepBinary<int, IBinaryObject>();

	// Populate the cache
	for (var i = 0; i < 10; i++)
	{
		var person = ignite.GetBinary().GetBuilder("Person")  // same name as in ValueTypeName above
			.SetField<string>("FirstName", "Name-" + i)
			.SetField<string>("LastName", "LastName-" + i)
			.Build();
			
			cache[i] = person;
    }
	
	// SQL query for FirstName ending with "-3"
	var qry = cache.Query(new SqlQuery("Person", "where FirstName like '%-3'"));

	foreach (ICacheEntry<int, IBinaryObject> cacheEntry in qry)
	{
		Console.WriteLine("Person {0}:", cacheEntry.Key);
		
		IBinaryObject person = cacheEntry.Value;
		
		IBinaryType personType = person.GetBinaryType();
		
		// Show all fields
		foreach (var fieldName in personType.Fields)
			Console.WriteLine("  {0}: {1}", fieldName, person.GetField<object>(fieldName));
	}
}
{code}

  was:
This is an important Ignite use case: having no classes at all, working with cache in binary mode and running SQL queries.

Below is a piece of code that I used for Gitter user question:
{code}
using (var ignite = Ignition.Start())
{
	// Configure queries for Person object with FirstName, LastName fields
	var cacheConfig = new CacheConfiguration
	{
		Name = "persons",  // can be anything
		QueryEntities = new[]
		{
			new QueryEntity
			{
				KeyType = typeof(int),
				ValueTypeName = "Person",  // name of the dynamically created type
				Fields = new[]  // define fields to be available in queries
				{
					new QueryField("FirstName", typeof(string)),
					new QueryField("LastName", typeof(string))
				}
			}
		}
	};
	
    // Create new cache, switch to binary mode
    var cache = ignite.CreateCache<int, object>(cacheConfig).WithKeepBinary<int, IBinaryObject>();

	// Populate the cache
	for (var i = 0; i < 10; i++)
	{
		var person = ignite.GetBinary().GetBuilder("Person")  // same name as in ValueTypeName above
			.SetField<string>("FirstName", "Name-" + i)
			.SetField<string>("LastName", "LastName-" + i)
			.Build();
			
			cache[i] = person;
    }
	
	// SQL query for FirstName ending with "-3"
	var qry = cache.Query(new SqlQuery("Person", "where FirstName like '%-3'"));

	foreach (ICacheEntry<int, IBinaryObject> cacheEntry in qry)
	{
		Console.WriteLine("Person {0}:", cacheEntry.Key);
		
		IBinaryObject person = cacheEntry.Value;
		
		IBinaryType personType = person.GetBinaryType();
		
		// Show all fields
		foreach (var fieldName in personType.Fields)
			Console.WriteLine("  {0}: {1}", fieldName, person.GetField<object>(fieldName));
	}
}
{code}


> .NET: Add pure binary mode example with SQL
> -------------------------------------------
>
>                 Key: IGNITE-3630
>                 URL: https://issues.apache.org/jira/browse/IGNITE-3630
>             Project: Ignite
>          Issue Type: Improvement
>          Components: platforms
>            Reporter: Pavel Tupitsyn
>              Labels: .net
>             Fix For: 1.8
>
>
> This is an important Ignite use case: having no classes at all, working with cache in binary mode and running SQL queries.
> We should have a dedicated example for this (regular one and for LINQPad).
> Below is a piece of code that I used for Gitter user question:
> {code}
> using (var ignite = Ignition.Start())
> {
> 	// Configure queries for Person object with FirstName, LastName fields
> 	var cacheConfig = new CacheConfiguration
> 	{
> 		Name = "persons",  // can be anything
> 		QueryEntities = new[]
> 		{
> 			new QueryEntity
> 			{
> 				KeyType = typeof(int),
> 				ValueTypeName = "Person",  // name of the dynamically created type
> 				Fields = new[]  // define fields to be available in queries
> 				{
> 					new QueryField("FirstName", typeof(string)),
> 					new QueryField("LastName", typeof(string))
> 				}
> 			}
> 		}
> 	};
> 	
>     // Create new cache, switch to binary mode
>     var cache = ignite.CreateCache<int, object>(cacheConfig).WithKeepBinary<int, IBinaryObject>();
> 	// Populate the cache
> 	for (var i = 0; i < 10; i++)
> 	{
> 		var person = ignite.GetBinary().GetBuilder("Person")  // same name as in ValueTypeName above
> 			.SetField<string>("FirstName", "Name-" + i)
> 			.SetField<string>("LastName", "LastName-" + i)
> 			.Build();
> 			
> 			cache[i] = person;
>     }
> 	
> 	// SQL query for FirstName ending with "-3"
> 	var qry = cache.Query(new SqlQuery("Person", "where FirstName like '%-3'"));
> 	foreach (ICacheEntry<int, IBinaryObject> cacheEntry in qry)
> 	{
> 		Console.WriteLine("Person {0}:", cacheEntry.Key);
> 		
> 		IBinaryObject person = cacheEntry.Value;
> 		
> 		IBinaryType personType = person.GetBinaryType();
> 		
> 		// Show all fields
> 		foreach (var fieldName in personType.Fields)
> 			Console.WriteLine("  {0}: {1}", fieldName, person.GetField<object>(fieldName));
> 	}
> }
> {code}



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