Jonathan Lewis's Avatar

Jonathan Lewis

@jloracle.bsky.social

Nearly-retired Oracle performance specialist. 50 years using computers, 40 years self-employed, 35 years as a freelance Oracle specialist.

246 Followers  |  47 Following  |  459 Posts  |  Joined: 19.11.2024  |  1.9758

Latest posts by jloracle.bsky.social on Bluesky

Pulled the last of the leeks from the "big leek" bed ready for lunch tomorrow, then picked a small handful of kalettes - the first I've harvested - to eat today. Much nicer than both kale and brussel sprouts, so going to grow more this season. Purple sprouting broccoli also just ready for picking.

07.02.2026 15:16 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Today's tasks, come rain or sun: feed and mulch the fruit trees, weed, feed and mulch the killer gooseberry bush after putting on the gauntlets and giving it a ferocious pruning.

06.02.2026 08:53 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Local weather forecast said it was going to rain today, starting at 3:00 am, non-stop until 3:00pm TOMORROW - so I worked at home, raking, shredding and bagging a huge pile of decomposing oak leaves, repotting plants ... no rain

Got ready to head out to the allotment at 3:00 pm: it started to rain.

05.02.2026 22:01 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Planet Hunters TESS - NASA Science Join the Planet Hunters Coffee Chat video series! Project leads cover relevant topics in a friendly, fun format. Want to see what you’ve missed? check out the

Went to an excellent @greshamcollege.bsky.social lecture by Prof. Chris Lintott on Exoplanets last night.

Informative and entertaining; including an introduction to the Planet Hunters - allowing to find potential exoplanets by analysing data from TESS.

science.nasa.gov/citizen-scie...

05.02.2026 20:59 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

It's not quite what you would write manually

The QUALIFY clauses get wrapped as a Boolean expression. So if you have

QUALIFY p1 AND p2 AND p3

it becomes

SELECT * FROM (
SELECT ( p1 AND p2 AND p3 ) qexpr ...
) WHERE qexpr IS TRUE

So yes, a manual rewrite may give better optimizations

05.02.2026 14:01 β€” πŸ‘ 1    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0
Preview
Penguin and Club bars can no longer be described as chocolate The rising cost of cocoa has led to the manufacturers changing their recipe.

Worse: the description on my packet uses the phrase "with dark chocolate flavour coating"

Alas, Penguin and Club bars now have to say the same according this news report of Oct 2025
www.bbc.co.uk/news/article...

"If you like a lot of chocolate (flavoured coating) on your biscuit join our Club"

05.02.2026 12:27 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

I agree - but there are many varieties of Timtam and some may be nicer than Penguins.

04.02.2026 17:36 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

I've finally taken advantage of one of the most significant benefits brought to us by Brexit.
I've bought a packer of TimTams from the local supermarket.

04.02.2026 14:59 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0
Preview
QUALIFY: The WHERE Condition for Analytic Functions Filtering analytic functions was not straight-forward in Oracle and most other databases. Oracle 26ai now supports the QUALIFY clause in SQL. It works like a WHERE condition, but can be used for an…

The QUALIFY clause enables you to filter rows using window functions

e.g. get the top ranked rows with

SELECT ... FROM ...
QUALIFY RANK () OVER ( ORDER BY ... ) = ...

@danischnider.bsky.social looks at how it works in Oracle AI Database 26ai

04.02.2026 12:01 β€” πŸ‘ 0    πŸ” 2    πŸ’¬ 1    πŸ“Œ 0

Who was it who coined the term "syntactic icing"?

So Oracle transforms the QUALIFY query into the form you would otherwise have written.

Nothing wrong with the general strategy, it avoids the risk of programmer error, but it has "lost" optimisations occasionally where a manual rewrite doesn't.

04.02.2026 14:25 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
From magic to malware: How OpenClaw's agent skills become an attack surface | 1Password The same capabilities that make OpenClaw a groundbreaking tool also make it an urgent security risk. This blog contains confirmed examples of agent skills being used as malware vectors, and advice on ...

1Password not mincing words here:

"If you are experimenting with OpenClaw, do not do it on a company device. Full stop."

"If you have already run OpenClaw on a work device, treat it as a potential incident and engage your security team immediately."

1password.com/blog/from-ma...

03.02.2026 13:11 β€” πŸ‘ 317    πŸ” 185    πŸ’¬ 6    πŸ“Œ 36

