All Products
Search
Document Center

ApsaraDB RDS:Ekstensi fungsi Bitmap (varbitx)

Last Updated:Mar 29, 2026

Plugin varbitx memperluas plugin varbit di ApsaraDB RDS for PostgreSQL dengan operasi string bit tambahan. Plugin varbit standar dari edisi komunitas PostgreSQL hanya mendukung fungsi tipe BIT dasar. varbitx menambahkan fungsi untuk slicing, pengaturan massal, pencarian posisi, dan penghitungan—mencakup kasus penggunaan seperti rekomendasi profil pengguna real-time, iklan berbasis kontrol akses, dan sistem tiket.

Prasyarat

Sebelum memulai, pastikan instans RDS Anda menjalankan salah satu versi PostgreSQL berikut:

  • PostgreSQL 11

  • PostgreSQL 10

Instalasi dan penghapusan plugin

Instal plugin varbitx:

CREATE EXTENSION varbitx;

Hapus plugin:

DROP EXTENSION varbitx;

Fungsi yang didukung

Panggil semua fungsi dengan pernyataan SELECT:

SELECT <function>;

Bagian berikut mencantumkan setiap fungsi beserta signature, deskripsi, dan contoh penggunaannya dalam format input → output.

Fungsi ekstraksi

Fungsi yang membaca bit dari string bit tanpa mengubahnya.

FunctionDescriptionExample
get_bit(varbit a, int b, int c) returns varbitMengembalikan c bit mulai dari posisi b sebagai string varbit.get_bit('111110000011', 3, 5)11000
get_bit_array(varbit a, int b, int c, int d) returns int[]Mengekstraksi c bit mulai dari posisi b, lalu mengembalikan posisi (berindeks 0) dari bit yang nilainya sama dengan d (0 atau 1).get_bit_array('111110000011', 3, 5, 1)[3,4]
get_bit_array(varbit a, int b, int[] c) returns int[]Membaca bit pada posisi yang ditentukan oleh array subskrip c, lalu mengembalikan posisi bit yang nilainya sama dengan b (0 atau 1). Posisi yang tidak ada di c diabaikan.get_bit_array('111110000011', 1, array[1,5,6,7,10,11])[1,10,11]

Fungsi mutasi

Fungsi yang mengembalikan salinan string bit yang telah dimodifikasi.

FunctionDescriptionExample
set_bit_array(varbit a, int b, int c, int[] d) returns varbitMengatur bit pada posisi d ke nilai b (0 atau 1). Bit di luar panjang asli diisi dengan nilai c (0 atau 1).set_bit_array('111100001111', 0, 1, array[1,15])1011000011111110
set_bit_array(varbit a, int b, int c, int[] d, int e) returns varbitSama seperti bentuk 4 argumen, tetapi mengembalikan tepat e bit.set_bit_array('111100001111', 1, 0, array[4,5,6,7], 2)111111001111
set_bit_array_record(varbit a, int b, int c, int[] d) returns (varbit, int[])Mengatur bit pada posisi d ke nilai b (0 atau 1). Bit di luar panjang asli diisi dengan nilai c. Mengembalikan string bit yang telah dimodifikasi dan array subskrip dari posisi yang berubah.set_bit_array_record('111100001111', 0, 1, array[1,15])1011000011111110, [1,15]
set_bit_array_record(varbit a, int b, int c, int[] d, int e) returns (varbit, int[])Sama seperti bentuk 4 argumen, tetapi berhenti setelah mengubah e bit dan langsung mengembalikan hasil.set_bit_array_record('111100001111', 1, 0, array[1,4,5,6,7], 2)111111001111, [4,5]

Fungsi pembangkit

Fungsi yang menghasilkan string bit baru.

FunctionDescriptionExample
bit_fill(int a, int b) returns varbitMengembalikan string bit dengan panjang b yang seluruhnya diisi dengan nilai a (0 atau 1).bit_fill(0, 10)0000000000
bit_rand(int a, int b, float c) returns varbitMengembalikan string bit dengan panjang a di mana sekitar c (0,0–1,0) dari bit secara acak diatur ke nilai b (0 atau 1).bit_rand(10, 1, 0.3) dapat mengembalikan 0101000001

Fungsi penghitungan

Fungsi yang menghitung bit yang sesuai dengan nilai tertentu.

FunctionDescriptionExample
bit_count(varbit a, int b, int c, int d) returns intMenghitung bit dengan nilai b (0 atau 1), mulai dari posisi c, sepanjang d bit. Bit di luar rentang yang ditentukan tidak dihitung.bit_count('1111000011110000', 1, 5, 4)1
bit_count(varbit a, int b) returns intMenghitung semua bit dengan nilai b (0 atau 1) di seluruh string bit.bit_count('1111000011110000', 1)8
bit_count_array(varbit a, int b, int[] c) returns intMenghitung bit dengan nilai b (0 atau 1) pada posisi yang ditentukan oleh array subskrip c.bit_count_array('1111000011110000', 1, array[1,2,7,8])3

Fungsi pencarian posisi

Fungsi yang mengembalikan posisi bit yang sesuai dengan nilai tertentu.

FunctionDescriptionExample
bit_posite(varbit a, int b, boolean c) returns int[]Mengembalikan posisi (berindeks 0) dari semua bit dengan nilai b (0 atau 1). Berikan true untuk urutan menaik, false untuk urutan menurun.bit_posite('11110010011', 1, true)[0,1,2,3,6,9,10]; bit_posite('11110010011', 1, false)[10,9,6,3,2,1,0]
bit_posite(varbit a, int b, int c, boolean d) returns int[]Mengembalikan hingga c posisi bit dengan nilai b (0 atau 1). Berikan true untuk urutan menaik, false untuk urutan menurun.bit_posite('11110010011', 1, 3, true)[0,1,2]; bit_posite('11110010011', 1, 3, false)[10,9,6]

Contoh

Menghitung bit yang bernilai 1 dalam suatu rentang

Hitung bit dengan nilai 1, mulai dari posisi 5, sepanjang 4 bit:

SELECT bit_count('1111000011110000', 1, 5, 4);

Output:

 bit_count
-----------
         1
(1 row)

Mengatur bit dan mengembalikan posisi yang berubah

Atur bit pada posisi 1, 4, 5, 6, dan 7 ke nilai 1, hentikan setelah mengubah 2 bit, dan kembalikan string yang telah dimodifikasi beserta posisi yang berubah:

SELECT set_bit_array_record('111100001111', 1, 0, array[1,4,5,6,7], 2);

Output:

   set_bit_array_record
------------------------
 (111111001111,"{4,5}")
(1 row)