Hi, 

Yaac <http://code.google.com/p/yaac/>0.4 is just released. This is the 
first time I post release note there. So for some of you don't know what is 
*Yaac*, it's a java maven project designed to perform ad hoc admin tasks. 
You can simply download and deploy Yaac to your own domain as a separated 
version. Checkout this 
page<http://code.google.com/p/yaac/wiki/DeployGuideline>for the deployment 
guideline.

===================New functions for v0.4=======================
EGQL (extended GQL) now supports *insert* statement!

   - You can create an arbitrary entity kind / property name by executing 
   insert statement:
   
* insert into any_kind values (prop_1 = 'a', prop_2=now(), prop_3=10)*
Verify immediately by
* select * from any_kind*
In this case, Yaac will assign a numeric key to the new entity (generated 
by appengine)



   - You can also create entity with a predefined key
   
*insert into any_kind values (__key__=key('any_kind', 'key_1'), prop_1 = 
'a', prop_2=now(), prop_3=10)*

make sure key('kind_a', 'key_1') doesn't exist in datastore before



   - Once you have already specified a key to insert, you don't even need 
   into any_kind in above statement, as entity kind already determined by key.
   
*insert values (__key__=key('any_kind', 'key_1'), prop_1 = 'a', 
prop_2=now(), prop_3=10)*


   - You can also decide whether to index a specific property by the 
   optional field indexed=true/false, by default all indexable property will 
   be indexed
   
*insert into any_kind values (prop_1 = 'a', prop_2=now(), prop_3=10 
(indexed=false))*

Note that key will be indexed anyway, and blob / text will never be indexed


   - You can even insert records based on the result of select query, for 
   instance:
   
*insert into job_archive values (orig_key = __key__, timestamp = now() 
(indexed=false)) from (select * from job)*

Verify your result by:

*select count(*) from job_archive*

 
=================some features implemented in earlier releases==============
Extended GQL (EGQL)
Aggregation functions, used together with group by clause and having clause 
(optional):
MAX, MIN, SUM, COUNT, AVG
Scalar functions:
UCASE / LCASE / MID / LEN / ROUND / FORMAT / NOW / TYPE / DATETIME / KEY / 
USER/ GEOPT, etc.
Inter properties comparison in where clause: eg, *where property1 = 
property2*
Powerful Arithmetic Expressions: eg, *where property1 + 5 < property2 * (2 
+ property3)*
Powerful boolean expressions: eg, *where condition1 and (condition2 or 
condition3) and not condition4*
Like query: eg, *where ucase(property1) like "%abc%" (new)*
More details about EGQL syntax please refer to this page: 
http://code.google.com/p/yaac/wiki/EGQLReference

Datastore Browser:
Download datastore blob / text and blobstore blob directly
Better display keys in list property

Datastore Editor:

Edit any datastore types including blob / text / imhandle / category / 
email / user / key / blobkey / list, etc

Manage entity group hierachy in a more convenient way

Create new entity / new property. 


Datastore Statistics:
More detailed breakdown on root / non root statistics

Sandbox (http://sandbox.yetanotheradminconsole.appspot.com/) is updated 
with the latest version. 86K soccer matches are uploaded. Login with your 
google account and play with it!

For example, for all *Arsenal*'s away draw matches against those end with *
united *having average full time goals are more than 1, we can use 
following EGQL to query:

*
select HOME_TEAM, AWAY_TEAM, count(1), sum(FTHG + FTAG)
from MATCH 
where FTHG = FTAG and AWAY_TEAM = "Arsenal" and lcase(HOME_TEAM) like 
"%united" 
group by HOME_TEAM, AWAY_TEAM
having sum(FTHG + FTAG) / count(1) > 1
*

Also try this link to try new look of entity viewer (entity with 
grandparent with almost all datatypes)
http://sandbox.yetanotheradminconsole.appspot.com/#editor:ahhzfnlldGFub3RoZXJhZG1pbmNvbnNvbGVydwsSFktJTkRfV0lUSF9BTExfUFJPUEVSVFkYZAwLEhZLSU5EX1dJVEhfQUxMX1BST1BFUlRZIhlzdHJpbmdfa2V5X3dpdGhvdXRfZW50aXR5DAsSFktJTkRfV0lUSF9BTExfUFJPUEVSVFkiCnN0cmluZ19rZXkM

Best regards, 
Max

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine-java/-/Nv6fvftz6pIJ.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to