It often seems far more appropriate than the boring old "friend". (It also means I don't have to remember the order of the i and the e).

Is the vector thing a bitmap strategy?

03.02.2026 14:20 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

The next "big" question on the topic is whether the size of a set (for a list of set expressions) is (will be) going up from 1,000 to 4,000 to match the new limit on the number of columns in a table. (Asking for a fiend)
More seriously - how large was your session's PGA allocation with the 65,535?

03.02.2026 09:59 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Congrats to the winners in the Oracle Dev Gym championships!

1st Andrey Zaytsev
2nd mentzel.iudith
3rd whab@tele2.at

πŸ†πŸΎ

πŸ‘ to all competitors; we hope you enjoyed the challenge

Thanks to @kibeha.dk and @anthony-harper.bsky.social for writing & reviewing quizzes

blogs.oracle.com/sql/announci...

02.02.2026 16:19 β€” πŸ‘ 5    πŸ” 2    πŸ’¬ 0    πŸ“Œ 0

Congratulations, and thanks for inviting me to speak at all those Trivadis Performance Days it was always a great pleasure to be part of that event.

All the best for pre-retirement, and for retirement when it finally comes.

31.01.2026 13:32 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Imagine printing it, on 80gm paper the stack would be about 1,000 feet tall. Turning pages at the rate of one per second (assuming there are LOTs of photos - think modern tech and high frame rates) you'd be at it for 5 weeks.

But facial recognition s/w might scan 3M photos rather faster than that.

31.01.2026 09:20 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

"Clinic", of course, covers a multitude of sins (or scale of operation). In her case there was always a lot of waiting because she went to 3 different rooms for tests first before going to the 4th to get a needle stuck in her eye. And every room could reesult in another 5 to 10 minutes of waiting.

30.01.2026 11:31 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

My mother used to make the same comment (without the vulgar language) about 10 years ago when I took her the the eye clinic every 6 months for checks and an injection for macular degeneration. Even so, every 3 or 4 visits she would see the consultant whose clinic it was.

30.01.2026 11:29 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0

OTOH the underlying problem the NHS has in the UK is the number of people who don’t show up, or show up late and still expect to be seen.
Sometimes overbooking is the only way to avoid wasting a scarce resource.

30.01.2026 07:46 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Are you allowed to pause to breathe, or is this like a yard of ale competition?

29.01.2026 07:42 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

For those unfamiliar, this arrived in 26ai

28.01.2026 14:42 β€” πŸ‘ 10    πŸ” 2    πŸ’¬ 1    πŸ“Œ 0
Preview
Case Study This note isn’t a β€œreal” case study, i.e. it’s not going to show you details of the data, indexes, plans etc. from a production system, but it is modelling one aspect of an …

It's been a while but I've just written a new blog note. Still subject to checks of typo and grammar, but that will have to wait a couple of days.
Effects of "column is null" on an indexed column, multi-column inlists and index iterators, and an upgrade.
jonathanlewis.wordpress.com/2026/01/27/c...

27.01.2026 16:06 β€” πŸ‘ 3    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Preview
Case Study This note isn’t a β€œreal” case study, i.e. it’s not going to show you details of the data, indexes, plans etc. from a production system, but it is modelling one aspect of an …

It's been a while but I've just written a new blog note. Still subject to checks of typo and grammar, but that will have to wait a couple of days.
Effects of "column is null" on an indexed column, multi-column inlists and index iterators, and an upgrade.
jonathanlewis.wordpress.com/2026/01/27/c...

27.01.2026 16:06 β€” πŸ‘ 3    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

Oh dear, I can feel a new blog note about indexes, inlists, and "is null" predicates on its way.

Still, it's going to rain (here) all day tomorrow so I won't be going out to dig.

26.01.2026 14:59 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Of course there's no such thing as a "descending index" (or a "function-based index" there are only indexes with descending or function-based column expressions. ;)

I don't think I've checked if descending indexes behave like function-based indexes during optimisation of distributed queries.

26.01.2026 14:57 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

There are plenty of things in the manuals which are details that people often forget because they hardly ever come across the need for them. I don't think that bit of the manual has changed since 11g, but I bet I could find things in the 8i manual that are (still) true that "nobody knows".

26.01.2026 14:52 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Correction: "descending" NULL (i.e. sys_op_descend(null)) is a special case, stored as 0x00 (still appearing in the index, of course) rather than 0xFF.

23.01.2026 15:17 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
sys_op_descend() When you specify that a column used in an index should be a β€œdescending” column Oracle uses the internal, undocumented, sys_op_descend() function to derive a value to store for that col…

Special because when you check user_ind_expressions you see just the column name, no function

Dupkey results because a varchar2 column is stored in the index as a one's-complement (**) with 0xff appended: so NULL becomes "0xff".

(**) But see also: jonathanlewis.wordpress.com/2023/11/27/s...

23.01.2026 10:36 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0

That's because I'm an idiot - I meant "descending", not "reverse". (Not that a single column index should ever be created with the descending option.)

It's a special case of an "FBI" - you can't have two nulls or the index creation / 2nd update to null results in "ORA-0001: duplicate key".

23.01.2026 10:26 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Here's one to add to your note - try creating a reverse key unique index on a column where at least two rows have nulls in the column and all other rows have unique values.

22.01.2026 16:12 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0

@jloracle is following 20 prominent accounts