Indexing means simply explain pls?
Hi,
indexing means simply explain pls?
Index :
An Index is a copy of database table having few numbers of fields. This copy is always in sorted form. As we know, Sorted data would always have a speed access from a database table. Hence, we use an index for the table while reading the database records. Index also contains a pointer pointing towards actual database table so that it can access fields that are not contained in the Index
For More Information About Index :
https://www.sdn.sap.com/irj/sdn/wiki?path=/display/profile/2007/09/19/indexinginSAP+Tables
Regards.
Similar Messages
-
Hello guys! Do you know how to make a video smaller on imovie? Not by size or trim, i mean simply show the video as small as possible in the middle of the screen! Please text back.
Go to the Map, Background & Animatic Browser (last button in the centre tool bar alongside the Transition button). Drag the Black background (or any background) to your project. From an Event, drag the video selection directly onto the Black clip in the project. As you drop the video clip, a pop-up menu will appear. Select Picture in Picture.
Your video will appear as a small picture within the black clip. Click on it and reposition it to the centre of the viewer, using the yellow guide lines to get the exact centre position. Resize the Picture in Picture if desired by dragging the corner handles.
NOTE: You may need to extend the duration of the Black clip to match the duration of the video clip. Double-click on the Black clip to open the Inspector, then adjust the duration there.
John
Message was edited by: John Cogdell - added NOTE -
What the index means? in setCoordinate(int index...?
What the index means? in setCoordinate(int index...?
Although I looked at the API manual, but I still don't get it.
public void setCoordinate(int index,
double[] coordinate)
Sets the coordinate associated with the vertex at the specified index.
Parameters:
index - destination vertex index in this geometry array
coordinate - source array of 3 values containing the new coordinateWhen you create geometry via a GeometryArray object the coords are stored in an array in which the order is important (eg a tri strip uses the last 2 coords and the current to draw a triangle, a tri fan uses the first, last and current to draw a triangle).
That method allows you to overwrite a coord at a specific point to change the geometry. -
What is the "No database index" means when you Creating Secondary Indexes?
HI,
I'm Creating Secondary Indexes in the maintenance screen of the table(se11)
There are three options under "Non-unique Index":
1.Index on all database systems
2.For selected database systems
3.No database index
My questions is :
What do u mean by "No Database Index" and when is it used.
Can anybody plz tell me what's the difference of this three options ?
Here is what i found in the help:
No database index: The index is not created in the database. If you
choose this option for an index that already exists in the database,
it is deleted when you activate this option.Hi,
It is clear from the help documentation,
Here see what the help document says:
Create the index in the database (selection)
Whether an index improves or worsens performance often depends on the database system. You can therefore set whether an index defined in the ABAP Dictionary should be created in the database.
This makes it easier to install a platform-specific customer system.
You can set this option as follows:
1. Index in all database systems: The index is always created in the database.
2. In selected database systems: The index is created depending on the database system used. In this option, you must specify the databases in which the indexes are to be created. You can do this either on an inclusive (list of systems on which it should be created) or an exclusinve (list of systems on which it should not be created) basis. In either case, you can list up to four different database systems.
3. No database index:: The index is not created in the database. If you set this option for an index that already exists in the database, it is deleted when you activate the table in the ABAP Dictionary.
Note: Unique indexes have an extra function, and must therefore always be created in the database. The database system prevents entries or index fields being duplicated. Since programs may rely on this database function, you cannot delete unique indexes from the database.
Hope it helps you,
Regards,
Abhijit G. Borkar -
Looking for a book or link to understand indexes stats an explain plan
Please,
Where could I find a good book or link to leran more about indexes statistics:
My Concerns are:
How could I know indexes in the database that are most used,less used and used at all in order to get rid of the last one?
A book or link to fully undertstand how to analyze explain plan give some advices from that.
Thank a lot for your coperationThere is any link where I can find how to analyze explain plan output?Again, the manuals are usually a good place to start:
http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14211/ex_plan.htm#g42231 -
Deadlock - can some one explain pls?
public class Lazy {
private static boolean initialized = false;
static {
Thread t = new Thread(new Runnable() {
public void run() {
initialized = true; // Deadlocks here
t.start();
try {
t.join();
} catch(InterruptedException e) {
throw new AssertionError(e);
public static void main(String[] args) {
System.out.println(initialized);
}The above given program deadlocks at the point specified in comment. Can someone explain the reason for this? Thanks in advanceSounds reasonable. But I do also expect some voodoo
magic to be involved since the posted code isn't
synchronized.If I understand the few lines of the VM Spec correctly, the above would lead to:
public class Lazy {
private static boolean initialized = false;
static {
Thread t = new Thread(new Runnable() {
public void run() {
// <VM>
if( !Lazy.class.ready() ) {
synchronize( Lazy.class ) {
// Do Lazy init
// </VM>
initialized = true; // Deadlocks here
t.start();
try {
t.join();
} catch(InterruptedException e) {
throw new AssertionError(e);
public static void main(String[] args) {
// <VM>
if( !Lazy.class.ready() ) {
synchronize( Lazy.class ) {
Do Lazy init
// </VM>
System.out.println(initialized);
VM Spec (squiggly thing)2.17.5 Detailed Initialization Procedure
Message was edited by:
mlk -
Explain pls. FILED & MODULE in Module Pool
HI Experts,
Pls. clarify one simple doubt in <i><b>Module Pool</b></i>,
Wht is the functionality of,
1) CHAIN & ENDCHAIN
2) FILED & MODULE
thanq.Hi,
To ensure that one or more PAI modules are only called when several screen fields meet a particular condition, you must combine the calls in the flow logic to form a processing chain. You define processing chains as follows:
CHAIN.
ENDCHAIN.
All flow logic statements between CHAIN and ENDCHAIN belong to a processing chain. The fields in the various FIELD statements are combined, and can be used in shared conditions.
CHAIN.
FIELD: <f1>, <f 2>,...
MODULE <mod1> ON CHAIN-INPUT|CHAIN-REQUEST.
FIELD: <g1>, <g 2>,...
MODULE <mod2> ON CHAIN-INPUT|CHAIN-REQUEST.
ENDCHAIN.
Re: chain-Endchain
When this command is used, all of the fields on the screen that belong to the processing chain (all of the fields listed in the field statements) are made ready for input again. Other fields are not ready for input. Whenever the MODULE statement appears within a processing chain, even if there is only one FIELD attached to it, all of the fields in the chain (not only the affected field) are made ready for input again, allowing the user to enter new values. If the fields in the processing chain are only checked once, the PAI processing continues directly after the FIELD statement, and the preceding modules are not called again.
CHAIN.
FIELD: <f1>, <f 2>,...
MODULE <mod1> ON CHAIN-INPUT|CHAIN-REQUEST.
FIELD: <g1>, <g 2>,...
MODULE <mod2> ON CHAIN-INPUT|CHAIN-REQUEST.
ENDCHAIN.
Check this out
http://help.sap.com/saphelp_nw04/helpdata/en/9f/dbabbd35c111d1829f0000e829fbfe/content.htm
http://help.sap.com/saphelp_47x200/helpdata/en/d1/801ca2454211d189710000e8322d00/frameset.htm
check the demo example
DEMO_DYNPRO_FIELD_CHAIN -
Windows Indexing - What is It, and How Can it Affect Me?
What is Windows Indexing, how do I use it, and why might it be getting in the way, when I am doing Video editing?
Well, most versions of Windows has a feature, called Windows Indexing. This is a little application that roams your system, looking for files, that it can Index, so that Searches are quicker. For many computers, it causes no problems, as it goes about looking at your DOC, and TXT files, compiling indexes to speed up Searches, especially for content. When it’s working, it’s behind the scenes, and usually causes no problems. When a DOC or TXT file changes, or is created, it will Lock that file, while it searches through its content for future Searching.
Now, when one is doing Video editing, they are working with some large files. Windows Indexing cannot glean anything from the AV files, or from the various working files, that an NLE (Non Linear Editor) creates, and updates constantly. The inability to extract useful info from those files does not stop Windows Indexing from trying - and trying. The files get locked, so that the user, or the NLE cannot access them, when needed. Every time that one of these files gets changed, or written, Windows Indexing will immediately Lock it, as it attempts to do its job. This can cause all sorts of issues, and many slowdowns and even program crashes.
One can find out if they have Windows Indexing turned ON, or not. It will be ON by default. Go to My Computer and click on each HDD (Hard Disk Drive), both internal and external, and then Rt-click, choosing Properties. In most versions of Windows, the Windows Indexing status will be shown near the bottom of the drop-down menu.
This differs by version, but one can usually turn it OFF for the entire HDD, or can limit it to just certain folders. I turn it OFF, as I mostly do Video and image editing on my computers, but some do leave it on, but just for folders with their DOC and TXT files, as it does speed up Searches, and Windows Indexing can speed those up, for the DOC, TXT and some similar files.
Hope that this explains why one might be getting “access denied,” “file locked,” and other errors, or major slowdowns, especially when working with large AV files, or perhaps when writing a DVD to a folder. Also, Render files can get locked by Windows Indexing, as it struggles to do its job.
HuntNoel Carboni just posted some comments on Windows Indexing on the Photoshop Forum. Though there are some differences in the files being indexed, and some of the ramifications, I thought the info useful, so am adding it here:
Disable Indexing
Indexing is supposed to make it quick and easy to find things on your computer using Windows Search (that little box at the upper-right of Explorer windows).
But when you think about it, does it make sense to read all the files on your disk, extract everything you could possibly want to search for, and store it on that same disk another way? To even consider indexing providing better performance than just searching the files, Microsoft must be picking and choosing the data they think you'll want to look for (excluding data you WON'T want to search for), where you'll want to search, and in what kinds of files, and in fact they are. How could they know everything you'll ever want to search for?
They can't. Not everything is indexed, and never will be!
Try this: Create a simple text file on your disk, in a temporary folder. Call it "FindMe.log" and put in the text "This file contains important tax information". Now navigate to that folder with Explorer and enter the word "tax" into the Search box at the upper-right. Enter any of the words in that file! Windows Search will not find the file, because it simply does not LOOK in .log files by default, and there's no fallback strategy - Windows Search simply does not index nor search for information for some kinds of files. Incredible!
All it takes is ONE TIME searching for something you know is there and NOT finding it to destroy your confidence in Windows Search.
And so they scan through your files endlessly, pick out the strings you might someday search for, and store them in yet another set of files (the "index"). As though your computer has nothing better to do.
Not only is the basic premise of this wrong, but it's not even implemented very well. The index often becomes corrupted, and so Microsoft has provided functions for you to clear and regenerate it. Just what you wanted to be doing - NOT.
Consider these shortcomings:
Some file types are simply not indexed or searched by default – e.g., .log files, and there's no fallback. If you create a new file type no one's seen before, its contents will not be indexed.
Only strings Microsoft thinks you are likely to search for are indexed.
Because of poor implementation, indexing will miss things in some file types that are indexed – e.g., older Microsoft Word documents or files containing Unicode text (Microsoft's own invention).
Indexes often become corrupted and the Windows Search results fall out of date or it stops finding things entirely.
Indexing operations use computer time, increase disk wear, and interfere with your own access to your files.
In summary, indexed Windows Search operations in Windows 7 simply can't be trusted to find your data in your files when it's critical, and so they're essentially useless. Searching for filenames using Windows Search actually can be occasionally useful (though the syntax to ensure it searches only filenames is a bit tricky), but this doesn't require indexing.
Moreover, indexing can actually interfere with file operations, causing your system to report disk corruption, because of an implementation error in indexing and NTFS (search the web for "Atomic Oplock", for example).
So indexing should simply and utterly be disabled. This won't actually stop you being able to try Windows Search - on the contrary with indexing off Windows 7 will actually search your actual files (within the limitations listed above) just when you tell it to, and (since indexing isn't implemented very well) it may actually INCREASE the probability that you might find what you're looking for.
Here's how to disable indexing:
1. Click Start and enter services in the search box.
2. When Services (with little gears) comes up, click it.
3. Scroll down to the Windows Search service.
4. Right click it and choose Properties.
5. Change the Startup type to Disabled.
6. Click [ Stop ] to stop the service.
7. Click [ OK ].
8. Click Start and enter index in the search box.
9. When Indexing options comes up, click it.
10. Click the Advanced button.
11. Click the [ Rebuild ] button to delete the index.
12. It is a good idea to reboot after this.
-Noel
And a "thanks" to Noel for putting this together. As the thread that this originally appeared in has a lot of Photoshop material, and discussions on "other OS's" than Win7, I just exerpted this block.
Hunt -
Trying to understand context indexes and contains-help
Hi
i am using
Achieving functionality of many preferences using one context index
to understand context indexes and contains
and i get the following
Error starting at line 1 in command:
begin
ctx_ddl.create_preference ('nd_mcds', 'multi_column_datastore');
ctx_ddl.set_attribute ('nd_mcds', 'columns', 'text nd, text text');
ctx_ddl.create_section_group ('nd_sg', 'basic_section_group');
ctx_ddl.add_ndata_section ('nd_sg', 'nd', 'nd');
ctx_ddl.create_preference ('test_lex', 'basic_lexer');
ctx_ddl.set_attribute ('test_lex', 'whitespace', '/\|-_+');
end;
Error report:
ORA-06550: line 5, column 15:
PLS-00302: component 'ADD_NDATA_SECTION' must be declared
ORA-06550: line 5, column 7:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
so i am using the following to check for the error
http://docs.oracle.com/cd/E18283_01/text.112/e16593/cddlpkg.htm#BABCBFCB
plus
oracle text application developer's guide
plus
oracle text reference
but these have not listed that error (i have even googled this in vain)
background::we were actually using catsearch but because of its downsides i want to implement this
Is Achieving functionality of many preferences using one context index a good place to start when one does not know about
context and contains??
please post any other useful link for contains and context index that even explains
1) fuzzy
2) stem
3) synonym
4) near
5) soundex
6)ndata
7)lexer
thanks in advanceNdata is new to Oracle 11g. Your other posts indicate that you are using Oracle 10g, so you don't have ndata, so you get an error when you try to use it. If you want to use the 11g features that enable context indexes with contains to do all of the things that ctxcat indexes with catsearch do, then you need to upgrade to 11g.
The online documentation is searchable. Most things regarding Oracle Text are contained in either the Oracle Text Reference or the Oracle Text Application Developer's guide.
I suggest that you start with something very simple, then build from there.
The following is similar to your other post that used catsearch:
SCOTT@orcl_11gR2> CREATE TABLE mv_cat_seg_reg_prod
2 (cat_ids VARCHAR2 ( 7),
3 act_status VARCHAR2 (10),
4 name VARCHAR2 ( 1),
5 email VARCHAR2 ( 1),
6 address1 VARCHAR2 ( 1),
7 address2 VARCHAR2 ( 1),
8 contact_name VARCHAR2 ( 1),
9 mobile VARCHAR2 ( 1),
10 telephone VARCHAR2 ( 1))
11 /
Table created.
SCOTT@orcl_11gR2> INSERT ALL
2 INTO mv_cat_seg_reg_prod VALUES
3 ('1', 'Y', 'A', 'B', 'C', 'D', 'E', 'F', 'G')
4 INTO mv_cat_seg_reg_prod VALUES
5 ('2', 'N', 'H', 'I', 'J', 'K', 'L', 'M', 'N')
6 SELECT * FROM DUAL
7 /
2 rows created.
SCOTT@orcl_11gR2> CREATE INDEX mv_cat_seg_reg_prod_idx
2 ON mv_cat_seg_reg_prod (cat_ids)
3 INDEXTYPE IS CTXSYS.CONTEXT
4 /
Index created.
SCOTT@orcl_11gR2> SELECT token_text FROM dr$mv_cat_seg_reg_prod_idx$i
2 /
TOKEN_TEXT
1
2
2 rows selected.
SCOTT@orcl_11gR2> SELECT *
2 FROM (SELECT SCORE (1), name, email, address1, address2, contact_name, mobile, telephone
3 FROM mv_cat_seg_reg_prod
4 WHERE CONTAINS (cat_ids, '1', 1) > 0
5 AND act_status = 'Y'
6 ORDER BY DBMS_RANDOM.VALUE)
7 WHERE ROWNUM < 8
8 /
SCORE(1) N E A A C M T
4 A B C D E F G
1 row selected. -
Issue with select query for secondary index
Hi all,
I have created a secondary index A on mara table with fields Mandt and Packaging Material Type VHART.
Now i am trying to write a report
Tables : mara.
data : begin of itab occurs 0.
include structure mara.
data : end of itab.
*select * from mara into table itab*
CLIENT SPECIFIED where
MANDT = SY-MANDT and
VHART = 'WER'.
I'm getting an error
Unable to interpret "CLIENT". Possible causes of error: Incorrect spelling or comma error.
if i change to my select query to
*select * from mara into table itab*
where
MANDT = SY-MANDT and
VHART = 'WER'.
I'm getting an error
Without the addition "CLIENT SPECIFIED", you cannot specify the client field "MANDT" in the WHERE condition.
Let me know if iam wrong and we are at 4.6c
ThanksLike I already said, even if you have added the mandt field in the secondary index, there is no need the use it in the select statement.
Let me elaborate on my reply before. If you have created a UNIQUE index, which I don't think you have, then you should include CLIENT in the index. A unique index for a client-dependent table must contain the client field.
Additional info:
The accessing speed does not depend on whether or not an index is defined as a unique index. A unique index is simply a means of defining that certain field combinations of data records in a table are unique.
Even if you have defined a secondary index, this does not automatically mean, that this index is used. This also depends on the database optimizer. The optimizer will determine which index is best and use it. So before transporting this index, you should make sure that the index is used. How to check this, have a look at the link:
[check if index is used|http://help.sap.com/saphelp_nw70/helpdata/EN/cf/21eb3a446011d189700000e8322d00/content.htm]
Edited by: Micky Oestreich on May 13, 2008 10:09 PM -
Could let me where am I doing wrong in this code
Declare
cursor c is select* from T_source;
TYPE src_tgt IS TABLE OF t_source%ROWTYPE INDEX BY BINARY_INTEGER;
rec_tab src_tgt;
begin
open c;
fetch c BULK COLLECT INTO rec_tab limit 10000;
WHILE rec_tab.COUNT > 0 LOOP
FORALL i IN 1..rec_tab.COUNT
INSERT INTO t_dest (empno, ename, joindate) VALUES (rec_tab(i).empno,rec_tab(i).ename,rec_tab(i).joindate);
fetch c BULK COLLECT INTO rec_tab limit 10000;
END LOOP;
CLOSE c;
end;=========================
Error:
pls 436- Implementation Restriction
Pls 382- Expression is wrong type
=========================
DB:9i
Regards,
pallisDear Savita,
please refrain from such bad advices. The error the O/P is getting in Oracle 9i is self explaining:
PLS-00436: implementation restriction: cannot reference fields of BULK In-BIND table of recordsActually you cannot use this a table of records with FORALL statements. This restriction has been removed in Oracle 11g.
However as we stated previously it's not suggested to use FORALL when you can replace everything with a single SQL statement (INSERT / SELECT).
Last but not least: when you put some code or output please enclose it between two lines starting with {noformat}{noformat}
i.e.:
{noformat}{noformat}
SELECT ...
{noformat}{noformat}
Regards.
Al -
Need explaination!?!? of simple code?!?!?
can some1 explain to me how the "for statement" works?.... if n equals 4
and what does index++ mean?
Thanks PPL!
public static void stars( int n )
int index;
if ( n > 0 )
for (index = 0; index < n; index++ )
System.out.print("*");
System.out.println( );
stars( n - 1 );
for (index = 0; index < n; index++ )
System.out.print("*");
System.out.println( );
}if n=4 then the code prints this out:
Edited by: slvr99 on Dec 3, 2008 11:17 AM
Edited by: slvr99 on Dec 3, 2008 11:17 AMIf you wan to clarify what stars each loop prints out, why not replace the first
System.out.print("*");with
System.out.print("#");Don't be afraid to play around with code, or to use some common sense. -
Preserving Global indexes on partitioned tables
Hello,
we have a 24x7 application where a large number of client processes (around 200) loads details of transactions performed onto an historycal, date partitioned table - Clients are transactional, so they use INSERT + COMMIT for every row.
We have the need to create an additional index with a unique constraint on a column where the partitioning key cannot be included, therefore this index has been declared global.
When an old partition is dropped, the global index usually gets unusable, and client processes gets an ORA-01502.
To avoid this, I have tried the following:
LOCK TABLE ... IN EXCLUSIVE MODE to make the script wait until there are no pending COMMIT
ALTER TABLE ... DROP PARTITION ... UPDATE GLOBAL INDEXES PARALLEL to avoin index to be marked UNUSABLE and release the table lock at the end of the operation.
It seems working fine, as the clients gets locked on their INSERTs for a limited amount of time (apparently just the DROP time) and after that they go on on their activities while the global index is still USABLE and the index updates proceeds for some minutes.
In the end, my perception is that the UPDATE GLOBAL INDEXES clause behave as an online rebuild, thus leaving other processes working on partition not affected by the DROP with the UNIQUE constraint still active.
Is there anybody who can confirm me tha my idea is right, and this UPDATE clause is a SAFE way to achieve pratition drop without service interruption or index corruption for transactional clients?
Many thanks,
RiccardoHi,
In fact, only the UPDATE GLOBAL INDEXES clause is pertinent here. here's what happens when you're doign the LOCK/ALTER:
LOCK TABLE ... IN EXCLUSIVE MODE
You wait till you get a table lock. All "clients" are enqueued till you acquire the lock, and then stay enqueued till you release it.
ALTER TABLE ... DROP PARTITION ... UPDATE GLOBAL INDEXES PARALLEL
You start a DDL statement. So the first thing Oracle does is to COMMIT the current transaction, hence releasing the LOCK you previously acquired explicitly.
The "clients" resume standard operations, meanwhile the partition is dropped and the global index updated. Once the drop is over, the DDL transaction is commited.Meaning simply: the explicit table locking is useless!
Yoann. -
Hi everyone,
how to tune spatial index in oracle? Pls advice
Thanks in AdvanceThat's a very open ended question. When posting questions on this forum you'll get better results if you have very specific questions. So do you have a specific spatial query which isn't performing well? If so then post as much information as you can about it.
- Exactly what version of Oracle database?
- What is the SQL query you're running - if possible include the explain plan
- What is your expected response time for the query?
- How much data is in the table and what kind of data is it
- Is possible provide some information about the use case behind the query you're running.
There are various techniques available to make spatial queries perform as you'd expect, but I'm not going to waste my time going through them here until you provide some useful information.
I'd recommend having a look at this presentation for some advice:
http://download.oracle.com/otndocs/products/spatial/pdf/ow_2009/spatial_oow09_tuning_and_best_practices2.pdf
Also have a look at this:
http://download.oracle.com/otndocs/products/spatial/pdf/spatial_wp09_bestprac.pdf -
hi
i dont understand how index grow in a tree like structure...i mean...oracle says that up to 4 level branches are possible...if we have 10000 key value , so can anybody tell me how these values wil be stored in the index..i mean just explain here and i will make image in my mind. i know that actual value will be in leaf blocks...and how the address of these actual values wil be stored and in which order in the upper level blocks, what will be in root block
RegardsActually, there have been discussions elsewhere that Oracle b-tree indexes can be made to have 22 or 23 levels (but you really, really have to work at it).
The Oracle Concepts Guide has a pretty good introduction to index storage http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96524/c11schem.htm#13387
Justin
Distributed Database Consulting, Inc.
http://www.ddbcinc.com/askDDBC
Maybe you are looking for
-
Minor Fan Noise (not typical, I don't think)
Have a new 13" macbook pro (june '09). The noise I'm hearing is not the typical HD "beep" noises or high pitched whines or any of that. It's a very subtle noise, seemingly from the fans. It sounds like a clock ticking at a faster rate. There's no vib
-
BEx Variable Key/Name swap when used as Prompt in WebI report
Hi, We are using Bex Variables in a Query used as a base for a BOBJ Universe and Query. When refreshing the report the Prompt box displays the Name and Key of the infoobject (Dimension), but when selecting one of those values - moving it to the right
-
EAP-TLS and ISE 1.1 with AD certificates
Hello, I am trying to configure EAP-TLS authentication with AD certificates. All ISE servers are joined to AD I have the root certificate from the CA to Activie Directory installed on the ISE servers I created the certificate authentication profile u
-
Hi Guys, Thanks in advance. I just setup OEM11g on Solaris sparc 64 bit. on Server A I already have OEM 10.2.0.5 on a different server B And I have 10.2.0.5 agent on server C working fine using oms on 10.2.0.5 on server B. Can I install 11.1.0.1.0 ag
-
IiTunes Match