Query for a simple caching mechanism
Suppose that I have a CONTRACT table with 50000 records.
I want to get the last inserted 100 records and then the next 100 and so on...
In other words, like using a file pointer I want to get the next n records and then the next n records... Because I cannot load all the records in memory.
I wrote a query with an IN clause and ROWNUM pseudo-column for the issue. But it doesn't result like i expected. Here is what it looks like:
SELECT contract.contract_id
FROM vw_contract contract
WHERE ROWNUM <= 2
AND contract.contract_date BETWEEN TO_DATE('03.01.2005','DD.MM.YYYY') AND TO_DATE('04.02.2005','DD.MM.YYYY')
AND contract.contract_id NOT IN (SELECT k.contract_id
FROM vv_yk_dp_contract c
WHERE ROWNUM <= 2
AND c.contract_date BETWEEN TO_DATE('03.01.2005','DD.MM.YYYY') AND TO_DATE('04.02.2005','DD.MM.YYYY'));
To test it, I select the first 4 records. That query should give me the third and forth records but it doesn't. Also, the query is slow.
Should I use a cursor? But, with PL/SQL how can a cursor be used for getting records between Nth and Mth?
What kind of strategy should be used for such a simple caching issue?
I want to get the last inserted 100 records and then the next 100 and so on...
In other words, like using a file pointer I want to get the next n records and then >>the next n records...Something like this ? (But the solution depends on what kind of client you use).
SQL> create or replace type t_varchar is table of varchar2(10)
2 /
Type created.
SQL> create or replace package pkg1
2 is
3 cursor a is select ename from emp order by 1;
4 end;
5 /
Package created.
SQL> create or replace function get_rows
2 return t_varchar
3 pipelined
4 is
5 name emp.ename%type;
6 begin
7 if not pkg1.a%isopen then
8 open pkg1.a;
9 end if;
10 loop
11 fetch pkg1.a into name;
12 exit when pkg1.a%notfound;
13 pipe row(name);
14 end loop;
15 close pkg1.a;
16 return;
17 end;
18 /
Function created.
SQL> select /* from 1 to 3th */ * from table(get_rows) where rownum <=3;
COLUMN_VAL
ADAMS
ALLEN
BLAKE
SQL> select /* from 4th to 9th */ * from table(get_rows) where rownum <= 6;
COLUMN_VAL
CLARK
FORD
JAMES
JONES
KING
MARTIN
6 rows selected.
SQL> select /* from 10th to 14th */ * from table(get_rows) where rownum <= 5;
COLUMN_VAL
MILLER
SCOTT
SMITH
TURNER
WARDRgds.
Similar Messages
-
Query for clearing the caches automatically in the portal?
Hi There,
We are using EP Portal 6,currently we are having Oracle Archive logs issue which slows down the system.Now we are clearing the caches in the System Landscape-> Universal Worklist & Workflow->Universal Worklist Administration->Universal Worklist u2013Cache Admin by Manually.
*Is there any steps to do it automatically which helps a lot?
Thanks,
Krishna.Hi,
when you refresh the UWL it will clears the cache explicitly, Default time for UWl refresh is 5 min, You can automatically refresh the cache by changing the properties of UWL ivew (in Portal content) -
sap_uwl_viewname : DefaultView
useNavigationId : com.sap.pct.erp.mss.Main
Check this wiki page for more info on cache interval change and more:
http://wiki.sdn.sap.com/wiki/display/BPX/CompletedtasksdisappearonlyafterarefreshofUWL+cache
all these work in EP 7 but not sure with EP 6.
regards,
Mahesh -
consider this situation,
Two or more productid will be accquired by same customerid, by same shipvia, on the same day of the week of shipped date. i want the simple query for this.
my tables are from northwind:
[orders] = OrderID, CustomerID, EmployeeID, OrderDate, RequiredDate, ShippedDate, ShipVia, Freight, ShipName, ShipAddress, ShipCity, ShipRegion, ShipPostalCode, ShipCountry.
[orders details] = OrderID, ProductID, UnitPrice, Quantity, Discount.
i tried some but it is not exact, it gives wrong result.
select pd.CustomerID,pd.ProductID, pd.no_of_time_purchased, sd.ShipVia, sd.same_ship_count, shipped_day from
select ProductID,o.CustomerID,COUNT(productid) as no_of_time_purchased
from orders o join [Order Details] od on o.OrderID=od.OrderID group by ProductID,o.CustomerID
having count(od.ProductID) >1) pd
join
(select OrderID,customerid, shipvia, count(shipvia)as same_ship_count, DATENAME(DW,ShippedDate)as shipped_day from orders
group by customerid, ShipVia, ShippedDate having COUNT(ShipVia) > 1 ) sd
on sd.CustomerID=pd.CustomerIDHi,
I think I have a solution that will at least give you a clue how to go about it. I have simplified the tables you mentioned and created them as temporary tables on my side, with some fake data to test with. I have incldued the generation of these temporary
tables for your review.
In my example I have included:
1. A customer which has purchased the same product on the same day, using the same ship 3 times,
2. Another example the same as the first but the third purchase was on a different day
3. Another example the same as the first but the third purchase was a different product
4. Another example the same as the first but the third purchase was using a different "ShipVia".
You should be able to see that by grouping on all of the columns that you wich to return, you should not need to perform any subselects.
Please let me know if I have missed any requirements.
Hope this helps:
CREATE TABLE #ORDERS
OrderID INT,
CustomerID INT,
OrderDate DATETIME,
ShipVia VARCHAR(5)
CREATE TABLE #ORDERS_DETAILS
OrderID INT,
ProductID INT,
INSERT INTO #ORDERS
VALUES
(1, 1, GETDATE(), 'ABC'),
(2, 1, GETDATE(), 'ABC'),
(3, 1, GETDATE(), 'ABC'),
(4, 2, GETDATE() - 4, 'DEF'),
(5, 2, GETDATE() - 4, 'DEF'),
(6, 2, GETDATE() - 5, 'DEF'),
(7, 3, GETDATE() - 10, 'GHI'),
(8, 3, GETDATE() - 10, 'GHI'),
(9, 3, GETDATE() - 10, 'GHI'),
(10, 4, GETDATE() - 10, 'JKL'),
(11, 4, GETDATE() - 10, 'JKL'),
(12, 4, GETDATE() - 10, 'MNO')
INSERT INTO #ORDERS_DETAILS
VALUES
(1, 1),
(2, 1),
(3, 1),
(4, 2),
(5, 2),
(6, 2),
(7, 3),
(8, 3),
(9, 4),
(10, 5),
(11, 5),
(12, 5)
SELECT * FROM #ORDERS
SELECT * FROM #ORDERS_DETAILS
SELECT
O.CustomerID,
OD.ProductID,
O.ShipVia,
COUNT(O.ShipVia),
DATENAME(DW, O.OrderDate) AS [Shipped Day]
FROM #ORDERS O
JOIN #ORDERS_DETAILS OD ON O.orderID = OD.OrderID
GROUP BY OD.ProductID, O.CustomerID, O.ShipVia, DATENAME(DW, O.OrderDate) HAVING COUNT(OD.ProductID) > 1
DROP TABLE #ORDERS
DROP TABLE #ORDERS_DETAILS -
A simple query in My SQL what is the similer query for that in Oracle ???
hello friends
In My Sql if i have 1000 records in a table and i want to get the records from 400 to 550 then it is posible by giving the following query
Select * from Table a , table b where condition "List 400,550" gives the records from 400 to 550
what is the coresponding query for this in oracle database
any one help me pls
mail me to [email protected]Genericly, if you want records N through M from a SELECT statement, there's a wonderful article on asktom.oracle.com
http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:127412348064
Justin -
Suggestions required for Read-only cache group in timesten IMDB cache
Hi
In IMDB Cache , If the underlying oracle RAC is having two schemas ( "KAEP" & "AAEP" , having same sturcture and same name of objects ) and want to create a Read-only cache group with AS pair in timesten.
Schema
KAEP
Table
Abc1
Abc2
Abc3
Schema
AAEP
Table
Abc1
Abc2
Abc3
Can a read-only cache group be created using union all query ?
The result set of the cache group should contain both schema records in timesten read-only cache group will it be possible ?
Will there be any performance issue?You cannot create a cache group that uses UNION ALL. The only 'query' capability in a cache group definition is to use predicates in the WHERE clause and these must be simple filter predicates on the tables in the cache group.
Your best approach is to create separate cache groups for these tables in TimesTen and then define one or more VIEWS using UNION ALL in TimesTen in order to present the tables in the way that you want.
Chris -
Sample app for loading TopLink Cache into multiple server instances
We are looking for a solution for a reporting system for large data size (somewhere around 20G per application). We want to load all data into memory and query from there.
Does anyone have experience on this? A sample application for loading large caches into multiple physical servers would help a lot.
Thanks for your help in advance.Hi pam,
> How would multiple app server help...meaning what's the most beneficial part of having multiple app server in such as scenario.
A good Question, benefit is lot, In simple words Load balance.. Performance in Transfering the messages will be quick, System resource is maintained and you can assign particular adapters for particular interfaces..alone... if you have Multiple App servers....
Regards
Agasthuri Doss -
Hello Experts,
I'm tryng to develop my first application for EP (v7 SP12) with NWDS (without NWDI).
This application has to read and write data in the EP DB (oracle v10).
I'm using:
<u>a Dictionary Project</u> (define the DB Tables)
<u>a Java Project</u> (define class as DAO, DBManager etc)
<u>a Library Project</u>
<u>an EJB Project</u>
<u>an EAR Project</u>
With these projects I can deploy a <u>webService</u> in my EP server.
BUT I have some problem with a query that I'm tryng to sent to my DB through a DAO Class called by my WebService.
The query is simple and correct but it does not work...
This is the error message returned (the query id in bold)
(column names: GIORNO, NOMEDITTA, NOMEAREA, NOMESETTORE)
<i>HTTP/1.1 500 Internal Server Error
Connection: close
Server: SAP J2EE Engine/7.00
Content-Type: text/xml; charset=UTF-8
Date: Fri, 21 Sep 2007 14:29:57 GMT
Set-Cookie: <value is hidden>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Client</faultcode><faultstring>java.sql.SQLException: com.sap.sql.log.OpenSQLException: The SQL statement <b>"SELECT NOMESETTORE, MIN(? - "GIORNO") AS GIORNI FROM SRS_DATEINFORTUNI WHERE NOMEDITTA = ? AND NOMEAREA= ? GROUP BY NOMESETTORE ORDER BY NOMESETTORE"</b> <u>contains the syntax error[s]: - 1:25 - the arithmetic expression >>? - "GIORNO"<< contains a host variable (parameter marker)</u></faultstring><detail><ns1:getGiorniSettori_com.akhela.giorniSenzaInfortuni.ejb.exception.GiorniSenzaInfortuniException xmlns:ns1='urn:GiorniSenzaInfortuniWSWsd/GiorniSenzaInfortuniWSVi'></ns1:getGiorniSettori_com.akhela.giorniSenzaInfortuni.ejb.exception.GiorniSenzaInfortuniException></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope></i>
The variable '?' is the today date, the difference <b>"(?-GIORNO)"</b> is an int..
Moreover in my DAO class the query is <b>"SELECT NOMESETTORE, MIN(? - GIORNO) AS GIORNI FROM SRS_DATEINFORTUNI WHERE NOMEDITTA = ? AND NOMEAREA= ? GROUP BY NOMESETTORE ORDER BY NOMESETTORE</b>", instead in the error message is reported <b>MIN(? - "GIORNO")</b>...
We have tryed also with alternative query, for example we used <b>"MIN(SYSDATA - GIORNO)"</b> but <b>SYSDATA</b> was interpreted as column name and not found....
Any help???
Best RegardsHi, I found something about the Host Variable (http://help.sap.com/saphelp_nw70/helpdata/en/ed/dbf8b7823b084f80a6eb7ad43bdbb9/content.htm), there explain that if you want to use an host variable you have to put ':' as prefix..
My problem is that <u>I need to extract the minimum of the subtraction between two dates:</u>
Query <b>MIN(? - GIORNO)</b> --> <i>Error: the arithmetic expression >>? - "GIORNO"<< contains a host variable (parameter marker)</i>
So I tried to use the ':' as indicated in the manual..
<b>MIN:(? - GIORNO)</b> --> - <i>SQL syntax error: the token ":" was not expected here
- expecting LPAREN, found ':'</i>
<b>MIN(:(? - GIORNO))</b> --> <i>- 1:25 - Open SQL syntax error: :PARAMETER not allowed
- 1:26 - SQL syntax error: the token "(" was not expected here
- 1:26 - expecting ID, found '('</i>
Then I tried to avoid the MIN() function and I tried to do just the subtraction:
<b>? - GIORNO</b> --><i> - 1:21 - the arithmetic expression >>? - "GIORNO"<< contains a host variable (parameter marker)</i>
<b>:(? - GIORNO)</b> --> <i>- 1:21 - Open SQL syntax error: :PARAMETER not allowed
- 1:22 - SQL syntax error: the token "(" was not expected here
- 1:22 - expecting ID, found '('</i>
<b>'2007-09-24' - GIORNO</b> --> <i>- 1:34 - SQL syntax error: first argument of operator "-" must be a number, date/time or interval
- 1:43 - SQL syntax error: arguments of operator "-" do not have correct types
- 1:43 - SQL syntax error: derived columns in SELECT list with AS must be values</i>
<b>GIORNO - GIORNO</b> --> <i>- 1:21 - the group by list and the select list are inconsistent: the column >>"GIORNO"<< is neither grouped nor aggregated
- 1:30 - the group by list and the select list are inconsistent: the column >>"GIORNO"<< is neither grouped nor aggregated</i>
Why these parts of query are not accepted???
I don't understand why... I hope you can help me.
Best Regards
Alessandro -
Ideas For a Simple Program?
I need some ideas for a simple program for a project in class. Can anyone help me?
Import Classes
import java.io.*;
public class tictactoe
Define Variables
public static InputStreamReader ISR = new InputStreamReader(System.in);
public static BufferedReader BFR = new BufferedReader(ISR);
public static String BOX[][] = new String[3][3]; //Integer Arry for tictactoe box
public static String PName; //Moving Player's Name
public static String P1Name; //Player 1 Name
public static String P2Name; //Player 2 Name
public static String InputPLY; //X or O
public static String InputStr; //Player's Input
public static boolean BreakLoop; //Set this to true in PlayGame() to exit
public static void main(String args[]) throws IOException
InputPLY = "O";
BreakLoop = false;
ClearBOXCache();
PrintCredits();
System.out.println("");
System.out.println("PLEASE ENTER PLAYER 1 NAME");
P1Name = BFR.readLine();
System.out.println("PLEASE ENTER PLAYER 2 NAME");
P2Name = BFR.readLine();
System.out.println("");
System.out.print("\nWelcome ");
System.out.print(P1Name);
System.out.print(" and ");
System.out.println(P2Name);
System.out.println("");
System.out.println(P1Name + " = X");
System.out.println(P2Name + " = O");
PlayGame();
PrintCredits();
BFR.readLine();
System.exit(0);
public static void DrawGrid()
This function is to draw the tictactoe grid.
System.out.println("");
System.out.println("\t/-----------------------------\\");
System.out.println("\t|-------- TIC TAC TOE --------|");
System.out.println("\t|-----------------------------|");
System.out.println("\t| | | |");
System.out.println("\t| " + BOX[0][0] + " | " + BOX[0][1] + " | " + BOX[0][2] + " |");
System.out.println("\t| | | |");
System.out.println("\t|-----------------------------|");
System.out.println("\t| | | |");
System.out.println("\t| " + BOX[1][0] + " | " + BOX[1][1] + " | " + BOX[1][2] + " |");
System.out.println("\t| | | |");
System.out.println("\t|-----------------------------|");
System.out.println("\t| | | |");
System.out.println("\t| " + BOX[2][0] + " | " + BOX[2][1] + " | " + BOX[2][2] + " |");
System.out.println("\t| | | |");
System.out.println("\t\\-----------------------------/");
public static void PrintCredits()
This function is to print credits. Intended for startup and ending
System.out.println("");
System.out.println("");
System.out.println("\t-------------------------------");
System.out.println("\t--------- TIC TAC TOE ---------");
System.out.println("\t-------------------------------");
System.out.println("");
System.out.println("\t-------------------------------");
System.out.println("\t---- MADE BY WILLIAM CHAN! ----");
System.out.println("\t-------------------------------");
public static void ClearBOXCache()
This function is to clear the BOX's cache.
It is intended for restarting a game
BOX[0][0] = " ";
BOX[0][1] = " ";
BOX[0][2] = " ";
BOX[1][0] = " ";
BOX[1][1] = " ";
BOX[1][2] = " ";
BOX[2][0] = " ";
BOX[2][1] = " ";
BOX[2][2] = " ";
public static void CheckWin(String PLYW) throws IOException
This function is to check if a player wins
for (int X = 0; X < 3; X++)
if (BOX[X][0].equals(PLYW) && BOX[X][1].equals(PLYW) && BOX[X][2].equals(PLYW))
PrintWin(PLYW);
for (int Y = 0; Y < 3; Y++)
if (BOX[0][Y].equals(PLYW) && BOX[1][Y].equals(PLYW) && BOX[2][Y].equals(PLYW))
PrintWin(PLYW);
if (BOX[0][0].equals(PLYW) && BOX[1][1].equals(PLYW) && BOX[2][2].equals(PLYW))
PrintWin(PLYW);
else if (BOX[0][2].equals(PLYW) && BOX[1][1].equals(PLYW) && BOX[2][0].equals(PLYW))
PrintWin(PLYW);
else if (!BOX[0][0].equals(" ") && !BOX[0][1].equals(" ") && !BOX[0][2].equals(" ") && !BOX[1][0].equals(" ") && !BOX[1][1].equals(" ") && !BOX[1][2].equals(" ") && !BOX[2][0].equals(" ") && !BOX[2][1].equals(" ") && !BOX[2][2].equals(" "))
ClearBOXCache();
System.out.println("Tie Game!");
BFR.readLine();
System.out.println("Game has restarted");
public static void PrintWin(String PrintWinner) throws IOException
This function is to print which player won
if (PrintWinner.equals("X"))
System.out.println(P1Name + " wins!");
System.out.println(P2Name + " loses!");
else if (PrintWinner.equals("O"))
System.out.println(P2Name + " wins!");
System.out.println(P1Name + " loses!");
BFR.readLine();
ClearBOXCache();
System.out.println("Game has restarted!");
public static void PrintInstruction(String PLYINSTR)
This function is to give instruction to the player
if (PLYINSTR.equals("X"))
PName = (P1Name);
else if (PLYINSTR.equals("O"))
PName = (P2Name);
System.out.println("");
System.out.println(PName + ":");
System.out.println("PLEASE MAKE YOUR MOVE");
System.out.println("");
System.out.println("TL = TOP LEFT BOX, TM = TOP MIDDLE BOX, TR = TOP RIGHT BOX");
System.out.println("ML = MIDDLE LEFT BOX, MM = MIDDLE MIDDLE BOX, MR = MIDDLE RIGHT BOX");
System.out.println("BL = BOTTOM LEFT BOX, BM = BOTTOM MIDDLE BOX, BR = BOTTOM RIGHT BOX");
public static void PlayGame() throws IOException
This function is the main game function.
It calls other game functions.
Define Variables
while(true)
if (InputPLY.equals("O"))
InputPLY = "X";
else if (InputPLY.equals("X"))
InputPLY = "O";
while(true)
PrintInstruction(InputPLY);
InputStr = BFR.readLine(); //Player's move
Check player's move
if (InputStr.equals("TL"))
if (BOX[0][0].equals(" "))
BOX[0][0] = InputPLY;
break;
else if (InputStr.equals("TM"))
if (BOX[0][1].equals(" "))
BOX[0][1] = InputPLY;
break;
else if (InputStr.equals("TR"))
if (BOX[0][2].equals(" "))
BOX[0][2] = InputPLY;
break;
else if (InputStr.equals("ML"))
if (BOX[1][0].equals(" "))
BOX[1][0] = InputPLY;
break;
else if (InputStr.equals("MM"))
if (BOX[1][1].equals(" "))
BOX[1][1] = InputPLY;
break;
else if (InputStr.equals("MR"))
if (BOX[1][2].equals(" "))
BOX[1][2] = InputPLY;
break;
else if (InputStr.equals("BL"))
if (BOX[2][0].equals(" "))
BOX[2][0] = InputPLY;
break;
else if (InputStr.equals("BM"))
if (BOX[2][1].equals(" "))
BOX[2][1] = InputPLY;
break;
else if (InputStr.equals("BR"))
if (BOX[2][2].equals(" "))
BOX[2][2] = InputPLY;
break;
else if (InputStr.equals("RESTART"))
ClearBOXCache();
System.out.println("");
System.out.println("GAME RESTARTED!");
System.out.println("");
break;
else if (InputStr.equals("QUIT"))
BreakLoop = true;
break;
if (BreakLoop == true)
break;
DrawGrid();
CheckWin(InputPLY);
} -
== Issue
==
I have a problem with my bookmarks, cookies, history or settings
== Description
==
Hi,
I developed a web application using HTML5-Offline Application Cache mechanism. Inspite of deleting the cache as mentioned in the above steps, Firefox still maintains a copy of the page in it's cache. Also, a serious bug is, even though we delete all temp files used by Firefox, and open the previously cached page, it displays it correctly, but upon refreshing/reloading it again shows the previous version of the page maintained in the cache.
== Troubleshooting information
==
HTML5: Application Caching
.style1 {
font-family: Consolas;
font-size: small;
text-align: left;
margin-left: 80px;
function onCacheChecking(e)
printOutput("CHECKINGContents of the manifest are being checked.", 0);
function onCacheCached(e) {
printOutput("CACHEDAll the resources mentioned in the manifest have been downloaded", 0);
function onCacheNoUpdate(e)
printOutput("NOUPDATEManifest file has not been changed. No updates took place.", 0);
function onCacheUpdateReady(e)
printOutput("UPDATEREADYChanges have been made to manifest file, and were downloaded.", 0);
function onCacheError(e) {
printOutput("ERRORAn error occured while trying to process manifest file.", 0);
function onCacheObselete(e)
printOutput("OBSOLETEEither the manifest file has been deleted or renamed at the source", 0);
function onCacheDownloading(e) {
printOutput("DOWNLOADINGDownloading resources into local cache.", 0);
function onCacheProgress(e) {
printOutput("PROGRESSDownload in process.", 0);
function printOutput(statusMessages, howToTell)
* Outputs information about an event with its description
* @param statusMessages The message string to be displayed that describes the event
* @param howToTell Specifies if the output is to be written onto document(0) or alert(1) or both(2)
try {
if (howToTell == 2) {
document.getElementById("stat").innerHTML += statusMessages;
window.alert(statusMessages);
else if (howToTell == 0) {
document.getElementById("stat").innerHTML += statusMessages;
else if (howToTell == 1) {
window.alert(statusMessages);
catch (IOExceptionOutput) {
window.alert(IOExceptionOutput);
function initiateCaching()
var ONLY_DOC = 0;
var ONLY_ALERT = 1;
var BOTH_DOC_ALERT = 2;
try
if (window.applicationCache)
var appcache = window.applicationCache;
printOutput("BROWSER COMPATIBILITYSUCCESS!! AppCache works on this browser.", 0);
appcache.addEventListener('checking', onCacheChecking, false);
appcache.addEventListener('cached', onCacheCached, false);
appcache.addEventListener('noupdate', onCacheNoUpdate, false);
appcache.addEventListener('downloading', onCacheDownloading, false);
appcache.addEventListener('progress', onCacheProgress, false);
appcache.addEventListener('updateready', onCacheUpdateReady, false);
appcache.addEventListener('error', onCacheError, false);
appcache.addEventListener('obsolete', onCacheObselete, false);
else
document.getElementById("stat").innerHTML = "Failure! I cant work.";
catch (UnknownError)
window.alert('Internet Explorer does not support Application Caching yet.\nPlease run me on Safari or Firefox browsers\n\n');
stat.innerHTML = "Failure! I cant work.";
== Firefox version
==
3.6.3
== Operating system
==
Windows XP
== User Agent
==
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729; .NET4.0E)
== Plugins installed
==
*-Shockwave Flash 10.0 r45
*Default Plug-in
*Adobe PDF Plug-In For Firefox and Netscape "9.3.2"
*NPRuntime Script Plug-in Library for Java(TM) Deploy
*The QuickTime Plugin allows you to view a wide variety of multimedia content in Web pages. For more information, visit the QuickTime Web site.
*Google Update
*4.0.50524.0
*Office Live Update v1.4
*NPWLPG
*Windows Presentation Foundation (WPF) plug-in for Mozilla browsers
*Next Generation Java Plug-in 1.6.0_20 for Mozilla browsers
*Npdsplay dll
*DRM Store Netscape Plugin
*DRM Netscape Network Object
Thanks & Regards,
Kandarpa Chandrasekhar Omkar
Software Engineer
Wipro Technologies
Bangalore.
[email protected]
[email protected]We have had this issue many, many times before including on the latest 3.6 rev. It appears that when the applicationCache has an update triggered by a new manifest file, the browser may still use only its local network cache to check for updates to the files in the manifest, instead of forcing an HTTP request and revalidating both the browser cache and the applicationCache versions of the cached file (seems there is more than one). I have to assume this is a browser bug, as one should not have to frig with server Cache-Control headers and such to get this to work as expected (and even then it still doesn't sometimes).
The only thing that seems to fix the problem is setting network.http.use-cache to false (default is true) in about:config . This helps my case because we only ever run offline (applicationCache driven) apps in the affected browser (our managed mobile apps platform), but it will otherwise slow down your browser experience considerably. -
How to disable Query for single controls in a Form Applet?
Hi All,
this should be so simple, but seems like I don't get it at the moment.
I have a Form Applet in HI Mode and want to disable the possibility to Query on certain fields. these are Calculated fields and querying will most likely crash the application due to heavy performance impact. They should be for displaying only. How to do that? I have searched for Applet Control User Properties and such stuff but couldn't find one.
ThxHi Siebelade thanks for your reply,
in the meantime I managed to do it using a BusComp Field User Property called "DisableSearch". If you set this to "TRUE" for the desired fields, the user will receive an error message when trying to query for these fields.
Benny -
MRP - want to create query for Exception message number (MD04)
Dear all MM kings
consider i had one purchase against xxxx material , if i go to MD04 In Exception message number column i got massage number 20 Cancel process, now i want to know how many purchase order exist in system having the Exception message number 20
i want to define query for Exception message number 20
is there any way to do the sameHi,
There are links on the first thread on this MM board that describe how to produce a query.
But if you have not done this before and have no ABAP experience, you might find it a bit tricky.
You need someone to find the tabkle that stores the MRP lists and see if this contains the exception message, first.
the structure I gave you is probably built dynamically by the program and so may not be available for a query.
One simpler option is to use the "Collective access" tab in MD04. here you can enter an MRP controller etc. and get a list of materials. You can then find out which of the 8 numbered columns contains the exception message 20 and then sort the list in this sequence (the exception messages are linked to one of the columns and this can be different in every implementation and so I can't tell you which one it is)
This will not just get the "20" messages unless they have been configured to use a separate column, but at least it is avail;able now without config and may be enough for your purposes.
Steve B -
Question/issue regarding querying for uncommited objects in Toplink...
Hi, was hoping to get some insight into this problem we are encoutering
We have this scenario were we are creating a folder hierarchy (using Toplink)
1. a parent folder is created
2. child elements are created (in the same transaction as step 1),
3. we need to lookup the parent folder and assign it as the parent
of these child elements
4. end the transaction and commit all data
In our system we control access to objects by appending a filter to the selection criteria, so we end up with SQL like this example
(The t2 stuff is the authorization lookup part of the query.) ;
SELECT t0.ID, t0.CLASS_NAME, t0.DESCRIPTION, t0.EDITABLE,
t0.DATE_MODIFIED, t0.DATE_CREATED,
t0.MODIFIED_BY, t0.ACL_ID, t0.NAME, t0.CREATED_BY,
t0.TYPE_ID, t0.WKSP_ID, t1.ID, t1.LINK_SRC_PATH,
t1.ABSOLUTE_PATH, t1.MIME_TYPE, t1.FSIZE,
t1.CONTENT_PATH, t1.PARENT_ID
FROM XDOOBJECT t0, ALL_OBJECT_PRIVILEGES t2,
ARCHIVEOBJECT t1
WHERE ((((t1.ABSOLUTE_PATH = '/favorites/twatson2')
AND ((t1.ID = t2.xdoobject_id)
AND ((t2.user_id = 'twatson2')
AND (bitand(t2.privilege, 2) = 2))))
AND (t1.ID = t0.ID))
AND (t0.CLASS_NAME = 'oracle.xdo.server.repository.model.Archivable'))
When creating new objects we also create the authorization lookup record (which is inserted into a different table.) I can see all the objects are registered in the UOW identity map.
Basically, the issue is that this scenario all occurs in a single transaction and when querying for the newly created parent folder, if the authorization filter is appended to the query, the parent is not found. If I remove the authorization filter then the parent is found correctly. Or if I break this up into separate transactions and commit after each insert, then the parent is found correctly.
I use the conformResultsInUnitOfWork attribute on the queries.
This is related to an earlier thread I have in this discussion forum;
Nested UnitOfWork and reading newly created objects...
Thanks for any help you can provide,
-TimHi Doug, we add the authorization filter directly in the application code as the query is getting set up.
Here are some code examples; 1) the first is the code to create new object in the system, followed by 2) the code to create a new authorization lookup record (which also uses the first code to do the actual Toplink insert), then 3) an example of a read query where the authorization filter is appended to the Expression and after that 4) several helper methods.
I hope this is of some use as it's difficult to show the complete flow in a simple example.
1)
// create new object example
public Object DataAccess.createObject(....
Object result = null;
boolean inTx = true;
UnitOfWork uow = null;
try
SessionContext sc = mScm.getCurrentSessionContext();
uow = TLTransactionManager.getActiveTransaction(sc.getUserId());
if (uow == null)
Session session = TLSessionFactory.getSession();
uow = session.acquireUnitOfWork();
inTx = false;
Object oclone = (Object) uow.registerObject(object);
uow.assignSequenceNumbers();
if (oclone instanceof BaseObject)
BaseObject boclone = (BaseObject)oclone;
Date now = new Date();
boclone.setCreated(now);
boclone.setModified(now);
boclone.setModifiedBy(sc.getUserId());
boclone.setCreatedBy(sc.getUserId());
uow.printRegisteredObjects();
uow.validateObjectSpace();
if (inTx == false) uow.commit();
//just temp, see above
if (true == authorizer.requiresCheck(oclone))
authorizer.grantPrivilege(oclone);
result = oclone;
2)
// Authorizer.grantPrivilege method
public void grantPrivilege(Object object) throws DataAccessException
if (requiresCheck(object) == false)
throw new DataAccessException(
"Object does not implement Securable interface.");
Securable so = (Securable)object;
ModulePrivilege[] privs = so.getDefinedPrivileges();
BigInteger pmask = new BigInteger("0");
for (int i = 0; i < privs.length; i++)
BigInteger pv = PrivilegeManagerFactory.getPrivilegeValue(privs);
pmask = pmask.add(pv);
SessionContext sc = mScm.getCurrentSessionContext();
// the authorization lookup record
ObjectUserPrivilege oup = new ObjectUserPrivilege();
oup.setAclId(so.getAclId());
oup.setPrivileges(pmask);
oup.setUserId(sc.getUserId());
oup.setXdoObjectId(so.getId());
try
// this recurses back to the code snippet from above
mDataAccess.createObject(oup, this);
catch (DataAccessException dae) {
Object[] args = {dae.getClass().toString(), dae.getMessage()};
logger.severe(MessageFormat.format(EXCEPTION_MESSAGE, args));
throw new DataAccessException("Failed to grant object privilege.", dae);
3)
// example Query code
Object object = null;
ExpressionBuilder eb = new ExpressionBuilder();
Expression exp = eb.get(queryKeys[0]).equal(keyValues[0]);
for (int i = 1; i < queryKeys.length; i++)
exp = exp.and(eb.get(queryKeys[i]).equal(keyValues[i]));
// check if need to add authorization filter
if (authorizer.requiresCheck(domainClass) == true)
// this is where the authorization filter is appended to query
exp = exp.and(appendReadFilter());
ReadObjectQuery query = new ReadObjectQuery(domainClass, exp);
SessionContext sc = mScm.getCurrentSessionContext();
if (TLTransactionManager.isInTransaction(sc.getUserId()))
// part of a larger transaction scenario
query.conformResultsInUnitOfWork();
else
// not part of a transaction
query.refreshIdentityMapResult();
query.cascadePrivateParts();
Session session = getSession();
object = session.executeQuery(query);
4)
// builds the authorzation filter
private Expression appendReadFilter()
ExpressionBuilder eb = new ExpressionBuilder();
Expression exp1 = eb.getTable("ALL_OBJECT_PRIVILEGES").getField("xdoobject_id");
Expression exp2 = eb.getTable("ALL_OBJECT_PRIVILEGES").getField("user_id");
Expression exp3 = eb.getTable("ALL_OBJECT_PRIVILEGES").getField("privilege");
Vector args = new Vector();
args.add(READ_PRIVILEGE_VALUE);
Expression exp4 =
exp3.getFunctionWithArguments("bitand",args).equal(READ_PRIVILEGE_VALUE);
SessionContext sc = mScm.getCurrentSessionContext();
return eb.get("ID").equal(exp1).and(exp2.equal(sc.getUserId()).and(exp4));
// helper to get Toplink Session
private Session getSession() throws DataAccessException
SessionContext sc = mScm.getCurrentSessionContext();
Session session = TLTransactionManager.getActiveTransaction(sc.getUserId());
if (session == null)
session = TLSessionFactory.getSession();
return session;
// method of TLTransactionManager, provides easy access to TLSession
// which handles Toplink Sessions and is a singleton
public static UnitOfWork getActiveTransaction(String userId)
throws DataAccessException
TLSession tls = TLSession.getInstance();
return tls.getTransaction(userId);
// the TLSession method, returns the active transaction (UOW)
// or null if none
public UnitOfWork getTransaction(String uid) {
UnitOfWork uow = null;
UowWrapper uw = (UowWrapper)mTransactions.get(uid);
if (uw != null) {
uow = uw.getUow();
return uow;
Thanks!
-Tim -
Hello all
i have application that basically loading very big object that contains sub objects and
doing dynamic lookup by name of the object and the method i like to invoke and then invoke it
everything done ofcorce with reflection .
now this application will be called handeret times per minute .
some questions .
first of all do i need caching mechanism? for saving the subobject that had bean called in some kind of vector in memory for example or if i use reflection , i dont need caching mechanism .
second question is do i need threads here ? if i do , how i buid some kind of locks to this threads ?
thanksI'd use the Flyweight pattern here. It sounds like you're retrieving a lot of data that's related to other data through some kind of index. A Data Transfer Object (DTO) is a Flyweight class that could hold all of the information required to retrieve the "sub-objects" as you call them, but not until they're needed. It's a little more detailed to make sure that the objects are available when you need them, but obviously the network bandwidth/latency issues are causing a severe performance impact. I'm using EJBs in this example, but it will apply to anything where large amounts of related data are used in the application.
// EJB Entity bean
public abstract class EJBEntity extends EJBObject {
public abstract Integer getId();
public abstract String getStringData();
public abstract Collection getChildObjects(); // "heavyweight" data
// Data Transfer Object
public class EJBEntityDTO {
private int id;
private String stringData;
private int[] childIds;
// some application code
id = ...
EJBEntityDTO dto = transferEJBData(id);
EJBEntityDTO childDTO = transferEJBData(dto.childIds[0]);
...It's definitely more work to do it this way, but it's the only way to avoid fetching the entire collection when you only need one child object.
Brian -
Querying data across different cache-clusters
Hi,
Say there are multiple clusters each containing DIFFERENT sets of cached data. I would like to know if someone knows how an application from within one cluster can read/query the data from the DIFFERENT clusters "DIRECTLY". Would we need to code in Coherence extend protocol API (if there is one such) in this case ? Does anyone know or done this ?Hi,
Yes you would need to use Extend to be able to see one cluster from another. It is pretty straight forward, you just configure the cache mappings in the same way you would for any remote caches.
JK -
Hi all,
I have a table name as angdata77 having attributes like asigno..
i want to retrieve data from angdata77 by using both group by & order by clauses.. for total count..
am using the query as
select asigno,count(*) from angdata77 group by asigno order by asigno;
Is there any other query for retrieving the data from angdata77
Thanks in Advance,
Venkatesh J.885756 wrote:
Ya it's good.. Performance also good while retrieving data...
I want to know other Possibilities also sir...There will be no better alternative for this, because this is the most simple and straight forward way to get the output you are looking for..
Go ahead without any confusion... :)
Maybe you are looking for
-
Rick and other experts, this should be an easy one but damn, I can't get it to work. Situation: 6 second Captivate slide (an imported, text only from PPT). A back and next button control navigation appearing at .5 and pausing at 5.5 No other objects
-
Unhappy about this iPod Touch Issue...
So here's the story. My girlfriend bought me for Christmas last year 2010 an iPod Touch (refurbished). 2 months go by of being happy and all, then suddenly the audio jack goes bad. If you BEND the bottom piece of the wire where it connects into the i
-
Adobe Illustrator CC Typical System Requirement
Hello everyone, I'm looking for a new computer for better working experience. I have difficulty to run AI CC on my current computer. It keep not responding all the time which cause me unable to do my work smoothly. It can't even save a file with size
-
ChaRM configuration issue for 2 Clients...
Dear Friends, I have configured ChaRM in Solution Manager 7.0 EhP1 system. It is working fine without any issues. But now I came across a new requirement and finding trouble in configuring the required scenario. Currently there is only single client
-
oracle apps using forms is it possible refresh,clear form or exit from one form to another form using button, becoz i am using 2 forms called Form A and Form B. Form A is main form and calling Form B by calling function fnd_function.execute(FUNCTION_