Skip to content

Commit 4c35706

Browse files
committed
adjusting the rendering issue
1 parent 0fd7c1e commit 4c35706

File tree

2 files changed

+11
-15
lines changed

2 files changed

+11
-15
lines changed

components/StyledMarkdown.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -688,6 +688,10 @@ export function TableOfContentMarkdown({
688688
'Bigquote',
689689
'Regularquote',
690690
'specialBox',
691+
'Infobox',
692+
'Danger',
693+
'Warning',
694+
'Tip',
691695
),
692696
},
693697
}}

pages/blog/posts/oracle-case-study.md

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -594,14 +594,14 @@ With all this in place, our React frontend can now create the following form:
594594

595595
![React frontend with input form generated from an annotated Oracle Database 23ai JSON schema.](/img/posts/2025/oracle-case-study/form.webp)
596596

597-
<blockquote>
598-
Interestingly, whenever you change the schema annotation in the database, it is immediately reflected inside your browser once you refreshed it. You can try with:
597+
<Infobox> Interestingly, whenever you change the schema annotation in the database, it is immediately reflected inside your browser once you refreshed it. You can try with:
599598
```sql
600599
ALTER TABLE products MODIFY name ANNOTATIONS (
601600
REPLACE "title" 'Product name'
602601
);
603602
```
604-
</blockquote>
603+
</Infobox>
604+
605605

606606
#### JSON Relational Duality View
607607

@@ -721,9 +721,7 @@ Running the 2 queries above respectively returns the data in JSON format:
721721
|Wooden spatula|4.99|42|
722722
|Other nice product|5|10|
723723

724-
<blockquote>
725-
The `_metadata` object will contain additional information such as an `etag` that can be used for [optimistic concurrency control](https://docs.oracle.com/en/database/oracle/oracle-database/23/jsnvu/using-optimistic-concurrency-control-duality-views.html).
726-
</blockquote>
724+
<Infobox>The `_metadata` object will contain additional information such as an `etag` that can be used for [optimistic concurrency control](https://docs.oracle.com/en/database/oracle/oracle-database/23/jsnvu/using-optimistic-concurrency-control-duality-views.html).</Infobox>
727725

728726
#### POST method
729727

@@ -757,9 +755,7 @@ With 23ai, a check constraint can now be marked as [`PRECHECK`](https://docs.ora
757755

758756
Once a check constraint is marked as `PRECHECK`, you have the choice whether or not to disable the check constraint on the table as the retrieved JSON schema with `dbms_json_schema.describe()` will contain the check constraints as well.
759757

760-
<blockquote>
761-
We do **NOT** advise to disable check constraints as it would allow inserting bad data into the relational tables directly. The remark about `PRECHECK` constraints is here to provide as much information as possible.
762-
</blockquote>
758+
<Danger>We do **NOT** advise to disable check constraints as it would allow inserting bad data into the relational tables directly. The remark about `PRECHECK` constraints is here to provide as much information as possible.</Danger>
763759

764760
```sql
765761
-- Mark check constraints as PRECHECK
@@ -1018,9 +1014,7 @@ select p.content.publishedDate.timestamp() + interval '5' day
10181014
from posts p;
10191015
```
10201016

1021-
<blockquote>
1022-
We use the item method `timestamp()` in the last statement above because otherwise the SQL dot notation would return a SQL `JSON` (by default in 23ai) on which we cannot apply an interval operation. However, because the value is already stored as `TIMESTAMP` inside the binary JSON format, there will be *no conversion* from `JSON` to `timestamp` here.
1023-
</blockquote>
1017+
<Infobox>We use the item method `timestamp()` in the last statement above because otherwise the SQL dot notation would return a SQL `JSON` (by default in 23ai) on which we cannot apply an interval operation. However, because the value is already stored as `TIMESTAMP` inside the binary JSON format, there will be *no conversion* from `JSON` to `timestamp` here.</Infobox>
10241018

10251019
Last but not least, by enabling type casting, native SQL data type checks are also performed ensuring 100% fidelity between stored binary values in the encoded JSON and SQL data types. As a result, we can store not just the standard JSON data types but also the SQL data types inside the encoded binary JSON such as `NUMBER`, `DATE`, `TIMESTAMP`, `TIMESTAMP WITH TIME ZONE`, `INTERVAL`, `RAW`, `VECTOR`, etc.
10261020

@@ -1105,9 +1099,7 @@ Results:
11051099
| {<br/>&nbsp;&nbsp;"firstName": "Bob",<br/>&nbsp;&nbsp;"address": "Paris",<br/>&nbsp;&nbsp;"vat": false<br/>} |Paris|Bob|false|null|
11061100
| {<br/>&nbsp;&nbsp;"firstName": "Bob",<br/>&nbsp;&nbsp;"address": "Paris",<br/>&nbsp;&nbsp;"vat": false,<br/>&nbsp;&nbsp;"tableEvolve": true<br/>} |Paris|Bob|false|true|
11071101

1108-
<blockquote>
1109-
The trigger executes asynchronously, hence not delaying DML response times, however, because of it being asynchronous, it may take a second before you will see the new virtual column.
1110-
</blockquote>
1102+
<Infobox>The trigger executes asynchronously, hence not delaying DML response times, however, because of it being asynchronous, it may take a second before you will see the new virtual column.</Infobox>
11111103

11121104
## Conclusion
11131105

0 commit comments

Comments
 (0)